Patch level : 2.2 84

Files correlati     : cacnv.exe ca2.exe
Ricompilazione Demo : [ ]
Commento            :

Modlo contabilità analitica aggiunta ricostruzione saldi . Aggiungere a menu


git-svn-id: svn://10.65.10.50/trunk@13003 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2005-04-23 22:14:29 +00:00
parent 5c694c8d6c
commit d4460260d7
8 changed files with 207 additions and 10 deletions

View File

@ -7,8 +7,9 @@ int main(int argc, char** argv)
const int r = (argc > 1) ? argv[1][1] - '0' : 0;
switch (r)
{
case 1: ca2200(argc, argv); break; //ribaltamenti movimenti analitica
default: ca2100(argc,argv); break; // gestione movimenti
case 1: ca2200(argc, argv); break; // ribaltamenti movimenti analitica
case 2: ca2300(argc, argv); break; // ricalcolo saldi
default: ca2100(argc,argv); break; // gestione movimenti
}
exit(0);
return 0;

View File

@ -1,2 +1,3 @@
int ca2100(int argc, char* argv[]);
int ca2200(int argc, char* argv[]);
int ca2300(int argc, char* argv[]);

137
ca/ca2300.cpp Executable file
View File

@ -0,0 +1,137 @@
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include "calib01.h"
#include "ca2.h"
#include "ca2300a.h"
#include "movana.h"
#include "rmovana.h"
#include "saldana.h"
//--------------------------------------------------------------------
// MASCHERA
//--------------------------------------------------------------------
class TRic_saldi_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly) { return true; }
public:
TRic_saldi_msk();
virtual ~TRic_saldi_msk(){};
};
TRic_saldi_msk::TRic_saldi_msk() :TAutomask ("ca2300a") { }
///////////////////////////////////////////////////////////
// TAnal_mov_ric
///////////////////////////////////////////////////////////
class TAnal_mov_ric : public TAnal_mov
{
public:
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop);
virtual int read(TBaseisamfile& f, word op, word lockop);
public:
TAnal_mov_ric(long numreg = 0) : TAnal_mov(numreg) {}
};
int TAnal_mov_ric::readat(TBaseisamfile& f, TRecnotype nrec, word lockop)
{
const int err = TMultiple_rectype::readat(f, nrec, lockop);
kill_saldi();
update_saldi(false);
return err;
}
int TAnal_mov_ric::read(TBaseisamfile& f, word op, word lockop)
{
const int err = TMultiple_rectype::read(f, op, lockop);
kill_saldi();
update_saldi(false);
return err;
}
//--------------------------------------------------------------------
// APPLICAZIONE
//--------------------------------------------------------------------
class TRic_saldi_app : public TSkeleton_application
{
TRic_saldi_msk * _mask;
virtual const char * extra_modules() const {return "cm";} //deve funzionare anche per le commesse
protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
static bool elabora_movimento(const TRelation& rel, void* pJolly) { return true; }
static bool remove_saldo(const TRelation& rel, void* pJolly);
public:
TRic_saldi_app() {}
virtual ~TRic_saldi_app() {}
};
bool TRic_saldi_app::create()
{
_mask = new TRic_saldi_msk;
return TSkeleton_application::create();
}
bool TRic_saldi_app::destroy()
{
delete _mask;
return TSkeleton_application::destroy();
}
bool TRic_saldi_app::remove_saldo(const TRelation& rel, void* pJolly)
{
((TRelation &)rel).remove();
return true;
}
void TRic_saldi_app::main_loop()
{
while (_mask->run() == K_ENTER)
{
const int anno = _mask->get_int(F_ANNO);
TRelation rel_saldi(LF_SALDANA);
TRectype rec_saldi(rel_saldi.curr());
rec_saldi.put(SALDANA_ANNO, anno);
TCursor cur_saldi(&rel_saldi, "", 1, &rec_saldi, &rec_saldi);
const long items_saldi = cur_saldi.items();
if (items_saldi > 0)
cur_saldi.scan(remove_saldo, this, "Azzeramento saldi...");
TRelation rel_movana(LF_MOVANA);
TString filter; filter.format("ANNOES==%04d", anno) ;
TCursor cur_movana(&rel_movana, filter, 1);
const long items = cur_movana.items();
//usa la scan dei TCursor,quindi niente progind e for,x' gia' nel metodo
if (items > 0)
{
rel_movana.lfile().set_curr(new TAnal_mov_ric); //il record principale della rel e' un TMov_anal!!
cur_movana.scan(elabora_movimento, this, "Ricostruzione saldi...");
}
}
}
int ca2300(int argc, char* argv[])
{
TRic_saldi_app app;
app.run(argc, argv, "Ricostruzione saldi di analitica");
return 0;
}

