From b511a986bffd4ad616fad2c9fa6adcedcece4ae4 Mon Sep 17 00:00:00 2001 From: augusto Date: Wed, 4 Jun 1997 14:27:02 +0000 Subject: [PATCH] Primo debug degli oggetti articolo e Multiple_record git-svn-id: svn://10.65.10.50/trunk@4523 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mglib02.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++++++--- mg/mglib02.h | 22 +++++++-------- 2 files changed, 80 insertions(+), 15 deletions(-) diff --git a/mg/mglib02.cpp b/mg/mglib02.cpp index ed95feace..3cfd5f97e 100755 --- a/mg/mglib02.cpp +++ b/mg/mglib02.cpp @@ -1,7 +1,16 @@ #include "mglib02.h" +#include #include "../cg/cglib.h" -void TMultiple_rectype::load_rows_file(int logicnum) +char * TNome_valorizz[]= { + "Ultimo costo", "Media ultimi costi", "Prezzo di listino", + "Costo standard", "Costo medio" , + "FIFO annuale", "LIFO annuale", + "FIFO", "LIFO", + "FIFO Ragionieristico", "LIFO Ragionieristico" +} ; + +/*bool TArticolo::load_um() { const int index = log2ind(logicnum); TRectype & rec = get_body_record(logicnum); @@ -9,7 +18,7 @@ void TMultiple_rectype::load_rows_file(int logicnum) set_body_key(rec); TRecord_array * r = new TRecord_array(logicnum, (TString &) _numfields[index]); _files.add( r, index); -} +}*/ int TMultiple_rectype::find(int logicnum, const char * fieldname, const char * s, int from, bool reverse) const { @@ -24,7 +33,7 @@ int TMultiple_rectype::find(int logicnum, const char * fieldname, const char * s if (len == 0) return from - 1; for (int i = recarray.pred_row(from); i > 0; i = recarray.pred_row(i)) - if (recarray[i].get(fieldname) == s) + if (((TRectype &)recarray[i]).get(fieldname) == s) return i; } } @@ -35,7 +44,7 @@ int TMultiple_rectype::find(int logicnum, const char * fieldname, const char * s if (len == 0) return from + 1; for (int i = recarray.succ_row(from); i <= last; i = recarray.succ_row(i)) - if (recarray[i].get(fieldname) == s) + if (((TRectype &)recarray[i]).get(fieldname) == s) return i; } } @@ -113,6 +122,16 @@ int TMultiple_rectype::log2ind(int logicnum) const return 0; } +void TMultiple_rectype::load_rows_file(int logicnum) +{ + const int index = log2ind(logicnum); + TRectype & rec = get_body_record(logicnum); + + set_body_key(rec); + TRecord_array * r = new TRecord_array(logicnum, (TString &) _numfields[index]); + _files.add( r, index); +} + TRecord_array & TMultiple_rectype::body(int logicnum) const { const int index = log2ind(logicnum); @@ -313,6 +332,52 @@ const TString & TArticolo::descrizione(const char* lingua) const return get(ANAMAG_DESCR); } + +void TArticolo::update_ultcosti(real costo,TDate data) +{ + TDate data1(get_date(ANAMAG_DULTCOS1)); + if (data>= data1) + { + real costo1(get_real(ANAMAG_ULTCOS1)); + put(ANAMAG_DULTCOS1,data); + put(ANAMAG_ULTCOS1,costo); + put(ANAMAG_DULTCOS2,data1); + put(ANAMAG_ULTCOS2,costo1); + } else { + if (data>= get_date(ANAMAG_DULTCOS2)) + put(ANAMAG_DULTCOS2,data); + put(ANAMAG_ULTCOS2,costo); + } +} + +bool TArticolo::unlock() +{ + bool rv; + if (*(const char *)_codice) + { + TLocalisamfile anag(LF_ANAMAG); + anag.set_curr(this); + rv=(anag.read(_isequal,_unlock)==NOERR); + return rv; + } + return FALSE; +} + +bool TArticolo::lock_and_prompt() +{ + TString mess; + mess << "Il record di anagrafica dell'articolo ''"<< codice() << "'' risulta essere già in uso.\n Interrompo ?"; + TTimed_breakbox bbox((const char *)mess,10); + do { + TLocalisamfile anag(LF_ANAMAG); + anag.set_curr(this); + if (anag.read(_isequal,_testandlock)==NOERR) + return TRUE; + } while (bbox.run()!=K_ESC); + return FALSE; +} + + TArticolo::TArticolo(const char* codice) : TMultiple_rectype(LF_ANAMAG) diff --git a/mg/mglib02.h b/mg/mglib02.h index ef063d752..431f5c45f 100755 --- a/mg/mglib02.h +++ b/mg/mglib02.h @@ -114,8 +114,10 @@ public: virtual int read(word op = _isequal, word lockop = _nolock) { return read(*this, op, lockop); } int read(TBaseisamfile & f, word op = _isequal, word lockop = _nolock) { return read(f.curr(), op, lockop); } - virtual int write(TBaseisamfile& f) const; - virtual int rewrite(TBaseisamfile& f) const; + virtual int write(TBaseisamfile& f) const + { return write_rewrite(f);} + virtual int rewrite(TBaseisamfile& f) const + { return write_rewrite(f,TRUE);} virtual int remove(TBaseisamfile& f) const; int write() const { TBaseisamfile f(num()); return write(f);} @@ -136,6 +138,8 @@ public: virtual ~TMultiple_rectype() {} }; +char * TNome_valorizz[]; + typedef enum { valorizz_ultcos , valorizz_mediacos , valorizz_przlist , valorizz_coststd , valorizz_costmedio , @@ -144,14 +148,6 @@ typedef enum { valorizz_FIFOr , valorizz_LIFOr } TTipo_valorizz; -char * TNome_valorizz[]= { - "Ultimo costo", "Media ultimi costi", "Prezzo di listino", - "Costo standard", "Costo medio" , - "FIFO annuale", "LIFO annuale", - "FIFO", "LIFO", - "FIFO Ragionieristico", "LIFO Ragionieristico" -} ; - class TArticolo : public TMultiple_rectype { TRecfield * _codice; @@ -167,9 +163,13 @@ public: TObject* dup() const { return new TArticolo(codice()); } - const TString& codice() const { return (const char *) *_codice;} + const TString codice() const { return (const char *) *_codice;} const TString& descrizione(const char * lingua = NULL) const; + bool unlock() ; + bool lock_and_prompt() ; + void update_ultcosti(real costo,TDate data) ; + int find_um(const char * um, int from = 0) const { return find(LF_UMART, UMART_UM, um, from); } int find_deslin(const char * deslin, int from = 0) const { return find(LF_DESLIN, DESLIN_CODLIN, deslin, from); } int find_codcorr(const char * codcorr, int from = 0) const { return find(LF_CODCORR, CODCORR_CODARTALT, codcorr, from); }