campo-sirio/aec/vep1100.cpp
alex be6e11a0d2 Patch level : no patch
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Personalizzazione A&C


git-svn-id: svn://10.65.10.50/trunk@10639 c028cbd2-c16b-5b4b-a496-9718f37d4682
2002-11-19 10:41:29 +00:00

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;
}