From 7151add9d778ef48e987eb0ebc1a45c24a006349 Mon Sep 17 00:00:00 2001 From: villa Date: Fri, 17 Mar 1995 11:47:29 +0000 Subject: [PATCH] Cancellaggio partite inutili git-svn-id: svn://10.65.10.50/trunk@1143 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sc/sc1100.cpp | 138 ++++++++++++++++++++++++++++++++++--------------- sc/sc1100a.uml | 17 +++--- sc/sc1200.cpp | 53 ++++++++++--------- sc/sc1200.h | 2 +- sc/sc1200a.uml | 110 +++++++++++++++++++-------------------- 5 files changed, 186 insertions(+), 134 deletions(-) diff --git a/sc/sc1100.cpp b/sc/sc1100.cpp index fbdb6d784..35205d653 100755 --- a/sc/sc1100.cpp +++ b/sc/sc1100.cpp @@ -7,20 +7,37 @@ #include #include #include - +#include #include "sc1100.h" +class _BoolObj : public TObject +{ +public: + + bool _val; + int _count; + + _BoolObj() { _val = FALSE; _count = 0; } + virtual ~_BoolObj() {} +}; + class TDeletepart_app : public TApplication { - static TDate _datalimite; + TDate _datalimite; + protected: + virtual bool create(); virtual bool destroy(); virtual bool menu(MENU_TAG m); static bool partchiuseal(const TRelation *r); + static TDeletepart_app& app() { return (TDeletepart_app&)main_app(); } public: + + TDate& datalimite() { return _datalimite; } + TDeletepart_app() {}; ~TDeletepart_app() {}; }; @@ -39,7 +56,8 @@ bool TDeletepart_app::destroy() bool TDeletepart_app::partchiuseal(const TRelation *r) { - return (r->lfile().get_bool(PART_CHIUSA) && (r->lfile().get_date(PART_DATAREG) <= _datalimite)); + return (/* r->lfile().get_bool(PART_CHIUSA) && */ + (app().datalimite() >= r->lfile().get_date(PART_DATAREG))); } bool TDeletepart_app::menu(MENU_TAG) @@ -48,6 +66,7 @@ bool TDeletepart_app::menu(MENU_TAG) TRelation partite(LF_PARTITE); TCursor cur(&partite); TLocalisamfile scadenze(LF_SCADENZE); + TAssoc_array to_zap; while (m.run() != K_QUIT) { @@ -59,20 +78,41 @@ bool TDeletepart_app::menu(MENU_TAG) TRecnotype total = 0; int lastanno = -1; TString16 lastpart = ""; + TToken_string id(12); for (cur = 0; cur.pos() <= last; ++cur) - { + { + // build key + id = cur.curr().get(PART_ANNO); + id.add(cur.curr().get(PART_NUMPART)); + + if (!to_zap.is_key(id)) + to_zap.add(id, new _BoolObj); + + _BoolObj& bobj = (_BoolObj&)to_zap[id]; + + bobj._count ++; + if (cur.curr().get_bool(PART_CHIUSA)) + bobj._val = TRUE; + if (lastanno != cur.curr().get_int(PART_ANNO) || lastpart != cur.curr().get(PART_NUMPART)); - { + { total++; lastanno = cur.curr().get_int(PART_ANNO); lastpart = cur.curr().get(PART_NUMPART); } - } + } + + if (total == 0) + { + warning_box("Nessuna partita da cancellare"); + return FALSE; + } + TString80 caption("Cancellazione di "); - caption.add_plural(total, "cur.curr()"); + caption.add_plural(total, "partita"); if (!yesno_box(caption) || total < 1) continue; @@ -80,53 +120,65 @@ bool TDeletepart_app::menu(MENU_TAG) cur.freeze(); lastanno = -1; - int err = NOERR; + int err = NOERR; + for (cur = 0; cur.pos() <= last; ++cur) { const int anno = cur.curr().get_int(PART_ANNO); const TString16 partita = cur.curr().get(PART_NUMPART); + + id = cur.curr().get(PART_ANNO); + id.add(cur.curr().get(PART_NUMPART)); + _BoolObj& bobj = (_BoolObj&)to_zap[id]; + err = cur.lock(); - if (err == NOERR && (lastanno != cur.curr().get_int(PART_ANNO) || - lastpart != cur.curr().get(PART_NUMPART))); + if (err == NOERR && bobj._val == TRUE); { for (int rig = 1; err == NOERR; rig++) - { - scadenze.put(PART_ANNO, lastanno); - scadenze.put(PART_NUMPART, lastpart); - scadenze.put(PART_NRIGA, rig); - if (scadenze.read(_isequal, _lock) == NOERR) - err = scadenze.remove(); - if (err != NOERR) - caption.format("riga scadenza %d", rig); + { + scadenze.zero(); + scadenze.put(SCAD_ANNO, anno); + scadenze.put(SCAD_NUMPART, partita); + scadenze.put(SCAD_NRATA, rig); + if ((err = scadenze.read(_isequal, _lock)) == NOERR) + if (scadenze.remove() != NOERR) + { + caption.format("riga scadenza %d", rig); + break; + } } pi.addstatus(1); - lastanno = cur.curr().get_int(PART_ANNO); - lastpart = cur.curr().get(PART_NUMPART); - } - if (err == NOERR) - { - err = cur.file().remove(); - if (err != NOERR) - caption = "riga %d"; - } - else - { - error_box("Errore %d nella cancellazione della %s della partita %d/%s", - err, (const char*)caption, anno, partita); - break; - } - } - for (int rig = 1; lastanno > 0 && err == NOERR; rig++) - { - scadenze.put(SCAD_ANNO, lastanno); - scadenze.put(SCAD_NUMPART, lastpart); - scadenze.put(SCAD_NRATA, rig); - if (scadenze.read(_isequal, _lock) == NOERR) - err = scadenze.remove(); + + err = cur.file().remove(); if (err != NOERR) - caption.format("riga scadenza %d", rig); + caption = "riga partite"; } + } // eliminate partite e scadenze scelte + + // cerca scadenze senza partita + TLocalisamfile& part = cur.file(); + + for (scadenze.first(); !scadenze.eof() && err == NOERR; scadenze.next()) + { + part.zero(); + part.put(PART_ANNO, scadenze.get(SCAD_ANNO)); + part.put(PART_NUMPART, scadenze.get(SCAD_NUMPART)); + + // se non c'e' + if (part.read(_isgteq) != NOERR) + err = scadenze.remove(); + if (err != NOERR) + caption = "riga scadenze"; + } + + if (err != NOERR) + { + error_box("Errore %d nella cancellazione della %s della partita %d/%s", + err, (const char*)caption, lastanno, lastpart); + break; + } + cur.freeze(FALSE); } @@ -137,6 +189,6 @@ bool TDeletepart_app::menu(MENU_TAG) int sc1100(int argc, char** argv) { TDeletepart_app a; - a.run(argc, argv, "Eliminazione partita chiuse"); + a.run(argc, argv, "Eliminazione partite chiuse"); return 0; } diff --git a/sc/sc1100a.uml b/sc/sc1100a.uml index 82225b8b2..8c8653504 100755 --- a/sc/sc1100a.uml +++ b/sc/sc1100a.uml @@ -1,25 +1,21 @@ #include "sc1100.h" -PAGE "Eliminazione Partite Chiuse" -1 -1 42 9 +PAGE "Eliminazione Partite Chiuse" -1 -1 48 10 -TEXT DLG_NULL 40 3 +TEXT DLG_NULL BEGIN - PROMPT 1 1 "Attenzione " + PROMPT 2 1 " ATTENZIONE" + FLAGS "UM" END TEXT DLG_NULL BEGIN - PROMPT 19 1 "ATTENZIONE" + PROMPT 1 3 "La cancellazione della partite puo' richiedere" END TEXT DLG_NULL BEGIN - PROMPT 2 3 "La cancellazione della partite puo' richiedere" -END - -TEXT DLG_NULL -BEGIN - PROMPT 6 4 "tempo. Siate certi di voler proseguire." + PROMPT 1 4 " tempo. Siate certi di voler proseguire." END DATE F_DATE @@ -28,6 +24,7 @@ BEGIN HELP "Data Sino a cui eliminare le partite" CHECKTYPE REQUIRED WARNING "Si deve specificare la data sino a cui eliminare le partite chiuse" + FLAGS "A" END BUTTON DLG_OK 10 2 diff --git a/sc/sc1200.cpp b/sc/sc1200.cpp index 26a3df28c..d1ab8879a 100755 --- a/sc/sc1200.cpp +++ b/sc/sc1200.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include "sc1200.h" @@ -34,37 +36,38 @@ bool TCreatepart_app::destroy() bool TCreatepart_app::menu(MENU_TAG) { TMask m("sc1200a"); - TRelation saldi(LF_SALDI); - TLocalisamfile conti(LF_CONTI); - - saldi.zero(); + TRelation saldi(LF_SALDI); + TLocalisamfile conti(LF_PCON); + saldi.zero(); + while (m.run() != K_QUIT) { const int anno = m.get_int(F_ANNO); - saldi.put(SLD_ANNO, anno); - TCursor cur(&saldi, "", 1, saldi.curr(), saldi.curr()); - const int items = cur.items(); - long npart = 0L; +// saldi.curr().put(SLD_ANNO, anno); + TCursor cur(&saldi, "", 1, &saldi.curr(), &saldi.curr()); + const long items = cur.items(); + long npart = 0L; - if (items > 0) - { - for (cur = 0 ; cur.pos() < items; cur++) - { - if (is_clifo(cur.curr().get_int(SLD_GRUPPO), cur.curr().get_int(SLD_CONTO)) - { - TSaldo s(????); - Timporto saldo(s.saldo??); +// if (items > 0) +// { +// for (cur = 0 ; cur.pos() < items; ++cur) +// { +// if (is_clifo(cur.curr().get_int(SLD_GRUPPO), cur.curr().get_int(SLD_CONTO))) +// { +// TSaldo s(????); +// Timporto saldo(s.saldo??); - if (saldo != ZERO) - { - } - } - } - } - else - message_box("Nessun saldo presente per l'anno %d", anno); - +// if (saldo != ZERO) +// { +// } +// } +// } +// else +// message_box("Nessun saldo presente per l'anno %d", anno); + + } // while run + return FALSE; } diff --git a/sc/sc1200.h b/sc/sc1200.h index bea726d85..989f4423f 100755 --- a/sc/sc1200.h +++ b/sc/sc1200.h @@ -1,2 +1,2 @@ - + #define F_ANNO 101 \ No newline at end of file diff --git a/sc/sc1200a.uml b/sc/sc1200a.uml index ebcb9188e..15152af21 100755 --- a/sc/sc1200a.uml +++ b/sc/sc1200a.uml @@ -1,55 +1,55 @@ -#include "sc1200.h" - -PAGE "Apertura partite da saldi contabili" -1 -1 47 10 - -TEXT DLG_NULL -BEGIN - PROMPT 18 1 "ATTENZIONE" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 3 "La generazione della partite puo' richiedere" -END - -TEXT DLG_NULL -BEGIN - PROMPT 5 4 "tempo. Siate certi di voler proseguire." -END - -NUMBER F_ANNO 4 -BEGIN - PROMPT 3 6 "Anno di esercizio " - USE ESC - INPUT CODTAB F_ANNO - DISPLAY "Anno Esercizio" CODTAB - DISPLAY "Data inizio esercizio" D0 - DISPLAY "Data fine esercizio " D1 - OUTPUT F_ANNO CODTAB - CHECKTYPE REQUIRED - HELP "Anno di esercizio del quale si desidera la generazione delle partite" - WARNING "L' anno di esercizio e' obbligatorio" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 3 "La generazione delle partite puo' richiedere" -END - -TEXT DLG_NULL -BEGIN - PROMPT 5 4 "tempo. Siate certi di voler proseguire." -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "Conferma" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE -ENDMASK +#include "sc1200.h" + +PAGE "Apertura partite da saldi contabili" -1 -1 47 10 + +TEXT DLG_NULL +BEGIN + PROMPT 18 1 "ATTENZIONE" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 3 "La generazione della partite puo' richiedere" +END + +TEXT DLG_NULL +BEGIN + PROMPT 5 4 "tempo. Siate certi di voler proseguire." +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 3 6 "Anno di esercizio " + USE ESC + INPUT CODTAB F_ANNO + DISPLAY "Anno Esercizio" CODTAB + DISPLAY "Data inizio esercizio" D0 + DISPLAY "Data fine esercizio " D1 + OUTPUT F_ANNO CODTAB + CHECKTYPE REQUIRED + HELP "Anno di esercizio del quale si desidera la generazione delle partite" + WARNING "L' anno di esercizio e' obbligatorio" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 3 "La generazione delle partite puo' richiedere" +END + +TEXT DLG_NULL +BEGIN + PROMPT 5 4 "tempo. Siate certi di voler proseguire." +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "Conferma" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE +ENDMASK