Patch level : 12.0 844
Files correlati : fp0.exe, fp0400a.msk Commento : - Corretto calcolo ritenute fiscali se piu di una - Aggiunta colonna ritenute fiscali nel monitor passive
This commit is contained in:
		
							parent
							
								
									f25fbff4d2
								
							
						
					
					
						commit
						8266f805c9
					
				
							
								
								
									
										104
									
								
								src/f1/f1lib.cpp
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								src/f1/f1lib.cpp
									
									
									
									
									
								
							| @ -5,10 +5,10 @@ | ||||
| #include "cg2102.h" | ||||
| #include "execp.h" | ||||
| #include "cfven.h" | ||||
| #include "../fp/fp0400a.h" | ||||
| #include "reputils.h" | ||||
| #include "../fp/fplib.h" | ||||
| #include "causali.h" | ||||
| #include "clifo.h" | ||||
| #include "../fp/fplib.h" | ||||
| 
 | ||||
| //////////////////////////////////////////////////////////
 | ||||
| // TFppro
 | ||||
| @ -18,9 +18,7 @@ TFppro& fppro_db() | ||||
| { | ||||
| 	static TFppro* fppro = nullptr; | ||||
| 	if (fppro == nullptr) | ||||
| 	{ | ||||
| 		fppro = new TFppro(); | ||||
| 	} | ||||
| 	return *fppro; | ||||
| } | ||||
| 
 | ||||
| @ -37,14 +35,14 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov) | ||||
| 		"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" << | ||||
| 		"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" << | ||||
| 		"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n"; | ||||
| 	fp_db().sq_set_exec(query); | ||||
| 	_db->sq_set_exec(query); | ||||
| 
 | ||||
