campo-sirio/ca/ca2400.cpp
alex baaacb9aa1 Patch level : 10.0 patch 774
Files correlati     :  ca2.exe
Ricompilazione Demo : [ ]
Commento            :

Programma di servizio per l'elimiazione dei conti non analitici dai movimenti contabili. Serve dopo una conversione per eliminare dai movimenti i conti che non sono stati marcati come analitici o dopo aver cambiato la configurazione dei conti


git-svn-id: svn://10.65.10.50/trunk@20658 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-07-08 09:05:26 +00:00

93 lines
2.3 KiB
C++
Executable File

#include <automask.h>
#include <progind.h>
#include <recset.h>
#include "calib01.h"
#include "ca2.h"
#include "ca2300a.h"
#include "../cg/cglib01.h"
#include "movana.h"
#include "rmovana.h"
#include "saldana.h"
//--------------------------------------------------------------------
// APPLICAZIONE
//--------------------------------------------------------------------
class TPulisci_app : public TSkeleton_application
{
protected:
virtual const char * extra_modules() const {return "cm";} //deve funzionare anche per le commesse
virtual void main_loop();
static bool elabora_movimento(const TRelation& rel, void* pJolly);
public:
TPulisci_app() {}
virtual ~TPulisci_app() {}
};
bool TPulisci_app::elabora_movimento(const TRelation& rel, void* pJolly)
{
TAnal_mov & mov = (TAnal_mov &) rel.curr();
bool updated = false;
TImporto totdoc(mov.get_char(MOVANA_SEZIONE), mov.get_real(MOVANA_TOTDOC));
for (int i = mov.rows(); i >= 1; i--)
{
const TRectype & row = mov.body()[i];
const TString code = row.get(RMOVANA_CODCONTO);
const int gr = atoi(code.left(3));
const int co = atoi(code.mid(3, 3));
const long sc = atol(code.right(6));
const TBill zio(gr, co, sc);
if (!zio.is_analitico())
{
TImporto importo(row.get_char(RMOVANA_SEZIONE), row.get_real(RMOVANA_IMPORTO));
updated = true;
totdoc -= importo;
mov.body().destroy_row(i, true);
}
}
if (updated)
{
totdoc.normalize();
mov.put(MOVANA_SEZIONE, totdoc.sezione());
mov.put(MOVANA_TOTDOC, totdoc.valore());
if (mov.rows() > 0)
mov.rewrite(rel.lfile());
else
mov.remove(rel.lfile());
}
return true;
}
void TPulisci_app::main_loop()
{
if (ca_config().get_bool("UsePdcc") &&
yesno_box("Si desidera eliminare i conti non analitici") &&
yesno_box("Si desidera veramente eliminare i conti non analitici"))
{
TRelation rel_movana(LF_MOVANA);
TCursor cur_movana(&rel_movana, "", 1);
const long items = cur_movana.items();
if (items > 0)
{
rel_movana.lfile().set_curr(new TAnal_mov); //il record principale della rel e' un TMov_anal!!
cur_movana.scan(elabora_movimento, this, "Eliminazione conti non analitici...");
}
}
}
int ca2400(int argc, char* argv[])
{
TPulisci_app app;
app.run(argc, argv, "Eliminazione conti non analitici...");
return 0;
}