1995-07-21 10:12:15 +00:00
|
|
|
// ------------------------------------------------------------
|
|
|
|
// Calcolo liquidazioni
|
|
|
|
// Part 1: interfaccia
|
|
|
|
// fv 21-1-94
|
|
|
|
// ------------------------------------------------------------
|
|
|
|
|
|
|
|
#include <defmask.h>
|
|
|
|
#include <mailbox.h>
|
|
|
|
#include <prefix.h>
|
|
|
|
#include <progind.h>
|
|
|
|
#include <sheet.h>
|
|
|
|
#include <utility.h>
|
|
|
|
|
|
|
|
#include "cg4300.h"
|
|
|
|
#include "cg4300a.h"
|
|
|
|
|
|
|
|
#include <mov.h>
|
|
|
|
|
1996-11-13 10:55:21 +00:00
|
|
|
|
1997-10-23 09:34:10 +00:00
|
|
|
// Methods of _Iva11Array
|
|
|
|
bool _Iva11Array::add(const real& val, const char* fld_name, int num_file)
|
1996-11-13 10:55:21 +00:00
|
|
|
{
|
|
|
|
const bool is_key = TAssoc_array::is_key(fld_name);
|
1997-11-20 13:29:47 +00:00
|
|
|
if (!is_key)
|
|
|
|
TAssoc_array::add(fld_name,(_Iva11Item*)new _Iva11Item,is_key);
|
|
|
|
_Iva11Item& bi = (_Iva11Item&)find(fld_name);
|
1996-11-13 10:55:21 +00:00
|
|
|
bi.value() += val;
|
|
|
|
if (num_file != LF_TAB1100A) bi.file() = num_file;
|
1997-11-20 13:29:47 +00:00
|
|
|
return TRUE;
|
1996-11-13 10:55:21 +00:00
|
|
|
}
|
|
|
|
|
1997-10-23 09:34:10 +00:00
|
|
|
bool _Iva11Array::sub(const real& val, const char* fld_name, int num_file)
|
1996-11-13 10:55:21 +00:00
|
|
|
{
|
|
|
|
const real v1 = val * (-1.0);
|
|
|
|
return add(v1,fld_name, num_file);
|
|
|
|
}
|
|
|
|
|
1997-10-23 09:34:10 +00:00
|
|
|
void _Iva11Array::zero(const char* fld_name)
|
1996-11-28 15:19:50 +00:00
|
|
|
{
|
|
|
|
const bool is_key = TAssoc_array::is_key(fld_name);
|
1997-11-20 13:29:47 +00:00
|
|
|
if (!is_key)
|
|
|
|
TAssoc_array::add(fld_name,(_Iva11Item*) new _Iva11Item,is_key);
|
|
|
|
_Iva11Item& bi = (_Iva11Item&)find(fld_name);
|
1996-11-28 15:19:50 +00:00
|
|
|
bi.value() = 0.0;
|
|
|
|
}
|
|
|
|
|
1997-12-24 09:40:34 +00:00
|
|
|
// Methods of _ProrataItem
|
|
|
|
void _ProrataItem::set(const int a, const real& c, const real& p, const bool fl)
|
|
|
|
{
|
|
|
|
_current_perc = c;
|
|
|
|
_previous_ok = a < 1998 ? TRUE : fl;
|
|
|
|
|
|
|
|
if (a > 1997 ) // Se siamo prima del 1997 la percentuale prec vale 0
|
|
|
|
if (!_previous_ok) // Se non ha trovato la percentuale anno precedente
|
|
|
|
_previous_perc = c; // usa quella attuale ricordandosi la segnalazione
|
|
|
|
else
|
|
|
|
_previous_perc = p;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Calcola prorata con percentuale attuale o corrente
|
|
|
|
real _ProrataItem::calc_prorata(const real& acq, const bool current)
|
|
|
|
{
|
|
|
|
real prorata = acq * ((current ? _current_perc : _previous_perc) / 100.0);
|
|
|
|
prorata.round(ROUND_LIRA);
|
|
|
|
return prorata;
|
|
|
|
}
|
|
|
|
|
1996-11-13 10:55:21 +00:00
|
|
|
// Methods of application!
|
1995-07-21 10:12:15 +00:00
|
|
|
real TLiquidazione_app::CENTO(100.0);
|
|
|
|
|
|
|
|
inline TLiquidazione_app& app()
|
|
|
|
{ return (TLiquidazione_app&)main_app(); }
|
|
|
|
|
|
|
|
TLiquidazione_app::TLiquidazione_app(int m) :
|
|
|
|
_ditte(NULL), _selected(10000),
|
|
|
|
_year(4), _nomiditte(100), _menu(m), _firm_bookmark(-1)
|
|
|
|
{
|
|
|
|
_isprint = _is_interactive = _canprint = TRUE;
|
|
|
|
_isplafond = _printonly = _is_visliq = FALSE;
|
|
|
|
_isvent = _isagricolo = _isbenzinaro = _isviaggio = FALSE;
|
|
|
|
_row = 1; _what = all; _comp_acconto = FALSE;
|
|
|
|
_isriepilogo = FALSE; _calcall = FALSE;
|
1996-02-20 09:28:25 +00:00
|
|
|
_isfinal = _isregis = FALSE;
|
|
|
|
_stampa_vers = _stampa_acc = FALSE;
|
1995-07-21 10:12:15 +00:00
|
|
|
_recalc = needed;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_app::user_create()
|
|
|
|
{
|
|
|
|
// vediamo se c'e' il messaggio per calcolare in batch
|
|
|
|
TMailbox mail;
|
|
|
|
TProgind* pnd = NULL;
|
|
|
|
TMessage* msg = mail.next_s("RCL");
|
|
|
|
TToken_string subj(36);
|
|
|
|
_is_interactive = msg == NULL;
|
|
|
|
_recalc_only = FALSE;
|
|
|
|
bool is_header = TRUE;
|
|
|
|
int headerlen;
|
|
|
|
TDate printdate;
|
|
|
|
TString filename;
|
|
|
|
long ditta;
|
|
|
|
bool nocalc = FALSE;
|
|
|
|
|
|
|
|
_prind = NULL;
|
|
|
|
|
|
|
|
if (msg != NULL) subj = msg->body();
|
|
|
|
|
|
|
|
if (_is_interactive)
|
|
|
|
pnd = new TProgind (3,"Preparazione archivi\nPrego attendere",
|
|
|
|
FALSE, TRUE, 30);
|
|
|
|
else begin_wait();
|
|
|
|
|
|
|
|
_nditte = new TRelation(LF_NDITTE);
|
|
|
|
_nditte->add(LF_ATTIV,"CODDITTA=CODDITTA");
|
|
|
|
_nditte_r = &(_nditte->curr());
|
|
|
|
_att_r = &(_nditte->curr(LF_ATTIV));
|
|
|
|
|
1996-06-18 08:47:26 +00:00
|
|
|
_ditte = new TArray_sheet(-1, -1, -4, -4, "Selezione Ditte",
|
1997-11-03 11:41:00 +00:00
|
|
|
"@1|Cod.@5R|Ragione Sociale@50|Vers.|Agr.Min");
|
1995-07-21 10:12:15 +00:00
|
|
|
_n_ditte = 0l;
|
|
|
|
|
1996-11-13 10:55:21 +00:00
|
|
|
// Caro tab11, ricordati che un giorno sarai un file unico!
|
|
|
|
_tab11 = new TRelation(LF_TAB1100A);
|
|
|
|
_tab11->add(LF_TAB1100B,"TADITT=TADITT|TACATT=TACATT");
|
|
|
|
_tab11->write_enable(LF_TAB1100B); // Senno' col fischio che scrive i records
|
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
// prevediamo la data che usera'; se calcola la liq. di un altro anno
|
|
|
|
// si fottera' la frequenza versamenti
|
|
|
|
|
|
|
|
if (_is_interactive)
|
|
|
|
{
|
|
|
|
TDate oggi(TODAY);
|
|
|
|
_year.format("%d",oggi.year());
|
1997-11-03 11:41:00 +00:00
|
|
|
_month = oggi.month();
|
1996-11-13 10:55:21 +00:00
|
|
|
TConfig conf(CONFIG_STUDIO);
|
|
|
|
_sind11 = conf.get_bool("Sind11");
|
1995-07-21 10:12:15 +00:00
|
|
|
}
|
|
|
|
else // parse messaggio
|
|
|
|
{
|
|
|
|
_year = subj.get(0);
|
|
|
|
_month = subj.get_int(1);
|
|
|
|
ditta = subj.get_long(2);
|
|
|
|
char rcl = *(subj.get(3));
|
|
|
|
_recalc_only = rcl == 'C';
|
1995-10-18 14:44:50 +00:00
|
|
|
_is_visliq = rcl == 'V';
|
1995-07-21 10:12:15 +00:00
|
|
|
// S/s = stampa senza ricalcolo (minuscolo = definitivo)
|
|
|
|
// L/l = stampa con ricalcolo se necessario (minuscolo = definitivo)
|
|
|
|
// C = solo ricalcolo
|
|
|
|
// V = stampa ed ev. ricalcolo per visualizzazione
|
1996-02-06 16:06:45 +00:00
|
|
|
// s o l minuscoli = registro bollato
|
1995-07-21 10:12:15 +00:00
|
|
|
_isregis = (rcl == 'l' || rcl == 'L' ||
|
|
|
|
rcl == 'S' || rcl == 's'); // stampa per registri
|
1996-01-03 15:06:24 +00:00
|
|
|
_isfinal = rcl == 'l' || rcl == 's'; // se l minuscolo, definitivo
|
1995-07-21 10:12:15 +00:00
|
|
|
nocalc = rcl == 'S' || rcl == 's';
|
|
|
|
printdate = subj.get(4);
|
|
|
|
filename = subj.get(5);
|
1996-02-06 16:06:45 +00:00
|
|
|
char rliq = *(subj.get(6));
|
|
|
|
_riepilogo = rliq == 'X';
|
|
|
|
headerlen = subj.get_int(7);
|
1996-01-03 15:06:24 +00:00
|
|
|
is_header = subj.items() == 8;
|
1995-07-21 10:12:15 +00:00
|
|
|
//modifica del 5/07/1995
|
|
|
|
int f = printer().formlen();
|
1996-02-06 16:06:45 +00:00
|
|
|
printer().formlen(f - headerlen);
|
1995-07-21 10:12:15 +00:00
|
|
|
//fine
|
|
|
|
}
|
|
|
|
|
|
|
|
if(pnd) pnd->addstatus(1);
|
|
|
|
|
|
|
|
_rel = new TRelation(LF_MOV);
|
|
|
|
_rel->add(LF_RMOVIVA,"NUMREG=NUMREG");
|
1997-11-03 11:41:00 +00:00
|
|
|
_rel->add(LF_PCON,"GRUPPO=GRUPPO|CONTO=CONTO",1,LF_RMOVIVA,AGR_PCON1);
|
|
|
|
_rel->add(LF_PCON,"GRUPPO=GRUPPO|CONTO=CONTO|SOTTOCONTO=SOTTOCONTO",1,LF_RMOVIVA,AGR_PCON2);
|
1995-07-21 10:12:15 +00:00
|
|
|
_rel->add(LF_CAUSALI,"CODCAUS=CODCAUS");
|
|
|
|
|
|
|
|
_cur = new TCursor(_rel, "", 2);
|
|
|
|
|
1996-04-24 16:48:06 +00:00
|
|
|
_ver = new TInteressi_IVA_table();
|
1995-07-21 10:12:15 +00:00
|
|
|
_pim = new TTable("PIM");
|
|
|
|
_pum = new TTable("PUM");
|
|
|
|
_pam = new TTable("PAM");
|
|
|
|
_pom = new TTable("POM");
|
|
|
|
_ppa = new TTable("PPA");
|
|
|
|
_plm = new TTable("PLM");
|
1997-11-03 11:41:00 +00:00
|
|
|
_pia = new TTable("PIA");
|
1995-07-21 10:12:15 +00:00
|
|
|
_lim = new TTable("LIM");
|
|
|
|
_lam = new TTable("LAM");
|
|
|
|
_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);
|
1997-11-03 11:41:00 +00:00
|
|
|
_pcon_1 = &_cur->file(-AGR_PCON1);
|
|
|
|
_pcon_2 = &_cur->file(-AGR_PCON2);
|
1995-07-21 10:12:15 +00:00
|
|
|
|
|
|
|
_pim_r = &(_pim->curr());
|
|
|
|
_plm_r = &(_plm->curr());
|
1997-11-03 11:41:00 +00:00
|
|
|
_pia_r = &(_pia->curr());
|
1995-07-21 10:12:15 +00:00
|
|
|
_pum_r = &(_pum->curr());
|
|
|
|
_pam_r = &(_pam->curr());
|
|
|
|
_pom_r = &(_pom->curr());
|
|
|
|
_iva_r = &(_iva->curr());
|
|
|
|
_del_r = &(_del->curr());
|
|
|
|
_lim_r = &(_lim->curr());
|
|
|
|
_lam_r = &(_lam->curr());
|
|
|
|
_pla_r = &(_pla->curr());
|
|
|
|
_ppa_r = &(_ppa->curr());
|
|
|
|
_reg_r = &(_reg->curr());
|
|
|
|
_mov_r = &(_mov->curr());
|
1997-11-03 11:41:00 +00:00
|
|
|
_rmoviva_r = &(_cur->curr(LF_RMOVIVA));
|
|
|
|
_pcon_1_r = &(_cur->curr(-AGR_PCON1));
|
|
|
|
_pcon_2_r = &(_cur->curr(-AGR_PCON2));
|
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
// ACHTUNG: tutti i _codatt (codici attivita') sono
|
|
|
|
// in realta' composti dal codice attivita' piu' il
|
|
|
|
// tipo attivita' (1 o 2)
|
|
|
|
// sarebbe piu' saggio fare 2 campi ma ci vuole 1 vita
|
|
|
|
|
|
|
|
_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,19);
|
|
|
|
_pim_tipodet = new TRecfield(*_pim_r,"CODTAB",20,20);
|
|
|
|
_pum_anno = new TRecfield(*_pum_r,"CODTAB",0,3);
|
|
|
|
_pum_codatt = new TRecfield(*_pum_r,"CODTAB",4,9);
|
|
|
|
_pum_mese = new TRecfield(*_pum_r,"CODTAB",10,11);
|
|
|
|
_pam_anno = new TRecfield(*_pam_r,"CODTAB",0,3);
|
|
|
|
_pam_codatt = new TRecfield(*_pam_r,"CODTAB",4,9);
|
|
|
|
_pam_mese = new TRecfield(*_pam_r,"CODTAB",10,11);
|
|
|
|
_pom_anno = new TRecfield(*_pom_r,"CODTAB",0,3);
|
|
|
|
_pom_codatt = new TRecfield(*_pom_r,"CODTAB",4,9);
|
|
|
|
_pom_mese = new TRecfield(*_pom_r,"CODTAB",10,11);
|
|
|
|
_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);
|
|
|
|
|
1997-11-03 11:41:00 +00:00
|
|
|
_pia_anno = new TRecfield(*_pia_r,"CODTAB",0,3);
|
|
|
|
_pia_codatt = new TRecfield(*_pia_r,"CODTAB",4,9);
|
|
|
|
_pia_mese = new TRecfield(*_pia_r,"CODTAB",10,11);
|
|
|
|
_pia_codord = new TRecfield(*_pia_r,"CODTAB",12,15);
|
|
|
|
_pia_codcom = new TRecfield(*_pia_r,"CODTAB",16,19);
|
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
_pla_ditta = new TRecfield(*_pla_r,"CODTAB",0,4);
|
|
|
|
_pla_anno = new TRecfield(*_pla_r,"CODTAB",5,8);
|
|
|
|
_pla_codatt = new TRecfield(*_pla_r,"CODTAB",9,14);
|
|
|
|
|
|
|
|
_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);
|
|
|
|
|
|
|
|
_lam_anno = new TRecfield(*_lam_r,"CODTAB",0,3);
|
|
|
|
_lam_mese = new TRecfield(*_lam_r,"CODTAB",4,6);
|
|
|
|
|
|
|
|
__firm = TApplication::get_firm();
|
|
|
|
|
|
|
|
if (pnd) pnd->addstatus(1);
|
|
|
|
|
|
|
|
if (_is_interactive)
|
|
|
|
{
|
|
|
|
build_nomiditte(pnd);
|
|
|
|
build_ditte_sheet(all);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pnd) pnd->addstatus(1);
|
|
|
|
|
|
|
|
TApplication::set_firm(__firm);
|
|
|
|
set_real_picture(REAL_PICTURE);
|
|
|
|
|
|
|
|
if (!_is_interactive)
|
|
|
|
{
|
|
|
|
TTemp_window w(TASK_WIN);
|
|
|
|
if (_recalc_only)
|
|
|
|
_isprint = FALSE;
|
|
|
|
//else printer().set_export_file(filename, is_header, headerlen);
|
|
|
|
else printer().set_export_file(filename, is_header);
|
1996-02-06 16:06:45 +00:00
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
// calcola liquidazione
|
|
|
|
printer().setdate(printdate);
|
1996-02-06 16:06:45 +00:00
|
|
|
_recalc = nocalc ? never : needed;
|
1995-07-21 10:12:15 +00:00
|
|
|
TApplication::set_firm(ditta);
|
|
|
|
|
|
|
|
if (!look_lia())
|
|
|
|
{ end_wait(); return FALSE; }
|
1995-10-18 14:44:50 +00:00
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
_nditte->zero();
|
|
|
|
_nditte_r->put("CODDITTA", ditta);
|
|
|
|
_nditte->read();
|
|
|
|
_freqviva = _lia->get("S7");
|
|
|
|
|
|
|
|
TRectype& mov = _cur->curr();
|
|
|
|
TRectype from(_cur->curr()); from.zero();
|
|
|
|
TRectype to(from);
|
|
|
|
TDate f(1, 1, atoi(_year));
|
|
|
|
TDate t(1, _month == 13 ? 12 : _month, atoi(_year));
|
|
|
|
t.set_end_month();
|
|
|
|
from.put(MOV_DATAREG, f);
|
|
|
|
to.put(MOV_DATAREG, t);
|
|
|
|
_cur->setregion(from, to);
|
|
|
|
_canprint = is_month_ok_strict(_month) || _month == 13;
|
1995-10-03 09:45:08 +00:00
|
|
|
_isannual = _isriepilogo = _month == 13;
|
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
//modifica del 03/05/1995
|
|
|
|
int need_refresh = FALSE;
|
|
|
|
for (int m = 1; m < _month; m++)
|
|
|
|
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
|
|
|
{
|
|
|
|
need_refresh = TRUE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (need_refresh) _recalc = ever;
|
1995-07-21 10:42:39 +00:00
|
|
|
|
|
|
|
// determina attivita' prevalente e istanzia cazzuole
|
|
|
|
// per vedere che Kazzo di liquidazione calcolare
|
|
|
|
TString attprev = _nditte->curr().get("CODATTPREV");
|
|
|
|
TLocalisamfile& atts = _nditte->lfile(LF_ATTIV);
|
|
|
|
atts.zero();
|
|
|
|
atts.put("CODDITTA",ditta);
|
|
|
|
atts.put("CODATT", attprev);
|
|
|
|
if (atts.read() != NOERR) atts.zero();
|
|
|
|
// istanzia benzinaro
|
1995-10-24 10:34:55 +00:00
|
|
|
_isbenzinaro = atts.get_bool("ART74_4");
|
1995-07-21 10:42:39 +00:00
|
|
|
|
|
|
|
// riaggiusta relazione
|
|
|
|
_nditte->read();
|
1995-07-21 10:12:15 +00:00
|
|
|
|
1996-02-20 09:28:25 +00:00
|
|
|
for (int mese = 1; mese < _month; mese++)
|
1995-07-21 10:12:15 +00:00
|
|
|
if (is_month_plain(mese) || _recalc == ever)
|
|
|
|
update_firm(mese);
|
|
|
|
|
|
|
|
if (is_month_plain(_month) || _month == 13)
|
|
|
|
update_firm(_month);
|
|
|
|
|
|
|
|
if (_isprint && _descr_arr.items() > 0)
|
|
|
|
print();
|
|
|
|
|
1996-02-06 16:06:45 +00:00
|
|
|
if (!nocalc)
|
|
|
|
{
|
|
|
|
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
|
|
|
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
|
|
|
// successivi (evitando problemi per credito precedente)
|
|
|
|
for (m = _month+1; m <= 13; m++)
|
|
|
|
if (look_lim(m))
|
|
|
|
{
|
|
|
|
_lim->put("B0","");
|
|
|
|
_lim->rewrite();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
1995-07-21 10:12:15 +00:00
|
|
|
|
|
|
|
TApplication::set_firm(__firm);
|
|
|
|
end_wait();
|
|
|
|
}
|
|
|
|
else delete pnd;
|
1997-01-30 16:39:10 +00:00
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
return _is_interactive;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_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;
|
1997-11-03 11:41:00 +00:00
|
|
|
delete _pia_anno;
|
|
|
|
delete _pia_codatt;
|
|
|
|
delete _pia_mese;
|
|
|
|
delete _pia_codord;
|
|
|
|
delete _pia_codcom;
|
1995-07-21 10:12:15 +00:00
|
|
|
delete _pum_anno;
|
|
|
|
delete _pum_codatt;
|
|
|
|
delete _pum_mese;
|
|
|
|
delete _pam_codatt;
|
|
|
|
delete _pam_anno;
|
|
|
|
delete _pam_mese;
|
|
|
|
delete _pom_codatt;
|
|
|
|
delete _pom_anno;
|
|
|
|
delete _pom_mese;
|
|
|
|
delete _lim_anno;
|
|
|
|
delete _lim_mese;
|
|
|
|
delete _lam_anno;
|
|
|
|
delete _lam_mese;
|
|
|
|
delete _pla_anno;
|
|
|
|
delete _pla_codatt;
|
|
|
|
delete _pim_codatt;
|
|
|
|
delete _del_ditta;
|
|
|
|
delete _del_anno;
|
|
|
|
delete _del_mese;
|
|
|
|
delete _del_tipo;
|
|
|
|
|
1996-04-24 16:48:06 +00:00
|
|
|
delete _ver;
|
1995-07-21 10:12:15 +00:00
|
|
|
delete _pim;
|
|
|
|
delete _pum;
|
|
|
|
delete _pam;
|
|
|
|
delete _pom;
|
|
|
|
delete _ppa;
|
|
|
|
delete _plm;
|
1997-11-03 11:41:00 +00:00
|
|
|
delete _pia;
|
1995-07-21 10:12:15 +00:00
|
|
|
delete _lim;
|
|
|
|
delete _lam;
|
|
|
|
delete _pla;
|
|
|
|
delete _del;
|
|
|
|
|
1996-11-13 10:55:21 +00:00
|
|
|
delete _tab11;
|
1995-07-21 10:12:15 +00:00
|
|
|
delete _nditte;
|
|
|
|
delete _rel;
|
|
|
|
delete _cur;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_app::set_print(int)
|
|
|
|
{
|
|
|
|
_descr_arr.destroy();
|
1996-12-04 09:15:55 +00:00
|
|
|
_errors.destroy();
|
|
|
|
_reg_arr.destroy();
|
|
|
|
_codiva_arr.destroy();
|
1995-07-21 10:12:15 +00:00
|
|
|
|
|
|
|
switch(_menu)
|
|
|
|
{
|
|
|
|
case 1: // liquidazione
|
|
|
|
_isprint = TRUE;
|
|
|
|
while (set_liquidazione())
|
|
|
|
{
|
|
|
|
if (_selected.ones() > 0l)
|
|
|
|
{
|
|
|
|
TRectype& mov = _cur->curr();
|
|
|
|
TRectype from(_cur->curr()); from.zero();
|
|
|
|
TRectype to(from);
|
|
|
|
TDate f(1, 1, atoi(_year));
|
|
|
|
TDate t(1, _month == 13 ? 12 : _month, atoi(_year));
|
|
|
|
t.set_end_month();
|
|
|
|
from.put(MOV_DATAREG, f);
|
|
|
|
to.put(MOV_DATAREG, t);
|
|
|
|
_cur->setregion(from, to);
|
|
|
|
|
|
|
|
return recalc_all() && _isprint;
|
|
|
|
}
|
|
|
|
else warning_box("Nessuna ditta selezionata!");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 2: // estrazione deleghe
|
1996-01-03 15:06:24 +00:00
|
|
|
_isprint = FALSE;
|
|
|
|
_selected.reset();
|
|
|
|
_ditte->check(-1, FALSE);
|
|
|
|
build_ditte_sheet(all);
|
1995-07-21 10:12:15 +00:00
|
|
|
while (set_deleghe())
|
|
|
|
{
|
|
|
|
if (_calcall || _selected.ones() > 0l)
|
|
|
|
{
|
|
|
|
TRectype & mov = _cur->curr();
|
|
|
|
TRectype from(_cur->curr()); from.zero();
|
|
|
|
TRectype to(from);
|
|
|
|
TDate f(1, _recalc == one ? _month : 1, atoi(_year));
|
|
|
|
TDate t(1, _month == 13 ? 12 : _month, atoi(_year));
|
|
|
|
t.set_end_month();
|
|
|
|
from.put(MOV_DATAREG, f);
|
|
|
|
to.put(MOV_DATAREG, t);
|
|
|
|
_cur->setregion(from, to);
|
|
|
|
extract_deleghe();
|
|
|
|
return _isprint;
|
|
|
|
}
|
|
|
|
else warning_box("Nessuna ditta selezionata!");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 3: // calcolo acconto
|
|
|
|
_isprint = TRUE;
|
1995-09-27 15:28:09 +00:00
|
|
|
_month = 12;
|
1996-01-03 15:06:24 +00:00
|
|
|
_selected.reset();
|
|
|
|
_ditte->check(-1, FALSE);
|
1997-11-03 11:41:00 +00:00
|
|
|
build_ditte_sheet(all);
|
1995-07-21 10:12:15 +00:00
|
|
|
real inf; real ina; // cotale obbrobrio non fu da me cercato, ne' mai condiviso
|
|
|
|
while (set_acconto(inf, ina))
|
|
|
|
{
|
|
|
|
if (_calcall || _selected.ones() > 0l)
|
|
|
|
{
|
|
|
|
TRectype & mov = _cur->curr();
|
|
|
|
TRectype from(_cur->curr()); from.zero();
|
|
|
|
TRectype to(from);
|
|
|
|
TDate f(1, _recalc == one ? _month : 1, atoi(_year));
|
|
|
|
TDate t(1, _month == 13 ? 12 : _month, atoi(_year));
|
|
|
|
t.set_end_month();
|
|
|
|
from.put(MOV_DATAREG, f);
|
|
|
|
to.put(MOV_DATAREG, t);
|
|
|
|
_cur->setregion(from, to);
|
|
|
|
recalc_acconti(inf, ina);
|
|
|
|
return _isprint;
|
|
|
|
}
|
|
|
|
else warning_box("Nessuna ditta selezionata!");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
long TLiquidazione_app::select_firm_range(long from, long to, wht freq)
|
|
|
|
{
|
|
|
|
if (to == 0l) to = 99999L;
|
|
|
|
|
|
|
|
for (int i = 0; i < _ditte->items(); i++)
|
|
|
|
{
|
1996-05-20 13:49:05 +00:00
|
|
|
if (_ditte->row_disabled(i))
|
1995-07-21 10:12:15 +00:00
|
|
|
continue;
|
|
|
|
|
|
|
|
TToken_string& d = _ditte->row(i);
|
|
|
|
const char vers = d.get_char(3);
|
|
|
|
if (vers == '?' || (freq == mnt && vers == 'T') || (freq == trimestre && vers == 'M'))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
const long cod = d.get_long(1);
|
|
|
|
if (cod >= from && cod <= to)
|
|
|
|
{
|
|
|
|
_selected.set(i);
|
|
|
|
_ditte->check(i);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_selected.set(i,FALSE);
|
|
|
|
_ditte->uncheck(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return _selected.ones();
|
|
|
|
}
|
|
|
|
|
|
|
|
// ----------------------------------------------- handlers
|
|
|
|
|
|
|
|
bool TLiquidazione_app::ch_year_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
app().begin_wait();
|
1995-10-26 10:19:25 +00:00
|
|
|
app().reset_choices(f.mask());
|
1995-07-21 10:12:15 +00:00
|
|
|
app().set_year(f.get());
|
|
|
|
app().build_nomiditte();
|
|
|
|
app().build_ditte_sheet(f.mask().source_file() == "cg4300a.msk" ?
|
|
|
|
(wht)atoi(f.mask().get(CG43_RDB_VERS)) :
|
1997-11-03 11:41:00 +00:00
|
|
|
all);
|
1995-07-21 10:12:15 +00:00
|
|
|
app().end_wait();
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TLiquidazione_app::build_nomiditte(TProgind* pnd)
|
|
|
|
{
|
|
|
|
_nomiditte.destroy();
|
|
|
|
// ricostruire _nomiditte e rifare build_ditte_sheet
|
|
|
|
TLocalisamfile& dt = _nditte->lfile();
|
|
|
|
|
|
|
|
for (dt.first(); !dt.eof(); dt.next())
|
|
|
|
{
|
|
|
|
// check no archivi
|
|
|
|
bool good = prefix().exist(dt.get_long("CODDITTA"));
|
|
|
|
|
|
|
|
if (good)
|
|
|
|
{
|
|
|
|
// check no parametri liquidazione
|
1997-11-03 11:41:00 +00:00
|
|
|
if (!look_lia(dt.get_long("CODDITTA")))
|
|
|
|
good = FALSE;
|
1995-07-21 10:12:15 +00:00
|
|
|
}
|
|
|
|
else continue;
|
|
|
|
|
|
|
|
TToken_string* d = new TToken_string(64);
|
|
|
|
|
|
|
|
// add record
|
|
|
|
d->add(dt.get("CODDITTA"));
|
|
|
|
d->add(dt.get("RAGSOC"));
|
1997-11-03 11:41:00 +00:00
|
|
|
if (good)
|
|
|
|
{
|
|
|
|
d->add(_lia->get("S7"));
|
|
|
|
d->add(_lia->get("B2"));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
d->add("??");
|
|
|
|
d->add("??");
|
|
|
|
}
|
1995-07-21 10:12:15 +00:00
|
|
|
_nomiditte.add(d);
|
|
|
|
}
|
|
|
|
if (pnd) pnd->addstatus(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_app::to_ditt_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
if (key == K_F9)
|
|
|
|
{
|
1996-06-18 08:47:26 +00:00
|
|
|
TArray_sheet* sh = app().get_ditte_sheet();
|
|
|
|
TMask& m = f.mask();
|
|
|
|
|
1996-06-20 16:00:46 +00:00
|
|
|
sh->disable_check();
|
|
|
|
sh->disable(DLG_USER);
|
1996-06-18 08:47:26 +00:00
|
|
|
if (sh->run() == K_ENTER)
|
|
|
|
{
|
|
|
|
app().select_firm_range(m.get_long(CG43_FLD_DFR),sh->row(sh->selected()).get_long(1),
|
|
|
|
(wht)m.get_int(CG43_RDB_VERS));
|
|
|
|
app().set_choice_limits(m);
|
|
|
|
}
|
1996-06-20 16:00:46 +00:00
|
|
|
sh->enable(DLG_USER);
|
1995-07-21 10:12:15 +00:00
|
|
|
}
|
|
|
|
if (key == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
const long l = app().select_firm_range(m.get_long(CG43_FLD_DFR),
|
|
|
|
m.get_long(CG43_FLD_DTO),
|
|
|
|
(wht)m.get_int(CG43_RDB_VERS));
|
|
|
|
app().set_choice_limits(m);
|
|
|
|
m.field(CG43_FLD_SELECTED).set(format("%ld", l));
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_app::fr_ditt_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
if (key == K_F9)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
TArray_sheet* sh = ((TLiquidazione_app&)main_app()).get_ditte_sheet();
|
|
|
|
|
|
|
|
sh->disable_check();
|
1996-06-20 16:00:46 +00:00
|
|
|
sh->disable(DLG_USER);
|
1995-07-21 10:12:15 +00:00
|
|
|
if (sh->run() == K_ENTER)
|
|
|
|
{
|
|
|
|
app().select_firm_range(sh->row(sh->selected()).get_long(1), m.get_long(CG43_FLD_DTO),
|
|
|
|
(wht)m.get_int(CG43_RDB_VERS));
|
|
|
|
app().set_choice_limits(m);
|
|
|
|
}
|
1996-06-20 16:00:46 +00:00
|
|
|
sh->enable(DLG_USER);
|
|
|
|
}
|
1996-06-18 08:47:26 +00:00
|
|
|
else if (key == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
const long l = app().select_firm_range(m.get_long(CG43_FLD_DFR),
|
|
|
|
m.get_long(CG43_FLD_DTO),
|
|
|
|
(wht)m.get_int(CG43_RDB_VERS));
|
|
|
|
|
|
|
|
app().set_choice_limits(m);
|
|
|
|
m.set(CG43_FLD_SELECTED, l);
|
|
|
|
}
|
1995-07-21 10:12:15 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TLiquidazione_app::what_freq_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
1996-07-02 17:00:20 +00:00
|
|
|
if (key == K_SPACE)
|
1995-07-21 10:12:15 +00:00
|
|
|
{
|
1997-11-03 11:41:00 +00:00
|
|
|
int month = f.mask().get_int(CG43_LST_MESE);
|
1995-07-21 10:12:15 +00:00
|
|
|
if (f.get()[0] == '3') // trimestre intelligente
|
|
|
|
{
|
|
|
|
if (month > 3)
|
|
|
|
while (!is_trim(month)) month--;
|
|
|
|
else month = 3;
|
|
|
|
|
|
|
|
f.mask().field(CG43_LST_TRIM).set(format("%d",month));
|
|
|
|
}
|
1997-11-03 11:41:00 +00:00
|
|
|
app().set_month(month);
|
1995-07-21 10:12:15 +00:00
|
|
|
app().reset_choices(f.mask());
|
|
|
|
app().build_ditte_sheet((wht)atoi(f.get()));
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-11-03 11:41:00 +00:00
|
|
|
bool TLiquidazione_app::lst_tm_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (f.to_check(key))
|
|
|
|
{
|
1997-11-03 16:34:30 +00:00
|
|
|
const int m = atoi(f.get());
|
|
|
|
TMask& msk = f.mask();
|
|
|
|
|
|
|
|
if (m == 13)
|
|
|
|
{
|
|
|
|
msk.field(CG43_LST_CALC).set("2");
|
|
|
|
msk.field(CG43_LST_CALC).disable();
|
|
|
|
}
|
|
|
|
else
|
1997-11-11 10:19:39 +00:00
|
|
|
// Abilita il ricalcolo solo se non e' richiesta esplicitamente la sola stampa
|
|
|
|
if (!msk.get_bool(CG43_CHK_FINAL))
|
|
|
|
msk.field(CG43_LST_CALC).enable();
|
1997-11-03 16:34:30 +00:00
|
|
|
|
1997-11-03 11:41:00 +00:00
|
|
|
const bool change = (app()._month != 13 && m == 13) || (app()._month == 13 && m != 13);
|
|
|
|
if (change)
|
|
|
|
{
|
|
|
|
app().begin_wait();
|
1997-12-24 09:40:34 +00:00
|
|
|
app().reset_choices(f.mask());
|
1997-11-03 11:41:00 +00:00
|
|
|
app().set_month(m);
|
|
|
|
app().build_ditte_sheet(f.mask().source_file() == "cg4300a.msk" ?
|
|
|
|
(wht)atoi(f.mask().get(CG43_RDB_VERS)) :
|
|
|
|
all);
|
|
|
|
app().end_wait();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-07-15 07:43:08 +00:00
|
|
|
bool TLiquidazione_app::select_button(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_SPACE)
|
|
|
|
{
|
|
|
|
app()._ditte->enable_check();
|
|
|
|
// seleziona e aggiungi alle gia' selezionate
|
|
|
|
if (app()._ditte->run() == K_ENTER)
|
|
|
|
{
|
|
|
|
const long itms = app()._ditte->items();
|
|
|
|
for (long j = 0l; j < itms; j++)
|
|
|
|
app()._selected.set(j, app()._ditte->checked(j));
|
|
|
|
app().set_choice_limits(f.mask());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-07-29 17:27:03 +00:00
|
|
|
bool TLiquidazione_app::reset_button(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_SPACE)
|
|
|
|
app().reset_choices(f.mask());
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-11-11 10:19:39 +00:00
|
|
|
bool TLiquidazione_app::chk_final_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_SPACE)
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
// Abilita solo se il mese di ricalcolo e' != 13 (annuale) e non e' checkkato il campo
|
|
|
|
int vers = m.get_int(CG43_RDB_VERS);
|
|
|
|
int mese = vers == 3 ? m.get_int(CG43_LST_TRIM) : m.get_int(CG43_LST_MESE);
|
|
|
|
const bool abilita = !m.get_bool(CG43_CHK_FINAL) && mese != 13;
|
|
|
|
m.enable(CG43_LST_CALC, abilita);
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
void TLiquidazione_app::reset_choices(TMask& m)
|
|
|
|
{
|
|
|
|
_selected.reset();
|
1995-11-30 09:39:32 +00:00
|
|
|
if (m.source_file() == "cg4300a.msk")
|
|
|
|
{
|
|
|
|
m.reset(CG43_FLD_SELECTED);
|
|
|
|
m.reset(CG43_FLD_DFR);
|
|
|
|
m.reset(CG43_FLD_DTO);
|
|
|
|
}
|
1995-07-21 10:12:15 +00:00
|
|
|
_ditte->check(-1, FALSE);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TLiquidazione_app::set_choice_limits(TMask& m)
|
|
|
|
{
|
|
|
|
long first = -1l, last = -1l;
|
|
|
|
for (int i = 0; i < _ditte->items(); i++)
|
|
|
|
{
|
|
|
|
if (_selected[i])
|
|
|
|
{
|
|
|
|
const long dit = _ditte->row(i).get_long(1);
|
|
|
|
if (first == -1l) first = dit;
|
|
|
|
if (last < dit) last = dit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (first != -1) m.set(CG43_FLD_DFR, first);
|
|
|
|
if (last != -1) m.set(CG43_FLD_DTO, last);
|
|
|
|
m.set(CG43_FLD_SELECTED, _selected.ones());
|
|
|
|
}
|
|
|
|
|
|
|
|
void TLiquidazione_app::build_ditte_sheet(wht what)
|
|
|
|
{
|
|
|
|
// build sheet
|
1997-11-03 11:41:00 +00:00
|
|
|
const int items = _nomiditte.items();
|
1995-07-21 10:12:15 +00:00
|
|
|
_ditte->destroy();
|
|
|
|
_what = what;
|
1997-11-03 11:41:00 +00:00
|
|
|
for (int i = 0; i < items; i++)
|
1995-07-21 10:12:15 +00:00
|
|
|
{
|
|
|
|
TToken_string* d = new TToken_string(64);
|
|
|
|
*d = (TToken_string&)_nomiditte[i];
|
|
|
|
const char vers = d->get_char(2);
|
1997-11-03 11:41:00 +00:00
|
|
|
const bool agr = d->get_char(3) == 'X';
|
1995-07-21 10:12:15 +00:00
|
|
|
|
1997-11-03 11:41:00 +00:00
|
|
|
bool unselectable = vers == '?' || (_year > "1997" && _month < 13 && agr);
|
1995-07-21 10:12:15 +00:00
|
|
|
if ((what == mnt && vers == 'T') || (what == trimestre && vers == 'M'))
|
|
|
|
continue;
|
|
|
|
|
|
|
|
d->insert(" |", 0);
|
|
|
|
|
|
|
|
const long pos = _ditte->add(d);
|
1996-07-15 07:43:08 +00:00
|
|
|
if (unselectable)
|
|
|
|
_ditte->disable_row(pos);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_ditte->enable_row(pos);
|
|
|
|
if (_selected[i])
|
|
|
|
_ditte->check(pos);
|
|
|
|
}
|
1995-07-21 10:12:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ----------------------------------------------------
|
|
|
|
|
|
|
|
bool TLiquidazione_app::set_liquidazione()
|
|
|
|
{
|
|
|
|
TMask m("cg4300a.msk");
|
|
|
|
|
|
|
|
m.set_handler(CG43_FLD_DTO, to_ditt_handler);
|
|
|
|
m.set_handler(CG43_FLD_DFR, fr_ditt_handler);
|
|
|
|
m.set_handler(CG43_RDB_VERS, what_freq_handler);
|
|
|
|
m.set_handler(CG43_FLD_ANNO, ch_year_handler);
|
1997-11-03 11:41:00 +00:00
|
|
|
m.set_handler(CG43_LST_MESE, lst_tm_handler);
|
|
|
|
m.set_handler(CG43_LST_TRIM, lst_tm_handler);
|
1996-07-15 07:43:08 +00:00
|
|
|
m.set_handler(CG43_BUT_SEL, select_button);
|
1996-07-29 17:27:03 +00:00
|
|
|
m.set_handler(CG43_BUT_ANN, reset_button);
|
1997-11-11 10:19:39 +00:00
|
|
|
m.set_handler(CG43_CHK_FINAL, chk_final_handler);
|
|
|
|
|
1996-07-02 17:00:20 +00:00
|
|
|
|
1995-07-21 10:12:15 +00:00
|
|
|
m.field(CG43_FLD_SELECTED).set(format("%ld",_selected.ones()));
|
|
|
|
m.field(CG43_FLD_ANNO).set(_year);
|
|
|
|
set_choice_limits(m);
|
|
|
|
|
|
|
|
KEY k;
|
|
|
|
// stampa abilitata per default
|
|
|
|
m.set(CG43_CHK_STAMPA,"X");
|
|
|
|
|
|
|
|
_month = m.get_int(CG43_LST_MESE);
|
|
|
|
|
|
|
|
do
|
|
|
|
{
|
|
|
|
m.field(CG43_RDB_VERS).set(format("%d",(int)_what));
|
|
|
|
|
|
|
|
if ((k = m.run()) == K_ESC) break;
|
|
|
|
|
|
|
|
// handlers have set everything
|
|
|
|
|
|
|
|
_month = _what == trimestre ? m.get_int(CG43_LST_TRIM) :
|
|
|
|
m.get_int(CG43_LST_MESE);
|
|
|
|
|
|
|
|
_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);
|
|
|
|
_printonly = m.get_bool(CG43_CHK_FINAL);
|
|
|
|
|
|
|
|
if (_isprint) printer().setdate(_date);
|
|
|
|
if (_printonly) _recalc = never;
|
|
|
|
|
|
|
|
// ------------------------------------------------
|
1996-06-28 10:49:59 +00:00
|
|
|
//m.first_focus(k);
|
1995-07-21 10:12:15 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
while (k != K_ENTER && k != K_ESC);
|
|
|
|
|
|
|
|
return k == K_ENTER;
|
|
|
|
}
|
|
|
|
|
|
|
|
int cg4300(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TApplication::check_parameters(argc, argv);
|
|
|
|
|
|
|
|
const char* title = "Liquidazione IVA";
|
|
|
|
int menu = 1;
|
|
|
|
|
|
|
|
if (argc > 2)
|
|
|
|
{
|
|
|
|
const char mode = argv[2][1];
|
|
|
|
switch (mode)
|
|
|
|
{
|
|
|
|
case 'A':
|
1995-11-30 09:39:32 +00:00
|
|
|
title = "Calcolo acconti";
|
1995-07-21 10:12:15 +00:00
|
|
|
menu = 3;
|
|
|
|
break;
|
|
|
|
case 'C':
|
|
|
|
title = "Ricalcolo progressivi IVA";
|
|
|
|
break;
|
1995-11-30 09:39:32 +00:00
|
|
|
case 'D':
|
|
|
|
title = "Estrazione versamenti";
|
1995-07-21 10:12:15 +00:00
|
|
|
menu = 2;
|
|
|
|
break;
|
|
|
|
case 'S':
|
|
|
|
title = "Stampa liquidazione";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1996-06-24 16:53:00 +00:00
|
|
|
TLiquidazione_app* main_app = new TLiquidazione_app(menu);
|
|
|
|
main_app->run(argc, argv, title);
|
|
|
|
delete main_app;
|
1995-07-21 10:12:15 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|