diff --git a/src/tf/tf0100.cpp b/src/tf/tf0100.cpp index 0ff11ce39..2ef6d12d0 100644 --- a/src/tf/tf0100.cpp +++ b/src/tf/tf0100.cpp @@ -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()); }