| 	const keys_s		keys			= { fp_db().sq_get("KEYPRGINVIO"), fp_db().sq_get("KEYHEADERFATT"), fp_db().sq_get("KEYBODYFATT") }; | ||||
| 	const TDate			data			= fp_db().sq_get_date("DATA"); | ||||
| 	const TString		numdoc		= fp_db().sq_get("NUMDOC"); | ||||
| 	const real			imptotdoc(fp_db().sq_get("IMPTOTDOC")); | ||||
| 	const TString4	statopiva	= fp_db().sq_get("STATOPIVA"); | ||||
| 	const TString		piva			= fp_db().sq_get("PIVA"); | ||||
| 	const keys_s		keys			= { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") }; | ||||
| 	const TDate			data			= _db->sq_get_date("DATA"); | ||||
| 	const TString		numdoc		= _db->sq_get("NUMDOC"); | ||||
| 	const real			imptotdoc(_db->sq_get("IMPTOTDOC")); | ||||
| 	const TString4	statopiva	= _db->sq_get("STATOPIVA"); | ||||
| 	const TString		piva			= _db->sq_get("PIVA"); | ||||
| 
 | ||||
| 	// Prendo il fornitore del mov per controllare la p.iva
 | ||||
| 	TLocalisamfile clifo(LF_CLIFO); | ||||
| @ -78,10 +76,10 @@ int TFppro::get_numreg() | ||||
| 	if (!_is_set) | ||||
| 	{ | ||||
| 		if (set_query()) | ||||
| 			return fp_db().sq_get_int("PZ_NUMREGCONT"); | ||||
| 			return _db->sq_get_int("PZ_NUMREGCONT"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	return fp_db().sq_get_int("PZ_NUMREGCONT"); | ||||
| 	return _db->sq_get_int("PZ_NUMREGCONT"); | ||||
| } | ||||
| 
 | ||||
| int TFppro::get_numreg(TToken_string& keys) | ||||
| @ -95,31 +93,33 @@ TDate TFppro::get_datareg() | ||||
| 	if (!_is_set) | ||||
| 	{ | ||||
| 		if (set_query()) | ||||
| 			return fp_db().sq_get_date("PZ_DATAREGCONT"); | ||||
| 			return _db->sq_get_date("PZ_DATAREGCONT"); | ||||
| 		return TDate(); | ||||
| 	} | ||||
| 	return fp_db().sq_get_date("PZ_DATAREGCONT"); | ||||
| 	return _db->sq_get_date("PZ_DATAREGCONT"); | ||||
| } | ||||
| 
 | ||||
| TDate TFppro::get_datareg(TToken_string& keys) | ||||
| { | ||||
| 	if (set_keys(keys)) | ||||
| 	set_keys(keys); | ||||
| 	if (_is_set) | ||||
| 		return get_datareg(); | ||||
| 	return TDate(); | ||||
| } | ||||
| 
 | ||||
| real TFppro::get_ritenute() const | ||||
| { | ||||
| 	real imp = ZERO; | ||||
| 	TString query; | ||||
| 	query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" << | ||||
| 		"WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'"; | ||||
| 	fp_db().sq_set_exec(query); | ||||
| 	if(fp_db().sq_items() >= 1) | ||||
| 		return fp_db().sq_get_real("IMPORTO"); | ||||
| 	return ZERO; | ||||
| 	_db->sq_set_exec(query, false); | ||||
| 	for(bool ok = _db->sq_next(); ok; ok = _db->sq_next()) | ||||
| 		imp += _db->sq_get_real("IMPORTO"); | ||||
| 	return imp; | ||||
| } | ||||
| 
 | ||||
| bool TFppro::set_keys(TToken_string& keys) | ||||
| TFppro& TFppro::set_keys(TToken_string& keys) | ||||
| { | ||||
| 	if(keys.items() == 3) | ||||
| 	{ | ||||
| @ -127,30 +127,32 @@ bool TFppro::set_keys(TToken_string& keys) | ||||
| 		_keys.headerfatt = keys.get(1); | ||||
| 		_keys.bodyfatt = keys.get(2); | ||||
| 		_is_set = false; | ||||
| 		return _keys_setted = true; | ||||
| 		_keys_setted = true; | ||||
| 	} | ||||
| 	return _keys_setted = false; | ||||
| 	_keys_setted = false; | ||||
| 	return *this; | ||||
| } | ||||
| 
 | ||||
| bool TFppro::set_keys(keys_s keys) | ||||
| TFppro& TFppro::set_keys(keys_s keys) | ||||
| { | ||||
| 	if(*keys.prginvio != 0 && *keys.headerfatt != 0 && *keys.bodyfatt != 0) | ||||
| 	{ | ||||
| 		_keys = keys; | ||||
| 		_is_set = false; | ||||
| 		return _keys_setted = true; | ||||
| 		_keys_setted = true; | ||||
| 	} | ||||
| 	_is_set = false; | ||||
| 	return _keys_setted = false; | ||||
| 	_keys_setted = false; | ||||
| 	return *this; | ||||
| } | ||||
| 
 | ||||
| TDate TFppro::get_data_first_doc() | ||||
| TDate TFppro::get_data_first_doc() const | ||||
| { | ||||
| 	TString query; | ||||
| 	query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" << | ||||
| 		"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a"; | ||||
| 	fp_db().sq_set_exec(query); | ||||
| 	return fp_db().sq_get_date("DATA"); | ||||
| 	_db->sq_set_exec(query); | ||||
| 	return _db->sq_get_date("DATA"); | ||||
| } | ||||
| 
 | ||||
| bool TFppro::set_query() | ||||
| @ -158,7 +160,7 @@ bool TFppro::set_query() | ||||
| 	if (_keys_setted) | ||||
| 	{ | ||||
| 		_fppro_query.cut(0) << "SELECT * FROM FPPRO00F " << where_str(); | ||||
| 		return _is_set = fp_db().sq_set_exec(_fppro_query); | ||||
| 		return _is_set = _db->sq_set_exec(_fppro_query); | ||||
| 	} | ||||
| 	return _is_set = false; | ||||
| } | ||||
| @ -170,6 +172,14 @@ const char* TFppro::where_str() const | ||||
| 	return str; | ||||
| } | ||||
| 
 | ||||
| TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false) | ||||
| { | ||||
| 	_db = new SSimple_query(); | ||||
| 	const bool ok = set_connection(*_db); | ||||
| 	// Non utilizzo l'autocommit, viene gestito manualmente
 | ||||
| 	if (ok) _db->sq_set_autocommit(false); | ||||
| } | ||||
| 
 | ||||
| //////////////////////////////////////////////////////////
 | ||||
| // TProtocollo
 | ||||
| //////////////////////////////////////////////////////////
 | ||||
