diff --git a/src/tf/tf0200.cpp b/src/tf/tf0200.cpp index 4ae46babd..1400e93ab 100644 --- a/src/tf/tf0200.cpp +++ b/src/tf/tf0200.cpp @@ -45,6 +45,7 @@ const TRectype getLIA(int anno) TString key; key << format("%05d", prefix().firm().codice()) << anno; // %05d Crea un numero di 5 cifre partendo dal codice e mettendoci 0 davanti return cache().get("%LIA", key); } + // Ritorna il record valido richiesto di tabcom.VER const TRectype getVER(int anno, int mese) { @@ -77,7 +78,7 @@ const TRectype getVER(int anno, int mese) return rowRet; } -// Scopiazzata brutalmente da cg4304.cpp +// Scopiazzata brutalmente da cg4304.cpp, aggiunto controllo indetraibilità per le imposte, non devono essere prese in considerazione se indetraibili int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real& imposta_diff, real& imponibile_xcas, real& imposta_xcas) { CHECKD(tipoiva == 1 || tipoiva == 2, "Bad tipo iva:", tipoiva); @@ -102,15 +103,23 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real& const int tipodiff = rec.get_int("TIPODIFF"); switch (tipodiff) { - case 1: imponibile_diff += imp; imposta_diff += iva; break; - case 2: imponibile_xcas += imp; imposta_xcas += iva; break; + case 1: + imponibile_diff += imp; + if(!rec.get_bool("INDETR")) + imposta_diff += iva; + break; + case 2: + imponibile_xcas += imp; + if(!rec.get_bool("INDETR")) + imposta_xcas += iva; + break; default: break; } flag |= tipodiff; } } - if (tipoiva == 2) + if (tipoiva == 2 && !rec.get_bool("INDETR")) { real perc_prorata; @@ -140,6 +149,12 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real& return flag; } +int getTipoReg(int anno, TString codReg) +{ + TString key; key << anno << codReg; + return stoi(cache().get("REG", key, "I0")); +} + /* Da errori in allocazione TArray const TISAM_recordset getCurIvaXCassa(TDate data_da, TDate data_a, TString codreg_att) { @@ -192,14 +207,32 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long disable(F_MESE); enable(F_TRIMESTRE); } - // Abilito i campi a schiena - for(int i = F_SUBFORNITURE; i <= F_VEREFF; i++) + } + else if(e == fe_init) + { + // Per trovare un valore tento per 5 anni di vedere se c'è una liquidazione aperta, così da valorizzare tutta la roba + int year = TDate(TODAY).year(); + for(int i = year; i >= year - 5; i--) { - enable(i); - if(i >= CAMPI_CON_BOOLEAN) + TString cod = get(F_CODDITTA); + cod << i; + if(cache().get("%LIA", cod).empty()) continue; + + // Trovato + set(F_ANNO, i); + if(cache().get("%LIA", cod, "S7") == "M") { - //enable(i + 50); Anche disabilitati funzionano + mensile = true; + enable(F_MESE); + disable(F_TRIMESTRE); } + else + { + mensile = false; + disable(F_MESE); + enable(F_TRIMESTRE); + } + break; } } break; @@ -226,12 +259,12 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long break; case DLG_EMAIL: // Richiamo il programma di invio -// TExternal_application app; + // TExternal_application app; break; } - if(o.dlg() >= CAMPI_CON_BOOLEAN && e == fe_modify) // Se l'utente modifica manualmente uno dei campi calcolati da Campo flaggo il DB + if(o.dlg() >= CAMPI_CON_BOOLEAN && o.dlg() <= F_IMPNOVER && e == fe_modify) // Se l'utente modifica manualmente uno dei campi calcolati da Campo flaggo il DB { set(o.dlg() + 50, "X"); } @@ -254,15 +287,18 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long if((ivaes - ivadet) >= ZERO) { set(F_IVADOV, ivaes - ivadet); + set(B_IVADOV, "X"); set(F_IVADOVC, ZERO); + set(B_IVADOVC, ""); } else { set(F_IVADOV, ZERO); + set(B_IVADOV, ""); set(F_IVADOVC, (ivaes - ivadet) * -UNO); + set(B_IVADOVC, "X"); } } - // IVA da versare VS a credito case F_IVADOV : case F_DEBPREC : @@ -280,14 +316,19 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long if(debito - credito >= ZERO) { set(F_IVAVER, debito - credito); + set(B_IVAVER, "X"); set(F_IVAVERC, ZERO); + set(B_IVAVERC, ""); } else { set(F_IVAVER, ZERO); + set(B_IVAVER, ""); set(F_IVAVERC, credito - debito); + set(B_IVAVERC, "X"); } } + break; } } return true; @@ -300,8 +341,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO * I dati da prelevare saranno in PRM, LIM e %LIA * In PRM e LIM troverò le informazioni suddivise per mese, mentre in %LIA ho l'anno di liquidazione */ - int start = mensile ? get_int(F_MESE) : get_int(F_TRIMESTRE) * 3; - int end = mensile ? start : start + 3; + int start = mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1); + int end = mensile ? start : start + 2; int anno = get_int(F_ANNO); // Valori da calcolare @@ -332,8 +373,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO real ivaverc = ZERO; // Costanti - const TString codreg_att = "VEN"; - const TString codreg_pas = "ACQ"; + static const int reg_att = 1; + static const int reg_pas = 2; for(; start <= end; start++) { @@ -351,6 +392,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO // Controllo che la liquidazione è stata effettuata if(rowLim.empty()) { + message_box("Errore LIM"); error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente"); return; } @@ -366,97 +408,48 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO TRectype to(rprm.curr()); to.put("COD" , "PRM");to.put("CODTAB", anno); TCursor curPrm(&rprm, "", 1, &from, &to); - for(curPrm = 0; curPrm.pos() < curPrm.items(); ++curPrm) { TRectype rowPrm = curPrm.curr(); // Controllo il mese TString codtab = rowPrm.get("CODTAB"); - int app = stoi(rowPrm.get("CODTAB").sub(13,15)); + int app = stoi(rowPrm.get("CODTAB").sub(13,15)); // Da togliere if(stoi(rowPrm.get("CODTAB").sub(13,15)) != start) continue; // Verifico su che registro mi trovo - if(rowPrm.get("CODTAB").sub(10,13) == codreg_att) + int tiporeg = getTipoReg(anno, rowPrm.get("CODTAB").sub(10,13)); + if(tiporeg == reg_att) { totopatt = totopatt + rowPrm.get_real("R0"); } - else if(rowPrm.get("CODTAB").sub(10,13) == codreg_pas) + else if(tiporeg == reg_pas) { totoppas = totoppas + rowPrm.get_real("R0"); } } - - real appReal = ZERO; - - // IVA esigibile - TToken_string tokenPrec = rowLim.get("S0"); - tokenPrec.get(0, appReal); - ivaes = ivaes + appReal; - - // IVA detraibile - appReal = ZERO; // Nel dubbio azzero - tokenPrec.get(1, appReal); - ivadet = ivadet + appReal; - // Se ha attiva l'IVA x cassa if(gestione_IVAxCassa(data_da)) { - static TRelation rreg(LF_TAB); - TRectype fromReg(rprm.curr()); fromReg.put("COD", "REG");fromReg.put("CODTAB", anno); - TRectype toReg(rprm.curr()); toReg.put("COD" , "REG"); toReg.put("CODTAB", anno); - - // Questo codice è stato preso da print_IVAxCassa in cg4400.cpp - TString query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(STR((MESELIQ<13)&&(TIPOMOV>2)&&(MOV.TOTDOC!=0)&&(IMPOSTA!=0)&&NUM(INDETR!='X')))"; - query << "\nBY DATAREGP DATAREG NUMPRO"; - query << "\nJOIN MOV INTO NUMREG==NUMREG"; - query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF"; - - TCursor curReg(&rreg, "", 1, &fromReg, &toReg); - for(curReg = 0; curReg.pos() < curReg.items(); ++curReg) - { - TRectype rowReg = curReg.curr(); - - // Siamo su un registro non IVA - int tipo_registro = rowReg.get_int("I0"); - if(tipo_registro > 2) continue; - - TISAM_recordset id(query); - id.set_var("#DAL", data_da); - id.set_var("#AL", data_a); - id.set_var("#REG", rowReg.get("CODTAB").sub(4)); - - const TRectype& rec = id.cursor()->curr(); - for (bool ok = id.move_first(); ok; ok = id.move_next()) - { - if(tipo_registro == 1) // Vendite - { - totopattxc = totopattxc + rec.get_real("IMPOSTA"); - } - else // Acquisti - { - totoppasxc = totoppasxc + rec.get_real("IMPOSTA"); - } - } - - } - // IVA esigibile - TToken_string tokenPrec = rowLim.get("S0"); - tokenPrec.get(0, ivaes); - real imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas; - calc_inc_diff(anno, start, 1, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas); - + imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO; + // 1 = Vendite + calc_inc_diff(anno, start, reg_att, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas); + totopattxc = totopattxc + imponibile_xcas; + ivaesxc = ivaesxc + imposta_xcas; + ivaesdiff = ivaesdiff + imposta_xcas; // IVA detraibile - tokenPrec.get(1, ivadet); - calc_inc_diff(anno, start, 2, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas); - + imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO; + // 2 = Acquisti + calc_inc_diff(anno, start, reg_pas, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas); + totoppasxc = totoppasxc + imponibile_xcas; + ivadetxc = ivadetxc + imposta_xcas; + ivadetdiff = ivadetdiff + imposta_xcas; } /** Resto *****************************************************************************************************/ - ivaes = ivaes + rowLim.get_real("R13"); ivadet = ivadet + rowLim.get_real("R12"); @@ -469,9 +462,13 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO debprec = debprec + rowLim.get_real("S2"); - appReal = ZERO; + real appReal = ZERO; // Credito periodo precedente + TToken_string tokenPrec = rowLim.get("S0"); + real app1 = ZERO, app2 = ZERO; + tokenPrec.get(0, app1); + tokenPrec.get(1, app2); tokenPrec.get(2, appReal); creprec = creprec + appReal; @@ -487,6 +484,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO TRectype rowVer = getVER(anno, start); if(rowVer.empty() || rowVer.get_real("R5") == ZERO) { + message_box("Errore VER"); error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\""); return; } @@ -547,7 +545,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO set(F_VEREFF, vereff); // Azzero i booleani - for(int i = B_TOTOPATT; i <= B_VEREFF; i++) + for(int i = B_TOTOPATT; i <= B_CRESPEC; i++) { set(i, ""); } diff --git a/src/tf/tf0200a.h b/src/tf/tf0200a.h index 2832867c0..9c79102de 100644 --- a/src/tf/tf0200a.h +++ b/src/tf/tf0200a.h @@ -29,8 +29,8 @@ #define F_RETTIFICHE 129 #define F_VARIMP 130 #define F_RIMBORSI 131 -#define F_IMPNOVER 132 -#define F_CRESPEC 133 +#define F_CRESPEC 132 +#define F_IMPNOVER 133 #define F_VEREFF 134 @@ -59,6 +59,4 @@ #define B_RETTIFICHE 179 #define B_VARIMP 180 #define B_RIMBORSI 181 -#define B_IMPNOVER 182 -#define B_CRESPEC 183 -#define B_VEREFF 184 \ No newline at end of file +#define B_CRESPEC 182 \ No newline at end of file diff --git a/src/tf/tf0200a.uml b/src/tf/tf0200a.uml index 65de9cba4..964179cd1 100644 --- a/src/tf/tf0200a.uml +++ b/src/tf/tf0200a.uml @@ -35,7 +35,6 @@ BEGIN OUTPUT F_CODDITTA CODDITTA OUTPUT F_RAGSOC RAGSOC CHECKTYPE REQUIRED - KEY 1 END STRING F_RAGSOC 50 @@ -72,7 +71,7 @@ END NUMBER F_MESE 2 BEGIN - PROMPT 20 2 "Mese " + PROMPT 24 2 "Mese " SHEET " |Mese@30" INPUT F_MESE OUTPUT F_MESE @@ -94,11 +93,12 @@ BEGIN FLAGS "" KEY 1 FIELD MESE + CHECKTYPE REQUIRED END NUMBER F_TRIMESTRE 2 BEGIN - PROMPT 40 2 "Trimestre " + PROMPT 50 2 "Trimestre " SHEET " |Trimestre@30" INPUT F_TRIMESTRE OUTPUT F_TRIMESTRE @@ -108,30 +108,30 @@ BEGIN ITEM "3|Terzo" ITEM "4|Quarto" HELP "Trimestre dichiarazione, lasciare vuoto per inserirne uno nuovo" - KEY 1 FLAGS "" FIELD TRIMESTRE + CHECKTYPE REQUIRED END BOOLEAN F_SUBFORNITURE BEGIN PROMPT 1 3 "Subforniture" FIELD SUBFOR - FLAGS "D" + FLAGS "" END NUMBER F_EVECC 1 BEGIN PROMPT 24 3 "Eventi eccezionali " FIELD EVECC - FLAGS "D" + FLAGS "" ENDPAGE NUMBER F_TOTOPATT 16 2 BEGIN PROMPT 1 4 "Totale op. attive " FIELD TOTOPATT - FLAGS "D" + FLAGS "" END BOOLEAN B_TOTOPATT @@ -145,7 +145,7 @@ NUMBER F_TOTOPATTXC 16 2 BEGIN PROMPT 1 5 "Totale op. attive x c." FIELD TOTOPATTXC - FLAGS "D" + FLAGS "" END BOOLEAN B_TOTOPATTXC @@ -157,353 +157,341 @@ END NUMBER F_TOTOPPAS 16 2 BEGIN - PROMPT 1 6 "Totale op. passive " + PROMPT 50 4 "Totale op. passive " FIELD TOTOPPAS - FLAGS "D" + FLAGS "" END BOOLEAN B_TOTOPPAS BEGIN - PROMPT 45 6 "" + PROMPT 94 4 "" FIELD BTOTOPPAS FLAGS "D" END NUMBER F_TOTOPPASXC 16 2 BEGIN - PROMPT 1 7 "Totale op. passive x c." + PROMPT 50 5 "Totale op. passive x c." FIELD TOTOPPASXC - FLAGS "D" + FLAGS "" END BOOLEAN B_TOTOPPASXC BEGIN - PROMPT 45 7 "" + PROMPT 94 5 "" FIELD BTOTOPPASX FLAGS "D" END NUMBER F_IVAES 16 2 BEGIN - PROMPT 1 8 "IVA esigibile " + PROMPT 1 6 "IVA esigibile " FIELD IVAES - FLAGS "D" + FLAGS "" END BOOLEAN B_IVAES BEGIN - PROMPT 45 8 "" + PROMPT 45 6 "" FIELD BIVAES FLAGS "D" END NUMBER F_IVAESXC 16 2 BEGIN - PROMPT 1 9 "IVA esigibile x c. " + PROMPT 1 7 "IVA esigibile x c. " FIELD IVAESXC - FLAGS "D" + FLAGS "" END BOOLEAN B_IVAESXC BEGIN - PROMPT 45 9 "" + PROMPT 45 7 "" FIELD BIVAESXC FLAGS "D" END NUMBER F_IVAESDIFF 16 2 BEGIN - PROMPT 1 10 "IVA esigibile diff " + PROMPT 1 8 "IVA esigibile diff " FIELD IVAESDIFF - FLAGS "D" + FLAGS "" END BOOLEAN B_IVAESDIFF BEGIN - PROMPT 45 10 "" + PROMPT 45 8 "" FIELD BIVAESDIFF FLAGS "D" END NUMBER F_IVADET 16 2 BEGIN - PROMPT 1 11 "IVA detratta " + PROMPT 50 6 "IVA detratta " FIELD IVADET - FLAGS "D" + FLAGS "" END BOOLEAN B_IVADET BEGIN - PROMPT 45 11 "" + PROMPT 94 6 "" FIELD BIVADET FLAGS "D" END NUMBER F_IVADETXC 16 2 BEGIN - PROMPT 1 12 "IVA detratta x c. " + PROMPT 50 7 "IVA detratta x c. " FIELD IVADETXC - FLAGS "D" + FLAGS "" END BOOLEAN B_IVADETXC BEGIN - PROMPT 45 12 "" + PROMPT 94 7 "" FIELD BIVADETXC FLAGS "D" END NUMBER F_IVADETDIFF 16 2 BEGIN - PROMPT 1 13 "IVA detratta diff " + PROMPT 50 8 "IVA detratta diff " FIELD IVADETDIFF - FLAGS "D" + FLAGS "" END BOOLEAN B_IVADETDIFF BEGIN - PROMPT 45 13 "" + PROMPT 94 8 "" FIELD BIVADETDIF FLAGS "D" END NUMBER F_IVADOV 16 2 BEGIN - PROMPT 1 14 "IVA dovuta " + PROMPT 1 10 "IVA dovuta " FIELD IVADOV - FLAGS "D" + FLAGS "" END BOOLEAN B_IVADOV BEGIN - PROMPT 45 14 "" + PROMPT 45 10 "" FIELD BIVADOV FLAGS "D" END NUMBER F_IVADOVC 16 2 BEGIN - PROMPT 50 14 "o a credito" + PROMPT 50 10 "o a credito " FIELD IVADOVC - FLAGS "D" + FLAGS "" END BOOLEAN B_IVADOVC BEGIN - PROMPT 80 14 "" + PROMPT 94 10 "" FIELD BIVADOVC FLAGS "D" END NUMBER F_DEBPREC 16 2 BEGIN - PROMPT 1 15 "Debito precedente " + PROMPT 1 12 "Debito precedente " FIELD DEBPREC - FLAGS "D" + FLAGS "" END BOOLEAN B_DEBPREC BEGIN - PROMPT 45 15 "" + PROMPT 45 12 "" FIELD BDEBPREC FLAGS "D" END NUMBER F_CREPREC 16 2 BEGIN - PROMPT 1 16 "Credito precedente " + PROMPT 50 12 "Credito precedente " FIELD CREPREC - FLAGS "D" + FLAGS "" END BOOLEAN B_CREPREC BEGIN - PROMPT 45 16 "" + PROMPT 94 12 "" FIELD BCREPREC FLAGS "D" END +NUMBER F_INTLIQTRI 16 2 +BEGIN + PROMPT 1 13 "Interessi liq. trim. " + FIELD INTLIQTRI + FLAGS "" +END + +BOOLEAN B_INTLIQTRI +BEGIN + PROMPT 45 13 "" + FIELD BINTLIQTRI + FLAGS "D" +END + NUMBER F_CREAPREC 16 2 BEGIN - PROMPT 1 17 "Credito anno precedente" + PROMPT 50 13 "Credito anno precedente" FIELD CREAPREC - FLAGS "D" + FLAGS "" END BOOLEAN B_CREAPREC BEGIN - PROMPT 45 17 "" + PROMPT 94 13 "" FIELD BCREAPREC FLAGS "D" END +NUMBER F_ACCDOV 16 2 +BEGIN + PROMPT 1 14 "Acconto dovuto " + FIELD ACCDOV + FLAGS "" +END + +BOOLEAN B_ACCDOV +BEGIN + PROMPT 45 14 "" + FIELD BACCDOV + FLAGS "D" +END + NUMBER F_VEAUE 16 2 BEGIN - PROMPT 1 18 "Versamenti auto UE " + PROMPT 50 14 "Versamenti auto UE " FIELD VEAUE - FLAGS "D" + FLAGS "" END BOOLEAN B_VEAUE BEGIN - PROMPT 45 18 "" + PROMPT 94 14 "" FIELD BVEAUE FLAGS "D" END NUMBER F_CREIMP 16 2 BEGIN - PROMPT 1 19 "Crediti di imposta " + PROMPT 50 15 "Crediti di imposta " FIELD CREIMP - FLAGS "D" + FLAGS "" END BOOLEAN B_CREIMP BEGIN - PROMPT 45 19 "" + PROMPT 94 15 "" FIELD BCREIMP FLAGS "D" END -NUMBER F_INTLIQTRI 16 2 -BEGIN - PROMPT 1 20 "Interessi liq. trim. " - FIELD INTLIQTRI - FLAGS "D" -END - -BOOLEAN B_INTLIQTRI -BEGIN - PROMPT 45 20 "" - FIELD BINTLIQTRI - FLAGS "D" -END - -NUMBER F_ACCDOV 16 2 -BEGIN - PROMPT 1 21 "Acconto dovuto " - FIELD ACCDOV - FLAGS "D" -END - -BOOLEAN B_ACCDOV -BEGIN - PROMPT 45 21 "" - FIELD BACCDOV - FLAGS "D" -END - -NUMBER F_IVAVER 16 2 -BEGIN - PROMPT 1 22 "IVA da versare " - FIELD IVAVER - FLAGS "D" -END - -BOOLEAN B_IVAVER -BEGIN - PROMPT 45 22 "" - FIELD BIVAVER - FLAGS "D" -END - -NUMBER F_IVAVERC 16 2 -BEGIN - PROMPT 50 22 "o a credito" - FIELD IVAVERC - FLAGS "D" -END - -BOOLEAN B_IVAVERC -BEGIN - PROMPT 80 22 "" - FIELD BIVAVERC - FLAGS "D" -END - NUMBER F_RETTIFICHE 16 2 BEGIN - PROMPT 1 23 "Rettifiche " + PROMPT 1 16 "Rettifiche " FIELD RETTIFICHE - FLAGS "D" + FLAGS "" END BOOLEAN B_RETTIFICHE BEGIN - PROMPT 45 23 "" + PROMPT 45 16 "" FIELD BRETTIFICH FLAGS "D" END NUMBER F_VARIMP 16 2 BEGIN - PROMPT 1 24 "Variazioni d'imposta " + PROMPT 50 16 "Variazioni d'imposta " FIELD VARIMP - FLAGS "D" + FLAGS "" END BOOLEAN B_VARIMP BEGIN - PROMPT 45 24 "" + PROMPT 94 16 "" FIELD BVARIMP FLAGS "D" END NUMBER F_RIMBORSI 16 2 BEGIN - PROMPT 1 25 "Rimborsi " + PROMPT 1 17 "Rimborsi " FIELD RIMBORSI - FLAGS "D" + FLAGS "" END BOOLEAN B_RIMBORSI BEGIN - PROMPT 45 25 "" + PROMPT 45 17 "" FIELD BRIMBORSI FLAGS "D" END -NUMBER F_IMPNOVER 16 2 -BEGIN - PROMPT 1 26 "Imposta non versata " - FIELD IMPNOVER - FLAGS "D" -END - -BOOLEAN B_IMPNOVER -BEGIN - PROMPT 45 26 "" - FIELD BIMPNOVER - FLAGS "D" -END - NUMBER F_CRESPEC 16 2 BEGIN - PROMPT 1 27 "Crediti speciali " + PROMPT 50 17 "Crediti speciali " FIELD CRESPEC - FLAGS "D" + FLAGS "" END BOOLEAN B_CRESPEC BEGIN - PROMPT 45 27 "" + PROMPT 94 17 "" FIELD BCRESPEC FLAGS "D" END -NUMBER F_VEREFF 16 2 +NUMBER F_IVAVER 16 2 BEGIN - PROMPT 1 28 "Versamenti effettuati " - FIELD VEREFF + PROMPT 1 19 "IVA da versare " + FIELD IVAVER + FLAGS "" +END + +BOOLEAN B_IVAVER +BEGIN + PROMPT 45 19 "" + FIELD BIVAVER FLAGS "D" END -BOOLEAN B_VEREFF +NUMBER F_IVAVERC 16 2 BEGIN - PROMPT 45 28 "" - FIELD BVEREFF + PROMPT 50 19 "o a credito " + FIELD IVAVERC + FLAGS "" +END + +BOOLEAN B_IVAVERC +BEGIN + PROMPT 94 19 "" + FIELD BIVAVERC FLAGS "D" END +/* Campi non visualizzati ma che vengono salvati lo stesso! */ + +NUMBER F_IMPNOVER 1 1 +BEGIN + PROMPT 50 19 "Imposta non versata" + FIELD IMPNOVER + FLAGS "H" +END + +NUMBER F_VEREFF 1 1 +BEGIN + PROMPT 50 19 "Versamenti effettuati" + FIELD VEREFF + FLAGS "H" +END + ENDMASK diff --git a/src/tf/tf0500.cpp b/src/tf/tf0500.cpp index eb79df7dc..dca784842 100644 --- a/src/tf/tf0500.cpp +++ b/src/tf/tf0500.cpp @@ -10,7 +10,7 @@ #include // get_iva_sirio() #define TIPO_FILE "DF" -#define TFBASE "tf" +#define TFBASE "ModuliSirio" #define CODICE_FORNITURA "IVP17" @@ -56,6 +56,7 @@ class TIvaSend_msk : public TAutomask bool mese; virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: + bool checkVariables(); bool isMese() { return mese; } TIvaSend_msk() : TAutomask("tf0500a"){} }; @@ -123,31 +124,57 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly } } break; + case F_DAMESE: + if(e == fe_modify) + set(F_AMESE, get_int(F_DAMESE)+2); + break; + } + return true; +} + +bool TIvaSend_msk::checkVariables() +{ + if(get(F_ANNO).empty()) + { + error_box("Inserire un anno di liquidazione"); + return false; + } + if((mese && get(F_DAMESE).empty() && get(F_AMESE).empty()) || (!mese && get(F_DATRIMESTRE).empty() && get(F_ATRIMESTRE).empty())) + { + error_box("Inserisci un periodo"); + return false; + } + if((mese && (get_int(F_DAMESE) > get_int(F_AMESE))) || (!mese &&(get_int(F_DATRIMESTRE) > get_int(F_ATRIMESTRE)))) + { + error_box("Date immesse non corrette"); + return false; } return true; } class TIvaSend_app : public TSkeleton_application { - void generateNSend(TIvaSend_msk& msk) { generate(msk); send(); } - void generate(TIvaSend_msk& msk); + void generateNSend(TIvaSend_msk& msk) { generate(msk) && send(); } + bool generate(TIvaSend_msk& msk); TToken_string getTestata(TIvaSend_msk& msk); - void send(); + bool send(); public: virtual void main_loop(); }; -void TIvaSend_app::generate(TIvaSend_msk& msk) + + +bool TIvaSend_app::generate(TIvaSend_msk& msk) { + if(!msk.checkVariables()) + return false; ofstream file; TFilename path(msk.get(F_PATH)); - TRectype rowLim = getLim(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE) * 3); - - TRectype rowLiq = getLiq(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE) * 3); + TRectype rowLim = getLim(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE) - 1) * 3) + 1)); // Decido di utilizzare I10 come numero progressivo di trasmissione - int prog = rowLim.get_int("I10"); prog++; + int prog = rowLim.get_int("I14"); prog++; TString nomeFile; nomeFile << "IT" << getAnagDitta().get("PAIV") << TIPO_FILE << prog << ".csv"; @@ -159,10 +186,12 @@ void TIvaSend_app::generate(TIvaSend_msk& msk) TToken_string testata(getTestata(msk)); - int start = msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE); - int end = msk.isMese() ? msk.get_int(F_AMESE) : msk.get_int(F_ATRIMESTRE); + int start = msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE) - 1) * 3) + 1); + int end = msk.isMese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE) - 1) * 3) + 1); for(; start <= end; start++) { + rowLim = getLim(msk.get_int(F_ANNO), start); // rowLim viene già usata sopra + TRectype rowLiq = getLiq(msk.get_int(F_ANNO), start); TToken_string riga(testata); if(msk.isMese()) @@ -213,8 +242,9 @@ void TIvaSend_app::generate(TIvaSend_msk& msk) if(rowLim.rewrite(TLocalisamfile(LF_TAB)) != NOERR) { error_box("Errore aggiornamento progressivo"); + return false; } - + return true; } TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk) @@ -245,10 +275,10 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk) return testata; } -void TIvaSend_app::send() +bool TIvaSend_app::send() { TFilename tmp; - tmp = TFBASE"\\SiaggTFCAMPO.jar"; + tmp = TFBASE"\\ModuliSirio.jar"; tmp.make_absolute_path(); DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir); @@ -256,11 +286,15 @@ void TIvaSend_app::send() xvt_fsys_set_dir(&new_dir); const bool good = goto_url(tmp); if (good) - xvt_sys_sleep(3000); + { + xvt_sys_sleep(3000); + } else + { error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp); + } xvt_fsys_set_dir(&old_dir); - + return true; } void TIvaSend_app::main_loop() diff --git a/src/tf/tf0500a.uml b/src/tf/tf0500a.uml index 030f6b27e..3cb027a1b 100644 --- a/src/tf/tf0500a.uml +++ b/src/tf/tf0500a.uml @@ -1,6 +1,7 @@ #include "tf0500a.h" TOOLBAR "topbar" 0 0 0 2 + #include ENDPAGE @@ -25,7 +26,6 @@ BEGIN OUTPUT F_CODDITTA CODDITTA OUTPUT F_RAGSOC RAGSOC CHECKTYPE REQUIRED - KEY 1 END STRING F_RAGSOC 50 @@ -33,7 +33,7 @@ BEGIN PROMPT 20 2 "" USE LF_NDITTE KEY 2 INPUT RAGSOC F_RAGSOC - DISPLAY "Ragione Sociale@60" RAGSOC + DISPLAY "Ragione Sociale@60" RAGSOC DISPLAY "Codice" CODDITTA COPY OUTPUT F_CODDITTA CHECKTYPE REQUIRED @@ -51,7 +51,7 @@ BEGIN OUTPUT F_ANNO ANNO OUTPUT F_DAMESE MESE OUTPUT F_DATRIMESTRE TRIMESTRE - CHECKTYPE REQUIRED + OUTPUT F_ATRIMESTRE TRIMESTRE FLAGS "" WARNING "Inserire un anno di liquidazione" END @@ -60,6 +60,8 @@ NUMBER F_DAMESE 2 BEGIN PROMPT 20 3 "Da mese " SHEET " |Mese@30" + INPUT F_DAMESE + OUTPUT F_DAMESE ITEM "|" ITEM "1|Gennaio" ITEM "2|Febbraio" @@ -82,6 +84,8 @@ NUMBER F_AMESE 2 BEGIN PROMPT 40 3 "A mese " SHEET " |Mese@30" + INPUT F_AMESE + OUTPUT F_AMESE ITEM "|" ITEM "1|Gennaio" ITEM "2|Febbraio" @@ -104,6 +108,8 @@ NUMBER F_DATRIMESTRE 2 BEGIN PROMPT 20 4 "Da trimestre " SHEET " |Trimestre@30" + INPUT F_DATRIMESTRE + OUTPUT F_DATRIMESTRE ITEM "|" ITEM "1|Primo" ITEM "2|Secondo" @@ -117,6 +123,8 @@ NUMBER F_ATRIMESTRE 2 BEGIN PROMPT 40 4 "A trimestre " SHEET " |Trimestre@30" + INPUT F_ATRIMESTRE + OUTPUT F_ATRIMESTRE ITEM "|" ITEM "1|Primo" ITEM "2|Secondo" @@ -126,5 +134,12 @@ BEGIN FLAGS "D" END +STRING DLG_PROFILE 256 +BEGIN + PROMPT 1 -1 "Profilo " + PSELECT + FLAGS "H" +END + ENDPAGE ENDMASK \ No newline at end of file diff --git a/src/tf/tfmenu.men b/src/tf/tfmenu.men index b9e23e889..a2b6af066 100644 --- a/src/tf/tfmenu.men +++ b/src/tf/tfmenu.men @@ -1,8 +1,8 @@ [TFMENU_001] Caption = "Trasferimento Fatture" -Picture = -Module = tf -Flags = "F" -//Item_01 = "Trasferimento Fatture", "tf0 -0", "F" -Item_02 = "Liquidazione IVA Periodica", "tf0 -1", "F" -Item_03 = "Invio Liquidazione IVA Periodica", "tf -4", "F" +Picture = +Module = 50 +Flags = "" +//Item_01 = "Trasferimento Fatture", "tf0 -0", "" +Item_02 = "Liquidazione IVA Periodica", "tf0 -1", "" +Item_03 = "Invio Liquidazione IVA Periodica", "tf0 -4", ""