Alessandro Bonazzi
dbf7c77c0f
Files correlati : ca3.exe ca3100.msk ca3200.msk ca3300.msk ca3600.msk ca3700.msk ca3800.msk /ca3900.msk ca3900a.rep Commento : Corretta esportazione excel della stima ricavi per competenza
231 lines
6.6 KiB
C++
Executable File
231 lines
6.6 KiB
C++
Executable File
#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
|