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
 | 
			
		||||
1
 | 
			
		||||
%tabcom|0|0|1210|0|Tabelle comuni|1500||
 | 
			
		||||
%tabcom|0|0|1280|0|Tabelle comuni|1500||
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
4
 | 
			
		||||
89
 | 
			
		||||
90
 | 
			
		||||
COD|1|3|0|
 | 
			
		||||
CODTAB|1|25|0|
 | 
			
		||||
S0|1|70|0|
 | 
			
		||||
@ -15,6 +15,7 @@ S9|1|5|0|
 | 
			
		||||
S10|1|5|0|
 | 
			
		||||
S11|1|5|0|
 | 
			
		||||
S12|1|5|0|
 | 
			
		||||
S13|1|70|0|
 | 
			
		||||
I0|3|7|0|
 | 
			
		||||
I1|3|7|0|
 | 
			
		||||
I2|3|7|0|
 | 
			
		||||
 | 
			
		||||
@ -1667,7 +1667,7 @@ END
 | 
			
		||||
STRING F_PADESTIN 7
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 19 "Destinatario "
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  FLAGS ""
 | 
			
		||||
  MODULES PA,FP
 | 
			
		||||
  HELP "Codice ufficio dell destinatario della fattura elettronica"
 | 
			
		||||
  FIELD LF_CFVEN->PADESTIN
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@
 | 
			
		||||
#include "cgtbbnp.h"
 | 
			
		||||
#include "cgtbesc.h"
 | 
			
		||||
#include "cgtbnot.h"
 | 
			
		||||
#include "cgtbvet.h"
 | 
			
		||||
 | 
			
		||||
#include "cglib01.h"
 | 
			
		||||
 | 
			
		||||
@ -148,6 +149,13 @@ int CGTTable_application::read(TMask& m)
 | 
			
		||||
  if (table_name == TAB_NOTECLI)
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
#define F_CODVETT                            101
 | 
			
		||||
#define F_RAGSO                              102
 | 
			
		||||
#define F_RAGSOA														 121
 | 
			
		||||
#define F_IND                                103
 | 
			
		||||
#define F_TEL                                104
 | 
			
		||||
#define F_PTEL                               105
 | 
			
		||||
@ -16,11 +17,12 @@
 | 
			
		||||
#define F_DENCOM                             114
 | 
			
		||||
#define F_NUM                                115
 | 
			
		||||
#define F_PFAX                               116
 | 
			
		||||
#define F_PTELEX                             117
 | 
			
		||||
#define F_EORI	                             117
 | 
			
		||||
#define F_STATOPAIV                          118
 | 
			
		||||
#define F_PAIV                               119
 | 
			
		||||
#define F_ALBO                               120
 | 
			
		||||
 | 
			
		||||
#define F_COFI															 122
 | 
			
		||||
#define F_ISFISICA													 123
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -28,37 +28,70 @@ OUTPUT F_RAGSO S0
 | 
			
		||||
KEY 1
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_RAGSO 50
 | 
			
		||||
BOOLEAN F_ISFISICA
 | 
			
		||||
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"
 | 
			
		||||
FIELD S0
 | 
			
		||||
FIELD S0[1,30]
 | 
			
		||||
USE %VET KEY 2
 | 
			
		||||
CHECKTYPE REQUIRED
 | 
			
		||||
INPUT S0 F_RAGSO
 | 
			
		||||
DISPLAY "Codice vettore" CODTAB
 | 
			
		||||
DISPLAY "Ragione sociale@50" S0
 | 
			
		||||
OUTPUT F_CODVETT CODTAB
 | 
			
		||||
OUTPUT F_RAGSO S0
 | 
			
		||||
OUTPUT F_RAGSO S0[1,30]
 | 
			
		||||
OUTPUT F_RAGSO S0[31,50]
 | 
			
		||||
