Revert "Patch level : 12.0 nopatch"
This reverts commit 417ff487b8cdfcc34f78862da3204e6e92bf11ca.
This commit is contained in:
		
							parent
							
								
									5a694d2067
								
							
						
					
					
						commit
						b9cd6dd599
					
				
										
											Binary file not shown.
										
									
								
							| @ -104,10 +104,7 @@ 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()) | ||||||
| @ -212,7 +209,7 @@ void TPA_mask::fill() | |||||||
| 				continue; | 				continue; | ||||||
| 
 | 
 | ||||||
| 		bool sent = false; | 		bool sent = false; | ||||||
| 		if (chiave_paf(doc, hfatt, bfatt)) | 		if (chiave_paf_doc(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") != "*") | ||||||
| 				{ | 				{ | ||||||
| @ -307,7 +304,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, campo_hfatt, campo_bfatt)) | 		if (chiave_paf_doc(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 << "'"; | ||||||
| @ -345,7 +342,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, campo_hfatt, campo_bfatt)) | 		if (chiave_paf_doc(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 << "'"; | ||||||
| @ -687,7 +684,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(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) | 				if (fdoc.read() == NOERR && chiave_paf_doc(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) | ||||||
| 				{ | 				{ | ||||||
| 					static TString query; | 					static TString query; | ||||||
| 					query.cut(0) << | 					query.cut(0) << | ||||||
|  | |||||||
| @ -17,6 +17,7 @@ | |||||||
| #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 | ||||||
| { | { | ||||||
| @ -669,7 +670,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(cid2index(S_FORNITORE)))); |       const TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(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)) | ||||||
| @ -868,7 +869,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(cid2index(S_FORNITORE)))); | 			TString codcaus(get_codcaus(row->get(cid2index(S_TIPODOCSDI)), row->get_long(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,21 +13,16 @@ | |||||||
| #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(); | ||||||
| @ -50,35 +45,29 @@ protected: | |||||||
| 	bool _enable_chiave_fixer; | 	bool _enable_chiave_fixer; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	TPAR_mask() : TAutomask("fp0700a"), _filter_changed(true), _enable_chiave_fixer(false) | 	const TAssoc_array & causali() const { return _causali; } | ||||||
| 	{ | 	void save_all_fields(); | ||||||
| 		disable(DLG_OK); | 	TPAR_mask(); | ||||||
| 		disable(DLG_SAVEREC); | 	virtual ~TPAR_mask() {} | ||||||
| 		disable(DLG_FINDREC); |  | ||||||
| 		load_all_fields(); |  | ||||||
| 		const TDate data_inizio = get_date_start_new_fatt(); |  | ||||||
| 
 |  | ||||||
| 	} |  | ||||||
| 	void save_all_fields() const; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| void TPAR_mask::save_all_fields() const | TPAR_mask *__mask = nullptr; | ||||||
|  | 
 | ||||||
|  | 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
 | ||||||
| 	TFP_selected_docs selected_docs; | 	_causali.destroy(); | ||||||
| 	selected_docs.save_sheet(sfield(F_CAUSALI_TIPO)); | 	FOR_EACH_SHEET_ROW_LOOP(scaus, r) | ||||||
| 
 | 	{ | ||||||
| 	// Salvo le impostazioni
 | 		const TString & codcaus = scaus.get_str_row_cell(r, S_COD_CAUS); | ||||||
| /*
 | 		ini_set_string(CONFIG_DITTA, "fp", "CAUSALE", codcaus, r); | ||||||
| 	set_esp_pri_empty(get_bool(F_SETDEFCOD)); | 		_causali.add(codcaus); | ||||||
| 	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() | ||||||
| @ -97,117 +86,71 @@ 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); |  | ||||||
| 
 | 
 | ||||||
| 	TFP_selected_regs selected_regs; | 	for (int i = 0;; i++) | ||||||
| 
 |  | ||||||
| 	if (selected_regs.has_selected_regs()) |  | ||||||
| 	{ | 	{ | ||||||
| 		// Super nuova gestione super avanzata!
 | 		TString16 caus = ini_get_string(CONFIG_DITTA, "fp", "CAUSALE", "", i); | ||||||
| 		selected_regs.fill_sheet(sheet); | 		 | ||||||
|  | 		if (caus.full()) | ||||||
|  | 			scaus.set_row_cell(S_COD_CAUS, caus); | ||||||
|  | 		else | ||||||
|  | 			break; | ||||||
| 	} | 	} | ||||||
| 	else if(s_accepted_docs.full()) | 	scaus.force_update(); | ||||||
| 	{ | 	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_DOCSEL); | 	TString filter_selected		  = get(F_REGSEL); | ||||||
|  | 	// 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()); | ||||||
| 
 | 
 | ||||||
| 	// Record di controllo per eventuali elaborazioni precedenti
 | 	query << "USE " << LF_MOV << " KEY 3 SELECT (BETWEEN(" << MOV_DATAREG << "," | ||||||
| 	TString     hfatt(LEN_HFATT), bfatt(LEN_BFATT); | 		    << dal.date2ansi() << ',' << al.date2ansi() << "))&&(REG!=\"\")" | ||||||
| 	TPaf_record paf0100f("PAF0100F"); | 		<< "\nFROM " << MOV_TIPO << "=C\nTO " << MOV_TIPO "=C"; | ||||||
| 
 |  | ||||||
| 	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_var("#DADATADOC", dal); | 	rec.set_filterfunction(caus_filter); | ||||||
| 	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
 | ||||||
| 	docs.enable_column(cid2index(S_UFFICIO), false); | 	regs.enable_column(cid2index(S_UFFICIO), false); | ||||||
| 	const TDate data_inizio = get_date_start_new_fatt(); | 	regs.reset(); | ||||||
| 
 | 
 | ||||||
| 	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& doc = rec.cursor()->curr(); | 		const TRectype& mov = rec.cursor()->curr(); | ||||||
| 		const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC)); | 		const TCli_for & cli = cached_clifor(mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF)); | ||||||
| 
 |  | ||||||
| 		// Controllo che la numerazione sia tra quelle giuste
 |  | ||||||
| 
 |  | ||||||
| 		// Controllo che il tipo documento sia OK
 |  | ||||||
| 		if(!check_doc_filter(doc)) |  | ||||||
| 				continue; |  | ||||||
| 
 |  | ||||||
| 		bool sent = false; | 		bool sent = false; | ||||||
| 		if (chiave_paf(doc, hfatt, bfatt)) | 
 | ||||||
|  | 		if (chiave_paf_mov(mov, tipodocsdi, 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") != "*") | ||||||
| 				{ | 				{ | ||||||
| @ -219,26 +162,17 @@ void TPAR_mask::fill() | |||||||
| 						continue; | 						continue; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		TToken_string& row = docs.row(-1); | 		int r = regs.set_row_cell(S_SELECTED, sent); | ||||||
| 		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()); |  | ||||||
| 
 | 
 | ||||||
| 		TString tipodoc = rec.get(DOC_TIPODOCSDI).as_string(); | 		regs.set_row_cell(S_ANNO, rec.get_int(MOV_ANNOES), r); | ||||||
| 		 | 		regs.set_row_cell(S_NUMREG, rec.get_string(MOV_NUMREG), r); | ||||||
| 		if (tipodoc.blank()) | 		regs.set_row_cell(S_DATAREG, rec.get(MOV_DATAREG).as_date(), r); | ||||||
| 			tipodoc = td.tipo_doc_sdi(); | 		regs.set_row_cell(S_CLIENTE, rec.get_long(MOV_CODCF), r); | ||||||
| 		if (today <data_inizio && (tipodoc == "TD24" || tipodoc == "TD25" || tipodoc == "TD27")) | 		regs.set_row_cell(S_RAGSOC, cli.get(CLI_RAGSOC), r); | ||||||
| 			tipodoc = "TD01"; | 
 | ||||||
| 		row.add(tipodoc); |  // non c'è ?   TString cod_ind_sped = rec.get(DOC_CODINDSP).as_string();
 | ||||||
| 		row.add(rec.get(DOC_NDOC).as_int()); | 		TString rif = get_dest_sdi(rec.get_string(CFV_TIPOCF)[0], rec.get_long(CFV_CODCF), EMPTY_STRING); | ||||||
| 		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()) | ||||||
| 		{ | 		{ | ||||||
| @ -247,17 +181,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
 | ||||||
| 				docs.enable_column(docs.cid2index(S_UFFICIO)); | 				regs.enable_column(regs.cid2index(S_UFFICIO)); | ||||||
| 			} | 			} | ||||||
| 			docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), docs.cid2index(S_UFFICIO)); | 			regs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.current_row(), regs.cid2index(S_UFFICIO)); | ||||||
| 			fat_no_cod++; | 			fat_no_cod++; | ||||||
| 		} | 		} | ||||||
| ; | 		regs.set_row_cell(S_UFFICIO, rif, r); | ||||||
| 		row.add(rif); | 		regs.set_row_cell(S_RIFAMM, cli.vendite().get(CFV_PARIFAMM), r); | ||||||
| 		row.add(rec.get("17." CFV_PARIFAMM).as_string()); | 		regs.set_row_cell(S_COFI, cli.get(CLI_COFI), r); | ||||||
| 		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(); | ||||||
| @ -267,16 +201,13 @@ void TPAR_mask::fill() | |||||||
| 				split               = is_split_payment(mov); | 				split               = is_split_payment(mov); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		row.add(split ? "X" : " "); | 		regs.set_row_cell(S_SPLITPAY, split, r); | ||||||
| 
 | 		regs.set_row_cell(S_ATTACH, false, r);  // verificare
 | ||||||
| 		const bool attach = !rec.get("COLL_GOLEM").is_empty(); | 		regs.set_row_cell(S_ONLYGEN, true, r); // verificare
 | ||||||
| 		row.add(attach ? "X" : " "); |  | ||||||
| 
 |  | ||||||
| 		row.add(!td.invio_xml() ? "X" : ""); |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	docs.force_update(); | 	regs.force_update(); | ||||||
| 	docs.show(); | 	regs.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"); | ||||||
| @ -289,7 +220,7 @@ void TPAR_mask::set_filter_changed() | |||||||
| 
 | 
 | ||||||
| void TPAR_mask::set_pronto() | void TPAR_mask::set_pronto() | ||||||
| { | { | ||||||
| 	TString_array& sht = sfield(F_DOCS).rows_array(); | 	TString_array& sht = sfield(F_REGS).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) | ||||||
| 	{ | 	{ | ||||||
| @ -302,7 +233,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, campo_hfatt, campo_bfatt)) | 		if (chiave_paf_doc(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 << "'"; | ||||||
| @ -317,7 +248,7 @@ void TPAR_mask::set_pronto() | |||||||
| 
 | 
 | ||||||
| void TPAR_mask::connect_keys() | void TPAR_mask::connect_keys() | ||||||
| { | { | ||||||
| 	TString_array& sht = sfield(F_DOCS).rows_array(); | 	TString_array& sht = sfield(F_REGS).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; | ||||||
| @ -340,7 +271,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, campo_hfatt, campo_bfatt)) | 		if (chiave_paf_doc(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 << "'"; | ||||||
| @ -440,7 +371,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_DOCS).rows_array(); | 	TString_array& sht = sfield(F_REGS).rows_array(); | ||||||
| 	TDoc_fp elab; | 	TDoc_fp elab; | ||||||
| 
 | 
 | ||||||
| 	//elab.set_cache_insert(true);
 | 	//elab.set_cache_insert(true);
 | ||||||
| @ -454,8 +385,8 @@ void TPAR_mask::export_paf() | |||||||
| 
 | 
 | ||||||
| 			if (riga->starts_with("X")) | 			if (riga->starts_with("X")) | ||||||
| 			{ | 			{ | ||||||
| 				const int           anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO)); | 				const int           anno = riga->get_int(sfield(F_REGS).cid2index(S_ANNO)); | ||||||
| 				const long          nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG)); | 				const long          nreg = riga->get_long(sfield(F_REGS).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
 | ||||||
| @ -502,7 +433,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_DOCS: | 	case F_REGS: | ||||||
| 		if (e == se_query_add || e == se_query_del) | 		if (e == se_query_add || e == se_query_del) | ||||||
| 			return false; | 			return false; | ||||||
| 		break; | 		break; | ||||||
| @ -513,24 +444,19 @@ 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&  docs = sfield(F_DOCS); | 			TSheet_field&  regs = sfield(F_REGS); | ||||||
| 			TToken_string& row  = docs.row(docs.selected()); | 			TToken_string& row  = regs.row(regs.selected()); | ||||||
| 			TRectype       doc(LF_DOC); | 			// Salvo subito su file le impostazioni di esportazione, in fplib accedo ai file
 | ||||||
| 			doc.put(DOC_PROVV, 'D'); | 			save_all_fields(); | ||||||
| 			doc.put(DOC_ANNO, row.get(1)); | 			fill(); | ||||||
| 			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&  docs  = sfield(F_DOCS); | 				TSheet_field&  regs  = sfield(F_REGS); | ||||||
| 				TString_array& sht   = docs.rows_array(); | 				TString_array& sht   = regs.rows_array(); | ||||||
| 				const int      items = sht.items(); | 				const int      items = sht.items(); | ||||||
| 
 | 
 | ||||||
| 				if (items > 0) | 				if (items > 0) | ||||||
| @ -538,7 +464,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); | ||||||
| 					docs.force_update(); | 					regs.force_update(); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -580,7 +506,7 @@ void TPAR_mask::next_page(int p) | |||||||
| 	{ | 	{ | ||||||
| 		if ((ok = _filter_changed = check_full_fields())) | 		if ((ok = _filter_changed = check_full_fields())) | ||||||
| 		{ | 		{ | ||||||
| 			TSheet_field& sf = sfield(F_DOCS); | 			save_all_fields(); | ||||||
| 			fill(); | 			fill(); | ||||||
| 			_filter_changed = false; | 			_filter_changed = false; | ||||||
| 		} | 		} | ||||||
| @ -605,7 +531,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_DOCS); | 	TSheet_field& sheet = sfield(F_REGS); | ||||||
| 	TString       msg; | 	TString       msg; | ||||||
| 
 | 
 | ||||||
| 	if (sheet.empty()) | 	if (sheet.empty()) | ||||||
| @ -637,8 +563,10 @@ 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(sfield(F_CAUSALI_TIPO), nr, row) | 	FOR_EACH_SHEET_ROW(scaus, 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
 | ||||||
| @ -653,78 +581,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_DOCS); | 	TSheet_field& sfld = sfield(F_REGS); | ||||||
| 	TString_array& sht = sfld.rows_array(); | 	TProgress_monitor pi(sfld.items(), "Cambio stato fatture"); | ||||||
| 	TLocalisamfile fdoc(LF_DOC); | 	const TString tipodocsdi = get(F_TIPO_SDI); | ||||||
| 	if (!sht.empty()) | 
 | ||||||
|  | 	FOR_EACH_SHEET_ROW_LOOP(sfld, r) | ||||||
| 	{ | 	{ | ||||||
| 		TProgress_monitor pi(sht.items(), "Cambio stato fatture"); | 		if (!pi.add_status()) | ||||||
|  | 			break; | ||||||
| 
 | 
 | ||||||
| 		FOR_EACH_ARRAY_ROW(sht, r, riga) | 		if (sfld.get_bool_row_cell(r, S_SELECTED)) | ||||||
| 		{ | 		{ | ||||||
| 			if (!pi.add_status()) | 			// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
 | ||||||
| 				break; | 			long nreg = sfld.get_long_row_cell(r, S_NUMREG); | ||||||
|  | 			const TRectype & mov = cache().get(LF_MOV, nreg); | ||||||
|  | 			TString hfatt, bfatt; | ||||||
|  | 			TPaf_record paf0100f("PAF0100F"); | ||||||
| 
 | 
 | ||||||
| 			if (riga->starts_with("X")) | 			if (chiave_paf_mov(mov, tipodocsdi, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) | ||||||
| 			{ | 			{ | ||||||
| 				const int           anno = riga->get_int(sfield(F_DOCS).cid2index(S_ANNO)); | 				TString query; | ||||||
| 				const long          nreg = riga->get_long(sfield(F_DOCS).cid2index(S_NUMREG)); | 				query << | ||||||
| 				const TDoc_key      key(anno, EMPTY_STRING, nreg); | 					"UPDATE PAF0100F SET P1_GESTIONE = 'E', P1_KEYPRGINVIO = 'DELETED' WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				// Ricontrollo che la fattura sia presente in Campo prima di cambiare stato
 | 					"UPDATE PAF0200F SET P2_GESTIONE = 'E', P2_KEYPRGINVIO = 'DELETED' WHERE P2_KEYHEADERFATT = '" << hfatt << "' AND P2_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				fdoc.zero(); | 					"UPDATE PAF0400F SET P4_GESTIONE = 'E', P4_KEYPRGINVIO = 'DELETED' WHERE P4_KEYHEADERFATT = '" << hfatt << "' AND P4_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				fdoc.put(DOC_PROVV, key.provv()); | 					"UPDATE PAF0700F SET P7_GESTIONE = 'E', P7_KEYPRGINVIO = 'DELETED' WHERE P7_KEYHEADERFATT = '" << hfatt << "' AND P7_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				fdoc.put(DOC_ANNO, key.anno()); | 					"UPDATE PAF0800F SET P8_GESTIONE = 'E', P8_KEYPRGINVIO = 'DELETED' WHERE P8_KEYHEADERFATT = '" << hfatt << "' AND P8_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				fdoc.put(DOC_CODNUM, key.codnum()); | 					"UPDATE PAF1000F SET P0_GESTIONE = 'E', P0_KEYPRGINVIO = 'DELETED' WHERE P0_KEYHEADERFATT = '" << hfatt << "' AND P0_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				fdoc.put(DOC_NDOC, key.ndoc()); | 					"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" << | ||||||
| 				TString hfatt, bfatt; | 					"UPDATE PAF1600F SET PF_GESTIONE = 'E', PF_KEYPRGINVIO = 'DELETED' WHERE PF_KEYHEADERFATT = '" << hfatt << "' AND PF_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				TPaf_record paf0100f("PAF0100F"); | 					"UPDATE PAF1700F SET PG_GESTIONE = 'E', PG_KEYPRGINVIO = 'DELETED' WHERE PG_KEYHEADERFATT = '" << hfatt << "' AND PG_KEYBODYFATT = '" << bfatt << "';\n" << | ||||||
| 				if (fdoc.read() == NOERR && chiave_paf(fdoc.curr(), hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt)) | 					"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)) | ||||||
| 				{ | 				{ | ||||||
| 					static TString query; | 					TString err = "Impossibile salvare la regolarizzazione "; err  << nreg << "\nVerrà saltata."; | ||||||
| 					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_DOCSEL				403 | #define F_REGSEL				403 | ||||||
| #define F_CAUSALI_TIPO	404 | #define F_CAUSALI_TIPO	404 | ||||||
| #define F_TIPO_SDI			405 | #define F_TIPO_SDI			405 | ||||||
| #define F_DOCS					406 | #define F_REGS					406 | ||||||
| #define START_MASK				F_DATAINI | #define START_MASK				F_DATAINI | ||||||
| #define END_MASK				F_DOCS | #define END_MASK				F_REGS | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #define S_COD_CAUS   101 | #define S_COD_CAUS   101 | ||||||
|  | |||||||
| @ -62,11 +62,14 @@ BEGIN | |||||||
|   CHECKTYPE REQUIRED |   CHECKTYPE REQUIRED | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| RADIOBUTTON F_DOCSEL 7 80 | RADIOBUTTON F_REGSEL 7 80 | ||||||
| BEGIN | BEGIN | ||||||
|   PROMPT 1 3 "Documenti da visualizzare" |   PROMPT 1 3 "Registrazioni da visualizzare" | ||||||
|   ITEM "P|Provvisori" |   ITEM "|Da inviare" | ||||||
|   ITEM "D|Definitivi" |   ITEM "X|XML Generato" | ||||||
|  |   ITEM "N|Notificato" | ||||||
|  |   ITEM "E|In errore" | ||||||
|  |   ITEM "D|Diag." | ||||||
|   FLAGS "Z" |   FLAGS "Z" | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| @ -97,7 +100,7 @@ END | |||||||
| ENDPAGE | ENDPAGE | ||||||
| PAGE "Elenco Regolarizzazioni" 0 2 0 0 | PAGE "Elenco Regolarizzazioni" 0 2 0 0 | ||||||
| 
 | 
 | ||||||
| SPREADSHEET F_DOCS | SPREADSHEET F_REGS | ||||||
| BEGIN | BEGIN | ||||||
|   PROMPT 0 2 "" |   PROMPT 0 2 "" | ||||||
|   ITEM "@1" |   ITEM "@1" | ||||||
|  | |||||||
| @ -35,6 +35,7 @@ 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()
 | ||||||
| @ -421,9 +422,8 @@ inline TFP_custom_cache& cached_custom_fp() | |||||||
| 	return *carmelo; | 	return *carmelo; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| class TFP_expression : public TObject | class TFP_expression : public TObject // ma perchè non derivano da expre documento cazzone ? se sono più espressioni prima si separa la token string
 | ||||||
| { | { | ||||||
| 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() = default; |   TFP_expression() {}; | ||||||
| 	virtual ~TFP_expression() = default; |   virtual ~TFP_expression() {}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Gestione PAF
 | // Gestione PAF
 | ||||||
|  | |||||||
| @ -159,6 +159,26 @@ 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); | ||||||
| @ -1838,36 +1858,34 @@ 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; |  | ||||||
| 
 | 
 | ||||||
|     if (len > 0  && pos < 0) | 		int len = rifs.len(); | ||||||
|       pos = len; |  | ||||||
| 
 | 
 | ||||||
|     for(; pos >= 0;) | 		if (len > 0) | ||||||
|     { | 		{ | ||||||
|       TToken_string rif(rifs.left(pos), ' '); | 			rifs.replace(" - ", "|"); | ||||||
| 
 | 
 | ||||||
|       // <DatiDDT> //
 | 			long numlinea = 0; | ||||||
|       reset(paf1600f); | 			TToken_string elab_rifs(rifs); | ||||||
|       temp = rif.get(); |  | ||||||
|       paf1600f.set("PF_NUMDDDT", temp); |  | ||||||
| 	  temp = rif.get(); |  | ||||||
| 
 | 
 | ||||||
| 	  TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3,2)),atoi( temp.right(2))); | 			FOR_EACH_STR_TOKEN(elab_rifs, str) | ||||||
| 	   | 			{ | ||||||
|       paf1600f.set("PF_DATADDT", dataddt); | 				TToken_string rif(str, ' '); | ||||||
|       paf1600f.set("PF_GESTIONE", "D"); | 
 | ||||||
| 	  paf1600f.set("PF_RIFNUMLINEA", numlinea++); | 				// <DatiDDT> //
 | ||||||
|       ok &= insert(paf1600f); | 				reset(paf1600f); | ||||||
|       rifs.ltrim(pos + 3); | 				temp = rif.get(); | ||||||
|       pos = rifs.find(" - "); | 				paf1600f.set("PF_NUMDDDT", temp); | ||||||
|       len = rifs.len(); | 				temp = rif.get(); | ||||||
|       if (len > 0 && pos < 0) | 
 | ||||||
|         pos = len; | 				TDate dataddt(atoi(temp.left(2)), atoi(temp.mid(3, 2)), atoi(temp.right(2))); | ||||||
|       // </DatiDDT>
 | 
 | ||||||
|     } | 				paf1600f.set("PF_DATADDT", dataddt); | ||||||
|  | 				paf1600f.set("PF_GESTIONE", "D"); | ||||||
|  | 				paf1600f.set("PF_RIFNUMLINEA", numlinea++); | ||||||
|  | 				ok &= insert(paf1600f);					 // </DatiDDT>
 | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|   } |   } | ||||||
| 	FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc) | 	FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc) | ||||||
| 	{ | 	{ | ||||||
|  | |||||||
| @ -477,7 +477,8 @@ void TFP_expression::split_condition(const TString& cond, TString& cond_sx, TStr | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Questa funzione potrebbe diventare standard per TRectype
 | // Questa funzione potrebbe diventare standard per TRectype. Ma vai a cagare i variant sono da eliminare
 | ||||||
|  | 
 | ||||||
| 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