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 173
0 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 NUMREG|3|10|0|Codice esercizio
TIPO|7|1|0|Tipo <C>liente o <F>ornitore TIPO|7|1|0|Tipo <C>liente o <F>ornitore
CODCF|3|6|0|Codice CODCF|3|6|0|Codice
TIPODOC|1|2|0|Tipo documento TIPODOC|1|4|0|Tipo documento
OCCAS|1|16|0|Codice occasionali OCCAS|1|16|0|Codice occasionali
NUMDOC|1|7|0|Numero documento NUMDOC|1|7|0|Numero documento
DATAREG|5|8|0|Data Registrazione 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 * TD10: Fatt di acquisto intra beni
* TD11: Fatt di acquisto intra servizi * 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)); TRectype mov = cache().get(LF_MOV, strarr->get(_numero));
TCausale caus(mov.get("CODCAUS"), mov.get_int("ANNOIVA")); 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 // 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") if(tipodoc == "AF" || tipodoc == "BD" || tipodoc == "FF" || tipodoc == "FV" || tipodoc == "FS")
return "TD01"; return "TD01";
@ -679,15 +678,12 @@ bool TTrFa_app::create()
TString16 d; d.format("TF%05ld.db", prefix().get_codditta()); TString16 d; d.format("TF%05ld.db", prefix().get_codditta());
_dbname.add(d); _dbname.add(d);
bool create = !_dbname.exist();
_db = xvt_sql_open(_dbname, user(), "", _dbname.path()); _db = xvt_sql_open(_dbname, user(), "", _dbname.path());
if (_db == NULL) if (_db == NULL)
return false; return false;
if(create) // Questa funzione crea/verifica il DB
{ verifyDB(!_dbname.exist());
createDB();
}
return TSkeleton_application::create(); return TSkeleton_application::create();
} }
@ -700,7 +696,7 @@ bool TTrFa_app::syncronizeDB()
return true; return true;
} }
bool TTrFa_app::createDB() bool TTrFa_app::verifyDB(const bool create)
{ {
const TFilename ini = "tff.ini"; const TFilename ini = "tff.ini";
bool ok = ini.exist(); bool ok = ini.exist();
@ -717,7 +713,7 @@ bool TTrFa_app::createDB()
ok = create_table(TFF, table); ok = create_table(TFF, table);
} }
} }
if(ok) if(ok && create)
{ {
// Aggiungo il valore di default in TFNUM // Aggiungo il valore di default in TFNUM
TTrFa_record tfnum("TFNUM00F"); 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 // 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 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 rsoc = cedeprest.giuridica() || (tipo == 3 || tipo == 7 || tipo == 8 || tipo == 0);
bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica()); bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica());
@ -1366,11 +1361,12 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
TString natura = strarr->get(_natura); TString natura = strarr->get(_natura);
tff0700f.set("P7_TIPODOC", decodTipo(strarr)); tff0700f.set("P7_TIPODOC", strarr->get(_codnum));
// Controllo il tipo di esigilità // Controllo il tipo di esigilità
tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc))); tff0700f.set("P7_DATA", toDate(strarr->get(_datadoc)));
tff0700f.set("P7_NUMERO", strarr->get(_numdoc)); 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_DATAREG", toDate(strarr->get(_datareg))); // Obbligatoria nei DTR
tff0700f.set("P7_GESTIONE", ""); tff0700f.set("P7_GESTIONE", "");
ok = tff0700f.insert(); ok = tff0700f.insert();

View File

@ -173,7 +173,7 @@ SPREADSHEET F_RIGHE
BEGIN BEGIN
PROMPT 0 0 "Righe movimenti" PROMPT 0 0 "Righe movimenti"
ITEM "Data\n Reg.@8F" ITEM "Data\n Reg.@8F"
ITEM "Tipo\nDocum.@2F" ITEM "Tipo\nDocum.@5F"
ITEM "Numero\nDocum.@5F" ITEM "Numero\nDocum.@5F"
ITEM "Data\nDocum.@10" ITEM "Data\nDocum.@10"
ITEM "Aliquota@4" ITEM "Aliquota@4"
@ -313,19 +313,17 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING A_TIPODOC 2 LIST A_TIPODOC 6
BEGIN BEGIN
PROMPT 23 6 "Tipo doc. " PROMPT 23 6 "Tipo doc. "
FIELD TIPODOC ITEM "TD01|TD01"
USE %TPD ITEM "TD04|TD04"
INPUT CODTAB A_TIPODOC ITEM "TD05|TD05"
DISPLAY "Tipo " CODTAB ITEM "TD07|TD07"
DISPLAY "Descrizione @50" S0 ITEM "TD08|TD08"
OUTPUT A_TIPODOC CODTAB ITEM "TD10|TD10"
WARNING "Tipo documento errato" ITEM "TD11|TD11"
CHECKTYPE REQUIRED ITEM "ERR0|Errore"
FLAGS "U"
ADD NONE
END END
STRING A_NUMDOC 7 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) // 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); bool xvt_fsys_fupdate(const char* src, const char* dst);
// Decodifica il tipo di documento per il trasferimento fatture // 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 // Salvo un singolo record
bool saveRec(TToken_string row, bool esportato = false); bool saveRec(TToken_string row, bool esportato = false);
// Ritorno una data in formato ANSI // Ritorno una data in formato ANSI
@ -279,7 +279,7 @@ protected:
void log(int severity, const char* msg); void log(int severity, const char* msg);
bool show_log(); bool show_log();
bool syncronizeDB(); bool syncronizeDB();
bool createDB(); bool verifyDB(const bool create);
bool copySSA(); bool copySSA();
public: public:

View File

@ -196,14 +196,6 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
} }
} }
break; 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: case DLG_SAVEREC:
if(e == fe_button) if(e == fe_button)
saveAll(); saveAll();
@ -497,7 +489,7 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string* rec)
coderr << "3;"; coderr << "3;";
} }
if(decodTipo(rec) == "ERR0") if(strcmp(rec->get(_codnum), "ERR0") == 0)
{ {
ok = false; ok = false;
msgerr.cut(0) << "Non riesco a determinare il tipo di documento corretto per l'agenzia delle entrate!"; 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("RAGSOC"), _ragsoc); // Ragione sociale
row.add(cli.get("CODRFSO"), _rfso); // Codice RF/SO row.add(cli.get("CODRFSO"), _rfso); // Codice RF/SO
row.add(getRFSO(cli.get("CODRFSO")), _ragsocrfso); // Ragione Sociale 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("NUMDOC"), _numdoc); // Numero documento
row.add(movimento.get_date("DATADOC"), _datadoc); // Data documento row.add(movimento.get_date("DATADOC"), _datadoc); // Data documento
nat.cut(0) << movimento.get("NATURA"); 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("IMPONIBILE"), _imponibile); // Imponibile
row.add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta row.add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta
row.add(revCharge(movimento.get("NUMREG")), _reverse); // Rev.Charge 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 * 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_TIPOREG = CHAR(6)
P7_PROTOCOLLO = CHAR(18) P7_PROTOCOLLO = CHAR(18)
P7_POSIZIONE = NUMERIC(7,0) P7_POSIZIONE = NUMERIC(7,0)
P7_CLIFOR = CHAR(20)
P7_NRODOC = CHAR(20)
P7_DTADOC = DATE
INDEX_1 = P7_KEYPRGINVIO,P7_KEYHEADERFATT,P7_KEYBODYFATT INDEX_1 = P7_KEYPRGINVIO,P7_KEYHEADERFATT,P7_KEYBODYFATT