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:
parent
5c694c8d6c
commit
d4460260d7
@ -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;
|
||||
|
1
ca/ca2.h
1
ca/ca2.h
@ -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
137
ca/ca2300.cpp
Executable 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
1
ca/ca2300a.h
Executable file
@ -0,0 +1 @@
|
||||
#define F_ANNO 101
|
49
ca/ca2300a.uml
Executable file
49
ca/ca2300a.uml
Executable 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
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user