From 11f8358b10184cfe8d2483697202748e06babf78 Mon Sep 17 00:00:00 2001 From: angelo Date: Wed, 26 Aug 1998 13:47:50 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : Aggiunta importazione dati per condizioni di vendita: Listini/Contratti/Offerte (o Campagne) git-svn-id: svn://10.65.10.50/trunk@6994 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ibm36/ibm36100.cpp | 288 ++++++++++++++++++++++++++-- ibm36/ibm36100.uml | 14 +- ibm36/ibm36cvn.ini | 455 +++++++++++++++++++++++++++++++++++++++++++++ ibm36/ibm36tab.ini | 73 ++++++++ 4 files changed, 812 insertions(+), 18 deletions(-) create mode 100755 ibm36/ibm36cvn.ini diff --git a/ibm36/ibm36100.cpp b/ibm36/ibm36100.cpp index a927d4c39..8dfee0e55 100755 --- a/ibm36/ibm36100.cpp +++ b/ibm36/ibm36100.cpp @@ -126,6 +126,7 @@ public: void import_tables(const TFilename& name, TBrowsefile_field& bf); void import_clifor(const TFilename& name, TBrowsefile_field& bf); void import_anaart(const TFilename& name, TBrowsefile_field& bf); + void import_condv(const TFilename& name, TBrowsefile_field& bf); void import_movmag(const TFilename& name, TBrowsefile_field& bf); void import_rigmag(const TFilename& name, TBrowsefile_field& bf); }; @@ -234,7 +235,7 @@ void TTrasfer36::import_tables(const TFilename& name, TBrowsefile_field& bf) break; const TString& type = curr.type(); - if (type == "A26") + if (type == "A26") // Tabella banche { const TString& ann = file.get_field(curr, "ANNULLATO"); if (ann != "A") @@ -327,6 +328,29 @@ void TTrasfer36::import_tables(const TFilename& name, TBrowsefile_field& bf) } } } + else + if (type == "A11") // File testate listini + { + const TString& ann = file.get_field(curr, "ANNULLATO"); + if (ann != "A") + { + file.add_field(curr, "TIPO", "L"); + mettilavirgola(file, curr, "CAMBIO", 11, 5); + machedata(file, curr, "INIZIO VALIDITA"); + machedata(file, curr, "FINE VALIDITA"); + machedata(file, curr, "DATA CAMBIO"); + // TBI: traduzione campo SEQRIC per la sequenza di ricerca + const int err = file.autosave(curr); + if (err != NOERR) + { + msg = "! Errore di scrittura sul file LF_CONDV: "; + msg << err; + bf.add_line(msg); + } + else + valid++; + } + } } _bankitalia.update(); @@ -597,20 +621,11 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf) des.strip_d_spaces(); file.add_field(curr, "DESCRIZIONE ARTICOLO", des); - r = real(file.get_field(curr, "COSTO STANDARD")) / CENTO; - file.add_field(curr, "COSTO STANDARD", r.string()); - - r = real(file.get_field(curr, "TARA")) / CENTO; - file.add_field(curr, "TARA", r.string()); - - r = real(file.get_field(curr, "PESO")) / CENTO; - file.add_field(curr, "PESO", r.string()); - - r = real(file.get_field(curr, "PERCENTUALE PROVVIGIONE")) / CENTO; - file.add_field(curr, "PERCENTUALE PROVVIGIONE", r.string()); - - r = real(file.get_field(curr, "PERCENTUALE SCONTO")) / CENTO; - file.add_field(curr, "PERCENTUALE SCONTO", r.string()); + mettilavirgola(file, curr, "COSTO STANDARD", 11, 2); + mettilavirgola(file, curr, "TARA", 7, 2); + mettilavirgola(file, curr, "PESO", 7, 2); + mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2); + mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2); int err = file.autosave(rel, curr); if (err != NOERR) @@ -667,6 +682,245 @@ void TTrasfer36::import_anaart(const TFilename& name, TBrowsefile_field& bf) bf.add_line(""); } +void TTrasfer36::import_condv(const TFilename& name, TBrowsefile_field& bf) +{ + TString msg,des,cod; + msg = "Importazione Condizioni di vendita"; + TProgind pi(::fsize(name), msg, TRUE, TRUE); + TFile_text file(name, "ibm36cvn.ini"); + long valid = 0; + + msg.insert("@b", 0); + bf.add_line(msg); + bf.add_line(""); + + TRelation rel(LF_RCONDV); + rel.add(LF_CONDV,"TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD"); + TLocalisamfile& rcondv = rel.lfile(); + TLocalisamfile& condv= rel.lfile(LF_CONDV); + + TRecord_text curr; + while (file.read(curr) == NOERR) + { + pi.setstatus(file.read_file()->tellg()); + if (pi.iscancelled()) + break; + + const char stato_record = file.get_field(curr, "ANNULLATO")[0]; + if (stato_record == 'A') // ANNULLATO is always defined ;-) + continue; + + const char tipo_record = curr.type()[0]; + int err = NOERR; + file.add_field(curr, "TIPO ARCHIVIO", "A"); // E' sempre tipo rticolo ??? waiting for Morena's call... + switch (tipo_record) + { + case 'A': // Righe listini. Non necessitano di scrittura testata + case 'B': + file.add_field(curr, "TIPO", "L"); // Sostituisce + if (tipo_record == 'A') + { + mettilavirgola(file, curr, "QTA LIMITE SCAGLIONE", 11, 3); + mettilavirgola(file, curr, "PREZZO VENDITA", 11, 2); + mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2); + mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2); + mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3); + // Scrive o aggiorna tranquillamente i record di tipo "A", se vi sono + // record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO) + err = file.autosave(rel, curr); + } + else + { + mettilavirgola(file, curr, "PREZZO ARTICOLO OMAGGIO IN LIRE", 11, 2); + // Uff... in sto caso dobbiamo prima leggere il record corrispondente + // e se esiste assegnare solo i campi da aggiornare: + // CODARTOM CODLOTTO ADDIVA UMOM PROMAGGIO + rcondv.put("TIPO", "L"); + rcondv.put("CATVEN", file.get_field(curr,"CATEGORIA VENDITE")); + rcondv.put("COD", file.get_field(curr,"CODICE LISTINO")); + rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ?? + rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA")); + rcondv.put("UM", file.get_field(curr,"UNITA MISURA")); + rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE")); + + if (rcondv.read() == NOERR) // Se esiste il record lo aggiorna... + { + rcondv.put("CODARTOM", file.get_field(curr,"CODICE ARTICOLO OMAGGIO")); + rcondv.put("CODLOTTO", file.get_field(curr,"CODICE LOTTO")); + rcondv.put("ADDIVA", file.get_field(curr,"ADDEBITO IVA OMAGGIO")); + rcondv.put("UMOM", file.get_field(curr,"UM QTA IN OMAGGIO")); + rcondv.put("PROMAGGIO", file.get_field(curr,"PREZZO ARTICOLO OMAGGIO IN LIRE")); + rcondv.rewrite(); + } + else + err = file.autosave(rel, curr); // Se non esiste lo scrive cosi' com'e' + } + + if (err != NOERR) + { + msg = "! Errore di scrittura righe listini sul file LF_RCONDV: "; + msg << err; + bf.add_line(msg); + } + else + valid++; + break; + case 'C': // Righe campagne (offerte nel nostro caso) + case 'D': + file.add_field(curr, "TIPO", "O"); // Sostituisce + cod = file.get_field(curr,"CODICE"); + if (tipo_record == 'C') + { + mettilavirgola(file, curr, "QTA LIMITE SCAGLIONE", 11, 3); + mettilavirgola(file, curr, "PREZZO NETTO", 11, 2); + mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2); + mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2); + mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3); + // Scrive o aggiorna tranquillamente i record di tipo "A": se vi sono + // record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO) + err = file.autosave(rel, curr); + // Scrive la testata... ma solo se non esiste: + if (err == NOERR) + { + if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata? + { + des = "Offerta "; + des << cod; + condv.put("TIPO","O"); + condv.put("CATVEN",""); + condv.put("TIPOCF",""); + condv.put("CODCF", ""); + condv.put("COD",cod); + condv.put("DESCR", des); + condv.put("VALIN",file.get_field(curr,"VALIDITA INIZIALE")); + condv.put("VALFIN",file.get_field(curr,"VALIDITA FINALE")); + if (condv.write() != NOERR) // Allora la scrive... + { + msg.format("! Errore %d di scrittura testata offerte sul file LF_CONDV: %s", condv.status(), (const char*) cod); + bf.add_line(msg); + } + } + } + } + else + { + mettilavirgola(file, curr, "PREZZO ARTICOLO OMAGGIO IN LIRE", 11, 2); + rcondv.put("TIPO", "O"); + rcondv.put("CATVEN", ""); + rcondv.put("COD", cod); + rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ?? + rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA")); + rcondv.put("UM", file.get_field(curr,"UNITA MISURA")); + rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE")); + + if (rcondv.read() == NOERR) // Se esiste il record lo aggiorna... + { + rcondv.put("CODARTOM", file.get_field(curr,"CODICE ARTICOLO OMAGGIO")); + rcondv.put("CODLOTTO", file.get_field(curr,"CODICE LOTTO")); + rcondv.put("ADDIVA", file.get_field(curr,"ADDEBITO IVA OMAGGIO")); + rcondv.put("UMOM", file.get_field(curr,"UM QTA IN OMAGGIO")); + rcondv.put("PROMAGGIO", file.get_field(curr,"PREZZO ARTICOLO OMAGGIO IN LIRE")); + rcondv.rewrite(); + } + else + err = file.autosave(rel, curr); // Se non esiste lo scrive cosi' com'e' + } + if (err != NOERR) + { + msg = "! Errore di scrittura righe offerte sul file LF_RCONDV: "; + msg << err; + bf.add_line(msg); + } + else + valid++; + break; + case 'E': // Righe contratti + case 'F': + { + file.add_field(curr, "TIPO", "C"); // Sostituisce + const char* tipocf = (atol(file.get_field(curr,"TIPO ANAGRAFICA")) & 0x1) ? "C" : "F"; + const long codcf = atol(file.get_field(curr, "CODICE CLIENTE")); + cod = file.get_field(curr,"NUMERO CONTRATTO"); + file.add_field(curr, "TIPO ANAGRAFICA", tipocf); + if (tipo_record == 'E') + { + mettilavirgola(file, curr, "QTA LIMITE SCAGLIONE", 11, 3); + mettilavirgola(file, curr, "PREZZO VENDITA", 11, 2); + mettilavirgola(file, curr, "PERCENTUALE SCONTO", 5, 2); + mettilavirgola(file, curr, "PERCENTUALE PROVVIGIONE", 5, 2); + mettilavirgola(file, curr, "QTA MERCE SCONTATA", 9, 3); + // Scrive o aggiorna tranquillamente i record di tipo "A": se vi sono + // record omaggio vengono dopo, (cfr FLAG PRESENZA ARTICOLO OMAGGIO) + err = file.autosave(rel, curr); + + // Scrive la testata... ma solo se non esiste: + if (err == NOERR) + { + if (!rel.is_first_match(LF_CONDV)) // ... non esiste la testata? + { + des = "Contratto "; + des << cod; + condv.put("TIPO","C"); + condv.put("CATVEN",""); + condv.put("TIPOCF",tipocf); + condv.put("CODCF", codcf); + condv.put("COD",cod); + condv.put("DESCR", des); + if (condv.write() != NOERR) // Allora la scrive... + { + msg.format("! Errore %d di scrittura testata contratti sul file LF_CONDV: %s", condv.status(), (const char*) cod); + bf.add_line(msg); + } + } + } + } + else + { + mettilavirgola(file, curr, "PREZZO ARTICOLO OMAGGIO IN LIRE", 11, 2); + rcondv.put("TIPO", "C"); + rcondv.put("TIPOCF", tipocf); + rcondv.put("CODCF", codcf); + rcondv.put("CATVEN", ""); + rcondv.put("COD", cod); + rcondv.put("TIPORIGA", "A"); // See above... waiting for Morena's call ?? + rcondv.put("CODRIGA", file.get_field(curr,"CHIAVE RIGA")); + rcondv.put("UM", file.get_field(curr,"UNITA MISURA")); + rcondv.put("NSCAGL", file.get_field(curr,"NUMERO SCAGLIONE")); + + if (rcondv.read() == NOERR) // Se esiste il record lo aggiorna... + { + rcondv.put("CODARTOM", file.get_field(curr,"CODICE ARTICOLO OMAGGIO")); + rcondv.put("CODLOTTO", file.get_field(curr,"CODICE LOTTO")); + rcondv.put("ADDIVA", file.get_field(curr,"ADDEBITO IVA OMAGGIO")); + rcondv.put("UMOM", file.get_field(curr,"UM QTA IN OMAGGIO")); + rcondv.put("PROMAGGIO", file.get_field(curr,"PREZZO ARTICOLO OMAGGIO IN LIRE")); + rcondv.rewrite(); + } + else + err = file.autosave(rel, curr); // Se non esiste lo scrive cosi' com'e' + } + if (err != NOERR) + { + msg = "! Errore di scrittura righe contratti sul file LF_RCONDV: "; + msg << err; + bf.add_line(msg); + } + else + valid++; + break; + } + default: + break; + } + } + + // Messaggio finale di elaborazione + msg = "Record importati: "; + msg << valid; + bf.add_line(msg); + bf.add_line(""); +} + void TTrasfer36::import_movmag(const TFilename& name, TBrowsefile_field& bf) { TString msg, str; @@ -849,9 +1103,8 @@ void TTrasfer36::main_loop() while (m.run() == K_ENTER) { vw.destroy_lines(); - const TFilename dir = m.get(100); - for (short id = 101; id <= 105; id++) + for (short id = 101; id <= 106; id++) { const TMask_field& fld = m.field(id); if (fld.enabled() && !fld.empty()) @@ -865,6 +1118,7 @@ void TTrasfer36::main_loop() case 103: import_anaart(name, bf); break; case 104: import_movmag(name, bf); break; case 105: import_rigmag(name, bf); break; + case 106: import_condv(name, bf); break; default : break; } } diff --git a/ibm36/ibm36100.uml b/ibm36/ibm36100.uml index b03c2622d..63950572f 100755 --- a/ibm36/ibm36100.uml +++ b/ibm36/ibm36100.uml @@ -80,9 +80,21 @@ BEGIN PROMPT 47 4 "" END +BOOLEAN 206 +BEGIN + PROMPT 1 5 "Cond. v." + MESSAGE FALSE DISABLE,106 + MESSAGE TRUE ENABLE,106 +END + +STRING 106 16 +BEGIN + PROMPT 13 5 "" +END + BROWSEFILE 300 -3 -1 BEGIN - PROMPT 0 5 "" + PROMPT 0 6 "" FLAGS "R" END diff --git a/ibm36/ibm36cvn.ini b/ibm36/ibm36cvn.ini new file mode 100755 index 000000000..e8bc04508 --- /dev/null +++ b/ibm36/ibm36cvn.ini @@ -0,0 +1,455 @@ +[MAIN] +TYPEPOS = 1 +TYPELEN = 1 + +[RECORD A] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 2 +LENGTH(3) = 2 +LENGTH(4) = 1 +LENGTH(5) = 19 +LENGTH(6) = 6 +LENGTH(7) = 2 +LENGTH(8) = 1 +LENGTH(9) = 5 +LENGTH(10) = 11 +LENGTH(11) = 11 +LENGTH(12) = 5 +LENGTH(13) = 5 +LENGTH(14) = 9 +LENGTH(15) = 7 +LENGTH(16) = 1 +LENGTH(17) = 11 +LENGTH(18) = 7 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = CATEGORIA VENDITE +NAME(3) = CODICE LISTINO +NAME(4) = TIPO ARCHIVIO +NAME(5) = CHIAVE RIGA +NAME(6) = CODICE LOTTO +NAME(7) = UNITA MISURA +NAME(8) = NUMERO SCAGLIONE +NAME(9) = FILLER +NAME(10) = QTA LIMITE SCAGLIONE +NAME(11) = PREZZO VENDITA +NAME(12) = PERCENTUALE SCONTO +NAME(13) = PERCENTUALE PROVVIGIONE +NAME(14) = QTA MERCE SCONTATA +NAME(15) = QTA BASE PER SCONTO +NAME(16) = FLAG PRESENZA ARTICOLO OMAGGIO +NAME(17) = PREZZO NETTO DA VALUTA +NAME(18) = ULTIMO AGGIORNAMENTO + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 4 +POSITION(4) = 6 +POSITION(5) = 7 +POSITION(6) = 26 +POSITION(7) = 32 +POSITION(8) = 34 +POSITION(9) = 35 +POSITION(10) = 40 +POSITION(11) = 51 +POSITION(12) = 62 +POSITION(13) = 72 +POSITION(14) = 77 +POSITION(15) = 86 +POSITION(16) = 93 +POSITION(17) = 94 +POSITION(18) = 105 + +FIELD(1) = TIPO +FIELD(2) = CATVEN +FIELD(3) = COD +FIELD(4) = TIPORIGA +FIELD(5) = CODRIGA +FIELD(6) = CODLOTTO +FIELD(7) = UM +FIELD(8) = NSCAGL +FIELD(10) = QLIM +FIELD(11) = PREZZO +FIELD(12) = SCONTO +FIELD(13) = PERCPROVV +FIELD(14) = QOM +FIELD(15) = QBASE + +[RECORD B] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 2 +LENGTH(3) = 2 +LENGTH(4) = 1 +LENGTH(5) = 19 +LENGTH(6) = 6 +LENGTH(7) = 2 +LENGTH(8) = 1 +LENGTH(9) = 5 +LENGTH(10) = 19 +LENGTH(11) = 6 +LENGTH(12) = 2 +LENGTH(13) = 1 +LENGTH(14) = 2 +LENGTH(15) = 11 +LENGTH(16) = 11 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = CATEGORIA VENDITE +NAME(3) = CODICE LISTINO +NAME(4) = TIPO ARCHIVIO +NAME(5) = CHIAVE RIGA +NAME(6) = CODICE LOTTO +NAME(7) = UNITA MISURA +NAME(8) = NUMERO SCAGLIONE +NAME(9) = FILLER +NAME(10) = CODICE ARTICOLO OMAGGIO +NAME(11) = CODICE LOTTO TAGLIA +NAME(12) = CODICE ASS FISCALE +NAME(13) = ADDEBITO IVA OMAGGIO +NAME(14) = UM QTA IN OMAGGIO +NAME(15) = PREZZO ARTICOLO OMAGGIO IN LIRE +NAME(16) = PREZZO ARTICOLO OMAGGIO IN VALUTA + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 4 +POSITION(4) = 6 +POSITION(5) = 7 +POSITION(6) = 26 +POSITION(7) = 32 +POSITION(8) = 34 +POSITION(9) = 35 +POSITION(10) = 40 +POSITION(11) = 59 +POSITION(12) = 65 +POSITION(13) = 67 +POSITION(14) = 68 +POSITION(15) = 70 +POSITION(16) = 82 + +FIELD(1) = TIPO +FIELD(2) = CATVEN +FIELD(3) = COD +FIELD(4) = TIPORIGA +FIELD(5) = CODRIGA +FIELD(6) = CODLOTTO +FIELD(7) = UM +FIELD(8) = NSCAGL +FIELD(10) = CODARTOM +FIELD(13) = ADDIVA +FIELD(14) = UMOM +FIELD(15) = PROMAGGIO + +[RECORD C] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 3 +LENGTH(3) = 1 +LENGTH(4) = 19 +LENGTH(5) = 6 +LENGTH(6) = 2 +LENGTH(7) = 1 +LENGTH(8) = 6 +LENGTH(9) = 11 +LENGTH(10) = 11 +LENGTH(11) = 11 +LENGTH(12) = 5 +LENGTH(13) = 5 +LENGTH(14) = 9 +LENGTH(15) = 7 +LENGTH(16) = 1 +LENGTH(17) = 6 +LENGTH(18) = 6 +LENGTH(19) = 1 +LENGTH(20) = 1 +LENGTH(21) = 1 +LENGTH(22) = 1 +LENGTH(23) = 7 +LENGTH(24) = 11 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = CODICE +NAME(3) = TIPO ARCHIVIO +NAME(4) = CHIAVE RIGA +NAME(5) = CODICE LOTTO +NAME(6) = UNITA MISURA +NAME(7) = NUMERO SCAGLIONE +NAME(8) = FILLER +NAME(9) = QTA LIMITE SCAGLIONE +NAME(10) = PREZZO NETTO +NAME(11) = PREZZO LORDO +NAME(12) = PERCENTUALE SCONTO +NAME(13) = PERCENTUALE PROVVIGIONE +NAME(14) = QTA MERCE SCONTATA +NAME(15) = QTA BASE PER SCONTO +NAME(16) = FLAG PRESENZA ARTICOLO OMAGGIO +NAME(17) = VALIDITA INIZIALE +NAME(18) = VALIDITA FINALE +NAME(19) = APPLICAZIONE PREZZO +NAME(20) = APPLICAZIONE SCONTO +NAME(21) = APPLICAZIONE PROVVIGIONE +NAME(22) = ARTICOLO IN ESAURIMENTO +NAME(23) = ULTIMO AGGIORNAMENTO +NAME(24) = PREZZO NETTO DA VALUTA + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 5 +POSITION(4) = 6 +POSITION(5) = 25 +POSITION(6) = 31 +POSITION(7) = 33 +POSITION(8) = 34 +POSITION(9) = 40 +POSITION(10) = 51 +POSITION(11) = 62 +POSITION(12) = 73 +POSITION(13) = 83 +POSITION(14) = 88 +POSITION(15) = 97 +POSITION(16) = 104 +POSITION(17) = 105 +POSITION(18) = 111 +POSITION(19) = 117 +POSITION(20) = 118 +POSITION(21) = 119 +POSITION(22) = 120 +POSITION(23) = 127 +POSITION(24) = 138 + +FIELD(1) = TIPO +FIELD(2) = COD +FIELD(3) = TIPORIGA +FIELD(4) = CODRIGA +FIELD(5) = CODLOTTO +FIELD(6) = UM +FIELD(7) = NSCAGL +FIELD(9) = QLIM +FIELD(10) = PREZZO +FIELD(12) = SCONTO +FIELD(13) = PERCPROVV +FIELD(14) = QOM +FIELD(15) = QBASE +FIELD(22) = ARTES + +[RECORD D] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 3 +LENGTH(3) = 1 +LENGTH(4) = 19 +LENGTH(5) = 6 +LENGTH(6) = 2 +LENGTH(7) = 1 +LENGTH(8) = 6 +LENGTH(9) = 19 +LENGTH(10) = 6 +LENGTH(11) = 2 +LENGTH(12) = 1 +LENGTH(13) = 2 +LENGTH(14) = 11 +LENGTH(15) = 11 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = CODICE +NAME(3) = TIPO ARCHIVIO +NAME(4) = CHIAVE RIGA +NAME(5) = CODICE LOTTO +NAME(6) = UNITA MISURA +NAME(7) = NUMERO SCAGLIONE +NAME(8) = FILLER +NAME(9) = CODICE ARTICOLO OMAGGIO +NAME(10) = CODICE LOTTO TAGLIA +NAME(11) = CODICE ASS FISCALE +NAME(12) = ADDEBITO IVA OMAGGIO +NAME(13) = UM QTA IN OMAGGIO +NAME(14) = PREZZO ARTICOLO OMAGGIO IN LIRE +NAME(15) = PREZZO ARTICOLO OMAGGIO IN VALUTA + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 5 +POSITION(4) = 6 +POSITION(5) = 25 +POSITION(6) = 31 +POSITION(7) = 33 +POSITION(8) = 34 +POSITION(9) = 40 +POSITION(10) = 59 +POSITION(11) = 65 +POSITION(12) = 67 +POSITION(13) = 68 +POSITION(14) = 70 +POSITION(15) = 81 + +FIELD(1) = TIPO +FIELD(2) = COD +FIELD(3) = TIPORIGA +FIELD(4) = CODRIGA +FIELD(5) = CODLOTTO +FIELD(6) = UM +FIELD(7) = NSCAGL +FIELD(9) = CODARTOM +FIELD(12) = ADDIVA +FIELD(13) = UMOM +FIELD(14) = PROMAGGIO + +[RECORD E] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 1 +LENGTH(3) = 6 +LENGTH(4) = 2 +LENGTH(5) = 1 +LENGTH(6) = 19 +LENGTH(7) = 6 +LENGTH(8) = 2 +LENGTH(9) = 1 +LENGTH(10) = 11 +LENGTH(11) = 11 +LENGTH(12) = 5 +LENGTH(13) = 5 +LENGTH(14) = 9 +LENGTH(15) = 7 +LENGTH(16) = 1 +LENGTH(17) = 11 +LENGTH(18) = 20 +LENGTH(19) = 7 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = TIPO ANAGRAFICA +NAME(3) = CODICE CLIENTE +NAME(4) = NUMERO CONTRATTO +NAME(5) = TIPO ARCHIVIO +NAME(6) = CHIAVE RIGA +NAME(7) = CODICE LOTTO +NAME(8) = UNITA DI MISURA +NAME(9) = NUMERO SCAGLIONE +NAME(10) = QTA LIMITE SCAGLIONE +NAME(11) = PREZZO VENDITA +NAME(12) = PERCENTUALE SCONTO +NAME(13) = PERCENTUALE PROVVIGIONE +NAME(14) = QTA MERCE SCONTATA +NAME(15) = QTA BASE PER SCONTO +NAME(16) = FLAG PRESENZA ARTICOLO OMAGGIO +NAME(17) = PREZZO VENDITA IN VALUTA +NAME(18) = CODICE ARTICOLO CLIENTE +NAME(19) = ULTIMO AGGIORNAMENTO + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 3 +POSITION(4) = 9 +POSITION(5) = 11 +POSITION(6) = 12 +POSITION(7) = 31 +POSITION(8) = 37 +POSITION(9) = 39 +POSITION(10) = 40 +POSITION(11) = 51 +POSITION(12) = 62 +POSITION(13) = 72 +POSITION(14) = 77 +POSITION(15) = 86 +POSITION(16) = 93 +POSITION(17) = 94 +POSITION(18) = 105 +POSITION(19) = 125 + +FIELD(1) = TIPO +FIELD(2) = TIPOCF +FIELD(3) = CODCF +FIELD(4) = COD +FIELD(5) = TIPORIGA +FIELD(6) = CODRIGA +FIELD(7) = CODLOTTO +FIELD(8) = UM +FIELD(9) = NSCAGL +FIELD(10) = QLIM +FIELD(11) = PREZZO +FIELD(12) = SCONTO +FIELD(13) = PERCPROVV +FIELD(14) = QOM +FIELD(15) = QBASE + +[RECORD F] +LENGTH(0) = 1 +LENGTH(1) = 1 +LENGTH(2) = 1 +LENGTH(3) = 6 +LENGTH(4) = 2 +LENGTH(5) = 1 +LENGTH(6) = 19 +LENGTH(7) = 6 +LENGTH(8) = 2 +LENGTH(9) = 1 +LENGTH(10) = 19 +LENGTH(11) = 6 +LENGTH(12) = 2 +LENGTH(13) = 1 +LENGTH(14) = 2 +LENGTH(15) = 11 +LENGTH(16) = 11 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = TIPO ANAGRAFICA +NAME(3) = CODICE CLIENTE +NAME(4) = NUMERO CONTRATTO +NAME(5) = TIPO ARCHIVIO +NAME(6) = CHIAVE RIGA +NAME(7) = CODICE LOTTO +NAME(8) = UNITA DI MISURA +NAME(9) = NUMERO SCAGLIONE +NAME(10) = CODICE ARTICOLO OMAGGIO +NAME(11) = CODICE LOTTO TAGLIA +NAME(12) = CODICE ASS FISCALE +NAME(13) = ADDEBITO IVA OMAGGIO +NAME(14) = UM QTA IN OMAGGIO +NAME(15) = PREZZO ARTICOLO OMAGGIO IN LIRE +NAME(16) = PREZZO ARTICOLO OMAGGIO IN VALUTA + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 2 +POSITION(3) = 3 +POSITION(4) = 9 +POSITION(5) = 11 +POSITION(6) = 12 +POSITION(7) = 31 +POSITION(8) = 37 +POSITION(9) = 39 +POSITION(10) = 40 +POSITION(11) = 59 +POSITION(12) = 65 +POSITION(13) = 67 +POSITION(14) = 68 +POSITION(15) = 70 +POSITION(16) = 81 + +FIELD(1) = TIPO +FIELD(2) = TIPOCF +FIELD(3) = CODCF +FIELD(4) = COD +FIELD(5) = TIPORIGA +FIELD(6) = CODRIGA +FIELD(7) = CODLOTTO +FIELD(8) = UM +FIELD(9) = NSCAGL +FIELD(10) = CODARTOM +FIELD(13) = ADDIVA +FIELD(14) = UMOM +FIELD(15) = PROMAGGIO + diff --git a/ibm36/ibm36tab.ini b/ibm36/ibm36tab.ini index 2a3e98f66..a5e6dec5f 100755 --- a/ibm36/ibm36tab.ini +++ b/ibm36/ibm36tab.ini @@ -44,3 +44,76 @@ POSITION(9) = 129 POSITION(10) = 134 USE = %BAN +[RECORD A11] +LENGTH(0) = 1 +LENGTH(1) = 3 +LENGTH(2) = 2 +LENGTH(3) = 2 +LENGTH(4) = 9 +LENGTH(5) = 30 +LENGTH(6) = 3 +LENGTH(7) = 11 +LENGTH(8) = 6 +LENGTH(9) = 6 +LENGTH(10) = 2 +LENGTH(11) = 1 +LENGTH(12) = 4 +LENGTH(13) = 1 +LENGTH(14) = 1 +LENGTH(15) = 1 +LENGTH(16) = 1 +LENGTH(17) = 6 + +NAME(0) = ANNULLATO +NAME(1) = TIPO +NAME(2) = CATEGORIA VENDITA +NAME(3) = CODICE LISTINO +NAME(4) = FILLER +NAME(5) = DESCRIZIONE +NAME(6) = CODICE DIVISA +NAME(7) = CAMBIO +NAME(8) = INIZIO VALIDITA +NAME(9) = FINE VALIDITA +NAME(10) = LISTINO SUCCESSIVO +NAME(11) = FLAG LORDO +NAME(12) = SEQUENZA RICERCA +NAME(13) = GESTIONE UM +NAME(14) = GESTIONE SCAGLIONI +NAME(15) = GESTIONE SCONTI +NAME(16) = TIPO GESTIONE +NAME(17) = DATA CAMBIO + +POSITION(0) = 0 +POSITION(1) = 1 +POSITION(2) = 4 +POSITION(3) = 6 +POSITION(4) = 8 +POSITION(5) = 17 +POSITION(6) = 47 +POSITION(7) = 50 +POSITION(8) = 61 +POSITION(9) = 67 +POSITION(10) = 73 +POSITION(11) = 75 +POSITION(12) = 76 +POSITION(13) = 80 +POSITION(14) = 81 +POSITION(15) = 82 +POSITION(16) = 83 +POSITION(17) = 84 + +FIELD(1) = TIPO +FIELD(2) = CATVEN +FIELD(3) = COD +FIELD(5) = DESCR +FIELD(6) = CODVAL +FIELD(7) = CAMBIO +FIELD(8) = VALIN +FIELD(9) = VALFIN +FIELD(10) = CODLISSUCC +FIELD(12) = SEQRIC +FIELD(13) = GESTUM +FIELD(14) = GESTSCAGL +FIELD(15) = GESTSCO +FIELD(17) = DATACAM +USE = 52