Patch level : 12.0 1036

Files correlati     : fp0.exe fp0100a.msk fp0300a.msk
Commento :

Aggiunto il regime speciale 3 al reverse charge
This commit is contained in:
Alessandro Bonazzi 2021-02-28 21:51:58 +01:00
parent 8db92bba96
commit 3b54d64097
10 changed files with 283 additions and 263 deletions

View File

@ -35,40 +35,40 @@ TParametri_mask::TParametri_mask(const char * n) : TAutomask(n)
void TParametri_mask::save_all() const void TParametri_mask::save_all() const
{ {
fp_settings().set_db_indirizzo(get(F_INDIRIZZO)); set_db_indirizzo(get(F_INDIRIZZO));
fp_settings().set_db_database(get(F_DATABASE)); set_db_database(get(F_DATABASE));
fp_settings().set_db_user(get(F_USER)); set_db_user(get(F_USER));
fp_settings().set_db_password(get(F_PASSWORD)); set_db_password(get(F_PASSWORD));
fp_settings().set_fld_dest(get(F_FLDDEST)); set_fld_dest(get(F_FLDDEST));
fp_settings().set_fld_dest_usr(get(F_FLDUSRDEST)); set_fld_dest_usr(get(F_FLDUSRDEST));
fp_settings().set_cofi_tras(get(F_COFI)); set_cofi_tras(get(F_COFI));
fp_settings().set_gest_alleg(get_bool(F_ESPORTAALLEG)); set_gest_alleg(get_bool(F_ESPORTAALLEG));
fp_settings().set_allega_fat(get_bool(F_ESPORTADOC)); set_allega_fat(get_bool(F_ESPORTADOC));
fp_settings().set_f8(get_bool(F_F8)); set_f8(get_bool(F_F8));
fp_settings().set_check_not_block(get_bool(F_CHECK_NOT_BLOCK)); set_check_not_block(get_bool(F_CHECK_NOT_BLOCK));
fp_settings().set_no_sconti_fatt(get_bool(F_CHECK_NO_SCONTI)); set_no_sconti_fatt(get_bool(F_CHECK_NO_SCONTI));
fp_settings().set_no_export_pronto(get_bool(F_CHECK_NO_EXPORT_PRONTO)); set_no_export_pronto(get_bool(F_CHECK_NO_EXPORT_PRONTO));
fp_settings().set_data_start_fatt(get_date(F_STARTFATTEL)); set_data_start_fatt(get_date(F_STARTFATTEL));
fp_settings().set_data_start_new_fatt(get_date(F_STARTNEWFATT)); set_data_start_new_fatt(get_date(F_STARTNEWFATT));
TFP_righe_custom().save_sheet(sfield(F_FORMPERS)); TFP_righe_custom().save_sheet(sfield(F_FORMPERS));
TFP_nota_piede_f().save_sheet(sfield(F_NPFSHEET)); TFP_nota_piede_f().save_sheet(sfield(F_NPFSHEET));
} }
void TParametri_mask::load_all() void TParametri_mask::load_all()
{ {
set(F_INDIRIZZO, fp_settings().get_db_indirizzo()); set(F_INDIRIZZO, get_db_indirizzo());
set(F_DATABASE, fp_settings().get_db_database()); set(F_DATABASE, get_db_database());
set(F_USER, fp_settings().get_db_user()); set(F_USER, get_db_user());
set(F_PASSWORD, fp_settings().get_db_password()); set(F_PASSWORD, get_db_password());
set(F_FLDDEST, fp_settings().get_fld_dest()); set(F_FLDDEST, get_fld_dest());
set(F_FLDUSRDEST, fp_settings().get_fld_dest_usr()); set(F_FLDUSRDEST, get_fld_dest_usr());
set(F_COFI, fp_settings().get_cofi_tras()); set(F_COFI, get_cofi_tras());
set(F_ESPORTAALLEG, fp_settings().get_gest_alleg()); set(F_ESPORTAALLEG, get_gest_alleg());
set(F_ESPORTADOC, fp_settings().get_allega_fat()); set(F_ESPORTADOC, get_allega_fat());
set(F_F8, fp_settings().is_f8()); set(F_F8, is_f8());
set(F_CHECK_NOT_BLOCK, fp_settings().get_check_not_block()); set(F_CHECK_NOT_BLOCK, get_check_not_block());
set(F_CHECK_NO_SCONTI, fp_settings().get_no_sconti_fatt()); set(F_CHECK_NO_SCONTI, get_no_sconti_fatt());
set(F_CHECK_NO_EXPORT_PRONTO, fp_settings().get_no_export_pronto()); set(F_CHECK_NO_EXPORT_PRONTO, get_no_export_pronto());
TFP_righe_custom().load_sheet(sfield(F_FORMPERS)); TFP_righe_custom().load_sheet(sfield(F_FORMPERS));
TFP_nota_piede_f().load_sheet(sfield(F_NPFSHEET)); TFP_nota_piede_f().load_sheet(sfield(F_NPFSHEET));
} }
@ -230,11 +230,11 @@ bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jo
break; break;
case F_STARTFATTEL: case F_STARTFATTEL:
if (e == fe_init) if (e == fe_init)
o.set(fp_settings().get_data_start_fatt()); o.set(get_data_start_fatt());
break; break;
case F_STARTNEWFATT: case F_STARTNEWFATT:
if (e == fe_init) if (e == fe_init)
o.set(TFP_settings::get_date_start_new_fatt()); o.set(get_date_start_new_fatt());
default: default:
break; break;
} }
@ -270,6 +270,7 @@ void TParametri_ditta::main_loop()
ad << ip << "@" << db; ad << ip << "@" << db;
SSimple_query s(ad, usr, psw, TSDB_MSSQL); SSimple_query s(ad, usr, psw, TSDB_MSSQL);
if (s.sq_is_connect()) if (s.sq_is_connect())
{ {
pm.save_all(); pm.save_all();

View File

@ -5,7 +5,7 @@ TOOLBAR "topbar" 0 0 0 2
ENDPAGE ENDPAGE
PAGE "Configurazione FP (1)" 0 2 0 0 PAGE "Parametri generali" 0 2 0 0
GROUPBOX DLG_NULL 78 6 GROUPBOX DLG_NULL 78 6
BEGIN BEGIN
@ -109,7 +109,7 @@ END
ENDPAGE ENDPAGE
PAGE "Configurazione (2) " 0 2 0 0 PAGE "Personalizzazioni" 0 2 0 0
SPREADSHEET F_FORMPERS 60 6 SPREADSHEET F_FORMPERS 60 6
BEGIN BEGIN
@ -155,7 +155,7 @@ END
ENDPAGE ENDPAGE
PAGE "Assistenza FP" 0 2 0 0 PAGE "Funzioni di assistenza" 0 2 0 0
BUTTON F_SETPATCH 15 2 BUTTON F_SETPATCH 15 2
BEGIN BEGIN
@ -185,56 +185,56 @@ ENDPAGE
ENDMASK ENDMASK
PAGE "Elementi spredsheet" -1 -1 60 12 PAGE "Parametri tipi Documento" -1 -1 60 12
STRING S_TIPODOC 4 STRING SC_TIPODOC 4
BEGIN BEGIN
PROMPT 1 1 "Tipo doc " PROMPT 1 1 "Tipo doc "
HELP "Lasciare libero per tutti i tipo documento" HELP "Lasciare libero per tutti i tipo documento"
USE %TIP USE %TIP
SELECT S3[37,40]!="" SELECT S3[37,40]!=""
INPUT CODTAB S_TIPODOC INPUT CODTAB SC_TIPODOC
DISPLAY "Codice@10" CODTAB DISPLAY "Codice@10" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo SDI@10" S3[37,40] DISPLAY "Tipo SDI@10" S3[37,40]
OUTPUT S_TIPODOC CODTAB OUTPUT SC_TIPODOC CODTAB
FLAG "UPA" FLAG "UPA"
END END
STRING S_TIPORIGA 4 STRING SC_TIPORIGA 4
BEGIN BEGIN
PROMPT 1 2 "Tipo riga " PROMPT 1 2 "Tipo riga "
USE %TRI USE %TRI
INPUT CODTAB S_TIPORIGA INPUT CODTAB SC_TIPORIGA
DISPLAY "Codice@10" CODTAB DISPLAY "Codice@10" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT S_TIPORIGA CODTAB OUTPUT SC_TIPORIGA CODTAB
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING S_QTA 10 STRING SC_QTA 10
BEGIN BEGIN
PROMPT 1 3 "Qta" PROMPT 1 3 "Qta"
END END
STRING S_PREZZO 10 STRING SC_PREZZO 10
BEGIN BEGIN
PROMPT 1 4 "Prezzo" PROMPT 1 4 "Prezzo"
USE %FRR USE %FRR
INPUT CODTAB S_PREZZO INPUT CODTAB SC_PREZZO
DISPLAY "Codice@10" CODTAB DISPLAY "Codice@10" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT S_PREZZO CODTAB OUTPUT SC_PREZZO CODTAB
END END
STRING S_IMPONIBILE 10 STRING SC_IMPONIBILE 10
BEGIN BEGIN
PROMPT 1 5 "Imponibile" PROMPT 1 5 "Imponibile"
USE %FRR USE %FRR
INPUT CODTAB S_IMPONIBILE INPUT CODTAB SC_IMPONIBILE
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT S_IMPONIBILE CODTAB OUTPUT SC_IMPONIBILE CODTAB
END END
ENDPAGE ENDPAGE
@ -259,17 +259,17 @@ ENDMASK
PAGE "Elementi NPF" -1 -1 60 12 PAGE "Elementi NPF" -1 -1 60 12
STRING S_DOC 4 STRING S_DOCPF 4
BEGIN BEGIN
PROMPT 1 1 "Tipo doc " PROMPT 1 1 "Tipo doc "
HELP "Lasciare libero per tutti i tipo documento" HELP "Lasciare libero per tutti i tipo documento"
USE %TIP USE %TIP
SELECT S3[37,40]!="" SELECT S3[37,40]!=""
INPUT CODTAB S_TIPODOC INPUT CODTAB S_DOCPF
DISPLAY "Codice@10" CODTAB DISPLAY "Codice@10" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo SDI@10" S3[37,40] DISPLAY "Tipo SDI@10" S3[37,40]
OUTPUT S_TIPODOC CODTAB OUTPUT S_DOCPF CODTAB
FLAG "UPA" FLAG "UPA"
END END

View File

@ -176,11 +176,11 @@ void TCC_mask::save_all()
cfven.zero(); cfven.zero();
cfven.put(CFV_TIPOCF, get(F_TIPOCF)); cfven.put(CFV_TIPOCF, get(F_TIPOCF));
cfven.put(CFV_CODCF, riga->get(xvtil_cid2index(S_CODCF))); cfven.put(CFV_CODCF, riga->get(cid2index(S_CODCF)));
const int err = cfven.read(); const int err = cfven.read();
if (err == NOERR || err == _iskeynotfound) if (err == NOERR || err == _iskeynotfound)
{ {
cfven.put(CFV_PADESTIN, riga->get(xvtil_cid2index(S_CODSDI))); cfven.put(CFV_PADESTIN, riga->get(cid2index(S_CODSDI)));
if (cfven.rewrite_write() != NOERR) if (cfven.rewrite_write() != NOERR)
{ {
TString msg = "Fallito salvataggio record in CFVEN "; TString msg = "Fallito salvataggio record in CFVEN ";

View File

@ -56,7 +56,7 @@ public:
disable(DLG_SAVEREC); disable(DLG_SAVEREC);
disable(DLG_FINDREC); disable(DLG_FINDREC);
load_all_fields(); load_all_fields();
const TDate data_inizio = fp_settings().get_date_start_new_fatt(); const TDate data_inizio = get_date_start_new_fatt();
if (today < data_inizio) if (today < data_inizio)
{ {
@ -82,9 +82,10 @@ void TPA_mask::save_all_fields() const
selected_docs.save_sheet(sfield(F_DOCUMENTI_TIPO)); selected_docs.save_sheet(sfield(F_DOCUMENTI_TIPO));
// Salvo le impostazioni // Salvo le impostazioni
fp_settings().set_esp_pri_empty(get_bool(F_SETDEFCOD)); set_esp_pri_empty(get_bool(F_SETDEFCOD));
fp_settings().set_esp_est(get_bool(F_SETCODEST)); set_send_all_rifs(get_bool(F_SENDALLRIFS));
fp_settings().set_esp_est_cod(get(F_VALCODEST)); set_esp_est(get_bool(F_SETCODEST));
set_esp_est_cod(get(F_VALCODEST));
} }
void TPA_mask::force_reload_sheet() void TPA_mask::force_reload_sheet()
@ -143,9 +144,10 @@ void TPA_mask::load_all_fields()
sheet.force_update(); sheet.force_update();
sheet.show(); sheet.show();
set(F_SETDEFCOD, fp_settings().get_esp_pri_empty()); set(F_SETDEFCOD, get_esp_pri_empty());
set(F_SETCODEST, fp_settings().get_esp_est()); set(F_SENDALLRIFS, get_send_all_rifs());
set(F_VALCODEST, fp_settings().get_esp_est_cod()); set(F_SETCODEST, get_esp_est());
set(F_VALCODEST, get_esp_est_cod());
} }
void TPA_mask::fill() void TPA_mask::fill()
@ -164,7 +166,7 @@ void TPA_mask::fill()
TString filter_selected = get(F_FATTSEL); TString filter_selected = get(F_FATTSEL);
enable(DLG_OK, filter_selected.empty() || filter_selected == "E"); enable(DLG_OK, filter_selected.empty() || filter_selected == "E");
enable(DLG_SAVEREC, (fp_settings().is_f8() && filter_selected == "X") || filter_selected == "D"); enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D");
enable(DLG_FINDREC, filter_selected == "D"); enable(DLG_FINDREC, filter_selected == "D");
enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty()); enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty());
@ -193,8 +195,8 @@ void TPA_mask::fill()
int fat_no_cod = 0; int fat_no_cod = 0;
// Disabilito la colonna del codice ufficio // Disabilito la colonna del codice ufficio
docs.enable_column(docs.cid2index(S_UFFICIO), false); docs.enable_column(cid2index(S_UFFICIO), false);
const TDate data_inizio = fp_settings().get_date_start_new_fatt(); const TDate data_inizio = get_date_start_new_fatt();
for (bool okc = rec.move_first(); okc; okc = rec.move_next()) for (bool okc = rec.move_first(); okc; okc = rec.move_next())
{ {
@ -331,6 +333,7 @@ void TPA_mask::connect_keys()
warning_box("Impossibile allineare le chiavi di uno sheet vuoto!"); warning_box("Impossibile allineare le chiavi di uno sheet vuoto!");
return; return;
} }
TProgress_monitor pi(sht.items(), "Esportazione Fatture"); TProgress_monitor pi(sht.items(), "Esportazione Fatture");
FOR_EACH_ARRAY_ROW(sht, r, riga) FOR_EACH_ARRAY_ROW(sht, r, riga)
{ {
@ -445,6 +448,7 @@ void TPA_mask::export_paf()
static const int col_cod_sdi = sfield(F_DOCS).cid2index(S_CODSDI); static const int col_cod_sdi = sfield(F_DOCS).cid2index(S_CODSDI);
TString_array& sht = sfield(F_DOCS).rows_array(); TString_array& sht = sfield(F_DOCS).rows_array();
TDoc_fp elab; TDoc_fp elab;
//elab.set_cache_insert(true); //elab.set_cache_insert(true);
if (!sht.empty()) if (!sht.empty())
{ {
@ -661,6 +665,7 @@ void TPA_mask::set_err_paf()
if (!sht.empty()) if (!sht.empty())
{ {
TProgress_monitor pi(sht.items(), "Cambio stato fatture"); TProgress_monitor pi(sht.items(), "Cambio stato fatture");
FOR_EACH_ARRAY_ROW(sht, r, riga) FOR_EACH_ARRAY_ROW(sht, r, riga)
{ {
if (!pi.add_status()) if (!pi.add_status())

View File

@ -5,9 +5,11 @@
#define F_SETDEFCOD 404 #define F_SETDEFCOD 404
#define F_SETCODEST 405 #define F_SETCODEST 405
#define F_VALCODEST 406 #define F_VALCODEST 406
#define F_SENDALLRIFS 407
#define END_MASK 499 #define END_MASK 499
#define F_DOCUMENTI_TIPO 301 #define F_DOCUMENTI_TIPO 301
#define S_SELCODNUM 101 #define S_SELCODNUM 101

View File

@ -83,7 +83,7 @@ BEGIN
ITEM "Tipo SDI" ITEM "Tipo SDI"
END END
GROUPBOX DLG_NULL 78 4 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
PROMPT 1 12 "@BConfigurazione Esportazione" PROMPT 1 12 "@BConfigurazione Esportazione"
END END
@ -94,16 +94,21 @@ BEGIN
PROMPT 2 13 "Esporta privati con codice '0000000' se privi sia di pec che di cod. destinatario" PROMPT 2 13 "Esporta privati con codice '0000000' se privi sia di pec che di cod. destinatario"
END END
BOOLEAN F_SENDALLRIFS
BEGIN
PROMPT 2 14 "Esporta tutti i dati dei documenti di riferimento"
END
BOOLEAN F_SETCODEST BOOLEAN F_SETCODEST
BEGIN BEGIN
PROMPT 2 14 "Esporta esteri con codice" PROMPT 2 15 "Esporta esteri con codice"
MESSAGE TRUE ENABLE,F_VALCODEST MESSAGE TRUE ENABLE,F_VALCODEST
MESSAGE FALSE DISABLE,F_VALCODEST MESSAGE FALSE DISABLE,F_VALCODEST
END END
STRING F_VALCODEST 7 STRING F_VALCODEST 7
BEGIN BEGIN
PROMPT 40 14 "" PROMPT 40 15 ""
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAG "D" FLAG "D"
END END

View File

@ -10,7 +10,7 @@
#include <reputils.h> #include <reputils.h>
#include <vector> #include <vector>
#include <memory> #include <memory>
#include "cglib.h" #include "../cg/cglib.h"
#include <map> #include <map>
#define SQL_FLD "sql/" #define SQL_FLD "sql/"
@ -32,6 +32,8 @@ bool run_fp_psw_mask();
bool check_tables(); bool check_tables();
// Compila il numero di documento per la scrittura sui paf // Compila il numero di documento per la scrittura sui paf
TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc); TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc);
// Genera la chiave per i paf // Genera la chiave per i paf
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt); bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt);
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt); bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt);
@ -130,72 +132,61 @@ public:
TFP_nota_piede_f(); TFP_nota_piede_f();
}; };
class TFP_settings : public TObject // TFP_settings functions
{ const TString& get_db_indirizzo();
public: const TString& get_db_database();
// Getters const TString& get_db_str_con();
const TString& get_db_indirizzo() const; const TString& get_db_user();
const TString& get_db_database() const; const TString& get_db_password();
const TString& get_db_str_con() const; const TString& get_fld_dest();
const TString& get_db_user() const; const TString& get_fld_dest_usr();
const TString& get_db_password() const; const TString& get_cofi_tras();
const TString& get_fld_dest() const; const TDate get_data_start_fatt();
const TString& get_fld_dest_usr() const; const bool get_gest_alleg();
const TString& get_cofi_tras() const; const bool get_allega_fat();
const TString& get_data_start_fatt() const; const bool get_esp_pri_empty();
const bool get_gest_alleg() const; const bool get_send_all_rifs();
const bool get_allega_fat() const; const bool get_esp_est();
const bool get_esp_pri_empty() const; const TString& get_esp_est_cod();
const bool get_esp_est() const; const bool is_f8();
const TString& get_esp_est_cod() const; const bool get_check_not_block();
const bool is_f8() const; const TString& get_body_mail(int idx = -1);
const bool get_check_not_block() const; const TString& get_npf(const char* tipodoc, int idx);
const TString& get_body_mail(int idx = -1) const; const bool get_no_sconti_fatt();
const TString& get_npf(const char* tipodoc, int idx) const; bool get_no_export_pronto();
const bool get_no_sconti_fatt() const;
bool get_no_export_pronto() const;
// Get tipidoc per NotaPiedeFattura // Get tipidoc per NotaPiedeFattura
const TString get_npf_tipodoc(int indx) const; const TString & get_npf_tipodoc(int indx);
static TDate get_date_start_new_fatt(); TDate get_date_start_new_fatt();
// Setters // Setters
void set_db_indirizzo(const TString& ind) const; void set_db_indirizzo(const TString& ind);
void set_db_database(const TString& db) const; void set_db_database(const TString& db);
void set_db_user(const TString& usr) const; void set_db_user(const TString& usr);
void set_db_password(const TString& psw) const; void set_db_password(const TString& psw);
void set_fld_dest(const TString& fld_dest) const; void set_fld_dest(const TString& fld_dest);
void set_fld_dest_usr(const TString& fld_dest_usr) const; void set_fld_dest_usr(const TString& fld_dest_usr);
void set_cofi_tras(const TString& cofi) const; void set_cofi_tras(const TString& cofi);
void set_gest_alleg(bool gest_alleg) const; void set_gest_alleg(bool gest_alleg);
void set_allega_fat(bool allega_fatt) const; void set_allega_fat(bool allega_fatt);
void set_esp_pri_empty(bool esp_pri) const; void set_esp_pri_empty(bool esp_pri);
void set_esp_est(bool esp_est) const; void set_send_all_rifs(bool send_all_rifs);
void set_esp_est_cod(const TString& esp_est_cod) const; void set_esp_est(bool esp_est);
void set_f8(bool f8) const; void set_esp_est_cod(const TString& esp_est_cod);
void set_check_not_block(bool not_block) const; void set_f8(bool f8);
void set_body_mail(const char* msg, int idx = -1) const; void set_check_not_block(bool not_block);
void set_no_sconti_fatt(const bool no_sconti_fatt) const; void set_body_mail(const char* msg, int idx = -1);
void set_no_export_pronto(const bool no_export_pronto) const; void set_no_sconti_fatt(const bool no_sconti_fatt);
void set_data_start_fatt(const char* date) const; void set_no_export_pronto(const bool no_export_pronto);
void set_data_start_new_fatt(const char* date) const; void set_data_start_fatt(const char* date);
void set_data_start_new_fatt(const char* date);
void set_npf(const char * tipodoc, const char* msg, int idx) const; void set_npf(const char * tipodoc, const char* msg, int idx);
void set_npf_tipodoc(const TString& tipodoc, int indx) const; void set_npf_tipodoc(const TString& tipodoc, int indx);
void remove_para_ini(int idx); void remove_para_ini(int idx);
void remove_npf_ini(const char* tipodoc, int idx); void remove_npf_ini(const char* tipodoc, int idx);
void remove_tipodoc_npf(int idx) const; void remove_tipodoc_npf(int idx);
};
inline TFP_settings& fp_settings()
{
static TFP_settings* erbuggo = nullptr;
if(erbuggo == nullptr)
{
erbuggo = new TFP_settings();
}
return *erbuggo;
}
// Mannaggia il fruttivendolo // Mannaggia il fruttivendolo
class TFP_righe_custom : public TObject class TFP_righe_custom : public TObject
@ -567,8 +558,8 @@ public:
int force_commit(); int force_commit();
void set_cache_insert(const bool v) { _cache_insert = v; } void set_cache_insert(const bool v) { _cache_insert = v; }
bool tracciati_2021() const { return _tracciati_2021; } bool tracciati_2021() const { return _tracciati_2021; }
TDoc_fp(); TDoc_fp();
~TDoc_fp(); ~TDoc_fp();
}; };
#endif // __FPLIB_H #endif // __FPLIB_H

