campo-sirio/cg/cg1304.cpp
angelo 3c943886d3 Corretto il programma di aggiornamento codici attivita su progressivi
IVA: la tabella PLA (progressivi liq. ann.) non era gestita in modo
corretto.


git-svn-id: svn://10.65.10.50/trunk@3444 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-08-26 08:36:58 +00:00

190 lines
4.5 KiB
C++
Executable File

//*****************************************************
//* Aggiornamento codice attivita' su progressivi IVA *
//*****************************************************
#include <prefix.h>
#include <mov.h>
#include "cg1300.h"
#include "cg1304.h"
#include "cg2103.h"
HIDDEN TAgg_codatt& app() { return (TAgg_codatt&) main_app(); }
bool TAgg_codatt::create()
{
TApplication::create();
_tab = new TLocalisamfile(LF_TAB);
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TAgg_codatt::destroy()
{
delete _tab;
return TApplication::destroy();
}
bool TAgg_codatt::menu(MENU_TAG m)
{
TProgind* pri;
TMask msk("cg1300c");
/*
TConfig conf(CONFIG_DITTA);
int annoiva = conf.get_int("AnLiIv");
msk.set(F_ANNO, annoiva);
*/
while (msk.run() == K_ENTER)
{
pri = new TProgind(2,"Aggiornamento in corso...",FALSE,TRUE,50);
_pass = msk.get_bool(F_PASS);
if (_pass)
{
_anno = msk.get_int(F_ANNO);
_da = msk.get(F_DA); //se c'e' _da c'e' anche _a e viceversa
_a = msk.get(F_A); //_da e' la vecchia attivita'
//_a e' la nuova attivita'
pri->addstatus(1);
aggiorna_att("PIM");
aggiorna_att("PUM");
aggiorna_att("POM");
aggiorna_att("PAM");
aggiorna_att("PPA");
aggiorna_att("%PLA");
aggiorna_att("PLM");
}
else
{
pri->addstatus(1);
cancella_rec();
}
pri->addstatus(1);
msk.reset();
//msk.reset(F_ANNO);
//msk.reset(F_DA);
//msk.reset(F_A);
delete pri;
message_box("Aggiornamento codice attivita' completato");
}
return FALSE;
}
void TAgg_codatt::cancella_rec()
{
TTable plm("PLM");
for (plm.first(); !plm.eof(); plm.next())
plm.remove();
TTable pum("PUM");
for (pum.first(); !pum.eof(); pum.next())
pum.remove();
TTable pom("POM");
for (pom.first(); !pom.eof(); pom.next())
pom.remove();
TTable pam("PAM");
for (pam.first(); !pam.eof(); pam.next())
pam.remove();
TTable ppa("PPA");
for (ppa.first(); !ppa.eof(); ppa.next())
ppa.remove();
//non e' indicata la vecchia attivita' => :
TTable pim("PIM");
for (pim.first(); !pim.eof(); pim.next())
{
const TString80 codtab = pim.get("CODTAB");
int anno = atoi(codtab.mid(0,4));
const TString16 codatt = codtab.mid(4,5);
const TString16 codreg = codtab.mid(10,3);
if (codreg.not_empty())
{
TRegistro reg(codreg,anno);
if (!reg.name().empty()) //se esiste quel registro (ma perche' non dovrebbe?)
{
const TString16 cda = reg.attivita();
if (codatt != cda)
{
TRectype vecchio (pim.curr());
TRectype nuovo (pim.curr());
const TString80 cc = codtab.sub(9);
TString80 cod;
cod << anno << cda << cc;
nuovo.put("CODTAB", cod);
pim.write(nuovo);
pim.read(vecchio);
pim.remove();
}
}
}
}
TTable pla("%PLA");
TRecfield r_ditta(pla.curr(),"CODTAB",0,4);
const long firm = prefix().get_codditta();
for (pla.first(); !pla.eof(); pla.next())
{
if (firm != (long)r_ditta)
continue;
pla.remove();
}
/***
TTable rmb("RMB");
for (rmb.first(); !rmb.eof(); rmb.next())
rmb.remove();
***/
}
void TAgg_codatt::aggiorna_att(const char* nome)
{
const bool is_pla = nome == "%PLA";
const long firm = prefix().get_codditta();
TTable tab(nome);
tab.setkey(1);
tab.zero();
TString16 chiave;
TString16 old_att(_da); old_att.right_just(5,'0');
TString16 new_att(_a); new_att.right_just(5,'0');
if (is_pla) chiave << firm;
chiave << _anno << old_att;
tab.put("CODTAB", chiave);
TRectype curr (tab.curr());
TRecfield r_ditta(tab.curr(),"CODTAB",0,4);
tab.read(_isgteq);
for (; !tab.eof(); tab.next())
{
if (is_pla)
{
if (firm != (long)r_ditta) break;
}
else
if (tab.curr() != curr) break;
const TString80 codtab = tab.get("CODTAB");
//const TString16 cod_att = codtab.mid(4,5); //e' uguale a old_att
if (old_att != new_att)
{
TRectype vecchio (tab.curr());
TRectype nuovo (tab.curr());
TString80 cc;
if (is_pla)
cc = codtab.sub(13);
else
cc = codtab.sub(9);
TString80 cod;
if (is_pla) cod << firm;
cod << _anno << new_att << cc;
nuovo.put("CODTAB", cod);
tab.write(nuovo);
tab.read(vecchio);
tab.remove();
}
}
}