Files correlati : cg3.exe Ricompilazione Demo : [ ] Commento : CM20053 Se dall'anteprima di stampa mi collego alla prima nota e faccio una variazione dando registra, rientrando nel mastrino la procedura non mi chiede se voglio riaggionare la stampa. Devo rilanciarla git-svn-id: svn://10.65.10.50/trunk@11556 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			179 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// Rinumerazione movimenti e saldi
 | 
						|
// fv 12/12/93
 | 
						|
// -------------------------------------------------------------------------
 | 
						|
// *TBI* Partenza dall'ultimo movimento stampato
 | 
						|
// *TBI* Aggiornamento scadenziario
 | 
						|
// *TBI* Aggiornamento cespiti
 | 
						|
// -------------------------------------------------------------------------
 | 
						|
 | 
						|
#include <applicat.h>
 | 
						|
#include <isam.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <sort.h>
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
#define FLD_CG41_YEAR 100
 | 
						|
#define MAX_CNT 300
 | 
						|
 | 
						|
#include <mov.h>
 | 
						|
#include <rmov.h>
 | 
						|
#include <rmoviva.h>
 | 
						|
#include <saldi.h>
 | 
						|
#include <causali.h>
 | 
						|
 | 
						|
#include "cglib02.h"
 | 
						|
 | 
						|
struct therec {
 | 
						|
  char DATAREG[9];
 | 
						|
  char REG[4];
 | 
						|
  char DATADOC[9];
 | 
						|
  char NUMPROT[9];
 | 
						|
  char ANNOES[5];
 | 
						|
  char NUMREG[8];
 | 
						|
};
 | 
						|
 | 
						|
class CG4100_App : public TSkeleton_application
 | 
						|
{
 | 
						|
  int  _year;
 | 
						|
  TMask* _msk;
 | 
						|
  
 | 
						|
public:
 | 
						|
  bool set_parms();
 | 
						|
  virtual void main_loop();
 | 
						|
 | 
						|
  void sort_all();
 | 
						|
  bool sort_sal();
 | 
						|
 | 
						|
  CG4100_App() {}
 | 
						|
  virtual ~CG4100_App() {}
 | 
						|
};
 | 
						|
 | 
						|
bool CG4100_App::set_parms()
 | 
						|
{
 | 
						|
  _msk->run();
 | 
						|
  _year = _msk->get_int(FLD_CG41_YEAR);
 | 
						|
  return _msk->last_key() == K_ENTER;
 | 
						|
}
 | 
						|
 | 
						|
void CG4100_App::main_loop()
 | 
						|
{               
 | 
						|
 | 
						|
  if (fexist("__sal__.sav"))
 | 
						|
    warning_box(TR("Un'operazione di riordino saldi si e' conclusa"
 | 
						|
                   " impropriamente. Si raccomanda di rieseguirla"));
 | 
						|
 
 | 
						|
  _msk = new TMask("cg4100b");
 | 
						|
 | 
						|
  sort_sal();
 | 
						|
 | 
						|
  delete _msk;
 | 
						|
}
 | 
						|
 | 
						|
