Files correlati : sc2.exe pec.frm sc2200a.msk sc2300a.msk MODIFICA CRPA Possibilità di stampare il pagamento del cliente nella testata dell'estratti conto. Aggiunto filtro per ulteriore classificazione nello scadenziario. Possibilità di stampare le note delle scadenze nella stampa scaduto. Possibiltà di stampare il flag di rata bloccata e il dati di analitica e di filtrare per dati analitica nei solleciti. git-svn-id: svn://10.65.10.50/branches/R_10_00@23573 c028cbd2-c16b-5b4b-a496-9718f37d4682
235 lines
5.5 KiB
C++
Executable File
235 lines
5.5 KiB
C++
Executable File
#include "sc21pec.h"
|
|
#include "sc2102.h"
|
|
#include "sc2402.h"
|
|
|
|
#include "../cg/cgsaldac.h"
|
|
#include "../ca/calib01.h"
|
|
|
|
#include <causali.h>
|
|
|
|
#include <dongle.h>
|
|
#include <modaut.h>
|
|
|
|
TSol_mask::TSol_mask(const char *name)
|
|
:TESSL_mask(name)
|
|
{
|
|
_cdc_start = 0;
|
|
_cdc_end = 0;
|
|
_cms_start = 0;
|
|
_cms_end = 0;
|
|
_fas_start = 0;
|
|
_fas_end = 0;
|
|
|
|
if (dongle().active(CAAUT) || dongle().active(CMAUT))
|
|
{
|
|
create_page("Selezione analitica", 1);
|
|
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
|
|
const bool use_fsc = fasinfo.levels() > 0;
|
|
TConfig& ini = ca_config();
|
|
|
|
int y = 3;
|
|
short dlg = PEC_ANAL0; // id del primo campo da generare
|
|
short dlgd = PEC_DESANAL0;
|
|
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
|
|
if (level == "CDC") // Crea centro di costo
|
|
{
|
|
_cdc_start = dlg;
|
|
_cdc_end = _cdc_start + ca_multilevel_code_info(LF_CDC).levels()-1;
|
|
if (use_fsc && fasinfo.parent() == LF_CDC)
|
|
{
|
|
_fas_start = _cdc_end + 1;
|
|
_fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()- ca_multilevel_code_info(LF_COMMESSE).levels() - 1;
|
|
insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd);
|
|
}
|
|
else
|
|
insert_anal_fields(*this, 1, LF_CDC, y, dlg, dlgd);
|
|
}
|
|
else
|
|
if (level == "CMS") // Crea commessa
|
|
{
|
|
_cms_start = dlg;
|
|
_cms_end = _cms_start + ca_multilevel_code_info(LF_COMMESSE).levels()-1;
|
|
if (use_fsc && fasinfo.parent() == LF_COMMESSE)
|
|
{
|
|
_fas_start = _cms_end + 1 ;
|
|
_fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()- ca_multilevel_code_info(LF_COMMESSE).levels() - 1;
|
|
insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd);
|
|
}
|
|
else
|
|
insert_anal_fields(*this, 1, LF_COMMESSE, y, dlg, dlgd);
|
|
}
|
|
}
|
|
if (use_fsc && fasinfo.parent() <= 0)
|
|
{
|
|
_fas_start = dlg;
|
|
_fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()-1;
|
|
insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd);
|
|
}
|
|
}
|
|
}
|
|
|
|
int TSol_mask::insert_anal_fields(TMask& m, int page, int lf, int& y,
|
|
short& dlg, short& dlgd)
|
|
{
|
|
const int h = ca_create_fields(m, page, lf, 2, y, dlg, dlgd);
|
|
|
|
for (int i = 0; i < h; i++)
|
|
{
|
|
TEdit_field& fld = m.efield(dlg+i);
|
|
int logic = lf;
|
|
if (logic == LF_FASI)
|
|
{
|
|
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
|
|
if (fasinfo.parent() != 0)
|
|
{
|
|
const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent());
|
|
if (i < parinfo.levels())
|
|
logic = fasinfo.parent();
|
|
}
|
|
}
|
|
|
|
TEdit_field& dfld = m.efield(dlgd+i);
|
|
dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output!
|
|
|
|
}
|
|
|
|
y += h+1;
|
|
dlg += h; dlgd += h;
|
|
return h;
|
|
}
|
|
|
|
TSol_mask::~TSol_mask() {}
|
|
|
|
bool TSol_mask::get_sel_tot_saldo() const
|
|
{
|
|
return get(F_RIFIMPMIN) == "C";
|
|
}
|
|
|
|
real TSol_mask::get_sel_importo() const
|
|
{
|
|
return real(get(F_IMPORMIN));
|
|
}
|
|
|
|
const TToken_string & TSol_mask::get_anal_filter() const
|
|
{
|
|
TToken_string &f = get_tmp_string(100);
|
|
TString s;
|
|
TString codfase;
|
|
const TMultilevel_code_info & fasi = ca_multilevel_code_info(LF_FASI);
|
|
TConfig& cfg = ca_config();
|
|
bool full = false;
|
|
bool empty = true;
|
|
|
|
if (_cms_start > 0)
|
|
{
|
|
s.cut(0);
|
|
for (short dlg = _cms_start; dlg <= _cms_end; dlg++)
|
|
{
|
|
const int len = field(dlg).size();
|
|
TString val = get(dlg);
|
|
|
|
full |= val.full();
|
|
if (val.full())
|
|
val.rpad(len);
|
|
else
|
|
val.fill('?', len);
|
|
s << val;
|
|
}
|
|
}
|
|
if (full)
|
|
{
|
|
empty = false;
|
|
f.add(s);
|
|
}
|
|
else
|
|
f.add("");
|
|
if (_cdc_start > 0)
|
|
{
|
|
full = false;
|
|
s.cut(0);
|
|
for (short dlg = _cdc_start; dlg <= _cdc_end; dlg++)
|
|
{
|
|
const int len = field(dlg).size();
|
|
TString val = get(dlg);
|
|
|
|
full |= val.full();
|
|
if (val.full())
|
|
val.rpad(len);
|
|
else
|
|
val.fill('?', len);
|
|
s << val;
|
|
}
|
|
}
|
|
if (full)
|
|
{
|
|
empty = false;
|
|
f.add(s);
|
|
}
|
|
else
|
|
f.add("");
|
|
if (_fas_start > 0)
|
|
{
|
|
full = false;
|
|
s.cut(0);
|
|
for (short dlg = _fas_start; dlg <= _fas_end; dlg++)
|
|
{
|
|
const int len = field(dlg).size();
|
|
TString val = get(dlg);
|
|
|
|
full |= val.full();
|
|
if (val.full())
|
|
val.rpad(len);
|
|
else
|
|
val.fill('?', len);
|
|
s << val;
|
|
}
|
|
}
|
|
if (full)
|
|
{
|
|
empty = false;
|
|
f.add(s);
|
|
}
|
|
else
|
|
f.add("");
|
|
if (empty)
|
|
f.cut(0);
|
|
return f;
|
|
}
|
|
///////////////////////////////////////////////////////////
|
|
// TSol_row
|
|
///////////////////////////////////////////////////////////
|
|
|
|
TSol_row::TSol_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata)
|
|
:TESSL_row(row, data, imp, rata)
|
|
{
|
|
}
|
|
|
|
TSol_row::TSol_row(const char* desc, const TImporto& imp, const TValuta& val)
|
|
:TESSL_row(desc, imp, val)
|
|
{}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TSol_form: form speciale per solleciti
|
|
///////////////////////////////////////////////////////////
|
|
|
|
TSol_form::TSol_form(const TSol_mask& m, bool gesval, short id_datalim, short id_datascad, short id_ggrischio)
|
|
: TESSL_form(m, gesval, id_datalim, id_datascad, id_ggrischio)
|
|
{
|
|
_sel_tot_saldo = m.get_sel_tot_saldo();
|
|
_sel_importo = m.get_sel_importo();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TSol_array
|
|
///////////////////////////////////////////////////////////
|
|
|
|
TSol_array::TSol_array(const TPartita& game, const TSol_form* f)
|
|
:TESSL_array(game, f)
|
|
{
|
|
}
|
|
|
|
|