Patch level : 12.0 428

Files correlati     : tf
Commento            : 
- Aggiornati tracciati
- Aggiunta gestione tipi documento "SD", ma non è completamente corretto in quanto non possiamo sapere bene a quale movimento ci stiamo riferendo
- Corretta creazione TRectype RFSO
- Reso obbligatorio dati sede cliente/fornitore
- Aggiunto controllo preventivo (bloccante) decodifica tipo documenti

git-svn-id: svn://10.65.10.50/branches/R_10_00@23966 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-07-20 14:39:52 +00:00
parent 9c2be96942
commit b7389c60b2
4 changed files with 56 additions and 24 deletions

View File

@ -230,8 +230,34 @@ const char* decodTipo(TToken_string* strarr)
return "TD04";
else if(tipodoc == "ND")
return "TD05";
else
return tipodoc;
else if(tipodoc == "SD")
{
// Devo capire a che documento è associato
TRelation r(LF_MOV);
TRectype filter(LF_RMOV);
filter.put("NUMREG", strarr->get(_numero));
TCursor c(&r, "", 1, &filter, &filter);
for(c = 0; c.pos() < c.items(); ++c)
{
TRectype r = c.curr();
if(r.get("tipoc") == "C")
{
if(r.get("SEZIONE") == "D")
return "TD01";
else
return "TD04";
} else
if(r.get("tipoc") == "F")
{
if(r.get("SEZIONE") == "A")
return "TD01";
else
return "TD04";
}
}
}
// Nel caso ritorno un valore che da errore
return "ERR0";
}
/* Salvo il record modificato in TFCustom */
@ -962,7 +988,7 @@ bool TTrFa_app::tff0200(TString key)
if(via.full() && cap.full() && nazione.full())
{
tff0200f.set("P2_SEDEIND", via);
tff0200f.set("P2_SEDENRCIVICO", _ditta.civico_residenza());
tff0200f.set("P2_SEDENRCIVICO", _ditta.civico_residenza().left(8));
tff0200f.set("P2_SEDECAP", cap);
tff0200f.set("P2_SEDECOMUNE", _ditta.comune_residenza());
if(_ditta.italiano()) // Campo ritornerebbe "EE" se estero
@ -973,14 +999,14 @@ bool TTrFa_app::tff0200(TString key)
myrfso = "";
if(haveRFSO(myrfso))
{
TRectype r_ana = cache().get(LF_ANAG, TString(myrfso[0]) << myrfso.sub(1));
TRectype r_ana = cache().get(LF_ANAG, TString(myrfso.left(1)) << "|" << myrfso.sub(1));
if(r_ana.get_char("TIPORFSO") == 'S') // Stabile Organizzazione
{
TAnagrafica rfso(r_ana);
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenza_ISO();
tff0200f.set("P2_STABORGIND", via);
tff0200f.set("P2_STABORGNRCIVICO", rfso.civico_residenza());
tff0200f.set("P2_STABORGNRCIVICO", rfso.civico_residenza().left(8));
tff0200f.set("P2_STABORGCAP", cap);
tff0200f.set("P2_STABORGCOMUNE", rfso.comune_residenza());
if(rfso.italiano())
@ -1174,18 +1200,14 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
{
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
}
TString via = cedeprest.via_residenza(), cap = cedeprest.CAP_residenza(), nazione = cedeprest.stato_residenza_ISO();
// Valori necessari, se non ci sono salto
if(via.full() && (cap.full() || cedeprest.estero()) && 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_SEDEIND", cedeprest.via_residenza());
tff0400f.set("P4_SEDENRCIVICO", cedeprest.civico_residenza().left(8));
tff0400f.set("P4_SEDECAP", cedeprest.CAP_residenza());
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", cedeprest.stato_residenza_ISO());
}
tff0400f.set("P4_GESTIONE", "D");
@ -1197,8 +1219,8 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
TString rfso = strarr->get(_rfso);
if(rfso.full())
{
TRectype r_ana = cache().get(LF_ANAG, TString(myrfso[0]) << rfso.sub(1));
ok = tff3100(strarr, r_ana);
TRectype r_ana = cache().get(LF_ANAG, TString(rfso.left(1)) << "|" << rfso.sub(1));
ok = r_ana.full() && tff3100(strarr, r_ana);
}
// E dopo l'inserimento del tff3100
@ -1315,7 +1337,7 @@ bool TTrFa_app::tff3100(TToken_string* strarr, TRectype r_ana)
TString via = rfso.via_residenza(), cap = rfso.CAP_residenza(), nazione = rfso.stato_residenza_ISO();
tff3100f.set("PH_STABORGIND", via);
tff3100f.set("PH_STABORGNRCIVICO", rfso.civico_residenza());
tff3100f.set("PH_STABORGNRCIVICO", rfso.civico_residenza().left(8));
tff3100f.set("PH_STABORGCAP", cap);
tff3100f.set("PH_STABORGCOMUNE", rfso.comune_residenza());
if(rfso.italiano())

View File

@ -55,6 +55,8 @@ enum filter_fatt
#define FLAG_FORZATO "F"
#define FLAG_INVIATO "I"
#define SPESOMETROBASE "ModuliSirio"
#define REG_ATT 1
#define REG_PAS 2
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
* per avere l'inserimento nello sheet corretto */

View File

@ -486,6 +486,14 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string* rec)
coderr << "3;";
}
if(decodTipo(rec) == "ERR")
{
ok = false;
msgerr.cut(0) << "Non riesco a determinare il tipo di documento corretto per l'agenzia delle entrate!";
printError(stampa, numMov, numDoc, msgerr);
coderr << "4;";
}
// Flaggo il record con i messaggi di errore
rec->add(coderr, _coderr); // Sempre potrebbero esserci errori non bloccanti
@ -510,7 +518,7 @@ bool TTrFa_mask::checkNotEmpty()
return sheet.full();
}
void TTrFa_mask::theFinalCheckDown()
void TTrFa_mask::theFinalCheckDown() // IT'S THE FINAL CHECKDOOOOOOOWN! WE'RE CHECKING TOGEEEETHEEEEER!!!!
{
TSheet_field& sheet = sfield(F_RIGHE);
TAssoc_array cliDocs;

View File

@ -51,7 +51,7 @@ P2_STABORGPROV = CHAR(2)
P2_STABORGNAZ = CHAR(2)
P2_ISCRREAUFF = CHAR(2)
P2_ISCRREANUM = CHAR(20)
P2_ISCRREACAP = CHAR(5)
P2_ISCRREACAP = NUMERIC(15,2)
P2_ISCRREASOCIOU = CHAR(2)
P2_ISCRREASLIQUID = CHAR(2)
P2_CONTATTITELEF = CHAR(12)
@ -66,7 +66,7 @@ INDEX_1 = P2_KEYPRGINVIO
[TFF0300F]
P3_KEYPRGINVIO = CHAR(10)
P3_FISCIVAPAESE = CHAR(2)
P3_FISCIVAPAESE = CHAR(2)
P3_FISCIVACODICE = CHAR(28)
P3_CODFISC = CHAR(16)
P3_ANADENOMI = CHAR(80)
@ -138,7 +138,7 @@ PL_KEYBODYDETT = CHAR(20)
PL_ALIQUOTAIVA = NUMERIC(6,2)
PL_NATURA = CHAR(2)
PL_SPESEACCESS = NUMERIC(15,2)
PL_ARROTONDAM = NUMERIC(15,2)
PL_ARROTONDAM = NUMERIC(21,2)
PL_IMPONIBILE = NUMERIC(15,2)
PL_IMPOSTA = NUMERIC(15,2)
PL_ESIGIVA = CHAR(1)