Patch level : 12.00 1384
Files correlati : sc2.exe sc2300a.msk Bug : Commento: Selezione analitica sulla stampa scaduto e stampa estratti conti
This commit is contained in:
parent
7f74c3f3c5
commit
b805a88a8e
@ -1,12 +1,17 @@
|
||||
#include <dongle.h>
|
||||
#include <modaut.h>
|
||||
#include <printer.h>
|
||||
#include <progind.h>
|
||||
|
||||
#include "../pr/agenti.h"
|
||||
#include "../ca/calib01.h"
|
||||
|
||||
#include "sc2101.h"
|
||||
#include "sc2100a.h"
|
||||
#include "sc21pec.h"
|
||||
|
||||
#include "../ca/movana.h"
|
||||
#include "../ca/rmovana.h"
|
||||
|
||||
bool TEC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
@ -21,9 +26,9 @@ bool TEC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
return true;
|
||||
break;
|
||||
case F_CODPROF:
|
||||
if (e == fe_close)
|
||||
if (e == fe_modify)
|
||||
{
|
||||
o.check_type(CHECK_REQUIRED);
|
||||
o.check_type(CHECK_NORMAL);
|
||||
|
||||
const bool ok = o.check();
|
||||
|
||||
@ -76,6 +81,8 @@ bool TEC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
update_checked();
|
||||
safe_delete(_form);
|
||||
set_export(false);
|
||||
form().stampa_saldo(stampa_saldo());
|
||||
form().anal_filter(get_anal_filter());
|
||||
|
||||
TForm_item& nec = form().find_field('H', odd_page, PEC_NUMPROG);
|
||||
|
||||
@ -99,13 +106,69 @@ bool TEC_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
return TSelection_mask::on_field_event(o, e, jolly);
|
||||
}
|
||||
|
||||
TEC_mask::TEC_mask(const char* name) : TSelection_mask(name), _ditta(LF_NDITTE), _ec_mail("sc2100b"), _form(nullptr), _games(nullptr), _export(false)
|
||||
TEC_mask::TEC_mask(const char* name) : TSelection_mask(name), _ditta(LF_NDITTE), _ec_mail("sc2100b"), _form(nullptr), _games(nullptr), _export(false), _anal(LF_MOVANA, MOVANA_NUMREG, 3)
|
||||
{
|
||||
_ditta.add(LF_ANAG, "TIPOA==TIPOA|CODANAGR==CODANAGR");
|
||||
_ditta.add(LF_COMUNI, "COM==COMRF(COMRES)", 1, LF_ANAG, 101);
|
||||
_ditta.add(LF_COMUNI, "COM==COMRES", 1, LF_ANAG, 102);
|
||||
_tiponumec = ini_get_string(CONFIG_DITTA, "cg", "NumEC")[0];
|
||||
_lastnumec = ini_get_long(CONFIG_DITTA, "cg", "LastEC");
|
||||
_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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEC_mask::~TEC_mask()
|
||||
@ -136,6 +199,36 @@ TESSL_form & TEC_mask::form()
|
||||
return *_form;
|
||||
}
|
||||
|
||||
int TEC_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;
|
||||
}
|
||||
|
||||
bool TEC_mask::print_selected()
|
||||
{
|
||||
@ -563,6 +656,8 @@ int TEC_mask::print_one(const char * tipo, const long codice)
|
||||
TWait_cursor hourglass;
|
||||
const bool printing = _form->printing();
|
||||
int printed = 0; // Non ho stampato ancora nulla
|
||||
TToken_string anal_filter = form().get_anal_filter();
|
||||
const bool select_analitica = (dongle().active(CAAUT) || dongle().active(CMAUT)) && anal_filter.full();
|
||||
|
||||
if (printing && _form->cursor()->curr().num() == LF_CLIFO)
|
||||
{
|
||||
@ -639,6 +734,52 @@ int TEC_mask::print_one(const char * tipo, const long codice)
|
||||
|
||||
TPartita game(curr);
|
||||
|
||||
if (select_analitica)
|
||||
{
|
||||
bool print = false;
|
||||
|
||||
for (int r = game.first(); !print && r <= game.last(); r = game.succ(r))
|
||||
{
|
||||
const TRiga_partite& row = game.riga(r);
|
||||
const TString& numregcg = row.get(PART_NREG);
|
||||
const long numreg = atol(_anal.decode(numregcg));
|
||||
|
||||
if (numreg > 0)
|
||||
{
|
||||
TAnal_mov anal_mov(numreg);
|
||||
TRecord_array & rows = anal_mov.body();
|
||||
const int nrows = rows.rows();
|
||||
TString s;
|
||||
|
||||
for (int i = 1; !print && i <= nrows; i++)
|
||||
{
|
||||
const TRectype & row = anal_mov.body().row(i);
|
||||
TString f = anal_filter.get(0);
|
||||
f.trim();
|
||||
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODCMS);
|
||||
print |= s.match(f);
|
||||
}
|
||||
f = anal_filter.get();
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODCCOSTO);
|
||||
print |= s.match(f);
|
||||
}
|
||||
f = anal_filter.get();
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODFASE);
|
||||
print |= s.match(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!print)
|
||||
return 0;
|
||||
}
|
||||
// Non fregare i clienti agli altri agenti!
|
||||
if (_games != nullptr && !_games->has_game(curr))
|
||||
continue;
|
||||
@ -712,3 +853,89 @@ int TEC_mask::print_one(const char * tipo, const long codice)
|
||||
xvtil_statbar_set(nullptr);
|
||||
return printed;
|
||||
}
|
||||
|
||||
const TToken_string & TEC_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;
|
||||
}
|
||||
|
@ -118,8 +118,6 @@ public:
|
||||
|
||||
void set_pagam(const TString& codpag);
|
||||
|
||||
|
||||
|
||||
TEC_recordset& recordset() const { CHECK(_export == true, "Not exporting"); return *_recordset; }
|
||||
|
||||
TEC_form(const TEC_mask& m, bool gesval);
|
||||
@ -136,13 +134,21 @@ class TEC_mask : public TSelection_mask
|
||||
long _lastnumec; // Ultimo numero EC 'G'
|
||||
TAssoc_array _lastnumcf; // Ultimo numero stampato 'A'
|
||||
bool _export;
|
||||
short _cdc_start,
|
||||
_cdc_end,
|
||||
_cms_start,
|
||||
_cms_end,
|
||||
_fas_start,
|
||||
_fas_end;
|
||||
TDecoder _anal;
|
||||
|
||||
protected: // TMask
|
||||
virtual void on_firm_change();
|
||||
virtual void start_run();
|
||||
|
||||
virtual TESSL_form & form() override;
|
||||
virtual const TToken_string & get_anal_filter() const override { return EMPTY_STRING; }
|
||||
int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd);
|
||||
const TToken_string & get_anal_filter() const;
|
||||
virtual bool some_to_print(const char * tipo, const long codice) override;
|
||||
virtual int print_one(const char * tipo, const long codice) override;
|
||||
bool print_selected(); // print selected items
|
||||
|
@ -1,6 +1,9 @@
|
||||
#include <printapp.h>
|
||||
#include <dongle.h>
|
||||
#include <modaut.h>
|
||||
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include "../ca/calib01.h"
|
||||
#include "sc2.h"
|
||||
#include "sc2201.h"
|
||||
#include "sc2300.h"
|
||||
@ -9,6 +12,8 @@
|
||||
#include <nditte.h>
|
||||
#include <partite.h>
|
||||
#include <pconti.h>
|
||||
#include "../ca/movana.h"
|
||||
#include "../ca/rmovana.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Log
|
||||
@ -60,6 +65,201 @@ TGameLog::~TGameLog()
|
||||
__trace(_str);
|
||||
}
|
||||
|
||||
class TScad_mask : public TSelection_ext_mask
|
||||
{
|
||||
short _cdc_start,
|
||||
_cdc_end,
|
||||
_cms_start,
|
||||
_cms_end,
|
||||
_fas_start,
|
||||
_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:
|
||||
TScad_mask();
|
||||
virtual ~TScad_mask() = default;
|
||||
};
|
||||
|
||||
TScad_mask::TScad_mask() : TSelection_ext_mask("sc2300a")
|
||||
{
|
||||
_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 = SCAD_ANAL0; // id del primo campo da generare
|
||||
short dlgd = SCAD_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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const TToken_string & TScad_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;
|
||||
}
|
||||
|
||||
int TScad_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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Stampa scaduto
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -108,6 +308,9 @@ class TStampaScaduto : public TPrintapp
|
||||
real _unsnc,_uns; // Unassigned per partita.
|
||||
TArray _t, // Array per i totali
|
||||
_s_date; // Date per lo scaduto
|
||||
TDecoder _anal;
|
||||
TToken_string _anal_filter;
|
||||
bool _select_analitica;
|
||||
|
||||
static TString80 _last_game;
|
||||
static bool fil_function(const TRelation *);
|
||||
@ -233,7 +436,54 @@ void TStampaScaduto::compute_all(TPartita& p, TBill& bill)
|
||||
|
||||
TGameLog gl(p);
|
||||
real residuo,nonscad,buonf,s1,s2,s3,s4,s5,s6,s7,res_pagati;
|
||||
TToken_string anal_filter = _anal_filter;
|
||||
|
||||
if (_select_analitica)
|
||||
{
|
||||
bool print = false;
|
||||
|
||||
for (int r = p.first(); !print && r <= p.last(); r = p.succ(r))
|
||||
{
|
||||
const TRiga_partite& row = p.riga(r);
|
||||
const TString& numregcg = row.get(PART_NREG);
|
||||
const long numreg = atol(_anal.decode(numregcg));
|
||||
|
||||
if (numreg > 0)
|
||||
{
|
||||
TAnal_mov anal_mov(numreg);
|
||||
TRecord_array & rows = anal_mov.body();
|
||||
const int nrows = rows.rows();
|
||||
TString s;
|
||||
|
||||
for (int i = 1; !print && i <= nrows; i++)
|
||||
{
|
||||
const TRectype & row = anal_mov.body().row(i);
|
||||
TString f = anal_filter.get(0);
|
||||
f.trim();
|
||||
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODCMS);
|
||||
print |= s.match(f);
|
||||
}
|
||||
f = anal_filter.get();
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODCCOSTO);
|
||||
print |= s.match(f);
|
||||
}
|
||||
f = anal_filter.get();
|
||||
if (f.full())
|
||||
{
|
||||
s = row.get(RMOVANA_CODFASE);
|
||||
print |= s.match(f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!print)
|
||||
return;
|
||||
}
|
||||
compute_unassigned(p);
|
||||
for (int r = p.last(); r > 0; r = p.pred(r)) // Browse all rows (partite)
|
||||
{
|
||||
@ -592,7 +842,7 @@ bool TStampaScaduto::user_create()
|
||||
_s_date.add(new TDate);
|
||||
|
||||
const bool valuta = ini_get_bool(CONFIG_DITTA, "cg", "GesVal");
|
||||
_m = new TSelection_ext_mask("sc2300a");
|
||||
_m = new TScad_mask;
|
||||
_m->enable(F_VALUTA, valuta);
|
||||
|
||||
enable_print_menu();
|
||||
@ -621,6 +871,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();
|
||||
|
||||
_m->update_assoc();
|
||||
reset_files();
|
||||
reset_print();
|
||||
@ -902,7 +1155,7 @@ void TStampaScaduto::set_page(int file, int counter)
|
||||
print_header();
|
||||
}
|
||||
|
||||
TStampaScaduto::TStampaScaduto() : _note("", 200)
|
||||
TStampaScaduto::TStampaScaduto() : _note("", 200), _anal(LF_MOVANA, MOVANA_NUMREG, 3)
|
||||
{
|
||||
_rel1=_rel2=NULL;
|
||||
}
|
||||
|
@ -9,3 +9,6 @@
|
||||
#define F_VALUTA 107
|
||||
#define F_NOTE 108
|
||||
|
||||
#define SCAD_ANAL0 150
|
||||
#define SCAD_DESANAL0 175
|
||||
|
||||
|
@ -185,4 +185,5 @@ BEGIN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -58,7 +58,7 @@ bool TESSL_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
|
||||
// Attiva la stampa del saldo partita
|
||||
form().stampa_saldo(stampa_saldo());
|
||||
form().anal_filter(get_anal_filter());
|
||||
form().anal_filter(get_anal_filter());
|
||||
|
||||
// filtra il cursore del form in modo che diventi uguale al cursor_sheet corrente
|
||||
// Qui sarebbe bello copiarsi l'indice dell'altro cursore
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <modaut.h>
|
||||
#include <printer.h>
|
||||
|
||||
TSol_mask::TSol_mask(const char *name) : _sol_mail("sc2400b"), TESSL_mask(name), _form(nullptr)
|
||||
TSol_mask::TSol_mask(const char *name) : _sol_mail("sc2400b"), TESSL_mask(name), _form(nullptr), _anal(LF_MOVANA, MOVANA_NUMREG, 3)
|
||||
{
|
||||
_cdc_start = 0;
|
||||
_cdc_end = 0;
|
||||
@ -230,7 +230,7 @@ bool TSol_mask::some_to_print(const char * tipo, const long codice)
|
||||
|
||||
int TSol_mask::print_one(const char * tipo, const long codice)
|
||||
{
|
||||
TSol_form & f = (TSol_form&)form();
|
||||
TSol_form& f = (TSol_form&)form();
|
||||
|
||||
// preparazione variabili per controllo lingua
|
||||
;
|
||||
@ -274,7 +274,6 @@ int TSol_mask::print_one(const char * tipo, const long codice)
|
||||
const TDate data_limite_scaduto = f.data_limite_scaduto();
|
||||
TToken_string anal_filter = form().get_anal_filter();
|
||||
const bool select_analitica = (dongle().active(CAAUT) || dongle().active(CMAUT)) && anal_filter.full();
|
||||
TDecoder anal(LF_MOVANA, MOVANA_NUMREG, 3);
|
||||
const TDate data_rischio = f.data_inizio_rischio();
|
||||
TAssoc_array games_in_range;
|
||||
|
||||
@ -311,11 +310,12 @@ int TSol_mask::print_one(const char * tipo, const long codice)
|
||||
if (select_analitica)
|
||||
{
|
||||
bool print = false;
|
||||
|
||||
for (int r = game.first(); !print && r <= game.last(); r = game.succ(r))
|
||||
{
|
||||
const TRiga_partite& row = game.riga(r);
|
||||
const TString& numregcg = row.get(PART_NREG);
|
||||
const long numreg = atol(anal.decode(numregcg));
|
||||
const long numreg = atol(_anal.decode(numregcg));
|
||||
|
||||
if (numreg > 0)
|
||||
{
|
||||
@ -372,7 +372,7 @@ int TSol_mask::print_one(const char * tipo, const long codice)
|
||||
}
|
||||
}
|
||||
*cur = savepos;
|
||||
cur->setkey(savekey);
|
||||
cur->setkey(savekey);
|
||||
return one_printed ? 1 : 0;
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,7 @@ class TSol_mask : public TESSL_mask
|
||||
_fas_start,
|
||||
_fas_end;
|
||||
TSol_form * _form;
|
||||
TDecoder _anal;
|
||||
|
||||
protected:
|
||||
int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd);
|
||||
|
Loading…
x
Reference in New Issue
Block a user