diff --git a/src/tf/tf0100.cpp b/src/tf/tf0100.cpp index a07fc7086..facee1bea 100644 --- a/src/tf/tf0100.cpp +++ b/src/tf/tf0100.cpp @@ -246,6 +246,7 @@ bool saveRec(TToken_string row, bool esportato) rCust.put("CODCF", row.get(_codcf)); rCust.put("OCCAS", row.get(_occas)); rCust.put("TIPODOC", row.get(_codnum)); + rCust.put("TIPODOCAE", row.get(_codnumAE)); rCust.put("NUMDOC", row.get(_numdoc)); rCust.put("DATAREG", row.get(_datareg)); rCust.put("DATADOC", row.get(_datadoc)); @@ -1350,7 +1351,7 @@ bool TTrFa_app::tff0700(TSheet_field& sheet) TString natura = strarr->get(_natura); - tff0700f.set("P7_TIPODOC", strarr->get(_codnum)); + tff0700f.set("P7_TIPODOC", strarr->get(_codnumAE)); // Controllo il tipo di esigilità tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc))); diff --git a/src/tf/tf0100a.h b/src/tf/tf0100a.h index fd95f485c..a6fc8fbfe 100644 --- a/src/tf/tf0100a.h +++ b/src/tf/tf0100a.h @@ -30,27 +30,28 @@ #define A_DATAREG 101 #define A_TIPODOC 102 -#define A_NUMDOC 103 -#define A_DATADOC 104 -#define A_ALIQUOTA 105 -#define A_IMPONIBILE 106 -#define A_IMPOSTA 107 -#define A_NATURA 108 -#define A_DETRAIB 109 -#define A_TIPOCF 110 -#define A_CODCF 111 -#define A_OCFPI 112 -#define A_RAGSOC 113 -#define A_RFSO 114 -#define A_RAGSOCRFSO 115 -#define A_PAIV 116 -#define A_COFI 117 -#define A_REVERSE 118 -#define A_AUTOFATT 119 -#define A_SPEDITA 120 -#define A_INVIO 121 -#define A_FORZATA 122 -#define A_NUMERO 123 -#define A_CODERR 124 +#define A_TIPODOCAE 103 +#define A_NUMDOC 104 +#define A_DATADOC 105 +#define A_ALIQUOTA 106 +#define A_IMPONIBILE 107 +#define A_IMPOSTA 108 +#define A_NATURA 109 +#define A_DETRAIB 110 +#define A_TIPOCF 111 +#define A_CODCF 112 +#define A_OCFPI 113 +#define A_RAGSOC 114 +#define A_RFSO 115 +#define A_RAGSOCRFSO 116 +#define A_PAIV 117 +#define A_COFI 118 +#define A_REVERSE 119 +#define A_AUTOFATT 120 +#define A_SPEDITA 121 +#define A_INVIO 122 +#define A_FORZATA 123 +#define A_NUMERO 124 +#define A_CODERR 125 -#define END_SHEET 124 \ No newline at end of file +#define END_SHEET 125 \ No newline at end of file diff --git a/src/tf/tf0100a.uml b/src/tf/tf0100a.uml index 5f59d6685..5031144cd 100644 --- a/src/tf/tf0100a.uml +++ b/src/tf/tf0100a.uml @@ -173,7 +173,8 @@ SPREADSHEET F_RIGHE BEGIN PROMPT 0 0 "Righe movimenti" ITEM "Data\n Reg.@8F" - ITEM "Tipo\nDocum.@5F" + ITEM "Tipo\nDocum.@2F" + ITEM "Tipo\nDoc. AE.@5F" ITEM "Numero\nDocum.@5F" ITEM "Data\nDocum.@10" ITEM "Aliquota@4" @@ -313,7 +314,22 @@ BEGIN FLAGS "D" END -LIST A_TIPODOC 6 +STRING A_TIPODOC 2 +BEGIN + PROMPT 23 6 "Tipo doc. " + FIELD TIPODOC + USE %TPD + INPUT CODTAB A_TIPODOC + DISPLAY "Tipo " CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT A_TIPODOC CODTAB + WARNING "Tipo documento errato" + CHECKTYPE REQUIRED + FLAGS "HUD" + ADD NONE +END + +LIST A_TIPODOCAE 6 BEGIN PROMPT 23 6 "Tipo doc. " ITEM "TD01|TD01" diff --git a/src/tf/tf0100b.h b/src/tf/tf0100b.h index 879649792..8bdf80d71 100644 --- a/src/tf/tf0100b.h +++ b/src/tf/tf0100b.h @@ -78,6 +78,7 @@ enum spesometroFields{ _rfso = A_RFSO - SHEET_GAP, _ragsocrfso = A_RAGSOCRFSO - SHEET_GAP, _codnum = A_TIPODOC - SHEET_GAP, + _codnumAE = A_TIPODOCAE - SHEET_GAP, _numdoc = A_NUMDOC - SHEET_GAP, _datadoc = A_DATADOC - SHEET_GAP, _natura = A_NATURA - SHEET_GAP, diff --git a/src/tf/tf0101.cpp b/src/tf/tf0101.cpp index 6415b37b7..544069cbe 100644 --- a/src/tf/tf0101.cpp +++ b/src/tf/tf0101.cpp @@ -672,15 +672,16 @@ void TTrFa_mask::load_sheet() row.add(findDetraib(movimento.get("TIPODET")), _detraibile); // Detraibilità row.add(movimento.get_real("IMPONIBILE"), _imponibile); // Imponibile row.add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta - row.add(revCharge(movimento.get("NUMREG")), _reverse); // Rev.Charge + row.add(revCharge(movimento.get("NUMREG"), movimento.get_date("DATAREG").year()), _reverse); // Rev.Charge // Calcolo il tipo documento alla fine per sicurezza static TString4 td; td.cut(0) << movimento.get("TIPODOC"); - if(isCust.full() && td.starts_with("TD")) - row.add(td, _codnum); // Tipo documento + row.add(td, _codnum); + if(isCust.full()) + row.add(movimento.get("TIPODOCAE"), _codnumAE); // Tipo documento else - row.add(decodTipo(&row, td), _codnum); // Tipo documento + row.add(decodTipo(&row, td), _codnumAE); // Tipo documento /* * Possono esistere movimenti custom dove il cliente ha una partita IVA propria @@ -745,7 +746,7 @@ TTrFa_mask::TTrFa_mask(TString msk) loadConfig(); // Controllo che abbia aggiornato le causali dopo l'ultima patch cg0500 - bool ok = ini_get_int(CONFIG_INSTALL, "cg", "Patch") >= 500; + bool ok = ini_get_int(CONFIG_GENERAL, "cg", "Patch") >= 500; if (!ok) { if (is_debug_station()) diff --git a/src/tf/tf0400.cpp b/src/tf/tf0400.cpp index 7bbf1205d..84f830c4c 100644 --- a/src/tf/tf0400.cpp +++ b/src/tf/tf0400.cpp @@ -200,7 +200,7 @@ void TSpeCheck_msk::fillNoFilter() // RSOC RFSO row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC - row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); + row.add((revCharge(rset.get("NUMREG").as_string(), rset.get("23.DATAREG").as_date().year())), s.cid2index(A_REVERSE)); // AUTOFATT if(_ditta.partita_IVA() == clifo.get("PAIV")) { @@ -277,6 +277,7 @@ void TSpeCheck_msk::fillDiff() row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG)); row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC)); + row.add(rset.get("TIPODOCAE").as_string(), s.cid2index(A_TIPODOCAE)); row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC)); row.add(rset.get("DATADOC").as_string(), s.cid2index(A_DATADOC)); row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA)); @@ -298,7 +299,7 @@ void TSpeCheck_msk::fillDiff() // RSOC RFSO row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC - row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); + row.add((revCharge(rset.get("NUMREG").as_string(), rset.get("DATAREG").as_date().year())), s.cid2index(A_REVERSE)); // AUTOFATT if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV")) { @@ -380,7 +381,7 @@ void TSpeCheck_msk::foundHomeland(TToken_string& row, TString numreg, TString co // RSOC RFSO row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC - row.add((revCharge(recMov.get("NUMREG"))), s.cid2index(A_REVERSE)); + row.add((revCharge(recMov.get("NUMREG"), recMov.get_date("DATAREG").year())), s.cid2index(A_REVERSE)); // AUTOFATT if(_ditta.partita_IVA() == clifo.get("PAIV")) { @@ -470,7 +471,7 @@ void TSpeCheck_msk::fillCust() // RSOC RFSO row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC - row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); + row.add((revCharge(rset.get("NUMREG").as_string(), rset.get("DATAREG").as_date().year())), s.cid2index(A_REVERSE)); // AUTOFATT if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV")) { @@ -521,7 +522,6 @@ void TSpeCheck_msk::enableEdit(bool en) // Abilito/Disabilito le colonne s.enable_column(s.cid2index(A_ELIMINA), en); s.enable_column(s.cid2index(A_DATAREG),en); - s.enable_column(s.cid2index(A_TIPODOC),en); s.enable_column(s.cid2index(A_NUMDOC),en); s.enable_column(s.cid2index(A_DATADOC),en); s.enable_column(s.cid2index(A_ALIQUOTA),en); diff --git a/src/tf/tf0400a.h b/src/tf/tf0400a.h index d4fd1464b..460c60a23 100644 --- a/src/tf/tf0400a.h +++ b/src/tf/tf0400a.h @@ -11,22 +11,23 @@ #define A_ELIMINA 101 #define A_DATAREG 102 #define A_TIPODOC 103 -#define A_NUMDOC 104 -#define A_DATADOC 105 -#define A_ALIQUOTA 106 -#define A_IMPONIBILE 107 -#define A_IMPOSTA 108 -#define A_NATURA 109 -#define A_DETRAIB 110 -#define A_TIPOCF 111 -#define A_CODCF 112 -#define A_OCFPI 113 -#define A_RAGSOC 114 -#define A_RFSO 115 -#define A_RAGSOCRFSO 116 -#define A_PAIV 117 -#define A_COFI 118 -#define A_REVERSE 119 -#define A_AUTOFATT 120 -#define A_SPEDITA 121 -#define A_NUMERO 122 \ No newline at end of file +#define A_TIPODOCAE 104 +#define A_NUMDOC 105 +#define A_DATADOC 106 +#define A_ALIQUOTA 107 +#define A_IMPONIBILE 108 +#define A_IMPOSTA 109 +#define A_NATURA 110 +#define A_DETRAIB 111 +#define A_TIPOCF 112 +#define A_CODCF 113 +#define A_OCFPI 114 +#define A_RAGSOC 115 +#define A_RFSO 116 +#define A_RAGSOCRFSO 117 +#define A_PAIV 118 +#define A_COFI 119 +#define A_REVERSE 120 +#define A_AUTOFATT 121 +#define A_SPEDITA 122 +#define A_NUMERO 123 \ No newline at end of file diff --git a/src/tf/tf0400a.uml b/src/tf/tf0400a.uml index 888c72ce9..2e38c5dca 100644 --- a/src/tf/tf0400a.uml +++ b/src/tf/tf0400a.uml @@ -118,6 +118,7 @@ BEGIN ITEM "Elimina@1F" ITEM "Data\n Reg.@8F" ITEM "Tipo\nDocum.@2F" + ITEM "Tipo\nDoc. AE@5F" ITEM "Numero\nDocum.@5F" ITEM "Data\nDocum.@10" ITEM "Aliquota@4" @@ -247,10 +248,24 @@ BEGIN OUTPUT A_TIPODOC CODTAB WARNING "Tipo documento errato" CHECKTYPE REQUIRED - FLAGS "U" + FLAGS "HUD" ADD NONE END +LIST A_TIPODOCAE 6 +BEGIN + PROMPT 23 6 "Tipo doc. " + ITEM "TD01|TD01" + ITEM "TD04|TD04" + ITEM "TD05|TD05" + ITEM "TD07|TD07" + ITEM "TD08|TD08" + ITEM "TD10|TD10" + ITEM "TD11|TD11" + ITEM "ERR0|Errore" +END + + STRING A_NUMDOC 7 BEGIN PROMPT 42 6 "Num. doc. " diff --git a/src/tf/tfutility.cpp b/src/tf/tfutility.cpp index 1b397fe4d..c0b6a3dc6 100644 --- a/src/tf/tfutility.cpp +++ b/src/tf/tfutility.cpp @@ -61,11 +61,11 @@ real get_IVA(const TString& codiva) return ai.get_real("R0"); } -TString revCharge(TString numreg) +TString revCharge(TString numreg, int year) { // Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi TString key = numreg; - TCausale caus(cache().get(LF_MOV, key, "CODCAUS")); + TCausale caus(cache().get(LF_MOV, key, "CODCAUS"), year); if(caus.reverse_charge()) bool tolla = true; return caus.reverse_charge() ? "X" : ""; @@ -78,7 +78,7 @@ TString getRFSO(TString codrfso) } /* Utilizzo questa funzione per filtrare al meglio i record, tutti i casi che devo omettere verranno rilevati e ritorneranno false - * Nota bene: viene sfruttato un puntatore di TISA_Recordset per non creare nuovi oggetti e velocizzare la chiamata + * Nota bene: viene sfruttato un puntatore di TISAM_Recordset per non creare nuovi oggetti e velocizzare la chiamata * a questo punto il programma non ha ancora creato un record di $trasfatt con i dati che mi interessano */ bool checkRecord(TISAM_recordset* rec) @@ -99,7 +99,7 @@ bool checkRecord(TISAM_recordset* rec) if(rec->get("23.TIPO").as_string() == "C") { // Tolgo tutti i movimenti di sola IVA e in reverse charge o di tipo 3 (Acquisto di beni e servizi di soggetti non residenti) - TCausale caus(rec->get("23.CODCAUS").as_string()); + TCausale caus(rec->get("23.CODCAUS").as_string(), rec->get("23.DATAREG").as_date().year()); if(caus.soloiva() && (caus.reverse_charge() || caus.regime_speciale() == 3)) return false; } else if(anaCli.italiano() && anaCli.partita_IVA()[0] != '0' && anaCli.partita_IVA()[0] != '1' && anaCli.codice_fiscale()[0] > '8') diff --git a/src/tf/tfutility.h b/src/tf/tfutility.h index a1a348477..9d1e75c60 100644 --- a/src/tf/tfutility.h +++ b/src/tf/tfutility.h @@ -18,7 +18,7 @@ real get_IVA(const TString& codiva); // Ritorna la % di detraibilità TString findDetraib(TString tipodet); // Ritorna "X" se ha il reverse charge -TString revCharge(TString numreg); +TString revCharge(TString numreg, int year); // Ritorna la ragione sociale del RFSO TString getRFSO(TString codrfso); // Controllo che sia un record che mi interessa