diff --git a/aec/vep1.cpp b/aec/vep1.cpp new file mode 100755 index 000000000..c26942224 --- /dev/null +++ b/aec/vep1.cpp @@ -0,0 +1,16 @@ +#include + +#include "vep1.h" + +int main(int argc, char** argv) +{ + int n = argc > 1 ? atoi(argv[1]+1) : 0; + switch(n) + { + case 0: + default: + vep1100(argc, argv); break; + } + exit(0); + return 0; +} \ No newline at end of file diff --git a/aec/vep1.h b/aec/vep1.h new file mode 100755 index 000000000..44d0c0301 --- /dev/null +++ b/aec/vep1.h @@ -0,0 +1 @@ +int vep1100(int argc, char* argv[]); diff --git a/aec/vep1.url b/aec/vep1.url new file mode 100755 index 000000000..9f3ac331e --- /dev/null +++ b/aec/vep1.url @@ -0,0 +1,9 @@ +#define APPNAME campo +#define QAPPNAME "campo" +#define QFIRMNAME "A.G.A. Informatica Srl" +#include + +#include + + + diff --git a/aec/vep1100.cpp b/aec/vep1100.cpp new file mode 100755 index 000000000..2537b6489 --- /dev/null +++ b/aec/vep1100.cpp @@ -0,0 +1,279 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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; +} diff --git a/aec/vep1100a.h b/aec/vep1100a.h new file mode 100755 index 000000000..ce6d85fb1 --- /dev/null +++ b/aec/vep1100a.h @@ -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 diff --git a/aec/vep1100a.uml b/aec/vep1100a.uml new file mode 100755 index 000000000..98eddd908 --- /dev/null +++ b/aec/vep1100a.uml @@ -0,0 +1,213 @@ +#include "vep1100a.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 + diff --git a/aec/vep1101f.ini b/aec/vep1101f.ini new file mode 100755 index 000000000..987e9d9aa --- /dev/null +++ b/aec/vep1101f.ini @@ -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= diff --git a/aec/vep1101s.ini b/aec/vep1101s.ini new file mode 100755 index 000000000..ea5d5c51b --- /dev/null +++ b/aec/vep1101s.ini @@ -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= diff --git a/aec/vep1102f.ini b/aec/vep1102f.ini new file mode 100755 index 000000000..20784b4da --- /dev/null +++ b/aec/vep1102f.ini @@ -0,0 +1,57 @@ +[MAIN] +DECSEP = . +FIELDSEP = +RECORDSEP = +RECORDSIZE = 121 +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 + diff --git a/aec/vep1102s.ini b/aec/vep1102s.ini new file mode 100755 index 000000000..254aaf05b --- /dev/null +++ b/aec/vep1102s.ini @@ -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 +