1999-04-06 15:34:39 +00:00
|
|
|
#include <automask.h>
|
2005-04-21 16:40:40 +00:00
|
|
|
#include <modaut.h>
|
1999-04-06 15:34:39 +00:00
|
|
|
#include <printer.h>
|
|
|
|
#include <tabapp.h>
|
|
|
|
|
|
|
|
#include "vetbnum.h"
|
2009-02-26 23:46:50 +00:00
|
|
|
#include "velib.h"
|
2005-04-21 16:40:40 +00:00
|
|
|
#include "../ca/calib01.h"
|
|
|
|
|
|
|
|
#include "vetbspp.h"
|
|
|
|
#include "vetbprs.h"
|
|
|
|
#include "vetbrss.h"
|
|
|
|
#include "vetbatr.h"
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// TVendite_mask
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class TVendite_mask : public TAutomask
|
|
|
|
{
|
2005-04-21 16:40:40 +00:00
|
|
|
TString4 _tab; // Voglio la tabella sempre sotto mano
|
1999-04-06 15:34:39 +00:00
|
|
|
|
|
|
|
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:
|
2005-04-21 16:40:40 +00:00
|
|
|
const TString& table_code() const { return _tab; }
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
TVendite_mask(const char* name);
|
|
|
|
virtual ~TVendite_mask() { }
|
|
|
|
};
|
|
|
|
|
|
|
|
void TVendite_mask::get_printer_config(TString& config) const
|
|
|
|
{
|
|
|
|
config = _tab;
|
2009-03-02 11:13:06 +00:00
|
|
|
for (TEditable_field* f = get_key_field(1, TRUE); f; f = get_key_field(1, FALSE))
|
|
|
|
{
|
|
|
|
if (f->shown())
|
|
|
|
config << f->get();
|
|
|
|
}
|
1999-04-06 15:34:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TVendite_mask::get_printer_name(TString& name) const
|
|
|
|
{
|
2003-04-17 09:27:00 +00:00
|
|
|
TString config; get_printer_config(config);
|
1999-04-06 15:34:39 +00:00
|
|
|
TConfig ini(CONFIG_STAMPE, config);
|
2003-04-17 09:27:00 +00:00
|
|
|
name = ini.get("Name");
|
1999-04-06 15:34:39 +00:00
|
|
|
return name.not_empty();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TVendite_mask::reset_printer_config() const
|
|
|
|
{
|
2008-11-10 12:07:11 +00:00
|
|
|
TString config; get_printer_config(config);
|
1999-04-06 15:34:39 +00:00
|
|
|
TConfig ini(CONFIG_STAMPE, config);
|
|
|
|
ini.remove_all();
|
|
|
|
}
|
|
|
|
|
2009-02-26 23:46:50 +00:00
|
|
|
static TString16 __tab_codnum;
|
|
|
|
|
|
|
|
bool tab_tipodoc_ok(const TString & tipodoc)
|
|
|
|
{
|
|
|
|
const TString4 module(main_app().name().left(2));
|
|
|
|
const TTipo_documento& tipo = cached_tipodoc(tipodoc);
|
|
|
|
const TString & tipomod = tipo.module();
|
|
|
|
|
|
|
|
if (module == "ve" && tipomod.blank())
|
|
|
|
return true;
|
|
|
|
return tipomod == module;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool tab_tip_filter(const TRelation* r)
|
|
|
|
{
|
|
|
|
if (__tab_codnum.blank())
|
|
|
|
return true;
|
|
|
|
const TCodice_numerazione & cod_num = cached_numerazione(__tab_codnum);
|
|
|
|
const TString4 tipo = r->curr().get("CODTAB");
|
|
|
|
|
|
|
|
int last = cod_num.ntipi_doc();
|
|
|
|
for (int i = 0; i < last; i++ )
|
|
|
|
{
|
|
|
|
const TString & curtipo = cod_num.tipo_doc(i);
|
|
|
|
|
|
|
|
if (curtipo == tipo && tab_tipodoc_ok(curtipo))
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
bool TVendite_mask::on_num_event(TOperable_field& o, TField_event e, long jolly)
|
|
|
|
{
|
2009-02-26 23:46:50 +00:00
|
|
|
switch (o.dlg())
|
|
|
|
{
|
|
|
|
case F_CODNUM:
|
|
|
|
if (e == fe_modify)
|
|
|
|
__tab_codnum = o.get();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return true; //metodo che gestiva la stampante per le numerazioni documenti
|
1999-04-06 15:34:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
2008-11-10 12:07:11 +00:00
|
|
|
return true;
|
1999-04-06 15:34:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TVendite_mask::TVendite_mask(const char* name) : TAutomask(name)
|
|
|
|
{
|
|
|
|
const TFixed_string n(name);
|
|
|
|
_tab = n.mid(4,3);
|
|
|
|
_tab.upper();
|
2009-02-26 23:46:50 +00:00
|
|
|
if (is_table("NUM"))
|
|
|
|
{
|
|
|
|
TCursor * cur = efield(F_TIPODOC).browse()->cursor();
|
|
|
|
|
|
|
|
cur->set_filterfunction(tab_tip_filter);
|
|
|
|
}
|
1999-04-06 15:34:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// TVendite_tabapp
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class TVendite_tabapp : public TTable_application
|
|
|
|
{
|
2005-09-19 12:45:16 +00:00
|
|
|
|
|
|
|
virtual const char * extra_modules() const {return "dt";}
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
protected:
|
|
|
|
virtual TMask* set_mask(TMask* m);
|
2006-02-02 01:51:04 +00:00
|
|
|
virtual void add_anal_fields(TVendite_mask& vm);
|
2005-04-21 16:40:40 +00:00
|
|
|
virtual void init_query_mode(TMask& m);
|
|
|
|
virtual void init_insert_mode(TMask& m);
|
|
|
|
virtual void init_modify_mode(TMask& m);
|
2005-12-08 03:05:30 +00:00
|
|
|
virtual int read(TMask& m);
|
|
|
|
virtual int write(const TMask& m);
|
|
|
|
virtual int rewrite(const TMask& m);
|
|
|
|
|
2009-03-02 11:13:06 +00:00
|
|
|
bool is_table(const char* tab) const { return get_tabname() == tab; }
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
public:
|
|
|
|
};
|
|
|
|
|
2006-02-02 01:51:04 +00:00
|
|
|
void TVendite_tabapp::add_anal_fields(TVendite_mask& vm)
|
|
|
|
{
|
|
|
|
int y = 4;
|
|
|
|
short dlg = F_ANAL1;
|
|
|
|
int nfields = 0;
|
|
|
|
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
|
|
|
|
const TMultilevel_code_info& cominfo = ca_multilevel_code_info(LF_COMMESSE);
|
|
|
|
const TMultilevel_code_info& cdcinfo = ca_multilevel_code_info(LF_CDC);
|
|
|
|
int fasi_fields = fasinfo.levels();
|
|
|
|
const int cdc_fields = cdcinfo.levels();
|
|
|
|
const int com_fields = cominfo.levels();
|
|
|
|
const bool use_fsc = fasi_fields > 0;
|
|
|
|
|
|
|
|
if (use_fsc && fasinfo.parent() == LF_CDC)
|
|
|
|
{
|
|
|
|
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 20);
|
|
|
|
|
|
|
|
const int dlgf = dlg + com_fields;
|
|
|
|
fasi_fields -= com_fields;
|
|
|
|
const int offset = 61 - vm.field(dlgf).field()->from();
|
|
|
|
|
|
|
|
for (short i = 0 ; i< fasi_fields; i++)
|
|
|
|
{
|
|
|
|
TFieldref * fr = (TFieldref *) vm.field(dlgf + i).field();
|
|
|
|
|
|
|
|
if (fr != NULL)
|
|
|
|
{
|
|
|
|
TEdit_field & fld = vm.efield(dlgf + i);
|
|
|
|
TString16 str;
|
|
|
|
|
|
|
|
str.format("S1[%d,%d]", fr->from() + offset + 1, fr->to() + offset);
|
|
|
|
fld.set_field(str);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
nfields = ca_create_fields(vm, 1, LF_CDC, 2, y, dlg, dlg+50, 0x0, "S1", 20);
|
|
|
|
dlg += nfields;
|
|
|
|
y += nfields;
|
|
|
|
if (use_fsc && fasinfo.parent() == LF_COMMESSE)
|
|
|
|
{
|
|
|
|
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 40);
|
|
|
|
const int dlgf = dlg + com_fields;
|
|
|
|
fasi_fields -= com_fields;
|
|
|
|
const int offset = 60 - vm.field(dlgf).field()->from();
|
|
|
|
|
|
|
|
for (short i = 0 ; i < fasi_fields; i++)
|
|
|
|
{
|
|
|
|
TFieldref * fr = (TFieldref *) vm.field(dlgf + i).field();
|
|
|
|
|
|
|
|
if (fr != NULL)
|
|
|
|
{
|
|
|
|
TEdit_field & fld = vm.efield(dlgf + i);
|
|
|
|
TString16 str;
|
|
|
|
|
|
|
|
str.format("S1[%d,%d]", fr->from() + offset + 1, fr->to() + offset);
|
|
|
|
fld.set_field(str);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
nfields = ca_create_fields(vm, 1, LF_COMMESSE, 2, y, dlg, dlg+50, 0x0, "S1", 40);
|
|
|
|
dlg += nfields;
|
|
|
|
y += nfields;
|
|
|
|
if (use_fsc && fasinfo.parent() <= 0)
|
|
|
|
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 60);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
TMask* TVendite_tabapp::set_mask(TMask* m)
|
|
|
|
{
|
|
|
|
if (m == NULL)
|
|
|
|
{
|
|
|
|
TFilename mn; get_mask_name(mn);
|
2005-04-21 16:40:40 +00:00
|
|
|
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")
|
|
|
|
{
|
2006-02-02 01:51:04 +00:00
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 11, SPP_CDC_V1, SPP_CDC_V1+50, 0x0, "S1");
|
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, SPP_CDC_A1, SPP_CDC_A1+50, 0x0, "S2");
|
|
|
|
add_anal_fields(*vm);
|
2005-04-21 16:40:40 +00:00
|
|
|
} else
|
|
|
|
if (vm->table_code() == "PRS")
|
|
|
|
{
|
2006-05-10 12:54:46 +00:00
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 11, PRS_CDC_V1, PRS_CDC_V1+10, 0x0, "S1");
|
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 17, PRS_CDC_A1, PRS_CDC_A1+10, 0x0, "S2");
|
2006-02-02 01:51:04 +00:00
|
|
|
add_anal_fields(*vm);
|
2005-04-21 16:40:40 +00:00
|
|
|
} else
|
|
|
|
if (vm->table_code() == "RSS")
|
|
|
|
{
|
2005-07-20 14:58:52 +00:00
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, RSS_CDC_V1, RSS_CDC_V1+10, 0x0, "S1");
|
2006-02-02 01:51:04 +00:00
|
|
|
add_anal_fields(*vm);
|
2009-03-02 11:13:06 +00:00
|
|
|
} else
|
2005-04-21 16:40:40 +00:00
|
|
|
if (vm->table_code() == "ATR")
|
|
|
|
{
|
2005-07-20 14:58:52 +00:00
|
|
|
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, ATR_CDC_V1, ATR_CDC_V1+10, 0x0, "S1");
|
2006-02-02 01:51:04 +00:00
|
|
|
add_anal_fields(*vm);
|
2005-04-21 16:40:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
m = vm;
|
1999-04-06 15:34:39 +00:00
|
|
|
}
|
|
|
|
return TTable_application::set_mask(m);
|
|
|
|
}
|
|
|
|
|
2005-04-21 16:40:40 +00:00
|
|
|
void TVendite_tabapp::init_query_mode(TMask& m)
|
|
|
|
{
|
2009-03-02 11:13:06 +00:00
|
|
|
if (is_table("RSS"))
|
2005-04-21 16:40:40 +00:00
|
|
|
{
|
|
|
|
m.enable(RSS_RAGSOC);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TVendite_tabapp::init_insert_mode(TMask& m)
|
|
|
|
{
|
2009-03-02 11:13:06 +00:00
|
|
|
if (is_table("RSS"))
|
2005-04-21 16:40:40 +00:00
|
|
|
{
|
|
|
|
m.disable(RSS_RAGSOC);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TVendite_tabapp::init_modify_mode(TMask& m)
|
|
|
|
{
|
2009-03-02 11:13:06 +00:00
|
|
|
if (is_table("RSS"))
|
2005-04-21 16:40:40 +00:00
|
|
|
{
|
|
|
|
m.disable(RSS_RAGSOC);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-12-08 03:05:30 +00:00
|
|
|
int TVendite_tabapp::read(TMask& m)
|
|
|
|
{
|
|
|
|
int err = Tab_application::read(m);
|
2009-03-02 11:13:06 +00:00
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
const TRectype& curr = get_relation()->curr();
|
|
|
|
if (curr.get_real("R10").is_zero())
|
|
|
|
{
|
|
|
|
const TString& r0 = curr.get("R0");
|
|
|
|
if (is_table("SPP"))
|
|
|
|
m.set(SPP_PREZZO, r0); else
|
|
|
|
if (is_table("PRS"))
|
|
|
|
m.set(PRS_PREZZO, r0); else
|
|
|
|
if (is_table("RSS"))
|
|
|
|
m.set(RSS_PREZZO, r0); else
|
|
|
|
if (is_table("ATR"))
|
|
|
|
m.set(ATR_PREZZO, r0);
|
|
|
|
}
|
|
|
|
}
|
2005-12-08 03:05:30 +00:00
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TVendite_tabapp::write(const TMask& m)
|
|
|
|
{
|
2009-03-02 11:13:06 +00:00
|
|
|
const TString& table_name = get_tabname();
|
|
|
|
|
|
|
|
TRectype& curr = get_relation()->curr();
|
|
|
|
if (is_table("SPP"))
|
|
|
|
curr.put("R0", m.get(SPP_PREZZO)); else
|
|
|
|
if (is_table("PRS"))
|
|
|
|
curr.put("R0", m.get(PRS_PREZZO)); else
|
|
|
|
if (is_table("RSS"))
|
|
|
|
curr.put("R0", m.get(RSS_PREZZO)); else
|
|
|
|
if (is_table("ATR"))
|
|
|
|
curr.put("R0", m.get(ATR_PREZZO));
|
2005-12-08 03:05:30 +00:00
|
|
|
|
|
|
|
return Tab_application::write(m);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TVendite_tabapp::rewrite(const TMask& m)
|
|
|
|
{
|
2009-03-02 11:13:06 +00:00
|
|
|
const TString& table_name = get_tabname();
|
|
|
|
TRectype& curr = get_relation()->curr();
|
|
|
|
if (is_table("SPP"))
|
|
|
|
curr.put("R0", m.get(SPP_PREZZO)); else
|
|
|
|
if (is_table("PRS"))
|
|
|
|
curr.put("R0", m.get(PRS_PREZZO)); else
|
|
|
|
if (is_table("RSS"))
|
|
|
|
curr.put("R0", m.get(RSS_PREZZO)); else
|
|
|
|
if (is_table("ATR"))
|
|
|
|
curr.put("R0", m.get(ATR_PREZZO));
|
2005-12-08 03:05:30 +00:00
|
|
|
|
|
|
|
return Tab_application::rewrite(m);
|
|
|
|
}
|
|
|
|
|
1999-04-06 15:34:39 +00:00
|
|
|
int ve0400(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TVendite_tabapp vta;
|
2008-11-10 12:07:11 +00:00
|
|
|
vta.run(argc, argv, TR("Tabella Vendite"));
|
1999-04-06 15:34:39 +00:00
|
|
|
return 0;
|
|
|
|
}
|