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
|
else
|
||||||
continue;
|
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());
|
TRectype r_cedeprest = getCli(vtipocf.as_string(), vcodcf.as_string(), voccas.as_string());
|
||||||
TAnagrafica cedeprest(tipocf.as_string()[0], codcf.as_int(), occas.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");
|
TTrFa_record tff0400f("TFF0400F");
|
||||||
tff0400f.set("P4_KEYPRGINVIO", getKey(strarr));
|
tff0400f.set("P4_KEYPRGINVIO", getKey(strarr));
|
||||||
@ -1070,8 +1089,9 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
}
|
}
|
||||||
else
|
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
|
// Ovviamente tutte le bolle doganali fatte prima del rilascio
|
||||||
if(cedeprest.codice_fiscale().empty() && strcmp(strarr->get(_codnum),"BD") == 0)
|
// 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_FISCIVAPAESE", "OO");
|
||||||
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
||||||
@ -1080,78 +1100,80 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(cedeprest.ok()) // Con bolle doganali non a posto impazzisce
|
||||||
// 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
|
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
|
||||||
// e non divisi come si fa adesso quindi farò così:
|
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
|
// Controllo se il nome è pieno
|
||||||
if(cedeprest.nome().full())
|
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)
|
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_ANANOME", nomeCog.get(1));
|
// La vita è bella faccio che scrivere
|
||||||
tff0400f.set("P4_ANACOGNOME", nomeCog.get(0));
|
tff0400f.set("P4_ANANOME", cedeprest.nome());
|
||||||
|
tff0400f.set("P4_ANACOGNOME", cedeprest.cognome());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TString cognome; cognome << nomeCog.get(0);
|
// Devo indovinare quale è il nome e il cognome
|
||||||
|
TToken_string nomeCog(cedeprest.cognome(), ' '); // Notare il separatore spazio
|
||||||
// Potrebbe essere un cognome tipo "De Fischello"
|
// Controllo se ho solo un nome e un cognome
|
||||||
// Dai quante persone hanno più di 4 parole per nome e cognome?
|
if(nomeCog.items() <= 2)
|
||||||
if(privato || (cognome.len() >= 2 && cognome.len() <= 4))
|
|
||||||
{
|
{
|
||||||
// Controllo che non sia una Ragione sociale! Tipo "ZG di Gianluigi Zibello"
|
tff0400f.set("P4_ANANOME", nomeCog.get(1));
|
||||||
// Se è segnato privato me ne sbatto anche di sto controllo
|
tff0400f.set("P4_ANACOGNOME", nomeCog.get(0));
|
||||||
if(privato || TString(nomeCog.get(1)).len() > 2)
|
}
|
||||||
|
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);
|
// Controllo che non sia una Ragione sociale! Tipo "ZG di Gianluigi Zibello"
|
||||||
TString nome;
|
// Se è segnato privato me ne sbatto anche di sto controllo
|
||||||
for(int i = 2; i < nomeCog.items(); i++)
|
if(privato || TString(nomeCog.get(1)).len() > 2)
|
||||||
nome << nomeCog.get(i) << " ";
|
{
|
||||||
tff0400f.set("P4_ANANOME", cognome);
|
cognome << " " << nomeCog.get(1);
|
||||||
tff0400f.set("P4_ANACOGNOME", nome);
|
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
|
else
|
||||||
rsoc = true;
|
rsoc = true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rsoc = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Ricontrollo!!!! rsoc potrebbe essere cambiato sopra
|
// Ricontrollo!!!! rsoc potrebbe essere cambiato sopra
|
||||||
if(rsoc)
|
if(rsoc)
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
|
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
|
||||||
}
|
}
|
||||||
TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenzaISO();
|
TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenzaISO();
|
||||||
// Valori necessari, se non ci sono salto
|
// Valori necessari, se non ci sono salto
|
||||||
if(via.full() && cap.full() && nazione.full())
|
if(via.full() && cap.full() && nazione.full())
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_SEDEIND", via);
|
tff0400f.set("P4_SEDEIND", via);
|
||||||
tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza());
|
tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza());
|
||||||
tff0400f.set("P4_SEDECAP", cap);
|
tff0400f.set("P4_SEDECAP", cap);
|
||||||
tff0400f.set("P4_SEDECOMUNE", cedeprest.comune_residenza());
|
tff0400f.set("P4_SEDECOMUNE", cedeprest.comune_residenza());
|
||||||
if(cedeprest.italiano()) // Campo ritornerebbe "EE" se estero
|
if(cedeprest.italiano()) // Campo ritornerebbe "EE" se estero
|
||||||
tff0400f.set("P4_SEDEPROV", cedeprest.provincia_residenza());
|
tff0400f.set("P4_SEDEPROV", cedeprest.provincia_residenza());
|
||||||
tff0400f.set("P4_SEDENAZ", nazione);
|
tff0400f.set("P4_SEDENAZ", nazione);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tff0400f.set("P4_GESTIONE", "D");
|
tff0400f.set("P4_GESTIONE", "D");
|
||||||
|
|
||||||
|
@ -384,6 +384,7 @@ bool TTrFa_mask::saveAll()
|
|||||||
mov.rewrite(rmov);
|
mov.rewrite(rmov);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
message_box("Salvataggio effettuato!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,12 +596,13 @@ void TTrFa_mask::load_sheet()
|
|||||||
|
|
||||||
FOR_EACH_ASSOC_OBJECT(recimposte, h, iva, rec)
|
FOR_EACH_ASSOC_OBJECT(recimposte, h, iva, rec)
|
||||||
{
|
{
|
||||||
TToken_string& row = sheet.row(-1);
|
|
||||||
TRectype movimento = *(TRectype*)rec;
|
TRectype movimento = *(TRectype*)rec;
|
||||||
|
|
||||||
// Controllo che sia un tipo documento da leggere
|
// Controllo che sia un tipo documento da leggere
|
||||||
if(!get_bool(getTipoDoc(movimento.get("TIPODOC")))) continue;
|
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
|
/* Siccome mi cambiano l'ordine ogni volta e non ho voglia di cambiare tutto ovunque
|
||||||
* basta settare i valori negli enum e lo sheet
|
* basta settare i valori negli enum e lo sheet
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user