Patch level : 2.2 no patch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Creato il modulo personalizzazioni clienti


git-svn-id: svn://10.65.10.50/trunk@12719 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2005-02-18 15:19:23 +00:00
parent 6823f41d22
commit ecc2b72564
9 changed files with 806 additions and 0 deletions

16
ps/ps0816.cpp Executable file
View File

@ -0,0 +1,16 @@
#include <xvt.h>
#include "ps0816.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
ps0816100(argc, argv); break;
}
exit(0);
return 0;
}

1
ps/ps0816.h Executable file
View File

@ -0,0 +1 @@
int ps0816100(int argc, char* argv[]);

279
ps/ps0816100.cpp Executable file
View File

@ -0,0 +1,279 @@
#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 "ps0816.h"
#include "ps0816100a.h"
class TMaskPs0816 : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TMaskPs0816() : TAutomask("ps0816100a") { }
virtual ~TMaskPs0816() { }
};
bool TMaskPs0816::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 TListinoPs0816 : 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 TListinoPs0816::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 = "ps0816102"; // contiene la descrizione del file di testo
fileini << listino;
fileini << ".ini";
TFile_text file(filetxt, fileini);
confini = "ps0816101"; // 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 TListinoPs0816::mask2ini(TMask& m, bool load)
{
TConfig cfg(CONFIG_DITTA, "ps0816");
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 TListinoPs0816::main_loop()
{
TMaskps0816 m;
ini2mask(m);
while (m.run() == K_ENTER)
{
import_listino(m);
mask2ini(m);
}
}
int ps0816100(int argc, char* argv[])
{
TListinoPs0816 a;
a.run(argc, argv, "Caricamento listino personalizzato per AeC");
return 0;
}

30
ps/ps0816100a.h Executable file
View File

@ -0,0 +1,30 @@
#define F_LISTINO 101
#define F_SMARCA1 102
#define F_SMARCA2 103
#define F_SMARCA3 104
#define F_SMARCA4 105
#define F_SMARCA5 106
#define F_SMARCA6 107
#define F_SMARCA7 108
#define F_SMARCA8 109
#define F_SMARCA9 110
#define F_SMARCA10 111
#define F_SMARCA11 112
#define F_SMARCA12 113
#define F_SFILE 150
#define F_FMARCA1 202
#define F_FMARCA2 203
#define F_FMARCA3 204
#define F_FMARCA4 205
#define F_FMARCA5 206
#define F_FMARCA6 207
#define F_FMARCA7 208
#define F_FMARCA8 209
#define F_FMARCA9 210
#define F_FMARCA10 211
#define F_FMARCA11 212
#define F_FMARCA12 213
#define F_FFILE 250

213
ps/ps0816100a.uml Executable file
View File

@ -0,0 +1,213 @@
#include "ps0816100a.h"
PAGE "Caricamento listino personalizzato per AeC" -1 -1 78 15
LIST F_LISTINO 10
BEGIN
PROMPT 2 1 "Listino da caricare "
ITEM "F|Finpolo"
MESSAGE ENABLE,2@|DISABLE,1@|SHOW,2@|HIDE,1@
ITEM "S|Simonazzi"
MESSAGE ENABLE,1@|DISABLE,2@|SHOW,1@|HIDE,2@
END
GROUPBOX DLG_NULL 59 4
BEGIN
PROMPT 2 3 "Marche da caricare"
END
STRING F_SMARCA1 3
BEGIN
PROMPT 3 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA2 3
BEGIN
PROMPT 13 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA3 3
BEGIN
PROMPT 23 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA4 3
BEGIN
PROMPT 33 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA5 3
BEGIN
PROMPT 43 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA6 3
BEGIN
PROMPT 53 4 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA7 3
BEGIN
PROMPT 3 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA8 3
BEGIN
PROMPT 13 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA9 3
BEGIN
PROMPT 23 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA10 3
BEGIN
PROMPT 33 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA11 3
BEGIN
PROMPT 43 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SMARCA12 3
BEGIN
PROMPT 53 5 ""
FLAGS "U"
GROUP 1
END
STRING F_SFILE 100 45
BEGIN
PROMPT 2 8 "File da caricare "
CHECKTYPE REQUIRED
GROUP 1
END
STRING F_FMARCA1 3
BEGIN
PROMPT 3 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA2 3
BEGIN
PROMPT 13 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA3 3
BEGIN
PROMPT 23 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA4 3
BEGIN
PROMPT 33 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA5 3
BEGIN
PROMPT 43 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA6 3
BEGIN
PROMPT 53 4 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA7 3
BEGIN
PROMPT 3 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA8 3
BEGIN
PROMPT 13 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA9 3
BEGIN
PROMPT 23 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA10 3
BEGIN
PROMPT 33 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA11 3
BEGIN
PROMPT 43 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FMARCA12 3
BEGIN
PROMPT 53 5 ""
FLAGS "U"
GROUP 2
END
STRING F_FFILE 100 45
BEGIN
PROMPT 2 8 "File da caricare "
CHECKTYPE REQUIRED
GROUP 2
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

72
ps/ps0816101f.ini Executable file
View File

@ -0,0 +1,72 @@
[MAIN]
MARCA=3
CAMPOMARCA=MARCA
LISTINO=N
CARATTEREMARCA=_
[LF_CONDV]
TIPO=L
CATVEN=
COD=LF
DESCR=LISTINO FINPOLO
CODVAL=
CAMBIO=
DATACAM=
VALIN=
VALFIN=
IMPLORDI=
GESTUM=
GESTSCAGL=
GESTSCO=
SCONST=
CODLISSUCC=
SEQRIC=
DECIMALI=
[LF_RCONDV]
TIPO=L
CATVEN=
COD=LF
TIPORIGA=A
CODRIGA=
UM=
NSCAGL=
QLIM=
PREZZO=
SCONTO=
ADDIVA=
CODIVA=
PERCPROVV=
QOM=
QBASE=
CODARTOM=
PROMAGGIO=
UMOM=
[LF_ANAMAG]
CODART=
DESCR=
DESCRAGG=
CODARTALT=
COD_PMS=
GRMERC=
RAGGFIS=
CLASSEFIS=
ARTFIS=
CATCONA=
GRUPPOA=
CONTOA=
SOTTOCA=
CATCONV=
GRUPPOV=
CONTOV=
SOTTOCV=
UMP=
PESO=
[LF_UMART]
CODART=
NRIGA=1
UM=
FC=1
PREZZO=

72
ps/ps0816101s.ini Executable file
View File

@ -0,0 +1,72 @@
[MAIN]
MARCA=2
CAMPOMARCA=CODICE ARTICOLO
LISTINO=N
CARATTEREMARCA=_
[LF_CONDV]
TIPO=L
CATVEN=
COD=LS
DESCR=LISTINO SIMONAZZI
CODVAL=
CAMBIO=
DATACAM=
VALIN=
VALFIN=
IMPLORDI=
GESTUM=
GESTSCAGL=
GESTSCO=
SCONST=
CODLISSUCC=
SEQRIC=
DECIMALI=
[LF_RCONDV]
TIPO=L
CATVEN=
COD=LS
TIPORIGA=A
CODRIGA=
UM=
NSCAGL=
QLIM=
PREZZO=
SCONTO=
ADDIVA=
CODIVA=
PERCPROVV=
QOM=
QBASE=
CODARTOM=
PROMAGGIO=
UMOM=
[LF_ANAMAG]
CODART=
DESCR=
DESCRAGG=
CODARTALT=
COD_PMS=
GRMERC=
RAGGFIS=
CLASSEFIS=
ARTFIS=
CATCONA=
GRUPPOA=
CONTOA=
SOTTOCA=
CATCONV=
GRUPPOV=
CONTOV=
SOTTOCV=
UMP=
PESO=
[LF_UMART]
CODART=
NRIGA=1
UM=
FC=1
PREZZO=

57
ps/ps0816102f.ini Executable file
View File

@ -0,0 +1,57 @@
[MAIN]
DECSEP = .
FIELDSEP =
RECORDSEP =
RECORDSIZE = 135
SKIPLINES = 0
TYPEFIELD = 0
TYPELEN = 0
TYPEPOS = -1
[RECORD]
LENGTH(0) = 4
NAME(0) = MARCA
POSITION(0) = 0
LENGTH(1) = 20
NAME(1) = CODICE ARTICOLO
POSITION(1) = 4
FIELD(1) = CODRIGA
LENGTH(2) = 60
NAME(2) = DESCRIZIONE ARTICOLO
POSITION(2) = 24
LENGTH(3) = 0
NAME(3) = DESCRIZIONE 2
POSITION(3) = 54
LENGTH(4) = 8
NAME(4) = GRUPPO
POSITION(4) = 84
LENGTH(5) = 2
NAME(5) = CLASSE
POSITION(5) = 92
LENGTH(6) = 1
NAME(6) = STATO
POSITION(6) = 94
LENGTH(7) = 2
NAME(7) = UNITA DI MISURA
POSITION(7) = 95
FIELD(7) = UM
LENGTH(8) = 15
NAME(8) = PREZZO
POSITION(8) = 97
DECIMAL(8) = 3
FIELD(8) = PREZZO
LENGTH(9) = 7
NAME(9) = DIVISORE
POSITION(9) = 112
USE = 53

66
ps/ps0816102s.ini Executable file
View File

@ -0,0 +1,66 @@
[MAIN]
DECSEP = ,
FIELDSEP =
RECORDSEP =
RECORDSIZE = 124
SKIPLINES = 0
TYPEFIELD = 0
TYPELEN = 0
TYPEPOS = 0
[RECORD]
LENGTH(0) = 7
NAME(0) = INIZIO VALIDITA
POSITION(0) = 0
LENGTH(1) = 15
NAME(1) = CODICE ARTICOLO
POSITION(1) = 7
FIELD(1) = CODRIGA
LENGTH(2) = 35
NAME(2) = DESCRIZIONE ARTICOLO
POSITION(2) = 22
LENGTH(3) = 20
NAME(3) = DESCRIZIONE ABBREVIATA
POSITION(3) = 57
LENGTH(4) = 3
NAME(4) = FAMIGLIA DI VENDITA
POSITION(4) = 77
LENGTH(5) = 15
DECIMAL(5) = 3
NAME(5) = PREZZO
POSITION(5) = 80
FIELD(5) = PREZZO
LENGTH(6) = 2
NAME(6) = UNITA DI MISURA
POSITION(6) = 95
FIELD(6) = UM
LENGTH(7) = 15
NAME(7) = CODICE PRESSO FORNITORE
POSITION(7) = 97
LENGTH(8) = 6
NAME(8) = ALFANUMERICO
POSITION(8) = 112
LENGTH(9) = 1
NAME(9) = COMPORTAMENTO ARTICOLO
POSITION(9) = 118
LENGTH(10) = 2
NAME(10) = CODICE IVA ARTICOLO
POSITION(10) = 119
FIELD(10) = CODIVA
LENGTH(11) = 1
NAME(11) = GESTITO A MAGAZZINO
POSITION(11) = 121
USE = 53