campo-sirio/cg/cg4300.cpp
villa 6ca826673d Aggiustate scritture su tabella PIM
Sistemata maschera di immissione per introduzione manuale codici ditta


git-svn-id: svn://10.65.10.50/trunk@137 c028cbd2-c16b-5b4b-a496-9718f37d4682
1994-09-02 10:39:17 +00:00

360 lines
8.7 KiB
C++
Executable File

// ------------------------------------------------------------
// Calcolo liquidazioni
// Part 1: interfaccia
// fv 21-1-94
// ------------------------------------------------------------
#include "cg4300.h"
#include "cg4300a.h"
void CG4300_App::user_create()
{
TProgind pnd(3,"Preparazione archivi\nPrego attendere",
FALSE, TRUE, 30);
_nditte = new TRelation(LF_NDITTE);
_nditte->add(LF_ATTIV,"CODDITTA=CODDITTA");
_nditte_r = &(_nditte->curr());
_att_r = &(_nditte->curr(LF_ATTIV));
_ditte = new TArray_sheet(-1, -1, 0, 0, "Selezione Ditte",
"@1|Cod.@5|Ragione Sociale@50|Vers.");
_n_ditte = 0l;
pnd.addstatus(1);
for (_nditte->first(); !_nditte->eof(); _nditte->next())
{
TString cod = _nditte_r->get("CODDITTA");
TString vers = _nditte_r->get("FREQVIVA");
_n_ditte++;
TToken_string* d = new TToken_string(64);
// add record
(*d) = cod;
d->add(_nditte_r->get("RAGSOC"));
d->add(vers);
_nomiditte.add(d);
}
pnd.addstatus(1);
_rel = new TRelation(LF_MOV);
_rel->add(LF_RMOVIVA,"NUMREG=NUMREG");
_cur = new TCursor(_rel);
(*_cur) = 0;
_pim = new TTable("PIM");
_ppa = new TTable("PPA");
_plm = new TTable("PLM");
_ptm = new TTable("PTM");
_lim = new TTable("LIM");
_pla = new TTable("PLA");
_reg = new TTable("REG");
_iva = new TTable("%IVA");
_del = new TTable("%DEL");
_lia = new TTable("LIA");
_mov = _cur->file(LF_MOV);
_rmoviva = _cur->file(LF_RMOVIVA);
_pim_r = &(_pim->curr());
_plm_r = &(_plm->curr());
_ptm_r = &(_ptm->curr());
_lim_r = &(_lim->curr());
_iva_r = &(_iva->curr());
_del_r = &(_del->curr());
_pla_r = &(_pla->curr());
_ppa_r = &(_ppa->curr());
_reg_r = &(_reg->curr());
_rmoviva_r = &(_cur->curr(LF_RMOVIVA));
_mov_r = &(_mov->curr());
// ACHTUNG: tutti i _codatt (codici attivita') sono
// in realta' composti dal codice attivita' piu' il
// tipo attivita' (1 o 2)
_pim_anno = new TRecfield(*_pim_r,"CODTAB",0,3);
_pim_codatt = new TRecfield(*_pim_r,"CODTAB",4,9);
_pim_codreg = new TRecfield(*_pim_r,"CODTAB",10,12);
_pim_mese = new TRecfield(*_pim_r,"CODTAB",13,14);
_pim_tipocr = new TRecfield(*_pim_r,"CODTAB",15,15);
_pim_codiva = new TRecfield(*_pim_r,"CODTAB",16,17);
_ppa_year = new TRecfield(*_ppa_r,"CODTAB",0,3);
_ppa_codatt = new TRecfield(*_ppa_r,"CODTAB",4,9);
_ppa_month = new TRecfield(*_ppa_r,"CODTAB",10,11);
_ppa_kind = new TRecfield(*_ppa_r,"CODTAB",12,12);
_plm_anno = new TRecfield(*_plm_r,"CODTAB",0,3);
_plm_codatt = new TRecfield(*_plm_r,"CODTAB",4,9);
_plm_mese = new TRecfield(*_plm_r,"CODTAB",10,11);
_ptm_anno = new TRecfield(*_ptm_r,"CODTAB",0,3);
_ptm_codatt = new TRecfield(*_ptm_r,"CODTAB",4,9);
_ptm_mese = new TRecfield(*_ptm_r,"CODTAB",10,11);
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
_pla_anno = new TRecfield(*_pla_r,"CODTAB",0,3);
_pla_codatt = new TRecfield(*_pla_r,"CODTAB",4,9);
_del_ditta = new TRecfield(*_del_r,"CODTAB",0,4);
_del_anno = new TRecfield(*_del_r,"CODTAB",5,8);
_del_mese = new TRecfield(*_del_r,"CODTAB",9,10);
_del_tipo = new TRecfield(*_del_r,"CODTAB",11,11);
pnd.addstatus(1);
set_real_picture(REAL_PICTURE);
}
void CG4300_App::user_destroy()
{
delete _ditte;
delete _pim_anno;
delete _pim_codreg;
delete _pim_mese;
delete _pim_tipocr;
delete _pim_codiva;
delete _ppa_year;
delete _ppa_codatt;
delete _ppa_month;
delete _ppa_kind;
delete _plm_anno;
delete _plm_codatt;
delete _plm_mese;
delete _ptm_anno;
delete _ptm_codatt;
delete _ptm_mese;
delete _lim_anno;
delete _lim_mese;
delete _pla_anno;
delete _pla_codatt;
delete _pim_codatt;
delete _del_ditta;
delete _del_anno;
delete _del_mese;
delete _del_tipo;
delete _pim;
delete _ppa;
delete _plm;
delete _ptm;
delete _lim;
delete _pla;
delete _del;
delete _nditte;
delete _rel;
delete _cur;
}
bool CG4300_App::set_print(int n)
{
TString yy = _year;
_descr_arr.destroy();
switch(n)
{
case 1: // liquidazione
_isprint = TRUE;
if (set_liquidazione())
{
if (_selected.ones() > 0l)
{
if (_year != yy)
{
TString cond(format("ANNOES=%s",(const char*)_year));
_cur->setfilter(cond);
}
recalc_all();
return _isprint;
}
else warning_box("Nessuna ditta selezionata!");
}
break;
case 2: // estrazione deleghe
_isprint = FALSE;
if (set_deleghe())
{
if (_year != yy)
{
TString cond(format("ANNOES=%s",(const char*)_year));
_cur->setfilter(cond);
}
extract_deleghe();
return FALSE;
}
break;
case 3: // calcolo acconto
_isprint = TRUE;
if (set_acconto())
{
if (_year != yy)
{
TString cond(format("ANNOES=%s",(const char*)_year));
_cur->setfilter(cond);
}
recalc_acconti();
return _isprint;
}
break;
}
return FALSE;
}
bool CG4300_App::set_liquidazione()
{
TMask m("cg4300a.msk");
m.field(CG43_FLD_SELECTED).set("0");
_selected.reset();
TBit_array selected = _selected;
KEY k;
// stampa abilitata per default
m.set(CG43_CHK_STAMPA,"X");
do {
k = m.run();
if (k == K_ESC) break;
_what = (wht)atoi(m.get(CG43_RDB_VERS));
_month = atoi(m.get(CG43_LST_MESE));
if (_what == all)
{
if (_month != 3 && _month != 6 && _month != 9 &&
_month != 12 && _month != 13)
_what = mnt;
}
else if (_what == quarter)
_month = atoi(m.get(CG43_LST_TRIM));
_year = m.get(CG43_FLD_ANNO);
_date = m.get(CG43_FLD_DATA);
_isprint = m.get_bool(CG43_CHK_STAMPA);
_recalc = (recalc)m.get_long(CG43_LST_CALC);
_isfinal = m.get_bool(CG43_CHK_FINAL);
if (_isprint) printer().setdate(_date);
TString from = m.get(CG43_FLD_DFR);
TString to = m.get(CG43_FLD_DTO);
m.field(CG43_FLD_DFR).set("");
m.field(CG43_FLD_DTO).set("");
// ------------------------------------------------
m.first_focus(k);
long j, cnt, chk; int i;
if (!from.empty() || !to.empty())
{
chk = 0l;
if (from.empty()) from = "0";
if (to.empty()) to = "999999";
for (i = 0; i < _nomiditte.items(); i++)
{
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
TString cod = d.get(0);
TString vers = d.get(2);
if ((_what == mnt && vers == "T") ||
(_what == quarter && vers == "M"))
continue;
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
_selected.set(chk++);
}
}
switch(k)
{
case DLG_SELECT:
// build sheet
_ditte->destroy(); chk = 0l;
for (i = 0; i < _nomiditte.items(); i++)
{
if (_selected[i]) continue;
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
TString cod = d.get(0);
TString vers = d.get(2);
if ((_what == mnt && vers == "T") ||
(_what == quarter && vers == "M"))
continue;
_ditte->add(d);
// check
if (!from.empty() || !to.empty())
{
if (from.empty()) from = "0";
if (to.empty()) to = "999999";
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
{
_ditte->check(chk);
_selected.set(chk++);
}
}
}
// seleziona e aggiungi alle gia' selezionate
if (_ditte->run() == K_ENTER)
{
cnt = 0;
for (j = 0l; j < _n_ditte; j++)
{
if (_selected[j]) continue;
if (_ditte->checked(cnt++))
selected.set(j);
}
_selected |= selected;
selected.reset();
}
m.field(CG43_FLD_SELECTED).set(format("%ld",(long)_selected.ones()));
break;
case CG43_BUT_ANN:
_selected.reset();
m.field(CG43_FLD_SELECTED).set("0");
break;
case CG43_BUT_CHK:
{
_ditte->destroy();
for (i = 0; i < _nomiditte.items(); i++)
{
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
_ditte->add(d);
if (_selected[i]) _ditte->check(i);
}
_ditte->disable_check();
_ditte->run();
_ditte->enable_check();
}
break;
}
}
while (k != K_ENTER && k != K_ESC);
return k == K_ENTER;
}
int cg4300(int argc, char* argv[])
{
CG4300_App main_app;
main_app.run(argc, argv, "Liquidazione IVA");
return TRUE;
}