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
This commit is contained in:
Mattia Tollari 2019-07-29 11:45:49 +02:00
parent cd175c490c
commit 5024861411
2 changed files with 25 additions and 12 deletions

View File

@ -87,6 +87,8 @@ const char* const zero_fields[] =
NULL NULL
}; };
class TArticolo_conai;
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TCodice_articolo // TCodice_articolo
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -171,6 +173,8 @@ public:
TRecord_array& deslin() const { return body(LF_DESLIN); } TRecord_array& deslin() const { return body(LF_DESLIN); }
TRecord_array& codcorr() const { return body(LF_CODCORR); } TRecord_array& codcorr() const { return body(LF_CODCORR); }
TArticolo_conai& conai() const;
TArticolo(const char* codice = NULL); TArticolo(const char* codice = NULL);
TArticolo(const TRectype& rec); TArticolo(const TRectype& rec);
virtual ~TArticolo() {} virtual ~TArticolo() {}
@ -339,16 +343,18 @@ private:
// Categoria -> Sottocategoria + peso // Categoria -> Sottocategoria + peso
std::map<TString, std::map<TString, real>> _catsotpes; std::map<TString, std::map<TString, real>> _catsotpes;
public: public:
const std::map<TString, std::map<TString, real>> get_map() { return _catsotpes; } const std::map<TString, std::map<TString, real>>& get_map() { return _catsotpes; }
const std::map<TString, real>* get_scat(const TString& cat); const std::map<TString, real>* get_scat(const TString& cat);
real get_peso(const TString& cat, const TString& scat); real get_peso(const TString& cat, const TString& scat);
real get_peso(const TString& fcat) { return get_peso(fcat.left(2), fcat.right(2)); } real get_peso(const TString& fcat) { return get_peso(fcat.left(2), fcat.right(2)); }
TArticolo_conai(const TString& codart); 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 // LIBRERIA DI utility del magazzino
// ******************************* // *******************************

View File

@ -466,6 +466,15 @@ real TArticolo::convert_to_um(const real& v, const TString& to_um, const TString
return r; 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) TArticolo::TArticolo(const char* codice) : TMultiple_rectype(LF_ANAMAG)
{ {
add_file(LF_UMART,"NRIGA"); add_file(LF_UMART,"NRIGA");
@ -1870,16 +1879,14 @@ TArticolo_conai::TArticolo_conai(const TString& codart)
{ {
TLocalisamfile conart(LF_CONART); TLocalisamfile conart(LF_CONART);
conart.put(CONART_CODART, _codart); 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 TString& categoria = conart.get(CONART_CATEGORIA); const real& peso = conart.get_real(CONART_PESO);
const TString& sottocat = conart.get(CONART_SOTTOCAT); _catsotpes[categoria][sottocat] = peso;
const real& peso = conart.get_real(CONART_PESO); err = conart.next();
_catsotpes[categoria][sottocat] = peso;
++conart;
}
} }
} }
/* /*