From 502486141103b9b097afeaae053e6150b36c8da7 Mon Sep 17 00:00:00 2001 From: Mattia Tollari Date: Mon, 29 Jul 2019 11:45:49 +0200 Subject: [PATCH] Patch level : 12.0 no-patch Files correlati : mg Commento : Aggiunta nuova macro per lettura conai, aggiunta funzione conai() a TArticolo per restituire l'oggetto TArticolo_conai --- src/mg/mglib.h | 12 +++++++++--- src/mg/mglib02.cpp | 25 ++++++++++++++++--------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/mg/mglib.h b/src/mg/mglib.h index 243cc04c5..48b5703ff 100755 --- a/src/mg/mglib.h +++ b/src/mg/mglib.h @@ -87,6 +87,8 @@ const char* const zero_fields[] = NULL }; +class TArticolo_conai; + /////////////////////////////////////////////////////////// // TCodice_articolo /////////////////////////////////////////////////////////// @@ -171,6 +173,8 @@ public: TRecord_array& deslin() const { return body(LF_DESLIN); } TRecord_array& codcorr() const { return body(LF_CODCORR); } + TArticolo_conai& conai() const; + TArticolo(const char* codice = NULL); TArticolo(const TRectype& rec); virtual ~TArticolo() {} @@ -339,16 +343,18 @@ private: // Categoria -> Sottocategoria + peso std::map> _catsotpes; public: - const std::map> get_map() { return _catsotpes; } + const std::map>& get_map() { return _catsotpes; } const std::map* get_scat(const TString& cat); real get_peso(const TString& cat, const TString& scat); real get_peso(const TString& fcat) { return get_peso(fcat.left(2), fcat.right(2)); } - - TArticolo_conai(const TString& codart); }; +#define FOR_EACH_CONAI_CAT(_art_con, _cat) const auto& _map_conai = ac.get_map(); \ + for(const auto& _cat : _map_conai) +#define FOR_EACH_CONAI_SOTTOCAT(_art_con, _cat, _sottocat) FOR_EACH_CONAI_CAT(_art_con, _cat) for(const auto& _sottocat : (_cat).second) + // ******************************* // LIBRERIA DI utility del magazzino // ******************************* diff --git a/src/mg/mglib02.cpp b/src/mg/mglib02.cpp index 6bfe2fbc8..ae37329ee 100755 --- a/src/mg/mglib02.cpp +++ b/src/mg/mglib02.cpp @@ -466,6 +466,15 @@ real TArticolo::convert_to_um(const real& v, const TString& to_um, const TString return r; } +TArticolo_conai& TArticolo::conai() const +{ + static TArticolo_conai* articolo_conai = nullptr; + if (articolo_conai == nullptr) + articolo_conai = new TArticolo_conai(_codice); + + return *articolo_conai; +} + TArticolo::TArticolo(const char* codice) : TMultiple_rectype(LF_ANAMAG) { add_file(LF_UMART,"NRIGA"); @@ -1870,16 +1879,14 @@ TArticolo_conai::TArticolo_conai(const TString& codart) { TLocalisamfile conart(LF_CONART); conart.put(CONART_CODART, _codart); - if (conart.read(_isgteq) == NOERR) + int err = conart.read(_isgteq); + while (err == NOERR && _codart == conart.get(CONART_CODART)) { - while (_codart == conart.get(CONART_CODART)) - { - const TString& categoria = conart.get(CONART_CATEGORIA); - const TString& sottocat = conart.get(CONART_SOTTOCAT); - const real& peso = conart.get_real(CONART_PESO); - _catsotpes[categoria][sottocat] = peso; - ++conart; - } + const TString& categoria = conart.get(CONART_CATEGORIA); + const TString& sottocat = conart.get(CONART_SOTTOCAT); + const real& peso = conart.get_real(CONART_PESO); + _catsotpes[categoria][sottocat] = peso; + err = conart.next(); } } /*