campo-sirio/ve/ve0400.cpp
alex b8c66892bb Patch level : 2.2 262
Files correlati     :  ve0.exe
Ricompilazione Demo : [ ]
Commento            :

Bug 0000562

Implementare la possibilità di avere fino a 5 decimali sulle tabelle spese prestazioni etc


git-svn-id: svn://10.65.10.50/trunk@13595 c028cbd2-c16b-5b4b-a496-9718f37d4682
2005-12-08 03:05:30 +00:00

227 lines
5.5 KiB
C++
Executable File

#include <automask.h>
#include <modaut.h>
#include <printer.h>
#include <tabapp.h>
#include "vetbnum.h"
#include "../ca/calib01.h"
#include "vetbspp.h"
#include "vetbprs.h"
#include "vetbrss.h"
#include "vetbatr.h"
///////////////////////////////////////////////////////////
// TVendite_mask
///////////////////////////////////////////////////////////
class TVendite_mask : public TAutomask
{
TString4 _tab; // Voglio la tabella sempre sotto mano
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
bool is_table(const char* tab) const { return _tab == tab; }
void get_printer_config(TString& name) const;
bool get_printer_name(TString& name) const;
void reset_printer_config() const;
bool on_num_event(TOperable_field& o, TField_event e, long jolly);
public:
const TString& table_code() const { return _tab; }
TVendite_mask(const char* name);
virtual ~TVendite_mask() { }
};
void TVendite_mask::get_printer_config(TString& config) const
{
config = _tab;
for (TEditable_field* f = get_key_field(1, TRUE); f;
f = get_key_field(1, FALSE)) if (f->shown())
config << f->get();
}
bool TVendite_mask::get_printer_name(TString& name) const
{
TString config; get_printer_config(config);
TConfig ini(CONFIG_STAMPE, config);
name = ini.get("Name");
return name.not_empty();
}
void TVendite_mask::reset_printer_config() const
{
TString16 config; get_printer_config(config);
TConfig ini(CONFIG_STAMPE, config);
ini.remove_all();
}
bool TVendite_mask::on_num_event(TOperable_field& o, TField_event e, long jolly)
{
return true; //metodo che gestiva la stampante per le numerazioni documenti
}
bool TVendite_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
if (is_table("NUM"))
return on_num_event(o, e, jolly);
return TRUE;
}
TVendite_mask::TVendite_mask(const char* name) : TAutomask(name)
{
const TFixed_string n(name);
_tab = n.mid(4,3);
_tab.upper();
}
///////////////////////////////////////////////////////////
// TVendite_tabapp
///////////////////////////////////////////////////////////
class TVendite_tabapp : public TTable_application
{
virtual const char * extra_modules() const {return "dt";}
protected:
virtual TMask* set_mask(TMask* m);
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
public:
};
TMask* TVendite_tabapp::set_mask(TMask* m)
{
if (m == NULL)
{
TFilename mn; get_mask_name(mn);
TVendite_mask* vm = new TVendite_mask(mn);
if (has_module(CAAUT, CHK_DONGLE) || has_module(CMAUT, CHK_DONGLE))
{
// Crea i campi per i conti analitici (vendite e acquisti)
if (vm->table_code() == "SPP")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 11, SPP_CDC_V1, SPP_CDC_V1+10, 0x0, "S1");
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, SPP_CDC_A1, SPP_CDC_A1+10, 0x0, "S2");
} else
if (vm->table_code() == "PRS")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, PRS_CDC_V1, PRS_CDC_V1+10, 0x0, "S1");
} else
if (vm->table_code() == "RSS")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, RSS_CDC_V1, RSS_CDC_V1+10, 0x0, "S1");
}
if (vm->table_code() == "ATR")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, ATR_CDC_V1, ATR_CDC_V1+10, 0x0, "S1");
}
}
m = vm;
}
return TTable_application::set_mask(m);
}
void TVendite_tabapp::init_query_mode(TMask& m)
{
if (get_tabname() == "RSS")
{
m.enable(RSS_RAGSOC);
}
}
void TVendite_tabapp::init_insert_mode(TMask& m)
{
if (get_tabname() == "RSS")
{
m.disable(RSS_RAGSOC);
}
}
void TVendite_tabapp::init_modify_mode(TMask& m)
{
if (get_tabname() == "RSS")
{
m.disable(RSS_RAGSOC);
}
}
int TVendite_tabapp::read(TMask& m)
{
int err = Tab_application::read(m);
const TString & table_name = get_tabname();
if (get_relation()->lfile().get_real("R10") == ZERO)
if (table_name == "SPP")
m.set(SPP_PREZZO, get_relation()->lfile().get("R0"));
else
if (table_name == "PRS")
m.set(PRS_PREZZO, get_relation()->lfile().get("R0"));
else
if (table_name == "RSS")
m.set(RSS_PREZZO, get_relation()->lfile().get("R0"));
else
if (table_name == "ATR")
m.set(ATR_PREZZO, get_relation()->lfile().get("R0"));
return err;
}
int TVendite_tabapp::write(const TMask& m)
{
const TString & table_name = get_tabname();
if (table_name == "SPP")
get_relation()->lfile().put("R0", m.get(SPP_PREZZO));
else
if (table_name == "PRS")
get_relation()->lfile().put("R0", m.get(PRS_PREZZO));
else
if (table_name == "RSS")
get_relation()->lfile().put("R0", m.get(RSS_PREZZO));
else
if (table_name == "ATR")
get_relation()->lfile().put("R0", m.get(ATR_PREZZO));
return Tab_application::write(m);
}
int TVendite_tabapp::rewrite(const TMask& m)
{
const TString & table_name = get_tabname();
if (table_name == "SPP")
get_relation()->lfile().put("R0", m.get(SPP_PREZZO));
else
if (table_name == "PRS")
get_relation()->lfile().put("R0", m.get(PRS_PREZZO));
else
if (table_name == "RSS")
get_relation()->lfile().put("R0", m.get(RSS_PREZZO));
else
if (table_name == "ATR")
get_relation()->lfile().put("R0", m.get(ATR_PREZZO));
return Tab_application::rewrite(m);
}
int ve0400(int argc, char* argv[])
{
TVendite_tabapp vta;
vta.run(argc, argv, "Tabella Vendite");
return 0;
}