#include "../cg/cglib.h" #include "../ca/calib01.h" #include "../ca/movana.h" #include "../ca/rmovana.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); }; 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") && delete_box("Si desidera eliminare i conti non analitici") && delete_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, title()); } } } int ps0713700(int argc, char* argv[]) { TPulisci_app app; app.run(argc, argv, "Eliminazione conti non analitici"); return 0; }