Patch level : 12.00 1414

Files correlati     : sc2.exe sc2300.msk

Commento                :
Sampa codici analitica sulla stampa scaduto
This commit is contained in:
Alessandro Bonazzi 2026-07-19 10:07:49 +02:00
parent f1095a9a9a
commit d399fa5e3f
3 changed files with 223 additions and 29 deletions

View File

@ -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 *);
@ -787,6 +794,93 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
}
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,6 +1246,54 @@ 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]);
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;
}
@ -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)

View File

@ -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

View File

@ -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"