Primo debug degli oggetti articolo e Multiple_record

git-svn-id: svn://10.65.10.50/trunk@4523 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-06-04 14:27:02 +00:00
parent 60e67cef72
commit b511a986bf
2 changed files with 80 additions and 15 deletions

View File

@ -1,7 +1,16 @@
#include "mglib02.h"
#include <mask.h>
#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)

View File

@ -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); }