campo-sirio/src/sc/sc2402.cpp
bonazzi 2a32c54e5d Patch level : 12.0 336
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
2017-01-31 08:22:52 +00:00

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)
{
}