313 lines
6.6 KiB
C++
Executable File
313 lines
6.6 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <tabutil.h>
|
|
#include <mask.h>
|
|
#include <prefix.h>
|
|
#include <sheet.h>
|
|
#include <relation.h>
|
|
#include <urldefid.h>
|
|
#include <utility.h>
|
|
|
|
#define F_YEAR 101
|
|
|
|
|
|
// ripristino liquidazione
|
|
// dati anno e ditta scancella tutte
|
|
// le tabelle dimmerda
|
|
// piu' che altro serve alla Prassi
|
|
// per non far cazzate quando provano
|
|
|
|
class TRipristino_liq : public TApplication
|
|
{
|
|
long _firm;
|
|
TString _year;
|
|
TRelation* _nditte;
|
|
TArray_sheet* _ditte;
|
|
TArray _nomiditte;
|
|
|
|
virtual bool create();
|
|
virtual bool destroy();
|
|
|
|
bool menu(MENU_TAG) { return do_restore(); }
|
|
|
|
// handuler
|
|
static bool ch_year_handler(TMask_field& f, KEY key);
|
|
|
|
public:
|
|
|
|
void build_ditte_sheet();
|
|
void build_nomiditte();
|
|
void set_year(const char* y) { _year = y; }
|
|
|
|
bool do_restore();
|
|
bool restore_firm(long firm);
|
|
|
|
static TRipristino_liq& app() { return (TRipristino_liq&)main_app(); }
|
|
|
|
TRipristino_liq() {}
|
|
virtual ~TRipristino_liq() {}
|
|
};
|
|
|
|
bool TRipristino_liq::ch_year_handler(TMask_field& f, KEY key)
|
|
{
|
|
if (key == K_TAB && f.focusdirty())
|
|
{
|
|
app().begin_wait();
|
|
app().set_year(f.get());
|
|
app().build_nomiditte();
|
|
app().build_ditte_sheet();
|
|
app().end_wait();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
void TRipristino_liq::build_ditte_sheet()
|
|
{
|
|
// build sheet
|
|
_ditte->destroy();
|
|
for (int i = 0; i < _nomiditte.items(); i++)
|
|
{
|
|
TToken_string* d = new TToken_string(64);
|
|
*d = (TToken_string&)_nomiditte[i];
|
|
const char vers = d->get_char(2);
|
|
|
|
bool selectable = vers == '?';
|
|
d->insert(" |", 0);
|
|
|
|
const long pos = _ditte->add(d);
|
|
if (selectable) _ditte->disable(pos);
|
|
}
|
|
}
|
|
|
|
|
|
void TRipristino_liq::build_nomiditte()
|
|
{
|
|
_nomiditte.destroy();
|
|
// ricostruire _nomiditte e rifare build_ditte_sheet
|
|
TLocalisamfile& dt = _nditte->lfile();
|
|
TString fr("??");
|
|
TTable lia("%LIA");
|
|
|
|
for (dt.first(); !dt.eof(); dt.next())
|
|
{
|
|
// check no archivi
|
|
fr = "??";
|
|
bool good = prefix().exist(dt.get_long("CODDITTA"));
|
|
|
|
if (good)
|
|
{
|
|
// check no parametri liquidazione
|
|
lia.zero();
|
|
const TString16 cod(format("%05ld%4s", dt.get_long("CODDITTA"), (const char*)_year));
|
|
lia.put("CODTAB", cod);
|
|
if (lia.read() != NOERR) good = FALSE;
|
|
else fr = lia.get("S7");
|
|
}
|
|
else continue;
|
|
|
|
TToken_string* d = new TToken_string(64);
|
|
|
|
// add record
|
|
d->add(dt.get("CODDITTA"));
|
|
d->add(dt.get("RAGSOC"));
|
|
d->add(fr);
|
|
|
|
_nomiditte.add(d);
|
|
}
|
|
TApplication::set_firm(_firm);
|
|
}
|
|
|
|
|
|
bool TRipristino_liq::create()
|
|
{
|
|
TApplication::create();
|
|
_firm = get_firm();
|
|
TDate oggi(TODAY);
|
|
_year.format("%d",oggi.year());
|
|
_nditte = new TRelation(LF_NDITTE);
|
|
_ditte = new TArray_sheet(-1, -1, 0, 0, "Selezione Ditte",
|
|
"@1|Cod.@5|Ragione Sociale@50|Vers.");
|
|
build_nomiditte();
|
|
build_ditte_sheet();
|
|
|
|
dispatch_e_menu(BAR_ITEM(1));
|
|
return TRUE;
|
|
}
|
|
|
|
bool TRipristino_liq::destroy()
|
|
{
|
|
delete _nditte;
|
|
delete _ditte;
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
bool TRipristino_liq::do_restore()
|
|
{
|
|
KEY k; int i;
|
|
TMask m("cg5600a");
|
|
|
|
m.field(F_YEAR).set(_year);
|
|
m.set_handler(F_YEAR, ch_year_handler);
|
|
_ditte->enable_check();
|
|
|
|
while ((k = m.run()) != K_ESC)
|
|
{
|
|
if (k == K_QUIT) break;
|
|
switch(k)
|
|
{
|
|
case K_ENTER:
|
|
begin_wait();
|
|
for(i = 0; i < _ditte->items(); i++)
|
|
{
|
|
if (_ditte->checked(i))
|
|
{
|
|
TToken_string& rw = _ditte->row(i);
|
|
restore_firm(rw.get_long(1));
|
|
}
|
|
}
|
|
end_wait();
|
|
break;
|
|
case DLG_SELECT:
|
|
_ditte->run();
|
|
break;
|
|
}
|
|
}
|
|
|
|
set_firm(_firm);
|
|
return k != K_QUIT;
|
|
}
|
|
|
|
bool TRipristino_liq::restore_firm(long firm)
|
|
{
|
|
// azzera: campi progressivi in LIA e PLA
|
|
// cancella: tutti PPA, LIM, PIM, RMB, PLM, PTM
|
|
set_firm(firm);
|
|
|
|
TTable lia("%LIA");
|
|
TTable pla("%PLA");
|
|
TTable pim("PIM");
|
|
TTable plm("PLM");
|
|
TTable ptm("PTM");
|
|
TTable ppa("PPA");
|
|
TTable rmb("RMB");
|
|
TTable lim("LIM");
|
|
|
|
// LIA
|
|
for (lia.first(); !lia.eof(); lia.next())
|
|
{
|
|
TString codtab(lia.get("CODTAB"));
|
|
|
|
if (atol(codtab.mid(0,5)) == firm &&
|
|
codtab.mid(5,4) == _year)
|
|
{
|
|
lia.put("R1","");
|
|
lia.put("R2","");
|
|
lia.put("R3","");
|
|
lia.put("R4","");
|
|
lia.put("R5","");
|
|
lia.put("R6","");
|
|
break;
|
|
}
|
|
}
|
|
lia.rewrite();
|
|
|
|
// PLA
|
|
for (pla.first(); !pla.eof(); pla.next())
|
|
{
|
|
TString codtab(pla.get("CODTAB"));
|
|
|
|
if (atol(codtab.mid(0,5)) == firm &&
|
|
codtab.mid(5,4) == _year)
|
|
{
|
|
pla.put("R0","");
|
|
pla.put("R1","");
|
|
pla.put("R2","");
|
|
pla.put("R3","");
|
|
pla.put("R4","");
|
|
pla.put("R9","");
|
|
pla.put("R10","");
|
|
pla.put("S1","");
|
|
pla.put("S2","");
|
|
pla.put("S3","");
|
|
pla.put("S4","");
|
|
}
|
|
}
|
|
pla.rewrite();
|
|
|
|
// PIM
|
|
for (pim.first(); !pim.eof(); pim.next())
|
|
{
|
|
TString codtab(pim.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
pim.remove();
|
|
}
|
|
// pim.packfile();
|
|
// pim.packindex();
|
|
|
|
// PLM
|
|
for (plm.first(); !plm.eof(); plm.next())
|
|
{
|
|
TString codtab(plm.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
plm.remove();
|
|
}
|
|
// plm.packfile();
|
|
// plm.packindex();
|
|
|
|
// PTM
|
|
for (ptm.first(); !ptm.eof(); ptm.next())
|
|
{
|
|
TString codtab(ptm.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
ptm.remove();
|
|
}
|
|
// ptm.packfile();
|
|
// ptm.packindex();
|
|
|
|
// PPA
|
|
for (ppa.first(); !ppa.eof(); ppa.next())
|
|
{
|
|
TString codtab(ppa.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
ppa.remove();
|
|
}
|
|
// ppa.packfile();
|
|
// ppa.packindex();
|
|
|
|
// RMB
|
|
for (rmb.first(); !rmb.eof(); rmb.next())
|
|
{
|
|
TString codtab(rmb.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
rmb.remove();
|
|
}
|
|
// rmb.packfile();
|
|
// rmb.packindex();
|
|
|
|
// LIM
|
|
for (lim.first(); !lim.eof(); lim.next())
|
|
{
|
|
TString codtab(lim.get("CODTAB"));
|
|
|
|
if (codtab.mid(0,4) == _year)
|
|
lim.remove();
|
|
}
|
|
// lim.packfile();
|
|
// lim.packindex();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
int cg5600(int argc, char* argv[])
|
|
{
|
|
TRipristino_liq app;
|
|
app.run(argc, argv, "Ripristino liquidazione");
|
|
return 0;
|
|
}
|