Aggiunto programma di ripristino stampa registri
git-svn-id: svn://10.65.10.50/trunk@690 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b14c7baab4
commit
fc2e122002
197
cg/cg5400.cpp
Executable file
197
cg/cg5400.cpp
Executable file
@ -0,0 +1,197 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <date.h>
|
||||||
|
#include <isam.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
#include <mask.h>
|
||||||
|
#include <prefix.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include <mov.h>
|
||||||
|
#include <urldefid.h>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
9
cg/cg5400.h
Executable file
9
cg/cg5400.h
Executable file
@ -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
|
||||||
|
|
121
cg/cg5400a.uml
Executable file
121
cg/cg5400a.uml
Executable file
@ -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
|
Loading…
x
Reference in New Issue
Block a user