Patch level : 12.0 486

Files correlati     : tf
Commento            : 
- Aggiornato DataBase
- Aggiunto in esportazione Numero Documento Esteso
- Messo al posto del Tipo Documento di Campo quelli dell'Agenzia delle Entrate (es. F01 -> TD01)
- Aggiornati tracciati

git-svn-id: svn://10.65.10.50/branches/R_10_00@24234 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-12-13 14:26:18 +00:00
parent e3d3c18006
commit 587e673e75
7 changed files with 35 additions and 38 deletions

View File

@ -1,3 +1,3 @@
173
0
$trasfatt|15|15|112|0|Tabella trasferimento fatture|||
$trasfatt|0|2|114|0|Tabella trasferimento fatture|||

View File

@ -3,7 +3,7 @@
NUMREG|3|10|0|Codice esercizio
TIPO|7|1|0|Tipo <C>liente o <F>ornitore
CODCF|3|6|0|Codice
TIPODOC|1|2|0|Tipo documento
TIPODOC|1|4|0|Tipo documento
OCCAS|1|16|0|Codice occasionali
NUMDOC|1|7|0|Numero documento
DATAREG|5|8|0|Data Registrazione

View File

@ -133,11 +133,10 @@ bool xvt_fsys_fupdate(const char* src, const char* dst)
* TD10: Fatt di acquisto intra beni
* TD11: Fatt di acquisto intra servizi
*/
const char* decodTipo(TToken_string* strarr)
const char* decodTipo(TToken_string* strarr, const TString& tipodoc)
{
TRectype mov = cache().get(LF_MOV, strarr->get(_numero));
TCausale caus(mov.get("CODCAUS"), mov.get_int("ANNOIVA"));
TString tipodoc; tipodoc << strarr->get(_codnum);
// Le autofatture possono essere solo di tipo TDO1 e le bolle doganali nel dubbio pure
if(tipodoc == "AF" || tipodoc == "BD" || tipodoc == "FF" || tipodoc == "FV" || tipodoc == "FS")
return "TD01";
@ -679,15 +678,12 @@ bool TTrFa_app::create()
TString16 d; d.format("TF%05ld.db", prefix().get_codditta());
_dbname.add(d);
bool create = !_dbname.exist();
_db = xvt_sql_open(_dbname, user(), "", _dbname.path());
if (_db == NULL)
return false;
if(create)
{
createDB();
}
// Questa funzione crea/verifica il DB
verifyDB(!_dbname.exist());
return TSkeleton_application::create();
}
@ -700,7 +696,7 @@ bool TTrFa_app::syncronizeDB()
return true;
}
bool TTrFa_app::createDB()
bool TTrFa_app::verifyDB(const bool create)
{
const TFilename ini = "tff.ini";
bool ok = ini.exist();
@ -717,7 +713,7 @@ bool TTrFa_app::createDB()
ok = create_table(TFF, table);
}
}
if(ok)
if(ok && create)
{
// Aggiungo il valore di default in TFNUM
TTrFa_record tfnum("TFNUM00F");
@ -1213,7 +1209,6 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
{
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
int tipo = cedeprest.inserimento_in_allegato();//r_cedeprest.get_char(CLI_ALLEG);
int pippo = 'C';
bool rsoc = cedeprest.giuridica() || (tipo == 3 || tipo == 7 || tipo == 8 || tipo == 0);
bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica());
@ -1366,11 +1361,12 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
TString natura = strarr->get(_natura);
tff0700f.set("P7_TIPODOC", decodTipo(strarr));
tff0700f.set("P7_TIPODOC", strarr->get(_codnum));
// Controllo il tipo di esigilità
tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc)));
tff0700f.set("P7_NUMERO", strarr->get(_numdoc));
tff0700f.set("P7_NRODOC", cache().get(LF_MOV, strarr->get(_numero), "NUMDOCEXT"));
tff0700f.set("P7_DATAREG", toDate(strarr->get(_datareg))); // Obbligatoria nei DTR
tff0700f.set("P7_GESTIONE", "");
ok = tff0700f.insert();

View File

