Patch level : 2003 580

Files correlati     : f110.dir mg1.exe mg1200.msk mg3.exe mg3300.msk mg4.exe mg4300.frm
Ricompilazione Demo : [ ]
Commento            :

GF20086
Se faccio un movimento  su un magazzino es 001 e poi vado in modifica e
cambio il magazzino nell'anagrafica articoli nella pagina giacenze risulta,
oltre alla nuova, una scheda per il mag 001 vuota. Se faccio un ricalcolo
saldi la situazione non cambia.


git-svn-id: svn://10.65.10.50/trunk@11438 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-09-24 13:37:10 +00:00
parent bccc8fef5d
commit ae4aed1ef1
10 changed files with 213 additions and 116 deletions

View File

@ -1,3 +1,3 @@
110
0
$movmag|52|52|135|0|Movimenti di magazzino (?)|||
$movmag|52|52|135|0|Movimenti di magazzino|||

View File

@ -79,7 +79,7 @@ void TApp_rebuildbalances::main_loop()
while (m.run()==K_ENTER)
{
if (!rebuild_balances(m.get(F_ANNOES)))
warning_box("A causa degli errori riscontrati i saldi di magazzino \npotrebbero non essere stati del tutto aggiornati. \nProcedere ad una nuova operazione di ''Ricostruzione saldi''");
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'"));
}
}
@ -87,6 +87,6 @@ int mg1200(int argc, char* argv[])
{
TApp_rebuildbalances a;
a.run(argc, argv, "Ricostruzione saldi");
a.run(argc, argv, TR("Ricostruzione saldi"));
return 0;
}

View File

