Patch level : 12.0 420
Files correlati : tf Commento : - Aggiunta gestione fornitore collegato al movimento nelle bolle doganali, se si tratta di un movimento custom verrà utilizzato quello nello sheet altrimenti sarà presente nel movimento - Sistemato bug nello sheet, adesso viene controllato prima della creazione di una nuova riga se il documento è valido git-svn-id: svn://10.65.10.50/branches/R_10_00@23953 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f69f3bdaad
commit
44940f556f
@ -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");
|
||||
|
||||
|
@ -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
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user