// ******************************* // LIBRERIA di magazzino per le valorizzazioni e le chiusure // ******************************* #ifndef __MGLIB02_H #define __MGLIB02_H #ifndef __RELATION_H #include #endif #ifndef __RECARRAY_H #include #endif #ifndef __ANAMAG_H #include "anamag.h" #endif #ifndef __UMART_H #include "umart.h" #endif #ifndef __CODCORR_H #include "codcorr.h" #endif #ifndef __DESLIN_H #include "deslin.h" #endif #ifndef __MAG_H #include "mag.h" #endif #ifndef __STOMAG_H #include "stomag.h" #endif typedef enum { valorizz_ultcos , valorizz_mediacos , valorizz_przlist , valorizz_coststd , valorizz_costmedio , valorizz_FIFOa , valorizz_LIFOa , valorizz_FIFO , valorizz_LIFO } TTipo_valorizz; char * TNome_valorizz[]= { "Ultimo costo", "Media ultimi costi", "Prezzo di listino", "Costo standard", "Costo medio" , "FIFO annuale","LIFO annuale", "FIFO","LIFO" } ; class TArticolo : public TRectype { TRecfield * _codice; TRecord_array * _um; TRecord_array * _codcorr; TRecord_array * _deslin; protected: bool load_um(); bool load_codcorr(); bool load_deslin(); virtual const TString & get_str(const char* fieldname) const ; int find(const TRecord_array & array, const char * fieldname, const char * s, int from = 0) const ; public: virtual int read(const char* cod); TObject* dup() const { return new TArticolo(codice()); } const TString& codice() const { return (const char *) *_codice;} const TString& descrizione(const char * lingua = NULL) const; int find_um(const char * um, int from = 0) const { return find(*_um, UMART_UM, um, from); } int find_deslin(const char * deslin, int from = 0) const { ((TArticolo *) this)->load_deslin(); return find(*_deslin, DESLIN_CODLIN, deslin, from); } int find_codcorr(const char * codcorr, int from = 0) const { ((TArticolo *) this)->load_codcorr(); return find(*_codcorr, CODCORR_CODARTALT, codcorr, from); } TRectype & um_row(int i) const { ((TArticolo *) this)->load_um(); return (TRectype &) _um->row(i); } TRectype & deslin_row(int i) const { ((TArticolo *) this)->load_deslin(); return (TRectype &) _deslin->row(i); } TRectype & codcorr_row(int i) const { ((TArticolo *) this)->load_codcorr(); return (TRectype &) _codcorr->row(i); } TArticolo(const char* codice = NULL); TArticolo(const TRectype& rec); virtual ~TArticolo(); }; class TArticolo_giacenza : public TArticolo { TRecord_array * _mag; TRecord_array * _storico; protected: bool load_mag(const char * annoes); bool load_storico(const char * annoesrif); virtual const TString & get_str(const char* fieldname) const ; public: virtual int read(const char* cod); TObject* dup() const { return new TArticolo_giacenza(codice()); } int find_mag(const char * annoes, const char * codmag = NULL, const char * livello = NULL, int from = 0) const ; int find_storico(const char * annoesrif, const char * annoes = NULL, int from = 0) const { ((TArticolo_giacenza *) this)->load_storico(annoesrif); return find(*_storico, STOMAG_ANNOES, annoes, from); } TRectype & mag_row(const char * annoes, int i) const { ((TArticolo_giacenza *) this)->load_mag(annoes); return (TRectype &) _mag->row(i); } TRectype & storico_row(const char * annoesrif, int i) const { ((TArticolo_giacenza *) this)->load_storico(annoesrif); return (TRectype &) _storico->row(i); } real ultimo_costo(const char * annoes) const; real media_costi(const char * annoes) const; real prezzo_listino(const char * annoes, const char * catven ,const char * codlist) const; real costo_standard(const char * annoes) const; real costo_medio(const char * annoes, const char * codmag, const char * livello) const; real LIFO_annuale(const char * annoes, const char * codmag, const char * livello, bool giacenza_effettiva = TRUE, bool valorizza_componenti = TRUE) const; real FIFO_annuale(const char * annoes, const char * codmag, const char * livello, bool giacenza_effettiva = TRUE, bool valorizza_componenti = TRUE) const; real LIFO(const char * annoes, const char * codmag, const char * livello, bool giacenza_effettiva = TRUE, bool valorizza_componenti = TRUE) const; real FIFO(const char * annoes, const char * codmag, const char * livello, bool giacenza_effettiva = TRUE, bool valorizza_componenti = TRUE) const; TArticolo_giacenza(const char* codice = NULL) : TArticolo(codice), _mag(NULL), _storico(NULL) {} TArticolo_giacenza(const TRectype& rec) : TArticolo(rec), _mag(NULL), _storico(NULL) {} virtual ~TArticolo_giacenza(); }; #endif