| @ -366,4 +376,38 @@ bool TF1_log::show_log() | ||||
| 		_log = NULL; | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| bool TFppro::set_connection(SSimple_query& s) | ||||
| { | ||||
| 	bool ok = true; | ||||
| #ifdef DBG | ||||
| 	TString ip = fp_settings().get_db_indirizzo(); | ||||
| 	if (ip.upper() != "TESTCAMPO2012") | ||||
| 	{ | ||||
| 		if (s.sq_connect("TESTCAMPO2012@campo_fp", | ||||
| 			"fp", | ||||
| 			"fp", | ||||
| 			TSDB_MSSQL) != NOERR) | ||||
| 		{ | ||||
| 			warning_box("Impossibile connettersi al DB esterno"); | ||||
| 			ok = false; | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| #endif | ||||
| 		if (s.sq_connect( | ||||
| 			fp_settings().get_db_str_con(), | ||||
| 			fp_settings().get_db_user(), | ||||
| 			fp_settings().get_db_password(), | ||||
| 			TSDB_MSSQL) != NOERR) | ||||
| 		{ | ||||
| 			warning_box("Impossibile connettersi al DB esterno"); | ||||
| 			ok = false; | ||||
| 		} | ||||
| #ifdef DBG | ||||
| 	} | ||||
| #endif | ||||
| 	return ok; | ||||
| } | ||||
| @ -2,9 +2,8 @@ | ||||
| #define _F1LIBH_ | ||||
| 
 | ||||
| #include "strings.h" | ||||
| #include "config.h" | ||||
| #include "report.h" | ||||
| #include "reputils.h" | ||||
| #include "tsdb.h" | ||||
| 
 | ||||
| #define FILE_CONFIG		CONFIG_DITTA | ||||
| #define FILE_SECTION	"f1" | ||||
| @ -34,6 +33,7 @@ class TFppro : public TObject | ||||
| 		const char* bodyfatt; | ||||
| 	}; | ||||
| private: | ||||
| 	SSimple_query* _db; | ||||
| 	keys_s	_keys; | ||||
| 	bool		_guess; | ||||
| 	bool		_keys_setted; | ||||
| @ -45,21 +45,24 @@ public: | ||||
| 
 | ||||
| 	bool	check_reg(TToken_string& keys, int numreg); | ||||
| 	// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
 | ||||
| 	bool	guess_the_doc(const TLocalisamfile& mov); | ||||
| 	void	get_keys_fppro(); | ||||
| 	int		get_numreg(); | ||||
| 	int		get_numreg(TToken_string& keys); | ||||
| 	TDate	get_datareg(); | ||||
| 	TDate	get_datareg(TToken_string& keys); | ||||
| 	real	get_ritenute() const; | ||||
| 	bool	set_query(); | ||||
| 	bool	set_keys(TToken_string& keys); | ||||
| 	bool	set_keys(keys_s keys); | ||||
| 	bool		guess_the_doc(const TLocalisamfile& mov); | ||||
| 	// Getters
 | ||||
| 	void		get_keys_fppro(); | ||||
| 	int			get_numreg(); | ||||
| 	int			get_numreg(TToken_string& keys); | ||||
| 	TDate		get_datareg(); | ||||
| 	TDate		get_datareg(TToken_string& keys); | ||||
| 	real		get_ritenute() const; | ||||
| 	TDate		get_data_first_doc() const; | ||||
| 	// Setters
 | ||||
| 	bool		set_query(); | ||||
| 	TFppro&	set_keys(TToken_string& keys); | ||||
| 	TFppro&	set_keys(keys_s keys); | ||||
| 
 | ||||
| 	static TDate get_data_first_doc(); | ||||
| 	static bool set_connection(SSimple_query& s); | ||||
| 
 | ||||