@ -1,19 +1,6 @@
#include "mg1200.h"
TOOLBAR "" 0 19 40 2
BUTTON DLG_OK 14 2
BEGIN
PROMPT -12 -1 "Ricostruisci"
END
BUTTON DLG_CANCEL 14 2
BEGIN
PROMPT -22 -1 "Annulla"
END
ENDPAGE
PAGE "Ricostruzione movimenti" 11 50 10
PAGE "Ricostruzione Saldi" -1 -1 36 4
DATE F_DATA
BEGIN
@ -24,7 +11,7 @@ END
NUMBER F_ANNOES 4
BEGIN
PROMPT 2 3 "Codice esercizio "
PROMPT 1 1 "Codice esercizio "
USE ESC
INPUT CODTAB F_ANNOES
DISPLAY "Esercizio@20" CODTAB
@ -35,6 +22,19 @@ BEGIN
FLAGS "Z"
END
BUTTON DLG_ELABORA 14 2
BEGIN
PROMPT -12 -1 "~Elabora"
PICTURE BMP_ELABORA
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_QUIT 14 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -9,9 +9,7 @@
#include "mglib.h"
#include "mg3300.h"
#ifndef __CGLIB01_H
#include "../cg/cglib01.h"
#endif
TCausale_magazzino& get_cau(const char* codcaus)
@ -25,6 +23,7 @@ TCausale_magazzino& get_cau(const char* codcaus)
}
return *caus;
}
class TForm_schedemag : public TForm_stampemg
{
int _tolivgiac,_tolivart;

View File

@ -212,19 +212,19 @@ BEGIN
PROMPT 42 12 "Dettaglio i depositi"
END
LIST F_ENABLER 40
LIST F_ENABLER 30
BEGIN
PROMPT 2 14 ""
ITEM "AC|Dettaglia fino ai singoli articoli"
PROMPT 2 14 "Livello di dettaglio "
ITEM "AC|fino ai singoli articoli"
MESSAGE RESET,F_TOLIVELLOGIAC|HIDE,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART
ITEM "AL|Dettaglia gli articoli fino al livello"
ITEM "AL|fino al livello"
MESSAGE RESET,F_TOLIVELLOGIAC|HIDE,F_TOLIVELLOGIAC|SHOW,F_TOLIVELLOART|CHECK,F_TOLIVELLOART
ITEM "GC|Dettaglia le giacenze fino al livello "
ITEM "GC|fino al livello di giacenza"
MESSAGE RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|SHOW,F_TOLIVELLOGIAC|CHECK,F_TOLIVELLOGIAC
ITEM "|Massimo dettaglio"
ITEM "|massimo"
MESSAGE ENABLE,F_SUDDIV_MAGAZZINI
MESSAGE RESET,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|HIDE,F_TOLIVELLOGIAC
@ -232,10 +232,9 @@ BEGIN
END
NUMBER F_TOLIVELLOART 1
BEGIN
PROMPT 45 14 ""
PROMPT 57 14 ""
USE FCA
INPUT CODTAB F_TOLIVELLOART
DISPLAY "Num." CODTAB
@ -251,7 +250,7 @@ END
NUMBER F_TOLIVELLOGIAC 1
BEGIN
PROMPT 45 14 ""
PROMPT 57 14 ""
USE FCG
INPUT CODTAB F_TOLIVELLOGIAC
DISPLAY "Num." CODTAB

View File

@ -7,7 +7,9 @@
#include "mag.h"
#include "stomag.h"
#include "umart.h"
#include "movmag.h"
#include "rmovmag.h"
#include "../ve/veconf.h"
#include "mglib.h"
#include "mg4300.h"
@ -24,7 +26,7 @@ public:
bool ragg_grpfis() const { return get_bool("B5"); }
bool ragg_caus() const { return get_bool("B6"); }
int last_numreg() const { return get_int("I4"); }
long last_numreg() const { return get_long("I4"); }
void set_last_numreg(long n) { put("I4",n); }
// data ultima stampa esercizio precedente
TDate last_print_prec() const { return get_date("D4"); }
@ -38,9 +40,8 @@ public:
// ************************************************
// TEMP!!!!!!!!!!!!!!!!
TRegistro_giornalemag::
TRegistro_giornalemag(const char* cod, int year)
:TRegistro_std(cod,year)
TRegistro_giornalemag::TRegistro_giornalemag(const char* cod, int year)
:TRegistro_std(cod,year)
{
if (tipo()!=TIPOREG_GIOMAG)
fatal_box("Il registro richiesto non è relativo ad un libro giornale di magazzino");
@ -49,8 +50,8 @@ TRegistro_giornalemag::
class TGiornalemag : public TForm_stampemg
{
static TDate dadata;
static TDate adata;
static TDate _dadata;
static TDate _adata;
static int freq_stampa;
static bool stampa_def;
static bool ragg_mag;
@ -61,6 +62,7 @@ class TGiornalemag : public TForm_stampemg
static TCursor * cur;
static TGiornalemag* giofrm;
static TAssoc_array _cod_magazzini;
static TAssoc_array _cau_magazzino;
static int _annoes;
static int livello_giac;
@ -80,6 +82,8 @@ static bool filter_func(const TRelation* r);
protected:
// void add_mag(TRectype & magrec,const char * codreg);
void calcola_range_movimenti(TRecnotype& primo, TRecnotype& ultimo) const;
public:
void set_parametri(TMask & m);
bool can_be_printed();
@ -181,11 +185,13 @@ bool TGiornalemag::validate(TForm_item &cf, TToken_string &s)
valore << ' ';
vv = "";
}
const TRectype& anamag = cursor()->relation()->curr(LF_ANAMAG);
if (ragg_articoli)
{
valore << "Art." << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART) << ' ';
valore << "Art." << anamag.get(ANAMAG_CODART) << ' ';
//vv << ' ' << cursor()->relation()->lfile(LF_RMOVMAG).get("LIVGIAC") << ' ';
TString livello(cursor()->relation()->lfile(LF_RMOVMAG).get("LIVGIAC"));
TString livello(cursor()->relation()->curr(LF_RMOVMAG).get("LIVGIAC"));
if (livello.not_empty() && livello_giac != 0)
{
for (int lev=1; lev <= livello_giac; lev++)
@ -200,13 +206,15 @@ bool TGiornalemag::validate(TForm_item &cf, TToken_string &s)
valore << livelli_giacenza().name(livello_giac);
valore << " " << livelli_giacenza().group_descr_packed(livello,livello_giac) << " ";
}
} else {
}
else
{
if (ragg_classi)
{
valore << "Classe fiscale " << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_CLASSEFIS) << ' ';
valore << "Classe fiscale " << anamag.get(ANAMAG_CLASSEFIS) << ' ';
if (ragg_raggart)
{
valore << " ragg. " << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS) << ' ';
valore << " ragg. " << anamag.get(ANAMAG_RAGGFIS) << ' ';
}
} else {
vv.cut(0);
@ -215,14 +223,16 @@ bool TGiornalemag::validate(TForm_item &cf, TToken_string &s)
//valore << "Mov." << cursor()->relation()->lfile(LF_RMOVMAG).get("NUMREG") << "/";
//valore << cursor()->relation()->lfile(LF_RMOVMAG).get("NRIG");
}
vv << "Art. " << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART);
vv << "Art. " << anamag.get(ANAMAG_CODART);
//vv << ' ' << cursor()->relation()->lfile(LF_RMOVMAG).get("LIVGIAC") << ' ';
}
}
valore << vv;
cf.set(valore);
return TRUE;
} else if (subcode== "INFO_CAUS") {
}
else if (subcode== "INFO_CAUS")
{
const TRectype& rec_caus = cache().get("%CAU", cf.get());
if (ragg_caus)
{
@ -247,14 +257,16 @@ bool TGiornalemag::validate(TForm_item &cf, TToken_string &s)
}
const char * TGiornalemag::get_cronofield(TVariable_rectype & r)
const char * TGiornalemag::get_cronofield(TVariable_rectype & rmovmag)
{
// static buffer
static TString * valore=NULL; if (valore == NULL ) valore = new TString80 ;
static TString * valore=NULL;
if (valore == NULL )
valore = new TString16;
const TRectype& movmag = cache().get(LF_MOVMAG, rmovmag.get(RMOVMAG_NUMREG));
const TDate datamov = movmag.get(MOVMAG_DATAREG);
TDate datamov(cur->relation()->lfile(LF_MOVMAG).get_date("DATAREG"));
long numreg=cur->relation()->lfile(LF_MOVMAG).get_int("NUMREG");
// gestione frequenza
valore->cut(0);
switch (freq_stampa ) {
@ -262,7 +274,7 @@ const char * TGiornalemag::get_cronofield(TVariable_rectype & r)
valore->format("%4d%2d%2d%7d",datamov.year(),
datamov.month(),
datamov.day(),
numreg);
movmag.get_long("NUMREG"));
break;
default:
valore->format("%4d%2d%2d",datamov.year(),
@ -272,62 +284,100 @@ const char * TGiornalemag::get_cronofield(TVariable_rectype & r)
return *valore;
}
const char * TGiornalemag::get_fiscfield(TVariable_rectype & r)
const char * TGiornalemag::get_fiscfield(TVariable_rectype & rmovmag)
{
static TString * valore=NULL; if (valore == NULL ) valore = new TString80 ;
TString vv;
static TString * valore=NULL;
if (valore == NULL )
valore = new TString80 ;
TString80 vv;
valore->cut(0);
const TString80 codart = rmovmag.get(RMOVMAG_CODART);
// gestione ragruppamenti
if (!ragg_mag)
{
valore->format("%-15s",(const char *)cur->relation()->lfile(LF_RMOVMAG).get("CODMAG"));
valore->format("%-15s",(const char *)rmovmag.get(RMOVMAG_CODMAG));
}
if (ragg_articoli)
{
*valore << cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART);
*valore << codart;
TString c2(cur->relation()->lfile(LF_RMOVMAG).get("LIVGIAC"));
if (livello_giac)
{
const TString80 c2 = rmovmag.get("LIVGIAC");
*valore << livelli_giacenza().unpack_grpcode(c2, livello_giac);
}
}
else
{
if (ragg_classi)
{
*valore << cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CLASSEFIS);
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
*valore << anamag.get(ANAMAG_CLASSEFIS);
if (ragg_raggart)
{
*valore << cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS);
}
*valore << anamag.get(ANAMAG_RAGGFIS);
}
else
{
if (!ragg_caus && freq_stampa==0)
{
vv.format("%4d",cur->relation()->lfile(LF_RMOVMAG).get_int("NRIG"));
vv.format("%4d",rmovmag.get_int(RMOVMAG_NRIG));
}
else
{
vv.format("%-20s", (const char *)cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART));
vv.format("%-20s", (const char *)codart);
}
}
}
TString16 codcaus = rmovmag.get(RMOVMAG_CODCAUS);
if (codcaus.empty())
{
const TRectype& movmag = cache().get(LF_MOVMAG, rmovmag.get(RMOVMAG_NUMREG));
codcaus = movmag.get(MOVMAG_CODCAUS);
}
if (ragg_caus) // raggruppo per "tipo" di causale
*valore << cur->curr(-ALIAS_CAUSALI).get("S8");
{
TCausale_magazzino* caus = (TCausale_magazzino*)_cau_magazzino.objptr(codcaus);
*valore << caus->get("S8");
}
else
*valore << cur->curr(-ALIAS_CAUSALI).get("CODTAB");
*valore << codcaus;
*valore << vv;
return *valore;
}
void TGiornalemag::calcola_range_movimenti(TRecnotype& primo, TRecnotype& ultimo) const
{
TRelation rel(LF_MOVMAG);
TRectype recfr(LF_MOVMAG), recto(LF_MOVMAG);
if (_dadata.ok())
recfr.put(MOVMAG_DATAREG, _dadata);
if (_adata.ok())
recto.put(MOVMAG_DATAREG, _adata);
TCursor cur(&rel, "", 3, &recfr, &recto);
const TRecnotype items = cur.items();
cur.freeze();
primo = 0;
ultimo = 0;
for (cur = 0L; cur.pos() < items; ++cur)
{
const long numreg = rel.curr().get_long(MOVMAG_NUMREG);
if (primo == 0 || numreg < primo)
primo = numreg;
if (numreg > ultimo)
ultimo = numreg;
}
}
void TGiornalemag::set_parametri(TMask & m)
{
// set static variables
dadata=m.get_date(F_DATAIN);
adata=m.get_date(F_DATAFIN);
_dadata=m.get_date(F_DATAIN);
_adata=m.get_date(F_DATAFIN);
freq_stampa = m.get_int(F_FREQ);
stampa_def = (*m.get(F_DEFINITIVA) == 'D');
ragg_mag = m.get_bool(F_RAGGMAG);
@ -350,7 +400,6 @@ void TGiornalemag::set_parametri(TMask & m)
ragg_articoli || ragg_classi || ragg_caus);
find_field('B',odd_page,"HEADER_MOV").show(freq_stampa==0);
TVariable_rectype *vrec_rmov= new TVariable_rectype(LF_RMOVMAG);
vrec_rmov->add_field(new TVariable_field ("CRONO_FIELD",get_cronofield,32));
vrec_rmov->add_field(new TVariable_field ("FISC_FIELD",get_fiscfield,48));
@ -360,15 +409,34 @@ void TGiornalemag::set_parametri(TMask & m)
// inserisce tutti i magazzini collegati
_cod_magazzini.destroy();
TTable mag("MAG");
for (int err = mag.first(); err == NOERR; err = mag.next())
int err;
for (err = mag.first(); err == NOERR; err = mag.next())
{
const TString16 codmag(mag.get("CODTAB").left(3));
if (codmag.len() == 3 && mag.get("S8")==m.get(F_CODREG))
_cod_magazzini.add(codmag);
}
_cau_magazzino.destroy();
TTable cau("%CAU");
for (err = cau.first(); err == NOERR; err = cau.next())
{
TCausale_magazzino* cm = new TCausale_magazzino(cau.curr());
_cau_magazzino.add(cm->codice(), cm);
}
TRecnotype primo, ultimo;
calcola_range_movimenti(primo, ultimo);
TRectype recfr(LF_RMOVMAG), recto(LF_RMOVMAG);
if (primo > 0)
recfr.put(RMOVMAG_NUMREG, primo);
if (ultimo > 0)
recto.put(RMOVMAG_NUMREG, ultimo);
cursor()->setregion(recfr, recto);
// setta il filtro sui magazzini di questo giornale
cursor()->set_filterfunction(filter_func,TRUE);
cursor()->set_filterfunction(filter_func,FALSE);
}
/*
@ -398,29 +466,32 @@ void TGiornalemag::add_mag(TRectype & magrec,const char * codreg)
bool TGiornalemag::filter_func(const TRelation* r)
{
const TRectype& movmag = r->curr(LF_MOVMAG);
const TDate datareg = movmag.get("DATAREG");
// const TRectype& movmag = r->curr(LF_MOVMAG);
const TRectype& rmovmag = r->curr(LF_RMOVMAG);
const TRectype& movmag = cache().get(LF_MOVMAG, rmovmag.get(RMOVMAG_NUMREG));
const TDate datareg = movmag.get(MOVMAG_DATAREG);
if (datareg.year() != _annoes)
return FALSE;
if (!dadata.empty() && datareg < dadata)
if (!_dadata.empty() && datareg < _dadata)
return FALSE;
if (!adata.empty() && datareg > adata)
if (!_adata.empty() && datareg > _adata)
return FALSE;
const TString16 codmag = r->curr(LF_RMOVMAG).get("CODMAG").left(3);
const TString4 codmag = rmovmag.get(RMOVMAG_CODMAG).left(3);
if (!_cod_magazzini.is_key(codmag))
return FALSE;
// considera solo le causali "fiscali" o quelle che movimentano le rimanenze iniziali(movimenti d'apertura)
bool rval;
TCausale_magazzino& causrig=(TCausale_magazzino&)r->curr(-ALIAS_CAUSALIR);
if (causrig.codice().not_empty())
rval = causrig.is_fiscale() || causrig.sgn(s_rim);
else
{
TCausale_magazzino& causmov=(TCausale_magazzino&)r->curr(-ALIAS_CAUSALI);
rval = causmov.is_fiscale() || causmov.sgn(s_rim);
}
bool rval = FALSE;
TString16 codcaus = rmovmag.get(RMOVMAG_CODCAUS);
if (codcaus.empty())
codcaus = movmag.get(MOVMAG_CODCAUS);
TCausale_magazzino* caus = (TCausale_magazzino*)_cau_magazzino.objptr(codcaus);
if (caus != NULL)
rval = caus->is_fiscale() || caus->sgn(s_rim);
return rval;
}
@ -430,10 +501,10 @@ bool TGiornalemag::can_be_printed()
{
TLocalisamfile mov(LF_MOVMAG);
mov.setkey(3);
mov.put("DATAREG",dadata);
mov.put(MOVMAG_DATAREG,_dadata);
mov.read();
mov.prev();
if (!mov.eof() || mov.get("NUMREGST")!=_reg_giorn->last_numreg())
if (!mov.eof() || mov.get(MOVMAG_NUMREGST)!=_reg_giorn->last_numreg())
return FALSE;
}
return TRUE;
@ -454,8 +525,8 @@ TGiornalemag::~TGiornalemag()
}
// dichiarazioni degli static
TDate TGiornalemag::dadata;
TDate TGiornalemag::adata;
TDate TGiornalemag::_dadata;
TDate TGiornalemag::_adata;
int TGiornalemag::freq_stampa;
bool TGiornalemag::ragg_mag;
bool TGiornalemag::stampa_def;
@ -467,6 +538,7 @@ int TGiornalemag::livello_giac;
TCursor * TGiornalemag::cur;
TGiornalemag * TGiornalemag::giofrm;
TAssoc_array TGiornalemag::_cod_magazzini;
TAssoc_array TGiornalemag::_cau_magazzino;
int TGiornalemag::_annoes;
// STAMPA giornale
@ -476,7 +548,6 @@ class TStampa_giornalemag : public TSkeleton_application
TGiornalemag * _giorn_mag; // to be moved into TPrint_application
TCursor * _cur;
static bool livgiac_handler(TMask_field &, KEY);
protected:
virtual bool create();
virtual bool destroy();

View File

@ -1,8 +1,6 @@
#include "mg4300.h"
USE LF_RMOVMAG BY CRONO_FIELD FISC_FIELD
JOIN LF_MOVMAG INTO NUMREG==NUMREG
JOIN %CAU TO LF_MOVMAG ALIAS ALIAS_CAUSALI INTO CODTAB==CODCAUS
JOIN %CAU TO LF_RMOVMAG ALIAS ALIAS_CAUSALIR INTO CODTAB==CAUS
JOIN LF_ANAMAG TO LF_RMOVMAG INTO CODART==CODART
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
JOIN LF_UMART TO LF_RMOVMAG KEY 2 ALIAS ALIAS_UMRMOV INTO CODART==CODART UM==UM
@ -112,8 +110,8 @@ SECTION BODY ODD 2
BEGIN
PROMPT 10 1 ""
MESSAGE COPY,FF_INFOCAUS
FIELD ALIAS_CAUSALIR@->CODTAB
FIELD ALIAS_CAUSALI@->CODTAB
FIELD CAUS
FIELD LF_MOVMAG->CODCAUS
END
STRINGA 102 12
BEGIN

View File

@ -23,8 +23,6 @@
#define G_DESART 3
#define G_PARAMVALORI 4
#define ALIAS_CAUSALI 500
#define ALIAS_CAUSALIR 501
#define ALIAS_UMRMOV 502
#define FF_CODTOT 601

View File

@ -147,6 +147,7 @@ protected:
void reset_anno_mag () { set_anno_mag();}
void reset_anno_sto () { set_anno_sto();}
bool is_last_esercizio(const char* annoes) const;
bool is_deletable(const TRectype& mag) const;
void copia_storico(TRecord_array& nrstorico, const char * annoes,const char * codmag);
void add_storico(TRecord_array& nrstorico, const char * annoes,const char * codmag, const real & qta, const real & prz);

View File

@ -568,31 +568,58 @@ bool TArticolo_giacenza::is_last_esercizio(const char* annoes) const
return yes;
}
const char* const zero_fields[] =
{
MAG_GIAC, MAG_PRODFIN, MAG_INCL, MAG_ACL, MAG_NLABEL,
MAG_RIM, MAG_VALRIM, MAG_ACQ, MAG_VALACQ, MAG_ENT, MAG_VALENT,
MAG_VEN, MAG_VALVEN, MAG_USC, MAG_VALUSC, MAG_ORDF, MAG_VALORDF,
MAG_ORDC, MAG_VALORDC, MAG_SCARTI, MAG_VALSCARTI, MAG_PRODCOMP,
"USER1", "USERVAL1", "USER2", "USERVAL2", "USER3", "USERVAL3",
"USER4", "USERVAL4", "USER5", "USERVAL5", "USER6", "USERVAL6",
NULL
};
const char* const protected_fields[] =
{
MAG_UBICAZ, MAG_LIVRIOR, MAG_SCORTAMIN, MAG_LOTTORIOR, MAG_LOTTOIRIOR, MAG_GIORNIRIOR, NULL
};
bool TArticolo_giacenza::is_deletable(const TRectype& mag) const
{
int i;
for (i = 0; protected_fields[i]; i++)
{
const TString& val = mag.get(protected_fields[i]);
if (val.not_empty() && !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))
return false;
}
return true;
}
bool TArticolo_giacenza::azzera_saldi(const char* cod_es, bool save_to_disk)
{
TRecord_array& rec_arr = TArticolo_giacenza::mag(cod_es);
const int last = rec_arr.last_row();
for (int r = last;r > 0 ; r = rec_arr.pred_row(r)) // Scorre le righe
for (int r = last; r > 0; r = rec_arr.pred_row(r)) // Scorre le righe
{
TRectype& mag = rec_arr[r];
mag.put(MAG_GIAC,0);
mag.put(MAG_RIM,0);mag.put(MAG_VALRIM,0);
mag.put(MAG_ACQ,0);mag.put(MAG_VALACQ,0);
mag.put(MAG_ENT,0);mag.put(MAG_VALENT,0);
mag.put(MAG_VEN,0);mag.put(MAG_VALVEN,0);
mag.put(MAG_USC,0);mag.put(MAG_VALUSC,0);
mag.put(MAG_ORDF,0);mag.put(MAG_VALORDF,0);
mag.put(MAG_ORDC,0);mag.put(MAG_VALORDC,0);
mag.put(MAG_SCARTI,0);mag.put(MAG_VALSCARTI,0);
mag.put(MAG_PRODCOMP,0);
mag.put(MAG_PRODFIN,0);
mag.put(MAG_INCL,0);
mag.put(MAG_ACL,0);
mag.put(MAG_NLABEL,0);
for (int i = 0; zero_fields[i]; i++)
mag.zero(zero_fields[i]);
if (is_deletable(mag))
rec_arr.destroy_row(r, TRUE);
}
return save_to_disk ? (rec_arr.write(TRUE) == NOERR) : TRUE;
bool ok = TRUE;
if (save_to_disk)
ok = rec_arr.write(TRUE) == NOERR;
return ok;
}
bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo,
@ -602,7 +629,7 @@ bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, co
TRecord_array& rec_arr = TArticolo_giacenza::mag(oldes);
const int last = rec_arr.last_row();
real rim, val, giac, inpf, proc, icl, acl;
TCurrency currency(ZERO, "_FIRM");
TCurrency currency(ZERO);
rec_arr.renum_key(MAG_ANNOES, codes); // Rinumera
for (int r = last;r > 0 ; r = rec_arr.pred_row(r)) // Scorre le righe
@ -681,6 +708,9 @@ bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, co
rec.zero(MAG_ORDF); rec.zero(MAG_VALORDF);
rec.zero(MAG_ORDC); rec.zero(MAG_VALORDC);
}
if (is_deletable(rec))
rec_arr.destroy_row(r, TRUE);
}
// Per non perdere le modifiche in memoria, al fine di avere i saldi riportati correttamente
@ -688,11 +718,12 @@ bool TArticolo_giacenza::riporta_saldi(const char * oldes, const char* newes, co
// dell'esercizio newes
if (!save_to_disk)
{
TRecord_array copia(rec_arr);
TRecord_array& nuovo = TArticolo_giacenza::mag(codes);
const TRecord_array copia(rec_arr);
if (copia.rows() > 0)
{
TRecord_array& nuovo = TArticolo_giacenza::mag(codes);
nuovo = copia;
}
else
azzera_saldi(codes, FALSE);
}