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:
Simone Palacino 2020-09-17 17:09:13 +02:00
parent 74c23391f1
commit 18659b8287
12 changed files with 190 additions and 63 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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) {}

View File

@ -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>

View File

@ -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)

View File

@ -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