campo-sirio/cg/cg4100.cpp
alex c1f550fd68 Patch level : 2..0 430
Files correlati     : cg4.exe
Ricompilazione Demo : [ ]
Commento            :
Aggiunto il supporto delle lingue a cg4


git-svn-id: svn://10.65.10.50/trunk@10939 c028cbd2-c16b-5b4b-a496-9718f37d4682
2003-03-20 12:25:48 +00:00

181 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;
}