campo-sirio/mr/mr2100.h
alex 2030c1272c Patch level : 10.0 67
Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

RIportata la verione 3.2 1167


git-svn-id: svn://10.65.10.50/trunk@16722 c028cbd2-c16b-5b4b-a496-9718f37d4682
2008-06-11 10:58:17 +00:00

339 lines
11 KiB
C++
Executable File

#ifndef __MR2100_H
#define __MR2100_H
#include "mrplib.h"
#include "../ve/velib.h"
void print_header(TPrinter& pr);
void print_footer(TPrinter& pr);
class TMRP_internalref;
class TMRP_internalrefs;
class TMRP_docref;
class TMRP_docrefs;
class TMRP_line;
class TMRP_record : public TObject
{
TMRP_time _time; // time
real _on_hand; // projected on hand
real _unsched_orders; // unscheduled orders
real _resched_orders; // rescheduled orders
real _net_requirement; // lot-sized net requirement
real _gross_requirement; // gross req
real _sched_receipts; // scheduled receipts (released )
real _planned_orders; // anticipated planned orders
TMRP_docrefs *_plans; // doc. di pianificazione
TMRP_docrefs *_scheduls; // doc. di pianificazione confermati
TMRP_docrefs *_requirements; // gross.req. da documenti esterni
TMRP_internalrefs *_internal_req; // gross.req. da esplosioni interne
void add_ref(TMRP_docref * ref, TMRP_docrefs* &refs);
public:
const real& on_hand() const { return /*_on_hand <= ZERO ? ZERO :*/_on_hand ; }
const real& net_requirement() const { return _net_requirement; }
const real& resched_orders() const { return _resched_orders; }
const real& unsched_orders() const { return _unsched_orders; }
const real& gross_requirement() const { return _gross_requirement; }
const real& sched_receipts() const { return _sched_receipts; }
const real& planned_orders() const { return _planned_orders; }
TMRP_docrefs *requirements_refs() const { return _requirements; }
TMRP_docrefs *scheduls_refs() const { return _scheduls; }
TMRP_docrefs *plans_refs() const { return _plans; }
TMRP_internalrefs *internal_refs() const { return _internal_req; }
const real& set_on_hand(const real & val) { return _on_hand=val;}
const real& set_net_req(const real & val) { return _net_requirement=val;}
const real& add_net_req(const real & val);
const real& add_gross_req(const real& val , TMRP_docref *ref = NULL);
const real& add_gross_req(const real& val , TMRP_internalref *ref );
const real& add_sched_rec(const real& val, TMRP_docref *ref = NULL);
const real& add_planned_ord(const real& val, TMRP_docref *ref = NULL);
const real& add_resched_ord(const real& val);
const real& add_unsched_ord(const real& val);
TMRP_record & operator=(const TMRP_record & a);
const TMRP_time& time() const { return _time; }
virtual TObject* dup() const;
TMRP_record(const TMRP_time& t);
virtual ~TMRP_record() { }
};
class TException : public TObject
{
int _from, _to;
real _q;
const TMRP_line * _mrpline;
protected:
public :
virtual TObject* dup() const ;
int from() const {return _from;}
int to() const {return _to;}
const real& qta() const {return _q;}
const TMRP_line & mrpline() const {return *_mrpline;}
TException(const TMRP_line * line, int from, int to, const real & q);
virtual ~TException() {}
};
class TExceptions_array : public TAssoc_array
{
public :
bool add(TException * e);
bool add(const TException & e);
TExceptions_array() {}
virtual ~TExceptions_array() {}
};
class TMRP_line : public TSortable
{
TCodice_articolo _codart;
TString16 _livgiac;
TString8 _codmag;
TString8 _codmag_coll;
TString8 _codimp;
TString8 _codlin;
long _codclifor;
TString _da_rdoc_key;
bool _final_product;
int _explosion_depth;
TToken_string * _sheet_row;
static TArticolo_giacenza* _articolo_giac;
protected:
TArray _req_per_bucket;
TPointer_array _sons;
TArray _qta_sons;
TString _descr;
bool is_son(const TCodice_articolo& art) const;
void lotti_riordino(real & minimo, real & increm) const ;
public:
TMRP_record& record(int i) const;
TMRP_record& record(const TMRP_time& t) const;
const TCodice_articolo& articolo() const { return _codart; }
const TString& livgiac() const { return _livgiac; }
const TString& codmagdep() const { return _codmag; }
const TString& codmagdep_coll() const { return _codmag_coll; }
const TString& codimp() const { return _codimp; }
const TString& codlin() const { return _codlin; }
long codclifor() const { return _codclifor; }
const TString& description() const { return _descr; }
const TString& da_rdoc_key() const { return _da_rdoc_key; }
const TString& codmag() const;
const TString& codmagaz_coll() const;
const TString& coddep() const;
const TString& coddep_coll() const;
const TString& livgiac(int l) const;
int explosion_depth() const { return _explosion_depth; }
virtual int compare(const TSortable& s) const;
int first_bucket() const { return _req_per_bucket.first(); }
int last_bucket() const { return _req_per_bucket.last(); }
int next_bucket(int i) const { return _req_per_bucket.succ(i); }
int add_son(const real& qta, TMRP_line* son);
int sons() const { return _sons.items(); }
const TMRP_line& son(int i) const { return (const TMRP_line&)_sons[i]; }
TMRP_line& son(int i) { return (TMRP_line&)_sons[i]; }
const real& qta_son(int i) const { return (const real&)_qta_sons[i]; }
const real & on_hand(int i) const
{return record(i).on_hand();}
const real & gross_requirement(int i) const
{return record(i).gross_requirement();}
const real & net_requirement(int i) const
{return record(i).net_requirement();}
const real & sched_receipts(int i) const
{return record(i).sched_receipts();}
const real & planned_orders(int i) const
{return record(i).planned_orders();}
const real & resched_orders(int i) const
{return record(i).resched_orders();}
const real & unsched_orders(int i) const
{return record(i).unsched_orders();}
const TString& set_description(const TString &s) { return _descr=s; }
const real& set_on_hand(int i, const real& val);
const real& set_on_hand(const TMRP_time& t, const real& val);
const real& add_gross_req(const TMRP_time& t, const real& val, TMRP_docref *ref = NULL);
const real& add_gross_req(const TMRP_time& t, const real& val, TMRP_internalref *ref);
const real& add_sched_rec(const TMRP_time& t, const real& val, TMRP_docref *ref = NULL);
const real& add_planned_ord(const TMRP_time& t, const real& val, TMRP_docref *ref = NULL);
const real& add_net_req(const TMRP_time& t, const real& val);
const real& add_net_req(int i, const real& val);
const real& set_net_req(int i, const real& val);
const real& add_resched_ord(int i, const real& val);
const real& add_unsched_ord(int i, const real& val);
real sizeup_net_requirement(int i, const real& val, const real& oldnet = ZERO);
real& giacenza_attuale(real&) const;
real& giacenza_attuale(real&, const TDate & data_attuale) const;
real &scorta_minima(real&) const;
real &scorta_minima(real&, const TDate & data) const;
void set_row(TToken_string * row) { _sheet_row = row; }
TToken_string * sheet_row() const { return _sheet_row;}
const TMRP_time& lead_time(int i, TMRP_time& t, bool antic = TRUE) const;
const TMRP_time& time(int i) const { return record(i).time(); }
virtual TObject* dup() const;
TMRP_line & operator=(const TMRP_line & a);
// gestione eccezioni
void reset_excepts();
bool find_ad_excepts(bool anticipi, bool posticipi, TExceptions_array &e);
bool find_extra_excepts(bool fixed, TExceptions_array &e);
void print_exception(int from, int to, const real &diff, int header) const;
bool final_product() const { return _final_product; }
void set_final_product(bool f = TRUE) { _final_product = f;}
void set_imp_lin(const char* imp, const char* lin);
void set_explosion_depth(int depth) { _explosion_depth = depth; }
// capacity review
TMRP_line(const char* art, const char* giac,
const char* magdep, const char* magdepc,
const char* imp, const char* lin,
long codcli, const char* da_rdoc_key);
TMRP_line(const TMRP_line&a);
virtual ~TMRP_line() { }
};
class TMRP_lines : public TMRP_array
{
bool _ignore_mag;
bool _ignore_dep;
bool _ignore_imp;
bool _ignore_lin;
bool _ignore_key;
protected:
virtual TSortable* new_obj(const TToken_string& key) const;
public:
TMRP_line* find(const TCodice_articolo& codart,
const TString& giac, const TString& mag, const TString& magc,
const TString& imp, const TString& lin,
long codcli, const char* rdoc_key, bool create = false);
TMRP_line& operator[](long n) const
{ return (TMRP_line&)find_obj(n); }
void ignore(bool im, bool id, bool ii, bool il, bool ik)
{ _ignore_mag = im; _ignore_dep = id; _ignore_imp = ii; _ignore_lin = il; _ignore_key = ik; }
virtual TObject* dup() const;
TMRP_lines & operator= (const TMRP_lines &a);
TMRP_lines();
TMRP_lines(const TMRP_lines &a);
virtual ~TMRP_lines();
};
class TMRP_docref : public TObject
{
TString4 _codnum;
int _annodoc;
long _numdoc;
int _numrig;
TString4 _um;
real _qta, _prz;
protected:
virtual TObject* dup() const;
public:
// settaggio valori
void set_annodoc(int anno) { _annodoc = anno; }
void set_codnumdoc(const char* codnum) { _codnum = codnum; }
void set_numdoc(long numdoc) { _numdoc = numdoc; }
void set_numrig(int nr) { _numrig = nr; }
void set_um(const char* um) { _um = um; }
void set_qta_residua(const real& q) { _qta = q; }
int annodoc() const { return _annodoc; }
const TString& codnumdoc() const { return _codnum; }
long numdoc() const { return _numdoc; }
int numrig() const { return _numrig; }
const TString& um() const { return _um; }
const real & qta_residua() const { return _qta; }
TDate datadoc() const;
TDate datacons() const;
const TString& tipodoc();
char statodoc();
const TRectype& get_doc() const;
const TRectype& get_rdoc() const;
TMRP_docref(int anno, const char* codnum, long numdoc, int nriga,
const char* um, const real& qta, const real& prz);
};
class TMRP_docrefs : public TArray
{
public:
TObject* dup() const;
TMRP_docref & get_ref(int n) {return (TMRP_docref & )operator[](n);}
TMRP_docref * get_ref_ptr(int n) {return (TMRP_docref *)objptr(n);}
};
class TMRP_internalref : public TObject
{
TMRP_line * _line;
int _bucket;
TDate _date; // eliminare
TString4 _um;
real _qta;
public:
virtual TObject* dup() const;
// settaggio valori
void set_um(const char *um) {_um = um;}
void set_qta(const real & qta) {_qta = qta;}
const TMRP_line * line() const {return _line;}
int bucket() const {return _bucket;}
const TDate & date() const {return _date;}
const TString& um() const {return _um;}
const real & qta() const {return _qta;}
TMRP_internalref(TMRP_line * line, int bucket, const real & qta);
TMRP_internalref(const TMRP_internalref &r);
};
class TMRP_internalrefs : public TArray
{
public:
TMRP_internalref& get_ref(int n) const {return (TMRP_internalref & )operator[](n);}
TMRP_internalref* get_ref_ptr(int n) {return (TMRP_internalref * )objptr(n);}
};
#endif