Patch level : 12.0 502

Files correlati     : tf
Commento            : 
- Aggiunta colonna per tipo documento TD e tipo documento normale
- Corretta inizializzazione TCausale in tutti i punti del programma (non sapevo servisse l'anno quando è stato fatto tutto)

git-svn-id: svn://10.65.10.50/branches/R_10_00@24288 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2018-01-19 09:28:19 +00:00
parent 8fdba33e3a
commit 388e9345fc
10 changed files with 97 additions and 61 deletions

View File

@ -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)));

View File

@ -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
#define END_SHEET 125

View File

@ -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"

View File

@ -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,

View File

@ -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())

View File

@ -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);

View File

@ -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
#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

View File

@ -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. "

View File

@ -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')

View File

@ -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