Patch level : 10.0
Files correlati : pd6342 Ricompilazione Demo : [ ] Commento : Reasa più veloce elaborazione file LF_*ANA git-svn-id: svn://10.65.10.50/branches/R_10_00@21736 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									ad13d4030c
								
							
						
					
					
						commit
						d4f93fc8cb
					
				
							
								
								
									
										123
									
								
								ps/pd6342300.cpp
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								ps/pd6342300.cpp
									
									
									
									
									
								
							@ -4,7 +4,6 @@
 | 
				
			|||||||
#include <defmask.h>
 | 
					#include <defmask.h>
 | 
				
			||||||
#include <progind.h>
 | 
					#include <progind.h>
 | 
				
			||||||
#include <recarray.h>
 | 
					#include <recarray.h>
 | 
				
			||||||
#include <relation.h>
 | 
					 | 
				
			||||||
#include <textset.h>
 | 
					#include <textset.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../cg/cglib01.h"
 | 
					#include "../cg/cglib01.h"
 | 
				
			||||||
@ -129,18 +128,23 @@ class TRib_movanal_app : public TSkeleton_application
 | 
				
			|||||||
  TCache_ripartizioni _cache_rip;
 | 
					  TCache_ripartizioni _cache_rip;
 | 
				
			||||||
  bool _definitivo;
 | 
					  bool _definitivo;
 | 
				
			||||||
	TAssoc_array _calc;
 | 
						TAssoc_array _calc;
 | 
				
			||||||
 | 
					  TArray _excl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  virtual const char * extra_modules() const {return "ca";}
 | 
					  virtual const char* extra_modules() const { return "ca"; }
 | 
				
			||||||
  virtual void main_loop();
 | 
					  virtual void main_loop();
 | 
				
			||||||
 | 
					  virtual bool create();
 | 
				
			||||||
 | 
					  virtual bool destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_rows);
 | 
					  bool elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_rows);
 | 
				
			||||||
  bool ripartizione(const TAnal_ripartizioni_batch& rrip, const TRectype& rec, const TToken_string& path_item, TRecord_array& output_rows, TArray & output_paths);
 | 
					  bool ripartizione(const TAnal_ripartizioni_batch& rrip, const TRectype& rec, const TToken_string& path_item, 
 | 
				
			||||||
  bool pareggio(TAnal_mov& anal_mov, const TAnal_ripartizioni_batch& rrip, const TRectype& rec, const TToken_string& path, TRecord_array& output_rows, TArray & output_paths);
 | 
					                    TRecord_array& output_rows, TArray & output_paths);
 | 
				
			||||||
 | 
					  bool pareggio(TAnal_mov& anal_mov, const TAnal_ripartizioni_batch& rrip, const TRectype& rec, 
 | 
				
			||||||
 | 
					                const TToken_string& path, TRecord_array& output_rows, TArray & output_paths);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  bool elabora_movimento(TAnal_mov& anal_mov, const bool esplodi);
 | 
					  bool elabora_movimento(TAnal_mov& anal_mov, const bool esplodi);
 | 
				
			||||||
	TRib_movanal_app(){}
 | 
					  TSystemisamfile& movana() { return *(TSystemisamfile*)_excl.objptr(LF_MOVANA); }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -177,7 +181,9 @@ bool TRib_movanal_app::pareggio(TAnal_mov& anal_mov, const TAnal_ripartizioni_ba
 | 
				
			|||||||
  return ho_pareggiato;
 | 
					  return ho_pareggiato;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const TRectype& rec, const TToken_string& path_item, TRecord_array& output_rows, TArray & output_paths)
 | 
					bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const TRectype& rec, 
 | 
				
			||||||
 | 
					                                    const TToken_string& path_item, TRecord_array& output_rows, 
 | 
				
			||||||
 | 
					                                    TArray& output_paths)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  bool ho_ripartito = false;
 | 
					  bool ho_ripartito = false;
 | 
				
			||||||
  // Importo totale da distribuire arrotondato ai decimali della valuta di conto
 | 
					  // Importo totale da distribuire arrotondato ai decimali della valuta di conto
 | 
				
			||||||
