campo-sirio/src/ca/ca3900.cpp

231 lines
6.6 KiB
C++
Raw Normal View History

#include <applicat.h>
#include <defmask.h>
#include <repapp.h>
#include "ca3.h"
#include "ca3883.h"
#include "ca3883a.h"
#include "calib01.h"
#include "calib02.h"
#include "pconana.h"
#include "commesse.h"
////////////////////////////////////////////////////////
// MASCHERA
////////////////////////////////////////////////////////
class TPrint_stima_ricavi_mask : public TAnal_report_mask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TPrint_stima_ricavi_mask();
virtual ~TPrint_stima_ricavi_mask() {}
};
bool TPrint_stima_ricavi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_REPORT:
if (e == fe_init)
set_report_class();
break;
default:
break;
}
return TAnal_report_mask::on_field_event(o, e, jolly);
}
TPrint_stima_ricavi_mask::TPrint_stima_ricavi_mask()
:TAnal_report_mask("ca3900")
{
TConfig& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc");
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);
const int pconana_levels = pconana_info.levels();
int prefix = cfg.get_int("PdcPrefix");
if (prefix >= pconana_levels)
prefix = pconana_levels - 1;
// Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile
if (use_pdcc && prefix > 0)
{
const TMultilevel_code_info& info = ca_multilevel_code_info(LF_PCONANA);
const int levels = info.levels();
if (levels >= 2 && prefix < levels && esistono_riclassificazioni())
{
ca_create_fields(*this, 0, LF_PCONANA, 1, 13, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO);
// Nascondi i campi che non fanno parte del prefisso
for (int i = 0; i < levels; i++)
{
if (i < prefix)
{
field(F_PRE1 + i).check_type(CHECK_REQUIRED);
field(F_PRE1 + i).set_group(6);
field(F_PREDES1 + i).set_group(6);
}
else
{
field(F_PRE1 + i).hide();
field(F_PREDES1 + i).hide();
}
}
}
}
// setta gli handlers a tutti i campi generati della maschera;senza questa chiamata la on_field_event
// non puo' funzionare sui campi generati!!!
set_handlers();
}
///////////////////////////////////////////////////////////////
// RECORDSET
///////////////////////////////////////////////////////////////
class TPrint_stima_ricavi_recordset : public TPrint_saldana_recordset
{
public:
TPrint_stima_ricavi_recordset() : TPrint_saldana_recordset(9) {}
};
////////////////////////////////////////////////////////
// REPORT
////////////////////////////////////////////////////////
class TPrint_stima_ricavi_rep : public TAnal_report
{
protected:
// virtual bool set_recordset();
virtual bool get_usr_val(const TString& name, TVariant& var) const;
public:
// virtual const char * get_excel_header_section() override { return "H1"; }
virtual const char * get_excel_disabled_field() override { return "H0.100|H0.101|H0.201|H0.202|H0.203|H0.204|H0.205"; }
void set_filter(const TPrint_stima_ricavi_mask& msk);
};
bool TPrint_stima_ricavi_rep::get_usr_val(const TString& name, TVariant& var) const
{
return TAnal_report::get_usr_val(name, var);
}
void TPrint_stima_ricavi_rep::set_filter(const TPrint_stima_ricavi_mask& msk)
{
TPrint_stima_ricavi_recordset* recset = new TPrint_stima_ricavi_recordset();
recset->set_filter(msk);
TAnal_report::set_recordset(recset);
}
////////////////////////////////////////////////////////
// APPLICAZIONE
////////////////////////////////////////////////////////
class TPrint_stima_ricavi : public TReport_application
{
TPrint_stima_ricavi_mask* _mask;
TPrint_stima_ricavi_rep* _rep;
protected:
virtual TReport & get_report(const TAutomask & m);
virtual TTrec * get_dbase_recdesc(TReport & rep, const TAutomask & mask);
virtual TAutomask & get_mask();
virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type & type);
virtual const char * output_name(const TAutomask & mask, const TReport & rep) const { return "stimaric"; }
virtual bool user_destroy();
public:
TPrint_stima_ricavi() : _mask(nullptr), _rep(nullptr) {}
~TPrint_stima_ricavi() {}
public:
};
TReport & TPrint_stima_ricavi::get_report(const TAutomask & m)
{
if (_rep == nullptr)
_rep = new TPrint_stima_ricavi_rep;
_rep->load(_mask->get(DLG_REPORT));
return *_rep;
}
TAutomask & TPrint_stima_ricavi::get_mask()
{
if (_mask == nullptr)
_mask = new TPrint_stima_ricavi_mask;
return *_mask;
}
TTrec * TPrint_stima_ricavi::get_dbase_recdesc(TReport & rep, const TAutomask & mask)
{
TTrec * desc = new TTrec;
TToken_string def;
TRectype cms(LF_COMMESSE);
TRectype fasi(LF_FASI);
TRectype cdc(LF_CDC);
desc->add_fielddef(cms.rec_des(), COMMESSE_CODCMS);
desc->add_fielddef(cms.rec_des(), COMMESSE_DESCRIZ);
desc->add_fielddef(cms.rec_des(), COMMESSE_DATAINIZIO);
desc->add_fielddef(cms.rec_des(), COMMESSE_DATAFINE);
desc->add_fielddef("BUDGETC", _realfld, 18, 2);
desc->add_fielddef("MATURATOC", _realfld, 18, 2);
desc->add_fielddef("AVANZC", _realfld, 6, 2);
desc->add_fielddef("FILLER", _alfafld, 1);
desc->add_fielddef("BUDGETR", _realfld, 18, 2);
desc->add_fielddef("MATURATOR", _realfld, 18, 2);
desc->add_fielddef("ACCERT", _realfld, 18, 2);
desc->add_fielddef("INTEG5", _realfld, 18, 2);
desc->add_fielddef("MARGINE", _realfld, 18, 2);
desc->add_fielddef("AVANZ", _realfld, 6, 2);
desc->add_fielddef("FILLER1", _alfafld, 1);
desc->add_fielddef(cms.rec_des(), COMMESSE_CONTSEP);
TString keydef(COMMESSE_CODCMS);
desc->add_keydef(keydef, true);
return desc;
}
void TPrint_stima_ricavi::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type & type)
{
((TPrint_stima_ricavi_rep &)rep).set_filter((TPrint_stima_ricavi_mask &)mask);
book.add(rep, type);
}
bool TPrint_stima_ricavi::user_destroy()
{
safe_delete(_mask);
safe_delete(_rep);
return TReport_application::user_destroy();
}
int ca3900(int argc, char* argv[])
{
TPrint_stima_ricavi a;
a.run(argc, argv, TR("Stampa stima ricavi di competenza"));
return 0;
}
//Istruzioni per i programmi ca3800 e ca3900
//------------------------------------------
// CA_3800
// Gestore maschera ca3800 (Analisi Bilancio di Commessa)
// Creatore del report e dell'applicazione
// CA_3801
// Gestore dei report a colonne variabili (stampa in base a struttura scelta per il PCONANA). Serve solo per ca3800.
// CA_3883
// Gestore del recordset per il calcolo dei valori da mettere sulle stampe (<28> il nucleo dei programmi ca3800 e ca3900)
// CA_3900
// Gestore maschera ca3900 (Stima ricavi di competenza)
// Creatore del report e dell'applicazione