Patch level : 12.0 nopatch
Files correlati : Commento : Implementazione invio regolarizzazioni al 07/11/2021
This commit is contained in:
		
							parent
							
								
									1333778267
								
							
						
					
					
						commit
						417ff487b8
					
				
										
											Binary file not shown.
										
									
								
							@ -104,7 +104,10 @@ void TPA_mask::load_all_fields()
 | 
				
			|||||||
	set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
 | 
						set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
 | 
						const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
 | 
				
			||||||
	TSheet_field& sheet = sfield(F_DOCUMENTI_TIPO);
 | 
						//
 | 
				
			||||||
 | 
						auto& sheet = sfield(F_DOCUMENTI_TIPO);
 | 
				
			||||||
 | 
						sheet.hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TFP_selected_docs selected_docs;
 | 
						TFP_selected_docs selected_docs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (selected_docs.has_selected_docs())
 | 
						if (selected_docs.has_selected_docs())
 | 
				
			||||||
@ -209,7 +212,7 @@ void TPA_mask::fill()
 | 
				
			|||||||
				continue;
 | 
									continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		bool sent = false;
 | 
							bool sent = false;
 | 
				
			||||||
		if (chiave_paf_doc(doc, hfatt, bfatt))
 | 
							if (chiave_paf(doc, hfatt, bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
				if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
 | 
									if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@ -304,7 +307,7 @@ void TPA_mask::set_pronto()
 | 
				
			|||||||
		static TString campo_hfatt, campo_bfatt, query;
 | 
							static TString campo_hfatt, campo_bfatt, query;
 | 
				
			||||||
		TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
 | 
							TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
 | 
							if (chiave_paf(doc, campo_hfatt, campo_bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
								// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
				
			||||||
			query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
								query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
				
			||||||
@ -342,7 +345,7 @@ void TPA_mask::connect_keys()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
 | 
							TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), riga->get(xvtil_cid2index(S_CODNUM)), riga->get_long(xvtil_cid2index(S_NDOC)));
 | 
				
			||||||
		static TString campo_hfatt, campo_bfatt, query;
 | 
							static TString campo_hfatt, campo_bfatt, query;
 | 
				
			||||||
		if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
 | 
							if (chiave_paf(doc, campo_hfatt, campo_bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
								// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
				
			||||||
			query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
								query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
				
			||||||
@ -684,7 +687,7 @@ void TPA_mask::set_err_paf()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				TString hfatt, bfatt;
 | 
									TString hfatt, bfatt;
 | 
				
			||||||
				TPaf_record paf0100f("PAF0100F");
 | 
									TPaf_record paf0100f("PAF0100F");
 | 
				
			||||||
				if (fdoc.read() == NOERR && chiave_paf_doc(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
 | 
									if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					static TString query;
 | 
										static TString query;
 | 
				
			||||||
					query.cut(0) <<
 | 
										query.cut(0) <<
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,6 @@
 | 
				
			|||||||
#define FILTER_ALL			"A"
 | 
					#define FILTER_ALL			"A"
 | 
				
			||||||
#define FILTER_CONT			"C"
 | 
					#define FILTER_CONT			"C"
 | 
				
			||||||
#define PARA_FP					"fp"
 | 
					#define PARA_FP					"fp"
 | 
				
			||||||
#define F1_INIREGCONT   "regcont"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum
 | 
					enum
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -670,7 +669,7 @@ int TPassive_mask::prepara_contab() const
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      TString prokeys = row->get(sf.cid2index(S_PROKEY));
 | 
					      TString prokeys = row->get(sf.cid2index(S_PROKEY));
 | 
				
			||||||
      TToken_string keys(prokeys, ';');
 | 
					      TToken_string keys(prokeys, ';');
 | 
				
			||||||
      const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE))));
 | 
					      const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE))));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
 | 
					      TString tipodoc(row->get(sf.cid2index(S_TIPODOCSDI)));
 | 
				
			||||||
      if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
 | 
					      if (tipodoc == "TD01" && !check_causale(codcaus, "FA", true))
 | 
				
			||||||
@ -869,7 +868,7 @@ int TPassive_mask::check_err() const
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		if (row->starts_with("X"))
 | 
							if (row->starts_with("X"))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(cid2index(S_FORNITORE))));
 | 
								TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get(cid2index(S_FORNITORE))));
 | 
				
			||||||
			if (codcaus.empty())
 | 
								if (codcaus.empty())
 | 
				
			||||||
				return no_codcaus;
 | 
									return no_codcaus;
 | 
				
			||||||
			if (TString(row->get(cid2index(S_FORNITORE))).empty())
 | 
								if (TString(row->get(cid2index(S_FORNITORE))).empty())
 | 
				
			||||||
 | 
				
			|||||||
@ -13,16 +13,21 @@
 | 
				
			|||||||
#include "fp0700a.h"
 | 
					#include "fp0700a.h"
 | 
				
			||||||
#include "fp0100a.h"
 | 
					#include "fp0100a.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Globals
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LEN_HFATT 20
 | 
				
			||||||
 | 
					#define LEN_BFATT 50
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// TPAR_mask
 | 
					// TPAR_mask
 | 
				
			||||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TPAR_mask : public TAutomask
 | 
					class TPAR_mask : public TAutomask
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TAssoc_array _causali;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
	enum { _codnum, _tipodoc, _dastato, _astato, _tiposdi };
 | 
						enum {_codnum, _tipodoc, _dastato, _astato, _tiposdi};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void					set_filter_changed();
 | 
						void					set_filter_changed();
 | 
				
			||||||
	void					set_pronto();
 | 
						void					set_pronto();
 | 
				
			||||||