| 	TFppro() : _keys({"\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false) {  } | ||||
| 	TFppro::TFppro(TToken_string& keys) : TFppro() { set_keys(keys); } | ||||
| 	TFppro(); | ||||
| 	TFppro(TToken_string& keys) : TFppro() { set_keys(keys); } | ||||
| }; | ||||
| 
 | ||||
| class TProtocollo : TObject | ||||
|  | ||||
| @ -247,6 +247,8 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee | ||||
| 	const TDate&		dataregcont		= fp_db().sq_get_date("DATAREGCONT"); | ||||
| 	const TString&	filter_elab		= get_fattsel(); | ||||
| 	const bool			is_contab			= dataregcont != TDate("20010101"); | ||||
| 	TToken_string keys("", ';'); | ||||
| 	keys.add(fp_db().sq_get("KEYPROG")); keys.add(fp_db().sq_get("KEYHEAD")); keys.add(fp_db().sq_get("KEYFATT")); | ||||
| 	 | ||||
| 	clifo.zero(); | ||||
| 	clifo.put(CLI_TIPOCF, 'F'); | ||||
| @ -271,6 +273,7 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee | ||||
| 		row.add(fp_db().sq_get_date("DATA_RIC")); | ||||
| 		row.add(fp_db().sq_get_date("DATA_DOC")); | ||||
| 		row.add(fp_db().sq_get("TOT_DOC")); | ||||
| 		row.add(fppro_db().set_keys(keys).get_ritenute()); | ||||
| 
 | ||||
| 		// Decido se mettere o meno il flag
 | ||||
| 		if (forn_code == 0)  | ||||
| @ -301,12 +304,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee | ||||
| 		row.add(paa_codpaese, sf.cid2index(S_STATOPAIV)); | ||||
| 		row.add(paa_piva); | ||||
| 		row.add(paa_codfisc); | ||||
| 
 | ||||
| 		row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X"); | ||||
| 		row.add(denom); | ||||
| 		row.add(TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT"))); | ||||
| 		TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT"); | ||||
| 		row.add(key_prot); | ||||
| 		row.add(keys); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -599,7 +600,7 @@ int TPassive_mask::prepara_contab() const | ||||
| 				real imp = calcola_importo(riva); | ||||
| 				totdoc.cut(0) << imp; | ||||
| 			} | ||||
| 			real rit = TFppro(keys).get_ritenute(); | ||||
| 			real rit = fppro_db().set_keys(keys).get_ritenute(); | ||||
| 			if(rit != ZERO) | ||||
| 			{ | ||||
| 				contab_ini.set("TOTDOC", (abs(real(totdoc)) - rit).string()); | ||||
|  | ||||
| @ -30,18 +30,19 @@ | ||||
| #define S_DATARIC				105 | ||||
| #define S_DATADOC				106 | ||||
| #define S_TOTDOC				107 | ||||
| #define S_FPPRO					108 | ||||
| #define S_NUMREGCONT		109 | ||||
| #define S_DATAREGCONT		110 | ||||
| #define S_FORNITORE			111 | ||||
| #define S_RAGSOC				112 | ||||
| #define S_STATOPAIV			113 | ||||
| #define S_PARIVA				114 | ||||
| #define S_CODFISC				115 | ||||
| #define S_ATTACH				116 | ||||
| #define S_RAGXML				117 | ||||
| #define S_NPROT					118 | ||||
| #define S_PROKEY				119 | ||||
| #define S_TOTRIT				108 | ||||
| #define S_FPPRO					109 | ||||
| #define S_NUMREGCONT		110 | ||||
| #define S_DATAREGCONT		111 | ||||
| #define S_FORNITORE			112 | ||||
| #define S_RAGSOC				113 | ||||
| #define S_STATOPAIV			114 | ||||
| #define S_PARIVA				115 | ||||
| #define S_CODFISC				116 | ||||
| #define S_ATTACH				117 | ||||
| #define S_RAGXML				118 | ||||
| #define S_NPROT					119 | ||||
| #define S_PROKEY				120 | ||||
| 
 | ||||
| 
 | ||||
| #define F_ERR						301 | ||||
|  | ||||
| @ -184,23 +184,24 @@ BEGIN | ||||
|   PROMPT 0 4 "" | ||||
| 	ITEM "" | ||||
|   ITEM "Anno" | ||||
|   ITEM "Tipo Doc.\nSDI@6" | ||||
|   ITEM "Numero\nDocumento@18" | ||||
|   ITEM "Tipo Doc.\nSDI@5" | ||||
|   ITEM "Numero\nDocumento@14" | ||||
| 	ITEM "Data\nRicezione@8" | ||||
|   ITEM "Data\nDoc.@8" | ||||
| 	ITEM "Totale\nDocumento@12" | ||||
| 	ITEM "Fornitore\nassociato@7" | ||||
| 	ITEM "Num. Registrazione\ncontabile@12" | ||||
| 	ITEM "Data Registrazione\ncontabile@12" | ||||
|   ITEM "Fornitore@7" | ||||
|   ITEM "Ragione Sociale@50" | ||||
| 	ITEM "Totale\nDocumento@7" | ||||
| 	ITEM "Totale\nritenute@6" | ||||
| 	ITEM "Fornitore\nassociato@6" | ||||
| 	ITEM "Num. Regis.\ncontabile@8" | ||||
| 	ITEM "Data Regis.\ncontabile@8" | ||||
|   ITEM "Fornitore@5" | ||||
|   ITEM "Ragione Sociale@40" | ||||
| 	ITEM "Stato\nP.IVA@4" | ||||
|   ITEM "Partita IVA@10" | ||||
| 	ITEM "Cod. Fiscale@16" | ||||
|   ITEM "Allegati@7" | ||||
| 	ITEM "Ragione Sociale (XML)@50" | ||||
| 	ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22" | ||||
| 	ITEM "Chiave Prot.@80" | ||||
| 	ITEM "Cod. Fiscale@12" | ||||
|   ITEM "Allegati@6" | ||||
| 	ITEM "Ragione Sociale (XML)@40" | ||||
| 	ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@20" | ||||
| 	ITEM "Chiave Prot.@40" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| @ -311,6 +312,12 @@ BEGIN | ||||
|   FLAGS "D" | ||||
| END | ||||
| 
 | ||||
| NUMBER S_TOTRIT 10 2 | ||||
| BEGIN | ||||
|   PROMPT 1 2 "Totale Ritenute" | ||||
|   FLAGS "D" | ||||
| END | ||||
| 
 | ||||
| BOOLEAN S_FPPRO | ||||
| BEGIN | ||||
| 	PROMPT 15 2 "Salvato in FP-PRO" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user