Patch level : 12.0 996
Files correlati : tf0.exe fp0.exe fp0100a.msk fp0300a.msk tf0100a.msk tf0400a.msk Commento : Adeguamento nuovi codici fatturazione elettronica.
This commit is contained in:
parent
74c23391f1
commit
18659b8287
@ -49,6 +49,7 @@ void TParametri_mask::save_all() const
|
||||
fp_settings().set_no_sconti_fatt(get_bool(F_CHECK_NO_SCONTI));
|
||||
fp_settings().set_no_export_pronto(get_bool(F_CHECK_NO_EXPORT_PRONTO));
|
||||
fp_settings().set_data_start_fatt(get_date(F_STARTFATTEL));
|
||||
fp_settings().set_data_start_new_fatt(get_date(F_STARTNEWFATT));
|
||||
TFP_righe_custom().save_sheet(sfield(F_FORMPERS));
|
||||
TFP_nota_piede_f().save_sheet(sfield(F_NPFSHEET));
|
||||
}
|
||||
@ -229,8 +230,11 @@ bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
||||
break;
|
||||
case F_STARTFATTEL:
|
||||
if (e == fe_init)
|
||||
field(F_STARTFATTEL).set(fp_settings().get_data_start_fatt());
|
||||
o.set(fp_settings().get_data_start_fatt());
|
||||
break;
|
||||
case F_STARTNEWFATT:
|
||||
if (e == fe_init)
|
||||
o.set(TFP_settings::get_date_start_new_fatt());
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
#define F_CHECK_NO_SCONTI 212
|
||||
#define F_CHECK_NO_EXPORT_PRONTO 213
|
||||
#define F_STARTFATTEL 214
|
||||
#define F_STARTNEWFATT 215
|
||||
|
||||
#define F_SETPATCH 301
|
||||
#define F_ENPTYTABLE 302
|
||||
|
@ -97,6 +97,16 @@ BEGIN
|
||||
PROMPT 2 17 "Data inizio (default 01-01-2019)"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 19 "@BInizio nuovo tracciato Fatturazione Elettronica"
|
||||
END
|
||||
|
||||
DATE F_STARTNEWFATT
|
||||
BEGIN
|
||||
PROMPT 2 20 "Data inizio (default 01-01-2021)"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Configurazione (2) " 0 2 0 0
|
||||
|
@ -245,7 +245,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST S_CODSDI 35
|
||||
LIST S_CODSDI 40
|
||||
BEGIN
|
||||
PROMPT 41 2 "Tipo Doc SDI"
|
||||
ITEM "TD01|TD01 Fattura"
|
||||
@ -254,7 +254,18 @@ BEGIN
|
||||
ITEM "TD04|TD04 Nota di credito"
|
||||
ITEM "TD05|TD05 Nota di debito"
|
||||
ITEM "TD06|TD06 Parcella"
|
||||
ITEM "TD16|TD16 Integraz. fatt. rev.ch. interno"
|
||||
ITEM "TD17|TD17 Integ./autof. acq. servizi estero"
|
||||
ITEM "TD18|TD18 Integ. acq. beni intracomunitari"
|
||||
ITEM "TD19|TD19 Integ./autof. acq. beni ex art. 17"
|
||||
ITEM "TD20|TD20 Autofattura"
|
||||
ITEM "TD21|TD21 Autofattura per splafonamento"
|
||||
ITEM "TD22|TD22 Estrazione beni da Deposito IVA"
|
||||
ITEM "TD23|TD23 Estr. beni Deposito IVA vers. IVA"
|
||||
ITEM "TD24|TD24 Fatt. differita art.21 c.4 lett. a"
|
||||
ITEM "TD25|TD25 Fatt. differita art. 21 c.4 per.3 b"
|
||||
ITEM "TD26|TD26 Cess. beni ammort./passaggi interni"
|
||||
ITEM "TD27|TD27 Fatt. autoconsumo/cessioni gratuite"
|
||||
END
|
||||
|
||||
NUMBER S_NDOC 7
|
||||
|
@ -156,6 +156,7 @@ public:
|
||||
bool get_no_export_pronto() const;
|
||||
// Get tipidoc per NotaPiedeFattura
|
||||
const TString get_npf_tipodoc(int indx) const;
|
||||
static TDate get_date_start_new_fatt();
|
||||
|
||||
// Setters
|
||||
void set_db_indirizzo(const TString& ind) const;
|
||||
@ -176,6 +177,7 @@ public:
|
||||
void set_no_sconti_fatt(const bool no_sconti_fatt) const;
|
||||
void set_no_export_pronto(const bool no_export_pronto) const;
|
||||
void set_data_start_fatt(const char* date) const;
|
||||
void set_data_start_new_fatt(const char* date) const;
|
||||
|
||||
void set_npf(const char * tipodoc, const char* msg, int idx) const;
|
||||
void set_npf_tipodoc(const TString& tipodoc, int indx) const;
|
||||
|
@ -25,6 +25,7 @@
|
||||
#define FP_CHECK_NO_SCONTI_FATT "noscontifatt"
|
||||
#define FP_CHECK_NO_EXPORT_PRONTO "noexportpronto"
|
||||
#define FP_DATASTARTFATT "datastartfatt"
|
||||
#define FP_DATASTARTNEWFATT "startnewtracciato"
|
||||
|
||||
// Sheet fp0300
|
||||
#define FP_SLD_COD "SLD"
|
||||
@ -145,6 +146,11 @@ const TString TFP_settings::get_npf_tipodoc(int indx) const
|
||||
return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", indx);
|
||||
}
|
||||
|
||||
TDate TFP_settings::get_date_start_new_fatt()
|
||||
{
|
||||
return ini_get_date(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, "01-01-2021");
|
||||
}
|
||||
|
||||
const bool TFP_settings::get_no_sconti_fatt() const
|
||||
{
|
||||
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_SCONTI_FATT, false);
|
||||
@ -252,6 +258,11 @@ void TFP_settings::set_data_start_fatt(const char* date) const
|
||||
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, date);
|
||||
}
|
||||
|
||||
void TFP_settings::set_data_start_new_fatt(const char* date) const
|
||||
{
|
||||
ini_set_string(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, date);
|
||||
}
|
||||
|
||||
void TFP_settings::remove_para_ini(int idx)
|
||||
{
|
||||
ini_remove(FILE_CONFIG, FILE_SECTION, FP_MAIL, idx);
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "tf0.h"
|
||||
#include "tf0100b.h"
|
||||
|
||||
#include "cglib03.h" // is_split_payment()
|
||||
#include "tf0100b.h"
|
||||
#include "../fp/fplib.h"
|
||||
|
||||
/* Utilities & Main App */
|
||||
|
||||
@ -92,37 +91,37 @@ int get_tipo_doc(const TString id)
|
||||
}
|
||||
|
||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
|
||||
{
|
||||
SLIST_ELT e = NULL;
|
||||
for (e = xvt_slist_get_first(list); e; e = xvt_slist_get_next(list, e))
|
||||
{
|
||||
const char* val = xvt_slist_get(list, e, NULL);
|
||||
if (xvt_str_compare_ignoring_case(str, val) == 0)
|
||||
break;
|
||||
}
|
||||
return e;
|
||||
}
|
||||
//static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
|
||||
//{
|
||||
// SLIST_ELT e = NULL;
|
||||
// for (e = xvt_slist_get_first(list); e; e = xvt_slist_get_next(list, e))
|
||||
// {
|
||||
// const char* val = xvt_slist_get(list, e, NULL);
|
||||
// if (xvt_str_compare_ignoring_case(str, val) == 0)
|
||||
// break;
|
||||
// }
|
||||
// return e;
|
||||
//}
|
||||
|
||||
// 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 ok = false;
|
||||
if (xvt_fsys_file_exists(src))
|
||||
{
|
||||
const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
|
||||
if (tsrc > 0)
|
||||
{
|
||||
long tdst = 0;
|
||||
if (xvt_fsys_file_exists(dst))
|
||||
tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
|
||||
if (tsrc > tdst)
|
||||
ok = xvt_fsys_fcopy(src, dst) != 0;
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
//bool xvt_fsys_fupdate(const char* src, const char* dst)
|
||||
//{
|
||||
// bool ok = false;
|
||||
// if (xvt_fsys_file_exists(src))
|
||||
// {
|
||||
// const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
|
||||
// if (tsrc > 0)
|
||||
// {
|
||||
// long tdst = 0;
|
||||
// if (xvt_fsys_file_exists(dst))
|
||||
// tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
|
||||
// if (tsrc > tdst)
|
||||
// ok = xvt_fsys_fcopy(src, dst) != 0;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return ok;
|
||||
//}
|
||||
|
||||
/* Ritorno il tipo di documento
|
||||
* TD01: Fattura
|
||||
@ -784,7 +783,13 @@ bool TTrFa_app::send(TTrFa_mask* msk)
|
||||
// Mi carico i miei dati
|
||||
TSheet_field& sheet = msk->sfield(F_RIGHE);
|
||||
// Booleano per appendere i record nel db
|
||||
|
||||
|
||||
if(!check_new_codici_fp(sheet))
|
||||
{
|
||||
warning_box("Attenzione sono stati selezionati dei codici tipo documento\no natura iva non validi per questo periodo.");
|
||||
return false;
|
||||
}
|
||||
|
||||
/***********************************************************************************************
|
||||
* Esporto
|
||||
***********************************************************************************************/
|
||||
@ -1546,6 +1551,30 @@ void TTrFa_app::main_loop()
|
||||
}
|
||||
}
|
||||
|
||||
bool TTrFa_app::is_new_tipodoc(const TString& tipodoc)
|
||||
{
|
||||
return tipodoc != "TD01" && tipodoc != "TD04" && tipodoc != "TD05" && tipodoc != "TD07" && tipodoc != "TD08" && tipodoc != "TD10" && tipodoc != "TD11";
|
||||
}
|
||||
|
||||
bool TTrFa_app::is_new_natura(const TString& natura)
|
||||
{
|
||||
return natura.full() && natura != "N1" && natura != "N2" && natura != "N3" && natura != "N4" && natura != "N5" && natura != "N6" && natura != "N7";
|
||||
}
|
||||
|
||||
bool TTrFa_app::check_new_codici_fp(const TSheet_field& sheet)
|
||||
{
|
||||
const TDate start = fp_settings().get_date_start_new_fatt();
|
||||
FOR_EACH_SHEET_ROW(sheet, nr, row)
|
||||
{
|
||||
const TString tipodoc = row->get(cid2index(A_TIPODOCAE));
|
||||
const TDate datadoc = row->get(cid2index(A_DATADOC));
|
||||
const TString natura = row->get(cid2index(A_NATURA));
|
||||
if ((is_new_tipodoc(tipodoc) || is_new_natura(natura)) && datadoc < start)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTrFa_app::destroy()
|
||||
{
|
||||
xvt_sql_close(_db); _db = NULL;
|
||||
|
@ -412,12 +412,23 @@ LIST A_TIPODOCAE 6
|
||||
BEGIN
|
||||
PROMPT 23 6 "Tipo doc. "
|
||||
ITEM "TD01|TD01"
|
||||
ITEM "TD02|TD02"
|
||||
ITEM "TD03|TD03"
|
||||
ITEM "TD04|TD04"
|
||||
ITEM "TD05|TD05"
|
||||
ITEM "TD07|TD07"
|
||||
ITEM "TD08|TD08"
|
||||
ITEM "TD10|TD10"
|
||||
ITEM "TD11|TD11"
|
||||
ITEM "TD06|TD06"
|
||||
ITEM "TD16|TD16"
|
||||
ITEM "TD17|TD17"
|
||||
ITEM "TD18|TD18"
|
||||
ITEM "TD19|TD19"
|
||||
ITEM "TD20|TD20"
|
||||
ITEM "TD21|TD21"
|
||||
ITEM "TD22|TD22"
|
||||
ITEM "TD23|TD23"
|
||||
ITEM "TD24|TD24"
|
||||
ITEM "TD25|TD25"
|
||||
ITEM "TD26|TD26"
|
||||
ITEM "TD27|TD27"
|
||||
ITEM "ERR0|Errore"
|
||||
END
|
||||
|
||||
@ -436,17 +447,34 @@ BEGIN
|
||||
CHEKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST A_NATURA 1 35
|
||||
LIST A_NATURA 4 81
|
||||
BEGIN
|
||||
PROMPT 20 7 "Natura IVA"
|
||||
ITEM "|IVA ordinaria"
|
||||
ITEM "N1|N1 - IVA esclusa ex art 15"
|
||||
ITEM "N2|N2 - IVA non soggetta"
|
||||
ITEM "N3|N3 - IVA non imponibile"
|
||||
ITEM "N4|N4 - IVA esente"
|
||||
ITEM "N5|N5 - IVA in regime del margine"
|
||||
ITEM "N6|N6 - IVA in reverse charge"
|
||||
ITEM "N7|N7 - IVA assolta in altro stato U3"
|
||||
ITEM "N1|N1 IVA esclusa ex art 15"
|
||||
ITEM "N2|N2 IVA non soggetta (DEPRECATA)"
|
||||
ITEM "N2.1|N2.1 Non soggette ad IVA ai sensi degli artt. da 7 a 7-septies del DPR 633/72"
|
||||
ITEM "N2.2|N2.2 Non soggette - altri casi"
|
||||
ITEM "N3|N3 IVA non imponibile (DEPRECATA)"
|
||||
ITEM "N3.1|N3.1 Non impon. - esportazioni"
|
||||
ITEM "N3.2|N3.2 Non impon. - cessioni intracomunitarie"
|
||||
ITEM "N3.3|N3.3 Non impon. - cessioni verso San Marino"
|
||||
ITEM "N3.4|N3.4 Non impon. - operazioni assimilate alle cessioni all'esportazione"
|
||||
ITEM "N3.5|N3.5 Non impon. - a seguito di dichiarazioni d'intento"
|
||||
ITEM "N3.6|N3.6 Non impon. - altre operazioni che non concorrono alla formazioni del plafond"
|
||||
ITEM "N4|N4 IVA esente"
|
||||
ITEM "N5|N5 IVA in regime del margine"
|
||||
ITEM "N6|N6 IVA in reverse charge (DEPRECATA)"
|
||||
ITEM "N6.1|N6.1 Invers. cont. - cessione di rottami e altri materiali di recupero"
|
||||
ITEM "N6.2|N6.2 Invers. cont. - cessione di oro e argento puro"
|
||||
ITEM "N6.3|N6.3 Invers. cont. - subappalto nel settore edile"
|
||||
ITEM "N6.4|N6.4 Invers. cont. - cessione di fabbricati"
|
||||
ITEM "N6.5|N6.5 Invers. cont. - cessione di telefoni cellulari"
|
||||
ITEM "N6.6|N6.6 Invers. cont. - cessione di prodotti elettronici"
|
||||
ITEM "N6.7|N6.7 Invers. cont. - prestazioni comparto edile e settori connessi"
|
||||
ITEM "N6.8|N6.8 Invers. cont. - operazioni settore energetico"
|
||||
ITEM "N6.9|N6.9 Invers. cont. - altri casi"
|
||||
ITEM "N7|N7 IVA assolta in altro stato U3"
|
||||
END
|
||||
|
||||
STRING A_ALIQUOTA 4
|
||||
|
@ -105,9 +105,9 @@ TString get_tipo_doc(int id);
|
||||
int get_tipo_doc(TString id);
|
||||
|
||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
||||
//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);
|
||||
//bool xvt_fsys_fupdate(const char* src, const char* dst);
|
||||
// Decodifica il tipo di documento per il trasferimento fatture
|
||||
const char * decod_tipo(TToken_string* strarr);
|
||||
// Salvo un singolo record
|
||||
@ -313,6 +313,9 @@ public:
|
||||
bool create() override;
|
||||
bool destroy() override;
|
||||
void main_loop() override;
|
||||
static bool is_new_tipodoc(const TString& tipodoc);
|
||||
static bool is_new_natura(const TString& natura);
|
||||
static bool check_new_codici_fp(const TSheet_field& sheet);
|
||||
bool send(TTrFa_mask* msk);
|
||||
|
||||
TTrFa_app() : _log(nullptr) {}
|
||||
|
@ -10,8 +10,7 @@
|
||||
#include <execp.h> // TExternal_app
|
||||
#include <dongle.h> // dongle()
|
||||
|
||||
#include "..\cg\cglib01.h"
|
||||
#include "..\cg\cglib03.h"
|
||||
#include "..\cg\cglib.h"
|
||||
#include <mov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <recarray.h> // cache()
|
||||
#include "../fe/felib.h" // TAnagrafica
|
||||
#include "modaut.h"
|
||||
#include <cglib.h>
|
||||
|
||||
typedef enum{
|
||||
def_sfield = F_RIGHE, // Sheetfield di default (tutte le colonne)
|
||||
|
@ -274,12 +274,23 @@ LIST A_TIPODOCAE 6
|
||||
BEGIN
|
||||
PROMPT 23 6 "Tipo doc. "
|
||||
ITEM "TD01|TD01"
|
||||
ITEM "TD02|TD02"
|
||||
ITEM "TD03|TD03"
|
||||
ITEM "TD04|TD04"
|
||||
ITEM "TD05|TD05"
|
||||
ITEM "TD07|TD07"
|
||||
ITEM "TD08|TD08"
|
||||
ITEM "TD10|TD10"
|
||||
ITEM "TD11|TD11"
|
||||
ITEM "TD06|TD06"
|
||||
ITEM "TD16|TD16"
|
||||
ITEM "TD17|TD17"
|
||||
ITEM "TD18|TD18"
|
||||
ITEM "TD19|TD19"
|
||||
ITEM "TD20|TD20"
|
||||
ITEM "TD21|TD21"
|
||||
ITEM "TD22|TD22"
|
||||
ITEM "TD23|TD23"
|
||||
ITEM "TD24|TD24"
|
||||
ITEM "TD25|TD25"
|
||||
ITEM "TD26|TD26"
|
||||
ITEM "TD27|TD27"
|
||||
ITEM "ERR0|Errore"
|
||||
END
|
||||
|
||||
@ -298,17 +309,34 @@ BEGIN
|
||||
CHEKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST A_NATURA 1 35
|
||||
LIST A_NATURA 4 81
|
||||
BEGIN
|
||||
PROMPT 20 7 "Natura IVA"
|
||||
ITEM "|IVA ordinaria"
|
||||
ITEM "N1|N1 - IVA esclusa ex art 15"
|
||||
ITEM "N2|N2 - IVA non soggetta"
|
||||
ITEM "N3|N3 - IVA non imponibile"
|
||||
ITEM "N4|N4 - IVA esente"
|
||||
ITEM "N5|N5 - IVA in regime del margine"
|
||||
ITEM "N6|N6 - IVA in reverse charge"
|
||||
ITEM "N7|N7 - IVA assolta in altro stato U3"
|
||||
ITEM "N1|N1 IVA esclusa ex art 15"
|
||||
ITEM "N2|N2 IVA non soggetta (DEPRECATA)"
|
||||
ITEM "N2.1|N2.1 Non soggette ad IVA ai sensi degli artt. da 7 a 7-septies del DPR 633/72"
|
||||
ITEM "N2.2|N2.2 Non soggette - altri casi"
|
||||
ITEM "N3|N3 IVA non imponibile (DEPRECATA)"
|
||||
ITEM "N3.1|N3.1 Non impon. - esportazioni"
|
||||
ITEM "N3.2|N3.2 Non impon. - cessioni intracomunitarie"
|
||||
ITEM "N3.3|N3.3 Non impon. - cessioni verso San Marino"
|
||||
ITEM "N3.4|N3.4 Non impon. - operazioni assimilate alle cessioni all'esportazione"
|
||||
ITEM "N3.5|N3.5 Non impon. - a seguito di dichiarazioni d'intento"
|
||||
ITEM "N3.6|N3.6 Non impon. - altre operazioni che non concorrono alla formazioni del plafond"
|
||||
ITEM "N4|N4 IVA esente"
|
||||
ITEM "N5|N5 IVA in regime del margine"
|
||||
ITEM "N6|N6 IVA in reverse charge (DEPRECATA)"
|
||||
ITEM "N6.1|N6.1 Invers. cont. - cessione di rottami e altri materiali di recupero"
|
||||
ITEM "N6.2|N6.2 Invers. cont. - cessione di oro e argento puro"
|
||||
ITEM "N6.3|N6.3 Invers. cont. - subappalto nel settore edile"
|
||||
ITEM "N6.4|N6.4 Invers. cont. - cessione di fabbricati"
|
||||
ITEM "N6.5|N6.5 Invers. cont. - cessione di telefoni cellulari"
|
||||
ITEM "N6.6|N6.6 Invers. cont. - cessione di prodotti elettronici"
|
||||
ITEM "N6.7|N6.7 Invers. cont. - prestazioni comparto edile e settori connessi"
|
||||
ITEM "N6.8|N6.8 Invers. cont. - operazioni settore energetico"
|
||||
ITEM "N6.9|N6.9 Invers. cont. - altri casi"
|
||||
ITEM "N7|N7 IVA assolta in altro stato U3"
|
||||
END
|
||||
|
||||
STRING A_ALIQUOTA 4
|
||||
|
Loading…
x
Reference in New Issue
Block a user