Patch level : 12.0 646
Files correlati : ba,cg,fp Commento : - Modificata tabella tabcom, aggiunto campo S13 per vettori - Rifatta gestione vettori per fatture accompagnatorie - Corretti errore pec in esportazione fp - Aggiunta valorizzazione blocco fattura accompagnatoria - Rifatta gestione filtri fattura elettronica con codice numerazione in riga dello sheet - Aggiunte macro per non inviare più documenti a clienti - Aggiunto controllo sullo stato del documento, se non è almeno stampato viene saltato - Aggiunto salto righe con descrizione vuota - Cambiato controllo che l'articolo sia corretto, la funzione ok() non verifica sta cosa - Cambiata valorizzazione codiva per righe descrizione e plafond, così da evitare l'errore in DatiRiepilogoIVA - Aggiunto controllo sul pagamento, adesso non escono più i warning indesiderati
This commit is contained in:
parent
30e9c1876a
commit
baef2bfba4
@ -1,3 +1,3 @@
|
|||||||
4
|
4
|
||||||
1
|
1
|
||||||
%tabcom|0|0|1210|0|Tabelle comuni|1500||
|
%tabcom|0|0|1280|0|Tabelle comuni|1500||
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
4
|
4
|
||||||
89
|
90
|
||||||
COD|1|3|0|
|
COD|1|3|0|
|
||||||
CODTAB|1|25|0|
|
CODTAB|1|25|0|
|
||||||
S0|1|70|0|
|
S0|1|70|0|
|
||||||
@ -15,6 +15,7 @@ S9|1|5|0|
|
|||||||
S10|1|5|0|
|
S10|1|5|0|
|
||||||
S11|1|5|0|
|
S11|1|5|0|
|
||||||
S12|1|5|0|
|
S12|1|5|0|
|
||||||
|
S13|1|70|0|
|
||||||
I0|3|7|0|
|
I0|3|7|0|
|
||||||
I1|3|7|0|
|
I1|3|7|0|
|
||||||
I2|3|7|0|
|
I2|3|7|0|
|
||||||
|
@ -1667,7 +1667,7 @@ END
|
|||||||
STRING F_PADESTIN 7
|
STRING F_PADESTIN 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 19 "Destinatario "
|
PROMPT 2 19 "Destinatario "
|
||||||
FLAGS "U"
|
FLAGS ""
|
||||||
MODULES PA,FP
|
MODULES PA,FP
|
||||||
HELP "Codice ufficio dell destinatario della fattura elettronica"
|
HELP "Codice ufficio dell destinatario della fattura elettronica"
|
||||||
FIELD LF_CFVEN->PADESTIN
|
FIELD LF_CFVEN->PADESTIN
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "cgtbbnp.h"
|
#include "cgtbbnp.h"
|
||||||
#include "cgtbesc.h"
|
#include "cgtbesc.h"
|
||||||
#include "cgtbnot.h"
|
#include "cgtbnot.h"
|
||||||
|
#include "cgtbvet.h"
|
||||||
|
|
||||||
#include "cglib01.h"
|
#include "cglib01.h"
|
||||||
|
|
||||||
@ -148,6 +149,13 @@ int CGTTable_application::read(TMask& m)
|
|||||||
if (table_name == TAB_NOTECLI)
|
if (table_name == TAB_NOTECLI)
|
||||||
glue_string();
|
glue_string();
|
||||||
|
|
||||||
|
else if (table_name == "%VET" && err == NOERR)
|
||||||
|
{
|
||||||
|
// Prendo il vecchio campo della P.IVA e lo sbatto in quello nuovo
|
||||||
|
if(m.get(F_PAIV).empty())
|
||||||
|
m.set(F_PAIV, get_relation()->curr().get("S3").mid(20, 12));
|
||||||
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#define F_CODVETT 101
|
#define F_CODVETT 101
|
||||||
#define F_RAGSO 102
|
#define F_RAGSO 102
|
||||||
|
#define F_RAGSOA 121
|
||||||
#define F_IND 103
|
#define F_IND 103
|
||||||
#define F_TEL 104
|
#define F_TEL 104
|
||||||
#define F_PTEL 105
|
#define F_PTEL 105
|
||||||
@ -16,11 +17,12 @@
|
|||||||
#define F_DENCOM 114
|
#define F_DENCOM 114
|
||||||
#define F_NUM 115
|
#define F_NUM 115
|
||||||
#define F_PFAX 116
|
#define F_PFAX 116
|
||||||
#define F_PTELEX 117
|
#define F_EORI 117
|
||||||
#define F_STATOPAIV 118
|
#define F_STATOPAIV 118
|
||||||
#define F_PAIV 119
|
#define F_PAIV 119
|
||||||
#define F_ALBO 120
|
#define F_ALBO 120
|
||||||
|
#define F_COFI 122
|
||||||
|
#define F_ISFISICA 123
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,37 +28,70 @@ OUTPUT F_RAGSO S0
|
|||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_RAGSO 50
|
BOOLEAN F_ISFISICA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Ragione sociale "
|
PROMPT 40 2 "Persona Fisica"
|
||||||
|
FIELD B0
|
||||||
|
HELPT "Indica se è una persona fisica"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSO 30
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Cognome/Ragione sociale "
|
||||||
HELP "Ragione sociale del vettore"
|
HELP "Ragione sociale del vettore"
|
||||||
FIELD S0
|
FIELD S0[1,30]
|
||||||
USE %VET KEY 2
|
USE %VET KEY 2
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
INPUT S0 F_RAGSO
|
INPUT S0 F_RAGSO
|
||||||
DISPLAY "Codice vettore" CODTAB
|
DISPLAY "Codice vettore" CODTAB
|
||||||
DISPLAY "Ragione sociale@50" S0
|
DISPLAY "Ragione sociale@50" S0
|
||||||
OUTPUT F_CODVETT CODTAB
|
OUTPUT F_CODVETT CODTAB
|
||||||
OUTPUT F_RAGSO S0
|
OUTPUT F_RAGSO S0[1,30]
|
||||||
|
OUTPUT F_RAGSO S0[31,50]
|
||||||
KEY 2
|
KEY 2
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOA 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Nome/Seconda parte Rag. Soc."
|
||||||
|
FIELD S0[31,50]
|
||||||
|
USE %VET KEY 2
|
||||||
|
HELP "Seconda parte della ragione sociale o nome"
|
||||||
|
MESSAGE COPY,6@
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
STRING F_STATOPAIV 2
|
STRING F_STATOPAIV 2
|
||||||
BEGIN
|
|
||||||
PROMPT 50 50 "Partita IVA "
|
|
||||||
FLAGS "H"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_PAIV 12
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Partita IVA "
|
PROMPT 2 6 "Partita IVA "
|
||||||
FIELD S3[21,32]
|
FIELD S3[49,51]
|
||||||
HELP "Partita IVA del cliente/fornitore"
|
HELP "Codice ISO dello stato"
|
||||||
VALIDATE PI_FUNC F_STATOPAIV
|
FLAGS "U"
|
||||||
CHECKTYPE NORMAL
|
USE %SCE
|
||||||
|
INPUT CODTAB F_STATOPAIV
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_STATOPAIV CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 75 7
|
STRING F_PAIV 28 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 6 ""
|
||||||
|
FIELD S13[1,28]
|
||||||
|
HELP "Partita IVA del vettore"
|
||||||
|
VALIDATE PI_FUNC F_STATOPAIV
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_COFI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 38 6 "Ident. fiscale"
|
||||||
|
FIELD S13[29,45]
|
||||||
|
HELP "Codice fiscale del vettore"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 75 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Recapito"
|
PROMPT 1 7 "Recapito"
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
@ -165,15 +198,22 @@ BEGIN
|
|||||||
FIELD S3[33,48]
|
FIELD S3[33,48]
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 75 5
|
STRING F_EORI 17
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 "Numeri telefonici"
|
PROMPT 2 13 "Codice EORI "
|
||||||
|
FIELD S2[1,17]
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 75 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 15 "Numeri telefonici"
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PTEL 10
|
STRING F_PTEL 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Telefono "
|
PROMPT 2 16 "Telefono "
|
||||||
HELP "Prefisso telefonico del vettore"
|
HELP "Prefisso telefonico del vettore"
|
||||||
FIELD S5[1,10]
|
FIELD S5[1,10]
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
@ -181,7 +221,7 @@ END
|
|||||||
|
|
||||||
STRING F_TEL 20
|
STRING F_TEL 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 15 ""
|
PROMPT 30 16 ""
|
||||||
HELP "Numero telefonico del vettore"
|
HELP "Numero telefonico del vettore"
|
||||||
FIELD S3[1,20]
|
FIELD S3[1,20]
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
@ -189,7 +229,7 @@ END
|
|||||||
|
|
||||||
STRING F_PFAX 10
|
STRING F_PFAX 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 16 "Fax "
|
PROMPT 2 17 "Fax "
|
||||||
HELP "Numero di Fax del vettore"
|
HELP "Numero di Fax del vettore"
|
||||||
FIELD S5[11,20]
|
FIELD S5[11,20]
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
@ -197,29 +237,12 @@ END
|
|||||||
|
|
||||||
STRING F_FAX 20
|
STRING F_FAX 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 16 ""
|
PROMPT 30 17 ""
|
||||||
HELP "Numero di Fax del vettore"
|
HELP "Numero di Fax del vettore"
|
||||||
FIELD S4
|
FIELD S4
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PTELEX 10
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 17 "Telex "
|
|
||||||
HELP "Numero di Telex del vettore"
|
|
||||||
FIELD S2[1,10]
|
|
||||||
FLAGS "U"
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_TELEX 20
|
|
||||||
BEGIN
|
|
||||||
PROMPT 30 17 ""
|
|
||||||
HELP "Numero di Telex del vettore"
|
|
||||||
FIELD S2[11,30]
|
|
||||||
FLAGS "U"
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include "fp0.h"
|
#include "fp0.h"
|
||||||
#include "fp0300a.h"
|
#include "fp0300a.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Globals
|
// Globals
|
||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#define LEN_HFATT 20
|
#define LEN_HFATT 20
|
||||||
#define LEN_BFATT 50
|
#define LEN_BFATT 50
|
||||||
|
#define MAPPA_DOC_SCELTI map<TString,TToken_string>
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TPa_mask
|
// TPa_mask
|
||||||
@ -28,12 +29,14 @@
|
|||||||
class TPA_mask : public TAutomask
|
class TPA_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
enum {_codnum, _tipodoc, _dastato, _astato, _tiposdi};
|
||||||
|
|
||||||
void set_filter_changed();
|
void set_filter_changed();
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
void next_page(int p);
|
void next_page(int p);
|
||||||
bool check_not_empty();
|
bool check_not_empty();
|
||||||
bool check_full_fields() const;
|
bool check_full_fields() const;
|
||||||
bool check_tipo_doc(const TTipo_documento& td);
|
bool check_doc_filter(const TDocumentoEsteso& td);
|
||||||
void fill();
|
void fill();
|
||||||
void init();
|
void init();
|
||||||
bool is_fattura(const TRectype& doc) const;
|
bool is_fattura(const TRectype& doc) const;
|
||||||
@ -41,7 +44,7 @@ protected:
|
|||||||
void load_all_fields();
|
void load_all_fields();
|
||||||
|
|
||||||
bool _filter_changed;
|
bool _filter_changed;
|
||||||
unique_ptr<TToken_string> _tipi_doc_scelti;
|
unique_ptr<MAPPA_DOC_SCELTI> _doc_scelti;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TPA_mask() : TAutomask("fp0300a"), _filter_changed(true)
|
TPA_mask() : TAutomask("fp0300a"), _filter_changed(true)
|
||||||
@ -66,32 +69,57 @@ void TPA_mask::save_all_fields() const
|
|||||||
{
|
{
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI));
|
ini_set_string(CONFIG_DITTA, "fp", "dataini", get(F_DATAINI));
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND));
|
ini_set_string(CONFIG_DITTA, "fp", "dataend", get(F_DATAEND));
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "codnum", get(F_CODNUM));
|
|
||||||
|
|
||||||
TToken_string tipidocs = get_tmp_string();
|
TToken_string tipidocs(get_tmp_string(), ';');
|
||||||
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
||||||
{
|
{
|
||||||
tipidocs.add(r->get(0));
|
TToken_string app;
|
||||||
|
// Prendo tutta la riga tranne il cod sdi
|
||||||
|
app.add(r->get(_codnum));
|
||||||
|
app.add(r->get(_tipodoc));
|
||||||
|
app.add(r->get(_dastato));
|
||||||
|
app.add(r->get(_astato));
|
||||||
|
tipidocs.add(app);
|
||||||
}
|
}
|
||||||
ini_set_string(CONFIG_DITTA, "fp", "tipodocs", tipidocs);
|
ini_set_string(CONFIG_DITTA, "fp", "accepted_docs", tipidocs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPA_mask::load_all_fields()
|
void TPA_mask::load_all_fields()
|
||||||
{
|
{
|
||||||
set(F_DATAINI, ini_get_string(CONFIG_DITTA, "fp", "dataini"));
|
set(F_DATAINI, ini_get_string(CONFIG_DITTA, "fp", "dataini"));
|
||||||
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
|
||||||
set(F_CODNUM, ini_get_string(CONFIG_DITTA, "fp", "codnum"));
|
|
||||||
TToken_string tipidocs(ini_get_string(CONFIG_DITTA, "fp", "tipodocs"));
|
|
||||||
|
|
||||||
|
const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
|
||||||
|
//
|
||||||
auto& sheet = sfield(F_DOCUMENTI_TIPO);
|
auto& sheet = sfield(F_DOCUMENTI_TIPO);
|
||||||
sheet.hide();
|
sheet.hide();
|
||||||
FOR_EACH_STR_TOKEN(tipidocs, tok)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
if(s_accepted_docs.full())
|
||||||
|
{
|
||||||
|
// Nuova gestione avanzata!
|
||||||
|
FOR_EACH_STR_TOKEN(s_accepted_docs, tok)
|
||||||
|
{
|
||||||
TToken_string& row = sheet.row(-1);
|
TToken_string& row = sheet.row(-1);
|
||||||
row.add(tok);
|
row.add(tok);
|
||||||
row.add(TTipo_documento(tok).tipo_doc_sdi());
|
row.add(TTipo_documento(tok).tipo_doc_sdi());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Vecchia gestione ):
|
||||||
|
const TString& codnum = ini_get_string(CONFIG_DITTA, "fp", "codnum");
|
||||||
|
TToken_string tipidocs(ini_get_string(CONFIG_DITTA, "fp", "tipodocs"));
|
||||||
|
FOR_EACH_STR_TOKEN(tipidocs, tok)
|
||||||
|
{
|
||||||
|
TToken_string& row = sheet.row(-1);
|
||||||
|
row.add(codnum);
|
||||||
|
row.add(tok);
|
||||||
|
// Considero 1 e 9 come stati default?
|
||||||
|
row.add(1);
|
||||||
|
row.add(9);
|
||||||
|
row.add(TTipo_documento(tok).tipo_doc_sdi());
|
||||||
|
}
|
||||||
|
}
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
sheet.show();
|
sheet.show();
|
||||||
}
|
}
|
||||||
@ -119,9 +147,8 @@ TString& add_filter(const TString& field, const TString& from, const TString& to
|
|||||||
|
|
||||||
void TPA_mask::fill()
|
void TPA_mask::fill()
|
||||||
{
|
{
|
||||||
save_all_fields();
|
|
||||||
// Pulisco i tipi documento
|
// Pulisco i tipi documento
|
||||||
_tipi_doc_scelti.reset();
|
_doc_scelti.reset();
|
||||||
|
|
||||||
TSheet_field& docs = sfield(F_DOCS);
|
TSheet_field& docs = sfield(F_DOCS);
|
||||||
TString_array& sht = docs.rows_array();
|
TString_array& sht = docs.rows_array();
|
||||||
@ -130,6 +157,7 @@ void TPA_mask::fill()
|
|||||||
sht.destroy();
|
sht.destroy();
|
||||||
|
|
||||||
const TDate dal = get(F_DATAINI);
|
const TDate dal = get(F_DATAINI);
|
||||||
|
const TDate al = get(F_DATAEND);
|
||||||
TString filter_selected = get(F_FATTSEL);
|
TString filter_selected = get(F_FATTSEL);
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
@ -144,21 +172,18 @@ void TPA_mask::fill()
|
|||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
|
|
||||||
query << "USE 33 KEY 3" <<
|
query << "USE 33 KEY 3 \n" <<
|
||||||
"\nSELECT (33.TIPOCF=='C')&&" <<
|
"SELECT 33.TIPOCF==\"C\" \n" <<
|
||||||
"(33.CODNUM==#CODNUM)";
|
"JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
||||||
|
|
||||||
query << "\nJOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
|
||||||
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
"JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
|
||||||
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC\n" <<
|
"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" <<
|
||||||
"FROM DATADOC=#DADATADOC\n" <<
|
"FROM DATADOC=#DADATADOC \n" <<
|
||||||
"TO DATADOC=#ADATADOC";
|
"TO DATADOC=#ADATADOC";
|
||||||
|
|
||||||
TISAM_recordset rec(query);
|
TISAM_recordset rec(query);
|
||||||
|
|
||||||
rec.set_var("#CODNUM", get(F_CODNUM));
|
rec.set_var("#DADATADOC", dal);
|
||||||
rec.set_var("#DADATADOC", get_date(F_DATAINI));
|
rec.set_var("#ADATADOC", al);
|
||||||
rec.set_var("#ADATADOC", get_date(F_DATAEND));
|
|
||||||
|
|
||||||
TProgress_monitor pi(rec.items(), nullptr);
|
TProgress_monitor pi(rec.items(), nullptr);
|
||||||
|
|
||||||
@ -175,8 +200,10 @@ void TPA_mask::fill()
|
|||||||
const TRectype& doc = rec.cursor()->curr();
|
const TRectype& doc = rec.cursor()->curr();
|
||||||
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
||||||
|
|
||||||
|
// Controllo che la numerazione sia tra quelle giuste
|
||||||
|
|
||||||
// Controllo che il tipo documento sia OK
|
// Controllo che il tipo documento sia OK
|
||||||
if(!check_tipo_doc(td))
|
if(!check_doc_filter(doc))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool sent = false;
|
bool sent = false;
|
||||||
@ -373,20 +400,30 @@ bool TPA_mask::check_full_fields() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPA_mask::check_tipo_doc(const TTipo_documento& td)
|
bool TPA_mask::check_doc_filter(const TDocumentoEsteso& d)
|
||||||
{
|
{
|
||||||
// Mi precarico la tabella dei documenti scelti
|
const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC));
|
||||||
|
|
||||||
if(_tipi_doc_scelti == nullptr)
|
// Mi precarico la tabella dei documenti scelti
|
||||||
|
if(_doc_scelti == nullptr)
|
||||||
{
|
{
|
||||||
_tipi_doc_scelti.reset(new TToken_string());
|
_doc_scelti.reset(new MAPPA_DOC_SCELTI);
|
||||||
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
FOR_EACH_SHEET_ROW(sfield(F_DOCUMENTI_TIPO), n, r)
|
||||||
{
|
{
|
||||||
_tipi_doc_scelti->add(r->get(0));
|
MAPPA_DOC_SCELTI & app = *_doc_scelti;
|
||||||
|
TToken_string& tipi = app[r->get(_codnum)];
|
||||||
|
if(tipi.find(r->get(_tipodoc)) < 0)
|
||||||
|
{
|
||||||
|
tipi.add(r->get(_tipodoc));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Controllo innanzitutto che sia tra quelli scelti
|
// Controllo innanzitutto che sia tra quelli scelti
|
||||||
return _tipi_doc_scelti->find(td.codice()) >= 0 && td.tipo_doc_sdi().full() && td.reg_fisc().full();
|
return
|
||||||
|
_doc_scelti->find(d.codice_numerazione().codice()) != _doc_scelti->end() && // Esiste il codice numerazione
|
||||||
|
(*_doc_scelti)[d.codice_numerazione().codice()].find(td.codice()) >= 0 && // Se esiste il tipo documento
|
||||||
|
td.reg_fisc().full(); // Se ha il regime fiscale
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,14 +2,16 @@
|
|||||||
#define F_DATAINI 401
|
#define F_DATAINI 401
|
||||||
#define F_DATAEND 402
|
#define F_DATAEND 402
|
||||||
#define F_FATTSEL 403
|
#define F_FATTSEL 403
|
||||||
#define F_CODNUM 404
|
|
||||||
#define END_MASK 499
|
#define END_MASK 499
|
||||||
|
|
||||||
|
|
||||||
#define F_DOCUMENTI_TIPO 301
|
#define F_DOCUMENTI_TIPO 301
|
||||||
|
|
||||||
#define S_TIPODOCSEL 101
|
#define S_SELCODNUM 101
|
||||||
#define S_TIPODOCSDI 102
|
#define S_TIPODOCSEL 102
|
||||||
|
#define S_DASTATO 103
|
||||||
|
#define S_ASTATO 104
|
||||||
|
#define S_TIPODOCSDI 105
|
||||||
|
|
||||||
#define F_DOCS 201
|
#define F_DOCS 201
|
||||||
|
|
||||||
|
@ -15,40 +15,29 @@ END
|
|||||||
|
|
||||||
DATE F_DATAEND
|
DATE F_DATAEND
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 1 "Data finale "
|
PROMPT 50 1 "Data finale "
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
WARNING "La data finale non può essere minore della data iniziale"
|
WARNING "La data finale non può essere minore della data iniziale"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
RADIOBUTTON F_FATTSEL 3 35
|
RADIOBUTTON F_FATTSEL 3 80
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Fatture da visualizzare"
|
PROMPT 1 2 "Fatture da visualizzare"
|
||||||
ITEM "|Da inviare"
|
ITEM "|Da inviare"
|
||||||
ITEM "X|XML Generato"
|
ITEM "X|XML Generato"
|
||||||
ITEM "N|Notificato"
|
ITEM "N|Notificato"
|
||||||
ITEM "E|In errore"
|
ITEM "E|In errore"
|
||||||
|
FLAGS "Z"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODNUM 4
|
SPREADSHEET F_DOCUMENTI_TIPO 80 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 2 "Numerazione "
|
PROMPT 1 6 ""
|
||||||
HELP "Codice numerazione"
|
ITEM "Cod Num"
|
||||||
USE %NUM
|
|
||||||
INPUT CODTAB F_CODNUM
|
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_CODNUM CODTAB
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
FLAG "UPA"
|
|
||||||
WARNING "Numerazione assente"
|
|
||||||
KEY 1 2
|
|
||||||
END
|
|
||||||
|
|
||||||
SPREADSHEET F_DOCUMENTI_TIPO 25 5
|
|
||||||
BEGIN
|
|
||||||
PROMPT 40 3 ""
|
|
||||||
ITEM "Tipo Doc"
|
ITEM "Tipo Doc"
|
||||||
|
ITEM "Stato Iniziale"
|
||||||
|
ITEM "Stato Finale"
|
||||||
ITEM "Tipo SDI"
|
ITEM "Tipo SDI"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -68,7 +57,7 @@ BEGIN
|
|||||||
ITEM "Data\nDoc.@10"
|
ITEM "Data\nDoc.@10"
|
||||||
ITEM "Cliente"
|
ITEM "Cliente"
|
||||||
ITEM "Ragione Sociale@50"
|
ITEM "Ragione Sociale@50"
|
||||||
ITEM "Codice destinatario"
|
ITEM "Codice destinatario@20"
|
||||||
ITEM "Riferimento\nAmministrazione@20"
|
ITEM "Riferimento\nAmministrazione@20"
|
||||||
ITEM "Codice Fiscale@16"
|
ITEM "Codice Fiscale@16"
|
||||||
ITEM "Scissione\nPagamenti@9"
|
ITEM "Scissione\nPagamenti@9"
|
||||||
@ -79,11 +68,26 @@ END
|
|||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Riga tipo doc" -1 -1 25 3
|
PAGE "Riga tipo doc" -1 -1 50 3
|
||||||
|
|
||||||
|
STRING S_SELCODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Numerazione "
|
||||||
|
HELP "Codice numerazione"
|
||||||
|
USE %NUM
|
||||||
|
INPUT CODTAB S_SELCODNUM
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT S_SELCODNUM CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAG "UPA"
|
||||||
|
WARNING "Numerazione assente"
|
||||||
|
KEY 1 2
|
||||||
|
END
|
||||||
|
|
||||||
STRING S_TIPODOCSEL 4
|
STRING S_TIPODOCSEL 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Tipo doc "
|
PROMPT 15 1 "Tipo doc "
|
||||||
HELP "Codice tipo documento"
|
HELP "Codice tipo documento"
|
||||||
USE %TIP
|
USE %TIP
|
||||||
SELECT S3[37,40]!=""
|
SELECT S3[37,40]!=""
|
||||||
@ -97,9 +101,31 @@ BEGIN
|
|||||||
FLAG "UPA"
|
FLAG "UPA"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING S_DASTATO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Da stato "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB S_DASTATO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT S_DASTATO CODTAB
|
||||||
|
FLAG "U"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S_ASTATO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 15 2 "A stato "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB S_ASTATO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT S_ASTATO CODTAB
|
||||||
|
FLAG "U"
|
||||||
|
END
|
||||||
|
|
||||||
STRING S_TIPODOCSDI 4
|
STRING S_TIPODOCSDI 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Tipo Doc SDI"
|
PROMPT 30 1 "Tipo Doc SDI"
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -181,7 +207,7 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING S_UFFICIO 20
|
STRING S_UFFICIO 50 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 ""
|
PROMPT 1 5 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include "../fe/felib.h"
|
#include "../fe/felib.h"
|
||||||
#include "../cg/cglib03.h"
|
#include "../cg/cglib03.h"
|
||||||
|
#include "../ve/velib04.h"
|
||||||
|
|
||||||
#include <anagiu.h>
|
#include <anagiu.h>
|
||||||
#include <comuni.h>
|
#include <comuni.h>
|
||||||
@ -840,24 +841,37 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
_hfatt.cut(0);
|
_hfatt.cut(0);
|
||||||
_bfatt.cut(0);
|
_bfatt.cut(0);
|
||||||
|
|
||||||
|
if (!chiave_paf(doc, _hfatt, _bfatt))
|
||||||
|
return false;
|
||||||
|
log(-1, _bfatt);
|
||||||
|
|
||||||
|
#ifndef DBG
|
||||||
|
// Controllo se il documento è almeno in stato di stampa
|
||||||
|
if (doc.stato() < doc.tipo().stato_finale_stampa())
|
||||||
|
{
|
||||||
|
log(3, "Il documento non è stato ancora stampato, verrà saltato");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
TAnagrafica clifo(doc.clifor().tipo(), doc.clifor().codice());
|
TAnagrafica clifo(doc.clifor().tipo(), doc.clifor().codice());
|
||||||
|
|
||||||
TString8 coddest = doc.clifor().vendite().get("PADESTIN");
|
TString8 coddest;
|
||||||
TString pec = doc.clifor().get("PEC");
|
TString pec;
|
||||||
const bool is_pa = doc.clifor().get_int("ALLEG") == 7;
|
const bool is_pa = doc.clifor().get_int("ALLEG") == 7;
|
||||||
|
#ifndef DBG
|
||||||
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
|
if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
|
||||||
return false;
|
return false;
|
||||||
|
#else
|
||||||
|
coddest = "WSUHKZ";
|
||||||
|
#endif
|
||||||
|
|
||||||
const bool enapec = coddest == "0000000" && pec.full();
|
const bool enapec = coddest == "0000000" && pec.full();
|
||||||
|
|
||||||
const bool privato = coddest.len() != 6;
|
const bool privato = coddest.len() != 6;
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
|
||||||
if (!chiave_paf(doc, _hfatt, _bfatt))
|
|
||||||
return false;
|
|
||||||
log(-1, _bfatt);
|
|
||||||
|
|
||||||
const TFirm& firm = prefix().firm();
|
const TFirm& firm = prefix().firm();
|
||||||
const char* const paese = "IT";
|
const char* const paese = "IT";
|
||||||
TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
|
TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
|
||||||
@ -881,6 +895,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
ok &= insert(paf0100f);
|
ok &= insert(paf0100f);
|
||||||
// </DatiTrassmissione>
|
// </DatiTrassmissione>
|
||||||
|
|
||||||
|
#ifndef DBG
|
||||||
if (enapec)
|
if (enapec)
|
||||||
{
|
{
|
||||||
// <Datipec>
|
// <Datipec>
|
||||||
@ -892,6 +907,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
ok &= insert(paf3200f);
|
ok &= insert(paf3200f);
|
||||||
// </Datipec>
|
// </Datipec>
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// <CedentePrestatore>
|
// <CedentePrestatore>
|
||||||
TPaf_record paf0200f("PAF0200F");
|
TPaf_record paf0200f("PAF0200F");
|
||||||
@ -972,12 +988,17 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf0400f.set("P4_KEYBODYFATT", _bfatt);
|
paf0400f.set("P4_KEYBODYFATT", _bfatt);
|
||||||
remove(paf0400f);
|
remove(paf0400f);
|
||||||
|
|
||||||
|
#ifndef DBG
|
||||||
if (cliente.partita_IVA().full())
|
if (cliente.partita_IVA().full())
|
||||||
{
|
{
|
||||||
paf0400f.set("P4_FISCIVAPAESE", cliente.stato_partita_IVA());
|
paf0400f.set("P4_FISCIVAPAESE", cliente.stato_partita_IVA());
|
||||||
paf0400f.set("P4_FISCIVACOD", cliente.partita_IVA());
|
paf0400f.set("P4_FISCIVACOD", cliente.partita_IVA());
|
||||||
}
|
}
|
||||||
paf0400f.set("P4_CODFISC", cliente.codice_fiscale());
|
paf0400f.set("P4_CODFISC", cliente.codice_fiscale());
|
||||||
|
#else
|
||||||
|
paf0400f.set("P4_FISCIVAPAESE", "IT");
|
||||||
|
paf0400f.set("P4_FISCIVACOD", "00261170039");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (cliente.fisica())
|
if (cliente.fisica())
|
||||||
{
|
{
|
||||||
@ -1179,6 +1200,34 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
log(1, "CIG e CUP assenti");
|
log(1, "CIG e CUP assenti");
|
||||||
// <DatiBeniServizi>
|
// <DatiBeniServizi>
|
||||||
|
|
||||||
|
// <DatiDDT>
|
||||||
|
TPaf_record paf1700f("PAF1700F");
|
||||||
|
paf1700f.set("PG_KEYHEADERFATT", _hfatt);
|
||||||
|
paf1700f.set("PG_KEYBODYFATT", _bfatt);
|
||||||
|
remove(paf1700f); // Cancella la riga del vettore
|
||||||
|
|
||||||
|
if(doc.get("CODVETT1").full())
|
||||||
|
{
|
||||||
|
TRectype vet = cache().get("%VET", doc.get("CODVETT1"));
|
||||||
|
paf1700f.set("PG_FISCIVAPAESE", vet.get("S3").mid(48,2));
|
||||||
|
paf1700f.set("PG_FISCIVACODICE", vet.get("S13").mid(0, 28));
|
||||||
|
paf1700f.set("PG_CODICEFISCALE", vet.get("S13").mid(28, 16));
|
||||||
|
|
||||||
|
if (vet.get_bool("B0"))
|
||||||
|
{
|
||||||
|
paf1700f.set("PG_ANANOME", vet.get("S0").mid(0, 30));
|
||||||
|
paf1700f.set("PG_ANACOGNOME", vet.get("S0").mid(30, 20));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
paf1700f.set("PG_ANADENOMINAZ", vet.get("S0").mid(0, 50));
|
||||||
|
|
||||||
|
paf1700f.set("PG_ANACODEORI", vet.get("S2").mid(0, 17));
|
||||||
|
ok &= insert(paf1700f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// </DatiDDT>
|
||||||
|
|
||||||
TPaf_record paf1800f("PAF1800F");
|
TPaf_record paf1800f("PAF1800F");
|
||||||
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
paf1800f.set("PI_KEYHEADERFATT", _hfatt);
|
||||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||||
@ -1217,6 +1266,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
paf1800f.set("PI_KEYBODYFATT", _bfatt);
|
||||||
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
paf1800f.set("PI_NUMEROLINEA", ++riga);
|
||||||
|
|
||||||
|
if (descrizione(*rdoc).empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
paf3000f.reset();
|
paf3000f.reset();
|
||||||
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
paf3000f.set("PT_KEYHEADERFATT", _hfatt);
|
||||||
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
paf3000f.set("PT_KEYBODYFATT", _bfatt);
|
||||||
@ -1227,12 +1279,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_QUANTITA", UNO);
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
||||||
paf1800f.set("PI_PRZTOTALE", ZERO);
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
|
|
||||||
|
|
||||||
// <CodiceArticolo>
|
// <CodiceArticolo>
|
||||||
long riga_art = 0;
|
long riga_art = 0;
|
||||||
TArticolo& art = rdoc->articolo();
|
TArticolo& art = rdoc->articolo();
|
||||||
if (art.ok())
|
if (art.full())
|
||||||
{
|
{
|
||||||
paf1900f.reset();
|
paf1900f.reset();
|
||||||
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
paf1900f.set("PY_KEYHEADERFATT", _hfatt);
|
||||||
@ -1433,7 +1484,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_QUANTITA", UNO);
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
||||||
paf1800f.set("PI_PRZTOTALE", ZERO);
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
paf1800f.set("PI_ALIQUOTAIVA", "22.00");
|
set_IVA(codivadefault, paf1800f);
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1501,25 +1552,12 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_QUANTITA", UNO);
|
paf1800f.set("PI_QUANTITA", UNO);
|
||||||
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
paf1800f.set("PI_PREZZOUNIT", ZERO);
|
||||||
paf1800f.set("PI_PRZTOTALE", ZERO);
|
paf1800f.set("PI_PRZTOTALE", ZERO);
|
||||||
paf1800f.set("PI_ALIQUOTAIVA", "22.00");
|
set_IVA(codivadefault, paf1800f);
|
||||||
ok &= insert(paf1800f) && insert(paf3000f);
|
ok &= insert(paf1800f) && insert(paf3000f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// </DatiBeniServizi>
|
// </DatiBeniServizi>
|
||||||
|
|
||||||
|
|
||||||
// <DatiTrasporto>
|
|
||||||
TString cod_vettore = doc.get("CODVETT1");
|
|
||||||
// É una fattura accompagnatoria!
|
|
||||||
if(cod_vettore.full())
|
|
||||||
{
|
|
||||||
TRectype vettore = cache().get("%VET", cod_vettore);
|
|
||||||
// Controllo di avere tutto quello che mi interessa
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// </DatiTrasporto>
|
|
||||||
|
|
||||||
// Salvo la testata
|
// Salvo la testata
|
||||||
ok &= insert(paf0700f);
|
ok &= insert(paf0700f);
|
||||||
|
|
||||||
@ -1583,6 +1621,9 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf2500f.set("PO_CONDPAGAMENTO", rateazione); // Condizione di pagamento PA
|
paf2500f.set("PO_CONDPAGAMENTO", rateazione); // Condizione di pagamento PA
|
||||||
paf2500f.set("PO_CODICEPAGAM", pag.code()); // Condizione di pagamento CAMPO
|
paf2500f.set("PO_CODICEPAGAM", pag.code()); // Condizione di pagamento CAMPO
|
||||||
|
|
||||||
|
TRectype cod_pag = cache().get("CPG", doc.pagamento().code());
|
||||||
|
const int tipo_pag = cod_pag.get_int("S4");
|
||||||
|
|
||||||
TString80 iban, istituto;
|
TString80 iban, istituto;
|
||||||
TString8 abi, cab;
|
TString8 abi, cab;
|
||||||
if (get_bank(doc, iban, abi, cab, istituto))
|
if (get_bank(doc, iban, abi, cab, istituto))
|
||||||
@ -1593,21 +1634,20 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf2500f.set("PO_CAB", cab);
|
paf2500f.set("PO_CAB", cab);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cab.blank())
|
if (tipo_pag == 3 && cab.blank()) // Ricevuta bancaria
|
||||||
log(2, TR("Non sono presenti ABI, CAB, IBAN per il pagamento"));
|
log(2, TR("Non sono presenti ABI, CAB, IBAN per il pagamento"));
|
||||||
else if (iban.blank())
|
|
||||||
|
if ((tipo_pag == 8 || tipo_pag == 9) && iban.blank()) // R.I.D. o Bonifico
|
||||||
|
{
|
||||||
log(1, TR("Non è presente il codice IBAN per il pagamento"));
|
log(1, TR("Non è presente il codice IBAN per il pagamento"));
|
||||||
|
}
|
||||||
|
|
||||||
for (int nr = 0; nr < nrate; nr++)
|
for (int nr = 0; nr < nrate; nr++)
|
||||||
{
|
{
|
||||||
paf2500f.set("PO_RIGA", long(nr + 1)); // Numero rata
|
paf2500f.set("PO_RIGA", long(nr + 1)); // Numero rata
|
||||||
int rp = nr < pag.n_rate() ? nr : 0;
|
int rp = nr < pag.n_rate() ? nr : 0;
|
||||||
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
static TString key_class; key_class.cut(0) << pag.tipo_rata(rp) << pag.ulc_rata(rp);
|
||||||
#ifdef DBG
|
|
||||||
bool tolla = true;
|
|
||||||
TString pop = cache().get("%CLR", key_class, "S12");
|
|
||||||
bool aaaa = true;
|
|
||||||
#endif
|
|
||||||
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
paf2500f.set("PO_MODALITAPAGAM", cache().get("%CLR", key_class, "S12")); // Si assicura che il numero riga sia accettabile
|
||||||
|
|
||||||
TToken_string& riga = scad.row(nr); // Data|Importo
|
TToken_string& riga = scad.row(nr); // Data|Importo
|
||||||
@ -1685,15 +1725,16 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
}
|
}
|
||||||
// </DatiPagamento>
|
// </DatiPagamento>
|
||||||
|
|
||||||
|
if (!cached_tipodoc(doc.get(DOC_TIPODOC)).invio_xml())
|
||||||
|
{
|
||||||
// Tabella di non invio XML
|
// Tabella di non invio XML
|
||||||
TPaf_record pafw300f("PAFW300F");
|
TPaf_record pafw300f("PAFW300F");
|
||||||
pafw300f.set("PW_KEYHEADERFATT", _hfatt);
|
pafw300f.set("PW_KEYHEADERFATT", _hfatt);
|
||||||
pafw300f.set("PW_KEYBODYFATT", _bfatt);
|
pafw300f.set("PW_KEYBODYFATT", _bfatt);
|
||||||
remove(pafw300f); // Cancella eventuali allegati
|
remove(pafw300f);
|
||||||
const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
|
pafw300f.set("PW_CODSDI", "**********");
|
||||||
const TString codsdi = !td.invio_xml() ? "**********" : (enapec ? pec : coddest);
|
|
||||||
pafw300f.set("PW_CODSDI", codsdi);
|
|
||||||
ok &= insert(pafw300f);
|
ok &= insert(pafw300f);
|
||||||
|
}
|
||||||
|
|
||||||
return _to_commit = (ok && save_paf());
|
return _to_commit = (ok && save_paf());
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ private:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool parse_sconto(const TString& formula, TToken_string& sconti) const;
|
bool parse_sconto(const TString& formula, TToken_string& sconti) const;
|
||||||
static bool get_bnp_iban(const TString& abi, const TString& cab, int prg, TString& iban);
|
static bool get_bnp_iban(const TString& abi, const TString& cab, int prg, TString& iban);
|
||||||
bool get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
bool get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||||
const TString& descrizione(const TRiga_documento& rdoc) const;
|
const TString& descrizione(const TRiga_documento& rdoc) const;
|
||||||
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
||||||
|
Loading…
x
Reference in New Issue
Block a user