Patch level : 12.0 456

Files correlati     : tf
Commento            : Ottimizzata gestione bolle doganali

git-svn-id: svn://10.65.10.50/branches/R_10_00@24110 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-09-27 09:36:23 +00:00
parent 49c150e489
commit 30069e6b4d

View File

@ -1117,17 +1117,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 = false; bool foundBolla = strcmp(strarr->get(_codnum),"BD") == 0, foundBollaCli = false;
if(strcmp(strarr->get(_codnum),"BD") == 0) static TString cfbolladog;
if(foundBolla)
{ {
TString cfbolladog = cache().get(LF_MOV, strarr->get_long(_numero), "CFBOLLADOG"); // 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);
if(!cfbolladog.blank()) if(!cfbolladog.blank())
{ {
foundBolla = true; foundBollaCli = true;
checkClifo << "F" << cfbolladog; checkClifo << "F" << cfbolladog;
} }
} }
if(!foundBolla) if(!foundBollaCli)
{ {
static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas); static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas);
if(tempOcfpi.blank()) if(tempOcfpi.blank())
@ -1154,16 +1156,9 @@ 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(strcmp(strarr->get(_codnum),"BD") == 0) if(foundBollaCli)
{ {
TString codcf; r_cedeprest = getCli("F", cfbolladog, "");
// Attenzione! Se è una riga inserita a mano dall'utente prendo lo stesso il fornitore della riga!
int movimento = strarr->get_int(_numero);
if(movimento >= MOV_CUSTOM)
codcf << strarr->get(_codcf);
else
codcf = cache().get(LF_MOV, movimento, "CFBOLLADOG");
r_cedeprest = getCli("F", codcf, "");
cedeprest.init(r_cedeprest); cedeprest.init(r_cedeprest);
} }
else else
@ -1182,35 +1177,32 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
tff0400f.set("P4_FISCIVACOD", _ditta.partita_IVA()); tff0400f.set("P4_FISCIVACOD", _ditta.partita_IVA());
tff0400f.set("P4_CODFISC", _ditta.codice_fiscale()); tff0400f.set("P4_CODFISC", _ditta.codice_fiscale());
} }
else // Fattura normale else // Fattura normale, lascio più volte la funzione con il nome del campo per leggibilità
{ {
if (cedeprest.stato_partita_IVA().full() && cedeprest.partita_IVA().full()) // Ovviamente tutte le bolle doganali fatte prima del rilascio
// non avranno questo campo compilato e quindi dovrò passare la partita IVA "OO99999999999"
// 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_FISCIVACOD", "99999999999");
}
else if (cedeprest.stato_partita_IVA().full() && cedeprest.partita_IVA().full())
{ {
tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA()); tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
tff0400f.set("P4_FISCIVACOD", cedeprest.partita_IVA()); tff0400f.set("P4_FISCIVACOD", cedeprest.partita_IVA());
} }
else else
{ {
// Ovviamente tutte le bolle doganali fatte prima del rilascio // Se è un estero non CEE prendo nella partita IVA metto l'identificativo fiscale
// non avranno questo campo compilato e quindi dovrò passare la partita IVA "OO99999999999" if(cedeprest.estero_non_CEE())
// Controllo anche di essere in una data entro il 31/12/2017, dopo tale data sto ragionamento non è valido
if(strcmp(strarr->get(_codnum),"BD") == 0 && bd2017())
{ {
tff0400f.set("P4_FISCIVAPAESE", "OO"); tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
tff0400f.set("P4_FISCIVACOD", "99999999999"); tff0400f.set("P4_FISCIVACOD", cedeprest.codice_fiscale());
} }
else else
{ {
// Se è un estero non CEE prendo nella partita IVA metto l'identificativo fiscale tff0400f.set("P4_CODFISC", cedeprest.codice_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());
}
} }
} }
} }
@ -1220,8 +1212,12 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
char tipo = r_cedeprest.get_char(CLI_ALLEG); char tipo = r_cedeprest.get_char(CLI_ALLEG);
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'; bool privato = tipo == '6';
if (!rsoc) if(foundBolla && !foundBollaCli)
{
tff0400f.set("P4_ANADENOM", "Dato Assente");
}
else if (!rsoc)
{ {
// Bisogna fare un ragionamento più complesso, esistono ancora record salvati con Nome e Cognome nella prima parte // Bisogna fare un ragionamento più complesso, esistono ancora record salvati con Nome e Cognome nella prima parte
// e non divisi come si fa adesso quindi farò così: // e non divisi come si fa adesso quindi farò così:
@ -1277,7 +1273,10 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
} }
// Ricontrollo!!!! rsoc potrebbe essere cambiato sopra // Ricontrollo!!!! rsoc potrebbe essere cambiato sopra
if(rsoc) // Devo trovare rsoc e:
// 1 - Non trovo la bolla
// 2 - Trovo il cliente
if(rsoc && (!foundBolla || foundBollaCli))
{ {
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale()); tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
} }