be6e11a0d2
Files correlati : Ricompilazione Demo : [ ] Commento : Personalizzazione A&C git-svn-id: svn://10.65.10.50/trunk@10639 c028cbd2-c16b-5b4b-a496-9718f37d4682
280 lines
7.2 KiB
C++
Executable File
280 lines
7.2 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <browfile.h>
|
|
#include <filetext.h>
|
|
#include <prefix.h>
|
|
#include <progind.h>
|
|
#include <recarray.h>
|
|
#include <tabutil.h>
|
|
#include <utility.h>
|
|
#include <viswin.h>
|
|
|
|
#include "vep1.h"
|
|
#include "vep1100a.h"
|
|
|
|
class TMaskVep1 : public TAutomask
|
|
{
|
|
protected:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
public:
|
|
TMaskVep1() : TAutomask("vep1100a") { }
|
|
virtual ~TMaskVep1() { }
|
|
};
|
|
|
|
bool TMaskVep1::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
const short id = o.dlg();
|
|
switch(id)
|
|
{
|
|
case F_SFILE:
|
|
case F_FFILE:
|
|
{
|
|
if (e == fe_modify || e == fe_close)
|
|
{
|
|
TFilename name = o.get();
|
|
if (!name.exist())
|
|
return error_box("File non valido");
|
|
}
|
|
break;
|
|
}
|
|
case F_LISTINO:
|
|
{
|
|
if (e == fe_modify || e == fe_close)
|
|
{
|
|
char listino = o.get()[0];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
class TListinoVep1 : public TSkeleton_application
|
|
{
|
|
protected:
|
|
virtual void main_loop();
|
|
|
|
public:
|
|
void mask2ini(TMask& m, bool load = FALSE);
|
|
void ini2mask(TMask& m) { mask2ini(m, TRUE); }
|
|
void import_listino(const TMask& m);
|
|
};
|
|
|
|
void TListinoVep1::import_listino(const TMask& m)
|
|
{
|
|
TString msg;
|
|
TString16 marca;
|
|
TString80 codart, campo;
|
|
TFilename filetxt;
|
|
bool caricalistino = TRUE;
|
|
|
|
const char listino = m.get(F_LISTINO)[0];
|
|
TAssoc_array marche;
|
|
if (listino == 'S')
|
|
{
|
|
for (short id = F_SMARCA1; id <= F_SMARCA12; id++)
|
|
{
|
|
TString16 marca = m.field(id).get();
|
|
if (!marca.blank())
|
|
marche.add((const char*) marca);
|
|
}
|
|
filetxt = m.get(F_SFILE);
|
|
}
|
|
else
|
|
{
|
|
for (short id = F_FMARCA1; id <= F_FMARCA12; id++)
|
|
{
|
|
TString16 marca = m.field(id).get();
|
|
if (!marca.blank())
|
|
marche.add((const char*) marca);
|
|
}
|
|
filetxt = m.get(F_FFILE);
|
|
}
|
|
msg = "Importazione listino ";
|
|
msg << filetxt;
|
|
TProgind pi(::fsize(filetxt), msg, TRUE, TRUE);
|
|
TString16 fileini, confini;
|
|
fileini = "vep1102"; // contiene la descrizione del file di testo
|
|
fileini << listino;
|
|
fileini << ".ini";
|
|
TFile_text file(filetxt, fileini);
|
|
confini = "vep1101"; // contiene i valori standard dei campi
|
|
confini << listino;
|
|
confini << ".ini";
|
|
TConfig config(confini);
|
|
TAssoc_array var_anamag = config.list_variables("LF_ANAMAG");
|
|
TAssoc_array var_umart = config.list_variables("LF_UMART");
|
|
TAssoc_array var_condv = config.list_variables("LF_CONDV");
|
|
TAssoc_array var_rcondv = config.list_variables("LF_RCONDV");
|
|
|
|
file.kill_zero_only();
|
|
|
|
long valid = 0;
|
|
|
|
//msg.insert("@b", 0);
|
|
|
|
TRelation rel(LF_RCONDV);
|
|
rel.add(LF_CONDV,"TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
|
|
rel.add(LF_ANAMAG,"CODART==CODART");
|
|
rel.add(LF_UMART,"CODART==CODART|UM==UM");
|
|
TLocalisamfile& rcondv = rel.lfile();
|
|
TLocalisamfile& condv = rel.lfile(LF_CONDV);
|
|
TLocalisamfile& anamag = rel.lfile(LF_ANAMAG);
|
|
TLocalisamfile& umart = rel.lfile(LF_UMART);
|
|
const int numcar = config.get_int("MARCA", "MAIN");
|
|
const char carattere = config.get_char("CARATTEREMARCA", "MAIN");
|
|
caricalistino = (config.get("LISTINO", "MAIN")[0] == 'S');
|
|
const TString80 campomarca = config.get("CAMPOMARCA", "MAIN");
|
|
TRecord_text curr;
|
|
while (file.read(curr) == NOERR)
|
|
{
|
|
pi.setstatus(file.read_file()->tellg());
|
|
if (pi.iscancelled())
|
|
break;
|
|
codart = file.get_field(curr, "CODICE ARTICOLO");
|
|
marca = file.get_field(curr, campomarca).sub(0,numcar);
|
|
if (listino == 'S')
|
|
{
|
|
TString80 strtmp = codart.sub(marca.len());
|
|
while (marca.len() < 3)
|
|
marca << ' ';
|
|
codart = marca;
|
|
codart << strtmp;
|
|
}
|
|
else
|
|
{
|
|
TString80 strtmp = marca;
|
|
strtmp << codart;
|
|
codart = strtmp;
|
|
}
|
|
marca.trim();
|
|
if (marche.is_key(marca))
|
|
{
|
|
while (marca.len() < 3)
|
|
{
|
|
TString80 strtmp = "";
|
|
strtmp << carattere << marca;
|
|
marca = strtmp;
|
|
}
|
|
if (caricalistino)
|
|
{
|
|
rcondv.zero();
|
|
rcondv.put("TIPO", "L");
|
|
rcondv.put("CATVEN", config.get("CATVEN","LF_RCONDV"));
|
|
rcondv.put("TIPOCF", "");
|
|
rcondv.put("CODCF", "");
|
|
rcondv.put("COD", config.get("COD","LF_RCONDV"));
|
|
rcondv.put("TIPORIGA", config.get("TIPORIGA","LF_RCONDV"));
|
|
rcondv.put("CODRIGA", codart);
|
|
rcondv.put("UM", config.get("UM","LF_RCONDV"));
|
|
rcondv.put("NSCAGL", config.get("NSCAGL","LF_RCONDV"));
|
|
if (!rcondv.read() == NOERR)
|
|
{
|
|
FOR_EACH_ASSOC_STRING(var_rcondv, obj, key, val)
|
|
rcondv.put(key,val);
|
|
}
|
|
if (listino == 'F')
|
|
{
|
|
const real divisore(file.get_field(curr, "DIVISORE"));
|
|
if (divisore > 1.00)
|
|
{
|
|
real prezzo = rcondv.get("PREZZO");
|
|
prezzo /= divisore;
|
|
rcondv.put("PREZZO", prezzo);
|
|
}
|
|
}
|
|
const int err = file.autosave(rel, curr);
|
|
valid++;
|
|
condv.zero();
|
|
FOR_EACH_ASSOC_STRING(var_condv, obj, key, val)
|
|
condv.put(key,val);
|
|
TRectype condv_curr = condv.curr();
|
|
if (!condv.read() == NOERR)
|
|
condv.write(condv_curr);
|
|
}
|
|
anamag.zero();
|
|
anamag.put("CODART", codart);
|
|
if (!anamag.read() == NOERR)
|
|
{
|
|
FOR_EACH_ASSOC_STRING(var_anamag, obj, key, val)
|
|
anamag.put(key,val);
|
|
anamag.put("CODART", codart);
|
|
anamag.put("DESCR", file.get_field(curr, "DESCRIZIONE ARTICOLO"));
|
|
anamag.put("GRMERC", marca);
|
|
anamag.write();
|
|
}
|
|
//config.set_paragraph("LF_UMART");
|
|
umart.zero();
|
|
umart.put("CODART", codart);
|
|
umart.put("NRIGA", 1);
|
|
int err = umart.read();
|
|
if (!err == NOERR)
|
|
{
|
|
FOR_EACH_ASSOC_STRING(var_umart, obj, key, val)
|
|
umart.put(key,val);
|
|
umart.put("CODART", codart);
|
|
umart.put("NRIGA", 1);
|
|
TString16 um = file.get_field(curr, "UNITA DI MISURA");
|
|
um.upper();
|
|
umart.put("UM", um);
|
|
umart.write();
|
|
err=NOERR;
|
|
}
|
|
if (!caricalistino)
|
|
if (err==NOERR)
|
|
{
|
|
real prezzo = file.get_field(curr, "PREZZO");
|
|
if (listino == 'F')
|
|
{
|
|
const real divisore(file.get_field(curr, "DIVISORE"));
|
|
|
|
if (divisore > 1.00)
|
|
prezzo /= divisore;
|
|
}
|
|
umart.put("PREZZO", prezzo);
|
|
umart.rewrite();
|
|
valid++;
|
|
}
|
|
}
|
|
}
|
|
warning_box("Operazione terminata: %d prezzi aggiornati", valid);
|
|
}
|
|
|
|
void TListinoVep1::mask2ini(TMask& m, bool load)
|
|
{
|
|
TConfig cfg(CONFIG_DITTA, "vep1");
|
|
TString16 id;
|
|
|
|
for (int f = m.fields()-1; f >= 0; f--)
|
|
{
|
|
TMask_field& fld = m.fld(f);
|
|
if (fld.is_edit())
|
|
{
|
|
id.format("%d", fld.dlg());
|
|
if (load)
|
|
fld.set(cfg.get(id));
|
|
else
|
|
cfg.set(id, fld.get());
|
|
}
|
|
}
|
|
}
|
|
|
|
void TListinoVep1::main_loop()
|
|
{
|
|
TMaskVep1 m;
|
|
ini2mask(m);
|
|
while (m.run() == K_ENTER)
|
|
{
|
|
import_listino(m);
|
|
mask2ini(m);
|
|
}
|
|
}
|
|
|
|
int vep1100(int argc, char* argv[])
|
|
{
|
|
TListinoVep1 a;
|
|
a.run(argc, argv, "Caricamento listino personalizzato per AeC");
|
|
return 0;
|
|
}
|