View File

@ -15,8 +15,10 @@
#include <cfven.h> #include <cfven.h>
#include <nditte.h> #include <nditte.h>
#include <unloc.h> #include <unloc.h>
#include <indsp.h>
#include "../cg/cfban.h" #include "../cg/cfban.h"
#include <modaut.h> #include <modaut.h>
#include <netutils.h>
#include <urldefid.h> #include <urldefid.h>
#include "../li/letint.h" #include "../li/letint.h"
@ -38,6 +40,7 @@ bool set_connection(SSimple_query& s)
SSimple_query& fp_db() SSimple_query& fp_db()
{ {
static SSimple_query* db = nullptr; static SSimple_query* db = nullptr;
if (db == nullptr) if (db == nullptr)
{ {
db = new SSimple_query(); db = new SSimple_query();
@ -50,24 +53,18 @@ SSimple_query& fp_db()
bool run_fp_psw_mask() bool run_fp_psw_mask()
{ {
static TMask* m; TMask m("Password", 1, 30, 5);
// Cancello la maschera se esiste
delete m; m.add_button_tool(DLG_OK, "~Conferma", TOOL_OK);
m = new TMask("Password", 1, 30, 5); m.add_button_tool(DLG_CANCEL, "Annulla", TOOL_CANCEL);
m->add_button_tool(DLG_OK, "~Conferma", TOOL_OK); m.add_string(101, 0, "Password ", 1, 1, 15, "*");
m->add_button_tool(DLG_CANCEL, "Annulla", TOOL_CANCEL); m.field(101).check_type(CHECK_REQUIRED);
m->add_string(101, 0, "Password ", 1, 1, 15, "*"); while (m.run() == K_ENTER)
m->field(101).check_type(CHECK_REQUIRED);
while (m->run() == K_ENTER)
{
if (m->get(101) == "sirioFATT99") // Hardcoded password are the best!
{ {
if (m.get(101) == "sirioFATT99") // Hardcoded password are the best!
return true; return true;
}
else else
{ return error_box("Password errata");
error_box("Password errata");
}
} }
return false; return false;
} }
@ -95,6 +92,7 @@ bool check_tables()
{ {
TString file_version = TFilename(file->str).name_only(); TString file_version = TFilename(file->str).name_only();
file_version = file_version.mid(2, 4); file_version = file_version.mid(2, 4);
if (file_version <= version) if (file_version <= version)
continue; continue;
ifstream f(file->str); ifstream f(file->str);
@ -154,10 +152,12 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc)
ret << prefisso << ndoc << postfisso; ret << prefisso << ndoc << postfisso;
return ret; return ret;
} }
/* /*
* HFATT: tipocf(1) + codcf(6) * HFATT: tipocf(1) + codcf(6)
* BFATT: datadoc(8) + tipodoc_SDI(4) + numdoc(7) * BFATT: datadoc(8) + tipodoc_SDI(4) + numdoc(7)
*/ */
// Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio // Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio
bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt) bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt)
{ {
@ -172,6 +172,7 @@ bool chiave_paf(const TDocumento& doc, TString& hfatt, TString& bfatt)
bfatt.cut(0) << doc.get_date(DOC_DATADOC).date2ansi() << '_' << tipo_doc_sdi(doc) << '_' << complete_num_fp(codnum, doc.numero()); bfatt.cut(0) << doc.get_date(DOC_DATADOC).date2ansi() << '_' << tipo_doc_sdi(doc) << '_' << complete_num_fp(codnum, doc.numero());
return hfatt.full() && bfatt.full(); return hfatt.full() && bfatt.full();
} }
// Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento // Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento
bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt) bool chiave_paf(const TRectype& doc, TString& hfatt, TString& bfatt)
{ {
@ -207,12 +208,12 @@ bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString&
const TAnagrafica anag(LF_CLIFO, tipocf, codcf); const TAnagrafica anag(LF_CLIFO, tipocf, codcf);
if (coddest.empty()) if (coddest.empty())
{ {
if (pec.full() || fp_settings().get_esp_pri_empty()) if (pec.full() || get_esp_pri_empty())
coddest = "0000000"; coddest = "0000000";
// Controllo se è straniero // Controllo se è straniero
else if (anag.estero() && anag.stato_partita_IVA() != "IT") else if (anag.estero() && anag.stato_partita_IVA() != "IT")
{ {
coddest = fp_settings().get_esp_est() ? fp_settings().get_esp_est_cod() : ""; coddest = get_esp_est() ? get_esp_est_cod() : "";
} }
} }
else else
@ -1011,25 +1012,18 @@ bool TDoc_fp::initialize(TDocumentoEsteso& doc)
return false; return false;
// Preparo il log // Preparo il log
log(-1, _bfatt); log(-1, _bfatt);
#ifndef DBG
// Controllo se il documento è almeno in stato di stampa // Controllo se il documento è almeno in stato di stampa
if (doc.stato() < doc.tipo().stato_finale_stampa()) if (doc.stato() < doc.tipo().stato_finale_stampa())
{ {
log(3, "Il documento non e' stato ancora stampato, verra' saltato"); log(3, "Il documento non e' stato ancora stampato, verra' saltato");
return false; return false;
} }
#endif
#ifndef DBG
_is_pa = doc.clifor().get_int("ALLEG") == 7; _is_pa = doc.clifor().get_int("ALLEG") == 7;
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), _coddest, _pec, doc.get(DOC_CODINDSP))) if (!doc.get_coddest(_coddest, _pec))
{ {
log(1, "Impossibile trovare il codice destinatario per la fattura"); log(1, "Impossibile trovare il codice destinatario per la fattura");
return false; return false;
} }
#else
_is_pa = false;
_coddest = "M5ITOJA";
#endif
_enapec = _coddest == "0000000" && _pec.full(); _enapec = _coddest == "0000000" && _pec.full();
_privato = _coddest.len() != 6; _privato = _coddest.len() != 6;
_caus = TCausale(doc.tipo().causale(), doc.anno()); _caus = TCausale(doc.tipo().causale(), doc.anno());
@ -1046,7 +1040,7 @@ bool TDoc_fp::initialize(TDocumentoEsteso& doc)
_idx_cassa_previdenziale = 1; _idx_cassa_previdenziale = 1;
// Controllo custom // Controllo custom
_has_cust = cached_custom_fp().has_custom(doc); _has_cust = cached_custom_fp().has_custom(doc);
if(check_initial(doc) || fp_settings().get_check_not_block()) if(check_initial(doc) || get_check_not_block())
{ {
return _paf_container.clean_and_erase_paf(_hfatt, _bfatt); return _paf_container.clean_and_erase_paf(_hfatt, _bfatt);
} }
@ -1124,7 +1118,7 @@ int TDoc_fp::commit()
if (_to_commit) if (_to_commit)
{ {
// Controllo stato diagnosticato // Controllo stato diagnosticato
if (!fp_settings().get_no_export_pronto()) if (!get_no_export_pronto())
{ {
if (fp_db().sq_set_exec("UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_GESTIONE = 'D'")) if (fp_db().sq_set_exec("UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_GESTIONE = 'D'"))
{ {
@ -1495,7 +1489,7 @@ void TDoc_fp::fill_buoni(map<TString20, TFPBuono_di_consegna>& buoni, const TStr
else // Ultima riga else // Ultima riga
{ {
TToken_string b(memo, '\n'); TToken_string b(memo, '\n');
// "Buono di consegna n. 1997 del 10-10-2019"
for (int i = 0; i < b.items(); ++i) for (int i = 0; i < b.items(); ++i)
{ {
TToken_string str(b.get(i), ' '); TToken_string str(b.get(i), ' ');
@ -1516,9 +1510,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
bool ok = true; bool ok = true;
ok &= export_paf0100f(); ok &= export_paf0100f();
#ifndef DBG
ok &= export_paf3200f(); ok &= export_paf3200f();
#endif
// <CedentePrestatore> // <CedentePrestatore>
TPaf_record& paf0200f = _paf_container.get_paf("PAF0200F"); TPaf_record& paf0200f = _paf_container.get_paf("PAF0200F");
@ -1578,6 +1572,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
if (_ditta.giuridica()) if (_ditta.giuridica())
{ {
TISAM_recordset anagiu("USE ANAGIU\nFROM CODANAGR=#CODICE\nTO CODANAGR=#CODICE"); TISAM_recordset anagiu("USE ANAGIU\nFROM CODANAGR=#CODICE\nTO CODANAGR=#CODICE");
anagiu.set_var("#CODICE", get_firm().get(NDT_CODANAGR)); anagiu.set_var("#CODICE", get_firm().get(NDT_CODANAGR));
if (anagiu.move_first()) if (anagiu.move_first())
{ {
@ -1723,7 +1718,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
paf2700f.set("PQ_GESTIONE", "D"); paf2700f.set("PQ_GESTIONE", "D");
ok &= insert(paf2700f); ok &= insert(paf2700f);
// <DatiOrdineAcquisto> // <DatiOrdineAcquisto>
if(doc.is_nota_credito() && doc.get(DOC_NUMDOCRIF).full()) if((doc.is_nota_credito() || get_send_all_rifs()) && doc.get(DOC_NUMDOCRIF).full())
{ {
TPaf_record& paf1400f = _paf_container.get_paf("PAF1400F"); TPaf_record& paf1400f = _paf_container.get_paf("PAF1400F");
reset(paf1400f); reset(paf1400f);
@ -1867,7 +1862,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc) FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
{ {
// Controllo la riga // Controllo la riga
if (check_row(*rdoc) && !fp_settings().get_check_not_block()) if (check_row(*rdoc) && !get_check_not_block())
return false; return false;
_idx_adg_doc_row = 1L; _idx_adg_doc_row = 1L;
bool skip_riga = false; bool skip_riga = false;
@ -1930,11 +1925,13 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
if (!riftesta) if (!riftesta)
{ {
TArray ancestors; TArray ancestors;
find_ancestors(*rdoc, ancestors); find_ancestors(*rdoc, ancestors);
for (int i = ancestors.last(); i > 0; i = ancestors.pred(i)) for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
{ {
_has_bolla |= true; _has_bolla |= true;
const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]); const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie ancestors_s.insert({ a._numdoc, a._datadoc }); // Per i buoni di consegna lavanderie
if (i == 1) if (i == 1)
{ {
@ -2080,10 +2077,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
ok &= insert(paf2100f); ok &= insert(paf2100f);
} }
else else
{
// Salto tutte le altre righe // Salto tutte le altre righe
continue; continue;
}
// <ScontoMaggiorazione> // <ScontoMaggiorazione>
TString80 sconto_expr = rdoc->get(RDOC_SCONTO); TString80 sconto_expr = rdoc->get(RDOC_SCONTO);
TToken_string sconti; TToken_string sconti;
@ -2131,6 +2127,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
if (!riftesta && f_buonocons) if (!riftesta && f_buonocons)
{ {
TString& memo = riga_buoni_cons; TString& memo = riga_buoni_cons;
if (memo.full()) if (memo.full())
{ {
map<TString20, TFPBuono_di_consegna> buoni; map<TString20, TFPBuono_di_consegna> buoni;
@ -2347,7 +2344,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
for(TObject* itm = tiva.first_item(); itm != nullptr; itm = tiva.succ_item()) for(TObject* itm = tiva.first_item(); itm != nullptr; itm = tiva.succ_item())
{ {
const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm); const TRiepilogo_iva& riva = *dynamic_cast<const TRiepilogo_iva*>(itm);
if (!check_riepilogo(doc, riva) && !fp_settings().get_check_not_block()) if (!check_riepilogo(doc, riva) && !get_check_not_block())
return false; return false;
add_riepilogo_iva(paf2200f, riva.cod_iva(), eiva, riva.imponibile(), riva.imposta()); add_riepilogo_iva(paf2200f, riva.cod_iva(), eiva, riva.imponibile(), riva.imposta());
} }
@ -2412,6 +2409,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
long nprogr = 0; // Numero di file allegati long nprogr = 0; // Numero di file allegati
// Se abilitato stampo il documento e lo allego // Se abilitato stampo il documento e lo allego
TFilename rep; TFilename rep;
if (_allegafattura) if (_allegafattura)
{ {
if (!dongle().active(RSAUT)) if (!dongle().active(RSAUT))
@ -2518,10 +2516,12 @@ bool TDoc_fp::doc_to_paf(const TRectype& rec)
} }
return false; return false;
} }
bool TDoc_fp::doc_to_paf(const TDoc_key& key) bool TDoc_fp::doc_to_paf(const TDoc_key& key)
{ {
return doc_to_paf(key_to_doc(key)); return doc_to_paf(key_to_doc(key));
} }
bool TDoc_fp::doc_to_paf(const TFilename& ini) bool TDoc_fp::doc_to_paf(const TFilename& ini)
{ {
TConfig cfg(ini, "33"); TConfig cfg(ini, "33");
@ -2531,10 +2531,12 @@ bool TDoc_fp::doc_to_paf(const TFilename& ini)
const TDoc_key key(anno, codnum, ndoc); const TDoc_key key(anno, codnum, ndoc);
return doc_to_paf(key); return doc_to_paf(key);
} }
bool TDoc_fp::doc_to_paf() bool TDoc_fp::doc_to_paf()
{ {
return _doc_rec != nullptr ? doc_to_paf(*_doc_rec) : false; return _doc_rec != nullptr ? doc_to_paf(*_doc_rec) : false;
} }
TRectype& TDoc_fp::key_to_doc(const TDoc_key& key) TRectype& TDoc_fp::key_to_doc(const TDoc_key& key)
{ {
if(_doc_rec != nullptr) if(_doc_rec != nullptr)
@ -2549,23 +2551,19 @@ TRectype& TDoc_fp::key_to_doc(const TDoc_key& key)
TDoc_fp::TDoc_fp() : _doc_rec(nullptr), _log(nullptr), _cache_insert(false) TDoc_fp::TDoc_fp() : _doc_rec(nullptr), _log(nullptr), _cache_insert(false)
{ {
_ditta.init(LF_NDITTE, prefix().get_codditta()); _ditta.init(LF_NDITTE, prefix().get_codditta());
_cofi = fp_settings().get_cofi_tras(); _cofi = get_cofi_tras();
const TDate data_inizio = fp_settings().get_date_start_new_fatt(); const TDate data_inizio = get_date_start_new_fatt();
_tracciati_2021 = (data_inizio <= today); _tracciati_2021 = (data_inizio <= today);
if (_cofi.blank()) if (_cofi.blank())
_cofi = _ditta.codice_fiscale(); _cofi = _ditta.codice_fiscale();
#ifdef DBG _gestioneallegati = get_gest_alleg();
_gestioneallegati = _allegafattura = false; _allegafattura = get_allega_fat();
#else _def_fld = get_fld_dest();
_gestioneallegati = fp_settings().get_gest_alleg();
_allegafattura = fp_settings().get_allega_fat();
#endif
_def_fld = fp_settings().get_fld_dest();
if (!_def_fld.ends_with("\\")) if (!_def_fld.ends_with("\\"))
{ {
_def_fld << "\\"; _def_fld << "\\";
} }
_def_usr_fld = fp_settings().get_fld_dest_usr(); _def_usr_fld = get_fld_dest_usr();
if (_def_usr_fld.empty()) if (_def_usr_fld.empty())
{ {
_def_usr_fld = _def_fld; _def_usr_fld = _def_fld;
@ -2578,8 +2576,9 @@ TDoc_fp::TDoc_fp() : _doc_rec(nullptr), _log(nullptr), _cache_insert(false)
_conai_str = ini_get_string(CONFIG_DITTA, "ve", "DESCCONAIASS"); _conai_str = ini_get_string(CONFIG_DITTA, "ve", "DESCCONAIASS");
if (_conai_str.empty()) if (_conai_str.empty())
_conai_str = "Contributo CONAI assolto ove dovuto"; _conai_str = "Contributo CONAI assolto ove dovuto";
_nascondi_sconti_righe_fatt = fp_settings().get_no_sconti_fatt(); _nascondi_sconti_righe_fatt = get_no_sconti_fatt();
} }
TDoc_fp::~TDoc_fp() TDoc_fp::~TDoc_fp()
{ {
commit(); commit();

View File

@ -4,8 +4,6 @@
#define FILE_SECTION "fp" #define FILE_SECTION "fp"
#define FP_TAB_MOD "FP" #define FP_TAB_MOD "FP"
#define FP_IP "ip" #define FP_IP "ip"
#define FP_DB "db" #define FP_DB "db"
#define FP_USR "usr" #define FP_USR "usr"
@ -26,6 +24,7 @@
#define FP_CHECK_NO_EXPORT_PRONTO "noexportpronto" #define FP_CHECK_NO_EXPORT_PRONTO "noexportpronto"
#define FP_DATASTARTFATT "datastartfatt" #define FP_DATASTARTFATT "datastartfatt"
#define FP_DATASTARTNEWFATT "startnewtracciato" #define FP_DATASTARTNEWFATT "startnewtracciato"
#define FP_SEND_ALL_RIFS "sendallrifs"
// Sheet fp0300 // Sheet fp0300
#define FP_SLD_COD "SLD" #define FP_SLD_COD "SLD"
@ -49,241 +48,257 @@
#define FP_SHT_DEF_PREZZO "PREZZONN" #define FP_SHT_DEF_PREZZO "PREZZONN"
#define FP_SHT_DEF_IMPONIBILE "IMPNS" #define FP_SHT_DEF_IMPONIBILE "IMPNS"
const TString& TFP_settings::get_db_indirizzo() const const TString& get_db_indirizzo()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_IP); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_IP);
} }
const TString& TFP_settings::get_db_database() const const TString& get_db_database()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_DB); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_DB);
} }
const TString& TFP_settings::get_db_str_con() const const TString& get_db_str_con()
{ {
return get_tmp_string().cut(0) << get_db_indirizzo() << "@" << get_db_database(); return get_tmp_string().cut(0) << get_db_indirizzo() << "@" << get_db_database();
} }
const TString& TFP_settings::get_db_user() const const TString& get_db_user()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_USR); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_USR);
} }
const TString& TFP_settings::get_db_password() const const TString& get_db_password()
{ {
return get_tmp_string().cut(0) << decode(ini_get_string(FILE_CONFIG, FILE_SECTION, FP_PSW)); return get_tmp_string().cut(0) << decode(ini_get_string(FILE_CONFIG, FILE_SECTION, FP_PSW));
} }
const TString& TFP_settings::get_fld_dest() const const TString& get_fld_dest()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_FLD_DEST); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_FLD_DEST);
} }
const TString& TFP_settings::get_fld_dest_usr() const const TString& get_fld_dest_usr()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_FLD_USR_DEST, ""); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_FLD_USR_DEST, "");
} }
const TString& TFP_settings::get_cofi_tras() const const TString& get_cofi_tras()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_COFI_TRAS); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_COFI_TRAS);
} }
const TString& TFP_settings::get_data_start_fatt() const const TDate get_data_start_fatt()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, "01-01-2019"); return ini_get_date(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, "01-01-2019");
} }
const bool TFP_settings::get_gest_alleg() const const bool get_gest_alleg()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_GEST_ALLEG); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_GEST_ALLEG);
} }
const bool TFP_settings::get_allega_fat() const const bool get_allega_fat()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ALLEG_FAT); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ALLEG_FAT);
} }
const bool TFP_settings::get_esp_pri_empty() const const bool get_esp_pri_empty()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_PRI); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_PRI);
} }
const bool TFP_settings::get_esp_est() const const bool get_send_all_rifs()
{
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_SEND_ALL_RIFS);
}
const bool get_esp_est()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_EST); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_EST);
} }
const TString& TFP_settings::get_esp_est_cod() const const TString& get_esp_est_cod()
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_ESP_EST_COD, "XXXXXXX"); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_ESP_EST_COD, "XXXXXXX");
} }
const bool TFP_settings::is_f8() const const bool is_f8()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_F8); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_F8);
} }
const bool TFP_settings::get_check_not_block() const const bool get_check_not_block()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK);
} }
const TString& TFP_settings::get_body_mail(int idx) const const TString& get_body_mail(int idx)
{ {
return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_MAIL, "STOpsTOP", idx); return ini_get_string(FILE_CONFIG, FILE_SECTION, FP_MAIL, "STOpsTOP", idx);
} }
const TString& TFP_settings::get_npf(const char * tipodoc, int idx) const const TString& get_npf(const char * tipodoc, int idx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc; TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc;
return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", idx); return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", idx);
} }
const TString TFP_settings::get_npf_tipodoc(int indx) const const TString & get_npf_tipodoc(int indx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "_tipodoc"; TString name; name << FP_NOTA_PIEDE_F << "_tipodoc";
return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", indx); return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", indx);
} }
TDate TFP_settings::get_date_start_new_fatt() TDate get_date_start_new_fatt()
{ {
return ini_get_date(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, "01-01-2021"); return ini_get_date(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, "01-01-2021");
} }
const bool TFP_settings::get_no_sconti_fatt() const const bool get_no_sconti_fatt()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_SCONTI_FATT, false); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_SCONTI_FATT, false);
} }
bool TFP_settings::get_no_export_pronto() const bool get_no_export_pronto()
{ {
return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_EXPORT_PRONTO, false); return ini_get_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_EXPORT_PRONTO, false);
} }
void TFP_settings::set_db_indirizzo(const TString& ind) const void set_db_indirizzo(const TString& ind)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_IP, ind); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_IP, ind);
} }
void TFP_settings::set_db_database(const TString& db) const void set_db_database(const TString& db)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DB, db); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DB, db);
} }
void TFP_settings::set_db_user(const TString& usr) const void set_db_user(const TString& usr)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_USR, usr); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_USR, usr);
} }
void TFP_settings::set_db_password(const TString& psw) const void set_db_password(const TString& psw)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_PSW, encode(psw)); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_PSW, encode(psw));
} }
void TFP_settings::set_fld_dest(const TString& fld_dest) const void set_fld_dest(const TString& fld_dest)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_FLD_DEST, fld_dest); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_FLD_DEST, fld_dest);
} }
void TFP_settings::set_fld_dest_usr(const TString& fld_dest_usr) const void set_fld_dest_usr(const TString& fld_dest_usr)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_FLD_USR_DEST, fld_dest_usr); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_FLD_USR_DEST, fld_dest_usr);
} }
void TFP_settings::set_cofi_tras(const TString& cofi) const void set_cofi_tras(const TString& cofi)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_COFI_TRAS, cofi); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_COFI_TRAS, cofi);
} }
void TFP_settings::set_gest_alleg(const bool gest_alleg) const void set_gest_alleg(const bool gest_alleg)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_GEST_ALLEG, gest_alleg); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_GEST_ALLEG, gest_alleg);
} }
void TFP_settings::set_allega_fat(const bool allega_fatt) const void set_allega_fat(const bool allega_fatt)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ALLEG_FAT, allega_fatt); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ALLEG_FAT, allega_fatt);
} }
void TFP_settings::set_esp_pri_empty(const bool esp_pri) const void set_esp_pri_empty(const bool esp_pri)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_PRI, esp_pri); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_PRI, esp_pri);
} }
void TFP_settings::set_esp_est(const bool esp_est) const void set_send_all_rifs(const bool esp_pri)
{
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_SEND_ALL_RIFS, esp_pri);
}
void set_esp_est(const bool esp_est)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_EST, esp_est); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_ESP_EST, esp_est);
} }
void TFP_settings::set_esp_est_cod(const TString& esp_est_cod) const void set_esp_est_cod(const TString& esp_est_cod)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_ESP_EST_COD, esp_est_cod); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_ESP_EST_COD, esp_est_cod);
} }
void TFP_settings::set_f8(const bool f8) const void set_f8(const bool f8)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_F8, f8); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_F8, f8);
} }
void TFP_settings::set_check_not_block(const bool not_block) const void set_check_not_block(const bool not_block)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK, not_block); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NOT_BLOCK, not_block);
} }
void TFP_settings::set_body_mail(const char* msg, int idx) const void set_body_mail(const char* msg, int idx)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_MAIL, msg, idx); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_MAIL, msg, idx);
} }
// Set nota piede fattura // Set nota piede fattura
void TFP_settings::set_npf(const char * tipodoc, const char* msg, int idx) const void set_npf(const char * tipodoc, const char* msg, int idx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc; TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc;
ini_set_string(FILE_CONFIG, FILE_SECTION, name, msg, idx); ini_set_string(FILE_CONFIG, FILE_SECTION, name, msg, idx);
} }
void TFP_settings::set_no_sconti_fatt(const bool no_sconti_fatt) const void set_no_sconti_fatt(const bool no_sconti_fatt)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_SCONTI_FATT, no_sconti_fatt); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_SCONTI_FATT, no_sconti_fatt);
} }
void TFP_settings::set_no_export_pronto(const bool no_export_pronto) const void set_no_export_pronto(const bool no_export_pronto)
{ {
ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_EXPORT_PRONTO, no_export_pronto); ini_set_bool(FILE_CONFIG, FILE_SECTION, FP_CHECK_NO_EXPORT_PRONTO, no_export_pronto);
} }
void TFP_settings::set_data_start_fatt(const char* date) const void set_data_start_fatt(const char* date)
{ {
ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, date); ini_set_string(FILE_CONFIG, FILE_SECTION, FP_DATASTARTFATT, date);
} }
void TFP_settings::set_data_start_new_fatt(const char* date) const void set_data_start_new_fatt(const char* date)
{ {
ini_set_string(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, date); ini_set_string(CONFIG_DITTA, FILE_SECTION, FP_DATASTARTNEWFATT, date);
} }
void TFP_settings::remove_para_ini(int idx) void remove_para_ini(int idx)
{ {
ini_remove(FILE_CONFIG, FILE_SECTION, FP_MAIL, idx); ini_remove(FILE_CONFIG, FILE_SECTION, FP_MAIL, idx);
} }
void TFP_settings::remove_npf_ini(const char * tipodoc, int idx) void remove_npf_ini(const char * tipodoc, int idx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc; TString name; name << FP_NOTA_PIEDE_F << "-" << tipodoc;
ini_remove(FILE_CONFIG, FILE_SECTION, name, idx); ini_remove(FILE_CONFIG, FILE_SECTION, name, idx);
} }
void TFP_settings::set_npf_tipodoc(const TString& tipodoc, int indx) const void set_npf_tipodoc(const TString& tipodoc, int indx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "_tipodoc"; TString name; name << FP_NOTA_PIEDE_F << "_tipodoc";
ini_set_string(FILE_CONFIG, FILE_SECTION, name, tipodoc, indx); ini_set_string(FILE_CONFIG, FILE_SECTION, name, tipodoc, indx);
} }
// Rimuove linea ini in eccesso per tipodoc per nota piede fattura // Rimuove linea ini in eccesso per tipodoc per nota piede fattura
void TFP_settings::remove_tipodoc_npf(const int idx) const void remove_tipodoc_npf(const int idx)
{ {
TString name; name << FP_NOTA_PIEDE_F << "_tipodoc"; TString name; name << FP_NOTA_PIEDE_F << "_tipodoc";
ini_remove(FILE_CONFIG, FILE_SECTION, name, idx); ini_remove(FILE_CONFIG, FILE_SECTION, name, idx);
} }
@ -387,16 +402,16 @@ void TFP_nota_piede_f::write_ini_npf(const TString& tipodoc, TToken_string& msg)
// Conto quanti ne avevo salvati prima nel file ini per poi controllare // Conto quanti ne avevo salvati prima nel file ini per poi controllare
// che non sto salvando meno di quelli che ci sono già // che non sto salvando meno di quelli che ci sono già
int previous_indx = 0; int previous_indx = 0;
for (TString row = fp_settings().get_npf(tipodoc, previous_indx); row != "FERMATIostrega"; row = fp_settings().get_npf(tipodoc, previous_indx)) for (TString row = get_npf(tipodoc, previous_indx); row != "FERMATIostrega"; row = get_npf(tipodoc, previous_indx))
previous_indx++; previous_indx++;
// Vado a salvare ogni riga nel file ini // Vado a salvare ogni riga nel file ini
for (const char* row = msg.get(); row; row = msg.get()) for (const char* row = msg.get(); row; row = msg.get())
fp_settings().set_npf(tipodoc, row, indx++); set_npf(tipodoc, row, indx++);
if (indx < previous_indx) if (indx < previous_indx)
{ {
for (int i = indx; i < previous_indx; i++) for (int i = indx; i < previous_indx; i++)
fp_settings().remove_npf_ini(tipodoc, i); remove_npf_ini(tipodoc, i);
} }
} }
@ -405,10 +420,10 @@ void TFP_nota_piede_f::delete_ini_npf(const TString& tipodoc)
// Conto quanti ne avevo salvati prima nel file ini per poi controllare // Conto quanti ne avevo salvati prima nel file ini per poi controllare
// che non sto salvando meno di quelli che ci sono già // che non sto salvando meno di quelli che ci sono già
int previous_indx = 0; int previous_indx = 0;
for (TString row = fp_settings().get_npf(tipodoc, previous_indx); row != "FERMATIostrega"; row = fp_settings().get_npf(tipodoc, previous_indx)) for (TString row = get_npf(tipodoc, previous_indx); row != "FERMATIostrega"; row = get_npf(tipodoc, previous_indx))
previous_indx++; previous_indx++;
for (int i = 0; i < previous_indx; i++) for (int i = 0; i < previous_indx; i++)
fp_settings().remove_npf_ini(tipodoc, i); remove_npf_ini(tipodoc, i);
} }
@ -418,7 +433,7 @@ TString TFP_nota_piede_f::get_ini_npf(const TString& tipodoc)
TString msg; msg.cut(0); TString msg; msg.cut(0);
int indx = 0; int indx = 0;
for (TString row = fp_settings().get_npf(tipodoc, indx); row != "FERMATIostrega"; row = fp_settings().get_npf(tipodoc, indx)) for (TString row = get_npf(tipodoc, indx); row != "FERMATIostrega"; row = get_npf(tipodoc, indx))
{ {
if(indx++ > 0) if(indx++ > 0)
msg << '\n'; msg << '\n';
@ -432,7 +447,7 @@ void TFP_nota_piede_f::get_load()
// Prima leggo i tipi doc che ho salvato dall'ini // Prima leggo i tipi doc che ho salvato dall'ini
TString tipo_get = ""; TString tipo_get = "";
int indx = 0; int indx = 0;
while ((tipo_get = fp_settings().get_npf_tipodoc(indx++)) != "FERMATIostrega") while ((tipo_get = get_npf_tipodoc(indx++)) != "FERMATIostrega")
_tipi_doc.add(tipo_get); _tipi_doc.add(tipo_get);
const int itms = _tipi_doc.items(); const int itms = _tipi_doc.items();
@ -451,7 +466,7 @@ void TFP_nota_piede_f::load_sheet(TSheet_field& sheet_field)
// Prima leggo i tipi doc che ho salvato dall'ini // Prima leggo i tipi doc che ho salvato dall'ini
TString tipo_get = ""; TString tipo_get = "";
int indx = 0; int indx = 0;
while((tipo_get = fp_settings().get_npf_tipodoc(indx++)) != "FERMATIostrega") while((tipo_get = get_npf_tipodoc(indx++)) != "FERMATIostrega")
_tipi_doc.add(tipo_get); _tipi_doc.add(tipo_get);
int i = 0; int i = 0;
@ -495,7 +510,7 @@ void TFP_nota_piede_f::save_new_tipidoc(TSheet_field& sheet_field)
int n_tipidoc = 0; int n_tipidoc = 0;
TString npf_get; TString npf_get;
// Conto quanti tipi doc ho nel file ini // Conto quanti tipi doc ho nel file ini
for (int i = 0; (npf_get = fp_settings().get_npf_tipodoc(i)) != "FERMATIostrega"; i++) for (int i = 0; (npf_get = get_npf_tipodoc(i)) != "FERMATIostrega"; i++)
{ {
n_tipidoc++; n_tipidoc++;
_tipi_doc.add(npf_get); _tipi_doc.add(npf_get);
@ -507,12 +522,13 @@ void TFP_nota_piede_f::save_new_tipidoc(TSheet_field& sheet_field)
{ {
TToken_string row = sheet_field.row(i); TToken_string row = sheet_field.row(i);
TString tipodoc_sf(row.get(0)); TString tipodoc_sf(row.get(0));
fp_settings().set_npf_tipodoc(tipodoc_sf, i);
set_npf_tipodoc(tipodoc_sf, i);
} }
if (items_sf < n_tipidoc) if (items_sf < n_tipidoc)
for (int i = items_sf; i < n_tipidoc; i++) for (int i = items_sf; i < n_tipidoc; i++)
fp_settings().remove_tipodoc_npf(i); remove_tipodoc_npf(i);
} }
void TFP_nota_piede_f::save_sheet(TSheet_field& sheet_field) void TFP_nota_piede_f::save_sheet(TSheet_field& sheet_field)

View File

@ -63,7 +63,7 @@ bool TFp_mail_sender::send(const TString& msg)
bool ok = false; bool ok = false;
if (_alleg && !_mail.blank() && _accord) if (_alleg && !_mail.blank() && _accord)
{ {
_pdf_path = fp_settings().get_fld_dest_usr(); // Cartella dove ci sono i pdf generati _pdf_path = get_fld_dest_usr(); // Cartella dove ci sono i pdf generati
TFilename pdf; pdf << _pdf_path << _pdf_name; TFilename pdf; pdf << _pdf_path << _pdf_name;
@ -90,6 +90,7 @@ bool TFp_mail_sender::send(const TString& msg)
TString hfatt, bfatt; TString hfatt, bfatt;
TPaf_record paf0100f("PAF0100F"); TPaf_record paf0100f("PAF0100F");
TString query; TString query;
if (chiave_paf(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) if (chiave_paf(fdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
{ {
query << "UPDATE PAF0100F SET P1_ERRINT = 'S' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "'"; query << "UPDATE PAF0100F SET P1_ERRINT = 'S' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "'";