9da797d43f
Files correlati : ve0.exe ve0100n.msk vetbnar.msk Ricompilazione Demo : [ ] Commento : Aggiunto supporto per note articolo git-svn-id: svn://10.65.10.50/branches/R_10_00@21650 c028cbd2-c16b-5b4b-a496-9718f37d4682
254 lines
5.5 KiB
C++
Executable File
254 lines
5.5 KiB
C++
Executable File
#include "ve0.h"
|
|
|
|
#include <automask.h>
|
|
#include <colors.h>
|
|
#include <modtbapp.h>
|
|
#include <recset.h>
|
|
#include <tabmod.h>
|
|
|
|
#include "../cg/cglib01.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Applicazione per gestione maschere di modulo
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TVE_tab_mod_app : public TTable_module_application
|
|
{
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Maschera di gestione tabella CVM:
|
|
// Condizioni di vendita per categoria e gruppo merceologico
|
|
///////////////////////////////////////////////////////////
|
|
|
|
#include "vetbcvm.h"
|
|
|
|
class TCVM_mask : public TAutomask
|
|
{
|
|
protected:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
public:
|
|
TCVM_mask();
|
|
};
|
|
|
|
TCVM_mask::TCVM_mask() : TAutomask("vetbcvm")
|
|
{
|
|
TSheet_field& s = sfield(F_CVM_SHT);
|
|
s.set_nav_column(F_CVM_SOTTOCONTO, F_CVM_DESCONTO);
|
|
}
|
|
|
|
bool TCVM_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch(o.dlg())
|
|
{
|
|
case F_CVM_SHT:
|
|
switch (e)
|
|
{
|
|
case se_query_add:
|
|
case se_query_del:
|
|
return false; // Non sono ammesse aggiunte o cancellazioni
|
|
case se_notify_modify:
|
|
{
|
|
TSheet_field& s = (TSheet_field&)o;
|
|
TToken_string& row = s.row(jolly);
|
|
const long sc = row.get_long(s.cid2index(F_CVM_SOTTOCONTO));
|
|
if (sc > 0) // Colora le righe valide
|
|
s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, jolly);
|
|
else
|
|
s.set_back_and_fore_color(COLOR_INVALID, COLOR_INVALID, jolly);
|
|
}
|
|
break;
|
|
default: break;
|
|
}
|
|
default: break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
class TCVM_tab_app : public TRelation_application
|
|
{
|
|
TCVM_mask* _msk;
|
|
TRelation* _rel;
|
|
|
|
protected:
|
|
int find_cve(TSheet_field& s, const TString& cve) const;
|
|
|
|
public:
|
|
virtual TMask* get_mask(int) { return _msk; }
|
|
virtual TRelation* get_relation() const { return _rel; }
|
|
|
|
virtual bool user_create();
|
|
virtual bool user_destroy();
|
|
|
|
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);
|
|
virtual bool remove();
|
|
};
|
|
|
|
void TCVM_tab_app::init_query_mode(TMask& m)
|
|
{
|
|
m.enable(-2);
|
|
m.hide(-3);
|
|
}
|
|
|
|
void TCVM_tab_app::init_insert_mode(TMask& m)
|
|
{
|
|
m.disable(-2);
|
|
m.show(-3);
|
|
read(m);
|
|
}
|
|
|
|
void TCVM_tab_app::init_modify_mode(TMask& m)
|
|
{
|
|
m.disable(-2);
|
|
m.show(-3);
|
|
}
|
|
|
|
bool TCVM_tab_app::user_create()
|
|
{
|
|
_rel = new TRelation("CRA");
|
|
_msk = new TCVM_mask;
|
|
return true;
|
|
}
|
|
|
|
int TCVM_tab_app::find_cve(TSheet_field& s, const TString& cve) const
|
|
{
|
|
int mini = 0, maxi = s.items()-1, midi = 0;
|
|
|
|
TString8 code;
|
|
while (mini <= maxi)
|
|
{
|
|
midi = (mini+maxi) / 2;
|
|
s.row(midi).get(0, code);
|
|
const int cmp = code.compare(cve);
|
|
if (cmp == 0)
|
|
break;
|
|
if (cmp > 0)
|
|
maxi = midi-1;
|
|
else
|
|
mini = midi+1;
|
|
}
|
|
return code == cve ? midi : -1;
|
|
}
|
|
|
|
int TCVM_tab_app::read(TMask& m)
|
|
{
|
|
TSheet_field& s = m.sfield(F_CVM_SHT);
|
|
s.destroy();
|
|
|
|
const TString& code = m.get(F_CVM_COD);
|
|
if (code.full())
|
|
{
|
|
TISAM_recordset gm("USE CVE");
|
|
for (bool ok = gm.move_first(); ok; ok = gm.move_next())
|
|
{
|
|
TToken_string& row = s.row(-1);
|
|
row = gm.get("CODTAB").as_string();
|
|
row.add(gm.get("S0").as_string());
|
|
}
|
|
}
|
|
if (!s.empty())
|
|
{
|
|
TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
|
|
cvm.set_var("#COD", code);
|
|
TString8 cve;
|
|
for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
|
|
{
|
|
cve = cvm.get("CODTAB[4,5]").as_string();
|
|
const int i = find_cve(s, cve);
|
|
if (i >= 0)
|
|
{
|
|
const int gr = cvm.get("I0").as_int();
|
|
const int co = cvm.get("I1").as_int();
|
|
const long so = cvm.get("I2").as_int();
|
|
if (so > 0)
|
|
{
|
|
TBill zio(gr, co, so);
|
|
TToken_string& row = s.row(i);
|
|
zio.add_to(row, 2, 0x2);
|
|
s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return s.empty() ? _iskeynotfound : NOERR;
|
|
}
|
|
|
|
int TCVM_tab_app::write(const TMask& m)
|
|
{
|
|
TSheet_field& s = m.sfield(F_CVM_SHT);
|
|
TModule_table cvm("&CVM");
|
|
FOR_EACH_SHEET_ROW(s, i, row)
|
|
{
|
|
const TBill zio(*row, 2);
|
|
TString16 code = m.get(F_CVM_COD);
|
|
code << row->get(0);
|
|
cvm.put("CODTAB", code);
|
|
if (zio.ok())
|
|
{
|
|
cvm.put("I0", zio.gruppo());
|
|
cvm.put("I1", zio.conto());
|
|
cvm.put("I2", zio.sottoconto());
|
|
cvm.rewrite_write();
|
|
}
|
|
else
|
|
{
|
|
cvm.remove();
|
|
}
|
|
}
|
|
return NOERR;
|
|
}
|
|
|
|
int TCVM_tab_app::rewrite(const TMask& m)
|
|
{
|
|
return write(m);
|
|
}
|
|
|
|
bool TCVM_tab_app::remove()
|
|
{
|
|
const TString4 code = get_relation()->curr().get("CODTAB");
|
|
TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
|
|
cvm.set_var("#COD", code);
|
|
TLocalisamfile& f = cvm.cursor()->file();
|
|
for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
|
|
f.remove();
|
|
return true;
|
|
}
|
|
|
|
bool TCVM_tab_app::user_destroy()
|
|
{
|
|
delete _msk;
|
|
delete _rel;
|
|
return true;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Selettore applicazione per gestione maschere di modulo
|
|
///////////////////////////////////////////////////////////
|
|
|
|
int ve0600(int argc, char* argv[])
|
|
{
|
|
TString4 tab = argv[2];
|
|
tab.upper(); tab.strip("&");
|
|
|
|
if (tab == "CVM")
|
|
{
|
|
TCVM_tab_app a;
|
|
a.run(argc, argv, TR("Conti per categoria e gruppo"));
|
|
}
|
|
else
|
|
{
|
|
TVE_tab_mod_app a;
|
|
a.run(argc, argv, TR("Tabelle modulo vendite"));
|
|
}
|
|
return 0;
|
|
}
|
|
|