@ -45,29 +50,35 @@ protected:
 | 
				
			|||||||
	bool _enable_chiave_fixer;
 | 
						bool _enable_chiave_fixer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	const TAssoc_array & causali() const { return _causali; }
 | 
						TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false)
 | 
				
			||||||
	void save_all_fields();
 | 
						{
 | 
				
			||||||
	TPAR_mask();
 | 
							disable(DLG_OK);
 | 
				
			||||||
	virtual ~TPAR_mask() {}
 | 
							disable(DLG_SAVEREC);
 | 
				
			||||||
 | 
							disable(DLG_FINDREC);
 | 
				
			||||||
 | 
							load_all_fields();
 | 
				
			||||||
 | 
							const TDate data_inizio = get_date_start_new_fatt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						void save_all_fields() const;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TPAR_mask *__mask = nullptr;
 | 
					void TPAR_mask::save_all_fields() const
 | 
				
			||||||
 | 
					 | 
				
			||||||
void TPAR_mask::save_all_fields()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TSheet_field & scaus = sfield(F_CAUSALI_TIPO);
 | 
					 | 
				
			||||||
	// Salvo le impostazioni
 | 
					 | 
				
			||||||
	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", "TIPO_SDI", get(F_TIPO_SDI));
 | 
					
 | 
				
			||||||
	// Salvo lo sheet
 | 
						// Salvo lo sheet
 | 
				
			||||||
	_causali.destroy();
 | 
						TFP_selected_docs selected_docs;
 | 
				
			||||||
	FOR_EACH_SHEET_ROW_LOOP(scaus, r)
 | 
						selected_docs.save_sheet(sfield(F_CAUSALI_TIPO));
 | 
				
			||||||
	{
 | 
					
 | 
				
			||||||
		const TString & codcaus = scaus.get_str_row_cell(r, S_COD_CAUS);
 | 
						// Salvo le impostazioni
 | 
				
			||||||
		ini_set_string(CONFIG_DITTA, "fp", "CAUSALE", codcaus, r);
 | 
					/*
 | 
				
			||||||
		_causali.add(codcaus);
 | 
						set_esp_pri_empty(get_bool(F_SETDEFCOD));
 | 
				
			||||||
	}
 | 
						set_send_all_rifs(get_bool(F_SENDALLRIFS));
 | 
				
			||||||
 | 
						set_esp_est(get_bool(F_SETCODEST));
 | 
				
			||||||
 | 
						set_esp_est_cod(get(F_VALCODEST));
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TPAR_mask::force_reload_sheet()
 | 
					void TPAR_mask::force_reload_sheet()
 | 
				
			||||||
@ -86,71 +97,117 @@ void TPAR_mask::load_all_fields()
 | 
				
			|||||||
	set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
 | 
						set(F_DATAEND, ini_get_string(CONFIG_DITTA, "fp", "dataend"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
 | 
						const TToken_string s_accepted_docs(ini_get_string(CONFIG_DITTA, "fp", "accepted_docs"), ';');
 | 
				
			||||||
	TSheet_field& scaus = sfield(F_CAUSALI_TIPO);
 | 
						//
 | 
				
			||||||
 | 
						TSheet_field& sheet = sfield(F_CAUSALI_TIPO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (int i = 0;; i++)
 | 
						TFP_selected_regs selected_regs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (selected_regs.has_selected_regs())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		TString16 caus = ini_get_string(CONFIG_DITTA, "fp", "CAUSALE", "", i);
 | 
							// Super nuova gestione super avanzata!
 | 
				
			||||||
		
 | 
							selected_regs.fill_sheet(sheet);
 | 
				
			||||||
		if (caus.full())
 | 
					 | 
				
			||||||
			scaus.set_row_cell(S_COD_CAUS, caus);
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	scaus.force_update();
 | 
						else if(s_accepted_docs.full())
 | 
				
			||||||
	set(F_TIPO_SDI, ini_get_string(CONFIG_DITTA, "fp", "TIPO_SDI"));
 | 
						{
 | 
				
			||||||
}
 | 
							// Nuova gestione avanzata!
 | 
				
			||||||
 | 
							FOR_EACH_STR_TOKEN(s_accepted_docs, tok)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								TToken_string& row = sheet.row(-1);
 | 
				
			||||||
 | 
								row.add(tok);
 | 
				
			||||||
 | 
								row.add(TTipo_documento(TToken_string(tok).get(1)).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();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* DA FARE
 | 
				
			||||||
 | 
						set(F_SETDEFCOD, get_esp_pri_empty());
 | 
				
			||||||
 | 
						set(F_SENDALLRIFS, get_send_all_rifs());
 | 
				
			||||||
 | 
						set(F_SETCODEST, get_esp_est());
 | 
				
			||||||
 | 
						set(F_VALCODEST, get_esp_est_cod());
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool caus_filter(const TRelation* r)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return __mask->causali().is_key(r->lfile().get(MOV_CODCAUS));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TPAR_mask::fill()
 | 
					void TPAR_mask::fill()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						// Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file
 | 
				
			||||||
 | 
						save_all_fields();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TSheet_field&  docs = sfield(F_DOCS);
 | 
				
			||||||
 | 
						TString_array& sht  = docs.rows_array();
 | 
				
			||||||
 | 
						docs.hide();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sht.destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const TDate dal             = get(F_DATAINI);
 | 
						const TDate dal             = get(F_DATAINI);
 | 
				
			||||||
	const TDate al							= get(F_DATAEND);
 | 
						const TDate al							= get(F_DATAEND);
 | 
				
			||||||
	TString filter_selected		  = get(F_REGSEL);
 | 
						TString filter_selected		  = get(F_DOCSEL);
 | 
				
			||||||
	// Record di controllo per eventuali elaborazioni precedenti
 | 
					 | 
				
			||||||
	TString     hfatt, bfatt;
 | 
					 | 
				
			||||||
	TPaf_record paf0100f("PAF0100F");
 | 
					 | 
				
			||||||
	TSheet_field&  regs = sfield(F_REGS);
 | 
					 | 
				
			||||||
	TString query;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	enable(DLG_OK, filter_selected.empty() || filter_selected == "E");
 | 
						enable(DLG_OK, filter_selected.empty() || filter_selected == "E");
 | 
				
			||||||
	enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D");
 | 
						enable(DLG_SAVEREC, (is_f8() && filter_selected == "X") || filter_selected == "D");
 | 
				
			||||||
	enable(DLG_FINDREC, filter_selected == "D");
 | 
						enable(DLG_FINDREC, filter_selected == "D");
 | 
				
			||||||
	enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty());
 | 
						enable(DLG_PRINT, _enable_chiave_fixer && filter_selected.empty());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	query << "USE " << LF_MOV << " KEY 3 SELECT (BETWEEN(" << MOV_DATAREG << ","
 | 
						// Record di controllo per eventuali elaborazioni precedenti
 | 
				
			||||||
		    << dal.date2ansi() << ',' << al.date2ansi() << "))&&(REG!=\"\")"
 | 
						TString     hfatt(LEN_HFATT), bfatt(LEN_BFATT);
 | 
				
			||||||
		<< "\nFROM " << MOV_TIPO << "=C\nTO " << MOV_TIPO "=C";
 | 
						TPaf_record paf0100f("PAF0100F");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TString query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						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" <<
 | 
				
			||||||
 | 
							"TO DATADOC=#ADATADOC";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TISAM_recordset rec(query);
 | 
						TISAM_recordset rec(query);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rec.set_filterfunction(caus_filter);
 | 
						rec.set_var("#DADATADOC", dal);
 | 
				
			||||||
 | 
						rec.set_var("#ADATADOC", al);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TProgress_monitor pi(rec.items(), nullptr);
 | 
						TProgress_monitor pi(rec.items(), nullptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool first, show, ask = !((show = (first = true)));
 | 
						bool first, show, ask = !((show = (first = true)));
 | 
				
			||||||
	int fat_no_cod = 0;
 | 
						int fat_no_cod = 0;
 | 
				
			||||||
	const TString16 tipodocsdi = get(F_TIPO_SDI);
 | 
					 | 
				
			||||||
	const TDate data_inizio = get_date_start_new_fatt();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Disabilito la colonna del codice ufficio
 | 
						// Disabilito la colonna del codice ufficio
 | 
				
			||||||
	regs.enable_column(cid2index(S_UFFICIO), false);
 | 
						docs.enable_column(cid2index(S_UFFICIO), false);
 | 
				
			||||||
	regs.reset();
 | 
						const TDate data_inizio = get_date_start_new_fatt();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (bool okc = rec.move_first(); okc; okc = rec.move_next())
 | 
						for (bool okc = rec.move_first(); okc; okc = rec.move_next())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (!pi.add_status())
 | 
							if (!pi.add_status())
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		const TRectype& mov = rec.cursor()->curr();
 | 
							const TRectype& doc = rec.cursor()->curr();
 | 
				
			||||||
		const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
 | 
							const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC));
 | 
				
			||||||
		bool sent = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt))
 | 
							// Controllo che la numerazione sia tra quelle giuste
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Controllo che il tipo documento sia OK
 | 
				
			||||||
 | 
							if(!check_doc_filter(doc))
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool sent = false;
 | 
				
			||||||
 | 
							if (chiave_paf(doc, hfatt, bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
				if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
 | 
									if (paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != " " && paf0100f.sq_get("P1_ERRINT") != "*")
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@ -162,17 +219,26 @@ void TPAR_mask::fill()
 | 
				
			|||||||
						continue;
 | 
											continue;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		int r = regs.set_row_cell(S_SELECTED, sent);
 | 
							TToken_string& row = docs.row(-1);
 | 
				
			||||||
 | 
							row                = sent ? " " : "X";
 | 
				
			||||||
 | 
							row.add(rec.get(DOC_ANNO).as_int(), 1);
 | 
				
			||||||
 | 
							row.add(rec.get(DOC_CODNUM).as_string());
 | 
				
			||||||
 | 
							row.add(rec.get(DOC_TIPODOC).as_string());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		regs.set_row_cell(S_ANNO, rec.get_int(MOV_ANNOES), r);
 | 
							TString tipodoc = rec.get(DOC_TIPODOCSDI).as_string();
 | 
				
			||||||
		regs.set_row_cell(S_NUMREG, rec.get_string(MOV_NUMREG), r);
 | 
					 | 
				
			||||||
		regs.set_row_cell(S_DATAREG, rec.get(MOV_DATAREG).as_date(), r);
 | 
					 | 
				
			||||||
		regs.set_row_cell(S_CLIENTE, rec.get_long(MOV_CODCF), r);
 | 
					 | 
				
			||||||
		regs.set_row_cell(S_RAGSOC, cli.get(CLI_RAGSOC), r);
 | 
					 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 // non c'è ?   TString cod_ind_sped = rec.get(DOC_CODINDSP).as_string();
 | 
							if (tipodoc.blank())
 | 
				
			||||||
		TString rif = get_dest_sdi(rec.get_string(CFV_TIPOCF)[0], rec.get_long(CFV_CODCF), EMPTY_STRING);
 | 
								tipodoc = td.tipo_doc_sdi();
 | 
				
			||||||
 | 
							if (today <data_inizio && (tipodoc == "TD24" || tipodoc == "TD25" || tipodoc == "TD27"))
 | 
				
			||||||
 | 
								tipodoc = "TD01";
 | 
				
			||||||
 | 
							row.add(tipodoc);
 | 
				
			||||||
 | 
							row.add(rec.get(DOC_NDOC).as_int());
 | 
				
			||||||
 | 
							row.add(rec.get(DOC_DATADOC).as_date());
 | 
				
			||||||
 | 
							row.add(rec.get(CFV_CODCF).as_int());
 | 
				
			||||||
 | 
							row.add(rec.get("20." CLI_RAGSOC).as_string());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TString cod_ind_sped = rec.get(DOC_CODINDSP).as_string();
 | 
				
			||||||
 | 
							TString rif = get_dest_sdi(rec.get(CFV_TIPOCF).as_string()[0], rec.get(CFV_CODCF).as_int(), cod_ind_sped);
 | 
				
			||||||
		// Se è ancora vuoto potrebbe essere estero
 | 
							// Se è ancora vuoto potrebbe essere estero
 | 
				
			||||||
		if(rif.empty())
 | 
							if(rif.empty())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@ -181,17 +247,17 @@ void TPAR_mask::fill()
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
				first = false;
 | 
									first = false;
 | 
				
			||||||
				// Abilito la colonna del codice ufficio per segnalare l'errore
 | 
									// Abilito la colonna del codice ufficio per segnalare l'errore
 | 
				
			||||||
				regs.enable_column(regs.cid2index(S_UFFICIO));
 | 
									docs.enable_column(docs.cid2index(S_UFFICIO));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			regs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), regs.cid2index(S_UFFICIO));
 | 
								docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), docs.cid2index(S_UFFICIO));
 | 
				
			||||||
			fat_no_cod++;
 | 
								fat_no_cod++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		regs.set_row_cell(S_UFFICIO, rif, r);
 | 
					;
 | 
				
			||||||
		regs.set_row_cell(S_RIFAMM, cli.vendite().get(CFV_PARIFAMM), r);
 | 
							row.add(rif);
 | 
				
			||||||
		regs.set_row_cell(S_COFI, cli.get(CLI_COFI), r);
 | 
							row.add(rec.get("17." CFV_PARIFAMM).as_string());
 | 
				
			||||||
 | 
							row.add(rec.get("20." CLI_COFI).as_string());
 | 
				
			||||||
		bool split = cli.get_bool("20." CLI_SPLITPAY);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool split = rec.get("20." CLI_SPLITPAY).as_bool();
 | 
				
			||||||
		if (split)
 | 
							if (split)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const long numreg = rec.get(DOC_NUMREG).as_int();
 | 
								const long numreg = rec.get(DOC_NUMREG).as_int();
 | 
				
			||||||
@ -201,13 +267,16 @@ void TPAR_mask::fill()
 | 
				
			|||||||
				split               = is_split_payment(mov);
 | 
									split               = is_split_payment(mov);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		regs.set_row_cell(S_SPLITPAY, split, r);
 | 
							row.add(split ? "X" : " ");
 | 
				
			||||||
		regs.set_row_cell(S_ATTACH, false, r);  // verificare
 | 
					
 | 
				
			||||||
		regs.set_row_cell(S_ONLYGEN, true, r); // verificare
 | 
							const bool attach = !rec.get("COLL_GOLEM").is_empty();
 | 
				
			||||||
 | 
							row.add(attach ? "X" : " ");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							row.add(!td.invio_xml() ? "X" : "");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	regs.force_update();
 | 
						docs.force_update();
 | 
				
			||||||
	regs.show();
 | 
						docs.show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (fat_no_cod > 0)
 | 
						if (fat_no_cod > 0)
 | 
				
			||||||
		warning_box("Sono state trovate una o più fatture senza codice destinatario né pec");
 | 
							warning_box("Sono state trovate una o più fatture senza codice destinatario né pec");
 | 
				
			||||||
@ -220,7 +289,7 @@ void TPAR_mask::set_filter_changed()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void TPAR_mask::set_pronto()
 | 
					void TPAR_mask::set_pronto()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TString_array& sht = sfield(F_REGS).rows_array();
 | 
						TString_array& sht = sfield(F_DOCS).rows_array();
 | 
				
			||||||
	TProgress_monitor pi(sht.items(), "Esportazione Fatture");
 | 
						TProgress_monitor pi(sht.items(), "Esportazione Fatture");
 | 
				
			||||||
	FOR_EACH_ARRAY_ROW(sht, r, riga)
 | 
						FOR_EACH_ARRAY_ROW(sht, r, riga)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@ -233,7 +302,7 @@ void TPAR_mask::set_pronto()
 | 
				
			|||||||
		static TString campo_hfatt, campo_bfatt, query;
 | 
							static TString campo_hfatt, campo_bfatt, query;
 | 
				
			||||||
		TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
 | 
							TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
 | 
							if (chiave_paf(doc, campo_hfatt, campo_bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
								// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
				
			||||||
			query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
								query.cut(0) << "UPDATE PAF0100F SET P1_GESTIONE = 'P' WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
				
			||||||
@ -248,7 +317,7 @@ void TPAR_mask::set_pronto()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void TPAR_mask::connect_keys()
 | 
					void TPAR_mask::connect_keys()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TString_array& sht = sfield(F_REGS).rows_array();
 | 
						TString_array& sht = sfield(F_DOCS).rows_array();
 | 
				
			||||||
	TLog_report legno("Allineamento chiavi documento");
 | 
						TLog_report legno("Allineamento chiavi documento");
 | 
				
			||||||
	// Non sto a fare 8000 variabili, oggi mi sento a corto di Byte
 | 
						// Non sto a fare 8000 variabili, oggi mi sento a corto di Byte
 | 
				
			||||||
	static TString msg_log;
 | 
						static TString msg_log;
 | 
				
			||||||
@ -271,7 +340,7 @@ void TPAR_mask::connect_keys()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
 | 
							TDocumento doc('D', riga->get_int(xvtil_cid2index(S_ANNO)), EMPTY_STRING, riga->get_long(xvtil_cid2index(S_NUMREG)));
 | 
				
			||||||
		static TString campo_hfatt, campo_bfatt, query;
 | 
							static TString campo_hfatt, campo_bfatt, query;
 | 
				
			||||||
		if (chiave_paf_doc(doc, campo_hfatt, campo_bfatt))
 | 
							if (chiave_paf(doc, campo_hfatt, campo_bfatt))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
								// Come prima cosa controllo che effettivamente la chiave di questo doc sia in giro per il mondo
 | 
				
			||||||
			query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
								query.cut(0) << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << campo_hfatt << "' AND P1_KEYBODYFATT = '" << campo_bfatt << "'";
 | 
				
			||||||
@ -371,7 +440,7 @@ void TPAR_mask::export_paf()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	int      ndocs = 0;
 | 
						int      ndocs = 0;
 | 
				
			||||||
	TLocalisamfile doc(LF_DOC);
 | 
						TLocalisamfile doc(LF_DOC);
 | 
				
			||||||
	TString_array& sht = sfield(F_REGS).rows_array();
 | 
						TString_array& sht = sfield(F_DOCS).rows_array();
 | 
				
			||||||
	TDoc_fp elab;
 | 
						TDoc_fp elab;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//elab.set_cache_insert(true);
 | 
						//elab.set_cache_insert(true);
 | 
				
			||||||
@ -385,8 +454,8 @@ void TPAR_mask::export_paf()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if (riga->starts_with("X"))
 | 
								if (riga->starts_with("X"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				const int           anno = riga->get_int(sfield(F_REGS).cid2index(S_ANNO));
 | 
									const int           anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO));
 | 
				
			||||||
				const long          nreg = riga->get_long(sfield(F_REGS).cid2index(S_NUMREG));
 | 
									const long          nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG));
 | 
				
			||||||
				const TDoc_key      key(anno, EMPTY_STRING, nreg); //da fare
 | 
									const TDoc_key      key(anno, EMPTY_STRING, nreg); //da fare
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				// Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
 | 
									// Verifico che il codice sdi nello sheet sia lo stesso sulla testata del documento in caso contrario lo aggiorno
 | 
				
			||||||
@ -433,7 +502,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
				
			|||||||
	case F_DATAEND:
 | 
						case F_DATAEND:
 | 
				
			||||||
		if (e == fe_init)
 | 
							if (e == fe_init)
 | 
				
			||||||
			o.set(TDate(TODAY));
 | 
								o.set(TDate(TODAY));
 | 
				
			||||||
	case F_REGS:
 | 
						case F_DOCS:
 | 
				
			||||||
		if (e == se_query_add || e == se_query_del)
 | 
							if (e == se_query_add || e == se_query_del)
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
@ -444,19 +513,24 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
				
			|||||||
	case DLG_USER:
 | 
						case DLG_USER:
 | 
				
			||||||
		if (e == fe_button && jolly > 0)
 | 
							if (e == fe_button && jolly > 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			TSheet_field&  regs = sfield(F_REGS);
 | 
								TSheet_field&  docs = sfield(F_DOCS);
 | 
				
			||||||
			TToken_string& row  = regs.row(regs.selected());
 | 
								TToken_string& row  = docs.row(docs.selected());
 | 
				
			||||||
			// Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file
 | 
								TRectype       doc(LF_DOC);
 | 
				
			||||||
			save_all_fields();
 | 
								doc.put(DOC_PROVV, 'D');
 | 
				
			||||||
			fill();
 | 
								doc.put(DOC_ANNO, row.get(1));
 | 
				
			||||||
 | 
								doc.put(DOC_CODNUM, row.get(2));
 | 
				
			||||||
 | 
								doc.put(DOC_TIPODOC, row.get(3));
 | 
				
			||||||
 | 
								doc.put(DOC_NDOC, row.get(5));
 | 
				
			||||||
 | 
								if (doc.edit(LF_DOC, "", "ve0")) // Perchè prima andava senza dovergli mettere nulla?
 | 
				
			||||||
 | 
									fill();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case DLG_ALL:
 | 
						case DLG_ALL:
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (e == fe_button)
 | 
								if (e == fe_button)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				TSheet_field&  regs  = sfield(F_REGS);
 | 
									TSheet_field&  docs  = sfield(F_DOCS);
 | 
				
			||||||
				TString_array& sht   = regs.rows_array();
 | 
									TString_array& sht   = docs.rows_array();
 | 
				
			||||||
				const int      items = sht.items();
 | 
									const int      items = sht.items();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (items > 0)
 | 
									if (items > 0)
 | 
				
			||||||
@ -464,7 +538,7 @@ bool TPAR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
				
			|||||||
					const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
 | 
										const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
 | 
				
			||||||
					for (int       i      = 0; i < items; i++)
 | 
										for (int       i      = 0; i < items; i++)
 | 
				
			||||||
						sht.row(i).add(select, 0);
 | 
											sht.row(i).add(select, 0);
 | 
				
			||||||
					regs.force_update();
 | 
										docs.force_update();
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -506,7 +580,7 @@ void TPAR_mask::next_page(int p)
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		if ((ok = _filter_changed = check_full_fields()))
 | 
							if ((ok = _filter_changed = check_full_fields()))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			save_all_fields();
 | 
								TSheet_field& sf = sfield(F_DOCS);
 | 
				
			||||||
			fill();
 | 
								fill();
 | 
				
			||||||
			_filter_changed = false;
 | 
								_filter_changed = false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -531,7 +605,7 @@ bool TPAR_mask::on_key(const KEY key)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bool TPAR_mask::check_not_empty()
 | 
					bool TPAR_mask::check_not_empty()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TSheet_field& sheet = sfield(F_REGS);
 | 
						TSheet_field& sheet = sfield(F_DOCS);
 | 
				
			||||||
	TString       msg;
 | 
						TString       msg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (sheet.empty())
 | 
						if (sheet.empty())
 | 
				
			||||||
@ -563,10 +637,8 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const
 | 
				
			|||||||
	const TString& tipodoc = d.get(DOC_TIPODOC);
 | 
						const TString& tipodoc = d.get(DOC_TIPODOC);
 | 
				
			||||||
	const char stato = d.stato();
 | 
						const char stato = d.stato();
 | 
				
			||||||
	const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC));
 | 
						const TTipo_documento& td = cached_tipodoc(d.get(DOC_TIPODOC));
 | 
				
			||||||
	TSheet_field & scaus = sfield(F_CAUSALI_TIPO);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Mi precarico la tabella dei documenti scelti
 | 
						// Mi precarico la tabella dei documenti scelti
 | 
				
			||||||
	FOR_EACH_SHEET_ROW(scaus, nr, row)
 | 
						FOR_EACH_SHEET_ROW(sfield(F_CAUSALI_TIPO), nr, row)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (codnum.compare(row->get(_codnum)) == 0 &&		// Codice numerazione
 | 
							if (codnum.compare(row->get(_codnum)) == 0 &&		// Codice numerazione
 | 
				
			||||||
			tipodoc.compare(row->get(_tipodoc)) == 0 &&		// Tipo documento
 | 
								tipodoc.compare(row->get(_tipodoc)) == 0 &&		// Tipo documento
 | 
				
			||||||
@ -581,78 +653,78 @@ bool TPAR_mask::check_doc_filter(const TDocumentoEsteso& d) const
 | 
				
			|||||||
void TPAR_mask::set_err_paf()
 | 
					void TPAR_mask::set_err_paf()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// Vado a riportare sui paf l'errore
 | 
						// Vado a riportare sui paf l'errore
 | 
				
			||||||
	TSheet_field& sfld = sfield(F_REGS);
 | 
						TSheet_field& sfld = sfield(F_DOCS);
 | 
				
			||||||
	TProgress_monitor pi(sfld.items(), "Cambio stato fatture");
 | 
						TString_array& sht = sfld.rows_array();
 | 
				
			||||||
	const TString tipodocsdi = get(F_TIPO_SDI);
 | 
						TLocalisamfile fdoc(LF_DOC);
 | 
				
			||||||
 | 
						if (!sht.empty())
 | 
				
			||||||
	FOR_EACH_SHEET_ROW_LOOP(sfld, r)
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (!pi.add_status())
 | 
							TProgress_monitor pi(sht.items(), "Cambio stato fatture");
 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sfld.get_bool_row_cell(r, S_SELECTED))
 | 
							FOR_EACH_ARRAY_ROW(sht, r, riga)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
 | 
								if (!pi.add_status())
 | 
				
			||||||
			long nreg = sfld.get_long_row_cell(r, S_NUMREG);
 | 
									break;
 | 
				
			||||||
			const TRectype & mov = cache().get(LF_MOV, nreg);
 | 
					 | 
				
			||||||
			TString hfatt, bfatt;
 | 
					 | 
				
			||||||
			TPaf_record paf0100f("PAF0100F");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
 | 
								if (riga->starts_with("X"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				TString query;
 | 
									const int           anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO));
 | 
				
			||||||
				query <<
 | 
									const long          nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG));
 | 
				
			||||||
					"UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									const TDoc_key      key(anno, EMPTY_STRING, nreg);
 | 
				
			||||||
					"UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
 | 
				
			||||||
					"UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									fdoc.zero();
 | 
				
			||||||
					"UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									fdoc.put(DOC_PROVV, key.provv());
 | 
				
			||||||
					"UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									fdoc.put(DOC_ANNO, key.anno());
 | 
				
			||||||
					"UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									fdoc.put(DOC_CODNUM, key.codnum());
 | 
				
			||||||
					"UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									fdoc.put(DOC_NDOC, key.ndoc());
 | 
				
			||||||
					"UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					
 | 
				
			||||||
					"UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									TString hfatt, bfatt;
 | 
				
			||||||
					"UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									TPaf_record paf0100f("PAF0100F");
 | 
				
			||||||
					"UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
									if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt))
 | 
				
			||||||
					"UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					"UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
					 | 
				
			||||||
					// PAFW3 non ha il flag di gestione
 | 
					 | 
				
			||||||
					"UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n";
 | 
					 | 
				
			||||||
				if(!fp_db().sq_set_exec(query))
 | 
					 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					TString err = "Impossibile salvare la regolarizzazione "; err  << nreg << "\nVerrà saltata.";
 | 
										static TString query;
 | 
				
			||||||
 | 
										query.cut(0) <<
 | 
				
			||||||
 | 
											"UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1100F SET PA_GESTIONE = 'E', PA_KEYPRGINVIO = 'DELETED' WHERE PA_KEYHEADERFATT = '" << hfatt << "' AND PA_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1200F SET PB_GESTIONE = 'E', PB_KEYPRGINVIO = 'DELETED' WHERE PB_KEYHEADERFATT = '" << hfatt << "' AND PB_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1800F SET PI_GESTIONE = 'E', PI_KEYPRGINVIO = 'DELETED' WHERE PI_KEYHEADERFATT = '" << hfatt << "' AND PI_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF1900F SET PY_GESTIONE = 'E', PY_KEYPRGINVIO = 'DELETED' WHERE PY_KEYHEADERFATT = '" << hfatt << "' AND PY_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2000F SET PJ_GESTIONE = 'E', PJ_KEYPRGINVIO = 'DELETED' WHERE PJ_KEYHEADERFATT = '" << hfatt << "' AND PJ_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2100F SET PK_GESTIONE = 'E', PK_KEYPRGINVIO = 'DELETED' WHERE PK_KEYHEADERFATT = '" << hfatt << "' AND PK_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2200F SET PL_GESTIONE = 'E', PL_KEYPRGINVIO = 'DELETED' WHERE PL_KEYHEADERFATT = '" << hfatt << "' AND PL_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2400F SET PN_GESTIONE = 'E', PN_KEYPRGINVIO = 'DELETED' WHERE PN_KEYHEADERFATT = '" << hfatt << "' AND PN_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2500F SET PO_GESTIONE = 'E', PO_KEYPRGINVIO = 'DELETED' WHERE PO_KEYHEADERFATT = '" << hfatt << "' AND PO_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2600F SET PP_GESTIONE = 'E', PP_KEYPRGINVIO = 'DELETED' WHERE PP_KEYHEADERFATT = '" << hfatt << "' AND PP_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF2700F SET PQ_GESTIONE = 'E', PQ_KEYPRGINVIO = 'DELETED' WHERE PQ_KEYHEADERFATT = '" << hfatt << "' AND PQ_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF3000F SET PT_GESTIONE = 'E', PT_KEYPRGINVIO = 'DELETED' WHERE PT_KEYHEADERFATT = '" << hfatt << "' AND PT_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											"UPDATE PAF3200F SET PU_GESTIONE = 'E', PU_KEYPRGINVIO = 'DELETED' WHERE PU_KEYHEADERFATT = '" << hfatt << "' AND PU_KEYBODYFATT = '" << bfatt << "';\n" <<
 | 
				
			||||||
 | 
											// PAFW3 non ha il flag di gestione
 | 
				
			||||||
 | 
											"UPDATE PAFW300F SET PW_KEYPRGINVIO = 'DELETED' WHERE PW_KEYHEADERFATT = '" << hfatt << "' AND PW_KEYBODYFATT = '" << bfatt << "';\n";
 | 
				
			||||||
 | 
										if(!fp_db().sq_set_exec(query))
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											TString err = "Impossibile salvare la fattura "; err << anno << " " << " " << nreg << "\nVerrà saltata.";
 | 
				
			||||||
 | 
											error_box(err);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										TString err = "Impossibile trovare la fattura "; err << anno << " "  << " " << nreg << "\nVerrà saltata.";
 | 
				
			||||||
					error_box(err);
 | 
										error_box(err);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
					
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				TString err = "Impossibile trovare la fattura "; err  <<  nreg << "\nVerrà saltata.";
 | 
					 | 
				
			||||||
				error_box(err);
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							fp_db().sq_commit();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	fp_db().sq_commit();
 | 
					 | 
				
			||||||
	force_reload_sheet();
 | 
						force_reload_sheet();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TPAR_mask::TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	disable(DLG_OK);
 | 
					 | 
				
			||||||
	disable(DLG_SAVEREC);
 | 
					 | 
				
			||||||
	disable(DLG_FINDREC);
 | 
					 | 
				
			||||||
	load_all_fields();
 | 
					 | 
				
			||||||
	const TDate data_inizio = get_date_start_new_fatt();
 | 
					 | 
				
			||||||
	__mask = this;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// TReg2Paf
 | 
					// TReg2Paf
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,11 @@
 | 
				
			|||||||
#define F_DATAINI				401
 | 
					#define F_DATAINI				401
 | 
				
			||||||
#define F_DATAEND				402
 | 
					#define F_DATAEND				402
 | 
				
			||||||
#define F_REGSEL				403
 | 
					#define F_DOCSEL				403
 | 
				
			||||||
#define F_CAUSALI_TIPO	404
 | 
					#define F_CAUSALI_TIPO	404
 | 
				
			||||||
#define F_TIPO_SDI			405
 | 
					#define F_TIPO_SDI			405
 | 
				
			||||||
#define F_REGS					406
 | 
					#define F_DOCS					406
 | 
				
			||||||
#define START_MASK				F_DATAINI
 | 
					#define START_MASK				F_DATAINI
 | 
				
			||||||
#define END_MASK				F_REGS
 | 
					#define END_MASK				F_DOCS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define S_COD_CAUS   101
 | 
					#define S_COD_CAUS   101
 | 
				
			||||||
 | 
				
			|||||||
@ -62,14 +62,11 @@ BEGIN
 | 
				
			|||||||
  CHECKTYPE REQUIRED
 | 
					  CHECKTYPE REQUIRED
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RADIOBUTTON F_REGSEL 7 80
 | 
					RADIOBUTTON F_DOCSEL 7 80
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 3 "Registrazioni da visualizzare"
 | 
					  PROMPT 1 3 "Documenti da visualizzare"
 | 
				
			||||||
  ITEM "|Da inviare"
 | 
					  ITEM "P|Provvisori"
 | 
				
			||||||
  ITEM "X|XML Generato"
 | 
					  ITEM "D|Definitivi"
 | 
				
			||||||
  ITEM "N|Notificato"
 | 
					 | 
				
			||||||
  ITEM "E|In errore"
 | 
					 | 
				
			||||||
  ITEM "D|Diag."
 | 
					 | 
				
			||||||
  FLAGS "Z"
 | 
					  FLAGS "Z"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -100,7 +97,7 @@ END
 | 
				
			|||||||
ENDPAGE
 | 
					ENDPAGE
 | 
				
			||||||
PAGE "Elenco Regolarizzazioni" 0 2 0 0
 | 
					PAGE "Elenco Regolarizzazioni" 0 2 0 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPREADSHEET F_REGS
 | 
					SPREADSHEET F_DOCS
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 0 2 ""
 | 
					  PROMPT 0 2 ""
 | 
				
			||||||
  ITEM "@1"
 | 
					  ITEM "@1"
 | 
				
			||||||
 | 
				
			|||||||
@ -35,7 +35,6 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Genera la chiave per i paf
 | 
					// Genera la chiave per i paf
 | 
				
			||||||
bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt);
 | 
					 | 
				
			||||||
bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt);
 | 
					bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt);
 | 
				
			||||||
bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt);
 | 
					bool chiave_paf_doc(const TRectype& doc, TString& hfatt, TString& bfatt);
 | 
				
			||||||
// Ritorna cod sdi, pec o vuoto. Chiama get_coddest()
 | 
					// Ritorna cod sdi, pec o vuoto. Chiama get_coddest()
 | 
				
			||||||
@ -422,8 +421,9 @@ inline TFP_custom_cache& cached_custom_fp()
 | 
				
			|||||||
	return *carmelo;
 | 
						return *carmelo;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TFP_expression : public TObject // ma perchè non derivano da expre documento cazzone ? se sono più espressioni prima si separa la token string
 | 
					class TFP_expression : public TObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
	enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
 | 
						enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Etrattori
 | 
						// Etrattori
 | 
				
			||||||
@ -445,8 +445,8 @@ public:
 | 
				
			|||||||
	static bool check_condition(const TString& cond, TRiga_documento& rdoc);
 | 
						static bool check_condition(const TString& cond, TRiga_documento& rdoc);
 | 
				
			||||||
	static bool check_condition(const TString& cond, TDocumento& doc) { return check_condition(cond, doc[1]); }
 | 
						static bool check_condition(const TString& cond, TDocumento& doc) { return check_condition(cond, doc[1]); }
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
  TFP_expression() {};
 | 
						TFP_expression() = default;
 | 
				
			||||||
  virtual ~TFP_expression() {};
 | 
						virtual ~TFP_expression() = default;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Gestione PAF
 | 
					// Gestione PAF
 | 
				
			||||||
 | 
				
			|||||||
@ -159,26 +159,6 @@ TString& complete_num_fp(const TCodice_numerazione& codnum, const int numdoc)
 | 
				
			|||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio
 | 
					// Crea la coppia di chiavi per il db PAF a partire da un documento vero e proprio
 | 
				
			||||||
bool chiave_paf_mov(const TRectype& mov, const TString & tipodoc, TString& hfatt, TString& bfatt)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	TCli_for cli(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
 | 
					 | 
				
			||||||
	hfatt.cut(0);
 | 
					 | 
				
			||||||
	if (cli.is_occasionale())
 | 
					 | 
				
			||||||
		hfatt << "O" << mov.get(MOV_OCFPI);
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		hfatt << cli.tipo() << cli.codice();
 | 
					 | 
				
			||||||
	CHECK(hfatt.full(), "Destinatario fattura P.A. non valido");
 | 
					 | 
				
			||||||
	//20180101_TD01_123456712345671234567
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	TString numdoc = mov.get(MOV_NUMDOC);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	numdoc.lpad(mov.length(DOC_NDOC), '0');
 | 
					 | 
				
			||||||
	bfatt = mov.get_date(MOV_DATAREG).date2ansi();
 | 
					 | 
				
			||||||
	bfatt << '_' << tipodoc << '_' << numdoc;
 | 
					 | 
				
			||||||
	return hfatt.full() && bfatt.full();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt)
 | 
					bool chiave_paf_doc(const TDocumento& doc, TString& hfatt, TString& bfatt)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
		hfatt.cut(0);
 | 
							hfatt.cut(0);
 | 
				
			||||||
@ -1858,34 +1838,36 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
				
			|||||||
    rifs.trim();
 | 
					    rifs.trim();
 | 
				
			||||||
    if (rifs == "0")
 | 
					    if (rifs == "0")
 | 
				
			||||||
      rifs.cut(0);
 | 
					      rifs.cut(0);
 | 
				
			||||||
 | 
					    int pos = rifs.find(" - ");
 | 
				
			||||||
 | 
					    int len = rifs.len();
 | 
				
			||||||
 | 
						long numlinea = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		int len = rifs.len();
 | 
					    if (len > 0  && pos < 0)
 | 
				
			||||||
 | 
					      pos = len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (len > 0)
 | 
					    for(; pos >= 0;)
 | 
				
			||||||
		{
 | 
					    {
 | 
				
			||||||
			rifs.replace(" - ", "|");
 | 
					      TToken_string rif(rifs.left(pos), ' ');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			long numlinea = 0;
 | 
					      // <DatiDDT> //
 | 
				
			||||||
			TToken_string elab_rifs(rifs);
 | 
					      reset(paf1600f);
 | 
				
			||||||
 | 
					      temp = rif.get();
 | 
				
			||||||
 | 
					      paf1600f.set("PF_NUMDDDT", temp);
 | 
				
			||||||
 | 
						  temp = rif.get();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			FOR_EACH_STR_TOKEN(elab_rifs, str)
 | 
						  TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3,2)),atoi( temp.right(2)));
 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				TToken_string rif(str, ' ');
 | 
					 | 
				
			||||||
	  
 | 
						  
 | 
				
			||||||
				// <DatiDDT> //
 | 
					      paf1600f.set("PF_DATADDT", dataddt);
 | 
				
			||||||
				reset(paf1600f);
 | 
					      paf1600f.set("PF_GESTIONE", "D");
 | 
				
			||||||
				temp = rif.get();
 | 
						  paf1600f.set("PF_RIFNUMLINEA", numlinea++);
 | 
				
			||||||
				paf1600f.set("PF_NUMDDDT", temp);
 | 
					      ok &= insert(paf1600f);
 | 
				
			||||||
				temp = rif.get();
 | 
					      rifs.ltrim(pos + 3);
 | 
				
			||||||
 | 
					      pos = rifs.find(" - ");
 | 
				
			||||||
				TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3, 2)), atoi(temp.right(2)));
 | 
					      len = rifs.len();
 | 
				
			||||||
 | 
					      if (len > 0 && pos < 0)
 | 
				
			||||||
				paf1600f.set("PF_DATADDT", dataddt);
 | 
					        pos = len;
 | 
				
			||||||
				paf1600f.set("PF_GESTIONE", "D");
 | 
					      // </DatiDDT>
 | 
				
			||||||
				paf1600f.set("PF_RIFNUMLINEA", numlinea++);
 | 
					    }
 | 
				
			||||||
				ok &= insert(paf1600f);					 // </DatiDDT>
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
	FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
 | 
						FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
				
			|||||||
@ -477,8 +477,7 @@ void TFP_expression::split_condition(const TString& cond, TString& cond_sx, TStr
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Questa funzione potrebbe diventare standard per TRectype. Ma vai a cagare i variant sono da eliminare
 | 
					// Questa funzione potrebbe diventare standard per TRectype
 | 
				
			||||||
 | 
					 | 
				
			||||||
TVariant& TFP_expression::get_value(const TRectype& rec, const TString& campo)
 | 
					TVariant& TFP_expression::get_value(const TRectype& rec, const TString& campo)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	TVariant& ret = get_tmp_var();
 | 
						TVariant& ret = get_tmp_var();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user