diff --git a/ha/ha2100.cpp b/ha/ha2100.cpp index 536215d5f..6d77712b8 100755 --- a/ha/ha2100.cpp +++ b/ha/ha2100.cpp @@ -74,6 +74,7 @@ protected: virtual TObject* key2obj(const char* key); public: + const TString& decode(const TString& codart); TCodArtEsselunga_cache() {} }; @@ -81,7 +82,7 @@ TObject* TCodArtEsselunga_cache::key2obj(const char* key) { TToken_string code(key); TString80 codart; code.get(0, codart); - TString16 codcf; code.get(1, codcf); + const long codcf = 1000; TISAM_recordset codcorr("USE CODCORR\nSELECT CODCF=#CODCF\nFROM CODART=#COD\nTO CODART=#COD"); codcorr.set_var("#COD", TVariant(codart)); codcorr.set_var("#CODCF", TVariant(codcf)); @@ -93,28 +94,35 @@ TObject* TCodArtEsselunga_cache::key2obj(const char* key) return NULL; } +const TString& TCodArtEsselunga_cache::decode(const TString& codart) +{ + return *(const TString*)objptr(codart); +} + ///////////////////////////////////////////////////////////// // Recordset per file privat ///////////////////////////////////////////////////////////// class TPrivat_recordset : public TAS400_recordset { public: - TPrivat_recordset(); + TPrivat_recordset(const TString4 dipendenza); }; -TPrivat_recordset::TPrivat_recordset() +TPrivat_recordset::TPrivat_recordset(const TString4 dipendenza) : TAS400_recordset("AS400(53)") { - create_field("CDC", -1, 3, _intfld); // centro di costo - create_field("CODART", -1, 6, _longfld); // codice articolo - create_field("CODFORN", -1, 6, _longfld); // codice fornitore - create_field("TIPOBOLLA", -1, 1, _alfafld); // tipo bolla + TConfig config(CONFIG_DITTA, "ha"); + const TString16 cod_hardy = config.get("Esselunga_CodHardy"); + create_field("CDC", -1, 3, _intzerofld); // centro di costo + create_field("CODART", -1, 6, _longzerofld); // codice articolo + create_field("CODFORN", -1, 6, _longzerofld, true, TVariant(cod_hardy)); // codice fornitore + create_field("TIPOBOLLA", -1, 1, _alfafld, true, TVariant("A")); // tipo bolla create_field("NUMBOLLA", -1, 12, _alfafld); // numero bolla - create_field("DATABOLLA", -1, 8, _longfld); // data bolla + create_field("DATABOLLA", -1, 8, _longzerofld); // data bolla create_field("QTACONS", -1, 7, _realfld); // qta consegnata create_field("QTARESA", -1, 7, _realfld); // qta resa - create_field("CODDIP", -1, 1, _alfafld); // codice dipendenza - create_field("FINE-REC", -1, 2, _alfafld, true, TVariant("\r\n")); // a capo + create_field("CODDIP", -1, 1, _alfafld, true, TVariant(dipendenza)); // codice dipendenza + create_field("FINE-REC", -1, 2, _alfafld, true, TVariant("\r\n")); // a capo } /////////////////////////////////////// @@ -222,9 +230,6 @@ TFilename THardy_esselunga::scrivi_testata(const TMask& mask) void THardy_esselunga::elabora(const TMask& mask) { TLog_report log; - // lettura dei dati fissi da configurazione - TConfig config(CONFIG_DITTA, "ha"); - const TString16 cod_hardy = config.get("Esselunga_CodHardy"); const TString4 dipendenza = mask.get(F_DIPENDENZA); TFilename file_privat = scrivi_testata(mask); TISAM_recordset recset(""); @@ -233,7 +238,8 @@ void THardy_esselunga::elabora(const TMask& mask) log.log(1, "Non esistono documenti che soddisfano i parametri selezionati."); // lettura dei documenti da recordset TProgind pi(recset.items(), TR("Elaborazione documenti in corso..."), true, true); - TPrivat_recordset privat; + TPrivat_recordset privat(dipendenza); + TCodArtEsselunga_cache cache_ca; for (bool ok = recset.move_first(); ok; ok = recset.move_next()) { if (!pi.addstatus(1)) @@ -247,18 +253,18 @@ void THardy_esselunga::elabora(const TMask& mask) TDocumento* doc = new TDocumento(recset.cursor()->curr()); // passo tutte le righe del documento all'AS400recordset FOR_EACH_PHYSICAL_RDOC(*doc, r, rigadoc) - { - TString80 codart_esselunga = ""; // decodifica tramite cache() + { + const TString80& codart_esselunga = cache_ca.decode(rigadoc->get(RDOC_CODART)); privat.new_rec(""); privat.set("CDC", TVariant(codcf_esselunga)); - privat.set("CODART", rigadoc->get(RDOC_CODART)); - privat.set("CODFORN", cod_hardy); - //privat.set("TIPOBOLLA", - //privat.set("NUMBOLLA", + privat.set("CODART", codart_esselunga); + privat.set("NUMBOLLA", "000000000000"); privat.set("DATABOLLA", recset.get(DOC_DATADOC)); - privat.set("QTACONS", rigadoc->get(RDOC_QTA)); - //privat.set("QTARESA",); - privat.set("CODDIP", TVariant(dipendenza)); + real qta = rigadoc->get_real(RDOC_QTA); + TString16 qtastr = qta.string(8,2,'0'); + qtastr.strip("."); + privat.set("QTACONS", qtastr); + privat.set("QTARESA", "0000000"); } //FOR_EACH... delete doc; } // if check_cliente...