Patch level : 10.0
Files correlati : mg1.exe mg1200.msk Ricompilazione Demo : [ ] Commento : Corretto ricalcolo saldi di magazzino git-svn-id: svn://10.65.10.50/trunk@19183 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f6e08c7fe8
commit
35a2a2dc74
@ -45,7 +45,6 @@ bool TMask_buildmov::handle_annoes(TMask_field &fld, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
class TApp_rebuildbalances : public TSkeleton_application
|
||||
{
|
||||
TRelation* _rel; // relazione
|
||||
@ -56,20 +55,14 @@ class TApp_rebuildbalances : public TSkeleton_application
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
TApp_rebuildbalances() {}
|
||||
virtual ~TApp_rebuildbalances() {}
|
||||
};
|
||||
|
||||
bool TApp_rebuildbalances::create()
|
||||
{
|
||||
open_files(LF_UMART, LF_MAG, LF_RMOVMAG, LF_TABCOM, LF_STOMAG,
|
||||
LF_DESLIN, LF_CODCORR, 0);
|
||||
open_files(LF_UMART, LF_MAG, LF_RMOVMAG, LF_TABCOM, LF_STOMAG, LF_DESLIN, LF_CODCORR, 0);
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
|
||||
void TApp_rebuildbalances::main_loop()
|
||||
{
|
||||
TMask_buildmov m;
|
||||
@ -77,14 +70,12 @@ void TApp_rebuildbalances::main_loop()
|
||||
{
|
||||
if (!rebuild_balances(m.get_int(F_ANNOES)))
|
||||
warning_box(TR("A causa degli errori riscontrati i saldi di magazzino \npotrebbero non essere stati del tutto aggiornati. \nProcedere ad una nuova operazione di ''Ricostruzione saldi''"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int mg1200(int argc, char* argv[])
|
||||
{
|
||||
TApp_rebuildbalances a;
|
||||
|
||||
a.run(argc, argv, TR("Ricostruzione saldi"));
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,10 +1,6 @@
|
||||
#include "mg1200.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Ricostruzione Saldi" 0 0 0 0
|
||||
PAGE "Ricostruzione Saldi" -1 -1 40 3
|
||||
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
@ -27,5 +23,11 @@ BEGIN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
@ -553,10 +553,10 @@ protected:
|
||||
// @member: effettua l'aggiornamento dei saldi di una giacenza sulle gacenze per ciente/fornitore
|
||||
void update_balances_clifo(TRectype & clifomagrec, const TSaldo_mag_clifo & s);
|
||||
// @member: effettua l'aggiornamento di un saldo di una giacenza
|
||||
void update_balance(TRectype & rec, const char * fieldname, real diff) const;
|
||||
void update_balance(TRectype & rec, const char * fieldname, const real& diff, int sgn) const;
|
||||
|
||||
void giac_putkey(TLocalisamfile & mag, TSaldo_mag & s);
|
||||
void giac_putkey_clifo(TLocalisamfile & clifomag, TSaldo_mag_clifo & s);
|
||||
void giac_putkey(TRectype& mag, const TSaldo_mag & s);
|
||||
void giac_putkey_clifo(TRectype& clifomag, const TSaldo_mag_clifo & s);
|
||||
bool lock_anamag(const char *codart);
|
||||
bool unlock_anamag(const char *codart) ;
|
||||
virtual const char * codmag_rauto(int r) const { return NULL;}
|
||||
|
@ -521,8 +521,10 @@ void TArticolo_giacenza::set_body_key(TRectype & rowrec)
|
||||
void TArticolo_giacenza::set_anno_mag (int anno)
|
||||
{
|
||||
if (_anno_mag != anno)
|
||||
{
|
||||
remove_body(LF_MAG);
|
||||
_anno_mag = anno;
|
||||
_anno_mag = anno;
|
||||
}
|
||||
}
|
||||
|
||||
void TArticolo_giacenza::set_anno_sto (int anno)
|
||||
@ -633,13 +635,13 @@ bool TArticolo_giacenza::is_deletable(const TRectype& mag) const
|
||||
for (i = 0; protected_fields[i]; i++)
|
||||
{
|
||||
const TString& val = mag.get(protected_fields[i]);
|
||||
if (val.not_empty() && !real::is_null(val))
|
||||
if (val.full() && !real::is_null(val))
|
||||
return false;
|
||||
}
|
||||
for (i = 0; zero_fields[i]; i++)
|
||||
{
|
||||
const TString& val = mag.get(zero_fields[i]);
|
||||
if (val.not_empty() && !real::is_null(val))
|
||||
if (val.full() && !real::is_null(val))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -647,7 +649,8 @@ bool TArticolo_giacenza::is_deletable(const TRectype& mag) const
|
||||
|
||||
bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk)
|
||||
{
|
||||
TRecord_array oldmag = mag(codespre);
|
||||
CHECKD(codes > 0 && codespre != codes, "Davvero azzereresti i saldi dall'esercizio ", codes);
|
||||
TRecord_array& oldmag = mag(codespre);
|
||||
TRecord_array& rec_arr = mag(codes);
|
||||
|
||||
const int last = rec_arr.last_row();
|
||||
@ -656,20 +659,22 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk
|
||||
TRectype& mag = rec_arr[r];
|
||||
for (int i = 0; zero_fields[i]; i++)
|
||||
mag.zero(zero_fields[i]);
|
||||
const TString80 liv(mag.get(MAG_LIVELLO));
|
||||
const int row = find_mag(oldmag, mag.get(MAG_CODMAG), liv);
|
||||
|
||||
if (row >= 0)
|
||||
{
|
||||
const TRectype & oldrec = oldmag[row];
|
||||
|
||||
for (int i = 0; protected_fields[i]; i++)
|
||||
{
|
||||
const TString& val = oldrec.get(protected_fields[i]);
|
||||
if (val.not_empty() && !real::is_null(val))
|
||||
mag.put(protected_fields[i], val);
|
||||
}
|
||||
}
|
||||
|
||||
if (codespre > 0)
|
||||
{
|
||||
const TString80 liv(mag.get(MAG_LIVELLO));
|
||||
const int row = find_mag(oldmag, mag.get(MAG_CODMAG), liv);
|
||||
if (row >= 0)
|
||||
{
|
||||
const TRectype& oldrec = oldmag[row];
|
||||
for (int i = 0; protected_fields[i]; i++)
|
||||
{
|
||||
const TString& val = oldrec.get(protected_fields[i]);
|
||||
if (val.full() && !real::is_null(val))
|
||||
mag.put(protected_fields[i], val);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_deletable(mag))
|
||||
rec_arr.destroy_row(r, TRUE);
|
||||
}
|
||||
@ -682,6 +687,7 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk
|
||||
bool TArticolo_giacenza::riporta_saldi(int oldes, int newes, const TTipo_valorizz tipo,
|
||||
const char* catven, const char* codlis, bool save_to_disk)
|
||||
{
|
||||
CHECKD(oldes > 0 && oldes != newes, "Davvero riporteresti i saldi dall'esercizio ", oldes);
|
||||
TString8 codmag;
|
||||
TString16 liv;
|
||||
TRecord_array& rec_arr = mag(oldes);
|
||||
@ -929,8 +935,7 @@ real TArticolo_giacenza::costo_standard(int annoes) const
|
||||
|
||||
real TArticolo_giacenza::costo_medio(int annoes, const char * codmag, const char * livello) const
|
||||
{
|
||||
real acq;
|
||||
real valacq;
|
||||
real acq, valacq;
|
||||
|
||||
#ifdef DBG
|
||||
if (strlen(codmag)>3)
|
||||
|
239
mg/mglib02a.cpp
239
mg/mglib02a.cpp
@ -572,7 +572,7 @@ bool TMov_mag::lock_anamag(const char *codart)
|
||||
}
|
||||
|
||||
|
||||
void TMov_mag::giac_putkey(TLocalisamfile & mag, TSaldo_mag & s)
|
||||
void TMov_mag::giac_putkey(TRectype& mag, const TSaldo_mag & s)
|
||||
{
|
||||
mag.zero();
|
||||
mag.put(MAG_ANNOES, s.codes());
|
||||
@ -581,7 +581,7 @@ void TMov_mag::giac_putkey(TLocalisamfile & mag, TSaldo_mag & s)
|
||||
mag.put(MAG_LIVELLO, s.livello());
|
||||
}
|
||||
|
||||
void TMov_mag::giac_putkey_clifo(TLocalisamfile & clifomag, TSaldo_mag_clifo & s)
|
||||
void TMov_mag::giac_putkey_clifo(TRectype& clifomag, const TSaldo_mag_clifo & s)
|
||||
{
|
||||
clifomag.zero();
|
||||
clifomag.put(CLIFOGIAC_ANNOES, s.codes());
|
||||
@ -593,35 +593,35 @@ void TMov_mag::giac_putkey_clifo(TLocalisamfile & clifomag, TSaldo_mag_clifo & s
|
||||
}
|
||||
|
||||
// aggiorna tutti i saldi in base alle modifiche fatte.
|
||||
// il lock su anagrafica dovrebbe garantire il lock su tutte le
|
||||
// giacenze dell'articolo
|
||||
// il lock su anagrafica dovrebbe garantire il lock su tutte le giacenze dell'articolo
|
||||
bool TMov_mag::update_balances(bool lock)
|
||||
{
|
||||
bool updated_bal = true;
|
||||
|
||||
TLocalisamfile mag(LF_MAG);
|
||||
mag.setkey(2);
|
||||
TRectype& magcurr = mag.curr();
|
||||
|
||||
const TRecord_array& b = body();
|
||||
const TString8 hcodcaus(get(MOVMAG_CODCAUS));
|
||||
const long numreg = get_long(MOVMAG_NUMREG);
|
||||
const TString8 hcodcaus = get(MOVMAG_CODCAUS);
|
||||
|
||||
for (int i = b.last_row(); i > 0; i = b.pred_row(i))
|
||||
if (causale(i).update_ultcos())
|
||||
{
|
||||
const TRectype & rec = b[i];
|
||||
TArticolo & art = articolo(i);
|
||||
|
||||
if (art.lock_and_prompt(lock ? _testandlock : _nolock))
|
||||
{
|
||||
const real prezzo = art.convert_to_um(rec.get_real(RMOVMAG_PREZZO), NULL, rec.get(RMOVMAG_UM), false);
|
||||
|
||||
const long numreg = get_long(MOVMAG_NUMREG);
|
||||
art.update_ultcosti(prezzo,get_date(MOVMAG_DATACOMP), numreg, i);
|
||||
art.rewrite();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lock)
|
||||
art.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
if (_saldi_mag.items() > 0)
|
||||
@ -631,25 +631,30 @@ bool TMov_mag::update_balances(bool lock)
|
||||
_saldi_mag.get_keys(keys_mag);
|
||||
keys_mag.sort();
|
||||
|
||||
for (TToken_string * curr_key = (TToken_string *)keys_mag.first_item();
|
||||
curr_key != NULL;
|
||||
curr_key = (TToken_string *)keys_mag.succ_item()
|
||||
)
|
||||
for (TToken_string* curr_key = (TToken_string*)keys_mag.first_item();
|
||||
curr_key != NULL; curr_key = (TToken_string*)keys_mag.succ_item())
|
||||
{
|
||||
TSaldo_mag & saldo = (TSaldo_mag &)_saldi_mag[*curr_key];
|
||||
TArticolo_giacenza & art = cached_article_balances(saldo.codart());
|
||||
const TSaldo_mag& saldo = (const TSaldo_mag&)_saldi_mag[*curr_key];
|
||||
const TCodice_articolo& codart = saldo.codart();
|
||||
TArticolo_giacenza& art = cached_article_balances(codart);
|
||||
|
||||
if (art.lock_and_prompt(lock ? _testandlock : _nolock))
|
||||
{
|
||||
giac_putkey(mag, saldo);
|
||||
if (mag.read() != NOERR)
|
||||
giac_putkey(magcurr, saldo);
|
||||
int err = mag.read();
|
||||
if (err != NOERR)
|
||||
{
|
||||
giac_putkey(mag, saldo);
|
||||
mag.put(MAG_NRIGA, art.mag(get(MOVMAG_ANNOES)).rows() + 1);
|
||||
mag.write();
|
||||
TRecord_array& sld = art.mag(saldo.codes());
|
||||
const int nriga = sld.rows() + 1;
|
||||
giac_putkey(magcurr, saldo);
|
||||
magcurr.put(MAG_NRIGA, nriga);
|
||||
sld.add_row(magcurr);
|
||||
sld.write(nriga > 1); // write riga singola, rewrite righe multiple
|
||||
}
|
||||
update_balances(mag.curr(), saldo);
|
||||
mag.rewrite();
|
||||
update_balances(magcurr, saldo);
|
||||
err = mag.rewrite();
|
||||
if (err != NOERR)
|
||||
updated_bal = false;
|
||||
|
||||
if (lock)
|
||||
art.unlock();
|
||||
@ -661,6 +666,7 @@ bool TMov_mag::update_balances(bool lock)
|
||||
{
|
||||
TLocalisamfile clifomag(LF_CLIFOGIAC);
|
||||
clifomag.setkey(2);
|
||||
TRectype& clifomag_curr = clifomag.curr();
|
||||
|
||||
TString_array keys_clifo;
|
||||
|
||||
@ -668,8 +674,7 @@ bool TMov_mag::update_balances(bool lock)
|
||||
keys_clifo.sort();
|
||||
|
||||
for (TToken_string* curr_key = (TToken_string*)keys_clifo.first_item();
|
||||
curr_key != NULL;
|
||||
curr_key = (TToken_string *)keys_clifo.succ_item())
|
||||
curr_key != NULL; curr_key = (TToken_string*)keys_clifo.succ_item())
|
||||
{
|
||||
TSaldo_mag_clifo & saldo=(TSaldo_mag_clifo &)_saldi_mag_clifo[*curr_key];
|
||||
|
||||
@ -677,28 +682,28 @@ bool TMov_mag::update_balances(bool lock)
|
||||
|
||||
if (art.lock_and_prompt(lock ? _testandlock : _nolock))
|
||||
{
|
||||
giac_putkey_clifo(clifomag, saldo);
|
||||
giac_putkey_clifo(clifomag_curr, saldo);
|
||||
if (clifomag.read() != NOERR)
|
||||
{
|
||||
// non trovato: aggiungo
|
||||
clifomag.setkey(1);
|
||||
giac_putkey_clifo(clifomag, saldo);
|
||||
clifomag.put(CLIFOGIAC_NRIGA, 999);
|
||||
giac_putkey_clifo(clifomag_curr, saldo);
|
||||
clifomag_curr.put(CLIFOGIAC_NRIGA, 999);
|
||||
if (clifomag.read(_isgteq) == NOERR)
|
||||
clifomag.prev();
|
||||
int nriga = 1;
|
||||
if (clifomag.get_int(CLIFOGIAC_ANNOES) == saldo.codes() &&
|
||||
clifomag.get_char(CLIFOGIAC_TIPOCF) == saldo.tipocf() &&
|
||||
clifomag.get(CLIFOGIAC_CODCF) == saldo.codcf() &&
|
||||
clifomag.get(CLIFOGIAC_CODART) == saldo.codart() &&
|
||||
clifomag.get(CLIFOGIAC_LIVELLO ) == saldo.livello())
|
||||
nriga = clifomag.get_int(CLIFOGIAC_NRIGA) + 1;
|
||||
giac_putkey_clifo(clifomag, saldo);
|
||||
clifomag.put(CLIFOGIAC_NRIGA, nriga);
|
||||
if (clifomag_curr.get_int(CLIFOGIAC_ANNOES) == saldo.codes() &&
|
||||
clifomag_curr.get_char(CLIFOGIAC_TIPOCF) == saldo.tipocf() &&
|
||||
clifomag_curr.get(CLIFOGIAC_CODCF) == saldo.codcf() &&
|
||||
clifomag_curr.get(CLIFOGIAC_CODART) == saldo.codart() &&
|
||||
clifomag_curr.get(CLIFOGIAC_LIVELLO ) == saldo.livello())
|
||||
nriga = clifomag_curr.get_int(CLIFOGIAC_NRIGA) + 1;
|
||||
giac_putkey_clifo(clifomag_curr, saldo);
|
||||
clifomag_curr.put(CLIFOGIAC_NRIGA, nriga);
|
||||
clifomag.write();
|
||||
clifomag.setkey(2);
|
||||
}
|
||||
update_balances_clifo(clifomag.curr(), saldo);
|
||||
update_balances_clifo(clifomag_curr, saldo);
|
||||
clifomag.rewrite();
|
||||
|
||||
if (lock)
|
||||
@ -721,45 +726,45 @@ void TMov_mag::update_balances(TRectype & magrec, const TSaldo_mag & s)
|
||||
{
|
||||
const real diff = s.quant();
|
||||
|
||||
update_balance(magrec, MAG_GIAC, diff * (real)caus.sgn(s_giac)); // update ..
|
||||
update_balance(magrec, MAG_ACQ, diff * (real)caus.sgn(s_acq)); // update ..
|
||||
update_balance(magrec, MAG_ENT, diff * (real)caus.sgn(s_ent));
|
||||
update_balance(magrec, MAG_VEN, diff * (real)caus.sgn(s_ven));
|
||||
update_balance(magrec, MAG_USC, diff * (real)caus.sgn(s_usc));
|
||||
update_balance(magrec, MAG_ORDC, diff * (real)caus.sgn(s_ordc));
|
||||
update_balance(magrec, MAG_ORDF, diff * (real)caus.sgn(s_ordf));
|
||||
update_balance(magrec, MAG_RIM, diff * (real)caus.sgn(s_rim));
|
||||
update_balance(magrec, MAG_SCARTI, diff * (real)caus.sgn(s_scart));
|
||||
update_balance(magrec, MAG_INCL, diff * (real)caus.sgn(s_incl));
|
||||
update_balance(magrec, MAG_ACL, diff * (real)caus.sgn(s_acl));
|
||||
update_balance(magrec, MAG_PRODCOMP, diff * (real)caus.sgn(s_prodc));
|
||||
update_balance(magrec, MAG_PRODFIN, diff * (real)caus.sgn(s_prodf));
|
||||
update_balance(magrec, MAG_NLABEL, diff * (real)caus.sgn(s_label));
|
||||
update_balance(magrec, MAG_USER1, diff * (real)caus.sgn(s_user1));
|
||||
update_balance(magrec, MAG_USER2, diff * (real)caus.sgn(s_user2));
|
||||
update_balance(magrec, MAG_USER3, diff * (real)caus.sgn(s_user3));
|
||||
update_balance(magrec, MAG_USER4, diff * (real)caus.sgn(s_user4));
|
||||
update_balance(magrec, MAG_USER5, diff * (real)caus.sgn(s_user5));
|
||||
update_balance(magrec, MAG_USER6, diff * (real)caus.sgn(s_user6));
|
||||
update_balance(magrec, MAG_GIAC, diff, caus.sgn(s_giac)); // update ..
|
||||
update_balance(magrec, MAG_ACQ, diff, caus.sgn(s_acq)); // update ..
|
||||
update_balance(magrec, MAG_ENT, diff, caus.sgn(s_ent));
|
||||
update_balance(magrec, MAG_VEN, diff, caus.sgn(s_ven));
|
||||
update_balance(magrec, MAG_USC, diff, caus.sgn(s_usc));
|
||||
update_balance(magrec, MAG_ORDC, diff, caus.sgn(s_ordc));
|
||||
update_balance(magrec, MAG_ORDF, diff, caus.sgn(s_ordf));
|
||||
update_balance(magrec, MAG_RIM, diff, caus.sgn(s_rim));
|
||||
update_balance(magrec, MAG_SCARTI, diff, caus.sgn(s_scart));
|
||||
update_balance(magrec, MAG_INCL, diff, caus.sgn(s_incl));
|
||||
update_balance(magrec, MAG_ACL, diff, caus.sgn(s_acl));
|
||||
update_balance(magrec, MAG_PRODCOMP, diff, caus.sgn(s_prodc));
|
||||
update_balance(magrec, MAG_PRODFIN, diff, caus.sgn(s_prodf));
|
||||
update_balance(magrec, MAG_NLABEL, diff, caus.sgn(s_label));
|
||||
update_balance(magrec, MAG_USER1, diff, caus.sgn(s_user1));
|
||||
update_balance(magrec, MAG_USER2, diff, caus.sgn(s_user2));
|
||||
update_balance(magrec, MAG_USER3, diff, caus.sgn(s_user3));
|
||||
update_balance(magrec, MAG_USER4, diff, caus.sgn(s_user4));
|
||||
update_balance(magrec, MAG_USER5, diff, caus.sgn(s_user5));
|
||||
update_balance(magrec, MAG_USER6, diff, caus.sgn(s_user6));
|
||||
}
|
||||
if (caus.update_val())
|
||||
{
|
||||
const real diff_val = s.valore();
|
||||
|
||||
update_balance(magrec, MAG_VALACQ, diff_val * (real)caus.sgn(s_acq)); // update ..
|
||||
update_balance(magrec, MAG_VALENT, diff_val * (real)caus.sgn(s_ent));
|
||||
update_balance(magrec, MAG_VALVEN, diff_val * (real)caus.sgn(s_ven));
|
||||
update_balance(magrec, MAG_VALUSC, diff_val * (real)caus.sgn(s_usc));
|
||||
update_balance(magrec, MAG_VALORDC, diff_val * (real)caus.sgn(s_ordc));
|
||||
update_balance(magrec, MAG_VALORDF, diff_val * (real)caus.sgn(s_ordf));
|
||||
update_balance(magrec, MAG_VALRIM, diff_val* (real)caus.sgn(s_rim));
|
||||
update_balance(magrec, MAG_VALSCARTI, diff_val * (real)caus.sgn(s_scart));
|
||||
update_balance(magrec, MAG_USERVAL1, diff_val * (real)caus.sgn(s_user1));
|
||||
update_balance(magrec, MAG_USERVAL2, diff_val * (real)caus.sgn(s_user2));
|
||||
update_balance(magrec, MAG_USERVAL3, diff_val * (real)caus.sgn(s_user3));
|
||||
update_balance(magrec, MAG_USERVAL4, diff_val * (real)caus.sgn(s_user4));
|
||||
update_balance(magrec, MAG_USERVAL5, diff_val * (real)caus.sgn(s_user5));
|
||||
update_balance(magrec, MAG_USERVAL6, diff_val * (real)caus.sgn(s_user6));
|
||||
update_balance(magrec, MAG_VALACQ, diff_val, caus.sgn(s_acq)); // update ..
|
||||
update_balance(magrec, MAG_VALENT, diff_val, caus.sgn(s_ent));
|
||||
update_balance(magrec, MAG_VALVEN, diff_val, caus.sgn(s_ven));
|
||||
update_balance(magrec, MAG_VALUSC, diff_val, caus.sgn(s_usc));
|
||||
update_balance(magrec, MAG_VALORDC, diff_val, caus.sgn(s_ordc));
|
||||
update_balance(magrec, MAG_VALORDF, diff_val, caus.sgn(s_ordf));
|
||||
update_balance(magrec, MAG_VALRIM, diff_val, caus.sgn(s_rim));
|
||||
update_balance(magrec, MAG_VALSCARTI, diff_val, caus.sgn(s_scart));
|
||||
update_balance(magrec, MAG_USERVAL1, diff_val, caus.sgn(s_user1));
|
||||
update_balance(magrec, MAG_USERVAL2, diff_val, caus.sgn(s_user2));
|
||||
update_balance(magrec, MAG_USERVAL3, diff_val, caus.sgn(s_user3));
|
||||
update_balance(magrec, MAG_USERVAL4, diff_val, caus.sgn(s_user4));
|
||||
update_balance(magrec, MAG_USERVAL5, diff_val, caus.sgn(s_user5));
|
||||
update_balance(magrec, MAG_USERVAL6, diff_val, caus.sgn(s_user6));
|
||||
}
|
||||
}
|
||||
|
||||
@ -773,48 +778,48 @@ void TMov_mag::update_balances_clifo(TRectype & clifomagrec, const TSaldo_mag_cl
|
||||
{
|
||||
const real diff = s.quant();
|
||||
|
||||
update_balance(clifomagrec, CLIFOGIAC_GIAC, -diff * (real)caus.sgn(s_giac)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_ACQ, diff * (real)caus.sgn(s_ven)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_ENT, diff * (real)caus.sgn(s_usc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VEN, diff * (real)caus.sgn(s_acq));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USC, diff * (real)caus.sgn(s_ent));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ORDC, diff * (real)caus.sgn(s_ordf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ORDF, diff * (real)caus.sgn(s_ordc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_RIM, -diff * (real)caus.sgn(s_rim));
|
||||
update_balance(clifomagrec, CLIFOGIAC_SCARTI, -diff * (real)caus.sgn(s_scart));
|
||||
update_balance(clifomagrec, CLIFOGIAC_INCL, diff * (real)caus.sgn(s_acl));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ACL, diff * (real)caus.sgn(s_incl));
|
||||
update_balance(clifomagrec, CLIFOGIAC_PRODCOMP, -diff * (real)caus.sgn(s_prodc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_PRODFIN, -diff * (real)caus.sgn(s_prodf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTIN, diff * (real)caus.sgn(s_dotin));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTOD, diff * (real)caus.sgn(s_dotod));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTTM, diff * (real)caus.sgn(s_dottm));
|
||||
update_balance(clifomagrec, CLIFOGIAC_CONSANNO, diff * (real)caus.sgn(s_consanno));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER1, diff * (real)caus.sgn(s_user1));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER2, diff * (real)caus.sgn(s_user2));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER3, diff * (real)caus.sgn(s_user3));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER4, diff * (real)caus.sgn(s_user4));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER5, diff * (real)caus.sgn(s_user5));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER6, diff * (real)caus.sgn(s_user6));
|
||||
update_balance(clifomagrec, CLIFOGIAC_GIAC, -diff, caus.sgn(s_giac)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_ACQ, diff, caus.sgn(s_ven)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_ENT, diff, caus.sgn(s_usc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VEN, diff, caus.sgn(s_acq));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USC, diff, caus.sgn(s_ent));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ORDC, diff, caus.sgn(s_ordf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ORDF, diff, caus.sgn(s_ordc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_RIM, -diff, caus.sgn(s_rim));
|
||||
update_balance(clifomagrec, CLIFOGIAC_SCARTI, -diff, caus.sgn(s_scart));
|
||||
update_balance(clifomagrec, CLIFOGIAC_INCL, diff, caus.sgn(s_acl));
|
||||
update_balance(clifomagrec, CLIFOGIAC_ACL, diff, caus.sgn(s_incl));
|
||||
update_balance(clifomagrec, CLIFOGIAC_PRODCOMP, -diff, caus.sgn(s_prodc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_PRODFIN, -diff, caus.sgn(s_prodf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTIN, diff, caus.sgn(s_dotin));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTOD, diff, caus.sgn(s_dotod));
|
||||
update_balance(clifomagrec, CLIFOGIAC_DOTTM, diff, caus.sgn(s_dottm));
|
||||
update_balance(clifomagrec, CLIFOGIAC_CONSANNO, diff, caus.sgn(s_consanno));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER1, diff, caus.sgn(s_user1));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER2, diff, caus.sgn(s_user2));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER3, diff, caus.sgn(s_user3));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER4, diff, caus.sgn(s_user4));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER5, diff, caus.sgn(s_user5));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USER6, diff, caus.sgn(s_user6));
|
||||
}
|
||||
if (caus.update_val())
|
||||
{
|
||||
const real diff_val = s.valore();
|
||||
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALACQ, diff_val * (real)caus.sgn(s_ven)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALENT, diff_val * (real)caus.sgn(s_usc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALVEN, diff_val * (real)caus.sgn(s_acq));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALUSC, diff_val * (real)caus.sgn(s_ven));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALORDC, diff_val * (real)caus.sgn(s_ordf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALORDF, diff_val * (real)caus.sgn(s_ordc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALRIM, -diff_val* (real)caus.sgn(s_rim));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALSCARTI, -diff_val * (real)caus.sgn(s_scart));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL1, diff_val * (real)caus.sgn(s_user1));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL2, diff_val * (real)caus.sgn(s_user2));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL3, diff_val * (real)caus.sgn(s_user3));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL4, diff_val * (real)caus.sgn(s_user4));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL5, diff_val * (real)caus.sgn(s_user5));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL6, diff_val * (real)caus.sgn(s_user6));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALACQ, diff_val, caus.sgn(s_ven)); // update ..
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALENT, diff_val, caus.sgn(s_usc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALVEN, diff_val, caus.sgn(s_acq));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALUSC, diff_val, caus.sgn(s_ven));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALORDC, diff_val, caus.sgn(s_ordf));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALORDF, diff_val, caus.sgn(s_ordc));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALRIM, -diff_val, caus.sgn(s_rim));
|
||||
update_balance(clifomagrec, CLIFOGIAC_VALSCARTI, -diff_val, caus.sgn(s_scart));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL1, diff_val, caus.sgn(s_user1));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL2, diff_val, caus.sgn(s_user2));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL3, diff_val, caus.sgn(s_user3));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL4, diff_val, caus.sgn(s_user4));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL5, diff_val, caus.sgn(s_user5));
|
||||
update_balance(clifomagrec, CLIFOGIAC_USERVAL6, diff_val, caus.sgn(s_user6));
|
||||
}
|
||||
}
|
||||
|
||||
@ -857,9 +862,15 @@ int TMov_mag::codice_esercizio(const TDate &d)
|
||||
return esercizi().date2esc(d);
|
||||
}
|
||||
|
||||
void TMov_mag::update_balance(TRectype & rec, const char * fieldname, real diff) const
|
||||
void TMov_mag::update_balance(TRectype & rec, const char * fieldname, const real& val, const int sgn) const
|
||||
{
|
||||
rec.put(fieldname,rec.get_real(fieldname) + diff);
|
||||
if (sgn != 0)
|
||||
{
|
||||
if (sgn > 0)
|
||||
rec.add(fieldname, val);
|
||||
else
|
||||
rec.add(fieldname, -val);
|
||||
}
|
||||
}
|
||||
|
||||
struct TBalance_params
|
||||
@ -964,7 +975,8 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
|
||||
|
||||
p.codes = codes;
|
||||
p.codesprec = esercizi().pred(codes);
|
||||
p.zero_giac = p.codesprec > 0 && esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
//p.zero_giac = p.codesprec > 0 && esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
p.zero_giac = p.codesprec <= 0 || esercizi().esercizio(p.codesprec).chiusura_mag().ok();
|
||||
p.catv = catven;
|
||||
p.codl = codlis;
|
||||
|
||||
@ -985,14 +997,13 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz,
|
||||
|
||||
// ricostruisce i saldi (ciclo sui movimenti)
|
||||
bool ok = true;
|
||||
TRectype rec(LF_MOVMAG);
|
||||
|
||||
TRelation relmovmag(LF_MOVMAG);
|
||||
TRectype& rec = relmovmag.curr();
|
||||
rec.put(MOVMAG_ANNOES, codes);
|
||||
|
||||
TCursor mov_cur(new TRelation(LF_MOVMAG),"", 2, &rec, &rec);
|
||||
|
||||
mov_cur.relation()->lfile().set_curr(new TMov_mag());
|
||||
mov_cur.freeze();
|
||||
TCursor mov_cur(&relmovmag ,"", 2, &rec, &rec);
|
||||
relmovmag.lfile().set_curr(new TMov_mag());
|
||||
msg.format(FR("Ricostruzione saldi esercizio %04d : ricalcolo..."), codes);
|
||||
mov_cur.scan(recalc_mov, (void *) &ok, msg);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user