From fc2e12200200fe2525a292a9cc89474124555421 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 24 Nov 1994 12:08:54 +0000 Subject: [PATCH] Aggiunto programma di ripristino stampa registri git-svn-id: svn://10.65.10.50/trunk@690 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg5400.cpp | 197 +++++++++++++++++++++++++++++++++++++++++++++++++ cg/cg5400.h | 9 +++ cg/cg5400a.uml | 121 ++++++++++++++++++++++++++++++ 3 files changed, 327 insertions(+) create mode 100755 cg/cg5400.cpp create mode 100755 cg/cg5400.h create mode 100755 cg/cg5400a.uml diff --git a/cg/cg5400.cpp b/cg/cg5400.cpp new file mode 100755 index 000000000..4013f26fa --- /dev/null +++ b/cg/cg5400.cpp @@ -0,0 +1,197 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "cg5.h" +#include "cg5400.h" + +class TRipristina_stampa : public TApplication +{ + TMask* _msk; + long _default_firm; + + virtual bool create() ; + virtual bool destroy() ; + bool menu(MENU_TAG); + bool do_restore(long firm, const char * reg, const char * year, int month, + bool giornale); + static bool firm_handler(TMask_field& f, KEY key); + +public: + TRipristina_stampa() : _msk(NULL) {} +}; + +bool TRipristina_stampa::firm_handler(TMask_field& f, KEY key) +{ + if (f.to_check(key)) + { + const long firm = atol(f.get()); + + if (firm < 0) + return f.error_box("Codice ditta impossibile"); + else + if (firm == 0) + return f.error_box("La ditta e' obbligatoria"); + else + if (!prefhndl->exist(firm)) + return f.error_box("Gli archivi della ditta %d non sono stati ancora generati",firm); + else + main_app().set_firm(firm); + } + return TRUE; +} + +bool TRipristina_stampa::do_restore(long firm, const char * regist, + const char * year, int month, + bool giornale) +{ + bool ok = TRUE; + CHECK(firm > 0, "Non posso ripristinare sui dati comuni"); + CHECK(regist != NULL && strlen(regist) < 4, "Registro impossibile"); + CHECK(month > 0 && month < 13, "Mese impossibile"); + set_firm(firm); + + const char * const fieldname = giornale ? MOV_STAMPATO : MOV_REGST; + TRelation rel(LF_MOV); + TLocalisamfile & mov = rel.lfile(); + TTable reg("REG"); + TString16 s; + + s.format("%-4s%s", year, regist); + + reg.zero(); + reg.put("CODTAB", s); + if (reg.read(_isequal, _lock) == NOERR) + { + TDate dlast(reg.get_date("D3")); + int wyear = atoi(year); + + if (giornale) + { + TTable esc("ESC"); + esc.zero(); + esc.put("CODTAB", year); + if (esc.read() != NOERR) + { + set_firm(_default_firm); + return error_box("Esercizio %s assente", year); + } + + TDate wd(esc.get_date("D0")); + + wyear = wd.year(); + if (wd.month() > month) + wyear++; + } + TDate d(1, month, wyear); + + TRectype from(mov.curr()); from.zero(); + TRectype to(from); + TString16 filter; + + from.put(MOV_DATAREG, d); + to.put(MOV_DATAREG, dlast); + if (!giornale) + filter.format("%s==\"%s\"", MOV_REG, regist); + + TCursor cursor(&rel, filter, 2, &from, &to); + long last_num = 0L; + + cursor = 0L; + const long nitems = cursor.items(); + + TProgind p(nitems ? nitems : 1, format("Ripristino stampa del registro %s", (const char *) regist) , TRUE, TRUE, 70); + + if (giornale) + { + last_num = mov.get_long(MOV_NUMGIO); + if (last_num > 0) last_num--; + CHECK(last_num >= 0, "Ultimo numero stampato impossibile"); + } + for (; ok && cursor.pos() < cursor.items(); ++cursor) + { + p.addstatus(1); + mov.read(_isequal, _lock); + mov.zero(fieldname); + ok = (mov.rewrite() == NOERR); + if (!ok) + error_box("Errore nell' aggiornamento del movimento %ld.\n Errore n. %d", + mov.get_long(MOV_NUMREG), mov.status()); + } + d--; + reg.put("D3", d); + if (giornale) + reg.put("I6", last_num); + ok = (reg.rewrite() == NOERR); + if (!ok) + error_box("Errore nell' aggiornamento del registro %s.\n Errore n. %d", + (const char * ) regist, mov.status()); + + } + else + ok = error_box("Non riesco a leggere il registro %s anno %s", (const char *) regist, (const char *) year); + + set_firm(_default_firm); + return ok; +} + +bool TRipristina_stampa::create() +{ + _msk = new TMask("cg5400a") ; + _msk->set_handler(F_FIRM, firm_handler); + _default_firm = get_firm(); + dispatch_e_menu(BAR_ITEM(1)); + return TRUE; +} + +bool TRipristina_stampa::destroy() +{ + if (_msk != NULL) delete _msk; + return TRUE; +} + +bool TRipristina_stampa::menu(MENU_TAG) +{ + while (_msk->run() == K_ENTER) + { + const long firm = _msk->get_long(F_FIRM); + const TString16 reg = _msk->get(F_REG); + const bool giornale = _msk->get_int(F_TIPO) == 5; + const TString16 year = _msk->get(giornale ? F_ESER : F_YEAR); + int month = _msk->get_int(F_MESE); + + if (prefhndl->exist(firm)) + { + TString mess; + + mess.format("Attenzione sara' ripristinata la stampa\n del registro %s %s %s della ditta %ld dal mese di %s. Devo continuare", + (const char *) reg, giornale ? "esercizio" : "anno", + (const char *) year, (const char *) firm, itom(month)); + if (yesno_box((const char *) mess)) + { + mess.rtrim(16); mess << " Devo veramente continuare"; + if (yesno_box((const char *) mess)) + do_restore(firm, reg, year, month, giornale); + } + } + else error_box("Gli archivi della ditta %d non sono stati ancora generati",firm); + _msk->reset(); + } + return FALSE; +} + +int cg5400(int argc, char* argv[]) +{ + TRipristina_stampa a ; + a.run(argc, argv, "Ripristino stampa registri"); + return 0; +} diff --git a/cg/cg5400.h b/cg/cg5400.h new file mode 100755 index 000000000..7941c000e --- /dev/null +++ b/cg/cg5400.h @@ -0,0 +1,9 @@ +#define F_FIRM 101 +#define F_DFIRM 102 +#define F_REG 103 +#define F_DREG 104 +#define F_TIPO 105 +#define F_YEAR 106 +#define F_ESER 107 +#define F_MESE 108 + diff --git a/cg/cg5400a.uml b/cg/cg5400a.uml new file mode 100755 index 000000000..b00222629 --- /dev/null +++ b/cg/cg5400a.uml @@ -0,0 +1,121 @@ +#include "cg5400.h" + +PAGE "Ripristino stampa giornale" -1 -1 78 11 + +NUMBER F_FIRM 5 +BEGIN + PROMPT 4 1 "Ditta " + FLAGS "RF" + USE LF_NDITTE KEY 1 + CHECKTYPE NORMAL + INPUT CODDITTA F_FIRM + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale @50" RAGSOC + OUTPUT F_FIRM CODDITTA + OUTPUT F_DFIRM RAGSOC + HELP "Codice della ditta da cui prelevare i dati" + WARNING "Ditta assente" +END + +STRING F_DFIRM 50 +BEGIN + PROMPT 22 1 "" + USE LF_NDITTE KEY 2 + CHECKTYPE NORMAL + INPUT RAGSOC F_DFIRM + DISPLAY "Ragione sociale @50" RAGSOC + DISPLAY "Codice" CODDITTA + COPY OUTPUT F_FIRM + HELP "Ragione sociale della ditta da cui prelevare i dati" + WARNING "Ditta assente" +END + +STRING F_REG 3 +BEGIN + PROMPT 4 3 "Registro " + FLAGS "U" + USE REG SELECT I0<6 + INPUT CODTAB[1,4] F_YEAR + INPUT CODTAB[5,7] F_REG + DISPLAY "Anno" CODTAB[1,4] + DISPLAY "Codice" CODTAB[5,7] + DISPLAY "Descrizione @50" S0 + DISPLAY "Tipo" I0 + OUTPUT F_YEAR CODTAB[1,4] + OUTPUT F_REG CODTAB[5,7] + OUTPUT F_DREG S0 + OUTPUT F_TIPO I0 + CHECKTYPE REQUIRED + HELP "Codice del registro di cui ripristinare la stampa" + WARNING "Registro assente" +END + +STRING F_DREG 50 +BEGIN + PROMPT 22 3 "" + USE REG KEY 2 SELECT I0<6 + INPUT S0 F_DREG + DISPLAY "Descrizione @50" S0 + DISPLAY "Anno" CODTAB[1,4] + DISPLAY "Codice" CODTAB[5,7] + DISPLAY "Tipo" I0 + COPY OUTPUT F_REG + CHECKTYPE NORMAL + HELP "Denominazione del registro di cui ripristinare la stampa" + WARNING "Registro assente" +END + +LIST F_TIPO +BEGIN + FLAGS "HG" + ITEM "1|Vendite" MESSAGE HIDE,F_ESER|SHOW,F_YEAR + ITEM "2|Vendite" MESSAGE HIDE,F_ESER|SHOW,F_YEAR + ITEM "3|Riepilogativo" MESSAGE HIDE,F_ESER|SHOW,F_YEAR + ITEM "5|Giornale" MESSAGE SHOW,F_ESER|HIDE,F_YEAR +END + +NUMBER F_YEAR 4 +BEGIN + PROMPT 4 5 "Anno " + FLAGS "AR" + CHECKTYPE REQUIRED + HELP "Anno IVA da cui ripristinare la stampa" + WARNING "L' anno deve essere specificato" +END + +STRING F_ESER 4 +BEGIN + PROMPT 4 5 "Esercizio " + USE ESC + INPUT CODTAB F_ESER + DISPLAY "Anno esercizio" CODTAB + DISPLAY "Data inizio esercizio" D0 + DISPLAY "Data fine esercizio" D1 + OUTPUT F_ESER CODTAB + CHECKTYPE REQUIRED + HELP "Esercizio da cui ripristinare la stampa" + WARNING "Esercizio assente" +END + +LIST F_MESE 10 +BEGIN + PROMPT 4 7 "Mese " + FLAGS "M" + HELP "Mese di ripristino" + HELP "Mese da cui ripristinare la stampa" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" + MESSAGE EXIT,K_QUIT +END + +ENDPAGE + +ENDMASK