Patch level : 12.0 1096
Files correlati : li0.exe Commento : Corretta la ricostruzione plafond.
This commit is contained in:
		
							parent
							
								
									a97a79aac6
								
							
						
					
					
						commit
						0f5687a928
					
				@ -188,7 +188,7 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
			
		||||
			sto.set(F_FROM_CLI, get_long(F_DACODCF));
 | 
			
		||||
			sto.set(F_TO_CLI, get_long(F_ACODCF));
 | 
			
		||||
			if (sto.run() == K_ENTER)
 | 
			
		||||
				genera_li_storico(sto.get_int(F_ANNO_STO), sto.get_long(F_FROM_CLI), sto.get_long(F_TO_CLI));
 | 
			
		||||
				genera_li_storico(sto.get_bool(F_UPDATE_DOC), sto.get_int(F_ANNO_STO), sto.get_long(F_FROM_CLI), sto.get_long(F_TO_CLI));
 | 
			
		||||
			return false;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,7 @@ void TRebuild_letint::main_loop()
 | 
			
		||||
  mask.set(F_ANNO_STO, today.year());
 | 
			
		||||
 | 
			
		||||
  while (mask.run() == K_ENTER)
 | 
			
		||||
    genera_li_storico(mask.get_int(F_ANNO_STO), mask.get_long(F_FROM_CLI), mask.get_long(F_TO_CLI));
 | 
			
		||||
    genera_li_storico(mask.get_bool(F_UPDATE_DOC), mask.get_int(F_ANNO_STO), mask.get_long(F_FROM_CLI), mask.get_long(F_TO_CLI));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int li0700(int argc, char* argv[])
 | 
			
		||||
 | 
			
		||||
@ -4,3 +4,4 @@
 | 
			
		||||
#define F_ANNO_STO      101
 | 
			
		||||
#define F_FROM_CLI      102
 | 
			
		||||
#define F_TO_CLI        103
 | 
			
		||||
#define  F_UPDATE_DOC   104
 | 
			
		||||
@ -50,5 +50,10 @@ BEGIN
 | 
			
		||||
  CHECKTYPE SEARCH
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_UPDATE_DOC
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 2 7 "Aggiorna le fatture correlate"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
ENDMASK
 | 
			
		||||
 | 
			
		||||
@ -140,7 +140,7 @@ void TLi_manager::set_anno(const int anno)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void genera_li_storico(const int anno, const long from_cli, const long to_cli, const char tipocf)
 | 
			
		||||
