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; _fas_end;
protected: protected:
const TToken_string & get_anal_filter() const;
int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd); int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd);
public: 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(); TScad_mask();
virtual ~TScad_mask() = default; 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); TEdit_field& dfld = m.efield(dlgd + i);
dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output! dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output!
} }
y += h + 1; y += h + 1;
dlg += h; dlgd += h; dlg += h; dlgd += h;
@ -291,7 +296,7 @@ class TStampaScaduto : public TPrintapp
int _cur1, _cur2, // Identificatori dei cursori di lavoro... int _cur1, _cur2, // Identificatori dei cursori di lavoro...
_cur3, _cur4; _cur3, _cur4;
TSelection_ext_mask *_m; TScad_mask *_m;
tipo_st _tipost; // Tipo di stampa impostato tipo_st _tipost; // Tipo di stampa impostato
bool _end_printed, bool _end_printed,
@ -311,6 +316,8 @@ class TStampaScaduto : public TPrintapp
TDecoder _anal; TDecoder _anal;
TToken_string _anal_filter; TToken_string _anal_filter;
bool _select_analitica; bool _select_analitica;
bool _st_analitica;
static TString80 _last_game; static TString80 _last_game;
static bool fil_function(const TRelation *); static bool fil_function(const TRelation *);
@ -781,12 +788,99 @@ bool TStampaScaduto::preprocess_page(int file, int counter)
if (_pending_clifo) if (_pending_clifo)
{ {
set_page_clifoco(nriga); // Setta le righe per stampare le informazioni del cli/fo/conto set_page_clifoco(nriga); // Setta le righe per stampare le informazioni del cli/fo/conto
set_row(++nriga,""); set_row(++nriga, "");
nriga++; nriga++;
_pending_clifo = false; _pending_clifo = false;
} }
set_page_part(nriga); 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; return true;
@ -816,7 +910,7 @@ print_action TStampaScaduto::postprocess_page(int file, int counter)
void TStampaScaduto::on_firm_change() void TStampaScaduto::on_firm_change()
{ {
if (_m != NULL) if (_m != nullptr)
{ {
const bool valuta = ini_get_bool(CONFIG_DITTA, "cg", "GesVal"); const bool valuta = ini_get_bool(CONFIG_DITTA, "cg", "GesVal");
_m->enable(F_VALUTA, valuta); _m->enable(F_VALUTA, valuta);
@ -851,9 +945,9 @@ bool TStampaScaduto::user_create()
bool TStampaScaduto::user_destroy() bool TStampaScaduto::user_destroy()
{ {
if (_rel1) delete _rel1; safe_delete(_rel1);
if (_rel2) delete _rel2; safe_delete(_rel2);
if (_m) delete _m; safe_delete(_m);
_t.destroy(); _t.destroy();
_s_date.destroy(); _s_date.destroy();
return true; return true;
@ -872,8 +966,9 @@ bool TStampaScaduto::set_print(int)
if (rt) if (rt)
{ {
_anal_filter = _m->get_anal_filter(); _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(); _m->update_assoc();
reset_files(); reset_files();
reset_print(); reset_print();
@ -1081,7 +1176,6 @@ void TStampaScaduto::print_header()
o = 4; o = 4;
} }
set_header (soh++,FR("@73gAl %s Operazioni al %s"),(const char*)limscad, (const char*)limop); 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++, (const char *) rw);
set_header(soh++,FR("CODICE@18gC O G N O M E E N O M E ")); 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" 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"), "@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], (const char*)s1,scaglioni[0],scaglioni[1+o],scaglioni[2+o],
scaglioni[3+o],scaglioni[4+o],(const char*) s2, (const char*) s3); 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); set_header(soh++,(const char *)rw);
break; break;
} }
@ -1098,7 +1238,6 @@ void TStampaScaduto::print_header()
{ {
set_header(soh++,FR("@79g** SCADUTO **")); set_header(soh++,FR("@79g** SCADUTO **"));
set_header (soh++,FR("@73gAl %s Operazioni al %s"),(const char*)limscad, (const char*)limop); 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++, (const char *) rw);
set_header(soh++,FR("CONTO@18gD E S C R I Z I O N E")); 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" 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"), "@50gDocumento@67gNon Scaduto@112g%s@129g%s@148g%s@167g%s@185g%s"),
scaglioni[0],scaglioni[5],scaglioni[6], scaglioni[0],scaglioni[5],scaglioni[6],
scaglioni[7],scaglioni[8]); 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; break;
} }
default: default:
@ -1157,7 +1344,7 @@ void TStampaScaduto::set_page(int file, int counter)
TStampaScaduto::TStampaScaduto() : _note("", 200), _anal(LF_MOVANA, MOVANA_NUMREG, 3) TStampaScaduto::TStampaScaduto() : _note("", 200), _anal(LF_MOVANA, MOVANA_NUMREG, 3)
{ {
_rel1=_rel2=NULL; _rel1=_rel2=nullptr;
} }
int sc2300(int argc, char** argv) int sc2300(int argc, char** argv)

View File

@ -8,6 +8,7 @@
#define F_GIORNI 106 #define F_GIORNI 106
#define F_VALUTA 107 #define F_VALUTA 107
#define F_NOTE 108 #define F_NOTE 108
#define F_ANALITICA 109
#define SCAD_ANAL0 150 #define SCAD_ANAL0 150
#define SCAD_DESANAL0 175 #define SCAD_DESANAL0 175

View File

@ -72,6 +72,12 @@ BEGIN
HELP "Selezionare se si vuole la stampa delle note delle scadenze" HELP "Selezionare se si vuole la stampa delle note delle scadenze"
END END
BOOLEAN F_ANALITICA
BEGIN
PROMPT 23 8 "Stampa analitica"
HELP "Selezionare se si vuole dei codici di analitica"
END
RADIOBUTTON SC_CLIFO 20 RADIOBUTTON SC_CLIFO 20
BEGIN BEGIN
PROMPT 1 10 "Selezione" PROMPT 1 10 "Selezione"