1
ca/ca2300a.h Executable file
View File

@ -0,0 +1 @@
#define F_ANNO 101

49
ca/ca2300a.uml Executable file
View File

@ -0,0 +1,49 @@
#include "ca2300a.h"
PAGE "Ricalcolo Saldi Analitica" -1 -1 47 10
TEXT DLG_NULL
BEGIN
PROMPT 16 1 "ATTENZIONE"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 3 "Il ricalcolo dei saldi puo' richiedere"
END
TEXT DLG_NULL
BEGIN
PROMPT 3 4 "tempo. Siate certi di voler proseguire."
END
NUMBER F_ANNO 4
BEGIN
PROMPT 3 6 "Codice esercizio "
USE ESC
INPUT CODTAB F_ANNO
DISPLAY "Codice Esercizio" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio " D1
OUTPUT F_ANNO CODTAB
CHECKTYPE REQUIRED
FLAGS "Z"
HELP "Codice esercizio per il quale si desidera il ricalcolo dei saldi"
WARNING "Il codice esercizio e' obbligatorio"
ADD RUN cg0 -5 esc
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -364,7 +364,8 @@ void TConversione_cm2ca::check_phase(const TRectype& analriga)
void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAssoc_array& cg_lines_to_anal)
{
TAnal_mov analmov; //testata movimento analitico
TLocalisamfile f(LF_MOVANA);
TAnal_mov analmov; //testata movimento analitico
//riempie le righe di testata del movimento prima nota mov
TMovimentoPN mov;
TRectype& mov_head = mov.curr();
@ -511,7 +512,7 @@ void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAss
//Se e' riuscita la scrittura dei movimenti di analitica (MOVANA,RMOVANA)ed e' una conversione..
//..DEFINITIVA,riordina le righe e le testate dei movimenti originari (MOV,RMOV,RMOVIVA)..
//..riscrivendole
if (analmov.write() == NOERR && definitiva)
if (analmov.write(f) == NOERR && definitiva)
{
//RIGHE MOVIMENTI CONTABILI
TArray cg_records;

View File

@ -1160,6 +1160,7 @@ bool TAnal_mov::save_saldi()
int err = saldi.read(_isequal, _testandlock);
if (err != NOERR)
{
saldi.zero();
saldi.put(SALDANA_ANNO, key.get(1));
saldi.put(SALDANA_COSTO, key.get());
saldi.put(SALDANA_COMMESSA, key.get());
@ -1174,9 +1175,9 @@ bool TAnal_mov::save_saldi()
const char* fld_val = NULL;
switch (tipo)
{
case 'P': fld_sez = SALDANA_SEZIONEP; fld_val = SALDANA_SALDOP; break;
case 'V': fld_sez = SALDANA_SEZIONEV; fld_val = SALDANA_SALDOV; break;
default : fld_sez = SALDANA_SEZIONE; fld_val = SALDANA_SALDO; break;
case 'P': fld_sez = SALDANA_SEZIONEP; fld_val = SALDANA_SALDOP; break;
case 'V': fld_sez = SALDANA_SEZIONEV; fld_val = SALDANA_SALDOV; break;
default : fld_sez = SALDANA_SEZIONE; fld_val = SALDANA_SALDO; break;
}
TImporto saldo(saldi.get_char(fld_sez), saldi.get_real(fld_val));
saldo += imp;
@ -1197,14 +1198,16 @@ bool TAnal_mov::save_saldi()
int TAnal_mov::readat(TBaseisamfile& f, TRecnotype nrec, word lockop)
{
const int err = TMultiple_rectype::readat(f, nrec, lockop);
load_saldi(true);
load_saldi(true);
return err;
}
int TAnal_mov::read(TBaseisamfile& f, word op, word lockop)
{
const int err = TMultiple_rectype::read(f, op, lockop);
load_saldi(true);
load_saldi(true);
return err;
}
@ -1235,7 +1238,10 @@ int TAnal_mov::remove(TBaseisamfile& f) const
int TAnal_mov::read(long numreg, word lock)
{
put(MOVANA_NUMREG, numreg);
return TMultiple_rectype::read(_isequal, lock);
const int err = TMultiple_rectype::read(_isequal, lock);
load_saldi(true);
return err;
}
TAnal_mov::TAnal_mov(long numreg) : TMultiple_rectype(LF_MOVANA)

View File

@ -121,6 +121,7 @@ class TAnal_mov : public TMultiple_rectype
protected:
TImporto& saldo(const TRectype& rec);
void load_saldi(bool reset);
void kill_saldi() { _saldi.destroy(); }
void update_saldi(bool kill);
bool save_saldi();