void genera_li_storico(bool update_doc, const int anno, const long from_cli, const long to_cli, const char tipocf)
 | 
			
		||||
{
 | 
			
		||||
	// Apro la tabella dei plafonds con chiave 2 (CODCLI+ANNO+NUMPROT) e per ogni cliente calcolo i plafond dal 2017
 | 
			
		||||
	const TDate dal(1, 1, anno);
 | 
			
		||||
@ -211,7 +211,7 @@ void genera_li_storico(const int anno, const long from_cli, const long to_cli, c
 | 
			
		||||
				const int anno = INIZIO_LETINT + y;
 | 
			
		||||
				TLi_manager li('C', atol(codcli),  anno);
 | 
			
		||||
 | 
			
		||||
				li.rebuild_plafond(true, anno);
 | 
			
		||||
				li.rebuild_plafond(update_doc, anno);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@ -242,16 +242,17 @@ int TLi_manager::flush()
 | 
			
		||||
		TLocalisamfile letint(LF_LETINT);
 | 
			
		||||
		const int rows = _plafonds.items();
 | 
			
		||||
 | 
			
		||||
		for (int r = 0; r < rows; r++)
 | 
			
		||||
		for (int r = 0; err == NOERR && r < rows; r++)
 | 
			
		||||
		{
 | 
			
		||||
			TRectype & row = (TRectype &)_plafonds[r];
 | 
			
		||||
 | 
			
		||||
			int err = row.rewrite(letint);
 | 
			
		||||
			err = row.rewrite(letint);
 | 
			
		||||
		}
 | 
			
		||||
		_dirty = false;
 | 
			
		||||
		_dirty = err != NOERR; // almeno se c'è un errore non lo segna come scritto
 | 
			
		||||
	}
 | 
			
		||||
	return err;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TRectype & TLi_manager::get_lint(const int numprot)
 | 
			
		||||
{
 | 
			
		||||
	const int rows = _plafonds.items();
 | 
			
		||||
@ -485,6 +486,7 @@ void TLi_manager::rebuild_plafond(bool update_docs, const int anno)
 | 
			
		||||
	TDate al; al.set_end_year(anno);
 | 
			
		||||
 | 
			
		||||
	set_anno(anno);
 | 
			
		||||
	clear_letint();
 | 
			
		||||
	din.read('D', 'C', _codcli, anno, tipi(), stati(), dal, al);
 | 
			
		||||
 | 
			
		||||
	const int items = din.items();
 | 
			
		||||
@ -492,23 +494,21 @@ void TLi_manager::rebuild_plafond(bool update_docs, const int anno)
 | 
			
		||||
	if (_valid_plafond)
 | 
			
		||||
	{
 | 
			
		||||
		TProgress_monitor status(items, "Aggiornamento plafond : Ricostuzione");
 | 
			
		||||
		bool ok = true;
 | 
			
		||||
 | 
			
		||||
		clear_letint();
 | 
			
		||||
		for (int i = 0; ok && i < items; i++)
 | 
			
		||||
		for (int i = 0; status.add_status() && i < items; i++)
 | 
			
		||||
		{
 | 
			
		||||
			if (ok = status.add_status())
 | 
			
		||||
			{
 | 
			
		||||
				TToken_string plafs("", ',');
 | 
			
		||||
			TToken_string plafs("", ',');
 | 
			
		||||
 | 
			
		||||
			if (update_docs)
 | 
			
		||||
			{
 | 
			
		||||
				din[i].zero(DOC_PLAFOND);
 | 
			
		||||
				if (update_docs)
 | 
			
		||||
					din[i].rewrite();
 | 
			
		||||
				else
 | 
			
		||||
					utilizza_plafond(din[i], plafs, din[i].importo_plafond());
 | 
			
		||||
				din[i].rewrite();
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
				utilizza_plafond(din[i], plafs, din[i].importo_plafond());
 | 
			
		||||
		}
 | 
			
		||||
		flush();
 | 
			
		||||
		if (!update_docs)
 | 
			
		||||
			flush();
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
@ -527,7 +527,7 @@ void TLi_manager::rebuild_plafond(bool update_docs, const int anno)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TLi_manager::read(const char t, const long c, TDate inidic, TDate findic)
 | 
			
		||||
void TLi_manager::read(const char t, const long c, int anno)
 | 
			
		||||
{
 | 
			
		||||
	TRectype reclint(LF_LETINT);
 | 
			
		||||
 | 
			
		||||
@ -535,6 +535,8 @@ void TLi_manager::read(const char t, const long c, TDate inidic, TDate findic)
 | 
			
		||||
	_plafond = ZERO;
 | 
			
		||||
	_dirty = false;
 | 
			
		||||
	_days.destroy(); 
 | 
			
		||||
	if (anno != 0)
 | 
			
		||||
		_anno = anno;
 | 
			
		||||
	TDate inizio_anno; inizio_anno.set_start_year(_anno);
 | 
			
		||||
	TDate fine_anno;  fine_anno.set_end_year(_anno);
 | 
			
		||||
	const int last_day = fine_anno - inizio_anno;
 | 
			
		||||
@ -556,8 +558,8 @@ void TLi_manager::read(const char t, const long c, TDate inidic, TDate findic)
 | 
			
		||||
	for (int r = 0; r < rows; r++)
 | 
			
		||||
	{
 | 
			
		||||
		const TRectype & row = (const TRectype &)_plafonds[r]; 
 | 
			
		||||
		const real & importo = row.get_real(LETINT_IMPORTO);
 | 
			
		||||
		const real & utilizzato = row.get_real(LETINT_UTILIZZATO);
 | 
			
		||||
		const real importo = row.get_real(LETINT_IMPORTO);
 | 
			
		||||
		const real utilizzato = row.get_real(LETINT_UTILIZZATO);
 | 
			
		||||
 | 
			
		||||
		_plafond += importo;
 | 
			
		||||
		_utilizzato += utilizzato;
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ void lint_reset_msg();
 | 
			
		||||
// restituisce i messaggi
 | 
			
		||||
const TToken_string & lint_get_msg();
 | 
			
		||||
// Ricostruisce il plafond dall'anno
 | 
			
		||||
void genera_li_storico(const int anno, const long from_cli = 0L, const long to_cli = 0L, const char tipocf = 'C');
 | 
			
		||||
void genera_li_storico(bool update_doc, const int anno, const long from_cli = 0L, const long to_cli = 0L, const char tipocf = 'C');
 | 
			
		||||
// Ritorna la lista dei tipi
 | 
			
		||||
TToken_string & tipi();
 | 
			
		||||
// Ritorna la lista degli stati
 | 
			
		||||
@ -110,7 +110,7 @@ public:
 | 
			
		||||
	bool write_rewrite(TDocumento& d, bool rewrite = false);
 | 
			
		||||
	bool remove(TDocumento& d);
 | 
			
		||||
 | 
			
		||||
	void read(const char t = ' ', const long c = 0L, TDate iniDic = TDate(NULLDATE), TDate finDic = TDate(NULLDATE));
 | 
			
		||||
	void read(const char t = ' ', const long c = 0L, int anno = 0);
 | 
			
		||||
 | 
			
		||||
// Costructors/Destructors
 | 
			
		||||
	TLi_manager(const long c, const int anno = 0) : TLi_manager('C', c, anno)	{}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user