@ -191,12 +197,12 @@ bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const
 | 
				
			|||||||
	rowkey.add(rec.get(RMOVANA_CODFASE));
 | 
						rowkey.add(rec.get(RMOVANA_CODFASE));
 | 
				
			||||||
	TToken_string browkey = rowkey;
 | 
						TToken_string browkey = rowkey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TAssoc_array * row = (TAssoc_array *)_calc.objptr(rowkey);
 | 
						TAssoc_array* row = (TAssoc_array*)_calc.objptr(rowkey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (row == NULL)
 | 
						if (row == NULL)
 | 
				
			||||||
		_calc.add(rowkey, row = new TAssoc_array);
 | 
							_calc.add(rowkey, row = new TAssoc_array);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	real * value = (real *) row->objptr(browkey);
 | 
						real* value = (real*)row->objptr(browkey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (value == NULL)
 | 
						if (value == NULL)
 | 
				
			||||||
		row->add(rowkey, value = new real);
 | 
							row->add(rowkey, value = new real);
 | 
				
			||||||
@ -204,7 +210,7 @@ bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const
 | 
				
			|||||||
	*value = *value + (sez == 'D' ? importo : -importo);
 | 
						*value = *value + (sez == 'D' ? importo : -importo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	browkey.add("+");
 | 
						browkey.add("+");
 | 
				
			||||||
	row = (TAssoc_array *)_calc.objptr(browkey);
 | 
						row = (TAssoc_array*)_calc.objptr(browkey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (row == NULL)
 | 
						if (row == NULL)
 | 
				
			||||||
		_calc.add(browkey, row = new TAssoc_array);
 | 
							_calc.add(browkey, row = new TAssoc_array);
 | 
				
			||||||
@ -216,62 +222,64 @@ bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	*value = *value + (sez == 'D' ? -importo : importo);
 | 
						*value = *value + (sez == 'D' ? -importo : importo);
 | 
				
			||||||
  // Calcolo tutte le percentuali da ripartire
 | 
					  // Calcolo tutte le percentuali da ripartire
 | 
				
			||||||
  int i;
 | 
					
 | 
				
			||||||
  const int righe_ripartizione = rrip.rows();
 | 
					  const int righe_ripartizione = rrip.rows();
 | 
				
			||||||
  for (i = 1; i <= rrip.rows(); i++)
 | 
					  for (int i = 1; i <= righe_ripartizione; i++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const real importanza_riga = rrip[i].get_real(RRIP_RIPARTO);
 | 
					    const real importanza_riga = rrip[i].get_real(RRIP_RIPARTO);
 | 
				
			||||||
    distrib.add(importanza_riga);
 | 
					    distrib.add(importanza_riga);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (i = 1; i <= righe_ripartizione; i++)
 | 
					  for (int i = 1; i <= righe_ripartizione; i++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const real imp = distrib.get(); // Legge la quota da distribuire
 | 
					    const real imp = distrib.get(); // Legge la quota da distribuire
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  if (imp != ZERO)
 | 
						  if (!imp.is_zero())
 | 
				
			||||||
	  {
 | 
						  {
 | 
				
			||||||
		  TRectype* newrec = new TRectype(rec);
 | 
							  TRectype nuorec(rec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		  //poi copia i valori dei campi cdc,cms,fsc,in quelli di tipo ori (nello stesso record)
 | 
							  //poi copia i valori dei campi cdc,cms,fsc,in quelli di tipo ori (nello stesso record)
 | 
				
			||||||
			if (rec.get(RMOVANA_CODCCORI).blank() && rec.get(RMOVANA_CODCMSORI).blank() &&
 | 
								if (rec.get(RMOVANA_CODCCORI).blank() && rec.get(RMOVANA_CODCMSORI).blank() &&
 | 
				
			||||||
					rec.get(RMOVANA_CODFASEORI).blank()) //  RMOVANA_CODCONTORI è vuoto nel caso di pareggio
 | 
										rec.get(RMOVANA_CODFASEORI).blank()) //  RMOVANA_CODCONTORI è vuoto nel caso di pareggio
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCCOSTO, *newrec, RMOVANA_CODCCORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCCOSTO, nuorec, RMOVANA_CODCCORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCMS,    *newrec, RMOVANA_CODCMSORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCMS,    nuorec, RMOVANA_CODCMSORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODFASE,   *newrec, RMOVANA_CODFASEORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODFASE,   nuorec, RMOVANA_CODFASEORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCONTO,  *newrec, RMOVANA_CODCONTORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCONTO,  nuorec, RMOVANA_CODCONTORI);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCCORI, *newrec, RMOVANA_CODCCORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCCORI, nuorec, RMOVANA_CODCCORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCCORI,    *newrec, RMOVANA_CODCMSORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCCORI, nuorec, RMOVANA_CODCMSORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCCORI,   *newrec, RMOVANA_CODFASEORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCCORI, nuorec, RMOVANA_CODFASEORI);
 | 
				
			||||||
				ca_copia_campo(rec, RMOVANA_CODCCORI,  *newrec, RMOVANA_CODCONTORI);
 | 
									ca_copia_campo(rec, RMOVANA_CODCCORI, nuorec, RMOVANA_CODCONTORI);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		  //e mette nei campi std i valori che trova nelle righe ripartizione
 | 
							  //e mette nei campi std i valori che trova nelle righe ripartizione
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ca_copia_campo(rrip[i], RRIP_CODCOSTO, *newrec, RMOVANA_CODCCOSTO);
 | 
								ca_copia_campo(rrip[i], RRIP_CODCOSTO, nuorec, RMOVANA_CODCCOSTO);
 | 
				
			||||||
		  ca_copia_campo(rrip[i], RRIP_CODCMS,   *newrec, RMOVANA_CODCMS);
 | 
							  ca_copia_campo(rrip[i], RRIP_CODCMS,   nuorec, RMOVANA_CODCMS);
 | 
				
			||||||
		  ca_copia_campo(rrip[i], RRIP_CODFASE,  *newrec, RMOVANA_CODFASE);
 | 
							  ca_copia_campo(rrip[i], RRIP_CODFASE,  nuorec, RMOVANA_CODFASE);
 | 
				
			||||||
		  ca_copia_campo(rrip[i], RRIP_CODCONTO, *newrec, RMOVANA_CODCONTO);
 | 
							  ca_copia_campo(rrip[i], RRIP_CODCONTO, nuorec, RMOVANA_CODCONTO);
 | 
				
			||||||
			TToken_string ripkey("", ',');
 | 
								TToken_string ripkey("", ',');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			ripkey.add(newrec->get(RMOVANA_CODCCOSTO));
 | 
								ripkey.add(nuorec.get(RMOVANA_CODCCOSTO));
 | 
				
			||||||
			ripkey.add(newrec->get(RMOVANA_CODCMS));
 | 
								ripkey.add(nuorec.get(RMOVANA_CODCMS));
 | 
				
			||||||
			ripkey.add(newrec->get(RMOVANA_CODFASE));
 | 
								ripkey.add(nuorec.get(RMOVANA_CODFASE));
 | 
				
			||||||
//			ripkey.add(newrec->get(RMOVANA_CODCONTO));
 | 
					//			ripkey.add(nuorec.get(RMOVANA_CODCONTO));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const int rows = output_rows.rows();
 | 
								const int rows = output_rows.rows();
 | 
				
			||||||
			int r = -1;
 | 
								int r = -1;
 | 
				
			||||||
			for (int j = 1; r < 0 && j <= rows; j++)
 | 
								for (int j = 1; r < 0 && j <= rows; j++)
 | 
				
			||||||
				if (ca_can_pack_rows(*newrec, output_rows[j]))
 | 
					      {
 | 
				
			||||||
 | 
									if (ca_can_pack_rows(nuorec, output_rows[j]))
 | 
				
			||||||
					r = j;				
 | 
										r = j;				
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
			if (r < 0)
 | 
								if (r < 0)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				newrec->put(RMOVANA_NUMRIG, rows + 1);
 | 
									nuorec.put(RMOVANA_NUMRIG, rows + 1);
 | 
				
			||||||
				newrec->put(RMOVANA_IMPORTO, imp);  //e la mette nella nuova riga
 | 
									nuorec.put(RMOVANA_IMPORTO, imp);  //e la mette nella nuova riga
 | 
				
			||||||
				output_rows.add_row(newrec);
 | 
									output_rows.add_row(nuorec);
 | 
				
			||||||
				TToken_string * rowpath = (TToken_string *) output_paths.objptr(r);
 | 
									TToken_string * rowpath = (TToken_string*) output_paths.objptr(r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (rowpath == NULL)
 | 
									if (rowpath == NULL)
 | 
				
			||||||
					output_paths.add(rowpath = new TToken_string, r);
 | 
										output_paths.add(rowpath = new TToken_string, r);
 | 
				
			||||||
@ -282,8 +290,7 @@ bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const
 | 
				
			|||||||
				output_rows[r].add(RMOVANA_IMPORTO, imp);
 | 
									output_rows[r].add(RMOVANA_IMPORTO, imp);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			real * value = (real *) row->objptr(ripkey);
 | 
								real* value = (real*)row->objptr(ripkey);
 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (value == NULL)
 | 
								if (value == NULL)
 | 
				
			||||||
				row->add(ripkey, value = new real);
 | 
									row->add(ripkey, value = new real);
 | 
				
			||||||
			*value = *value + (sez == 'D' ? imp : -imp);
 | 
								*value = *value + (sez == 'D' ? imp : -imp);
 | 
				
			||||||
@ -295,7 +302,6 @@ bool TRib_movanal_app::ripartizione(const TAnal_ripartizioni_batch& rrip, const
 | 
				
			|||||||
  return ho_ripartito;
 | 
					  return ho_ripartito;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TRib_movanal_app::elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_rows)
 | 
					bool TRib_movanal_app::elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_rows)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  bool ho_cambiato_qualchecosa = false;
 | 
					  bool ho_cambiato_qualchecosa = false;
 | 
				
			||||||
@ -305,9 +311,8 @@ bool TRib_movanal_app::elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_r
 | 
				
			|||||||
	TRecord_array output_rows = input_rows; output_rows.destroy_rows();
 | 
						TRecord_array output_rows = input_rows; output_rows.destroy_rows();
 | 
				
			||||||
	TArray input_paths;
 | 
						TArray input_paths;
 | 
				
			||||||
	TArray output_paths;
 | 
						TArray output_paths;
 | 
				
			||||||
	int loop = 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (loop++ < 20)
 | 
						for (int loop = 1; loop <= 20; loop++)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		bool modified = false;
 | 
							bool modified = false;
 | 
				
			||||||
		const int nrows = input_rows.rows();
 | 
							const int nrows = input_rows.rows();
 | 
				
			||||||
@ -379,7 +384,6 @@ bool TRib_movanal_app::elabora_righe(TAnal_mov& anal_mov, TRecord_array& input_r
 | 
				
			|||||||
  return ho_cambiato_qualchecosa;
 | 
					  return ho_cambiato_qualchecosa;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TRib_movanal_app::elabora_movimento(TAnal_mov& anal_mov, const bool esplodi)
 | 
					bool TRib_movanal_app::elabora_movimento(TAnal_mov& anal_mov, const bool esplodi)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TRecord_array& input_rows = anal_mov.body();  //record_array con le righe del mov_anal (INPUT)
 | 
					  TRecord_array& input_rows = anal_mov.body();  //record_array con le righe del mov_anal (INPUT)
 | 
				
			||||||
@ -435,7 +439,7 @@ static bool ripartisci_callback(const TRelation& rel, void* pJolly)
 | 
				
			|||||||
  //se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
 | 
					  //se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
 | 
				
			||||||
  app.elabora_movimento(anal_mov, false);
 | 
					  app.elabora_movimento(anal_mov, false);
 | 
				
			||||||
  if (app.elabora_movimento(anal_mov, true))
 | 
					  if (app.elabora_movimento(anal_mov, true))
 | 
				
			||||||
	  anal_mov.rewrite(rel.lfile());
 | 
					    anal_mov.rewrite(app.movana());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -447,7 +451,7 @@ static bool compatta_callback(const TRelation& rel, void* pJolly)
 | 
				
			|||||||
  TAnal_mov anal_mov(numreg);
 | 
					  TAnal_mov anal_mov(numreg);
 | 
				
			||||||
  //se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
 | 
					  //se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
 | 
				
			||||||
  if (app.elabora_movimento(anal_mov, false))
 | 
					  if (app.elabora_movimento(anal_mov, false))
 | 
				
			||||||
    anal_mov.rewrite(rel.lfile());
 | 
					    anal_mov.rewrite(app.movana());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -460,22 +464,24 @@ void TRib_movanal_app::main_loop()
 | 
				
			|||||||
    //deve scandire il file MOVANA con chiave 2 (per data e numero di registrazione)
 | 
					    //deve scandire il file MOVANA con chiave 2 (per data e numero di registrazione)
 | 
				
			||||||
    TRelation rel_movana(LF_MOVANA);
 | 
					    TRelation rel_movana(LF_MOVANA);
 | 
				
			||||||
    TRectype darec(LF_MOVANA), arec(LF_MOVANA);
 | 
					    TRectype darec(LF_MOVANA), arec(LF_MOVANA);
 | 
				
			||||||
    const TDate & dal = mask.get_date(F_DATAINI);
 | 
					    const TDate dal = mask.get_date(F_DATAINI);
 | 
				
			||||||
    darec.put(MOVANA_DATACOMP, dal);
 | 
					    darec.put(MOVANA_DATACOMP, dal);
 | 
				
			||||||
		const TDate & al = mask.get_date(F_DATAFIN);
 | 
							const TDate al = mask.get_date(F_DATAFIN);
 | 
				
			||||||
    arec.put(MOVANA_DATACOMP, al);
 | 
					    arec.put(MOVANA_DATACOMP, al);
 | 
				
			||||||
		_cache_rip.set_esercizio(mask.get_int(F_ANNO));
 | 
							_cache_rip.set_esercizio(mask.get_int(F_ANNO));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const TString & tipo = mask.get(F_CLASSEMOV);
 | 
							const TString& tipo = mask.get(F_CLASSEMOV);
 | 
				
			||||||
		TString filter;
 | 
							TString filter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (tipo.blank())
 | 
							if (tipo.blank())
 | 
				
			||||||
			filter = "BLOCCATO!=\"X\"";
 | 
								filter = "BLOCCATO!=\"X\"";
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
			if (tipo == "N")
 | 
								if (tipo == "N")
 | 
				
			||||||
				filter = "(BLOCCATO!=\"X\")&&(TIPOMOV==\"\")";
 | 
									filter = "(BLOCCATO!=\"X\")&&(TIPOMOV==\"\")";
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				filter = "(BLOCCATO!=\"X\")&&(TIPOMOV!=\"\")";
 | 
									filter = "(BLOCCATO!=\"X\")&&(TIPOMOV!=\"\")";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    TCursor cur_movana(&rel_movana, filter, 2, &darec, &arec);
 | 
					    TCursor cur_movana(&rel_movana, filter, 2, &darec, &arec);
 | 
				
			||||||
    const long items = cur_movana.items();
 | 
					    const long items = cur_movana.items();
 | 
				
			||||||
    if (items > 0)
 | 
					    if (items > 0)
 | 
				
			||||||
@ -500,13 +506,12 @@ void TRib_movanal_app::main_loop()
 | 
				
			|||||||
          cur_movana.scan(compatta_callback, this, TR("Compattamento movimenti..."));
 | 
					          cur_movana.scan(compatta_callback, this, TR("Compattamento movimenti..."));
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
          cur_movana.scan(ripartisci_callback, this, TR("Ripartizione movimenti..."));
 | 
					          cur_movana.scan(ripartisci_callback, this, TR("Ripartizione movimenti..."));
 | 
				
			||||||
				TFilename fname(mask.get(F_PATH));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TFilename fname(mask.get(F_PATH));
 | 
				
			||||||
				fname.add(mask.get(F_NAME));
 | 
									fname.add(mask.get(F_NAME));
 | 
				
			||||||
				if (fname.full())
 | 
									if (fname.full())
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					TCSV_recset recset(_calc);
 | 
										TCSV_recset recset(_calc);
 | 
				
			||||||
 | 
					 | 
				
			||||||
					recset.save_as(fname, fmt_unknown);
 | 
										recset.save_as(fname, fmt_unknown);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
      } //if(run)...
 | 
					      } //if(run)...
 | 
				
			||||||
@ -516,6 +521,28 @@ void TRib_movanal_app::main_loop()
 | 
				
			|||||||
  } 
 | 
					  } 
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TRib_movanal_app::create()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int lognum[] = { LF_MOVANA, LF_RMOVANA, LF_PCONANA, LF_SALDANA, 0 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for (int i = 0; lognum[i]; i++)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    const int num = lognum[i];
 | 
				
			||||||
 | 
					    TSystemisamfile* sif =  new TSystemisamfile(num);
 | 
				
			||||||
 | 
					    _excl.add(sif, num);
 | 
				
			||||||
 | 
					    if (sif->open(_excllock) != NOERR)
 | 
				
			||||||
 | 
					      return error_box(TR("Il file dei movimenti analitici è gia' in uso"));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return TSkeleton_application::create();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool TRib_movanal_app::destroy()
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    _excl.destroy();
 | 
				
			||||||
 | 
					    return TSkeleton_application::destroy();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pd6342300(int argc, char* argv[])
 | 
					int pd6342300(int argc, char* argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TRib_movanal_app app;
 | 
					  TRib_movanal_app app;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user