@ -173,7 +173,7 @@ SPREADSHEET F_RIGHE
BEGIN
PROMPT 0 0 "Righe movimenti"
ITEM "Data\n Reg.@8F"
ITEM "Tipo\nDocum.@2F"
ITEM "Tipo\nDocum.@5F"
ITEM "Numero\nDocum.@5F"
ITEM "Data\nDocum.@10"
ITEM "Aliquota@4"
@ -313,19 +313,17 @@ BEGIN
FLAGS "D"
END
STRING A_TIPODOC 2
LIST A_TIPODOC 6
BEGIN
PROMPT 23 6 "Tipo doc. "
FIELD TIPODOC
USE %TPD
INPUT CODTAB A_TIPODOC
DISPLAY "Tipo " CODTAB
DISPLAY "Descrizione @50" S0
OUTPUT A_TIPODOC CODTAB
WARNING "Tipo documento errato"
CHECKTYPE REQUIRED
FLAGS "U"
ADD NONE
ITEM "TD01|TD01"
ITEM "TD04|TD04"
ITEM "TD05|TD05"
ITEM "TD07|TD07"
ITEM "TD08|TD08"
ITEM "TD10|TD10"
ITEM "TD11|TD11"
ITEM "ERR0|Errore"
END
STRING A_NUMDOC 7

View File

@ -105,7 +105,7 @@ static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
bool xvt_fsys_fupdate(const char* src, const char* dst);
// Decodifica il tipo di documento per il trasferimento fatture
const char * decodTipo(TToken_string* strarr);
const char * decodTipo(TToken_string* strarr, const TString& tipodoc);
// Salvo un singolo record
bool saveRec(TToken_string row, bool esportato = false);
// Ritorno una data in formato ANSI
@ -279,7 +279,7 @@ protected:
void log(int severity, const char* msg);
bool show_log();
bool syncronizeDB();
bool createDB();
bool verifyDB(const bool create);
bool copySSA();
public:

View File

@ -196,14 +196,6 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
}
}
break;
case A_TIPODOC:
// Controllo che il tipo di documento rientri in quelli del filtro
if(e == fe_modify && !get_bool(getTipoDoc(o.get())))
{
error_box("Attenzione! il tipo di documento scelto non fa parte dei filtri correnti!");
o.set("");
}
break;
case DLG_SAVEREC:
if(e == fe_button)
saveAll();
@ -497,7 +489,7 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string* rec)
coderr << "3;";
}
if(decodTipo(rec) == "ERR0")
if(strcmp(rec->get(_codnum), "ERR0") == 0)
{
ok = false;
msgerr.cut(0) << "Non riesco a determinare il tipo di documento corretto per l'agenzia delle entrate!";
@ -671,7 +663,6 @@ void TTrFa_mask::load_sheet()
row.add(cli.get("RAGSOC"), _ragsoc); // Ragione sociale
row.add(cli.get("CODRFSO"), _rfso); // Codice RF/SO
row.add(getRFSO(cli.get("CODRFSO")), _ragsocrfso); // Ragione Sociale RF/SO
row.add(movimento.get("TIPODOC"), _codnum); // Tipo documento
row.add(movimento.get("NUMDOC"), _numdoc); // Numero documento
row.add(movimento.get_date("DATADOC"), _datadoc); // Data documento
nat.cut(0) << movimento.get("NATURA");
@ -681,6 +672,14 @@ void TTrFa_mask::load_sheet()
row.add(movimento.get_real("IMPONIBILE"), _imponibile); // Imponibile
row.add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta
row.add(revCharge(movimento.get("NUMREG")), _reverse); // Rev.Charge
// Calcolo il tipo documento alla fine per sicurezza
static TString4 td;
td.cut(0) << movimento.get("TIPODOC");
if(isCust.full() && td.starts_with("TD"))
row.add(td, _codnum); // Tipo documento
else
row.add(decodTipo(&row, td), _codnum); // Tipo documento
/*
* Possono esistere movimenti custom dove il cliente ha una partita IVA propria

View File

@ -126,6 +126,10 @@ P7_NUMEROREG = NUMERIC(20,0)
P7_TIPOREG = CHAR(6)
P7_PROTOCOLLO = CHAR(18)
P7_POSIZIONE = NUMERIC(7,0)
P7_CLIFOR = CHAR(20)
P7_NRODOC = CHAR(20)
P7_DTADOC = DATE
INDEX_1 = P7_KEYPRGINVIO,P7_KEYHEADERFATT,P7_KEYBODYFATT