Aggiunto metodo TArticolo_giacenza::riporta_saldi().
Corretto il cast a const char* di _codice (e' un TRecfield*) Corretta visualizzazione finestra azzeramento saldi nella rebuild_balances(). Corretto ritorno nelle funzioni find_mag() e find_storico() git-svn-id: svn://10.65.10.50/trunk@5768 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
053fc81929
commit
dde8b847a6
24
mg/mglib.h
24
mg/mglib.h
@ -62,11 +62,17 @@ typedef enum {
|
||||
char * Nome_valorizz[];
|
||||
|
||||
typedef enum {
|
||||
valorizz_ultcos , valorizz_mediacos , valorizz_przlist ,
|
||||
valorizz_coststd , valorizz_costmedio ,
|
||||
valorizz_FIFOa , valorizz_LIFOa ,
|
||||
valorizz_FIFO , valorizz_LIFO,
|
||||
valorizz_FIFOr , valorizz_LIFOr
|
||||
valorizz_costmedio,
|
||||
valorizz_ultcos,
|
||||
valorizz_mediacos,
|
||||
valorizz_przlist,
|
||||
valorizz_coststd,
|
||||
valorizz_FIFOa,
|
||||
valorizz_LIFOa,
|
||||
valorizz_FIFO,
|
||||
valorizz_LIFO,
|
||||
valorizz_FIFOr,
|
||||
valorizz_LIFOr
|
||||
} TTipo_valorizz;
|
||||
|
||||
class TArticolo : public TMultiple_rectype
|
||||
@ -125,7 +131,13 @@ public:
|
||||
int find_storico(const char * annoesrif, const char * annoes = NULL, const char * codmag = NULL, int from = 0) const;
|
||||
TRecord_array & mag(const char * annoes) const;
|
||||
TRecord_array & storico(const char * annoesrif) const;
|
||||
|
||||
|
||||
// La seguente funzione riporta le rimanenze finali dell'esercizio oldes come
|
||||
// rimanenze iniziali dell'esercizio newes, valorizzando secondo il tipo passato
|
||||
// Si suppone che i saldi siano coerenti con i movimenti (effettuare una rebuild_balances()
|
||||
// di oldes.
|
||||
bool riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, const char * catven ,const char * codlist);
|
||||
|
||||
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;
|
||||
|
@ -89,7 +89,7 @@ const TString & TArticolo::get_str(const char* fieldname) const
|
||||
void TArticolo::set_body_key(TRectype & rowrec)
|
||||
{
|
||||
const int logicnum = rowrec.num();
|
||||
const char * codice = (const char *) _codice;
|
||||
const char * codice = (const char *) (*_codice);
|
||||
|
||||
switch (logicnum)
|
||||
{
|
||||
@ -109,7 +109,7 @@ void TArticolo::set_body_key(TRectype & rowrec)
|
||||
|
||||
int TArticolo::read(TRectype & rec, word op, word lockop)
|
||||
{
|
||||
if (op == _isequal && lockop == _nolock &&strcmp(rec.get(ANAMAG_CODART), (const char *) _codice) == 0)
|
||||
if (op == _isequal && lockop == _nolock && strcmp (rec.get(ANAMAG_CODART), (const char *) (*_codice)) == 0)
|
||||
return NOERR;
|
||||
|
||||
*_codice = rec.get(ANAMAG_CODART);
|
||||
@ -160,7 +160,7 @@ void TArticolo::update_ultcosti(real costo,TDate data)
|
||||
bool TArticolo::unlock()
|
||||
{
|
||||
bool rv;
|
||||
if (*(const char *)_codice)
|
||||
if (*((const char *)*_codice))
|
||||
{
|
||||
TLocalisamfile anag(LF_ANAMAG);
|
||||
anag.curr()=*this;
|
||||
@ -298,7 +298,7 @@ int TArticolo_giacenza::find_mag(const char * annoes, const char * codmag, const
|
||||
TRecord_array & rmag = mag(annoes);
|
||||
const int last = rmag.last_row();
|
||||
|
||||
if (from <= last)
|
||||
if (last > 0 && from <= last)
|
||||
{
|
||||
const int codmag_len = codmag ? strlen(codmag) : 0;
|
||||
const int livello_len = livello ? strlen(livello) : 0;
|
||||
@ -322,8 +322,8 @@ int TArticolo_giacenza::find_storico(const char * annoesrif, const char * annoes
|
||||
{
|
||||
TRecord_array & rsto = storico(annoesrif);
|
||||
const int last = rsto.last_row();
|
||||
|
||||
if (from <= last)
|
||||
|
||||
if (last > 0 && from <= last)
|
||||
{
|
||||
const int codmag_len = codmag ? strlen(codmag) : 0;
|
||||
|
||||
@ -355,6 +355,75 @@ TRecord_array & TArticolo_giacenza::storico(const char * annoesrif) const
|
||||
|
||||
HIDDEN int last_esercizio = -1;
|
||||
|
||||
bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo, const char* catven, const char* codlis)
|
||||
{
|
||||
TString codes(newes), mag, liv;
|
||||
TRecord_array& rec_arr = TArticolo_giacenza::mag(oldes);
|
||||
const int last = rec_arr.last_row();
|
||||
real rim, val, giac, inpf, proc, icl, acl;
|
||||
|
||||
rec_arr.renum_key(MAG_ANNOES, codes); // Rinumera
|
||||
for (int r = last;r > 0 ; r = rec_arr.pred_row(r)) // Scorre le righe
|
||||
{
|
||||
TRectype& rec = rec_arr[r];
|
||||
mag = rec.get(MAG_CODMAG);
|
||||
liv = rec.get(MAG_LIVELLO);
|
||||
giac = rec.get_real(MAG_GIAC);
|
||||
inpf = rec.get_real(MAG_PRODFIN);
|
||||
proc = rec.get_real(MAG_PRODCOMP);
|
||||
acl = rec.get_real(MAG_ACL);
|
||||
icl = rec.get_real(MAG_INCL);
|
||||
rim = giac + inpf - proc + acl - icl;
|
||||
switch (tipo)
|
||||
{
|
||||
case valorizz_costmedio:
|
||||
val = costo_medio(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_ultcos:
|
||||
val = ultimo_costo(oldes);
|
||||
break;
|
||||
case valorizz_mediacos:
|
||||
val = media_costi(oldes);
|
||||
break;
|
||||
case valorizz_przlist:
|
||||
val = prezzo_listino(oldes, catven, codlis);
|
||||
break;
|
||||
case valorizz_coststd:
|
||||
val = costo_standard(oldes);
|
||||
break;
|
||||
case valorizz_FIFOa:
|
||||
val = FIFO_annuale(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_LIFOa:
|
||||
val = LIFO_annuale(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_FIFO:
|
||||
val = FIFO(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_LIFO:
|
||||
val = LIFO(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_FIFOr:
|
||||
val = FIFO_ragionieristico(oldes, mag, liv);
|
||||
break;
|
||||
case valorizz_LIFOr:
|
||||
val = LIFO_ragionieristico(oldes, mag, liv);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
rec.put(MAG_RIM, rim); rec.put(MAG_VALRIM, val);
|
||||
rec.zero(MAG_ACQ); rec.zero(MAG_VALACQ);
|
||||
rec.zero(MAG_ENT); rec.zero(MAG_VALENT);
|
||||
rec.zero(MAG_VEN); rec.zero(MAG_VALVEN);
|
||||
rec.zero(MAG_USC); rec.zero(MAG_VALUSC);
|
||||
rec.zero(MAG_SCARTI);
|
||||
}
|
||||
|
||||
// Scrive il pastrocchio (eventualmente sovrascrive)
|
||||
return rec_arr.write(TRUE) == NOERR;
|
||||
}
|
||||
|
||||
real TArticolo_giacenza::ultimo_costo(const char * annoes) const
|
||||
{
|
||||
|
||||
@ -1386,6 +1455,8 @@ bool rebuild_balances(const TString16 annoes/*, bool reset_giac*/)
|
||||
TLocalisamfile mag(LF_MAG);
|
||||
// Il flag di reset delle giacenze viene impostato in base alla chiusura dell'esercizio
|
||||
// precedente
|
||||
// Aggiorna il cazzillo per caricare eventuali date di chiusura e altre amenita' simili
|
||||
_esercizi.update();
|
||||
const int pred_es = _esercizi.pred(atoi(annoes));
|
||||
const bool reset_giac = pred_es != 0 ? _esercizi.esercizio(pred_es).chiusura_mag() != TDate(NULLDATE) : TRUE;
|
||||
if (reset_giac) {
|
||||
@ -1393,14 +1464,16 @@ bool rebuild_balances(const TString16 annoes/*, bool reset_giac*/)
|
||||
mag.put("ANNOES",annoes);
|
||||
mag.read(_isgteq);
|
||||
TString information;
|
||||
TIndwin idle(40,"", FALSE);
|
||||
//TIndwin idle(40,"Azzeramento saldi in corso...", FALSE);
|
||||
TProgind idle(40,"Azzeramento saldi in corso...", FALSE,FALSE);
|
||||
while (!mag.eof() && annoes==mag.get("ANNOES"))
|
||||
{
|
||||
TString currcode(mag.get("CODART"));
|
||||
TArticolo articolo(currcode);
|
||||
information="Azzeramento saldi";
|
||||
information << articolo.codice();
|
||||
idle.set_text(information);
|
||||
//information="Azzeramento saldi articolo: ";
|
||||
//information << articolo.codice();
|
||||
//idle.set_text(information);
|
||||
//do_events();
|
||||
if (articolo.lock_and_prompt())
|
||||
{
|
||||
while (!mag.eof() && currcode==mag.get("CODART"))
|
||||
|
Loading…
x
Reference in New Issue
Block a user