diff --git a/gv/CBI-F24-001 5_0.odt b/gv/CBI-F24-001 5_0.odt new file mode 100755 index 000000000..2d47f5b92 Binary files /dev/null and b/gv/CBI-F24-001 5_0.odt differ diff --git a/gv/F24.png b/gv/F24.png new file mode 100755 index 000000000..4e74f9653 Binary files /dev/null and b/gv/F24.png differ diff --git a/gv/F24orig.png b/gv/F24orig.png new file mode 100755 index 000000000..7bb60df28 Binary files /dev/null and b/gv/F24orig.png differ diff --git a/gv/f158.dir b/gv/f158.dir index 4dea71896..c5f8b9b17 100755 --- a/gv/f158.dir +++ b/gv/f158.dir @@ -1,3 +1,3 @@ 158 0 -$righef24|0|0|196|0|Righe di delega F24||| +$righef24|0|0|250|0|Righe di delega F24||| diff --git a/gv/f158.trr b/gv/f158.trr index 41afb932a..0cd6eadbf 100755 --- a/gv/f158.trr +++ b/gv/f158.trr @@ -1,10 +1,14 @@ 158 -20 +36 PROGR|3|6|0|Progressivo riga F24|3|6|0|Numero F24 a cui la riga e' associata +SEZIONE|1|1|0|Sezione (Erario, INPS etc) +INDICE|1|1|0|indice della sezione TRIBUTO|1|4|0|Codice tributo TIPOINTEST|1|1|0|Tipo intestatario (D, G, F, C) INTEST|3|6|0|Codice intestatario +TIPO|1|1|0|Tipo persona (G, F, C) +CODICE|3|6|0|Codice persona DESCR|1|50|0|Descrizione riga F24 DATASCAD|5|8|0|Data scadenza DATAVERS|5|8|0|Data versamento @@ -14,14 +18,27 @@ RATEAZIONE|1|8|0|Rateazione/Regione/Prov. ANNO|2|4|0|Anno di riferimento IMPORTODEB|4|15|3|Importo a debito IMPORTOCRE|4|15|3|Importo a credito -SEDE|1|4|0|Sede sezione INPS +DETRAZICI|4|15|3|Detrazione ICI +SEDE|1|5|0|Sede sezione INPS/INAIL MATRICOLA|1|17|0|Matricola PERIODODA|10|6|0|Inizio periodo di riferimento PERIODOA|10|6|0|Fine periodo di riferimento NUMREG|3|7|0|Numero di registrazione contabile INTIVATRIM|4|14|3|Interessi IVA -4 +CODREG|2|2|0|COdice Regione +ENTECOM|1|4|0|Codice Ente/Comune +RAVVED|8|1|0|Ravvedimento +IMMVAR|8|1|0|Immobili variati +ACCONTO|8|1|0|Acconto +SALDO|8|1|0|Saldo +NUMIMM|2|2|0|Numero Immobli +POSASS|3|8|0|Posizione assicurativa INAIL +CIN|2|2|0|Codice di controllo +CAUSINAIL|1|1|0|Causale INAIL +NUMRIF|3|6|0|Numero di riferimento INAIL +5 PROGR| F24+PROGR| TIPOINTEST+INTEST+DATASCAD+TRIBUTO|X TIPOINTEST+INTEST+ANNO+TRIBUTO|X +F24+INDICE+TRIBUTO+PROGR|X diff --git a/gv/gv0500.cpp b/gv/gv0500.cpp index 3818d2754..c039c475d 100755 --- a/gv/gv0500.cpp +++ b/gv/gv0500.cpp @@ -5,7 +5,8 @@ #include #include -#include +#include +#include #include #include #include @@ -27,8 +28,8 @@ static char trib2sec(const TString& trib) } // Traformazione da codice sheet a codice tributo e viceversa -static const short ids[] = { F_ERARIO, F_INPS, 0 }; -static const char sec[] = { 'E', 'I', '\0' }; +static const short ids[] = { F_ERARIO, F_INPS, F_REGIONI, F_ICI, F_INAIL, 0 }; +static const char sec[] = { 'E', 'I', 'R', 'L', 'N', '\0' }; static char sheet2sec(short id) { @@ -44,6 +45,13 @@ static short sec2sheet(char s) return ids[i]; } +static short sec2index(char s) +{ + int i; + for (i = 0; sec[i] && sec[i] != s; i++); + return i; +} + /////////////////////////////////////////////////////////// // TF24_query_mask /////////////////////////////////////////////////////////// @@ -179,6 +187,8 @@ class TF24_edit_mask : public TAutomask { private: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + virtual bool on_key(KEY key); + protected: int find_empty_row(TSheet_field& s) const; @@ -189,6 +199,7 @@ protected: public: bool add_row(const TRecordset& riga, int pos = -1); void compute_totals(int mode = 0xFF); + void print(); TF24_edit_mask() : TAutomask("gv0500b") {} }; @@ -229,9 +240,20 @@ void TF24_edit_mask::compute_totals(int mode) if (mode & 2) compute_total(F_INPS, 4); + if (mode & 4) + compute_total(F_REGIONI, 4); + + if (mode & 8) + compute_total(F_ICI, 4); + + if (mode & 16) + compute_total(F_INAIL, 3); real saldo; saldo += get_real(F_ERARIO_AB); saldo += get_real(F_INPS_CD); + saldo += get_real(F_REGIONI_EF); + saldo += get_real(F_ICI_GH); + saldo += get_real(F_INAIL_IL); set(F_SALDO, saldo); } @@ -334,6 +356,22 @@ bool TF24_edit_mask::add_row(const TRecordset& riga, int pos) return ok; } +void TF24_edit_mask::print() +{ + TReport rep; + + if (rep.load("gv0500")) + { + TReport_book book; + const TVariant num(get(F_DISTINTA)); + TRecordset * r = rep.recordset(); + + r->set_var("#DISTINTA", num); + book.add(rep); + book.print_or_preview(); + } +} + bool TF24_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { bool ok = true; @@ -371,6 +409,52 @@ bool TF24_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jol break; } break; + case F_REGIONI: + switch (e) + { + case se_notify_modify: + case se_notify_del: + compute_totals(0x4); + break; + case se_query_add: + ok = false; + break; + default: + break; + } + break; + case F_ICI: + switch (e) + { + case se_notify_modify: + case se_notify_del: + compute_totals(0x8); + break; + case se_query_add: + ok = false; + break; + default: + break; + } + break; + case F_INAIL: + switch (e) + { + case se_notify_modify: + case se_notify_del: + compute_totals(0x16); + break; + case se_query_add: + ok = false; + break; + default: + break; + } + break; + case F_STAMPA: + if (e == fe_button) + print(); + break; case F_CONT: if (e == fe_button) { @@ -391,6 +475,16 @@ bool TF24_edit_mask::on_field_event(TOperable_field& o, TField_event e, long jol return ok; } +bool TF24_edit_mask::on_key(KEY key) +{ + if (key == K_SHIFT + K_F12) + { + enable(F_DATAVERS); + enable(DLG_SAVEREC); + } + return TAutomask::on_key(key); +} + /////////////////////////////////////////////////////////// // TF24_app // TRelation_application molto all'avanguardia @@ -412,6 +506,7 @@ private: protected: virtual bool user_create(); virtual bool user_destroy(); + virtual void print(); virtual bool has_filtered_cursor() const { return _recset != NULL; } virtual TCursor& get_filtered_cursor() const { return *_recset->cursor(); } @@ -431,7 +526,7 @@ protected: bool TF24_app::user_create() { - _recset = new TElencoF24_set(1); // Elenco di tutti gli F24 da inviare + _recset = new TElencoF24_set(3); // Elenco di tutti gli F24 da inviare _msk.add(new TF24_query_mask); _msk.add(new TF24_edit_mask); set_search_field(F_DISTINTA); @@ -446,6 +541,14 @@ bool TF24_app::user_destroy() return true; } +void TF24_app::print() +{ + TF24_edit_mask & m = *(TF24_edit_mask *)get_mask(1); + + if (m.is_running() && m.field(F_STAMPA).enabled()) + m.print(); +} + bool TF24_app::get_next_key(TToken_string& key) { key.cut(0); @@ -465,8 +568,9 @@ void TF24_app::init_mask(TMask& mask) const { TF24_edit_mask& m = (TF24_edit_mask&)mask; - char ti = m.get(F_TIPOINTEST)[0]; - long intest = m.get_long(F_PERSON); + m.disable(F_DATAVERS); + long intest = intest = m.get_long(F_PERSON); + char ti = m.get(F_TIPOINTEST)[0]; TString codfis, ragsoc, key; if (ti == 'C') { @@ -506,7 +610,7 @@ void TF24_app::init_mask(TMask& mask) const m.compute_totals(); } -void TF24_app::init_query_mode(TMask& /*mask*/) +void TF24_app::init_query_mode(TMask& /*mask */) { } @@ -516,6 +620,7 @@ void TF24_app::init_insert_mode(TMask& mask) const TMask& q = *get_mask(MODE_QUERY); const long progr = q.get_long(F_PROGR); + if (progr > 0) { TISAM_recordset riga("USE RIGHEF24\nFROM PROGR=#RIGA\nTO PROGR=#RIGA"); @@ -526,6 +631,7 @@ void TF24_app::init_insert_mode(TMask& mask) m.add_row(riga); } } + mask.disable(F_STAMPA); } void TF24_app::init_modify_mode(TMask& mask) @@ -534,6 +640,7 @@ void TF24_app::init_modify_mode(TMask& mask) const bool dainviare = mask.get(F_DATAVERS).blank(); mask.enable(DLG_SAVEREC, dainviare); mask.enable(DLG_DELREC, dainviare); + mask.enable(F_STAMPA); } int TF24_app::read(TMask& mask) @@ -583,6 +690,16 @@ int TF24_app::riscrivi(const TMask& mask) } TLocalisamfile righef24(LF_RIGHEF24); + TString4 tipo(mask.get(F_TIPOINTEST)); + long codice = mask.get_long(F_PERSON); + + if (tipo == "D") + { + TString8 key; key.format("%ld", prefix().get_codditta()); + const TRectype & firm = cache().get(LF_NDITTE, key); + tipo = firm.get(NDT_TIPOA); + codice = firm.get_long(NDT_CODANAGR); + } if (_progr.items() > 0) { @@ -620,6 +737,7 @@ int TF24_app::riscrivi(const TMask& mask) break; } ((TMask&)mask).set(F_DISTINTA, f24); // Aggiorna numero distinta + righef24.setkey(1); } // Mi preparo a numerare le eventuali righe nuove @@ -692,7 +810,13 @@ int TF24_app::riscrivi(const TMask& mask) if (fr != NULL) righef24.put(fr->name(), g->get()); } + + char sec = trib2sec(righef24.get("TRIBUTO")); + righef24.put("SEZIONE", sec); + righef24.put("INDICE", sec2index(sec) + 1); + righef24.put("TIPO", tipo); + righef24.put("CODICE", codice); err = righef24.rewrite(); } } diff --git a/gv/gv0500.rep b/gv/gv0500.rep new file mode 100755 index 000000000..af9d44da3 --- /dev/null +++ b/gv/gv0500.rep @@ -0,0 +1,605 @@ + + + Stampa F24 + +
+ + + + "S0" +"'" +"ABI" @ + +"'" + +"%BAN" +TABLE_READ + + + "S0" +"'" +"ABI" @ + +"CAB" @ + +"'" + +"%BAN" +TABLE_READ + + + "DENCOM!#103=PROVCOM" +"COM=" +"S5" @ + +13 +ISAM_READ + + + + ANAGR.COFI + #THIS "TIPO" @ +"C" = NEGATE IF + SHOW + #THIS @ + STRLEN + 11 = IF + #THIS @ + " " + + #THIS ! + THEN +ELSE + HIDE +THEN + + + + #THIS "TIPO" @ +"C" = NEGATE IF +SHOW +"ANAGR.RAGSOC" @ +0 +30 +STRMID +#THIS ! +ELSE +HIDE +THEN + + + + #THIS "TIPO" @ +"C" = NEGATE IF +SHOW +"ANAGR.RAGSOC" @ +30 +20 +STRMID +#THIS ! +ELSE +HIDE +THEN + + + "ANAGR.COFI" @ +DUP +"" = IF + DROP + "CLIFO.COFI" @ +THEN +DUP +STRLEN +16 = IF + 9 + 2 + STRMID + DUP + 40 E; IF + 40 - + "F" #104 ! + ELSE + "M" #104 ! + THEN + #THIS ! +THEN + + + "ANAGR.COFI" @ +DUP +"" = IF + DROP + "CLIFO.COFI" @ +THEN +DUP +STRLEN +16 = IF + 8 + 1 + STRMID + #THIS ! +THEN + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + + + + "ANAGR.COFI" @ +DUP +"" = IF + DROP + "CLIFO.COFI" @ +THEN +DUP +STRLEN +16 = IF + 6 + 2 + STRMID + #THIS ! + #THIS @ + 1900 + + DUP + 50 C; IF + 100 + + THEN + #THIS ! +THEN + + + + ANAGR.INDRES+", "+ANAGR.CIVRES + #THIS "TIPO" @ +"C" = NEGATE IF +SHOW +ELSE +HIDE +THEN + +
  • MESSAGE SHOW,2@ MESSAGE HIDE,1@
  • +
  • MESSAGE SHOW,1@ MESSAGE HIDE,2@
  • +
  • MESSAGE SHOW,1@ MESSAGE HIDE,2@
  • +
    +
    + + + #THIS "TIPO" @ +"C" = NEGATE IF +SHOW +"DENCOM!#103=PROVCOM" +"COM=" +"ANAGR.COMRES" @ + +13 +ISAM_READ +ELSE +HIDE +THEN + + + + + "DENCOM!#106=PROVCOM" +"COM=" +"ANAGR.COFI" @ +DUP +"" = IF + DROP + "CLIFO.COFI" @ +THEN +DUP +STRLEN +16 = IF + 11 + 4 + STRMID +THEN ++ +13 +ISAM_READ + + + +
    +
    + VARIABLE HB0 +VARIABLE HB1 +VARIABLE HB2 +VARIABLE HB3 +VARIABLE HB4 +VARIABLE HB5 +VARIABLE LS +VARIABLE HS +0 "HB0" ! +7 "HB1" ! +5 "HB2" ! +5 "HB3" ! +5 "HB4" ! +4 "HB5" ! +"" LS ! +0 +TOT_SEC_HEIGHT +HS ! +
    +
    + SEZIONE + "F2" +"HB" +"SEZIONE" @ +SEC_2_INDEX ++ +@ +SET_SEC_HEIGHT +"H2" +HS @ +"SEZIONE" @ +SEC_2_INDEX +TOT_SEC_HEIGHT +- +"SEZIONE" @ +SEC_2_INDEX +LS @ +SEC_2_INDEX +- +2 * ++ +SET_SEC_HEIGHT +"SEZIONE" @ +LS ! + +
    +
    + + "f24.png" + +
    +
    + SEZIONE='E' + "F2" +DECR_SEC_HEIGHT + + TRIBUTO + + + RATEAZIONE + + + ANNO + + + IMPORTODEB + #THIS @ +"F2.101" +! + + + + IMPORTOCRE + #THIS @ +"F2.102" +! + + +
    +
    + SEZIONE='I' + "F2" +DECR_SEC_HEIGHT + + RIGHEF24.SEDE + + + TRIBUTO + + + RIGHEF24.MATRICOLA + + + RIGHEF24.PERIODODA + + + RIGHEF24.PERIODOA + + + IMPORTODEB + #THIS @ +"F2.101" +! + + + + IMPORTOCRE + #THIS @ +"F2.102" +! + + +
    +
    + SEZIONE=='R' + "F2" +DECR_SEC_HEIGHT + + RIGHEF24.CODREG + + + TRIBUTO + + + RATEAZIONE + + + ANNO + + + IMPORTODEB + #THIS @ +"F2.101" +! + + + + IMPORTOCRE + #THIS @ +"F2.102" +! + + +
    +
    + SEZIONE=='L' + "F2" +DECR_SEC_HEIGHT + + RIGHEF24.ENTECOM + #THIS @ +DUP +4 SWAP +STRLEN +DO +" " + +LOOP +#THIS ! + + + + + RIGHEF24.RAVVED + + + RIGHEF24.IMMVAR + + + RIGHEF24.ACCONTO + + + RIGHEF24.SALDO + + + RIGHEF24.NUMIMM + + + TRIBUTO + + + RATEAZIONE + + + ANNO + + + IMPORTODEB + #THIS @ +"F2.101" +! + + + + IMPORTOCRE + #THIS @ +"F2.102" +! + + +
    +
    + SEZIONE=='N' + "F2" +DECR_SEC_HEIGHT + + RIGHEF24.SEDE + + + RIGHEF24.POSASS + + + RIGHEF24.CIN + + + RIGHEF24.NUMRIF + + + RIGHEF24.CAUSINAIL + + + IMPORTODEB + #THIS @ +"F2.101" +! + + + + IMPORTOCRE + #THIS @ +"F2.102" +! + + +
    +
    +
    + + + + 0 #THIS ! + +
    +
    + \ Ripristina l'altezza del footer +"F2" +"HB2" @ +SET_SEC_HEIGHT +LS @ +SEC_2_INDEX +1 ++ +TOT_SEC_HEIGHT +HS ! + + + #101-#102 + "F2" +REP_MESSAGE_ALIGN_BOTTOM + + MESSAGE ADD,F1.103 + + + "F2" +REP_MESSAGE_ALIGN_BOTTOM + 0 #THIS ! + + + "F2" +REP_MESSAGE_ALIGN_BOTTOM + 0 #THIS ! + +
    + USE RIGHEF24 KEY 5 +JOIN ANAGR INTO TIPOA==TIPO CODANAGR==CODICE +JOIN CLIFO INTO TIPOCF==TIPO CODCF==CODICE +FROM F24=#DISTINTA +TO F24=#DISTINTA + : SET_SEC_HEIGHT ( s h -- ) +0 SWAP ROT +SET_SIZE +; +: DECR_SEC_HEIGHT ( s -- ) +DUP +GET_SIZE +SWAP +DROP +1 - +SET_SEC_HEIGHT +; +: SEC_2_INDEX ( s -- n ) +DUP +"E" = IF + 1 +ELSE + DUP + "I" = IF + 2 + ELSE + DUP + "R" = IF + 3 + ELSE + DUP + "L" = IF + 4 + ELSE + DUP + "N" = IF + 5 + ELSE + 0 + THEN + THEN + THEN + THEN +THEN +SWAP +DROP +; +: TOT_SEC_HEIGHT ( n -- n ) +VARIABLE TOT +0 TOT ! +6 SWAP DO + "HB" + I + + @ + TOT +! +LOOP +TOT @ +; + \ No newline at end of file diff --git a/gv/gv0500a.h b/gv/gv0500a.h index aa93e31f9..58a1e17b2 100755 --- a/gv/gv0500a.h +++ b/gv/gv0500a.h @@ -14,6 +14,7 @@ #define F_COFI 301 #define F_RAGSOC 302 #define F_CONT 303 +#define F_STAMPA 304 #define F_ERARIO 401 #define F_ERARIO_A 402 @@ -25,6 +26,21 @@ #define F_INPS_D 503 #define F_INPS_CD 504 +#define F_REGIONI 601 +#define F_REGIONI_E 602 +#define F_REGIONI_F 603 +#define F_REGIONI_EF 604 + +#define F_ICI 701 +#define F_ICI_G 702 +#define F_ICI_H 703 +#define F_ICI_GH 704 + +#define F_INAIL 801 +#define F_INAIL_I 802 +#define F_INAIL_L 803 +#define F_INAIL_IL 804 + #define F_SALDO 999 diff --git a/gv/gv0500a.uml b/gv/gv0500a.uml index 8f231c558..d1e70d980 100755 --- a/gv/gv0500a.uml +++ b/gv/gv0500a.uml @@ -78,6 +78,7 @@ BEGIN OUTPUT F_CLIFO CODCF CHECKTYPE NORMAL ADD RUN cg0 -1 C + MESSAGE COPY,F_PERSON END NUMBER F_PERSON 6 @@ -96,9 +97,9 @@ END LIST F_TIPO 1 10 BEGIN PROMPT 2 4 "Tipo distinta " + ITEM "3|Tutte" ITEM "1|Da inviare" ITEM "2|Inviata" - ITEM "3|Tutte" END NUMBER F_DISTINTA 6 diff --git a/gv/gv0500b.uml b/gv/gv0500b.uml index d9aba3478..8078ef2e3 100755 --- a/gv/gv0500b.uml +++ b/gv/gv0500b.uml @@ -92,7 +92,7 @@ BEGIN FLAGS "D" END -GROUPBOX -1 78 5 +GROUPBOX -1 78 6 BEGIN PROMPT 1 5 "CONTRIBUENTE" END @@ -115,9 +115,9 @@ BEGIN FLAGS "D" END -STRING F_COFI 13 +STRING F_COFI 16 BEGIN - PROMPT 47 6 "Codice fiscale " + PROMPT 45 6 "Codice fiscale " FLAGS "D" END @@ -127,18 +127,25 @@ BEGIN FLAGS "D" END -BUTTON F_CONT 20 +BUTTON F_STAMPA 10 2 BEGIN - PROMPT 2 8 "Contabilizza" + PROMPT -12 8 "~Stampa" + PICTURE BMP_PRINT + FLAGS "D" +END + +BUTTON F_CONT 10 2 +BEGIN + PROMPT -22 8 "~Contabilizza" FLAGS "D" END TEXT -1 BEGIN - PROMPT 1 10 "@bSEZIONE ERARIO" + PROMPT 1 11 "@bSEZIONE ERARIO" END -SPREADSHEET F_ERARIO 0 8 +SPREADSHEET F_ERARIO 0 7 BEGIN PROMPT 2 11 "Erario" ITEM "cod.\ntrib.@4" @@ -180,7 +187,7 @@ BEGIN PROMPT 1 0 "@bSEZIONE INPS" END -SPREADSHEET F_INPS 0 6 +SPREADSHEET F_INPS 0 5 BEGIN PROMPT 2 1 "INPS" ITEM "codice\nsede" @@ -197,19 +204,143 @@ END CURRENCY F_INPS_C 15 BEGIN - PROMPT 2 8 "@b(C) " + PROMPT 2 6 "@b(C) " FLAGS "D" END CURRENCY F_INPS_D 15 BEGIN - PROMPT 26 8 "@b(D) " + PROMPT 26 6 "@b(D) " FLAGS "D" END CURRENCY F_INPS_CD 15 BEGIN - PROMPT 50 8 "@bSaldo (C-D) " + PROMPT 50 6 "@bSaldo (C-D) " + FLAGS "D" +END + +TEXT -1 +BEGIN + PROMPT 1 7 "@bSEZIONE Regioni" +END + +SPREADSHEET F_REGIONI 0 5 +BEGIN + PROMPT 2 8 "Regioni" + ITEM "Regione@10" + ITEM "cod.\ntrib.@4" + ITEM "rateazione@10" + ITEM "anno\nrif." + ITEM "importi a debito\nversati@18" + ITEM "importi a credito\ncompensati@18" + ITEM "riga@7" + ITEM "descrizione@50" + ITEM "Data scadenza" + +END + +CURRENCY F_REGIONI_E 15 +BEGIN + PROMPT 2 13 "@b(E) " + FLAGS "D" +END + +CURRENCY F_REGIONI_F 15 +BEGIN + PROMPT 26 13 "@b(F) " + FLAGS "D" +END + +CURRENCY F_REGIONI_EF 15 +BEGIN + PROMPT 50 13 "@bSaldo (E-F) " + FLAGS "D" +END + +TEXT -1 +BEGIN + PROMPT 1 14 "@bSEZIONE ICI" +END + +SPREADSHEET F_ICI 0 5 +BEGIN + PROMPT 2 15 "ICI ed altri tributi locali" + ITEM "cod.\nente\ncom.@4" + ITEM "Ravved." + ITEM "Immob.\nvariati" + ITEM "Acconto" + ITEM "Saldo" + ITEM "Numero\nImmobili" + ITEM "cod.\ntrib.@4" + ITEM "rateazione@10" + ITEM "anno\nrif." + ITEM "importi a debito\nversati@18" + ITEM "importi a credito\ncompensati@18" + ITEM "riga@7" + ITEM "descrizione@50" + ITEM "Data scadenza" + +END + +CURRENCY F_ICI_G 15 +BEGIN + PROMPT 2 20 "@b(G) " + FLAGS "D" +END + +CURRENCY F_ICI_H 15 +BEGIN + PROMPT 26 20 "@b(H) " + FLAGS "D" +END + +CURRENCY F_ICI_GH 15 +BEGIN + PROMPT 50 20 "@bSaldo (G-H) " + FLAGS "D" +END + +ENDPAGE + +PAGE "INAIL" -1 -1 0 0 + +TEXT -1 +BEGIN + PROMPT 1 0 "@bSEZIONE INAIL" +END + +SPREADSHEET F_INAIL 0 5 +BEGIN + PROMPT 2 1 "INAIL" + ITEM "cod.\ntrib.@4" + ITEM "codice\nsede" + ITEM "Posizione\nassicurativa" + ITEM "codice\ncontr." + ITEM "Numero di\nriferimento" + ITEM "Causale" + ITEM "importi\na debito@15" + ITEM "importi\na credito@15" + ITEM "riga@7" + ITEM "descrizione@50" + ITEM "Data scadenza" +END + +CURRENCY F_INAIL_I 15 +BEGIN + PROMPT 2 7 "@b(I) " + FLAGS "D" +END + +CURRENCY F_INAIL_L 15 +BEGIN + PROMPT 26 7 "@b(L) " + FLAGS "D" +END + +CURRENCY F_INAIL_IL 15 +BEGIN + PROMPT 50 7 "@bSaldo (I-L) " FLAGS "D" END @@ -238,6 +369,7 @@ BEGIN DISPLAY "Descrizione@70" S0 OUTPUT 101 CODTAB CHECKTYPE REQUIRED + FLAGS "U" FIELD TRIBUTO END @@ -254,6 +386,7 @@ END STRING 102 8 BEGIN PROMPT 9 2 "" + FIELD RATEAZIONE END TEXT -1 @@ -324,7 +457,7 @@ END STRING 108 50 BEGIN - PROMPT 10 4 "" + PROMPT 15 4 "" FIELD DESCR END @@ -396,6 +529,7 @@ BEGIN DISPLAY "Descrizione@70" S0 OUTPUT 102 CODTAB CHECKTYPE REQUIRED + FLAGS "U" FIELD TRIBUTO END @@ -417,7 +551,7 @@ END TEXT -1 BEGIN - PROMPT 40 0 "periodo di riferimento" + PROMPT 42 0 "periodo di riferimento" END TEXT -1 @@ -427,18 +561,18 @@ END NUMBER 104 6 BEGIN - PROMPT 48 2 "" + PROMPT 40 2 "" FIELD PERIODODA END TEXT -1 BEGIN - PROMPT 48 1 "a mm/aaaa" + PROMPT 50 1 "a mm/aaaa" END NUMBER 105 6 BEGIN - PROMPT 40 2 "" + PROMPT 50 2 "" FIELD PERIODOA END @@ -483,7 +617,7 @@ END STRING 109 50 BEGIN - PROMPT 10 7 "" + PROMPT 15 7 "" FIELD DESCR END @@ -517,3 +651,534 @@ END ENDPAGE ENDMASK + +PAGE "Regioni" -1 -1 80 7 + +TEXT -1 +BEGIN + PROMPT 1 1 "Regione" +END + +STRING 101 2 +BEGIN + PROMPT 1 2 "" + FLAGS "RZ" + KEY 1 + USE %RGI + INPUT CODTAB 101 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT 101 CODTAB + CHECKTYPE REQUIRED + FIELD CODREG +END + +TEXT -1 +BEGIN + PROMPT 9 0 "codice" +END + +TEXT -1 +BEGIN + PROMPT 9 1 "tributo" +END + +STRING 102 4 +BEGIN + PROMPT 9 2 "" + USE %TRB SELECT S6=="R" + INPUT CODTAB 102 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@70" S0 + OUTPUT 102 CODTAB + CHECKTYPE REQUIRED + FLAGS "U" + FIELD TRIBUTO +END + +TEXT -1 +BEGIN + PROMPT 17 1 "rateazione" +END + +STRING 103 8 +BEGIN + PROMPT 17 2 "" + FIELD RATEAZIONE +END + +TEXT -1 +BEGIN + PROMPT 28 1 "anno" +END + +NUMBER 104 4 +BEGIN + PROMPT 28 2 "" + FIELD ANNO +END + +TEXT -1 +BEGIN + PROMPT 34 0 "importi a debito" +END + +TEXT -1 +BEGIN + PROMPT 34 1 "versati" +END + +CURRENCY 105 15 +BEGIN + PROMPT 34 2 "" + FIELD IMPORTODEB +END + +TEXT -1 +BEGIN + PROMPT 54 0 "importi a credito" +END + +TEXT -1 +BEGIN + PROMPT 54 1 "compensati" +END + +CURRENCY 106 15 +BEGIN + PROMPT 54 2 "" + FIELD IMPORTOCRE +END + +NUMBER 107 7 +BEGIN + PROMPT 1 4 "riga " + FLAGS "D" + FIELD PROGR +END + +STRING 108 50 +BEGIN + PROMPT 15 4 "" + FIELD DESCR +END + +DATE 109 +BEGIN + PROMPT 1 5 "Scad." + FIELD DATASCAD +END + +BUTTON DLG_USER 10 2 +BEGIN + PROMPT -14 -1 "" + PICTURE BMP_LINK +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -24 -1 "" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -34 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -44 -1 "" +END + +ENDPAGE + +ENDMASK + +PAGE "ICI ed altri tributi locali" -1 -1 80 10 + +TEXT -1 +BEGIN + PROMPT 1 0 "codice ente" +END + +TEXT -1 +BEGIN + PROMPT 1 1 "comune" +END + +STRING 101 4 +BEGIN + PROMPT 1 2 "" + FIELD ENTECOM +END + +TEXT -1 +BEGIN + PROMPT 8 1 "Ravv." +END + +BOOLEAN 102 +BEGIN + PROMPT 8 2 "" + FIELD RAVVED +END + +TEXT -1 +BEGIN + PROMPT 13 0 "Imm." +END + +TEXT -1 +BEGIN + PROMPT 13 1 "var." +END + +BOOLEAN 103 +BEGIN + PROMPT 13 2 "" + FIELD IMMVAR +END + +TEXT -1 +BEGIN + PROMPT 17 1 "Acc." +END + +BOOLEAN 104 +BEGIN + PROMPT 17 2 "" + FIELD ACCONTO +END + +TEXT -1 +BEGIN + PROMPT 21 1 "Sal." +END + +BOOLEAN 105 +BEGIN + PROMPT 21 2 "" + FIELD SALDO +END + +TEXT -1 +BEGIN + PROMPT 25 0 "Num." +END + +TEXT -1 +BEGIN + PROMPT 25 1 "Imm." +END + +NUMBER 106 2 +BEGIN + PROMPT 25 2 "" + FIELD NUMIMM +END + +TEXT -1 +BEGIN + PROMPT 29 0 "codice" +END + +TEXT -1 +BEGIN + PROMPT 29 1 "tributo" +END + +STRING 107 4 +BEGIN + PROMPT 29 2 "" + USE %TRB SELECT S6=="L" + INPUT CODTAB 107 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@70" S0 + OUTPUT 107 CODTAB + CHECKTYPE REQUIRED + FLAGS "U" + FIELD TRIBUTO +END + +TEXT -1 +BEGIN + PROMPT 37 1 "rateazione" +END + +STRING 108 8 +BEGIN + PROMPT 37 2 "" + FIELD RATEAZIONE +END + +TEXT -1 +BEGIN + PROMPT 49 1 "anno" +END + +NUMBER 109 4 +BEGIN + PROMPT 49 2 "" + FIELD ANNO +END + +TEXT -1 +BEGIN + PROMPT 1 3 "importi a debito" +END + +TEXT -1 +BEGIN + PROMPT 1 4 "versati" +END + +CURRENCY 110 15 +BEGIN + PROMPT 1 5 "" + FIELD IMPORTODEB +END + +TEXT -1 +BEGIN + PROMPT 21 3 "importi a credito" +END + +TEXT -1 +BEGIN + PROMPT 21 4 "compensati" +END + +CURRENCY 111 15 +BEGIN + PROMPT 21 5 "" + FIELD IMPORTOCRE +END + +NUMBER 112 7 +BEGIN + PROMPT 1 7 "riga " + FLAGS "D" + FIELD PROGR +END + +STRING 113 50 +BEGIN + PROMPT 15 7 "" + FIELD DESCR +END + +DATE 114 +BEGIN + PROMPT 1 8 "Scad." + FIELD DATASCAD +END + +BUTTON DLG_USER 10 2 +BEGIN + PROMPT -14 -1 "" + PICTURE BMP_LINK +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -24 -1 "" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -34 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -44 -1 "" +END + +ENDPAGE + +ENDMASK + +PAGE "INAIL" -1 -1 80 7 + +TEXT -1 +BEGIN + PROMPT 1 0 "codice" +END + +TEXT -1 +BEGIN + PROMPT 1 1 "tributo" +END + +STRING 101 4 +BEGIN + PROMPT 1 2 "" + USE %TRB SELECT S6=="N" + INPUT CODTAB 101 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@70" S0 + OUTPUT 101 CODTAB + CHECKTYPE REQUIRED + FLAGS "U" + FIELD TRIBUTO +END + +TEXT -1 +BEGIN + PROMPT 8 0 "codice" +END + +TEXT -1 +BEGIN + PROMPT 8 1 "sede" +END + +STRING 102 5 +BEGIN + PROMPT 8 2 "" + FIELD SEDE +END + +TEXT -1 +BEGIN + PROMPT 14 0 "Posizione" +END + +TEXT -1 +BEGIN + PROMPT 14 1 "Assicur." +END + +NUMBER 103 8 +BEGIN + PROMPT 14 2 "" + FIELD POSASS + FLAGS "Z" +END + +TEXT -1 +BEGIN + PROMPT 24 0 "Codice" +END + +TEXT -1 +BEGIN + PROMPT 24 1 "contr." +END + +NUMBER 104 2 +BEGIN + PROMPT 24 2 "" + FIELD CIN + FLAGS "Z" +END + +TEXT -1 +BEGIN + PROMPT 30 0 "Numero" +END + +TEXT -1 +BEGIN + PROMPT 30 1 "rif." +END + +NUMBER 105 6 +BEGIN + PROMPT 30 2 "" + FIELD NUMRIF + FLAGS "Z" +END + +TEXT -1 +BEGIN + PROMPT 38 0 "Caus." +END + +TEXT -1 +BEGIN + PROMPT 38 1 "INAIL" +END + +STRING 106 1 +BEGIN + PROMPT 38 2 "" + FIELD CAUSINAIL + FLAGS "U" +END + +TEXT -1 +BEGIN + PROMPT 45 0 "importi a debito" +END + +TEXT -1 +BEGIN + PROMPT 45 1 "versati" +END + +CURRENCY 107 15 +BEGIN + PROMPT 45 2 "" + FIELD IMPORTODEB +END + +TEXT -1 +BEGIN + PROMPT 62 0 "importi a credito" +END + +TEXT -1 +BEGIN + PROMPT 62 1 "compensati" +END + +CURRENCY 108 15 +BEGIN + PROMPT 62 2 "" + FIELD IMPORTOCRE +END + +NUMBER 109 7 +BEGIN + PROMPT 1 4 "riga " + FIELD PROGR + FLAGS "D" +END + +STRING 110 50 +BEGIN + PROMPT 15 4 "" + FIELD DESCR +END + +DATE 111 +BEGIN + PROMPT 1 5 "Scad." + FIELD DATASCAD +END + +BUTTON DLG_USER 10 2 +BEGIN + PROMPT -14 -1 "" + PICTURE BMP_LINK +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -24 -1 "" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -34 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -44 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/gv/gv0600.cpp b/gv/gv0600.cpp index 5e1287172..c847f5988 100755 --- a/gv/gv0600.cpp +++ b/gv/gv0600.cpp @@ -73,6 +73,9 @@ protected: void add_10_20(const TRecordset& riga, const TMask& m); void add_erario(TRecordset& riga, real& saldo_tot, real& credito_tot); void add_inps(TRecordset& riga, real& saldo_tot, real& credito_tot); + void add_regioni(TRecordset& riga, real& saldo_tot, real& credito_tot); + void add_ici(TRecordset& riga, real& saldo_tot, real& credito_tot); + void add_inail(TRecordset& riga, real& saldo_tot, real& credito_tot); void add_50(TRecordset& riga, const real& saldo_tot, const real& credito_tot, const TMask& m); void add_delega(long nDelega, const TMask& m); void add_footer(const TMask& m); @@ -345,7 +348,84 @@ TF24_textset::TF24_textset(const char* query) add_field("40-04", 44, 58, f, n, "SaldoSezione"); add_field("40-04", 59,120); - add_field("50-01", 1, 1); + add_field("40-05", 1, 1); + add_field("40-05", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-05", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-05", 11, 12, o, an, "SubtipoRecord", "05"); + add_field("40-05", 13, 14, o, n, "CodiceRegione"); + add_field("40-05", 15, 16, o, n, "ProgressivoContributo"); + add_field("40-05", 17, 20, o, an, "CodiceTributo"); + add_field("40-05", 21, 28, o, an, "RiferimentiTributo"); + add_field("40-05", 29, 43, f, n, "ImportoDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-05", 44, 58, f, n, "ImportoCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-05", 59,120); + + add_field("40-06", 1, 1); + add_field("40-06", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-06", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-06", 11, 12, o, an, "SubtipoRecord", "06"); + add_field("40-05", 13, 14); + add_field("40-06", 15, 29, f, n, "TotaleDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-06", 30, 44, f, n, "TotaleCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-06", 45, 45, o, an, "SegnoSezione"); + add_field("40-06", 46, 60, f, n, "SaldoSezione"); + add_field("40-06", 61,120); + + add_field("40-07", 1, 1); + add_field("40-07", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-07", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-07", 11, 12, o, an, "SubtipoRecord", "07"); + add_field("40-07", 13, 16, o, an, "CodiceEnte"); + add_field("40-07", 17, 18, o, n, "ProgressivoContributo"); + add_field("40-07", 19, 22, o, an, "CodiceTributo"); + add_field("40-07", 23, 30, o, an, "RiferimentiTributo"); + add_field("40-07", 31, 45, f, n, "ImportoDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-07", 46, 60, f, n, "ImportoCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-07", 61, 61, f, n, "Ravvedimento"); + add_field("40-07", 62, 62, f, n, "ImmobiliVariati"); + add_field("40-07", 63, 63, f, n, "Acconto"); + add_field("40-07", 64, 64, f, n, "Saldo"); + add_field("40-07", 65, 66, f, n, "NumeroFabbricati"); + add_field("40-07", 67, 82, f, n, "DetrazioneICI"); // non sarebbe f, ma 0 e' valido + add_field("40-07", 83,120); + + add_field("40-08", 1, 1); + add_field("40-08", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-08", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-08", 11, 12, o, an, "SubtipoRecord", "08"); + add_field("40-08", 13, 16); + add_field("40-08", 17, 31, f, n, "TotaleDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-08", 32, 46, f, n, "TotaleCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-08", 47, 47, o, an, "SegnoSezione"); + add_field("40-08", 48, 62, f, n, "SaldoSezione"); + add_field("40-08", 63,120); + + add_field("40-09", 1, 1); + add_field("40-09", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-09", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-09", 11, 12, o, an, "SubtipoRecord", "09"); + add_field("40-09", 13, 14, o, n, "ProgressivoContributo"); + add_field("40-09", 15, 19, o, n, "CodiceSede"); + add_field("40-09", 20, 27, o, n, "NumeroPosizioneAssicurativa"); + add_field("40-09", 28, 29, o, n, "CCNumeroPosizioneAssicurativa"); + add_field("40-09", 30, 30, o, an, "Causale"); + add_field("40-09", 31, 34); + add_field("40-09", 35, 40, o, n, "NumeroDiRiferimento"); + add_field("40-09", 41, 55, f, n, "ImportoDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-09", 56, 70, f, n, "ImportoCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-09", 71,120); + + add_field("40-10", 1, 1); + add_field("40-10", 2, 3, o, an, "TipoRecord", "40"); + add_field("40-10", 4, 10, o, n, "ProgressivoDelega"); + add_field("40-10", 11, 12, o, an, "SubtipoRecord", "10"); + add_field("40-10", 13, 27, f, n, "TotaleDebito"); // non sarebbe f, ma 0 e' valido + add_field("40-10", 28, 42, f, n, "TotaleCredito"); // non sarebbe f, ma 0 e' valido + add_field("40-10", 43, 43, o, an, "SegnoSezione"); + add_field("40-10", 44, 58, f, n, "SaldoSezione"); + add_field("40-10", 59,120); + + add_field("50-01", 1, 1); add_field("50-01", 2, 3, o, an, "TipoRecord", "50"); add_field("50-01", 4, 10, o, n, "ProgressivoDelega"); add_field("50-01", 11, 12, o, an, "SubtipoRecord", "01"); @@ -699,6 +779,8 @@ void TF4_sender::add_10_20(const TRecordset& riga, const TMask& m) else set("ProvinciaNascita", "EE"); } + set("ProtocolloDelega", riga.get("F24")); + } ///////////////////////////////////////////////////////// @@ -781,6 +863,10 @@ void TF4_sender::add_erario(TRecordset& riga, real& saldo_tot, real& credito_tot set("ProgressivoDelega", nProgDelega); set("ProgressivoTributo", ++nProgr); set("CodiceTributo", tributo); + TString16 rif(riga.get("RATEAZIONE").as_string()); + + rif << riga.get("ANNO").as_string(); + set("RiferimentiTributo", rif); const real d = riga.get("IMPORTODEB").as_real(); set("ImportoDebito", d); @@ -828,7 +914,10 @@ void TF4_sender::add_inps(TRecordset& riga, real& saldo_tot, real& credito_tot) set("ProgressivoDelega", nProgDelega); set("ProgressivoContributo", ++nProgr); set("CausaleContributo", tributo); - + set("CodiceSede", riga.get("SEDE")); + set("MatricolaINPS", riga.get("MATRICOLA")); + set("PeriodoInizio", riga.get("PERIODODA")); + set("PeriodoFine", riga.get("PERIODOA")); const real d = riga.get("IMPORTODEB").as_real(); set("ImportoDebito", d); debito += d; @@ -857,6 +946,171 @@ void TF4_sender::add_inps(TRecordset& riga, real& saldo_tot, real& credito_tot) credito_tot += credito; } +void TF4_sender::add_regioni(TRecordset& riga, real& saldo_tot, real& credito_tot) +{ + const long nProgDelega = _f24->get_count("10"); + + int nProgr = 0; + real debito, credito; + + for (bool ok = riga.move_first(); ok ; ok = riga.move_next()) + { + const TString4 tributo = riga.get("TRIBUTO").as_string(); + const char sezione = trib2sec(tributo); + if (sezione == 'R') + { + if (new_rec("40-05")) // qui + { + + set("ProgressivoDelega", nProgDelega); + set("ProgressivoContributo", ++nProgr); + set("CodiceRegione", riga.get("CODREG").as_int()); + set("CodiceTributo", tributo); + + TString16 rif(riga.get("RATEAZIONE").as_string()); + + rif << riga.get("ANNO").as_string(); + set("RiferimentiTributo", rif); + + const real d = riga.get("IMPORTODEB").as_real(); + set("ImportoDebito", d); + debito += d; + + const real c = riga.get("IMPORTOCRED").as_real(); + set("ImportoCredito", c); + credito += c; + + if (nProgr > 4) + log(2, "Numero eccessivo di righe nella sezione Regione"); + } + } + } + + const real saldo = debito-credito; + if (nProgr > 0 && new_rec("40-06")) + { + set("ProgressivoDelega", nProgDelega); + set("TotaleDebito", debito); + set("TotaleCredito", credito); + set("SegnoSezione", saldo < ZERO ? "N" : "P"); + set("SaldoSezione", saldo < ZERO ? -saldo : saldo); + } + + saldo_tot += saldo; + credito_tot += credito; +} + +void TF4_sender::add_ici(TRecordset& riga, real& saldo_tot, real& credito_tot) +{ + const long nProgDelega = _f24->get_count("10"); + + int nProgr = 0; + real debito, credito; + + for (bool ok = riga.move_first(); ok ; ok = riga.move_next()) + { + const TString4 tributo = riga.get("TRIBUTO").as_string(); + const char sezione = trib2sec(tributo); + if (sezione == 'L') + { + if (new_rec("40-07")) // qui + { + set("ProgressivoDelega", nProgDelega); + set("ProgressivoContributo", ++nProgr); + set("CodiceEnte", riga.get("ENTECOM").as_string()); + set("CodiceTributo", tributo); + + TString16 rif(riga.get("RATEAZIONE").as_string()); + + rif << riga.get("ANNO").as_string(); + set("RiferimentiTributo", rif); + + const real d = riga.get("IMPORTODEB").as_real(); + set("ImportoDebito", d); + debito += d; + + const real c = riga.get("IMPORTOCRED").as_real(); + set("ImportoCredito", c); + credito += c; + + set("Ravvedimento", riga.get("RAVVED").as_bool() ? 1 : 0); + set("ImmobiliVariati", riga.get("IMMVAR").as_bool() ? 1 : 0); + set("Acconto", riga.get("ACCONTO").as_bool() ? 1 : 0); + set("Saldo", riga.get("SALDO").as_bool() ? 1 : 0); + set("NumeroFabbricati", riga.get("NUMIMM").as_int()); + set("DetrazioneICI", 0L); + + if (nProgr > 4) + log(2, "Numero eccessivo di righe nella sezione ICI/Altri tributi locali"); + } + } + } + + const real saldo = debito-credito; + if (nProgr > 0 && new_rec("40-08")) + { + set("ProgressivoDelega", nProgDelega); + set("TotaleDebito", debito); + set("TotaleCredito", credito); + set("SegnoSezione", saldo < ZERO ? "N" : "P"); + set("SaldoSezione", saldo < ZERO ? -saldo : saldo); + } + + saldo_tot += saldo; + credito_tot += credito; +} + +void TF4_sender::add_inail(TRecordset& riga, real& saldo_tot, real& credito_tot) +{ + const long nProgDelega = _f24->get_count("10"); + + int nProgr = 0; + real debito, credito; + + for (bool ok = riga.move_first(); ok ; ok = riga.move_next()) + { + const TString4 tributo = riga.get("TRIBUTO").as_string(); + const char sezione = trib2sec(tributo); + if (sezione == 'N') + { + if (new_rec("40-09")) // qui + { + set("ProgressivoDelega", nProgDelega); + set("ProgressivoContributo", ++nProgr); + set("CodiceSede", riga.get("SEDE").as_string()); + set("NumeroPosizioneAssicurativa", riga.get("POSASS").as_real()); + set("CCNumeroPosizioneAssicurativa", riga.get("CIN").as_real()); + set("Causale", riga.get("CAUSINAIL").as_string()); + set("NumeroDiRiferimento", riga.get("NUMRIF").as_real()); + + const real d = riga.get("IMPORTODEB").as_real(); + set("ImportoDebito", d); + debito += d; + + const real c = riga.get("IMPORTOCRED").as_real(); + set("ImportoCredito", c); + credito += c; + + if (nProgr > 3) + log(2, "Numero eccessivo di righe nella sezione INAIL"); + } + } + } + + const real saldo = debito-credito; + if (nProgr > 0 && new_rec("40-10")) + { + set("ProgressivoDelega", nProgDelega); + set("TotaleDebito", debito); + set("TotaleCredito", credito); + set("SegnoSezione", saldo < ZERO ? "N" : "P"); + set("SaldoSezione", saldo < ZERO ? -saldo : saldo); + } + + saldo_tot += saldo; + credito_tot += credito; +} + void TF4_sender::add_50(TRecordset& riga, const real& saldo_tot, const real& credito_tot, const TMask& m) { riga.move_first(); @@ -920,6 +1174,9 @@ void TF4_sender::add_delega(long nDelega, const TMask& m) add_10_20(delega, m); add_erario(delega, saldo_tot, credito_tot); add_inps(delega, saldo_tot, credito_tot); + add_regioni(delega, saldo_tot, credito_tot); + add_ici(delega, saldo_tot, credito_tot); + add_inail(delega, saldo_tot, credito_tot); add_50(delega, saldo_tot, credito_tot, m); _f24->totale_positivi() += saldo_tot; diff --git a/gv/gvlib.cpp b/gv/gvlib.cpp index b3472ef1f..6f238af9c 100755 --- a/gv/gvlib.cpp +++ b/gv/gvlib.cpp @@ -107,7 +107,7 @@ bool TF24_set::contabilizza(TLog_report & log) } else { - msg.format("Tributo %s : Conto %d %d %ld assente", codtrib, c.gruppo(), c.conto(), c.sottoconto()); + msg.format("Tributo %s : Conto %d %d %ld assente", (const char *) codtrib, c.gruppo(), c.conto(), c.sottoconto()); log.log(2, msg); return false; } @@ -137,7 +137,7 @@ bool TF24_set::contabilizza(TLog_report & log) } else { - msg.format(FR("Banca %s : Conto %d %d %ld assente"), codbnp, c.gruppo(), c.conto(), c.sottoconto()); + msg.format(FR("Banca %s : Conto %d %d %ld assente"), (const char *) codbnp, c.gruppo(), c.conto(), c.sottoconto()); log.log(2, msg); return false; }