From 44940f556f88bb620a3f7549d4167f1ee87aacb7 Mon Sep 17 00:00:00 2001 From: mtollari Date: Mon, 17 Jul 2017 08:15:41 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:=2012.?= =?UTF-8?q?0=20420=20Files=20correlati=20=20=20=20=20:=20tf=20Commento=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20:=20-=20Aggiunta=20gestione=20?= =?UTF-8?q?fornitore=20collegato=20al=20movimento=20nelle=20bolle=20dogana?= =?UTF-8?q?li,=20se=20si=20tratta=20di=20un=20movimento=20custom=20verr?= =?UTF-8?q?=C3=A0=20utilizzato=20quello=20nello=20sheet=20altrimenti=20sar?= =?UTF-8?q?=C3=A0=20presente=20nel=20movimento=20-=20Sistemato=20bug=20nel?= =?UTF-8?q?lo=20sheet,=20adesso=20viene=20controllato=20prima=20della=20cr?= =?UTF-8?q?eazione=20di=20una=20nuova=20riga=20se=20il=20documento=20?= =?UTF-8?q?=C3=A8=20valido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/branches/R_10_00@23953 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/tf/tf0100.cpp | 146 ++++++++++++++++++++++++++-------------------- src/tf/tf0101.cpp | 6 +- 2 files changed, 88 insertions(+), 64 deletions(-) diff --git a/src/tf/tf0100.cpp b/src/tf/tf0100.cpp index 9042af829..970a95b31 100644 --- a/src/tf/tf0100.cpp +++ b/src/tf/tf0100.cpp @@ -1045,10 +1045,29 @@ bool TTrFa_app::tff0400(TSheet_field& sheet) else continue; - TVariant tipocf = strarr->get(_tipocf), codcf = strarr->get(_codcf), occas = strarr->get(_occas); + TVariant vtipocf = strarr->get(_tipocf), vcodcf = strarr->get(_codcf), voccas = strarr->get(_occas); - TRectype r_cedeprest = getCli(tipocf.as_string(), codcf.as_string(), occas.as_string()); - TAnagrafica cedeprest(tipocf.as_string()[0], codcf.as_int(), occas.as_string()); + TRectype r_cedeprest = getCli(vtipocf.as_string(), vcodcf.as_string(), voccas.as_string()); + TAnagrafica cedeprest; + + // 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) + { + 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, strarr->get(_numero), "CFBOLLADOG"); + r_cedeprest = getCli("F", codcf, ""); + cedeprest.init('F', atol(codcf)); + } + else + { + cedeprest.init(vtipocf.as_string()[0], vcodcf.as_int(), voccas.as_string()); + } TTrFa_record tff0400f("TFF0400F"); tff0400f.set("P4_KEYPRGINVIO", getKey(strarr)); @@ -1070,8 +1089,9 @@ bool TTrFa_app::tff0400(TSheet_field& sheet) } else { - // Se non ho nemmeno un dato e sto processando una bolla doganale metto OO e 11 "9" in id paese e id fiscale iva - if(cedeprest.codice_fiscale().empty() && strcmp(strarr->get(_codnum),"BD") == 0) + // Ovviamente tutte le bolle doganali fatte prima del rilascio + // non avranno questo campo compilato e quindi dovrò passare la partita IVA "OO99999999999" + if(strcmp(strarr->get(_codnum),"BD") == 0) { tff0400f.set("P4_FISCIVAPAESE", "OO"); tff0400f.set("P4_FISCIVACOD", "99999999999"); @@ -1080,78 +1100,80 @@ bool TTrFa_app::tff0400(TSheet_field& sheet) tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale()); } } - - // Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale - char tipo = r_cedeprest.get_char(CLI_ALLEG); - bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8'); - bool privato = tipo == '6'; - - if (!rsoc) + if(cedeprest.ok()) // Con bolle doganali non a posto impazzisce { - // 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ì: + // Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale + char tipo = r_cedeprest.get_char(CLI_ALLEG); + bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8'); + bool privato = tipo == '6'; + + 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ì: - // Controllo se il nome è pieno - if(cedeprest.nome().full()) - { - // La vita è bella faccio che scrivere - tff0400f.set("P4_ANANOME", cedeprest.nome()); - tff0400f.set("P4_ANACOGNOME", cedeprest.cognome()); - } - else - { - // Devo indovinare quale è il nome e il cognome - TToken_string nomeCog(cedeprest.cognome(), ' '); // Notare il separatore spazio - // Controllo se ho solo un nome e un cognome - if(nomeCog.items() <= 2) + // Controllo se il nome è pieno + if(cedeprest.nome().full()) { - tff0400f.set("P4_ANANOME", nomeCog.get(1)); - tff0400f.set("P4_ANACOGNOME", nomeCog.get(0)); + // La vita è bella faccio che scrivere + tff0400f.set("P4_ANANOME", cedeprest.nome()); + tff0400f.set("P4_ANACOGNOME", cedeprest.cognome()); } else { - TString cognome; cognome << nomeCog.get(0); - - // Potrebbe essere un cognome tipo "De Fischello" - // Dai quante persone hanno più di 4 parole per nome e cognome? - if(privato || (cognome.len() >= 2 && cognome.len() <= 4)) + // Devo indovinare quale è il nome e il cognome + TToken_string nomeCog(cedeprest.cognome(), ' '); // Notare il separatore spazio + // Controllo se ho solo un nome e un cognome + if(nomeCog.items() <= 2) { - // Controllo che non sia una Ragione sociale! Tipo "ZG di Gianluigi Zibello" - // Se è segnato privato me ne sbatto anche di sto controllo - if(privato || TString(nomeCog.get(1)).len() > 2) + tff0400f.set("P4_ANANOME", nomeCog.get(1)); + tff0400f.set("P4_ANACOGNOME", nomeCog.get(0)); + } + else + { + TString cognome; cognome << nomeCog.get(0); + + // Potrebbe essere un cognome tipo "De Fischello" + // Dai quante persone hanno più di 4 parole per nome e cognome? + if(privato || (cognome.len() >= 2 && cognome.len() <= 4)) { - cognome << " " << nomeCog.get(1); - TString nome; - for(int i = 2; i < nomeCog.items(); i++) - nome << nomeCog.get(i) << " "; - tff0400f.set("P4_ANANOME", cognome); - tff0400f.set("P4_ANACOGNOME", nome); + // Controllo che non sia una Ragione sociale! Tipo "ZG di Gianluigi Zibello" + // Se è segnato privato me ne sbatto anche di sto controllo + if(privato || TString(nomeCog.get(1)).len() > 2) + { + cognome << " " << nomeCog.get(1); + TString nome; + for(int i = 2; i < nomeCog.items(); i++) + nome << nomeCog.get(i) << " "; + tff0400f.set("P4_ANANOME", cognome); + tff0400f.set("P4_ANACOGNOME", nome); + } + else + rsoc = true; } else rsoc = true; } - else - rsoc = true; } } - } - // Ricontrollo!!!! rsoc potrebbe essere cambiato sopra - if(rsoc) - { - tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale()); - } - TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenzaISO(); - // Valori necessari, se non ci sono salto - if(via.full() && cap.full() && nazione.full()) - { - tff0400f.set("P4_SEDEIND", via); - tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza()); - tff0400f.set("P4_SEDECAP", cap); - tff0400f.set("P4_SEDECOMUNE", cedeprest.comune_residenza()); - if(cedeprest.italiano()) // Campo ritornerebbe "EE" se estero - tff0400f.set("P4_SEDEPROV", cedeprest.provincia_residenza()); - tff0400f.set("P4_SEDENAZ", nazione); + // Ricontrollo!!!! rsoc potrebbe essere cambiato sopra + if(rsoc) + { + tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale()); + } + TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenzaISO(); + // Valori necessari, se non ci sono salto + if(via.full() && cap.full() && nazione.full()) + { + tff0400f.set("P4_SEDEIND", via); + tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza()); + tff0400f.set("P4_SEDECAP", cap); + tff0400f.set("P4_SEDECOMUNE", cedeprest.comune_residenza()); + if(cedeprest.italiano()) // Campo ritornerebbe "EE" se estero + tff0400f.set("P4_SEDEPROV", cedeprest.provincia_residenza()); + tff0400f.set("P4_SEDENAZ", nazione); + } } tff0400f.set("P4_GESTIONE", "D"); diff --git a/src/tf/tf0101.cpp b/src/tf/tf0101.cpp index 743228be5..34adb0cc5 100644 --- a/src/tf/tf0101.cpp +++ b/src/tf/tf0101.cpp @@ -384,6 +384,7 @@ bool TTrFa_mask::saveAll() mov.rewrite(rmov); } } + message_box("Salvataggio effettuato!"); return true; } @@ -595,12 +596,13 @@ void TTrFa_mask::load_sheet() FOR_EACH_ASSOC_OBJECT(recimposte, h, iva, rec) { - TToken_string& row = sheet.row(-1); TRectype movimento = *(TRectype*)rec; - // Controllo che sia un tipo documento da leggere if(!get_bool(getTipoDoc(movimento.get("TIPODOC")))) continue; + // Creo una nuova riga nello sheet + TToken_string& row = sheet.row(-1); + /* Siccome mi cambiano l'ordine ogni volta e non ho voglia di cambiare tutto ovunque * basta settare i valori negli enum e lo sheet */