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:
parent
bccc8fef5d
commit
ae4aed1ef1
@ -1,3 +1,3 @@
|
||||
110
|
||||
0
|
||||
$movmag|52|52|135|0|Movimenti di magazzino (?)|||
|
||||
$movmag|52|52|135|0|Movimenti di magazzino|||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
191
mg/mg4300.cpp
191
mg/mg4300.cpp
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user