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);
// Per le bolle doganali devo fare sempre questo giro
bool foundBolla = false;
if(strcmp(strarr->get(_codnum),"BD") == 0)
bool foundBolla = strcmp(strarr->get(_codnum),"BD") == 0, foundBollaCli = false;
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())
{
foundBolla = true;
foundBollaCli = true;
checkClifo << "F" << cfbolladog;
}
}
if(!foundBolla)
if(!foundBollaCli)
{
static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas);
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
// per il fornitore a cui è riferita la bolla doganale
if(strcmp(strarr->get(_codnum),"BD") == 0)
if(foundBollaCli)
{
TString codcf;
// 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, "");
r_cedeprest = getCli("F", cfbolladog, "");
cedeprest.init(r_cedeprest);
}
else
@ -1182,35 +1177,32 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
tff0400f.set("P4_FISCIVACOD", _ditta.partita_IVA());
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_FISCIVACOD", cedeprest.partita_IVA());
}
else
{
// 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(strcmp(strarr->get(_codnum),"BD") == 0 && bd2017())
// Se è un estero non CEE prendo nella partita IVA metto l'identificativo fiscale
if(cedeprest.estero_non_CEE())
{
tff0400f.set("P4_FISCIVAPAESE", "OO");
tff0400f.set("P4_FISCIVACOD", "99999999999");
tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
tff0400f.set("P4_FISCIVACOD", cedeprest.codice_fiscale());
}
else
{
// 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());
}
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);
bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8' || tipo == '\0');
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
// 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
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());
}