From baaacb9aa11a41e8c1d273179cda021bd438be81 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 8 Jul 2010 09:05:26 +0000 Subject: [PATCH] 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 --- ca/ca2.cpp | 1 + ca/ca2.h | 1 + ca/ca2400.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ ca/cacmmenu.men | 2 ++ ca/camenu.men | 1 + 5 files changed, 97 insertions(+) create mode 100755 ca/ca2400.cpp diff --git a/ca/ca2.cpp b/ca/ca2.cpp index 22c0b4263..493291723 100755 --- a/ca/ca2.cpp +++ b/ca/ca2.cpp @@ -9,6 +9,7 @@ int main(int argc, char** argv) { case 1: ca2200(argc, argv); break; // ripartizione movimenti analitica case 2: ca2300(argc, argv); break; // ricalcolo saldi + case 3: ca2400(argc, argv); break; // eliminazione conti non analitci default: ca2100(argc, argv); break; // gestione movimenti } return 0; diff --git a/ca/ca2.h b/ca/ca2.h index 6e8488cf0..cfd24a5df 100755 --- a/ca/ca2.h +++ b/ca/ca2.h @@ -4,5 +4,6 @@ int ca2100(int argc, char* argv[]); int ca2200(int argc, char* argv[]); int ca2300(int argc, char* argv[]); +int ca2400(int argc, char* argv[]); #endif // __CA2_H diff --git a/ca/ca2400.cpp b/ca/ca2400.cpp new file mode 100755 index 000000000..92c297115 --- /dev/null +++ b/ca/ca2400.cpp @@ -0,0 +1,92 @@ +#include +#include +#include + +#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; +} diff --git a/ca/cacmmenu.men b/ca/cacmmenu.men index 99b40b3b3..decd15a85 100755 --- a/ca/cacmmenu.men +++ b/ca/cacmmenu.men @@ -39,3 +39,5 @@ Module = 15 Flags = "" Item_01 = "Trasferimento dati da Contabilità Generale", "cacnv -0", "F" Item_02 = "Ricalcolo saldi", "ca2 -2", "F" +Item_03 = "Eliminazione conti non analitici dai movimenti", "ca2 -3", "F" + diff --git a/ca/camenu.men b/ca/camenu.men index 8e552a7e9..532e022a4 100755 --- a/ca/camenu.men +++ b/ca/camenu.men @@ -82,3 +82,4 @@ Module = 22 Flags = "" Item_01 = "Trasferimento dati da Contabilità Generale", "cacnv -0", "F" Item_02 = "Ricalcolo saldi", "ca2 -2", "F" +Item_03 = "Eliminazione conti non analitici dai movimenti", "ca2 -3", "F"