KEY 2
 | 
			
		||||
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
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 50 50 "Partita IVA "
 | 
			
		||||
  FLAGS "H"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_PAIV 12
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 6 "Partita IVA "
 | 
			
		||||
  FIELD S3[21,32]
 | 
			
		||||
  HELP "Partita IVA del cliente/fornitore"
 | 
			
		||||
  VALIDATE PI_FUNC  F_STATOPAIV
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
  FIELD S3[49,51]
 | 
			
		||||
  HELP "Codice ISO dello stato"
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  USE %SCE
 | 
			
		||||
  INPUT CODTAB F_STATOPAIV
 | 
			
		||||
  DISPLAY "Codice" CODTAB
 | 
			
		||||
  DISPLAY "Descrizione@50" S0
 | 
			
		||||
  OUTPUT F_STATOPAIV CODTAB
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
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
 | 
			
		||||
 PROMPT 1 7 "Recapito"
 | 
			
		||||
 FLAGS "R"
 | 
			
		||||
@ -165,15 +198,22 @@ BEGIN
 | 
			
		||||
 FIELD S3[33,48]
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
GROUPBOX DLG_NULL 75 5
 | 
			
		||||
STRING F_EORI 17
 | 
			
		||||
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"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_PTEL 10
 | 
			
		||||
BEGIN
 | 
			
		||||
PROMPT 2 15 "Telefono  "
 | 
			
		||||
PROMPT 2 16 "Telefono  "
 | 
			
		||||
HELP "Prefisso telefonico del vettore"
 | 
			
		||||
FIELD S5[1,10]
 | 
			
		||||
FLAGS "U"
 | 
			
		||||
@ -181,7 +221,7 @@ END
 | 
			
		||||
 | 
			
		||||
STRING F_TEL 20
 | 
			
		||||
BEGIN
 | 
			
		||||
PROMPT 30 15 ""
 | 
			
		||||
PROMPT 30 16 ""
 | 
			
		||||
HELP "Numero telefonico del vettore"
 | 
			
		||||
FIELD S3[1,20]
 | 
			
		||||
FLAGS "U"
 | 
			
		||||
@ -189,7 +229,7 @@ END
 | 
			
		||||
 | 
			
		||||
STRING F_PFAX 10
 | 
			
		||||
BEGIN
 | 
			
		||||
PROMPT 2 16 "Fax       "
 | 
			
		||||
PROMPT 2 17 "Fax       "
 | 
			
		||||
HELP "Numero di Fax del vettore"
 | 
			
		||||
FIELD S5[11,20]
 | 
			
		||||
FLAGS "U"
 | 
			
		||||
@ -197,29 +237,12 @@ END
 | 
			
		||||
 | 
			
		||||
STRING F_FAX 20
 | 
			
		||||
BEGIN
 | 
			
		||||
PROMPT 30 16 ""
 | 
			
		||||
PROMPT 30 17 ""
 | 
			
		||||
HELP "Numero di Fax del vettore"
 | 
			
		||||
FIELD S4
 | 
			
		||||
FLAGS "U"
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@
 | 
			
		||||
#include "fp0.h"
 | 
			
		||||
#include "fp0300a.h"
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
#include <map>
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Globals
 | 
			
		||||
@ -20,6 +20,7 @@
 | 
			
		||||
 | 
			
		||||
#define LEN_HFATT 20
 | 
			
		||||
#define LEN_BFATT 50
 | 
			
		||||
#define MAPPA_DOC_SCELTI map<TString,TToken_string>
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// TPa_mask
 | 
			
		||||
@ -28,12 +29,14 @@
 | 
			
		||||
class TPA_mask : public TAutomask
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
	enum {_codnum, _tipodoc, _dastato, _astato, _tiposdi};
 | 
			
		||||
 | 
			
		||||
	void         set_filter_changed();
 | 
			
		||||
	virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
			
		||||
	void         next_page(int                   p);
 | 
			
		||||
	bool         check_not_empty();
 | 
			
		||||
	bool check_full_fields() const;
 | 
			
		||||
	bool check_tipo_doc(const TTipo_documento& td);
 | 
			
		||||
	bool check_doc_filter(const TDocumentoEsteso& td);
 | 
			
		||||
	void fill();
 | 
			
		||||
	void init();
 | 
			
		||||
	bool is_fattura(const TRectype& doc) const;
 | 
			
		||||
