diff --git a/cg/cg0200.cpp b/cg/cg0200.cpp index 449e37db2..973940b32 100755 --- a/cg/cg0200.cpp +++ b/cg/cg0200.cpp @@ -531,9 +531,13 @@ void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) if (!query) { ini.set_paragraph("17"); - TToken_string nonacc(ini.get(CFV_NONACCEFF), ';'); - TToken_string nonscd(ini.get(CFV_NONSCADEFF), ';'); - set_pnae(m, nonacc, nonscd); + + if (ini.exist(CFV_NONACCEFF)) + { + TToken_string nonacc(ini.get(CFV_NONACCEFF), ';'); + TToken_string nonscd(ini.get(CFV_NONSCADEFF), ';'); + set_pnae(m, nonacc, nonscd); + } if (_gesven) { diff --git a/cg/cg1600.cpp b/cg/cg1600.cpp index ebd2a1241..e02b2dfc6 100755 --- a/cg/cg1600.cpp +++ b/cg/cg1600.cpp @@ -2173,12 +2173,16 @@ void TStampa_IVdirettiva::stampa_risultato_prima_delle_imposte() // set_row (_i,"@4g%s@81g%r", TR("Risultato prima delle imposte"), &_totale_economico); // _totale_economico += _sale; // Guy was here 18/02/2004: Altrimenti ignora la prima imposta - // Guy was here 05/03/2004: Altrimenti ignora la prima imposta + // Guy was here 05/03/2004: La prima imposta e' gia' stata sommata const real te = _totale_economico-_sale; set_row (_i,"@4g%s@81g%r", TR("Risultato prima delle imposte"), &te); if (raff) - set_row (_i,"@111g%r", &_totale_economico_raf); + { + // Guy was here 10/03/2004: La prima imposta e' gia' stata sommata anche qui + const real te = _totale_economico_raf-_salerafr; + set_row (_i,"@111g%r", &te); + } _i++; _risimp_fatto = FALSE; } diff --git a/cg/cg3200.cpp b/cg/cg3200.cpp index d1fc14979..a3765071f 100755 --- a/cg/cg3200.cpp +++ b/cg/cg3200.cpp @@ -120,7 +120,7 @@ class TMastrini_application : public TPrintapp TDate _dataregrmov; int _gruppof,_contof; long _sottocf; - TString _dataregrmovstring,_importo_str,_saldo_movimenti_str,_saldo_progressivi_str; + TString _dataregrmovstring,_importo_str,_saldo_movimenti_str; int _rw, _conta_mastrini, _indice_array, _item, _item_lista, _indice_lista; int _ddociva_len; @@ -1453,6 +1453,11 @@ bool TMastrini_application::preprocess_page(int file, int counter) _saldo_progressivi += _saldo_progre_prec; _rw = stampa_progre_riporto(_rw); } + else + { + calcola_progressivi(); + _saldo_progressivi += _saldo_progre_prec; // Se trovo quel cazzone che ha scritto sto programma... + } } else { @@ -2000,7 +2005,6 @@ bool TMastrini_application::preprocess_page(int file, int counter) const int righe_rimaste = printer().rows_left(); _stampato = righe_rimaste >= 1; - _saldo_progressivi_str=real2str(_saldo_progressivi); _saldo_movimenti_str=real2str(_saldo_movimenti); if (_numcarat == 2) { @@ -2036,27 +2040,9 @@ bool TMastrini_application::preprocess_page(int file, int counter) } if (print_sald) { -/* new 32 bit mode - if (_flag_del_cazzo) - { - calcola_progressivi(); - _saldo_progressivi += _saldo_progre_prec; - set_row (_rw,"@135g%r", &_saldo_progressivi); - _saldo_progressivi -= _saldo_progre_prec; - _flag_del_cazzo = FALSE; - } - else - set_row (_rw,"@135g%r", &_saldo_progressivi); -*/ - /* old 16 bit mode */ - real saldo_prog = _saldo_progressivi; - if (_stampa_progressivi_si) - { - calcola_progressivi(); - saldo_prog += _saldo_progre_prec; - } - set_row(_rw,"@135g%r", &saldo_prog); - } + // Nuovo mpode semplificato + set_row (_rw,"@135g%r", &_saldo_progressivi); + } } } else @@ -2881,7 +2867,7 @@ void TMastrini_application::crea_intestazione() } calcola_progressivi(); - _saldo_progressivi += _saldo_progre_prec; +// _saldo_progressivi += _saldo_progre_prec; // Se trovo quel cazzone che ha scritto sto programma... if (_stampa_progressivi_si) { diff --git a/ef/ef0600.cpp b/ef/ef0600.cpp index 037a16ba4..1bf14395d 100755 --- a/ef/ef0600.cpp +++ b/ef/ef0600.cpp @@ -13,11 +13,11 @@ #define PICTURE_IMPORTO "###.###.###.##@,@@" -enum pt { st_undefined = 0, st_banca = 1, st_cliente = 2, st_distinta = 3, st_scadenza = 4}; +enum pt { st_undefined, st_banca_app, st_cliente, st_distinta, st_scadenza, st_banca_pre }; -////////////////////////////////////////////////////////////////////// -// Classe per le stampe di controllo degli effetti in portafoglio // -///////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////// +// Classe per le stampe di controllo degli effetti in portafoglio // +//////////////////////////////////////////////////////////////////// class TPrint_effetti_app : public TPrintapp { pt _pr_type; @@ -25,7 +25,8 @@ class TPrint_effetti_app : public TPrintapp TPrintrow _pr; TString _ban, _banp, _cli, _val, _data_stampa, _ban_prec; TDate _scad_prec; - int _cur_1, _cur_2, _cur_3, _cur_4, _cur_5, _cur_6, _interline, _colonne; + int _cur_1, _cur_2, _cur_3, _cur_4, _cur_5, _cur_6, _cur_7; + int _interline, _colonne; long _dist_prec, _cliente_prec; char _tipo_prec, _tipocf_prec; real _tot_data, _tot_mese, _tot_banca, _tot_distinta, _tot_tip_dist, _tot_cliente, _tot_stampa; @@ -39,7 +40,8 @@ public: virtual void preprocess_header(); virtual print_action postprocess_page(int file, int counter); void header_scadenza(); - void header_banca(); + void header_banca_app(); + void header_banca_pre(); void header_distinta(); void header_cliente(); virtual bool user_create(); @@ -48,7 +50,8 @@ public: virtual void set_page (int file, int counter); void write_bancapp(); void set_scadenza(); - void set_banca(); + void set_banca_app(); + void set_banca_pre(); void set_distinta(); void set_cliente(); const char* get_field(int ln, const char* fn) {return current_cursor()->curr(ln).get(fn);} @@ -295,20 +298,22 @@ void TPrint_effetti_app::preprocess_header() switch(_pr_type) { - case st_scadenza: - header_scadenza(); - break; - case st_banca: - header_banca(); - break; - case st_distinta: - header_distinta(); - break; - case st_cliente: - header_cliente(); - break; - default: - break; + case st_scadenza: + header_scadenza(); + break; + case st_banca_app: + header_banca_app(); + break; + case st_distinta: + header_distinta(); + break; + case st_cliente: + header_cliente(); + break; + case st_banca_pre: + header_banca_pre(); + default: + break; } } @@ -326,7 +331,7 @@ void TPrint_effetti_app::header_scadenza() } // setta l'header per la stampa per banca di appoggio -void TPrint_effetti_app::header_banca() +void TPrint_effetti_app::header_banca_app() { int j = 2; set_header(j, FR("@45g@bSTAMPA RI.BA. PER BANCA D'APPOGGIO")); j++; @@ -338,6 +343,18 @@ void TPrint_effetti_app::header_banca() set_header(j, (const char *)(TString(_colonne).fill('_'))); } +// setta l'header per la stampa per banca di presentazione +void TPrint_effetti_app::header_banca_pre() +{ + int j = 2; + set_header(j, FR("@45g@bSTAMPA RI.BA. PER BANCA DI PRESENTAZIONE")); j++; + set_header(j++, (const char *)(TString(_colonne).fill('_'))); + TString head = FR("@b Banca Scadenza Cliente N.Riba N.Dist Importo Imp. in valuta Val Rata Data fattura N."); + set_header(j++, head); + set_header(j, (const char *)(TString(_colonne).fill('_'))); +} + + // setta l'header per la stampa per distinta di presentazione void TPrint_effetti_app::header_distinta() { @@ -424,20 +441,23 @@ void TPrint_effetti_app::set_page(int file, int counter) { switch(_pr_type) { - case st_scadenza: - set_scadenza(); - break; - case st_banca: - set_banca(); - break; - case st_distinta: - set_distinta(); - break; - case st_cliente: - set_cliente(); - break; - default: - break; + case st_scadenza: + set_scadenza(); + break; + case st_banca_app: + set_banca_app(); + break; + case st_distinta: + set_distinta(); + break; + case st_cliente: + set_cliente(); + break; + case st_banca_pre: + set_banca_pre(); + break; + default: + break; } } @@ -449,11 +469,11 @@ void TPrint_effetti_app::write_bancapp() const TRectype& rec = current_cursor()->curr(); const TString8 codabi = rec.get(EFF_CODABI); TString16 codcab; codcab << codabi << rec.get(EFF_CODCAB); - TString desccab = look_tab("%BAN", codcab); + TString80 desccab = look_tab("%BAN", codcab); set_row(2,"@133g@pn @pn %s", - FLD(LF_EFFETTI, EFF_CODABI, "@@@@@"), - FLD(LF_EFFETTI, EFF_CODCAB, "@@@@@"), - (const char*)desccab); + FLD(LF_EFFETTI, EFF_CODABI, "@@@@@"), + FLD(LF_EFFETTI, EFF_CODCAB, "@@@@@"), + (const char*)desccab); } } @@ -477,40 +497,69 @@ void TPrint_effetti_app::set_scadenza() if (!is_firm_value(valuta)) //effetto in valuta diversa da quella di conto { set_row(2,"@81g@pn@100g%s", - FLD(LF_EFFETTI, EFF_IMPORTOVAL, PICTURE_IMPORTO), - (const char *)valuta); + FLD(LF_EFFETTI, EFF_IMPORTOVAL, PICTURE_IMPORTO), + (const char *)valuta); } - write_bancapp(); - for(int i = 0; i < _interline; i++) set_row(i+1," "); + write_bancapp(); + for(int i = 0; i < _interline; i++) + set_row(i+1," "); } +// setta la pagina logica nel caso di stampa per banca di appoggio +void TPrint_effetti_app::set_banca_app() +{ + set_row(1," "); + set_row(2,"@1g#t@14g@s@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn", + &_banp, + FLD(LF_EFFETTI, EFF_DATASCAD), + &_cli, + FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"), + FLD(LF_EFFETTI, EFF_NDIST, "#######@"), + FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO), + FLD(LF_REFFETTI, REFF_NRATA,"##@"), + FLD(LF_REFFETTI, REFF_DATAFATT), + FLD(LF_REFFETTI, REFF_NFATT,"######")); + + const TString& valuta = current_cursor()->curr().get(EFF_CODVAL); + if (!is_firm_value(valuta)) //effetto in valuta diversa da quella di conto + { + set_row(2,"@81g@pn@100g%s", + FLD(LF_EFFETTI, EFF_IMPORTOVAL, PICTURE_IMPORTO), + (const char *)valuta); + } + write_bancapp(); + for(int i = 0; i < _interline; i++) + set_row(i+1,""); +} // setta la pagina logica nel caso di stampa per banca di appoggio -void TPrint_effetti_app::set_banca() +void TPrint_effetti_app::set_banca_pre() { - set_row(1," "); - set_row(2,"@1g#t@14g@s@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn", - &_banp, - FLD(LF_EFFETTI, EFF_DATASCAD), - &_cli, - FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"), - FLD(LF_EFFETTI, EFF_NDIST, "#######@"), - FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO), - FLD(LF_REFFETTI, REFF_NRATA,"##@"), - FLD(LF_REFFETTI, REFF_DATAFATT), - FLD(LF_REFFETTI, REFF_NFATT,"######")); + set_row(1," "); + set_row(2,"@1g#t@14g@s@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn", + &_banp, + FLD(LF_EFFETTI, EFF_DATASCAD), + &_cli, + FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"), + FLD(LF_EFFETTI, EFF_NDIST, "#######@"), + FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO), + FLD(LF_REFFETTI, REFF_NRATA,"##@"), + FLD(LF_REFFETTI, REFF_DATAFATT), + FLD(LF_REFFETTI, REFF_NFATT,"######")); - const TString8 valuta = current_cursor()->curr().get(EFF_CODVAL); + const TString& valuta = current_cursor()->curr().get(EFF_CODVAL); if (!is_firm_value(valuta)) //effetto in valuta diversa da quella di conto { set_row(2,"@81g@pn@100g%s", FLD(LF_EFFETTI, EFF_IMPORTOVAL, PICTURE_IMPORTO), (const char *)valuta); } - write_bancapp(); - for(int i = 0; i < _interline; i++) set_row(i+1,""); + write_bancapp(); + for(int i = 0; i < _interline; i++) + set_row(i+1,""); } + // setta la pagina logica nel caso di stampa per distinta di presentazione void TPrint_effetti_app::set_distinta() { @@ -572,30 +621,39 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter) // necessitano per effettuare la "rorrura della stampa" TRectype& rec = current_cursor()->curr(); const TDate scad = rec.get_date (EFF_DATASCAD); - TString ban = rec.get (EFF_CODABI); long dist = rec.get_long (EFF_NDIST); char tipodist = rec.get_char(EFF_TIPODIST); long cliente = rec.get_long (EFF_CODCF); char tipocf = rec.get_char(EFF_TIPOCF); real importo = rec.get_real(EFF_IMPORTO); // elaboro le seguenti stringhe per la stampa - if (ban=="00000") - ban = ""; _ban = get_field(LF_EFFETTI, EFF_CODABI); - if (_ban=="00000") - _ban = ""; - s = get_field(LF_EFFETTI, EFF_CODCAB); - if (s=="00000") - s = ""; - _ban << " " << s; + if (real::is_null(_ban)) + _ban.cut(0); + else + { + s = get_field(LF_EFFETTI, EFF_CODCAB); + if (!real::is_null(s)) + _ban << ' ' << s; + } _banp = get_field(LF_EFFETTI, EFF_CODABIP); - if (_banp=="00000") - _banp = ""; - s = get_field(LF_EFFETTI, EFF_CODCABP); - if (s=="00000") - s = ""; - _banp << " " << s; + if (real::is_null(_banp)) + _banp.cut(0); + else + { + s = get_field(LF_EFFETTI, EFF_CODCABP); + if (!real::is_null(s)) + _banp << ' ' << s; + } + + TString16 ban; + if (_pr_type == st_banca_pre) + ban = _banp; + else + ban = _ban; + ban.strip(" "); // Toglie lo spazio tra ABI e CAB + _cli = get_field(LF_CLIFO, CLI_RAGSOC); s = _cli.mid(30,50); s.trim(); _cli = _cli.mid(0,30); _cli.trim(); @@ -612,36 +670,33 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter) if (_prima_volta) { _prima_volta = FALSE; - //_rec_prec = &rec; + _scad_prec = scad; switch(_pr_type) { - case st_scadenza: - _scad_prec = scad; - st_header_scad(scad); - break; - case st_banca: - _scad_prec = scad; - _ban_prec = ban; - st_header_ban(ban); - break; - case st_distinta: - _scad_prec = scad; - _dist_prec = dist; - _tipo_prec = tipodist; - _cliente_prec = cliente; - _tipocf_prec = tipocf; - st_header_dist(tipodist); - if (_tipoord == 'D') - st_header_scad(scad); - break; - case st_cliente: - _scad_prec = scad; - _cliente_prec = cliente; - _tipocf_prec = tipocf; - st_header_cliente(_cli); - break; - default: - break; + case st_scadenza: + st_header_scad(scad); + break; + case st_banca_app: + case st_banca_pre: + _ban_prec = ban; // ban vale automaticamente appoggio o presentazione + st_header_ban(ban); + break; + case st_distinta: + _dist_prec = dist; + _tipo_prec = tipodist; + _cliente_prec = cliente; + _tipocf_prec = tipocf; + st_header_dist(tipodist); + if (_tipoord == 'D') + st_header_scad(scad); + break; + case st_cliente: + _cliente_prec = cliente; + _tipocf_prec = tipocf; + st_header_cliente(_cli); + break; + default: + break; } } //else @@ -668,7 +723,7 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter) _pr.reset(); if (_pr_type == st_scadenza || _pr_type == st_cliente ) _pr.put(descfatt, 111); - if (_pr_type == st_banca || _pr_type == st_distinta ) + else _pr.put(descfatt, 114); //printer().print(_pr); set_row(j++,_pr); @@ -697,7 +752,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter) _tot_mese += importo; _tot_stampa += importo ; break; - case st_banca: + case st_banca_app: + case st_banca_pre: // è cambiata la data di scadenza, stampo il relativo totale if (scad != _scad_prec) st_tot_scad(); @@ -829,16 +885,16 @@ bool TPrint_effetti_app::preprocess_print(int file, int counter) bool TPrint_effetti_app::set_print(int) { - _tipoord = 'D'; + TMask mask("ef0600a.msk"); + if (mask.run() == K_QUIT) + return FALSE; + + _tipoord = 'D'; disable_links(); set_multiple_link(FALSE); // richiamo la maschera di scelta del tipo di stampa - TMask mask("ef0600a.msk"); - mask.run(); force_setpage(FALSE); - if (mask.last_key() == K_QUIT) - return FALSE; - _pr_type = (pt) mask.get_int(RDB_TIPOST); + _pr_type = (pt)mask.get_int(RDB_TIPOST); TDate data_stampa (mask.get(F_DATA_STAMPA)); _data_stampa = data_stampa.string(); _stampa_bancapp = mask.get_bool(F_BANCA_APP); @@ -862,12 +918,11 @@ bool TPrint_effetti_app::set_print(int) from.put(EFF_DATASCAD,cod_from); to.put(EFF_DATASCAD,cod_to); tipocf = mask.get(F_TIPOCF)[0]; - filter = ""; - filter << "(TIPOCF=='" << tipocf << "')"; + filter.cut(0) << "(TIPOCF=='" << tipocf << "')"; select_cursor(_cur_1); } break; - case st_banca: + case st_banca_app: { cod_from = mask.get(F_DA_DATA2); cod_to = mask.get(F_A_DATA2); @@ -886,6 +941,22 @@ bool TPrint_effetti_app::set_print(int) select_cursor(_cur_2); } break; + case st_banca_pre: + { + from.put(EFF_DATASCAD,mask.get(F_DA_DATA2)); + to.put(EFF_DATASCAD,mask.get(F_A_DATA2)); + cod_from = mask.get(F_DABAN); + cod_to = mask.get(F_ABAN); + filter = "(NDIST!='')"; + if (cod_from.not_empty()) + filter << "&&(CODABIP>='" << cod_from << "')"; + if (cod_to.not_empty()) + filter << "&&(CODABIP<='" << cod_to << "')"; + tipocf = mask.get(F_TIPOCF2)[0]; + filter << "&&(TIPOCF=='" << tipocf << "')"; + select_cursor(_cur_7); + } + break; case st_distinta: { _tipoord = mask.get(F_TIPOORD)[0]; @@ -974,7 +1045,7 @@ bool TPrint_effetti_app::user_create() _rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF"); //STAMPA PER SCADENZA _cur_1 = add_cursor(new TCursor(_rel,"",3)); - //STAMPA PER BANCA + //STAMPA PER BANCA DI APPOGGIO TString ordine = "CODABI|CODCAB|DATASCAD|NPROGTR"; _cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3)); //STAMPA PER DISTINTA ordinata per data scadenze @@ -989,6 +1060,9 @@ bool TPrint_effetti_app::user_create() //STAMPA PER DISTINTA ordinata per cliente/fornitore ordine = "TIPODIST|NDIST|NRIGADIST|TIPOCF|CODCF|DATASCAD|NPROGTR"; _cur_6 = add_cursor(new TSorted_cursor(_rel,ordine,"",3)); + //STAMPA PER BANCA DI PRESENTAZIONE + ordine = "CODABIP|CODCABP|DATASCAD|NPROGTR"; + _cur_7 = add_cursor(new TSorted_cursor(_rel,ordine,"",3)); add_file(LF_EFFETTI); enable_print_menu(); diff --git a/ef/ef0600a.uml b/ef/ef0600a.uml index a2a8fbabb..8820f91b5 100755 --- a/ef/ef0600a.uml +++ b/ef/ef0600a.uml @@ -20,10 +20,10 @@ BEGIN PROMPT 52 4 "(richieste 198 colonne)" END -RADIOBUTTON RDB_TIPOST 25 +RADIOBUTTON RDB_TIPOST 32 BEGIN - PROMPT 1 1 "Stampa per " - ITEM "1|Banca" + PROMPT 1 0 "Stampa per " + ITEM "1|Banca di appoggio" MESSAGE SHOW,2@|HIDE,1@|HIDE,3@|HIDE,4@ ITEM "2|Cliente/Fornitore" MESSAGE SHOW,4@|HIDE,1@|HIDE,2@|HIDE,3@ @@ -31,6 +31,8 @@ BEGIN MESSAGE SHOW,3@|HIDE,1@|HIDE,2@|HIDE,4@ ITEM "4|Scadenza" MESSAGE SHOW,1@|HIDE,2@|HIDE,3@|HIDE,4@ + ITEM "5|Banca di presentazione" + MESSAGE SHOW,2@|HIDE,1@|HIDE,3@|HIDE,4@ END //---------data----------------------------------------------------------------------------------------------------------// @@ -65,19 +67,18 @@ END //---------banca----------------------------------------------------------------------------------------------------------// GROUPBOX DLG_NULL 75 6 BEGIN - PROMPT 1 7 "Stampa effetti per Banca di appoggio" + PROMPT 1 7 "Stampa effetti per Banca" GROUP 2 END NUMBER F_DABAN 5 BEGIN PROMPT 2 8 "Dalla Banca " - FLAGS "RZ" + FLAGS "Z" GROUP 2 - USE %BAN KEY 1 SELECT CODTAB ?= "??????????" + USE %BAN KEY 1 SELECT CODTAB?="?????" INPUT CODTAB F_DABAN DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] DISPLAY "Denominazione@50" S0 OUTPUT F_DABAN CODTAB[1,5] OUTPUT F_DABAN_DESCR S0 @@ -88,11 +89,10 @@ STRING F_DABAN_DESCR 50 BEGIN PROMPT 23 8 "" GROUP 2 - USE %BAN KEY 2 SELECT CODTAB?="??????????" + USE %BAN KEY 2 SELECT CODTAB?="?????" INPUT S0 F_DABAN_DESCR DISPLAY "Denominazione@50" S0 DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] COPY OUTPUT F_DABAN CHECKTYPE SEARCH END @@ -100,12 +100,11 @@ END NUMBER F_ABAN 5 BEGIN PROMPT 2 9 "Alla Banca " - FLAGS "RZ" + FLAGS "Z" GROUP 2 - USE %BAN KEY 1 SELECT CODTAB ?= "??????????" + USE %BAN KEY 1 SELECT CODTAB?="?????" INPUT CODTAB F_ABAN DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] DISPLAY "Denominazione@50" S0 OUTPUT F_ABAN CODTAB[1,5] OUTPUT F_ABAN_DESCR S0 @@ -116,11 +115,10 @@ STRING F_ABAN_DESCR 50 BEGIN PROMPT 23 9 "" GROUP 2 - USE %BAN KEY 2 SELECT CODTAB?="??????????" + USE %BAN KEY 2 SELECT CODTAB?="?????" INPUT S0 F_ABAN_DESCR DISPLAY "Denominazione@50" S0 DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] COPY OUTPUT F_ABAN CHECKTYPE SEARCH END diff --git a/include/relation.cpp b/include/relation.cpp index bf6e255db..6a2a42c3f 100755 --- a/include/relation.cpp +++ b/include/relation.cpp @@ -417,6 +417,17 @@ TLocalisamfile& TRelation::lfile(const char* name) const return (TLocalisamfile&)_files[idx]; } +bool TRelation::has_children(int first) const +{ + for (int i = first; i < _reldefs.items(); i++) + { + const TRelationdef& ref = reldef(i); + if (ref._numto == first) + return true; + } + return false; +} + // @doc EXTERNAL // @mfunc Abilita/disabilita la scrittura sul file diff --git a/include/relation.h b/include/relation.h index c5e0c5366..b94075224 100755 --- a/include/relation.h +++ b/include/relation.h @@ -66,6 +66,8 @@ public: // @cmember Aggiorna l'albero delle relazioni int update(int first = 0) { return position_rels(_isequal, _nolock, first); } + // @cmember Controlla se il nodo della relazione ha figli + bool has_children(int first = 0) const; // @cmember Azzera l'albero delle relazioni void zero(); //@cmember Sposta la relazione sul record successivo del file principale (chiama ) diff --git a/m770/772200.cpp b/m770/772200.cpp index c559c5a61..a165b29b8 100755 --- a/m770/772200.cpp +++ b/m770/772200.cpp @@ -761,11 +761,11 @@ void TSt_certif::preprocess_header() TString dep(73); dep.fill('-'); dati_percipiente(); - set_header(i++, "@1g---------------------------------------------------"); - set_header(i++, "!@12gCERTIFICAZIONE DEI COMPENSI@52g!"); - set_header(i++, "!@9gASSOGGETTATI A RITENUTA D'ACCONTO@52g!"); - set_header(i++, "!@3g(Art. 7 bis D.P.R. 29 Settembre 1973, n.600)@52g!"); - set_header(i++, "@1g---------------------------------------------------"); + set_header(i++, "@1g-----------------------------------------------------------------"); + set_header(i++, "!@12gCERTIFICAZIONE DEI COMPENSI@66g!"); + set_header(i++, "!@9gASSOGGETTATI A RITENUTA D'ACCONTO@66g!"); + set_header(i++, "!@3g(Art.4 commi 6-ter e 6-quater D.P.R. 22 Luglio 1998, n.332)@66g!"); + set_header(i++, "@1g-----------------------------------------------------------------"); set_header(i++, ""); set_header(i++, "@59g%s", (const char*) dep); set_header(i++, "@58g!@84gSOGGETTO PERCIPIENTE@132g!"); @@ -795,7 +795,7 @@ void TSt_certif::preprocess_header() set_header(i++, ""); set_header(i++, "@50g%s,li %d %s %d", (const char*)_luogo, _data.day(), itom(_data.month()), _data.year()); set_header(i++, ""); - set_header(i++, "@7gPer gli adempimenti previsti dall'art.7 bis del D.P.R. 29 Settembre 1973,n. 600 e successive modificazioni"); + set_header(i++, "@7gPer gli adempimenti previsti dall'Art.4 commi 6-ter e 6-quater D.P.R. 22 Luglio 1998, n.332 e successive modificazioni"); set_header(i++, "si attesta che nel corso del periodo dal 01/01/%d al 31/12/%d al percipiente evidenziato in riquadro", _anno_dic, _anno_dic); set_header(i++, "sono stati corrisposti i seguenti compensi debitamente assoggettati a ritenuta d'acconto e ad eventuale ritenuta previdenziale:"); set_header(i++, ""); diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 47313dbfa..6f31c67f1 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -312,6 +312,7 @@ bool TDocumento_form::doc_arrange() return TRUE; } + void TDocumento_form::print_documento() { TPrinter& pr = printer(); @@ -324,16 +325,16 @@ void TDocumento_form::print_documento() const int righe = _doc->rows(); bool one_row_printed = FALSE; + + const bool update_relation = relation()->has_children(1); set_last_page(FALSE); // E' importante settare questo flag, per evitare "Falli di Piede" eheh :-) for (int r=1; r<=righe; r++) { _rdocfile->set_row(r); - - // Questo if non c'era e quindi, a causa della next_match ignorava sempre la prima riga. - // Ora la next_match non viene mai fatta: a cosa serve allora tutto cio'? - //if (cursor()->curr(LF_RIGHEDOC).get_int(RDOC_NRIGA) < r) - // cursor()->next_match(LF_RIGHEDOC); + + if (update_relation) + relation()->update(1); if (!print_on_body(r)) continue; @@ -2062,4 +2063,4 @@ int ve1100(int argc, char* argv[]) const bool riep = argc == 4 && argv[2][0] == 'L'; // Lista documenti a.run(argc, argv, riep ? TR("Lista documenti") : TR("Stampa documenti")); return 0; -} +} \ No newline at end of file diff --git a/ve/velib05.cpp b/ve/velib05.cpp index 804e7e7c3..ade11d5aa 100755 --- a/ve/velib05.cpp +++ b/ve/velib05.cpp @@ -110,20 +110,19 @@ void TDocumentoEsteso::summary_set_next() const char * TDocumentoEsteso::summary_get(const TString& w) { - if (w == "COD") - return _sum_current.cod_iva().codice(); // Ritorna il codice IVA - else - if (w == "IMP") - return _sum_current.imp().string(); // Ritorna l'imponibile - else - if (w == "IVA") - return _sum_current.iva().string(); // Ritorna l'imposta - else - if (w == "ALI") - return _sum_current.cod_iva().percentuale().string(); // Ritorna l'aliquota % - else - if (w == "DES") - return _sum_current.cod_iva().descrizione(); // Ritorna la descrizione ( se il codice e' regime normale la descr. e' vuota) + if (w == "COD") // Ritorna il codice IVA + return _sum_current.cod_iva().codice(); else + if (w == "IMP") // Ritorna l'imponibile + return _sum_current.imp().string(); else + if (w == "IVA") // Ritorna l'imposta + return _sum_current.iva().string(); else + if (w == "ALI") // Ritorna l'aliquota % + return _sum_current.cod_iva().percentuale().string(); else + if (w == "DES") // Ritorna la descrizione ( se il codice e' regime normale la descr. e' vuota) + { + if (_sum_current.cod_iva().tipo().not_empty()) + return _sum_current.cod_iva().descrizione(); + } return ""; }