Patch level : 12.00 1414
Files correlati : sc2.exe sc2300.msk Commento : Sampa codici analitica sulla stampa scaduto
This commit is contained in:
parent
f1095a9a9a
commit
d399fa5e3f
@ -75,10 +75,16 @@ class TScad_mask : public TSelection_ext_mask
|
||||
_fas_end;
|
||||
|
||||
protected:
|
||||
const TToken_string & get_anal_filter() const;
|
||||
int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd);
|
||||
|
||||
public:
|
||||
short cdc_start() const { return _cdc_start; }
|
||||
short cdc_end() const { return _cdc_end; }
|
||||
short cms_start() const { return _cms_start; }
|
||||
short cms_end() const { return _cms_end; }
|
||||
short fas_start() const { return _fas_start; }
|
||||
short fas_end() const { return _fas_end; }
|
||||
const TToken_string & get_anal_filter() const;
|
||||
TScad_mask();
|
||||
virtual ~TScad_mask() = default;
|
||||
};
|
||||
@ -253,7 +259,6 @@ int TScad_mask::insert_anal_fields(TMask& m, int page, int lf, int& y,
|
||||
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;
|
||||
@ -291,7 +296,7 @@ class TStampaScaduto : public TPrintapp
|
||||
int _cur1, _cur2, // Identificatori dei cursori di lavoro...
|
||||
_cur3, _cur4;
|
||||
|
||||
TSelection_ext_mask *_m;
|
||||
TScad_mask *_m;
|
||||
|
||||
tipo_st _tipost; // Tipo di stampa impostato
|
||||
bool _end_printed,
|
||||
@ -311,6 +316,8 @@ class TStampaScaduto : public TPrintapp
|
||||
TDecoder _anal;
|
||||
TToken_string _anal_filter;
|
||||
bool _select_analitica;
|
||||
bool _st_analitica;
|
||||
|
||||
|
||||
static TString80 _last_game;
|
||||
static bool fil_function(const TRelation *);
|
||||
@ -781,12 +788,99 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
|
||||
if (_pending_clifo)
|
||||
{
|
||||
set_page_clifoco(nriga); // Setta le righe per stampare le informazioni del cli/fo/conto
|
||||
set_row(++nriga,"");
|
||||
set_row(++nriga, "");
|
||||
nriga++;
|
||||
_pending_clifo = false;
|
||||
}
|
||||
set_page_part(nriga);
|
||||
}
|
||||
if (_st_analitica && r > 0) //Skip next partita if no fatture!
|
||||
{
|
||||
TRiga_partite& rp = p.riga(r);
|
||||
const TString& numregcg = rp.get(PART_NREG);
|
||||
const long numreg = atol(_anal.decode(numregcg));
|
||||
|
||||
if (numreg > 0)
|
||||
{
|
||||
TAnal_mov anal_mov(numreg);
|
||||
TRecord_array & rows = anal_mov.body();
|
||||
TAssoc_array cods;
|
||||
int nrows = rows.rows();
|
||||
|
||||
for (int r = 1; r <= nrows; r++)
|
||||
{
|
||||
const TRectype & row = rows[r];
|
||||
TToken_string cod(row.get(RMOVANA_CODCMS));
|
||||
int pos = 12;
|
||||
|
||||
cod.add(row.get(RMOVANA_CODCCOSTO));
|
||||
cod.add(row.get(RMOVANA_CODFASE));
|
||||
if (!cods.is_key(cod))
|
||||
{
|
||||
cods.add(cod);
|
||||
++nriga;
|
||||
if (_m->cms_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->cms_start(); dlg <= _m->cms_end(); dlg++)
|
||||
{
|
||||
TString format;
|
||||
int len = _m->field(dlg).size();
|
||||
TFieldref fld(*_m->field(dlg).field());
|
||||
|
||||
fld.set_name(RMOVANA_CODCMS);
|
||||
|
||||
const TString val = fld.read(row);
|
||||
|
||||
format << "@" << pos << "g%s";
|
||||
set_row(nriga, format, (const char *)val);
|
||||
if (len < (int)strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->cdc_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->cdc_start(); dlg <= _m->cdc_end(); dlg++)
|
||||
{
|
||||
TString format;
|
||||
int len = _m->field(dlg).size();
|
||||
TFieldref fld(*_m->field(dlg).field());
|
||||
|
||||
fld.set_name(RMOVANA_CODCCOSTO);
|
||||
|
||||
const TString val = fld.read(row);
|
||||
|
||||
|
||||
format << "@" << pos << "g%s";
|
||||
set_row(nriga, format, (const char *)val);
|
||||
if (len < (int)strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->fas_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->fas_start(); dlg <= _m->fas_end(); dlg++)
|
||||
{
|
||||
TString format;
|
||||
int len = _m->field(dlg).size();
|
||||
TFieldref fld(*_m->field(dlg).field());
|
||||
|
||||
fld.set_name(RMOVANA_CODFASE);
|
||||
|
||||
const TString val = fld.read(row);
|
||||
|
||||
format << "@" << pos << "g%s";
|
||||
set_row(nriga, format, (const char *)val);
|
||||
if (len < (int)strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -816,7 +910,7 @@ print_action TStampaScaduto::postprocess_page(int file, int counter)
|
||||
|
||||
void TStampaScaduto::on_firm_change()
|
||||
{
|
||||
if (_m != NULL)
|
||||
if (_m != nullptr)
|
||||
{
|
||||
const bool valuta = ini_get_bool(CONFIG_DITTA, "cg", "GesVal");
|
||||
_m->enable(F_VALUTA, valuta);
|
||||
@ -851,9 +945,9 @@ bool TStampaScaduto::user_create()
|
||||
|
||||
bool TStampaScaduto::user_destroy()
|
||||
{
|
||||
if (_rel1) delete _rel1;
|
||||
if (_rel2) delete _rel2;
|
||||
if (_m) delete _m;
|
||||
safe_delete(_rel1);
|
||||
safe_delete(_rel2);
|
||||
safe_delete(_m);
|
||||
_t.destroy();
|
||||
_s_date.destroy();
|
||||
return true;
|
||||
@ -872,8 +966,9 @@ bool TStampaScaduto::set_print(int)
|
||||
if (rt)
|
||||
{
|
||||
_anal_filter = _m->get_anal_filter();
|
||||
_select_analitica = (dongle().active(CAAUT) || dongle().active(CMAUT)) && _anal_filter.full();
|
||||
|
||||
_st_analitica = (dongle().active(CAAUT) || dongle().active(CMAUT));
|
||||
_select_analitica = _st_analitica && _anal_filter.full();
|
||||
_st_analitica &= _m->get_bool(F_ANALITICA);
|
||||
_m->update_assoc();
|
||||
reset_files();
|
||||
reset_print();
|
||||
@ -1081,7 +1176,6 @@ void TStampaScaduto::print_header()
|
||||
o = 4;
|
||||
}
|
||||
set_header (soh++,FR("@73gAl %s Operazioni al %s"),(const char*)limscad, (const char*)limop);
|
||||
rw.fill('-');
|
||||
set_header(soh++, (const char *) rw);
|
||||
set_header(soh++,FR("CODICE@18gC O G N O M E E N O M E "));
|
||||
set_header(soh++,FR("Riferim.@12gNumero@20gNumero@27gData@50gResiduo@102g"
|
||||
@ -1091,6 +1185,52 @@ void TStampaScaduto::print_header()
|
||||
"@50gDocumento@67gNon Scaduto@86g%s@112g%s@129g%s@148g%s@167g%s@185g%s@204g%s@223g%s"),
|
||||
(const char*)s1,scaglioni[0],scaglioni[1+o],scaglioni[2+o],
|
||||
scaglioni[3+o],scaglioni[4+o],(const char*) s2, (const char*) s3);
|
||||
if (_st_analitica)
|
||||
{
|
||||
int pos = 12;
|
||||
|
||||
rw.zap();
|
||||
if (_m->cms_start() > 0)
|
||||
{
|
||||
|
||||
for (short dlg = _m->cms_start(); dlg <= _m->cms_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->cdc_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->cdc_start(); dlg <= _m->cdc_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->fas_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->fas_start(); dlg <= _m->fas_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
set_header(soh++, rw);
|
||||
}
|
||||
rw.zap();
|
||||
rw.fill('-');
|
||||
set_header(soh++,(const char *)rw);
|
||||
break;
|
||||
}
|
||||
@ -1098,7 +1238,6 @@ void TStampaScaduto::print_header()
|
||||
{
|
||||
set_header(soh++,FR("@79g** SCADUTO **"));
|
||||
set_header (soh++,FR("@73gAl %s Operazioni al %s"),(const char*)limscad, (const char*)limop);
|
||||
rw.fill('-');
|
||||
set_header(soh++, (const char *) rw);
|
||||
set_header(soh++,FR("CONTO@18gD E S C R I Z I O N E"));
|
||||
set_header(soh++,FR("Riferim.@12gNumero@20gNumero@27gData@50gResiduo@102g"
|
||||
@ -1107,7 +1246,55 @@ void TStampaScaduto::print_header()
|
||||
"@50gDocumento@67gNon Scaduto@112g%s@129g%s@148g%s@167g%s@185g%s"),
|
||||
scaglioni[0],scaglioni[5],scaglioni[6],
|
||||
scaglioni[7],scaglioni[8]);
|
||||
set_header(soh++,(const char *)rw);
|
||||
if (_st_analitica)
|
||||
{
|
||||
int pos = 12;
|
||||
|
||||
rw.zap();
|
||||
if (_m->cms_start() > 0)
|
||||
{
|
||||
|
||||
for (short dlg = _m->cms_start(); dlg <= _m->cms_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->cdc_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->cdc_start(); dlg <= _m->cdc_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
if (_m->fas_start() > 0)
|
||||
{
|
||||
for (short dlg = _m->fas_start(); dlg <= _m->fas_end(); dlg++)
|
||||
{
|
||||
rw << "@" << pos << "g" << _m->field(dlg).prompt();
|
||||
int len = _m->field(dlg).size();
|
||||
|
||||
if (len < (int) strlen(_m->field(dlg).prompt()))
|
||||
len = strlen(_m->field(dlg).prompt());
|
||||
pos += len + 1;
|
||||
}
|
||||
}
|
||||
set_header(soh++, FR("@12gDocum.@20gProt.@27gDocumento@38gValuta"
|
||||
"@50gDocumento@67gNon Scaduto")
|
||||
);
|
||||
}
|
||||
rw.zap();
|
||||
rw.fill('-');
|
||||
set_header(soh++, (const char *)rw);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -1157,7 +1344,7 @@ void TStampaScaduto::set_page(int file, int counter)
|
||||
|
||||
TStampaScaduto::TStampaScaduto() : _note("", 200), _anal(LF_MOVANA, MOVANA_NUMREG, 3)
|
||||
{
|
||||
_rel1=_rel2=NULL;
|
||||
_rel1=_rel2=nullptr;
|
||||
}
|
||||
|
||||
int sc2300(int argc, char** argv)
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#define F_GIORNI 106
|
||||
#define F_VALUTA 107
|
||||
#define F_NOTE 108
|
||||
#define F_ANALITICA 109
|
||||
|
||||
#define SCAD_ANAL0 150
|
||||
#define SCAD_DESANAL0 175
|
||||
|
||||
@ -72,6 +72,12 @@ BEGIN
|
||||
HELP "Selezionare se si vuole la stampa delle note delle scadenze"
|
||||
END
|
||||
|
||||
BOOLEAN F_ANALITICA
|
||||
BEGIN
|
||||
PROMPT 23 8 "Stampa analitica"
|
||||
HELP "Selezionare se si vuole dei codici di analitica"
|
||||
END
|
||||
|
||||
RADIOBUTTON SC_CLIFO 20
|
||||
BEGIN
|
||||
PROMPT 1 10 "Selezione"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user