Patch level : 12.0 420
Files correlati : tf Commento : - Sistemato salvataggio record custom - Aggiunto controllo record a volte escono record con flag errato dalle queries - Aggiunto controllo tipo documento - Sistemata procedura controllo errori, adesso riceve il puntatore di strarr - Modificata esportazione tff0400 se è un estero non CEE al posto del codice_fiscale riempio la partita_IVA con quello che è li presente git-svn-id: svn://10.65.10.50/branches/R_10_00@23959 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c6668aa742
commit
42fac4d92f
@ -238,14 +238,10 @@ const char* decodTipo(TToken_string* strarr)
|
|||||||
bool saveRec(TToken_string row, bool esportato)
|
bool saveRec(TToken_string row, bool esportato)
|
||||||
{
|
{
|
||||||
static TLocalisamfile trasfatt(LF_TRASFATT);
|
static TLocalisamfile trasfatt(LF_TRASFATT);
|
||||||
// Devo inserire la riga in trasfatt
|
TString key = row.get(_numero); key << "|"<< row.get(_aliquota);
|
||||||
TRectype rCust(LF_TRASFATT);
|
|
||||||
if(strcmp(row.get(_spedita), "X") == 0) // Controllo che non sia già stata spedita prima
|
TRectype rCust = cache().get(LF_TRASFATT, key);
|
||||||
{
|
// Se la riga non esiste metto la chiave
|
||||||
TString key = row.get(_numero); key << "|"<< row.get(_aliquota);
|
|
||||||
rCust = cache().get(LF_TRASFATT, key);
|
|
||||||
}
|
|
||||||
// Controllo non si sa mai
|
|
||||||
if(rCust.empty())
|
if(rCust.empty())
|
||||||
{
|
{
|
||||||
rCust.put("NUMREG", row.get(_numero));
|
rCust.put("NUMREG", row.get(_numero));
|
||||||
@ -263,7 +259,8 @@ bool saveRec(TToken_string row, bool esportato)
|
|||||||
rCust.put("AUTOFATT", row.get(_autofatt));
|
rCust.put("AUTOFATT", row.get(_autofatt));
|
||||||
if(esportato)
|
if(esportato)
|
||||||
{
|
{
|
||||||
rCust.put("TFINVIO", true);
|
TString invio = esportato? "I" : row.get(_invio);
|
||||||
|
rCust.put("TFINVIO", invio);
|
||||||
rCust.put("TFDATA", TDate(TODAY));
|
rCust.put("TFDATA", TDate(TODAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -956,7 +953,7 @@ bool TTrFa_app::tff0200(TString key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DatiSede
|
// DatiSede
|
||||||
TString via = _ditta.via_residenza(), cap = _ditta.CAP_residenza(), nazione = _ditta.stato_residenzaISO();
|
TString via = _ditta.via_residenza(), cap = _ditta.CAP_residenza(), nazione = _ditta.stato_residenza_ISO();
|
||||||
// Valori necessari, se non ci sono salto
|
// Valori necessari, se non ci sono salto
|
||||||
if(via.full() && cap.full() && nazione.full())
|
if(via.full() && cap.full() && nazione.full())
|
||||||
{
|
{
|
||||||
@ -976,7 +973,7 @@ bool TTrFa_app::tff0200(TString key)
|
|||||||
if(r_ana.get_char("TIPORFSO") == 'S') // Stabile Organizzazione
|
if(r_ana.get_char("TIPORFSO") == 'S') // Stabile Organizzazione
|
||||||
{
|
{
|
||||||
TAnagrafica rfso(r_ana);
|
TAnagrafica rfso(r_ana);
|
||||||
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenzaISO();
|
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenza_ISO();
|
||||||
|
|
||||||
tff0200f.set("P2_STABORGIND", via);
|
tff0200f.set("P2_STABORGIND", via);
|
||||||
tff0200f.set("P2_STABORGNRCIVICO", rfso.civico_residenza());
|
tff0200f.set("P2_STABORGNRCIVICO", rfso.civico_residenza());
|
||||||
@ -1007,7 +1004,7 @@ bool TTrFa_app::tff0300(TString key, TRectype r_ana)
|
|||||||
|
|
||||||
TTrFa_record tff0300f("TFF0300F");
|
TTrFa_record tff0300f("TFF0300F");
|
||||||
tff0300f.set("P3_KEYPRGINVIO", key);
|
tff0300f.set("P3_KEYPRGINVIO", key);
|
||||||
tff0300f.set("P3_FISCIVAPAESE", rfso.stato_residenzaISO());
|
tff0300f.set("P3_FISCIVAPAESE", rfso.stato_residenza_ISO());
|
||||||
tff0300f.set("P3_FISCIVACODICE", paiv);
|
tff0300f.set("P3_FISCIVACODICE", paiv);
|
||||||
|
|
||||||
if(r_ana.get_char("TIPOA") == 'G')
|
if(r_ana.get_char("TIPOA") == 'G')
|
||||||
@ -1097,7 +1094,18 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
{
|
||||||
|
// Se è un estero non CEE prendo nella partita IVA metto l'identificativo fiscale
|
||||||
|
if(cedeprest.estero_non_CEE())
|
||||||
|
{
|
||||||
|
tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
|
||||||
|
tff0400f.set("P4_FISCIVACOD", cedeprest.codice_fiscale());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(cedeprest.ok()) // Con bolle doganali non a posto impazzisce
|
if(cedeprest.ok()) // Con bolle doganali non a posto impazzisce
|
||||||
@ -1162,9 +1170,9 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
{
|
{
|
||||||
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
|
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
|
||||||
}
|
}
|
||||||
TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenzaISO();
|
TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenza_ISO();
|
||||||
// Valori necessari, se non ci sono salto
|
// Valori necessari, se non ci sono salto
|
||||||
if(via.full() && cap.full() && nazione.full())
|
if(via.full() && (cap.full() || cedeprest.estero()) && nazione.full())
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_SEDEIND", via);
|
tff0400f.set("P4_SEDEIND", via);
|
||||||
tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza());
|
tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza());
|
||||||
@ -1227,6 +1235,8 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
|
|||||||
tff0700f.set("P7_KEYHEADERFATT", getHeader(strarr));
|
tff0700f.set("P7_KEYHEADERFATT", getHeader(strarr));
|
||||||
tff0700f.set("P7_KEYBODYFATT", getBody(strarr));
|
tff0700f.set("P7_KEYBODYFATT", getBody(strarr));
|
||||||
|
|
||||||
|
TString natura = strarr->get(_natura);
|
||||||
|
|
||||||
tff0700f.set("P7_TIPODOC", decodTipo(strarr));
|
tff0700f.set("P7_TIPODOC", decodTipo(strarr));
|
||||||
tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc)));
|
tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc)));
|
||||||
tff0700f.set("P7_NUMERO", strarr->get(_numdoc));
|
tff0700f.set("P7_NUMERO", strarr->get(_numdoc));
|
||||||
@ -1298,7 +1308,7 @@ bool TTrFa_app::tff3100(TToken_string* strarr, TRectype r_ana)
|
|||||||
|
|
||||||
if(r_ana.get_char("TIPORFSO") == 'S') // Stabile Organizzazione
|
if(r_ana.get_char("TIPORFSO") == 'S') // Stabile Organizzazione
|
||||||
{
|
{
|
||||||
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenzaISO();
|
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenza_ISO();
|
||||||
|
|
||||||
tff3100f.set("PH_STABORGIND", via);
|
tff3100f.set("PH_STABORGIND", via);
|
||||||
tff3100f.set("PH_STABORGNRCIVICO", rfso.civico_residenza());
|
tff3100f.set("PH_STABORGNRCIVICO", rfso.civico_residenza());
|
||||||
@ -1315,7 +1325,7 @@ bool TTrFa_app::tff3100(TToken_string* strarr, TRectype r_ana)
|
|||||||
|
|
||||||
TString paiv = rfso.partita_IVA(), ragsoc = rfso.ragione_sociale(), nom = rfso.nome(), cog = rfso.cognome();
|
TString paiv = rfso.partita_IVA(), ragsoc = rfso.ragione_sociale(), nom = rfso.nome(), cog = rfso.cognome();
|
||||||
|
|
||||||
tff3100f.set("PH_FISCIVAPAESE", rfso.stato_residenzaISO());
|
tff3100f.set("PH_FISCIVAPAESE", rfso.stato_residenza_ISO());
|
||||||
tff3100f.set("PH_FISCIVACODICE", paiv);
|
tff3100f.set("PH_FISCIVACODICE", paiv);
|
||||||
|
|
||||||
if(r_ana.get_char("TIPOA") == 'G')
|
if(r_ana.get_char("TIPOA") == 'G')
|
||||||
|
@ -53,6 +53,7 @@ enum filter_fatt
|
|||||||
#define FLAG_ERRORE "E"
|
#define FLAG_ERRORE "E"
|
||||||
#define FLAG_NINVIO "N"
|
#define FLAG_NINVIO "N"
|
||||||
#define FLAG_FORZATO "F"
|
#define FLAG_FORZATO "F"
|
||||||
|
#define FLAG_INVIATO "I"
|
||||||
#define SPESOMETROBASE "ModuliSirio"
|
#define SPESOMETROBASE "ModuliSirio"
|
||||||
|
|
||||||
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
||||||
@ -218,7 +219,7 @@ public:
|
|||||||
// Controllo tutti i records
|
// Controllo tutti i records
|
||||||
bool checkAll();
|
bool checkAll();
|
||||||
// Testo validità record
|
// Testo validità record
|
||||||
bool checkRec(TPrinter* stampa, TToken_string& rec);
|
bool checkRec(TPrinter* stampa, TToken_string* rec);
|
||||||
// Controllo che siano presenti records
|
// Controllo che siano presenti records
|
||||||
bool checkNotEmpty();
|
bool checkNotEmpty();
|
||||||
// Controllo finale prima di inviare il tutto, se ci sono fatture
|
// Controllo finale prima di inviare il tutto, se ci sono fatture
|
||||||
@ -226,6 +227,8 @@ public:
|
|||||||
void theFinalCheckDown();
|
void theFinalCheckDown();
|
||||||
// Mette il flag di invio = [flag] per la riga numero [nrow]
|
// Mette il flag di invio = [flag] per la riga numero [nrow]
|
||||||
void flagRow(int nrow, TString flag);
|
void flagRow(int nrow, TString flag);
|
||||||
|
// Salto se la riga ha un tipo invio non del filtro
|
||||||
|
bool checkInvio(const TString& invio);
|
||||||
};
|
};
|
||||||
// Funzione inline di stampa
|
// Funzione inline di stampa
|
||||||
inline void printError(TPrinter* stampa, TString movimento, TString documento, TString msgerr);
|
inline void printError(TPrinter* stampa, TString movimento, TString documento, TString msgerr);
|
||||||
|
@ -193,6 +193,14 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case A_TIPODOC:
|
||||||
|
// Controllo che il tipo di documento rientri in quelli del filtro
|
||||||
|
if(e == fe_modify && !get_bool(getTipoDoc(o.get())))
|
||||||
|
{
|
||||||
|
error_box("Attenzione! il tipo di documento scelto non fa parte dei filtri correnti!");
|
||||||
|
o.set("");
|
||||||
|
}
|
||||||
|
break;
|
||||||
case DLG_SAVEREC:
|
case DLG_SAVEREC:
|
||||||
if(e == fe_button)
|
if(e == fe_button)
|
||||||
saveAll();
|
saveAll();
|
||||||
@ -422,7 +430,7 @@ bool TTrFa_mask::checkAll()
|
|||||||
TSheet_field& sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
||||||
{
|
{
|
||||||
checkRec(&stampa, *strarr);
|
checkRec(&stampa, strarr);
|
||||||
}
|
}
|
||||||
riga.reset();
|
riga.reset();
|
||||||
riga.put(TR("------------------ Fine controllo! ------------------"), 30);
|
riga.put(TR("------------------ Fine controllo! ------------------"), 30);
|
||||||
@ -440,14 +448,14 @@ inline void printError(TPrinter* stampa, TString movimento, TString documento, T
|
|||||||
stampa->print(riga);
|
stampa->print(riga);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string& rec)
|
bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string* rec)
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
TString numMov = rec.get(_numero), numDoc = rec.get(_numdoc);
|
TString numMov = rec->get(_numero), numDoc = rec->get(_numdoc);
|
||||||
TString msgerr;
|
TString msgerr;
|
||||||
TString coderr;
|
TString coderr;
|
||||||
// Controllo date ***********************************************************************************
|
// Controllo date ***********************************************************************************
|
||||||
TDate reg = rec.get(_datareg), doc = rec.get(_datadoc);
|
TDate reg = rec->get(_datareg), doc = rec->get(_datadoc);
|
||||||
if(reg < doc)
|
if(reg < doc)
|
||||||
{
|
{
|
||||||
ok = false;
|
ok = false;
|
||||||
@ -457,10 +465,10 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string& rec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Controllo aliquota, imponibile e imposta *********************************************************
|
// Controllo aliquota, imponibile e imposta *********************************************************
|
||||||
TCodiceIVA codiva(rec.get(_aliquota));
|
TCodiceIVA codiva(rec->get(_aliquota));
|
||||||
TString nat = rec.get(_natura), realNat(natura(rec.get(_aliquota)));
|
TString nat = rec->get(_natura), realNat(natura(rec->get(_aliquota)));
|
||||||
nat.ltrim(); // Se vuoto arriva con uno spazio
|
nat.ltrim(); // Se vuoto arriva con uno spazio
|
||||||
real imponibile = rec.get(_imponibile), imposta = rec.get(_importoIVA);
|
real imponibile = rec->get(_imponibile), imposta = rec->get(_importoIVA);
|
||||||
if(nat != realNat)
|
if(nat != realNat)
|
||||||
{
|
{
|
||||||
msgerr.cut(0) << "Natura del movimento errata, valore dichiarato: " << nat << " valore corretto: " << realNat;
|
msgerr.cut(0) << "Natura del movimento errata, valore dichiarato: " << nat << " valore corretto: " << realNat;
|
||||||
@ -478,7 +486,7 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string& rec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Flaggo il record con i messaggi di errore
|
// Flaggo il record con i messaggi di errore
|
||||||
rec.add(coderr, _coderr); // Sempre potrebbero esserci errori non bloccanti
|
rec->add(coderr, _coderr); // Sempre potrebbero esserci errori non bloccanti
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
@ -599,6 +607,8 @@ void TTrFa_mask::load_sheet()
|
|||||||
TRectype movimento = *(TRectype*)rec;
|
TRectype movimento = *(TRectype*)rec;
|
||||||
// Controllo che sia un tipo documento da leggere
|
// Controllo che sia un tipo documento da leggere
|
||||||
if(!get_bool(getTipoDoc(movimento.get("TIPODOC")))) continue;
|
if(!get_bool(getTipoDoc(movimento.get("TIPODOC")))) continue;
|
||||||
|
// A volte mi pesca movimenti con invio sbagliato
|
||||||
|
if(!checkInvio(movimento.get("TFINVIO"))) continue;
|
||||||
|
|
||||||
// Creo una nuova riga nello sheet
|
// Creo una nuova riga nello sheet
|
||||||
TToken_string& row = sheet.row(-1);
|
TToken_string& row = sheet.row(-1);
|
||||||
@ -608,7 +618,7 @@ void TTrFa_mask::load_sheet()
|
|||||||
*/
|
*/
|
||||||
TRectype isCust = getTrasFatt(movimento.get("NUMREG"), iva);
|
TRectype isCust = getTrasFatt(movimento.get("NUMREG"), iva);
|
||||||
|
|
||||||
row.add(isCust.get("TFINVIO") == "I", _spedita); // Spedita
|
row.add(movimento.get("TFINVIO") == "I" ? "X" : "", _spedita); // Spedita
|
||||||
row.add("X"); // Da spedire, sempre!
|
row.add("X"); // Da spedire, sempre!
|
||||||
row.add(isCust.full() ? "X" : "", _forzata); // Modificato
|
row.add(isCust.full() ? "X" : "", _forzata); // Modificato
|
||||||
row.add(movimento.get_long("NUMREG"), _numero); // Numero registrazione
|
row.add(movimento.get_long("NUMREG"), _numero); // Numero registrazione
|
||||||
@ -680,9 +690,30 @@ TString TTrFa_mask::revCharge(TString numreg) const
|
|||||||
// Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi
|
// Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi
|
||||||
TString key = numreg;
|
TString key = numreg;
|
||||||
TCausale caus(cache().get(LF_MOV, key, "CODCAUS"));
|
TCausale caus(cache().get(LF_MOV, key, "CODCAUS"));
|
||||||
|
if(caus.reverse_charge())
|
||||||
|
bool tolla = true;
|
||||||
return caus.reverse_charge() ? "X" : "";
|
return caus.reverse_charge() ? "X" : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TTrFa_mask::checkInvio(const TString& invio)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
switch(get_int(F_FATTSEL))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ok = invio == "" || invio == FLAG_INVIO || invio == FLAG_FORZATO;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
ok = invio == FLAG_INVIATO;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
default:
|
||||||
|
ok = invio == FLAG_NINVIO;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
TString TTrFa_mask::getRFSO(TString codrfso) const
|
TString TTrFa_mask::getRFSO(TString codrfso) const
|
||||||
{
|
{
|
||||||
TString key; key << codrfso[0] << "|" << codrfso.mid(1);
|
TString key; key << codrfso[0] << "|" << codrfso.mid(1);
|
||||||
|
@ -110,6 +110,7 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
|||||||
retRec.put("NUMDOC", c_rmoviva->get("23.NUMDOC").as_string());
|
retRec.put("NUMDOC", c_rmoviva->get("23.NUMDOC").as_string());
|
||||||
retRec.put("DATAREG", c_rmoviva->get("23.DATAREG").as_date());
|
retRec.put("DATAREG", c_rmoviva->get("23.DATAREG").as_date());
|
||||||
retRec.put("DATADOC", c_rmoviva->get("23.DATADOC").as_date());
|
retRec.put("DATADOC", c_rmoviva->get("23.DATADOC").as_date());
|
||||||
|
retRec.put("TFINVIO", c_rmoviva->get("23.TFINVIO").as_string());
|
||||||
retRec.put("IMPONIBILE", c_rmoviva->get("25.IMPONIBILE").as_real());
|
retRec.put("IMPONIBILE", c_rmoviva->get("25.IMPONIBILE").as_real());
|
||||||
retRec.put("IMPOSTA", c_rmoviva->get("25.IMPOSTA").as_real());
|
retRec.put("IMPOSTA", c_rmoviva->get("25.IMPOSTA").as_real());
|
||||||
retRec.put("CODIVA", c_rmoviva->get("25.CODIVA").as_string());
|
retRec.put("CODIVA", c_rmoviva->get("25.CODIVA").as_string());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user