Patch level : 12.0 736

Files correlati     : fp
Commento            :
- Tolto controllo fornitore bolla doganale
- Sistemati filtri maschera spesometro
- Invertito ordine "Sogg. Fatt. Elettr" e Esteri in fornitori (era diverso rispetto ai clienti)
- Refactor dei nomi generale
This commit is contained in:
Mattia Tollari 2019-03-19 11:10:37 +01:00
parent fbdcd06f0e
commit fad861b240
7 changed files with 313 additions and 318 deletions

View File

@ -287,12 +287,6 @@ inline const char * no_special(const char a)
return ""; return "";
} }
bool bd2017()
{
static TDate today = TDate(TODAY), last_day = TDate(31,12,2017);
return today <= last_day;
}
TTrFa_mask& msk() TTrFa_mask& msk()
{ {
static TTrFa_mask* msk = nullptr; static TTrFa_mask* msk = nullptr;
@ -1110,19 +1104,19 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
static TString checkClifo; checkClifo.cut(0); static TString checkClifo; checkClifo.cut(0);
// Per le bolle doganali devo fare sempre questo giro // Per le bolle doganali devo fare sempre questo giro
bool foundBolla = strcmp(strarr->get(_codnum),"BD") == 0, foundBollaCli = false; bool found_bolla = strcmp(strarr->get(_codnum),"BD") == 0, found_bolla_cli = false;
static TString cfbolladog; static TString cfbolladog;
if(foundBolla) if(found_bolla)
{ {
// Attenzione! Se è una riga inserita a mano dall'utente prendo lo stesso il fornitore della riga! // Attenzione! Se è una riga inserita a mano dall'utente prendo lo stesso il fornitore della riga!
cfbolladog = strarr->get_int(_numero) < MOV_CUSTOM ? cache().get(LF_MOV, strarr->get_long(_numero), "CFBOLLADOG") : strarr->get(_codcf); cfbolladog = strarr->get_int(_numero) < MOV_CUSTOM ? cache().get(LF_MOV, strarr->get_long(_numero), "CFBOLLADOG") : strarr->get(_codcf);
if(!cfbolladog.blank()) if(!cfbolladog.blank())
{ {
foundBollaCli = true; found_bolla_cli = true;
checkClifo << "F" << cfbolladog; checkClifo << "F" << cfbolladog;
} }
} }
if(!foundBollaCli) if(!found_bolla_cli)
{ {
static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas); static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas);
if(tempOcfpi.blank()) if(tempOcfpi.blank())
@ -1150,7 +1144,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
// Con l'uscita di questo programma è stato messo un collegamento in prima nota // Con l'uscita di questo programma è stato messo un collegamento in prima nota
// per il fornitore a cui è riferita la bolla doganale // per il fornitore a cui è riferita la bolla doganale
if(foundBollaCli) if(found_bolla_cli)
{ {
r_cedeprest = getCli("F", cfbolladog, ""); r_cedeprest = getCli("F", cfbolladog, "");
cedeprest.init(r_cedeprest); cedeprest.init(r_cedeprest);
@ -1173,10 +1167,8 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
} }
else // Fattura normale, lascio più volte la funzione con il nome del campo per leggibilità else // Fattura normale, lascio più volte la funzione con il nome del campo per leggibilità
{ {
// Ovviamente tutte le bolle doganali fatte prima del rilascio // Se la bolla doganale non ha un fornitore collegato posso passare come P.IVA OO99999999999
// non avranno questo campo compilato e quindi dovrò passare la partita IVA "OO99999999999" if(found_bolla && !found_bolla_cli)
// Controllo anche di essere in una data entro il 31/12/2017, dopo tale data sto ragionamento non è valido
if(foundBolla && !foundBollaCli && bd2017())
{ {
tff0400f.set("P4_FISCIVAPAESE", "OO"); tff0400f.set("P4_FISCIVAPAESE", "OO");
tff0400f.set("P4_FISCIVACOD", "99999999999"); tff0400f.set("P4_FISCIVACOD", "99999999999");
@ -1208,7 +1200,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
bool rsoc = cedeprest.giuridica() || (tipo == 3 || tipo == 7 || tipo == 8 || tipo == 0); bool rsoc = cedeprest.giuridica() || (tipo == 3 || tipo == 7 || tipo == 8 || tipo == 0);
bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica()); bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica());
if(foundBolla && !foundBollaCli) if(found_bolla && !found_bolla_cli)
{ {
tff0400f.set("P4_ANADENOM", "Dato Assente"); tff0400f.set("P4_ANADENOM", "Dato Assente");
} }
@ -1271,7 +1263,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
// Devo trovare rsoc e: // Devo trovare rsoc e:
// 1 - Non trovo la bolla // 1 - Non trovo la bolla
// 2 - Trovo il cliente // 2 - Trovo il cliente
if(rsoc && (!foundBolla || foundBollaCli)) if(rsoc && (!found_bolla || found_bolla_cli))
{ {
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale()); tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
} }

View File

@ -232,19 +232,19 @@ BEGIN
FLAGS "H" FLAGS "H"
END END
BOOLEAN B_PAA_ESTERI
BEGIN
PROMPT 1 11 "Esteri"
GROUP 20
FLAGS ""
END
BOOLEAN B_PAA_SOG_FAT BOOLEAN B_PAA_SOG_FAT
BEGIN BEGIN
PROMPT 1 12 "Soggetti a fatturazione elettronica" PROMPT 1 11 "Soggetti a fatturazione elettronica"
GROUP 20 GROUP 20
END END
BOOLEAN B_PAA_ESTERI
BEGIN
PROMPT 1 12 "Esteri"
GROUP 20
FLAGS ""
END
ENDPAGE ENDPAGE
PAGE "Trasferimento Fatture" 0 2 0 0 PAGE "Trasferimento Fatture" 0 2 0 0

View File

@ -574,7 +574,7 @@ void TTrFa_mask::the_final_check_down() // IT'S THE FINAL CHECKDOOOOOOOWN! WE'RE
{ {
// Chiave: TIPOCF + CODCF + NUMDOC + CODIVA // Chiave: TIPOCF + CODCF + NUMDOC + CODIVA
TString key; key << strarr->get_char(_tipocf) << "|" << strarr->get_int(_codcf) << "|" << strarr->get(_numdoc) << "|" << strarr->get(_aliquota); TString key; key << strarr->get_char(_tipocf) << "|" << strarr->get_int(_codcf) << "|" << strarr->get(_numdoc) << "|" << strarr->get(_aliquota);
TToken_string newNumero; newNumero.add(r, 0); newNumero.add(strarr->get_char(_invio), 1); TToken_string new_numero; new_numero.add(r, 0); new_numero.add(strarr->get_char(_invio), 1);
if(cli_docs.is_key(key)) if(cli_docs.is_key(key))
{ {
TToken_string oldnumero = *dynamic_cast<TToken_string*>(cli_docs.objptr(key)); TToken_string oldnumero = *dynamic_cast<TToken_string*>(cli_docs.objptr(key));
@ -587,11 +587,11 @@ void TTrFa_mask::the_final_check_down() // IT'S THE FINAL CHECKDOOOOOOOWN! WE'RE
flag_row(oldr, FLAG_NINVIO); flag_row(oldr, FLAG_NINVIO);
} }
cli_docs.add(key, newNumero); cli_docs.add(key, new_numero);
} }
else else
{ {
cli_docs.add(key, newNumero); cli_docs.add(key, new_numero);
} }
} }
// Forzo l'aggiornamento dello sheet // Forzo l'aggiornamento dello sheet

View File

@ -79,19 +79,19 @@ const TRectype getVER(int anno, int mese)
else else
key << mese; key << mese;
TRectype rowRet(LF_TABCOM); TRectype row_ret(LF_TABCOM);
for(cver = 0; cver.pos() < cver.items(); ++cver) for(cver = 0; cver.pos() < cver.items(); ++cver)
{ {
TRectype rowVer = cver.curr(); TRectype row_ver = cver.curr();
if(rowVer.get("CODTAB") < key) if(row_ver.get("CODTAB") < key)
{ {
rowRet = rowVer; row_ret = row_ver;
} }
else else
break; break;
} }
return rowRet; return row_ret;
} }
/* Scopiazzata e divisa in due da cg4304.cpp /* Scopiazzata e divisa in due da cg4304.cpp
@ -174,58 +174,58 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imposta_diff, real& imp
} }
/* Funzione per determinare il credito dell'anno precedente delle dichiarazioni precedenti */ /* Funzione per determinare il credito dell'anno precedente delle dichiarazioni precedenti */
void calcolaCreditoPrec(real& creprec, real& creaprec, bool mensile, int anno, int mese) void calcola_credito_prec(real& creprec, real& creaprec, bool mensile, int anno, int mese)
{ {
// Credito anno precedente // Credito anno precedente
/* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ /* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ
* fino a quando ne trovo uno >= 0. */ * fino a quando ne trovo uno >= 0. */
TRectype rowLia = getLIA(anno); TRectype row_lia = getLIA(anno);
if(mensile || (!mensile && ((mese - 1) % 3) == 0)) if(mensile || (!mensile && ((mese - 1) % 3) == 0))
{ {
TRelation ivaLiq(LF_IVALIQ); TRelation iva_liq(LF_IVALIQ);
TRectype from(ivaLiq.curr()); from.put("ANNO", anno); from.put("MESE", 1); TRectype from(iva_liq.curr()); from.put("ANNO", anno); from.put("MESE", 1);
// Fino al mese precedente // Fino al mese precedente
TRectype to(ivaLiq.curr()); to.put("ANNO", anno); to.put("MESE", mese - 1); TRectype to(iva_liq.curr()); to.put("ANNO", anno); to.put("MESE", mese - 1);
TCursor curLiq(&ivaLiq, "GENERATA!=\"G\"", 1, &from, &to); TCursor cur_liq(&iva_liq, "GENERATA!=\"G\"", 1, &from, &to);
bool trovato = false; bool trovato = false;
for(curLiq = 0; curLiq.pos() < curLiq.items(); ++curLiq) for(cur_liq = 0; cur_liq.pos() < cur_liq.items(); ++cur_liq)
{ {
TRectype rowLiq = curLiq.curr(); TRectype row_liq = cur_liq.curr();
if(rowLiq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso? if(row_liq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso?
trovato = trovato || rowLiq.get_real("CREAPREC") > ZERO; trovato = trovato || row_liq.get_real("CREAPREC") > ZERO;
creprec = rowLiq.get_real("IVAVERC"); creprec = row_liq.get_real("IVAVERC");
} }
/* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi) /* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi)
* vado a leggere la liquidazione di quest'anno */ * vado a leggere la liquidazione di quest'anno */
if(!trovato) if(!trovato)
{ {
creaprec = rowLia.get_real("R0"); creaprec = row_lia.get_real("R0");
} }
} }
} }
class ComLiqPerIva_mask : public TAutomask class TCom_liq_per_iva_msk : public TAutomask
{ {
protected: protected:
bool mensile; bool _mensile;
// Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione. // Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione.
// In Release sembra che durante la ricerca salta l'inizializzazione e imposta prima gli altri campi // In Release sembra che durante la ricerca salta l'inizializzazione e imposta prima gli altri campi
bool initLiq; bool _init_liq;
TRectype trueData; TRectype _true_data;
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void extractinator(); void extractinator();
void checkOldValue(int field, real val); void check_old_value(int field, real val);
public: public:
ComLiqPerIva_mask() : TAutomask("tf0200a"), trueData(LF_IVALIQ), initLiq(false) { first_focus(F_ANNO); } TCom_liq_per_iva_msk() : TAutomask("tf0200a"), _true_data(LF_IVALIQ), _init_liq(false) { first_focus(F_ANNO); }
void saveGen(); void save_gen();
}; };
bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TCom_liq_per_iva_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch (o.dlg()) switch (o.dlg())
{ {
@ -241,28 +241,28 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
} }
if(cache().get("%LIA", cod, "S7") == "M") if(cache().get("%LIA", cod, "S7") == "M")
{ {
mensile = true; _mensile = true;
initLiq = true; _init_liq = true;
enable(F_MESE); enable(F_MESE);
disable(F_TRIMESTRE); disable(F_TRIMESTRE);
} }
else else
{ {
mensile = false; _mensile = false;
initLiq = true; _init_liq = true;
disable(F_MESE); disable(F_MESE);
enable(F_TRIMESTRE); enable(F_TRIMESTRE);
} }
} }
break; break;
case F_MESE: case F_MESE:
if(e == fe_modify && mensile && initLiq) if(e == fe_modify && _mensile && _init_liq)
set(F_TRIMESTRE, (get_int(F_MESE) - 1) / 3 + 1); set(F_TRIMESTRE, (get_int(F_MESE) - 1) / 3 + 1);
break; break;
case F_TRIMESTRE: case F_TRIMESTRE:
if(e == fe_init && !query_mode()) if(e == fe_init && !query_mode())
disable(F_TRIMESTRE); disable(F_TRIMESTRE);
if(e == fe_modify && !mensile && initLiq && query_mode()) if(e == fe_modify && !_mensile && _init_liq && query_mode())
{ {
set(F_MESE, get_int(F_TRIMESTRE) * 3); set(F_MESE, get_int(F_TRIMESTRE) * 3);
disable(F_TRIMESTRE); disable(F_TRIMESTRE);
@ -290,19 +290,19 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
if(e == fe_button) if(e == fe_button)
{ {
// Richiamo il programma di invio // Richiamo il programma di invio
TExternal_app invioApp("tf0 -4"); TExternal_app invio_app("tf0 -4");
invioApp.run(); invio_app.run();
} }
} }
break; break;
case DLG_SAVEREC: case DLG_SAVEREC:
if(e != fe_init && !trueData.empty()) if(e != fe_init && !_true_data.empty())
trueData.write_rewrite(TLocalisamfile(LF_IVALIQ)); _true_data.write_rewrite(TLocalisamfile(LF_IVALIQ));
} }
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 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
{ {
checkOldValue(o.dlg(), get_real(o.dlg())); check_old_value(o.dlg(), get_real(o.dlg()));
} }
// Controllo sull'aggiornamento di campi collegati ad altri // Controllo sull'aggiornamento di campi collegati ad altri
@ -324,15 +324,15 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
{ {
set(F_IVADOV, ivaes - ivadet); set(F_IVADOV, ivaes - ivadet);
set(F_IVADOVC, ZERO); set(F_IVADOVC, ZERO);
checkOldValue(F_IVADOV, ivaes - ivadet); check_old_value(F_IVADOV, ivaes - ivadet);
checkOldValue(F_IVADOVC, ""); check_old_value(F_IVADOVC, "");
} }
else else
{ {
set(F_IVADOV, ZERO); set(F_IVADOV, ZERO);
set(F_IVADOVC, (ivaes - ivadet) * -UNO); set(F_IVADOVC, (ivaes - ivadet) * -UNO);
checkOldValue(F_IVADOV, ""); check_old_value(F_IVADOV, "");
checkOldValue(F_IVADOVC, (ivaes - ivadet) * -UNO); check_old_value(F_IVADOVC, (ivaes - ivadet) * -UNO);
} }
} }
// IVA da versare VS a credito // IVA da versare VS a credito
@ -354,7 +354,7 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
if(creaprec < ZERO) if(creaprec < ZERO)
{ {
real creprec = ZERO; real appcreaprec; real creprec = ZERO; real appcreaprec;
calcolaCreditoPrec(creprec, appcreaprec, mensile, get_int(F_ANNO), get_int(F_MESE)); calcola_credito_prec(creprec, appcreaprec, _mensile, get_int(F_ANNO), get_int(F_MESE));
creaprec = appcreaprec + creaprec; creaprec = appcreaprec + creaprec;
} }
@ -363,15 +363,15 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
{ {
set(F_IVAVER, debito - credito); set(F_IVAVER, debito - credito);
set(F_IVAVERC, ZERO); set(F_IVAVERC, ZERO);
checkOldValue(F_IVAVER, debito - credito); check_old_value(F_IVAVER, debito - credito);
checkOldValue(F_IVAVERC, ""); check_old_value(F_IVAVERC, "");
} }
else else
{ {
set(F_IVAVER, ZERO); set(F_IVAVER, ZERO);
set(F_IVAVERC, credito - debito); set(F_IVAVERC, credito - debito);
checkOldValue(F_IVAVER, ""); check_old_value(F_IVAVER, "");
checkOldValue(F_IVAVERC, credito - debito); check_old_value(F_IVAVERC, credito - debito);
} }
} }
break; break;
@ -381,14 +381,14 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
} }
// Funzione che effettivamente estrapola i dati necessari // Funzione che effettivamente estrapola i dati necessari
void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
{ {
/* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno /* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno
* I dati da prelevare saranno in PRM, LIM e %LIA * 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 * 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) - 1) * 3) + 1); int start = _mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1);
int end = mensile ? start : start + 2; int end = _mensile ? start : start + 2;
int anno = get_int(F_ANNO); int anno = get_int(F_ANNO);
// Valori da calcolare // Valori da calcolare
@ -422,7 +422,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
{ {
TDate data_da(1, start, anno); TDate data_da(1, start, anno);
TDate data_a(1, start, anno); data_a.set_end_month(); TDate data_a(1, start, anno); data_a.set_end_month();
bool hasIXC = gestione_IVAxCassa(data_da); bool has_ixc = gestione_IVAxCassa(data_da);
/**************************************************************************************************************** /****************************************************************************************************************
* TOTOPATT, TOTOPATTXC, TOTOPPAS, TOTOPPASXC, IVAES, IVAESXC, IVAESDIFF, * TOTOPATT, TOTOPATTXC, TOTOPPAS, TOTOPPASXC, IVAES, IVAESXC, IVAESDIFF,
@ -430,43 +430,43 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
****************************************************************************************************************/ ****************************************************************************************************************/
// Riga LIM // Riga LIM
const TRectype rowLim = getLIM(anno, start); const TRectype row_lim = getLIM(anno, start);
// Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12 // Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12
if (dongle().year_assist() > 2121 && (rowLim.empty() || rowLim.get_bool("B0")) && !yesno_box("Attenzione non <20> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?")) if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non <20> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?"))
{ {
return; return;
} }
// Riga LIA // Riga LIA
const TRectype rowLia = getLIA(anno); const TRectype row_lia = getLIA(anno);
TString queryIva = "USE RMOVIVA\n"; TString query_iva = "USE RMOVIVA\n";
queryIva << "SELECT ( " << FIELD_NAME(LF_MOV, MOV_REG) << "!=\"\")&&BETWEEN( " << FIELD_NAME(LF_MOV, MOV_DATAREG) << ",#DADATAREG,#ADATAREG)"; // scritto FIELD_NAME meglio usarla query_iva << "SELECT ( " << FIELD_NAME(LF_MOV, MOV_REG) << "!=\"\")&&BETWEEN( " << FIELD_NAME(LF_MOV, MOV_DATAREG) << ",#DADATAREG,#ADATAREG)"; // scritto FIELD_NAME meglio usarla
queryIva << "\nJOIN MOV INTO " << MOV_NUMREG << "==" << MOV_NUMREG << "\n"; query_iva << "\nJOIN MOV INTO " << MOV_NUMREG << "==" << MOV_NUMREG << "\n";
TISAM_recordset curIva(queryIva); TISAM_recordset cur_iva(query_iva);
curIva.set_var("#DADATAREG", data_da); cur_iva.set_var("#DADATAREG", data_da);
curIva.set_var("#ADATAREG", data_a); cur_iva.set_var("#ADATAREG", data_a);
for(bool ok = curIva.move_first(); ok; ok = curIva.move_next()) for(bool ok = cur_iva.move_first(); ok; ok = cur_iva.move_next())
{ {
TString totat, totpas, i; TString totat, totpas, i;
// Controllo che sia un movimento con codice non "non soggetto" // Controllo che sia un movimento con codice non "non soggetto"
TCodiceIVA codiva(curIva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string());
if(codiva.tipo() == "NS") continue; if(codiva.tipo() == "NS") continue;
// Prendo il tipo di registro // Prendo il tipo di registro
TRegistro reg(curIva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno); TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno);
int tiporeg = reg.tipo(); int tiporeg = reg.tipo();
bool isCorrispettivo = reg.corrispettivi(); bool is_corrispettivo = reg.corrispettivi();
// Prendiamo l'imponibile // Prendiamo l'imponibile
real imp = curIva.get("25.IMPONIBILE").as_real(); real imp = cur_iva.get("25.IMPONIBILE").as_real();
real imposta = curIva.get("25.IMPOSTA").as_real(); real imposta = cur_iva.get("25.IMPOSTA").as_real();
// Se è un movimento IvaXCassa o LiqDiff // Se è un movimento IvaXCassa o LiqDiff
if(hasIXC && (curIva.get("23.IVAXCASSA").as_bool() || curIva.get("23.LIQDIFF").as_bool())) if(has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool()))
{ {
if(tiporeg == iva_vendite) if(tiporeg == iva_vendite)
totopattxc += imp; totopattxc += imp;
@ -479,11 +479,11 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
{ {
// Controllo il reverse charge, non va calcolato nel totale delle operazioni attive! // Controllo il reverse charge, non va calcolato nel totale delle operazioni attive!
// Se non ha una riga di movimento non lo sommo // Se non ha una riga di movimento non lo sommo
TString keyRC = curIva.get("23.NUMREG").as_string(); keyRC << "|1"; TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1";
if(!cache().get(LF_RMOV, keyRC).empty()) if(!cache().get(LF_RMOV, key_rc).empty())
{ {
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme) // Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
if(isCorrispettivo && codiva.percentuale() > ZERO && imposta == ZERO) if(is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
{ {
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla // Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
// Es iva 22% => imp : 122 = x : 100 // Es iva 22% => imp : 122 = x : 100
@ -502,7 +502,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
// Se ha attiva l'IVA x cassa calcolo le imposte (imponibili per comodità già calcolati sopra) // Se ha attiva l'IVA x cassa calcolo le imposte (imponibili per comodità già calcolati sopra)
if(hasIXC) if(has_ixc)
{ {
// IVA esigibile // IVA esigibile
real imposta_diff, imposta_xcas; real imposta_diff, imposta_xcas;
@ -526,7 +526,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
/** Resto *****************************************************************************************************/ /** Resto *****************************************************************************************************/
TRectype rowLam = getLAM(anno, start); TRectype row_lam = getLAM(anno, start);
/* É saltato fuori che in caso di liquidazione trimestrale l'importo ivaes e ivadet /* É saltato fuori che in caso di liquidazione trimestrale l'importo ivaes e ivadet
* viene scritto su ogni mese, quindi prendo solo quando * viene scritto su ogni mese, quindi prendo solo quando
@ -534,44 +534,44 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
if(start == end) if(start == end)
{ {
ivaes += rowLam.get_real("R0"); ivaes += row_lam.get_real("R0");
ivadet += rowLam.get_real("R1"); ivadet += row_lam.get_real("R1");
} }
ivaes += ivaesxc + ivaesdiff; ivaes += ivaesxc + ivaesdiff;
ivadet += ivadetxc + ivadetdiff; ivadet += ivadetxc + ivadetdiff;
rettifiche = rettifiche + rowLim.get_real("R5"); rettifiche = rettifiche + row_lim.get_real("R5");
varimp = varimp + rowLim.get_real("R17"); varimp = varimp + row_lim.get_real("R17");
rimborsi = rimborsi + rowLim.get_real("R1"); rimborsi = rimborsi + row_lim.get_real("R1");
impnover = impnover + rowLim.get_real("R18"); impnover = impnover + row_lim.get_real("R18");
crespec = crespec + rowLim.get_real("R19"); crespec = crespec + row_lim.get_real("R19");
vereff = vereff + rowLim.get_real("R8"); vereff = vereff + row_lim.get_real("R8");
debprec = debprec + rowLim.get_real("S2"); debprec = debprec + row_lim.get_real("S2");
real appReal = ZERO; real app_real = ZERO;
// Credito periodo precedente e anno precedente // Credito periodo precedente e anno precedente
calcolaCreditoPrec(creprec, creaprec, mensile, anno, start); calcola_credito_prec(creprec, creaprec, _mensile, anno, start);
if(creaprec < ZERO) if(creaprec < ZERO)
creaprec = ZERO; creaprec = ZERO;
intliqtri = intliqtri + rowLim.get_real("R14"); intliqtri = intliqtri + row_lim.get_real("R14");
accdov = accdov + rowLim.get_real("R11"); accdov = accdov + row_lim.get_real("R11");
} }
// Controllo debprec // Controllo debprec
// Calcolo prendendo dalla tabella %VER // Calcolo prendendo dalla tabella %VER
TRectype rowVer = getVER(anno, start); TRectype row_ver = getVER(anno, start);
if(rowVer.empty() || rowVer.get_real("R5") == ZERO) if(row_ver.empty() || row_ver.get_real("R5") == ZERO)
{ {
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\""); error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
return; return;
} }
else else
{ {
if(debprec > rowVer.get_real("R5")) // Se è maggiore di 25.82€ va azzerato if(debprec > row_ver.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
debprec = ZERO; debprec = ZERO;
} }
// Calcolo ivadov/ivadovc // Calcolo ivadov/ivadovc
@ -587,7 +587,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
} }
// Calcolo l'IVA da versare o a Credito // Calcolo l'IVA da versare o a Credito
if (!mensile && get_int(F_TRIMESTRE) == 5) if (!_mensile && get_int(F_TRIMESTRE) == 5)
{ {
ivaver = ZERO; ivaver = ZERO;
ivaverc = ZERO; ivaverc = ZERO;
@ -642,7 +642,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
set(F_VEREFF, vereff); set(F_VEREFF, vereff);
// Preparo il record // Preparo il record
saveGen(); save_gen();
// Azzero i booleani // Azzero i booleani
for(int i = B_TOTOPATT; i <= B_CRESPEC; i++) for(int i = B_TOTOPATT; i <= B_CRESPEC; i++)
{ {
@ -650,143 +650,143 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
} }
} }
void ComLiqPerIva_mask::saveGen() void TCom_liq_per_iva_msk::save_gen()
{ {
// Assegno tutti i campi // Assegno tutti i campi
trueData.put("ANNO", get(F_ANNO)); _true_data.put("ANNO", get(F_ANNO));
trueData.put("MESE", get(F_MESE)); _true_data.put("MESE", get(F_MESE));
trueData.put("TRIMESTRE", get(F_TRIMESTRE)); _true_data.put("TRIMESTRE", get(F_TRIMESTRE));
trueData.put("GENERATA", 'G'); // Segno che è generata da campo _true_data.put("GENERATA", 'G'); // Segno che è generata da campo
trueData.put("TOTOPATT", get(F_TOTOPATT)); _true_data.put("TOTOPATT", get(F_TOTOPATT));
trueData.put("TOTOPATTXC", get(F_TOTOPATTXC)); _true_data.put("TOTOPATTXC", get(F_TOTOPATTXC));
trueData.put("TOTOPPAS", get(F_TOTOPPAS)); _true_data.put("TOTOPPAS", get(F_TOTOPPAS));
trueData.put("TOTOPPASXC", get(F_TOTOPPASXC)); _true_data.put("TOTOPPASXC", get(F_TOTOPPASXC));
trueData.put("IVAES", get(F_IVAES)); _true_data.put("IVAES", get(F_IVAES));
trueData.put("IVAESXC", get(F_IVAESXC)); _true_data.put("IVAESXC", get(F_IVAESXC));
trueData.put("IVAESDIFF", get(F_IVAESDIFF)); _true_data.put("IVAESDIFF", get(F_IVAESDIFF));
trueData.put("IVADET", get(F_IVADET)); _true_data.put("IVADET", get(F_IVADET));
trueData.put("IVADETXC", get(F_IVADETXC)); _true_data.put("IVADETXC", get(F_IVADETXC));
trueData.put("IVADETDIFF", get(F_IVADETDIFF)); _true_data.put("IVADETDIFF", get(F_IVADETDIFF));
trueData.put("IVADOV", get(F_IVADOV)); _true_data.put("IVADOV", get(F_IVADOV));
trueData.put("IVADOVC", get(F_IVADOVC)); _true_data.put("IVADOVC", get(F_IVADOVC));
trueData.put("DEBPREC", get(F_DEBPREC)); _true_data.put("DEBPREC", get(F_DEBPREC));
trueData.put("CREPREC", get(F_CREPREC)); _true_data.put("CREPREC", get(F_CREPREC));
trueData.put("CREAPREC", get(F_CREAPREC)); _true_data.put("CREAPREC", get(F_CREAPREC));
trueData.put("VEAUE", get(F_VEAUE)); _true_data.put("VEAUE", get(F_VEAUE));
trueData.put("CREIMP", get(F_CREIMP)); _true_data.put("CREIMP", get(F_CREIMP));
trueData.put("INTLIQTRI", get(F_INTLIQTRI)); _true_data.put("INTLIQTRI", get(F_INTLIQTRI));
trueData.put("ACCDOV", get(F_ACCDOV)); _true_data.put("ACCDOV", get(F_ACCDOV));
trueData.put("IVAVER", get(F_IVAVER)); _true_data.put("IVAVER", get(F_IVAVER));
trueData.put("IVAVERC", get(F_IVAVERC)); _true_data.put("IVAVERC", get(F_IVAVERC));
trueData.put("RETTIFICHE", get(F_RETTIFICHE)); _true_data.put("RETTIFICHE", get(F_RETTIFICHE));
trueData.put("VARIMP", get(F_VARIMP)); _true_data.put("VARIMP", get(F_VARIMP));
trueData.put("RIMBORSI", get(F_RIMBORSI)); _true_data.put("RIMBORSI", get(F_RIMBORSI));
trueData.put("CRESPEC", get(F_CRESPEC)); _true_data.put("CRESPEC", get(F_CRESPEC));
trueData.put("IMPNOVER", get(F_IMPNOVER)); _true_data.put("IMPNOVER", get(F_IMPNOVER));
trueData.put("VEREFF", get(F_VEREFF)); _true_data.put("VEREFF", get(F_VEREFF));
} }
void ComLiqPerIva_mask::checkOldValue(int field, real val) void TCom_liq_per_iva_msk::check_old_value(int field, real val)
{ {
if(trueData.empty()) if(_true_data.empty())
{ {
TString key; key << get(F_ANNO) << "|" << get(F_MESE) << "|G"; TString key; key << get(F_ANNO) << "|" << get(F_MESE) << "|G";
trueData = cache().get(LF_IVALIQ, key); _true_data = cache().get(LF_IVALIQ, key);
} }
real trueVal = ZERO; real true_val = ZERO;
// Modo più intelligente di uno stupido switch case? // Modo più intelligente di uno stupido switch case?
switch(field) switch(field)
{ {
case F_TOTOPATT: case F_TOTOPATT:
trueVal = trueData.get_real("TOTOPATT"); true_val = _true_data.get_real("TOTOPATT");
break; break;
case F_TOTOPATTXC: case F_TOTOPATTXC:
trueVal = trueData.get_real("TOTOPATTXC"); true_val = _true_data.get_real("TOTOPATTXC");
break; break;
case F_TOTOPPAS: case F_TOTOPPAS:
trueVal = trueData.get_real("TOTOPPAS"); true_val = _true_data.get_real("TOTOPPAS");
break; break;
case F_TOTOPPASXC: case F_TOTOPPASXC:
trueVal = trueData.get_real("TOTOPPASXC"); true_val = _true_data.get_real("TOTOPPASXC");
break; break;
case F_IVAES: case F_IVAES:
trueVal = trueData.get_real("IVAES"); true_val = _true_data.get_real("IVAES");
break; break;
case F_IVAESXC: case F_IVAESXC:
trueVal = trueData.get_real("IVAESXC"); true_val = _true_data.get_real("IVAESXC");
break; break;
case F_IVAESDIFF: case F_IVAESDIFF:
trueVal = trueData.get_real("IVAESDIFF"); true_val = _true_data.get_real("IVAESDIFF");
break; break;
case F_IVADET: case F_IVADET:
trueVal = trueData.get_real("IVADET"); true_val = _true_data.get_real("IVADET");
break; break;
case F_IVADETXC: case F_IVADETXC:
trueVal = trueData.get_real("IVADETXC"); true_val = _true_data.get_real("IVADETXC");
break; break;
case F_IVADETDIFF: case F_IVADETDIFF:
trueVal = trueData.get_real("IVADETDIFF"); true_val = _true_data.get_real("IVADETDIFF");
break; break;
case F_IVADOV: case F_IVADOV:
trueVal = trueData.get_real("IVADOV"); true_val = _true_data.get_real("IVADOV");
break; break;
case F_IVADOVC: case F_IVADOVC:
trueVal = trueData.get_real("IVADOVC"); true_val = _true_data.get_real("IVADOVC");
break; break;
case F_DEBPREC: case F_DEBPREC:
trueVal = trueData.get_real("DEBPREC"); true_val = _true_data.get_real("DEBPREC");
break; break;
case F_CREPREC: case F_CREPREC:
trueVal = trueData.get_real("CREPREC"); true_val = _true_data.get_real("CREPREC");
break; break;
case F_CREAPREC: case F_CREAPREC:
trueVal = trueData.get_real("CREAPREC"); true_val = _true_data.get_real("CREAPREC");
break; break;
case F_VEAUE: case F_VEAUE:
trueVal = trueData.get_real("VEAUE"); true_val = _true_data.get_real("VEAUE");
break; break;
case F_CREIMP: case F_CREIMP:
trueVal = trueData.get_real("CREIMP"); true_val = _true_data.get_real("CREIMP");
break; break;
case F_INTLIQTRI: case F_INTLIQTRI:
trueVal = trueData.get_real("INTLIQTRI"); true_val = _true_data.get_real("INTLIQTRI");
break; break;
case F_ACCDOV: case F_ACCDOV:
trueVal = trueData.get_real("ACCDOV"); true_val = _true_data.get_real("ACCDOV");
break; break;
case F_IVAVER: case F_IVAVER:
trueVal = trueData.get_real("IVAVER"); true_val = _true_data.get_real("IVAVER");
break; break;
case F_IVAVERC: case F_IVAVERC:
trueVal = trueData.get_real("IVAVERC"); true_val = _true_data.get_real("IVAVERC");
break; break;
case F_RETTIFICHE: case F_RETTIFICHE:
trueVal = trueData.get_real("RETTIFICHE"); true_val = _true_data.get_real("RETTIFICHE");
break; break;
case F_VARIMP: case F_VARIMP:
trueVal = trueData.get_real("VARIMP"); true_val = _true_data.get_real("VARIMP");
break; break;
case F_RIMBORSI: case F_RIMBORSI:
trueVal = trueData.get_real("RIMBORSI"); true_val = _true_data.get_real("RIMBORSI");
break; break;
case F_CRESPEC: case F_CRESPEC:
trueVal = trueData.get_real("CRESPEC"); true_val = _true_data.get_real("CRESPEC");
break; break;
case F_IMPNOVER: case F_IMPNOVER:
trueVal = trueData.get_real("IMPNOVER"); true_val = _true_data.get_real("IMPNOVER");
break; break;
case F_VEREFF: case F_VEREFF:
trueVal = trueData.get_real("VEREFF"); true_val = _true_data.get_real("VEREFF");
break; break;
} }
set(field + 50, trueVal != val ? "X" : ""); set(field + 50, true_val != val ? "X" : "");
} }
class ComLiqPerIva_app : public TRelation_application class TCom_liq_per_iva_app : public TRelation_application
{ {
private: private:
ComLiqPerIva_mask* _mask; TCom_liq_per_iva_msk* _mask;
TRelation* _rel; TRelation* _rel;
protected: protected:
bool user_create(); bool user_create();
@ -797,15 +797,15 @@ public:
virtual TRelation* get_relation() const {return (TRelation*)_rel;} virtual TRelation* get_relation() const {return (TRelation*)_rel;}
}; };
bool ComLiqPerIva_app::user_create() bool TCom_liq_per_iva_app::user_create()
{ {
_rel = new TRelation(LF_IVALIQ); _rel = new TRelation(LF_IVALIQ);
_mask = new ComLiqPerIva_mask; _mask = new TCom_liq_per_iva_msk;
set_search_field(F_ANNO); set_search_field(F_ANNO);
return true; return true;
} }
bool ComLiqPerIva_app::user_destroy() bool TCom_liq_per_iva_app::user_destroy()
{ {
delete _mask; delete _mask;
return true; return true;
@ -813,7 +813,7 @@ bool ComLiqPerIva_app::user_destroy()
int tf0200(int argc, char* argv[]) int tf0200(int argc, char* argv[])
{ {
ComLiqPerIva_app app; TCom_liq_per_iva_app app;
app.run(argc, argv, TR("Trasferimento dati liquidazione IVA")); app.run(argc, argv, TR("Trasferimento dati liquidazione IVA"));
return 0; return 0;
} }

View File

@ -425,48 +425,49 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
{ {
TSheet_field& s = sfield(F_RIGHE); TSheet_field& s = sfield(F_RIGHE);
static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA); static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA);
TRectype recMov(LF_MOV), recRmov(LF_RMOVIVA); TRectype rec_mov(LF_MOV);
TRectype rec_rmov(LF_RMOVIVA);
recMov.put("NUMREG", numreg); rec_mov.put("NUMREG", numreg);
recRmov.put("NUMREG", numreg); rec_rmov.put("NUMREG", numreg);
mov.read(recMov); mov.read(rec_mov);
rmov.read(recRmov); rmov.read(rec_rmov);
real imponibile = ZERO, imposta = ZERO; real imponibile = ZERO, imposta = ZERO;
while(!rmov.eof()) while(!rmov.eof())
{ {
// Mi sposto se il codice IVA non è quello che mi serve // Mi sposto se il codice IVA non è quello che mi serve
while(recRmov.get("NUMREG") == numreg && recRmov.get("CODIVA") != codiva) while(rec_rmov.get("NUMREG") == numreg && rec_rmov.get("CODIVA") != codiva)
{ {
++rmov; ++rmov;
recRmov = rmov.curr(); rec_rmov = rmov.curr();
} }
if(recRmov.get("NUMREG") != numreg) break; if(rec_rmov.get("NUMREG") != numreg) break;
imponibile += recRmov.get_real("IMPONIBILE"); imponibile += rec_rmov.get_real("IMPONIBILE");
imposta += recRmov.get_real("IMPOSTA"); imposta += rec_rmov.get_real("IMPOSTA");
// Mi sposto // Mi sposto
++rmov; ++rmov;
recRmov = rmov.curr(); rec_rmov = rmov.curr();
} }
// Torno sul record per prendere i dati che mi mancano // Torno sul record per prendere i dati che mi mancano
--rmov; recRmov = rmov.curr(); --rmov; rec_rmov = rmov.curr();
row.add(recMov.get("DATAREG"), s.cid2index(A_DATAREG)); row.add(rec_mov.get("DATAREG"), s.cid2index(A_DATAREG));
row.add(recMov.get("TIPODOC"), s.cid2index(A_TIPODOC)); row.add(rec_mov.get("TIPODOC"), s.cid2index(A_TIPODOC));
row.add(recMov.get("NUMDOC"), s.cid2index(A_NUMDOC)); row.add(rec_mov.get("NUMDOC"), s.cid2index(A_NUMDOC));
row.add(recMov.get("DATADOC"), s.cid2index(A_DATADOC)); row.add(rec_mov.get("DATADOC"), s.cid2index(A_DATADOC));
row.add(recRmov.get("CODIVA"), s.cid2index(A_ALIQUOTA)); row.add(rec_rmov.get("CODIVA"), s.cid2index(A_ALIQUOTA));
row.add(imponibile, s.cid2index(A_IMPONIBILE)); row.add(imponibile, s.cid2index(A_IMPONIBILE));
row.add(imposta, s.cid2index(A_IMPOSTA)); row.add(imposta, s.cid2index(A_IMPOSTA));
// NATURA // NATURA
row.add(natura(recRmov.get("CODIVA")), s.cid2index(A_NATURA)); row.add(natura(rec_rmov.get("CODIVA")), s.cid2index(A_NATURA));
// DETR // DETR
row.add(find_detraib(recRmov.get("TIPODET")), s.cid2index(A_DETRAIB)); row.add(find_detraib(rec_rmov.get("TIPODET")), s.cid2index(A_DETRAIB));
row.add(recMov.get("TIPO"), s.cid2index(A_TIPOCF)); row.add(rec_mov.get("TIPO"), s.cid2index(A_TIPOCF));
row.add(recMov.get("CODCF"), s.cid2index(A_CODCF)); row.add(rec_mov.get("CODCF"), s.cid2index(A_CODCF));
row.add(recMov.get("OCFPI"), s.cid2index(A_OCFPI)); row.add(rec_mov.get("OCFPI"), s.cid2index(A_OCFPI));
// RSOC // RSOC
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC)); row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
// RFSO // RFSO
@ -474,7 +475,7 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
// RSOC RFSO // RSOC RFSO
row.add(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); row.add(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
// RC // RC
row.add((rev_charge(recMov.get("NUMREG"), recMov.get_date("DATAREG").year())), s.cid2index(A_REVERSE)); row.add((rev_charge(rec_mov.get("NUMREG"), rec_mov.get_date("DATAREG").year())), s.cid2index(A_REVERSE));
// AUTOFATT // AUTOFATT
if(_ditta.partita_IVA() == clifo.get("PAIV")) if(_ditta.partita_IVA() == clifo.get("PAIV"))
{ {
@ -488,8 +489,8 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
} }
row.add(recMov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA)); row.add(rec_mov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA));
row.add(recMov.get("NUMREG"), s.cid2index(A_NUMERO)); row.add(rec_mov.get("NUMREG"), s.cid2index(A_NUMERO));
} }
@ -669,20 +670,20 @@ void TSpe_check_msk::save_all()
TString key = strarr->get(s.cid2index(A_NUMERO)); key << "|"<< strarr->get(s.cid2index(A_ALIQUOTA)); TString key = strarr->get(s.cid2index(A_NUMERO)); key << "|"<< strarr->get(s.cid2index(A_ALIQUOTA));
TRectype rCust = cache().get(LF_TRASFATT, key); TRectype r_cust = cache().get(LF_TRASFATT, key);
rCust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF))); r_cust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF)));
rCust.put("CODCF", strarr->get(s.cid2index(A_CODCF))); r_cust.put("CODCF", strarr->get(s.cid2index(A_CODCF)));
rCust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI))); r_cust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI)));
rCust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC))); r_cust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC)));
rCust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC))); r_cust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC)));
rCust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG))); r_cust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG)));
rCust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC))); r_cust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC)));
rCust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE))); r_cust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE)));
rCust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA))); r_cust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA)));
rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
rCust.put("NATURA", strarr->get(s.cid2index(A_NATURA))); r_cust.put("NATURA", strarr->get(s.cid2index(A_NATURA)));
rCust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT))); r_cust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT)));
if(rCust.rewrite(trasfatt) != NOERR) if(r_cust.rewrite(trasfatt) != NOERR)
{ {
error_box("Errore durante il salvataggio del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA))); error_box("Errore durante il salvataggio del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA)));
return; return;
@ -701,11 +702,11 @@ void TSpe_check_msk::delete_all()
if(strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0 || (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0)) continue; if(strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0 || (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0)) continue;
static TLocalisamfile trasfatt(LF_TRASFATT); static TLocalisamfile trasfatt(LF_TRASFATT);
static TRectype rCust(LF_TRASFATT); static TRectype r_cust(LF_TRASFATT);
rCust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO))); r_cust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO)));
rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
if(rCust.remove(trasfatt) != NOERR) if(r_cust.remove(trasfatt) != NOERR)
{ {
error_box("Errore durante l'eliminazione del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA))); error_box("Errore durante l'eliminazione del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA)));
return; return;

View File

@ -14,30 +14,30 @@
#define CODICE_FORNITURA "IVP" #define CODICE_FORNITURA "IVP"
class TIvaSend_msk : public TAutomask class TIva_send_msk : public TAutomask
{ {
bool mese; bool _mese;
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public: public:
bool checkVariables(); bool check_variables();
bool isMese() { return mese; } bool is_mese() const { return _mese; }
TIvaSend_msk() : TAutomask("tf0500a"){} TIva_send_msk() : TAutomask("tf0500a"){}
}; };
// Definizione per chiamare metodo send dalla maschera // Definizione per chiamare metodo send dalla maschera
class TIvaSend_app : public TSkeleton_application class TIva_send_app : public TSkeleton_application
{ {
void generateNSend(TIvaSend_msk& msk) { generate(msk) && send(); } void generate_n_send(TIva_send_msk& msk) { generate(msk) && send(); }
bool generate(TIvaSend_msk& msk); bool generate(TIva_send_msk& msk);
TToken_string getTestata(TIvaSend_msk& msk); TToken_string get_testata(TIva_send_msk& msk);
public: public:
bool send(); bool send();
virtual void main_loop(); virtual void main_loop();
}; };
TIvaSend_app& app() { return (TIvaSend_app&)main_app(); } TIva_send_app& app() { return (TIva_send_app&)main_app(); }
const TRectype getAnagDitta() const TRectype get_anag_ditta()
{ {
TString codanagr = cache().get(LF_NDITTE, prefix().firm().codice(), "TIPOA"); TString codanagr = cache().get(LF_NDITTE, prefix().firm().codice(), "TIPOA");
codanagr << "|" << cache().get(LF_NDITTE, prefix().firm().codice(), "CODANAGR"); codanagr << "|" << cache().get(LF_NDITTE, prefix().firm().codice(), "CODANAGR");
@ -45,7 +45,7 @@ const TRectype getAnagDitta()
} }
// Ritorna il record richiesto di tabcom.LIM // Ritorna il record richiesto di tabcom.LIM
const TRectype getLim(int anno, int mese) const TRectype get_lim(int anno, int mese)
{ {
TString key; key << anno; TString key; key << anno;
if(mese < 10) if(mese < 10)
@ -56,7 +56,7 @@ const TRectype getLim(int anno, int mese)
} }
// Ritorna il record richiesto di ivaliq // Ritorna il record richiesto di ivaliq
const TRectype getLiq(int anno, int mese) const TRectype get_liq(int anno, int mese)
{ {
TString key; key << anno << "|"; TString key; key << anno << "|";
if(mese < 10) if(mese < 10)
@ -66,22 +66,22 @@ const TRectype getLiq(int anno, int mese)
} }
// Ritorna il record richiesto di tabcom.LIA // Ritorna il record richiesto di tabcom.LIA
const TRectype getLia(int anno) const TRectype get_lia(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 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); return cache().get("%LIA", key);
} }
TString formatCurrency(TString value) TString format_currency(const TString& value)
{ {
real app(value); const real app(value);
if(app == ZERO) if(app == ZERO)
return ",00"; return ",00";
else else
return TCurrency(app).string(); return TCurrency(app).string();
} }
bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TIva_send_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
switch(o.dlg()) switch(o.dlg())
{ {
@ -102,7 +102,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
} }
if(cache().get("%LIA", cod, "S7") == "M") if(cache().get("%LIA", cod, "S7") == "M")
{ {
mese = true; _mese = true;
enable(F_DAMESE); enable(F_DAMESE);
enable(F_AMESE); enable(F_AMESE);
disable(F_DATRIMESTRE); disable(F_DATRIMESTRE);
@ -110,7 +110,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
} }
else else
{ {
mese = false; _mese = false;
disable(F_DAMESE); disable(F_DAMESE);
disable(F_AMESE); disable(F_AMESE);
enable(F_DATRIMESTRE); enable(F_DATRIMESTRE);
@ -129,7 +129,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
if(cache().get("%LIA", cod, "S7") == "M") if(cache().get("%LIA", cod, "S7") == "M")
{ {
set(F_ANNO, i); set(F_ANNO, i);
mese = true; _mese = true;
enable(F_DAMESE); enable(F_DAMESE);
enable(F_AMESE); enable(F_AMESE);
disable(F_DATRIMESTRE); disable(F_DATRIMESTRE);
@ -139,7 +139,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
else else
{ {
set(F_ANNO, i); set(F_ANNO, i);
mese = false; _mese = false;
disable(F_DAMESE); disable(F_DAMESE);
disable(F_AMESE); disable(F_AMESE);
enable(F_DATRIMESTRE); enable(F_DATRIMESTRE);
@ -165,19 +165,19 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
return true; return true;
} }
bool TIvaSend_msk::checkVariables() bool TIva_send_msk::check_variables()
{ {
if(get(F_ANNO).empty()) if(get(F_ANNO).empty())
{ {
error_box("Inserire un anno di liquidazione"); error_box("Inserire un anno di liquidazione");
return false; return false;
} }
if((mese && get(F_DAMESE).empty() && get(F_AMESE).empty()) || (!mese && get(F_DATRIMESTRE).empty() && get(F_ATRIMESTRE).empty())) if((_mese && get(F_DAMESE).empty() && get(F_AMESE).empty()) || (!_mese && get(F_DATRIMESTRE).empty() && get(F_ATRIMESTRE).empty()))
{ {
error_box("Inserisci un periodo"); error_box("Inserisci un periodo");
return false; return false;
} }
if((mese && (get_int(F_DAMESE) > get_int(F_AMESE))) || (!mese &&(get_int(F_DATRIMESTRE) > get_int(F_ATRIMESTRE)))) 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"); error_box("Date immesse non corrette");
return false; return false;
@ -185,26 +185,26 @@ bool TIvaSend_msk::checkVariables()
return true; return true;
} }
bool TIvaSend_app::generate(TIvaSend_msk& msk) bool TIva_send_app::generate(TIva_send_msk& msk)
{ {
if(!msk.checkVariables()) if(!msk.check_variables())
return false; return false;
ofstream file; ofstream file;
TFilename path(msk.get(F_PATH)); TFilename path(msk.get(F_PATH));
TRectype rowLia = getLia(msk.get_int(F_ANNO)); TRectype row_lia = get_lia(msk.get_int(F_ANNO));
// Decido di utilizzare I10 come numero progressivo di trasmissione // Decido di utilizzare I10 come numero progressivo di trasmissione
int prog = rowLia.get_int("I14"); int prog = row_lia.get_int("I14");
if(prog == 0) if(prog == 0)
{ {
prog = getLia(msk.get_int(F_ANNO) - 1).get_int("I14"); prog = get_lia(msk.get_int(F_ANNO) - 1).get_int("I14");
} }
prog++; prog++;
TString nomeFile; nomeFile << "IT" << getAnagDitta().get("PAIV") << TIPO_FILE << prog << ".csv"; TString nome_file; nome_file << "IT" << get_anag_ditta().get("PAIV") << TIPO_FILE << prog << ".csv";
path.add(nomeFile); path.add(nome_file);
file.open(path, ios::out); file.open(path, ios::out);
if(!file.is_open()) if(!file.is_open())
@ -212,17 +212,17 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
else else
ini_set_string(CONFIG_STUDIO, "tf", "path_invio", msk.get(F_PATH)); ini_set_string(CONFIG_STUDIO, "tf", "path_invio", msk.get(F_PATH));
TToken_string testata(getTestata(msk)); const TToken_string testata(get_testata(msk));
int start = msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE)) * 3)); int start = msk.is_mese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE)) * 3));
int end = msk.isMese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE)) * 3)); const int end = msk.is_mese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE)) * 3));
for(; start <= end; start++) for(; start <= end; start++)
{ {
TRectype rowLim = getLim(msk.get_int(F_ANNO), start); // rowLim viene già usata sopra TRectype row_lim = get_lim(msk.get_int(F_ANNO), start); // row_lim viene già usata sopra
TRectype rowLiq = getLiq(msk.get_int(F_ANNO), start); TRectype row_liq = get_liq(msk.get_int(F_ANNO), start);
TToken_string riga(testata); TToken_string riga(testata);
if(msk.isMese()) if(msk.is_mese())
{ {
riga.add(start); // Mese riga.add(start); // Mese
riga.add(""); // Trimestre riga.add(""); // Trimestre
@ -230,27 +230,27 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
else else
{ {
riga.add(""); // Mese riga.add(""); // Mese
riga.add(rowLiq.get_int("TRIMESTRE") == 4 ? "5" : rowLiq.get("TRIMESTRE")); // Trimestre riga.add(row_liq.get_int("TRIMESTRE") == 4 ? "5" : row_liq.get("TRIMESTRE")); // Trimestre
} }
char subfor = rowLiq.get_bool("SUBFOR") ? 'X' : '\0'; const char subfor = row_liq.get_bool("SUBFOR") ? 'X' : '\0';
riga.add(subfor); // Flag Subfornitura riga.add(subfor); // Flag Subfornitura
riga.add(""); // Eventi eccezionali riga.add(""); // Eventi eccezionali
riga.add(formatCurrency(rowLiq.get("TOTOPATT"))); // Totale operazioni attive (al netto dell'IVA) riga.add(format_currency(row_liq.get("TOTOPATT"))); // Totale operazioni attive (al netto dell'IVA)
riga.add(formatCurrency(rowLiq.get("TOTOPPAS"))); // Totale operazioni passive (al netto dell'IVA) riga.add(format_currency(row_liq.get("TOTOPPAS"))); // Totale operazioni passive (al netto dell'IVA)
riga.add(formatCurrency(rowLiq.get("IVAES"))); // IVA esigibile riga.add(format_currency(row_liq.get("IVAES"))); // IVA esigibile
riga.add(formatCurrency(rowLiq.get("IVADET"))); // IVA detratta riga.add(format_currency(row_liq.get("IVADET"))); // IVA detratta
riga.add(formatCurrency(rowLiq.get("IVADOV"))); // IVA dovuta riga.add(format_currency(row_liq.get("IVADOV"))); // IVA dovuta
riga.add(formatCurrency(rowLiq.get("IVADOVC"))); // IVA a credito VP6 col 2 riga.add(format_currency(row_liq.get("IVADOVC"))); // IVA a credito VP6 col 2
riga.add(formatCurrency(rowLiq.get("DEBPREC"))); // Debito periodo precedente riga.add(format_currency(row_liq.get("DEBPREC"))); // Debito periodo precedente
riga.add(formatCurrency(rowLiq.get("CREPREC"))); // Credito periodo precedente riga.add(format_currency(row_liq.get("CREPREC"))); // Credito periodo precedente
riga.add(formatCurrency(rowLiq.get("CREAPREC"))); // Credito anno precedente riga.add(format_currency(row_liq.get("CREAPREC"))); // Credito anno precedente
riga.add(formatCurrency(rowLiq.get("VEAUE"))); // Versamenti auto UE riga.add(format_currency(row_liq.get("VEAUE"))); // Versamenti auto UE
riga.add(formatCurrency(rowLiq.get("CREIMP"))); // Crediti di imposta riga.add(format_currency(row_liq.get("CREIMP"))); // Crediti di imposta
riga.add(formatCurrency(rowLiq.get("INTLIQTRI"))); // Interessi dovuti per liquidazioni trimestrali riga.add(format_currency(row_liq.get("INTLIQTRI"))); // Interessi dovuti per liquidazioni trimestrali
riga.add(formatCurrency(rowLiq.get("ACCDOV"))); // Acconto dovuto riga.add(format_currency(row_liq.get("ACCDOV"))); // Acconto dovuto
riga.add(formatCurrency(rowLiq.get("IVAVER"))); // IVA da versare riga.add(format_currency(row_liq.get("IVAVER"))); // IVA da versare
riga.add(formatCurrency(rowLiq.get("IVAVERC"))); // IVA a credito VP14 col 2 riga.add(format_currency(row_liq.get("IVAVERC"))); // IVA a credito VP14 col 2
riga.add(prog); // Numero interno trasmissione riga.add(prog); // Numero interno trasmissione
riga.add(""); // Flag trasmesso riga.add(""); // Flag trasmesso
riga.add(""); // Flag accettato riga.add(""); // Flag accettato
@ -261,8 +261,8 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
file.close(); file.close();
// Aggiorno l'univoco // Aggiorno l'univoco
rowLia.put("I14", prog); row_lia.put("I14", prog);
if(rowLia.rewrite(TLocalisamfile(LF_TABCOM)) != NOERR) if(row_lia.rewrite(TLocalisamfile(LF_TABCOM)) != NOERR)
{ {
error_box("Errore aggiornamento progressivo"); error_box("Errore aggiornamento progressivo");
return false; return false;
@ -270,7 +270,7 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
return true; return true;
} }
TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk) TToken_string TIva_send_app::get_testata(TIva_send_msk& msk)
{ {
TToken_string testata; // Token string di virgole TToken_string testata; // Token string di virgole
TString cod_forn = CODICE_FORNITURA; cod_forn << msk.get(F_ANNO).right(2); TString cod_forn = CODICE_FORNITURA; cod_forn << msk.get(F_ANNO).right(2);
@ -280,21 +280,21 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
testata.add(msk.get_int(F_ANNO)); // Anno comunicazione testata.add(msk.get_int(F_ANNO)); // Anno comunicazione
testata.add(""); // Mese comunicazione testata.add(""); // Mese comunicazione
TRectype anaDitta = getAnagDitta(); TRectype ana_ditta = get_anag_ditta();
testata.add(anaDitta.get("COFI")); // Codice fiscale testata.add(ana_ditta.get("COFI")); // Codice fiscale
testata.add(anaDitta.get("PAIV")); // Partita IVA testata.add(ana_ditta.get("PAIV")); // Partita IVA
testata.add(""); // P.IVA Controllante testata.add(""); // P.IVA Controllante
testata.add(""); // Flag Liq. gruppo testata.add(""); // Flag Liq. gruppo
testata.add(""); // Flag firma comunicazione testata.add(""); // Flag firma comunicazione
int codiceCarica = atoi(prefix().firm().get("CARRAPP")); const int codice_carica = atoi(prefix().firm().get("CARRAPP"));
if(codiceCarica > 0) if(codice_carica > 0)
{ {
TString key = "F|"; key << prefix().firm().get("RAPPR"); TString key = "F|"; key << prefix().firm().get("RAPPR");
TString codFisc = cache().get(LF_ANAG, key, "COFI"); const TString cod_fisc = cache().get(LF_ANAG, key, "COFI");
testata.add(codFisc); // Cod.Fisc. Dichiarante testata.add(cod_fisc); // Cod.Fisc. Dichiarante
testata.add(codiceCarica); // Cod.Carica Dichiarante testata.add(codice_carica); // Cod.Carica Dichiarante
} }
else else
{ {
@ -312,10 +312,9 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
return testata; return testata;
} }
bool TIvaSend_app::send() bool TIva_send_app::send()
{ {
TFilename tmp; TFilename tmp = TFBASE"\\ModuliSirio.jar";
tmp = TFBASE"\\ModuliSirio.jar";
tmp.make_absolute_path(); tmp.make_absolute_path();
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir); DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
@ -328,25 +327,25 @@ bool TIvaSend_app::send()
} }
else else
{ {
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp); error_box(FR("Impossibile eseguire Java -jar %s"), static_cast<const char*>(tmp));
} }
xvt_fsys_set_dir(&old_dir); xvt_fsys_set_dir(&old_dir);
return true; return true;
} }
void TIvaSend_app::main_loop() void TIva_send_app::main_loop()
{ {
TIvaSend_msk msk; TIva_send_msk msk;
while(msk.run() == K_ENTER) while(msk.run() == K_ENTER)
{ {
generateNSend(msk); generate_n_send(msk);
} }
} }
int tf0500(int argc, char* argv[]) int tf0500(int argc, char* argv[])
{ {
TIvaSend_app app; TIva_send_app app;
app.run(argc, argv, TR("Invio dati liquidazione IVA")); app.run(argc, argv, TR("Invio dati liquidazione IVA"));
return 0; return 0;
} }

View File

@ -151,8 +151,8 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
// Se voglio solo quelli inviati e non è stato inviato o // Se voglio solo quelli inviati e non è stato inviato o
// voglio solo quelli non inviati ed è stato inviato, RUSPA! // voglio solo quelli non inviati ed è stato inviato, RUSPA!
if ((!is_sent && paf_sent) || (is_sent && paf_not_sent)) if ((is_sent && paf_sent) || (!is_sent && paf_not_sent))
return false; return true;
} }
else else
{ {
@ -183,12 +183,14 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
{ {
return true; return true;
} }
else else if(paf_sog_fat || paf_esteri)
{ {
const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM"; const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM";
if ((is_fatturabile && !paf_sog_fat) || (is_fatturabile && paf_esteri)) if ((is_fatturabile && paf_sog_fat) || (!is_fatturabile && paf_esteri))
return false; return true;
} }
return false;
} }
} else } else
@ -216,12 +218,13 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
{ {
return true; return true;
} }
else else if (paa_sog_fat || paa_esteri)
{ {
const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM"; const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM";
if ((is_fatturabile && !paa_sog_fat) || (is_fatturabile && paa_esteri)) if ((is_fatturabile && paa_sog_fat) || (!is_fatturabile && paa_esteri))
return false; return true;
} }
return false;
} }
} }