bool CG4100_App::sort_sal()
 | 
						|
{
 | 
						|
  if (!set_parms())
 | 
						|
    return FALSE;
 | 
						|
 | 
						|
  TSystemisamfile saldi(LF_SALDI);  saldi.open(_excllock);
 | 
						|
  TLocalisamfile rmov(LF_RMOV);
 | 
						|
  TLocalisamfile mov(LF_MOV);
 | 
						|
  TSaldo_agg sal;
 | 
						|
 | 
						|
  FILE* fp = fopen ("__sal__.sav","w");
 | 
						|
  fclose(fp);
 | 
						|
 | 
						|
  int gruppo, conto;
 | 
						|
  const int year = _year;
 | 
						|
  long oldnumreg = 0L, sottoconto;
 | 
						|
  TProgind prnd(rmov.items(),
 | 
						|
                TR("Riordino archivio saldi in corso\nLettura archivio movimenti..."),
 | 
						|
                FALSE,TRUE);
 | 
						|
 | 
						|
  mov.setkey(1);
 | 
						|
  rmov.first(); 
 | 
						|
  sal.reset();
 | 
						|
  sal.set_anno_es(year);
 | 
						|
  sal.clear_saldi(year);
 | 
						|
  long numreg = 0L;
 | 
						|
  tiposal tsal = normale;
 | 
						|
  bool provvis = FALSE;
 | 
						|
  TDate datareg;
 | 
						|
  
 | 
						|
  while (!rmov.eof())
 | 
						|
  {
 | 
						|
    if (_year == rmov.get_int(RMV_ANNOES))
 | 
						|
    {
 | 
						|
      numreg = rmov.get_long(RMV_NUMREG);
 | 
						|
      
 | 
						|
      gruppo = rmov.get_int(RMV_GRUPPO);
 | 
						|
      conto = rmov.get_int(RMV_CONTO);
 | 
						|
      sottoconto = rmov.get_long(RMV_SOTTOCONTO);                     
 | 
						|
      bool scaricato = FALSE;
 | 
						|
      
 | 
						|
      if (numreg != oldnumreg)
 | 
						|
      {
 | 
						|
        if (oldnumreg !=0)
 | 
						|
        {
 | 
						|
          if (sal.items() > 0)
 | 
						|
            sal.registra();
 | 
						|
        }
 | 
						|
        oldnumreg = numreg;
 | 
						|
        mov.zero();
 | 
						|
        mov.put(MOV_NUMREG, numreg);
 | 
						|
        mov.read();
 | 
						|
        CHECK(mov.good(),"Archivi movimenti e righe inconsistenti");
 | 
						|
 | 
						|
        // Tipo saldo normale per default
 | 
						|
        tsal = normale;
 | 
						|
        const TString& codcaus = mov.get(MOV_CODCAUS); 
 | 
						|
        if (codcaus.not_empty())   // cerca causale per determinare il tipo del saldo
 | 
						|
        {
 | 
						|
          const TRectype& causale = cache().get(LF_CAUSALI, codcaus);
 | 
						|
          if (!causale.empty())
 | 
						|
          {
 | 
						|
            const char ac = causale.get_char(CAU_MOVAP);
 | 
						|
            if (ac == 'A') 
 | 
						|
              tsal = apertura;
 | 
						|
            else 
 | 
						|
              if (ac == 'C') 
 | 
						|
                tsal = chiusura;
 | 
						|
          }  
 | 
						|
        }
 | 
						|
 | 
						|
        scaricato = mov.get_bool(MOV_SCARCON);
 | 
						|
        provvis   = mov.get(MOV_PROVVIS).not_empty();
 | 
						|
        datareg   = mov.get_date(MOV_DATAREG);
 | 
						|
 | 
						|
        sal.reset();
 | 
						|
        sal.set_anno_es(_year);
 | 
						|
        sal.set_tipo_saldo(tsal);
 | 
						|
        sal.set_movprovv(provvis);
 | 
						|
        sal.set_data_ulmov(datareg);
 | 
						|
        sal.set_num_ulmov(oldnumreg);
 | 
						|
      }
 | 
						|
      const char sezione = rmov.get(RMV_SEZIONE)[0];
 | 
						|
      real importo(rmov.get(RMV_IMPORTO));
 | 
						|
 | 
						|
      sal.aggiorna(gruppo, conto, sottoconto, importo, sezione, TRUE, scaricato);
 | 
						|
    }
 | 
						|
    rmov.next();
 | 
						|
    prnd.addstatus(1);
 | 
						|
    do_events();
 | 
						|
  }
 | 
						|
 | 
						|
  if (sal.items() > 0)
 | 
						|
    sal.registra();
 | 
						|
 | 
						|
  remove("__sal__.sav");
 | 
						|
  saldi.close();
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
int cg4100(int argc, char* argv[])
 | 
						|
{
 | 
						|
  CG4100_App main_app;
 | 
						|
  main_app.run(argc, argv, TR("Ricalcolo Saldi"));
 | 
						|
  return TRUE;
 | 
						|
}
 |