Patch level : 12.0 740
Files correlati : fp0500, fplib Commento : Aggiunta possibilità di aggiungere nota in piede fattura
This commit is contained in:
parent
6e7d8ab89a
commit
71aad42a8a
@ -23,4 +23,5 @@
|
|||||||
#define S_TIPORIGA 102
|
#define S_TIPORIGA 102
|
||||||
#define S_QTA 103
|
#define S_QTA 103
|
||||||
#define S_PREZZO 104
|
#define S_PREZZO 104
|
||||||
#define S_IMPONIBILE 105
|
#define S_IMPONIBILE 105
|
||||||
|
#define S_NOTAPF 106
|
@ -99,6 +99,7 @@ BEGIN
|
|||||||
ITEM "Qta"
|
ITEM "Qta"
|
||||||
ITEM "Prezzo"
|
ITEM "Prezzo"
|
||||||
ITEM "Imponibile"
|
ITEM "Imponibile"
|
||||||
|
ITEM "Nota piede\nFattura@15"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
@ -155,11 +156,11 @@ ENDPAGE
|
|||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Elementi spredsheet" 0 2 0 0
|
PAGE "Elementi spredsheet" -1 -1 60 12
|
||||||
|
|
||||||
STRING S_TIPODOC 4
|
STRING S_TIPODOC 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 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]!=""
|
||||||
@ -173,7 +174,7 @@ END
|
|||||||
|
|
||||||
STRING S_TIPORIGA 4
|
STRING S_TIPORIGA 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 1 "Tipo riga "
|
PROMPT 1 2 "Tipo riga "
|
||||||
USE %TRI
|
USE %TRI
|
||||||
INPUT CODTAB S_TIPORIGA
|
INPUT CODTAB S_TIPORIGA
|
||||||
DISPLAY "Codice@10" CODTAB
|
DISPLAY "Codice@10" CODTAB
|
||||||
@ -184,12 +185,12 @@ END
|
|||||||
|
|
||||||
STRING S_QTA 10
|
STRING S_QTA 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 2 "Qta"
|
PROMPT 1 3 "Qta"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_PREZZO 10
|
STRING S_PREZZO 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 2 "Prezzo"
|
PROMPT 1 4 "Prezzo"
|
||||||
USE %FRR
|
USE %FRR
|
||||||
INPUT CODTAB S_PREZZO
|
INPUT CODTAB S_PREZZO
|
||||||
DISPLAY "Codice@10" CODTAB
|
DISPLAY "Codice@10" CODTAB
|
||||||
@ -199,7 +200,7 @@ END
|
|||||||
|
|
||||||
STRING S_IMPONIBILE 10
|
STRING S_IMPONIBILE 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 2 "Imponibile"
|
PROMPT 1 5 "Imponibile"
|
||||||
USE %FRR
|
USE %FRR
|
||||||
INPUT CODTAB S_IMPONIBILE
|
INPUT CODTAB S_IMPONIBILE
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -207,6 +208,11 @@ BEGIN
|
|||||||
OUTPUT S_IMPONIBILE CODTAB
|
OUTPUT S_IMPONIBILE CODTAB
|
||||||
END
|
END
|
||||||
|
|
||||||
|
MEMO S_NOTAPF 0 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "Nota piede fattura"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
TOOLBAR "Riga" 0 0 0 2
|
TOOLBAR "Riga" 0 0 0 2
|
||||||
|
@ -361,6 +361,38 @@ public:
|
|||||||
|
|
||||||
void TMancati_app::main_loop()
|
void TMancati_app::main_loop()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
// TEST PER TDB_recordset
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
TString qq;
|
||||||
|
qq << "CONNECT(localhost@fp_cortelezzi, fp, fp, MSSQL)\n\
|
||||||
|
SELECT PZ_TIPOPROT AS TIPO_PROT, YEAR(P7_DATA) AS ANNO, P7_TIPODOC AS[TIPO_SDI], P7_NUMERO AS[NUM_DOC], P7_DATA AS[DATA_DOC], PQ_IMPTOTDOC AS[TOT_DOC], P2_ANADENOMIN AS[RAG_SOC], P2_ANANOME AS NOME, P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS[P_IVA], P2_CODFISCALE AS[COD_FISC], P2_FISCIVAPAESE AS[COD_PAESE],\n\
|
||||||
|
COUNT(PP_ATTACHMENT) AS ATTACHMENT, P1_CODDEST AS[COD_SDI], PU_PEC AS PEC, P1_KEYPRGINVIO AS KEYPROG, P1_KEYHEADERFATT AS KEYHEAD, P1_KEYBODYFATT AS KEYFATT, PZ_TIPOPROT AS[TIPO_PROT], PZ_NUMPROT AS[NUM_PROT], PZ_ANNOPROT AS[ANNO_PROT], PZ_TIPOCF AS[TIPO_CF], PZ_CLIFOR AS[COD_CLIFOR]\n\
|
||||||
|
FROM PAA0100F PAA01\n\
|
||||||
|
JOIN PAA0200F PAA02 ON P1_KEYPRGINVIO = P2_KEYPRGINVIO and P1_KEYHEADERFATT = P2_KEYHEADERFATT and P1_KEYBODYFATT = P2_KEYBODYFATT\n\
|
||||||
|
JOIN PAA0700F PAA07 ON P1_KEYPRGINVIO = P7_KEYPRGINVIO and P1_KEYHEADERFATT = P7_KEYHEADERFATT and P1_KEYBODYFATT = P7_KEYBODYFATT\n\
|
||||||
|
JOIN PAA2700F PAA27 ON P1_KEYPRGINVIO = PQ_KEYPRGINVIO and P1_KEYHEADERFATT = PQ_KEYHEADERFATT and P1_KEYBODYFATT = PQ_KEYBODYFATT\n\
|
||||||
|
LEFT JOIN PAA2600F PAA26 ON P1_KEYPRGINVIO = PP_KEYPRGINVIO and P1_KEYHEADERFATT = PP_KEYHEADERFATT and P1_KEYBODYFATT = PP_KEYBODYFATT\n\
|
||||||
|
LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and P1_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n\
|
||||||
|
LEFT JOIN FPPRO00F FPPRO ON P1_KEYPRGINVIO = PZ_KEYPRGINVIO and P1_KEYHEADERFATT = PZ_KEYHEADERFATT and P1_KEYBODYFATT = PZ_KEYBODYFATT\n\
|
||||||
|
WHERE P7_DATA >= '20190301' AND P7_DATA <= '20190315'\n\
|
||||||
|
GROUP BY YEAR(P7_DATA), P7_TIPODOC, P7_NUMERO, P7_DATA, PQ_IMPTOTDOC, P2_ANADENOMIN, P2_ANANOME, P2_ANACOGNOME, P2_FISCIVACOD, P2_CODFISCALE, P2_FISCIVAPAESE,\n\
|
||||||
|
P1_CODDEST, PU_PEC, P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, PZ_TIPOPROT, PZ_NUMPROT, PZ_ANNOPROT, PZ_TIPOCF, PZ_CLIFOR\n\
|
||||||
|
ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC;";
|
||||||
|
|
||||||
|
TDB_recordset my_rec(qq, true);
|
||||||
|
my_rec.set("SELECT * FROM PAA0100F;");
|
||||||
|
int n = my_rec.items();
|
||||||
|
my_rec.move_to(0);
|
||||||
|
TRecordset_column_info info = my_rec.column_info(1);
|
||||||
|
bool conn = my_rec.is_connected();
|
||||||
|
int col = my_rec.columns();
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
TMancati_mask mask;
|
TMancati_mask mask;
|
||||||
while (mask.run() == K_ENTER)
|
while (mask.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,47 @@
|
|||||||
|
|
||||||
#define SQL_FLD "sql/"
|
#define SQL_FLD "sql/"
|
||||||
#define MANCATA_SEND "S" // Se la mail di mancata consegna è già stata inviata P1_ERRINT è segnato con "S"
|
#define MANCATA_SEND "S" // Se la mail di mancata consegna è già stata inviata P1_ERRINT è segnato con "S"
|
||||||
|
|
||||||
|
// Typedef per aiutare a capire cosa sono le chiavi
|
||||||
|
typedef TString MCodice_riga;
|
||||||
|
typedef TString MTipo_documento;
|
||||||
|
|
||||||
|
// Mannaggia il fruttivendolo
|
||||||
|
class TFP_righe_custom : public TObject
|
||||||
|
{
|
||||||
|
bool _loaded;
|
||||||
|
|
||||||
|
struct TCustCol
|
||||||
|
{
|
||||||
|
TString _col_qta;
|
||||||
|
// Le colonne prezzo e imp non sono lette se di default
|
||||||
|
TString _col_prezzo;
|
||||||
|
TString _col_imponibile;
|
||||||
|
TString _col_nota_piede;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Mappa con in chiave COD_RIGA, TIPO_DOC
|
||||||
|
std::map<MCodice_riga, std::map<MTipo_documento, TCustCol>> _custom_table;
|
||||||
|
|
||||||
|
void load_map();
|
||||||
|
static TCustCol& get_no_custom();
|
||||||
|
TCustCol& get(const TString& codriga, const TString& tipodoc);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
static void write_ini_npf(TToken_string* r);
|
||||||
|
static TString get_ini_npf(TString codnum, TString tipodoc);
|
||||||
|
static void save_sheet(TSheet_field& sheet_field);
|
||||||
|
static void load_sheet(TSheet_field& sheet_field);
|
||||||
|
|
||||||
|
const TString& get_qta(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_qta; }
|
||||||
|
const TString& get_prezzo(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_prezzo; }
|
||||||
|
const TString& get_imponibile(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_imponibile; }
|
||||||
|
const TString& get_nota_piede(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_nota_piede; }
|
||||||
|
|
||||||
|
TFP_righe_custom();
|
||||||
|
};
|
||||||
|
|
||||||
enum { no_pdf = -1, pdf_ok = 0, no_alleg = -2};
|
enum { no_pdf = -1, pdf_ok = 0, no_alleg = -2};
|
||||||
|
|
||||||
// Ritorna la connessione al DB paf secondo i parametri impostati nel programma di configurazione
|
// Ritorna la connessione al DB paf secondo i parametri impostati nel programma di configurazione
|
||||||
@ -137,6 +178,7 @@ private:
|
|||||||
TPaf_container _paf_container;
|
TPaf_container _paf_container;
|
||||||
int _count_r_conai;
|
int _count_r_conai;
|
||||||
bool _nascondi_sconti_righe_fatt;
|
bool _nascondi_sconti_righe_fatt;
|
||||||
|
TFP_righe_custom _righe_custom;
|
||||||
|
|
||||||
// Classe interna per gestire righe aggiuntive in riepilogo
|
// Classe interna per gestire righe aggiuntive in riepilogo
|
||||||
class TRiepilogo_agg
|
class TRiepilogo_agg
|
||||||
@ -195,7 +237,7 @@ protected:
|
|||||||
bool add_row_art(long& riga_art, const TString& codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
bool add_row_art(long& riga_art, const TString& codice_tipo, const TString& codice_valore, TPaf_record& paf);
|
||||||
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
bool add_row_alleg(TFilename& file, long& nprogr, TPaf_record& paf);
|
||||||
const TString& converti_prezzo(const real& prezzo) const;
|
const TString& converti_prezzo(const real& prezzo) const;
|
||||||
void set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const;
|
void set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc);
|
||||||
void add_ritenuta(const TDocumentoEsteso& doc, const TSpesa_prest& sp, TPaf_record& paf0700f) const;
|
void add_ritenuta(const TDocumentoEsteso& doc, const TSpesa_prest& sp, TPaf_record& paf0700f) const;
|
||||||
bool add_riepilogo_iva(TPaf_record& paf2200f, const TCodiceIVA& cod_iva, const char* eiva, const real& imponibile = ZERO, const real& imposta = ZERO);
|
bool add_riepilogo_iva(TPaf_record& paf2200f, const TCodiceIVA& cod_iva, const char* eiva, const real& imponibile = ZERO, const real& imposta = ZERO);
|
||||||
bool add_cassa_previdenziale(TRiga_documento& rdoc);
|
bool add_cassa_previdenziale(TRiga_documento& rdoc);
|
||||||
@ -246,6 +288,7 @@ public:
|
|||||||
const bool is_f8() const;
|
const bool is_f8() const;
|
||||||
const bool get_check_not_block() const;
|
const bool get_check_not_block() const;
|
||||||
const TString& get_body_mail(int idx = -1) const;
|
const TString& get_body_mail(int idx = -1) const;
|
||||||
|
const TString& get_npf(const char* codnum, const char* tipodoc, int idx) const;
|
||||||
const bool get_no_sconti_fatt() const;
|
const bool get_no_sconti_fatt() const;
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
@ -264,9 +307,12 @@ public:
|
|||||||
void set_f8(bool f8) const;
|
void set_f8(bool f8) const;
|
||||||
void set_check_not_block(bool not_block) const;
|
void set_check_not_block(bool not_block) const;
|
||||||
void set_body_mail(const char* msg, int idx = -1) const;
|
void set_body_mail(const char* msg, int idx = -1) const;
|
||||||
|
void set_npf(const char * codnum, const char * tipodoc, const char* msg, int idx) const;
|
||||||
void set_no_sconti_fatt(const bool no_sconti_fatt) const;
|
void set_no_sconti_fatt(const bool no_sconti_fatt) const;
|
||||||
|
|
||||||
void remove_para_ini(int idx);
|
void remove_para_ini(int idx);
|
||||||
|
void remove_npf_ini(const char* codnum, const char* tipodoc, int idx);
|
||||||
|
void remove_line_npf(const char* codnum, const char* tipodoc, int idx) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline TFP_settings& fp_settings()
|
inline TFP_settings& fp_settings()
|
||||||
@ -296,42 +342,6 @@ public:
|
|||||||
TFP_selected_docs();
|
TFP_selected_docs();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Typedef per aiutare a capire cosa sono le chiavi
|
|
||||||
typedef TString MCodice_riga;
|
|
||||||
typedef TString MTipo_documento;
|
|
||||||
|
|
||||||
// Mannaggia il fruttivendolo
|
|
||||||
class TFP_righe_custom : public TObject
|
|
||||||
{
|
|
||||||
bool _loaded;
|
|
||||||
|
|
||||||
struct TCustCol
|
|
||||||
{
|
|
||||||
TString _col_qta;
|
|
||||||
// Le colonne prezzo e imp non sono lette se di default
|
|
||||||
TString _col_prezzo;
|
|
||||||
TString _col_imponibile;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Mappa con in chiave COD_RIGA, TIPO_DOC
|
|
||||||
std::map<MCodice_riga, std::map<MTipo_documento, TCustCol>> _custom_table;
|
|
||||||
|
|
||||||
void load_map();
|
|
||||||
static TCustCol& get_no_custom();
|
|
||||||
TCustCol& get(const TString& codriga, const TString& tipodoc);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
static void save_sheet(TSheet_field& sheet_field);
|
|
||||||
static void load_sheet(TSheet_field& sheet_field);
|
|
||||||
|
|
||||||
const TString& get_qta(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_qta; }
|
|
||||||
const TString& get_prezzo(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_prezzo; }
|
|
||||||
const TString& get_imponibile(const TString& codriga, const TString& tipodoc) { return get(codriga, tipodoc)._col_imponibile; }
|
|
||||||
|
|
||||||
TFP_righe_custom();
|
|
||||||
};
|
|
||||||
|
|
||||||
class TFp_mail_sender
|
class TFp_mail_sender
|
||||||
{
|
{
|
||||||
int _anno;
|
int _anno;
|
||||||
|
@ -1161,16 +1161,14 @@ const TString& TDoc_fp::converti_prezzo(const real& prezzo) const
|
|||||||
ret << prezzo;
|
ret << prezzo;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc) const
|
void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TRiga_documento* rdoc)
|
||||||
{
|
{
|
||||||
// Setto l'unità di misura
|
// Setto l'unità di misura
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
|
|
||||||
static TFP_righe_custom righe_custom;
|
const TString& field_qta = _righe_custom.get_qta(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
||||||
|
const TString& field_prezzo = _righe_custom.get_prezzo(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
||||||
const TString& field_qta = righe_custom.get_qta(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
const TString& field_imponibile = _righe_custom.get_imponibile(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
||||||
const TString& field_prezzo = righe_custom.get_prezzo(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
|
||||||
const TString& field_imponibile = righe_custom.get_imponibile(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
|
||||||
|
|
||||||
const bool custom_prezzo = field_prezzo.full();
|
const bool custom_prezzo = field_prezzo.full();
|
||||||
|
|
||||||
@ -2014,6 +2012,22 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString& nota_piede_fatt = _righe_custom.get_nota_piede(rdoc->tipo().codice(), rdoc->doc().tipo().codice());
|
||||||
|
if(nota_piede_fatt.full())
|
||||||
|
{
|
||||||
|
reset(paf1800f);
|
||||||
|
paf1800f.set("PI_NUMEROLINEA", riga);
|
||||||
|
reset(paf3000f);
|
||||||
|
paf3000f.set("PT_RIFNUMLINEA", riga);
|
||||||
|
paf3000f.set("PT_COMMENTO", nota_piede_fatt.left(900));
|
||||||
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
|
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
||||||
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
|
set_IVA(_codivadefault, paf1800f);
|
||||||
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
|
riga++;
|
||||||
|
}
|
||||||
|
|
||||||
// </DatiBeniServizi>
|
// </DatiBeniServizi>
|
||||||
// <DatiDDT>
|
// <DatiDDT>
|
||||||
// Metto qua i dati DDT per capire se la fattura è accompagnatoria o deriva da bolla
|
// Metto qua i dati DDT per capire se la fattura è accompagnatoria o deriva da bolla
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#define FP_F8 "f8"
|
#define FP_F8 "f8"
|
||||||
#define FP_CHECK_NOT_BLOCK "checknotblock"
|
#define FP_CHECK_NOT_BLOCK "checknotblock"
|
||||||
#define FP_MAIL "mail"
|
#define FP_MAIL "mail"
|
||||||
|
#define FP_NOTA_PIEDE_F "npf" // Nota piede fattura
|
||||||
#define FP_CHECK_NO_SCONTI_FATT "noscontifatt"
|
#define FP_CHECK_NO_SCONTI_FATT "noscontifatt"
|
||||||
|
|
||||||
// Sheet fp0300
|
// Sheet fp0300
|
||||||
@ -125,6 +126,12 @@ const TString& TFP_settings::get_body_mail(int idx) const
|
|||||||
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 * codnum, const char * tipodoc, int idx) const
|
||||||
|
{
|
||||||
|
TString name; name << FP_NOTA_PIEDE_F << "_" << codnum << "-" << tipodoc;
|
||||||
|
return ini_get_string(FILE_CONFIG, FILE_SECTION, name, "FERMATIostrega", idx);
|
||||||
|
}
|
||||||
|
|
||||||
const bool TFP_settings::get_no_sconti_fatt() const
|
const bool TFP_settings::get_no_sconti_fatt() const
|
||||||
{
|
{
|
||||||
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);
|
||||||
@ -205,6 +212,13 @@ void TFP_settings::set_body_mail(const char* msg, int idx) const
|
|||||||
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
|
||||||
|
void TFP_settings::set_npf(const char * codnum, const char * tipodoc, const char* msg, int idx) const
|
||||||
|
{
|
||||||
|
TString name; name << FP_NOTA_PIEDE_F << "_" << codnum << "-" << tipodoc;
|
||||||
|
ini_set_string(FILE_CONFIG, FILE_SECTION, name, msg, idx);
|
||||||
|
}
|
||||||
|
|
||||||
void TFP_settings::set_no_sconti_fatt(const bool no_sconti_fatt) const
|
void TFP_settings::set_no_sconti_fatt(const bool no_sconti_fatt) const
|
||||||
{
|
{
|
||||||
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);
|
||||||
@ -215,6 +229,19 @@ void TFP_settings::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 * codnum, const char * tipodoc, int idx)
|
||||||
|
{
|
||||||
|
TString name; name << FP_NOTA_PIEDE_F << "_" << codnum << "-" << tipodoc;
|
||||||
|
ini_remove(FILE_CONFIG, FILE_SECTION, name, idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rimuove linea ini in eccesso per nota piede fattura
|
||||||
|
void TFP_settings::remove_line_npf(const char * codnum, const char * tipodoc, int idx) const
|
||||||
|
{
|
||||||
|
TString name; name << FP_NOTA_PIEDE_F << "_" << codnum << "-" << tipodoc;
|
||||||
|
ini_remove(FILE_CONFIG, FILE_SECTION, name, idx);
|
||||||
|
}
|
||||||
|
|
||||||
TRectype TFP_selected_docs::fill_rectype() const
|
TRectype TFP_selected_docs::fill_rectype() const
|
||||||
{
|
{
|
||||||
TRectype r(LF_TABMOD);
|
TRectype r(LF_TABMOD);
|
||||||
@ -307,6 +334,44 @@ TFP_righe_custom::TCustCol& TFP_righe_custom::get(const TString& codriga, const
|
|||||||
return get_no_custom();
|
return get_no_custom();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TFP_righe_custom::write_ini_npf(TToken_string* r)
|
||||||
|
{
|
||||||
|
// Prendo memo di ogni riga e la suddivido per gli a capo
|
||||||
|
TToken_string msg(r->get(5), '\n');
|
||||||
|
/* Vado a salvare in un config .ini tipo-riga/tipo-doc/messaggio su piu righe */
|
||||||
|
int indx = 0;
|
||||||
|
TString codnum, tipodoc; codnum << r->get(1); tipodoc << r->get(0);
|
||||||
|
|
||||||
|
// Conto quanti ne avevo salvati prima nel file ini per poi controllare
|
||||||
|
// che non sto salvando meno di quelli che ci sono già
|
||||||
|
int previous_indx = 0;
|
||||||
|
for (TString row = fp_settings().get_npf(codnum, tipodoc, previous_indx); row != "FERMATIostrega"; row = fp_settings().get_npf(codnum, tipodoc, previous_indx))
|
||||||
|
previous_indx++;
|
||||||
|
// Vado a salvare ogni riga nel file ini
|
||||||
|
for (const char* row = msg.get(); row; row = msg.get())
|
||||||
|
fp_settings().set_npf(codnum, tipodoc, row, indx++);
|
||||||
|
|
||||||
|
if (indx < previous_indx)
|
||||||
|
{
|
||||||
|
for (int i = indx; i < previous_indx; i++)
|
||||||
|
fp_settings().remove_npf_ini(codnum, tipodoc, indx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TString TFP_righe_custom::get_ini_npf(TString codnum, TString tipodoc)
|
||||||
|
{
|
||||||
|
TString msg; msg.cut(0);
|
||||||
|
|
||||||
|
int indx = 0;
|
||||||
|
for (TString row = fp_settings().get_npf(codnum, tipodoc, indx); row != "FERMATIostrega"; row = fp_settings().get_npf(codnum, tipodoc, indx))
|
||||||
|
{
|
||||||
|
if(indx++ > 0)
|
||||||
|
msg << '\n';
|
||||||
|
msg << row;
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
void TFP_righe_custom::load_map()
|
void TFP_righe_custom::load_map()
|
||||||
{
|
{
|
||||||
TRelation rel(LF_TABMOD);
|
TRelation rel(LF_TABMOD);
|
||||||
@ -321,6 +386,7 @@ void TFP_righe_custom::load_map()
|
|||||||
app._col_qta = rec.get(FP_SHT_COL_QTA).full() ? rec.get(FP_SHT_COL_QTA) : FP_SHT_DEF_QTA;
|
app._col_qta = rec.get(FP_SHT_COL_QTA).full() ? rec.get(FP_SHT_COL_QTA) : FP_SHT_DEF_QTA;
|
||||||
app._col_prezzo = rec.get(FP_SHT_COL_PREZZO).full() ? rec.get(FP_SHT_COL_PREZZO) : FP_SHT_DEF_PREZZO;
|
app._col_prezzo = rec.get(FP_SHT_COL_PREZZO).full() ? rec.get(FP_SHT_COL_PREZZO) : FP_SHT_DEF_PREZZO;
|
||||||
app._col_imponibile = rec.get(FP_SHT_COL_IMPONIBILE).full() ? rec.get(FP_SHT_COL_IMPONIBILE) : FP_SHT_DEF_IMPONIBILE;
|
app._col_imponibile = rec.get(FP_SHT_COL_IMPONIBILE).full() ? rec.get(FP_SHT_COL_IMPONIBILE) : FP_SHT_DEF_IMPONIBILE;
|
||||||
|
app._col_nota_piede = rec.get(FP_NOTA_PIEDE_F);
|
||||||
}
|
}
|
||||||
|
|
||||||
_loaded = true;
|
_loaded = true;
|
||||||
@ -362,6 +428,8 @@ void TFP_righe_custom::save_sheet(TSheet_field& sheet_field)
|
|||||||
rec.put(FP_SHT_COL_IMPONIBILE, r->get());
|
rec.put(FP_SHT_COL_IMPONIBILE, r->get());
|
||||||
|
|
||||||
rec.write(tabmod);
|
rec.write(tabmod);
|
||||||
|
|
||||||
|
write_ini_npf(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,6 +449,7 @@ void TFP_righe_custom::load_sheet(TSheet_field& sheet_field)
|
|||||||
row.add(cur_rec.get(FP_SHT_COL_QTA));
|
row.add(cur_rec.get(FP_SHT_COL_QTA));
|
||||||
row.add(cur_rec.get(FP_SHT_COL_PREZZO));
|
row.add(cur_rec.get(FP_SHT_COL_PREZZO));
|
||||||
row.add(cur_rec.get(FP_SHT_COL_IMPONIBILE));
|
row.add(cur_rec.get(FP_SHT_COL_IMPONIBILE));
|
||||||
|
row.add(get_ini_npf(cur_rec.get(FP_SHT_TIPORIGA), cur_rec.get(FP_SHT_TIPODOC)));
|
||||||
}
|
}
|
||||||
sheet_field.force_update();
|
sheet_field.force_update();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user