Aggiunti primi vagiti della visualizzazione liquidazione (CG55*) git-svn-id: svn://10.65.10.50/trunk@747 c028cbd2-c16b-5b4b-a496-9718f37d4682
262 lines
5.6 KiB
C++
Executable File
262 lines
5.6 KiB
C++
Executable File
#include "cg5500.h"
|
|
|
|
#include <urldefid.h>
|
|
#include <prefix.h>
|
|
#include "cg5500a.h"
|
|
#include <msksheet.h>
|
|
|
|
const char* Visliq_app::itoname(int m)
|
|
{
|
|
const char* mn;
|
|
if (_freqviva == "M")
|
|
return itom(m);
|
|
|
|
switch(m)
|
|
{
|
|
case 3:
|
|
mn = "1 Trimestre";
|
|
break;
|
|
case 6:
|
|
mn = "2 Trimestre";
|
|
break;
|
|
case 9:
|
|
mn = "3 Trimestre";
|
|
break;
|
|
case 12:
|
|
mn = "4 Trimestre";
|
|
break;
|
|
}
|
|
|
|
return mn;
|
|
}
|
|
|
|
void Visliq_app::set_freqviva()
|
|
{
|
|
if (look_lia())
|
|
_freqviva = _lia->get("S7");
|
|
else
|
|
{
|
|
TLocalisamfile ditte(LF_NDITTE,1);
|
|
ditte.zero();
|
|
ditte.put("CODDITTA", get_firm());
|
|
ditte.read();
|
|
_freqviva = ditte.get("FREQVIVA");
|
|
}
|
|
}
|
|
|
|
bool Visliq_app::create()
|
|
{
|
|
TApplication::create();
|
|
|
|
_del = new TTable("%DEL");
|
|
_lia = new TTable("LIA");
|
|
_lim = new TTable("LIM");
|
|
_del_r = &(_del->curr());
|
|
_lim_r = &(_lim->curr());
|
|
_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);
|
|
_lim_anno = new TRecfield(*_lim_r,"CODTAB",0,3);
|
|
_lim_mese = new TRecfield(*_lim_r,"CODTAB",4,6);
|
|
|
|
dispatch_e_menu(BAR_ITEM(1));
|
|
return TRUE;
|
|
}
|
|
|
|
bool Visliq_app::destroy()
|
|
{
|
|
delete _lim_mese;
|
|
delete _lim_anno;
|
|
delete _del_tipo;
|
|
delete _del_mese;
|
|
delete _del_ditta;
|
|
delete _lim_r;
|
|
delete _del_r;
|
|
delete _lim;
|
|
delete _del;
|
|
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
|
|
void Visliq_app::set_mask_freq(TMask& m)
|
|
{
|
|
if (_freqviva == "M")
|
|
{
|
|
m.show(F_MONTHS);
|
|
m.hide(F_TRIMS);
|
|
}
|
|
else
|
|
{
|
|
m.hide(F_MONTHS);
|
|
m.show(F_TRIMS);
|
|
}
|
|
}
|
|
|
|
|
|
bool Visliq_app::menu(MENU_TAG m)
|
|
{
|
|
if (m == BAR_ITEM(1))
|
|
return vis_liq();
|
|
|
|
return TApplication::menu(m);
|
|
}
|
|
|
|
// handlers
|
|
bool Visliq_app::set_ditta(TMask_field& f, KEY k)
|
|
{
|
|
long ditta = atol(f.get());
|
|
|
|
if (!prefhndl->exist(ditta))
|
|
{
|
|
warning_box("Archivi ditta %l non presenti!", ditta);
|
|
return FALSE;
|
|
}
|
|
else
|
|
{
|
|
main_app().set_firm(ditta);
|
|
((Visliq_app&)main_app()).set_freqviva();
|
|
}
|
|
|
|
((Visliq_app&)main_app()).set_mask_freq(f.mask());
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool Visliq_app::set_anno(TMask_field& f, KEY k)
|
|
{
|
|
((Visliq_app&)main_app()).set_year(atoi(f.get()));
|
|
((Visliq_app&)main_app()).set_freqviva();
|
|
((Visliq_app&)main_app()).set_mask_freq(f.mask());
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
bool Visliq_app::vis_liq()
|
|
{
|
|
long ditta = get_firm();
|
|
set_freqviva();
|
|
|
|
TMask m("cg5500a");
|
|
|
|
m.set_handler(F_CODDITTA, set_ditta);
|
|
m.set_handler(F_YEAR, set_anno);
|
|
|
|
set_mask_freq(m);
|
|
_year = m.get_int(F_YEAR);
|
|
|
|
while (m.run() != K_ESC)
|
|
{
|
|
int month = m.get_int(_freqviva == "M" ? F_MONTHS : F_TRIMS);
|
|
if (month == 0)
|
|
vis_all();
|
|
else
|
|
vis_one(month);
|
|
}
|
|
|
|
set_firm(ditta);
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
bool Visliq_app::vis_all()
|
|
{
|
|
if (!look_lia())
|
|
return FALSE;
|
|
|
|
// mask diverse per trimestrale e annuale
|
|
TMask m(_freqviva == "M" ? "cg5500b" : "cg5500c");
|
|
|
|
TSheet_field& sh = (TSheet_field&)m.field(F_VISLIQ1);
|
|
TSheet_field& sv = (TSheet_field&)m.field(F_VISLIQ2);
|
|
|
|
m.field(F_CREDPREC).set(_lia->get_real("R0").string());
|
|
|
|
// set sheet
|
|
for (int i = 1; i <= 12; i++)
|
|
{
|
|
|
|
if (!is_month_ok(i) || !look_lim(i))
|
|
continue;
|
|
|
|
TToken_string* tt = new TToken_string(80);
|
|
|
|
tt->add(""); // questo e' il bottone
|
|
tt->add(itoname(i));
|
|
tt->add(abs(_lim->get_real("R0")).string());
|
|
tt->add(_lim->get_real("R0").sign() < 0 ? "C" : "D");
|
|
tt->add(_lim->get_real("R1").string());
|
|
tt->add(abs(_lim->get_real("R5")).string());
|
|
tt->add(_lim->get_real("R5").sign() < 0 ? "C" : "D");
|
|
|
|
sh.row(i-1) = (*tt);
|
|
}
|
|
|
|
// calcola versamenti
|
|
real versamenti[13];
|
|
TDate date[13];
|
|
|
|
for (_del->first(); !_del->eof(); _del->next())
|
|
{
|
|
if (atol(*_del_ditta) != get_firm() ||
|
|
atoi(*_del_anno) != _year)
|
|
continue;
|
|
|
|
// TBC uso solo deleghe normali (tipo == 1) e acconti (tipo == 7)
|
|
|
|
// somma versamenti nel mese adeguato
|
|
int m = atoi(*_del_mese);
|
|
|
|
if (m >= 12)
|
|
m = atoi(*_del_tipo) == 7 ? 12 : 13;
|
|
|
|
versamenti[m-1] += _del->get_real("R0");
|
|
date[m-1] = _del->get_date("D0");
|
|
}
|
|
|
|
TString nomemese(26);
|
|
|
|
for (i = 1; i <= 13; i++)
|
|
{
|
|
if (!is_month_ok(i))
|
|
continue;
|
|
|
|
TToken_string* tt = new TToken_string(80);
|
|
nomemese = itoname(i == 13 ? 12 : i);
|
|
|
|
if (i == 12) nomemese << " acconto";
|
|
if (i == 13) nomemese << " saldo";
|
|
|
|
tt->add(""); // questo e' il bottone
|
|
tt->add(nomemese); // mese
|
|
tt->add(date[i-1].string()); // data vers.
|
|
tt->add(""); // TBI azienda
|
|
tt->add(""); // TBI dipendenza
|
|
tt->add(""); // TBI concessionaria
|
|
tt->add(versamenti[i-1].string());// versamenti
|
|
tt->add(versamenti[i-1].sign() < 0 ? "C" : "D"); // debito/credito
|
|
|
|
sv.row(i-1) = (*tt);
|
|
}
|
|
|
|
m.run();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
bool Visliq_app::vis_one(int m)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
int cg5500(int argc, char* argv[])
|
|
{
|
|
Visliq_app app;
|
|
app.run(argc, argv, "Visualizzazione Liquidazione");
|
|
return 0;
|
|
}
|