@ -41,7 +44,7 @@ protected:
 | 
			
		||||
	void load_all_fields();
 | 
			
		||||
 | 
			
		||||
	bool _filter_changed;
 | 
			
		||||
	unique_ptr<TToken_string> _tipi_doc_scelti;
 | 
			
		||||
	unique_ptr<MAPPA_DOC_SCELTI> _doc_scelti;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	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", "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)
 | 
			
		||||
	{
 | 
			
		||||
		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()
 | 
			
		||||
{
 | 
			
		||||
	set(F_DATAINI, ini_get_string(CONFIG_DITTA, "fp", "dataini"));
 | 
			
		||||
	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);
 | 
			
		||||
	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);
 | 
			
		||||
			row.add(tok);
 | 
			
		||||
			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.show();
 | 
			
		||||
}
 | 
			
		||||
@ -119,9 +147,8 @@ TString& add_filter(const TString& field, const TString& from, const TString& to
 | 
			
		||||
 | 
			
		||||
void TPA_mask::fill()
 | 
			
		||||
{
 | 
			
		||||
	save_all_fields();
 | 
			
		||||
	// Pulisco i tipi documento
 | 
			
		||||
	_tipi_doc_scelti.reset();
 | 
			
		||||
	_doc_scelti.reset();
 | 
			
		||||
 | 
			
		||||
	TSheet_field&  docs = sfield(F_DOCS);
 | 
			
		||||
	TString_array& sht  = docs.rows_array();
 | 
			
		||||
@ -130,6 +157,7 @@ void TPA_mask::fill()
 | 
			
		||||
	sht.destroy();
 | 
			
		||||
 | 
			
		||||
	const TDate dal             = get(F_DATAINI);
 | 
			
		||||
	const TDate al							= get(F_DATAEND);
 | 
			
		||||
	TString filter_selected		  = get(F_FATTSEL);
 | 
			
		||||
 | 
			
		||||
#ifdef DBG
 | 
			
		||||
@ -144,21 +172,18 @@ void TPA_mask::fill()
 | 
			
		||||
 | 
			
		||||
	TString query;
 | 
			
		||||
 | 
			
		||||
	query << "USE 33 KEY 3" <<
 | 
			
		||||
					 "\nSELECT (33.TIPOCF=='C')&&" <<
 | 
			
		||||
					 "(33.CODNUM==#CODNUM)";
 | 
			
		||||
 | 
			
		||||
	query <<	"\nJOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF \n" <<
 | 
			
		||||
	query << "USE 33 KEY 3 \n" <<
 | 
			
		||||
		"SELECT 33.TIPOCF==\"C\" \n" <<
 | 
			
		||||
		"JOIN 20 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" <<
 | 
			
		||||
						"FROM DATADOC=#DADATADOC\n" <<
 | 
			
		||||
		"JOIN %TIP TO 33 ALIAS 400 INTO CODTAB==TIPODOC \n" <<
 | 
			
		||||
		"FROM DATADOC=#DADATADOC \n" <<
 | 
			
		||||
		"TO DATADOC=#ADATADOC";
 | 
			
		||||
 | 
			
		||||
	TISAM_recordset rec(query);
 | 
			
		||||
 | 
			
		||||
	rec.set_var("#CODNUM", get(F_CODNUM));
 | 
			
		||||
	rec.set_var("#DADATADOC", get_date(F_DATAINI));
 | 
			
		||||
	rec.set_var("#ADATADOC", get_date(F_DATAEND));
 | 
			
		||||
	rec.set_var("#DADATADOC", dal);
 | 
			
		||||
	rec.set_var("#ADATADOC", al);
 | 
			
		||||
 | 
			
		||||
	TProgress_monitor pi(rec.items(), nullptr);
 | 
			
		||||
 | 
			
		||||
@ -175,8 +200,10 @@ void TPA_mask::fill()
 | 
			
		||||
		const TRectype& doc = rec.cursor()->curr();
 | 
			
		||||
		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
 | 
			
		||||
		if(!check_tipo_doc(td))
 | 
			
		||||
		if(!check_doc_filter(doc))
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
		bool sent = false;
 | 
			
		||||
@ -373,20 +400,30 @@ bool TPA_mask::check_full_fields() const
 | 
			
		||||
	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)
 | 
			
		||||
		{
 | 
			
		||||
			_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
 | 
			
		||||
	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_DATAEND   402
 | 
			
		||||
#define F_FATTSEL   403
 | 
			
		||||
#define F_CODNUM    404
 | 
			
		||||
#define END_MASK    499
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define F_DOCUMENTI_TIPO 301
 | 
			
		||||
 | 
			
		||||
#define S_TIPODOCSEL  101
 | 
			
		||||
#define S_TIPODOCSDI  102
 | 
			
		||||
#define S_SELCODNUM   101
 | 
			
		||||
#define S_TIPODOCSEL  102
 | 
			
		||||
#define S_DASTATO     103
 | 
			
		||||
#define S_ASTATO      104
 | 
			
		||||
#define S_TIPODOCSDI  105
 | 
			
		||||
 | 
			
		||||
#define F_DOCS     201
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,40 +15,29 @@ END
 | 
			
		||||
 | 
			
		||||
DATE F_DATAEND
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 40 1 "Data finale "
 | 
			
		||||
  PROMPT 50 1 "Data finale "
 | 
			
		||||
  VALIDATE DATE_CMP_FUNC >= F_DATAINI
 | 
			
		||||
  WARNING "La data finale non può essere minore della data iniziale"
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
RADIOBUTTON F_FATTSEL 3 35
 | 
			
		||||
RADIOBUTTON F_FATTSEL 3 80
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 2 "Fatture da visualizzare"
 | 
			
		||||
  ITEM "|Da inviare"
 | 
			
		||||
  ITEM "X|XML Generato"
 | 
			
		||||
  ITEM "N|Notificato"
 | 
			
		||||
  ITEM "E|In errore"
 | 
			
		||||
  FLAGS "Z"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_CODNUM 4
 | 
			
		||||
SPREADSHEET F_DOCUMENTI_TIPO 80 5
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 40 2 "Numerazione "
 | 
			
		||||
  HELP "Codice numerazione"
 | 
			
		||||
  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 ""
 | 
			
		||||
  PROMPT 1 6 ""
 | 
			
		||||
  ITEM "Cod Num"
 | 
			
		||||
  ITEM "Tipo Doc"
 | 
			
		||||
  ITEM "Stato Iniziale"
 | 
			
		||||
  ITEM "Stato Finale"
 | 
			
		||||
  ITEM "Tipo SDI"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
@ -68,7 +57,7 @@ BEGIN
 | 
			
		||||
  ITEM "Data\nDoc.@10"
 | 
			
		||||
  ITEM "Cliente"
 | 
			
		||||
  ITEM "Ragione Sociale@50"
 | 
			
		||||
  ITEM "Codice destinatario"
 | 
			
		||||
  ITEM "Codice destinatario@20"
 | 
			
		||||
  ITEM "Riferimento\nAmministrazione@20"
 | 
			
		||||
  ITEM "Codice Fiscale@16"
 | 
			
		||||
  ITEM "Scissione\nPagamenti@9"
 | 
			
		||||
@ -79,11 +68,26 @@ END
 | 
			
		||||
ENDPAGE
 | 
			
		||||
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
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1  "Tipo doc    "
 | 
			
		||||
  PROMPT 15 1  "Tipo doc    "
 | 
			
		||||
  HELP "Codice tipo documento"
 | 
			
		||||
  USE %TIP
 | 
			
		||||
  SELECT S3[37,40]!=""
 | 
			
		||||
@ -97,9 +101,31 @@ BEGIN
 | 
			
		||||
  FLAG "UPA"
 | 
			
		||||
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
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 2  "Tipo Doc SDI"
 | 
			
		||||
  PROMPT 30 1  "Tipo Doc SDI"
 | 
			
		||||
  FLAG "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
@ -181,7 +207,7 @@ BEGIN
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING S_UFFICIO 20
 | 
			
		||||
STRING S_UFFICIO 50 20
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 ""
 | 
			
		||||
  FLAGS "D"
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@
 | 
			
		||||
 | 
			
		||||
#include "../fe/felib.h"
 | 
			
		||||
#include "../cg/cglib03.h"
 | 
			
		||||
#include "../ve/velib04.h"
 | 
			
		||||
 | 
			
		||||
#include <anagiu.h>
 | 
			
		||||
#include <comuni.h>
 | 
			
		||||
@ -840,24 +841,37 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
	_hfatt.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());
 | 
			
		||||
 | 
			
		||||
	TString8 coddest = doc.clifor().vendite().get("PADESTIN");
 | 
			
		||||
	TString pec = doc.clifor().get("PEC");
 | 
			
		||||
	TString8 coddest;
 | 
			
		||||
	TString pec;
 | 
			
		||||
	const bool is_pa = doc.clifor().get_int("ALLEG") == 7;
 | 
			
		||||
 | 
			
		||||
#ifndef DBG
 | 
			
		||||
	if (!get_coddest(doc.clifor().tipo(), doc.clifor().codice(), coddest, pec))
 | 
			
		||||
		return false;
 | 
			
		||||
#else
 | 
			
		||||
	coddest = "WSUHKZ";
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	const bool enapec = coddest == "0000000" && pec.full();
 | 
			
		||||
 | 
			
		||||
	const bool privato = coddest.len() != 6;
 | 
			
		||||
	bool ok = true;
 | 
			
		||||
 | 
			
		||||
	if (!chiave_paf(doc, _hfatt, _bfatt))
 | 
			
		||||
			return false;
 | 
			
		||||
	log(-1, _bfatt);
 | 
			
		||||
 | 
			
		||||
	const TFirm&      firm = prefix().firm();
 | 
			
		||||
	const char* const paese = "IT";
 | 
			
		||||
	TCausale          caus = TCausale(doc.tipo().causale(), doc.anno());
 | 
			
		||||
@ -881,6 +895,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
	ok &= insert(paf0100f);
 | 
			
		||||
	// </DatiTrassmissione>
 | 
			
		||||
 | 
			
		||||
#ifndef DBG
 | 
			
		||||
	if (enapec)
 | 
			
		||||
	{
 | 
			
		||||
			// <Datipec>
 | 
			
		||||
@ -892,6 +907,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
			ok &= insert(paf3200f);
 | 
			
		||||
			// </Datipec>
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	// <CedentePrestatore>
 | 
			
		||||
	TPaf_record paf0200f("PAF0200F");
 | 
			
		||||
@ -972,12 +988,17 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
	paf0400f.set("P4_KEYBODYFATT", _bfatt);
 | 
			
		||||
	remove(paf0400f);
 | 
			
		||||
 | 
			
		||||
#ifndef DBG
 | 
			
		||||
	if (cliente.partita_IVA().full())
 | 
			
		||||
	{
 | 
			
		||||
			paf0400f.set("P4_FISCIVAPAESE", cliente.stato_partita_IVA());
 | 
			
		||||
			paf0400f.set("P4_FISCIVACOD", cliente.partita_IVA());
 | 
			
		||||
	}
 | 
			
		||||
	paf0400f.set("P4_CODFISC", cliente.codice_fiscale());
 | 
			
		||||
#else
 | 
			
		||||
	paf0400f.set("P4_FISCIVAPAESE", "IT");
 | 
			
		||||
	paf0400f.set("P4_FISCIVACOD", "00261170039");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (cliente.fisica())
 | 
			
		||||
	{
 | 
			
		||||
@ -1179,6 +1200,34 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
			log(1, "CIG e CUP assenti");
 | 
			
		||||
	// <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");
 | 
			
		||||
	paf1800f.set("PI_KEYHEADERFATT", _hfatt);
 | 
			
		||||
	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_NUMEROLINEA", ++riga);
 | 
			
		||||
 | 
			
		||||
			if (descrizione(*rdoc).empty())
 | 
			
		||||
				continue;
 | 
			
		||||
 | 
			
		||||
			paf3000f.reset();
 | 
			
		||||
			paf3000f.set("PT_KEYHEADERFATT", _hfatt);
 | 
			
		||||
			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_PREZZOUNIT", ZERO);
 | 
			
		||||
			paf1800f.set("PI_PRZTOTALE", ZERO);
 | 
			
		||||
			paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
 | 
			
		||||
 | 
			
		||||
			// <CodiceArticolo>
 | 
			
		||||
			long riga_art = 0;
 | 
			
		||||
			TArticolo& art = rdoc->articolo();
 | 
			
		||||
			if (art.ok())
 | 
			
		||||
			if (art.full())
 | 
			
		||||
			{
 | 
			
		||||
					paf1900f.reset();
 | 
			
		||||
					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_PREZZOUNIT", ZERO);
 | 
			
		||||
			paf1800f.set("PI_PRZTOTALE", ZERO);
 | 
			
		||||
			paf1800f.set("PI_ALIQUOTAIVA", "22.00");
 | 
			
		||||
			set_IVA(codivadefault, paf1800f);
 | 
			
		||||
			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_PREZZOUNIT", ZERO);
 | 
			
		||||
		paf1800f.set("PI_PRZTOTALE", ZERO);
 | 
			
		||||
		paf1800f.set("PI_ALIQUOTAIVA", "22.00");
 | 
			
		||||
		set_IVA(codivadefault, paf1800f);
 | 
			
		||||
		ok &= insert(paf1800f) && insert(paf3000f);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// </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
 | 
			
		||||
	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_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;
 | 
			
		||||
	TString8  abi, cab;
 | 
			
		||||
	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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (cab.blank())
 | 
			
		||||
	if (tipo_pag == 3 && cab.blank())	// Ricevuta bancaria
 | 
			
		||||
			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"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (int nr = 0; nr < nrate; nr++)
 | 
			
		||||
	{
 | 
			
		||||
			paf2500f.set("PO_RIGA", long(nr + 1)); // Numero rata
 | 
			
		||||
			int rp = nr < pag.n_rate() ? nr : 0;
 | 
			
		||||
			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
 | 
			
		||||
 | 
			
		||||
			TToken_string& riga = scad.row(nr);                  // Data|Importo   
 | 
			
		||||
@ -1685,15 +1725,16 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
			
		||||
	}
 | 
			
		||||
	// </DatiPagamento>
 | 
			
		||||
 | 
			
		||||
	if (!cached_tipodoc(doc.get(DOC_TIPODOC)).invio_xml())
 | 
			
		||||
	{
 | 
			
		||||
		// Tabella di non invio XML
 | 
			
		||||
		TPaf_record pafw300f("PAFW300F");
 | 
			
		||||
		pafw300f.set("PW_KEYHEADERFATT", _hfatt);
 | 
			
		||||
		pafw300f.set("PW_KEYBODYFATT", _bfatt);
 | 
			
		||||
	remove(pafw300f); // Cancella eventuali allegati
 | 
			
		||||
	const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
 | 
			
		||||
	const TString codsdi = !td.invio_xml() ? "**********" : (enapec ? pec : coddest);
 | 
			
		||||
	pafw300f.set("PW_CODSDI", codsdi);
 | 
			
		||||
		remove(pafw300f);
 | 
			
		||||
		pafw300f.set("PW_CODSDI", "**********");
 | 
			
		||||
		ok &= insert(pafw300f);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return _to_commit = (ok && save_paf());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -102,7 +102,7 @@ private:
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	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;
 | 
			
		||||
	const TString&      descrizione(const TRiga_documento& rdoc) const;
 | 
			
		||||
	const TRectype& cco(const TRectype&                doc) const; // Contratto/Convenzione/Offerta
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user