campo-sirio/cg/cg1303.cpp
nik 4ca8e85e3b Corretta formattazione
git-svn-id: svn://10.65.10.50/trunk@1405 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-05-29 10:28:33 +00:00

150 lines
3.3 KiB
C++
Executable File

//***********************************
//* Rinumerazione numero protocollo *
//***********************************
#include <mov.h>
#include "cg1300.h"
#include "cg1303.h"
HIDDEN TAgg_nprot& app() { return (TAgg_nprot&) main_app(); }
bool TAgg_nprot::filtra_mov(const TRelation* r)
{
TLocalisamfile& mov = r->lfile();
const int annoiva = mov.get_int(MOV_ANNOIVA);
const TString16 reg = mov.get(MOV_REG);
if (app()._anno == annoiva && app()._reg == reg)
return TRUE;
return FALSE;
}
bool TAgg_nprot::create()
{
TApplication::create();
_tabreg = new TTable("REG");
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TAgg_nprot::destroy()
{
delete _tabreg;
return TApplication::destroy();
}
bool TAgg_nprot::menu(MENU_TAG m)
{
TMask msk("cg1300b");
TConfig conf(CONFIG_DITTA);
int annoiva = conf.get_int("AnLiIv");
msk.set(F_ANNO, annoiva);
while (msk.run() == K_ENTER)
{
_anno = msk.get_int(F_ANNO);
_reg = msk.get(F_REG);
_prot = msk.get_long(F_PROT);
rinumera_prot();
msk.reset(F_REG);
msk.reset(F_PROT);
//return TRUE;
}
return FALSE;
}
int TAgg_nprot::rinumera_prot()
{
TRelation rel (LF_MOV);
TLocalisamfile& mov = rel.lfile();
//TString80 filter;
//filter.format("ANNOIVA=%04d && REG=\"%s\"", _anno, (const char*)_reg);
//TCursor cursor(&rel, filter, 2);
TCursor cursor(&rel, "", 2);
cursor.set_filterfunction(filtra_mov);
cursor = 0L;
const long nitems = cursor.items();
//TProgind p(nitems ? nitems : 1, "Elaborazione in corso..." , TRUE, TRUE, 70);
TProgind* p = NULL;
if (nitems > 0L)
p = new TProgind (nitems, "Elaborazione in corso..." , TRUE, TRUE, 70);
long protiva, uprotiva;
for (; cursor.pos() < cursor.items(); ++cursor)
{
if (p) p->addstatus(1);
protiva = mov.get_long(MOV_PROTIVA);
uprotiva = mov.get_long(MOV_UPROTIVA);
if (protiva != _prot && uprotiva != _prot) continue;
else
{
if (uprotiva != 0l)
_prot = uprotiva;
break;
}
}
if (protiva != _prot && uprotiva != _prot) //sono alla fine del file
{
delete p;
return message_box("Non trovato record con protocollo indicato: rinumerazione non avvenuta");
}
++cursor;
long nprot,uprot,dprot;
dprot = uprot = 0L;
nprot = _prot;
for (; cursor.pos() < cursor.items(); ++cursor)
{
if (p) p->addstatus(1);
protiva = mov.get_long(MOV_PROTIVA);
uprotiva = mov.get_long(MOV_UPROTIVA);
nprot = nprot+1+dprot; //stile RPG
dprot = 0L;
uprot = 0L;
dprot = (uprotiva == 0L) ? 0L : (uprotiva - protiva);
uprot = (uprotiva == 0L) ? 0L : (nprot + dprot);
mov.put(MOV_PROTIVA, nprot);
mov.put(MOV_UPROTIVA, uprot);
mov.rewrite();
}
TTable reg("REG");
TString16 s; s.format("%04d%s", _anno, (const char*)_reg);
reg.zero();
reg.put("CODTAB", s);
if (reg.read() == NOERR)
{
reg.put("I5", nprot + dprot);
reg.rewrite();
}
else
{
delete p;
return error_box("Impossibile leggere il registro %s anno %s",
(const char*)_reg, (const char*)_anno);
}
delete p;
return message_box("Rinumerazione numero protocollo completata");
}