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
|
110
|
||||||
0
|
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)
|
while (m.run()==K_ENTER)
|
||||||
{
|
{
|
||||||
if (!rebuild_balances(m.get(F_ANNOES)))
|
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;
|
TApp_rebuildbalances a;
|
||||||
|
|
||||||
a.run(argc, argv, "Ricostruzione saldi");
|
a.run(argc, argv, TR("Ricostruzione saldi"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,6 @@
|
|||||||
#include "mg1200.h"
|
#include "mg1200.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 19 40 2
|
PAGE "Ricostruzione Saldi" -1 -1 36 4
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
DATE F_DATA
|
DATE F_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -24,7 +11,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_ANNOES 4
|
NUMBER F_ANNOES 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Codice esercizio "
|
PROMPT 1 1 "Codice esercizio "
|
||||||
USE ESC
|
USE ESC
|
||||||
INPUT CODTAB F_ANNOES
|
INPUT CODTAB F_ANNOES
|
||||||
DISPLAY "Esercizio@20" CODTAB
|
DISPLAY "Esercizio@20" CODTAB
|
||||||
@ -35,6 +22,19 @@ BEGIN
|
|||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
END
|
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
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
@ -9,9 +9,7 @@
|
|||||||
#include "mglib.h"
|
#include "mglib.h"
|
||||||
#include "mg3300.h"
|
#include "mg3300.h"
|
||||||
|
|
||||||
#ifndef __CGLIB01_H
|
|
||||||
#include "../cg/cglib01.h"
|
#include "../cg/cglib01.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
TCausale_magazzino& get_cau(const char* codcaus)
|
TCausale_magazzino& get_cau(const char* codcaus)
|
||||||
@ -25,6 +23,7 @@ TCausale_magazzino& get_cau(const char* codcaus)
|
|||||||
}
|
}
|
||||||
return *caus;
|
return *caus;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TForm_schedemag : public TForm_stampemg
|
class TForm_schedemag : public TForm_stampemg
|
||||||
{
|
{
|
||||||
int _tolivgiac,_tolivart;
|
int _tolivgiac,_tolivart;
|
||||||
|
@ -212,19 +212,19 @@ BEGIN
|
|||||||
PROMPT 42 12 "Dettaglio i depositi"
|
PROMPT 42 12 "Dettaglio i depositi"
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_ENABLER 40
|
LIST F_ENABLER 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 ""
|
PROMPT 2 14 "Livello di dettaglio "
|
||||||
ITEM "AC|Dettaglia fino ai singoli articoli"
|
ITEM "AC|fino ai singoli articoli"
|
||||||
MESSAGE RESET,F_TOLIVELLOGIAC|HIDE,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART
|
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
|
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
|
MESSAGE RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|SHOW,F_TOLIVELLOGIAC|CHECK,F_TOLIVELLOGIAC
|
||||||
|
|
||||||
ITEM "|Massimo dettaglio"
|
ITEM "|massimo"
|
||||||
MESSAGE ENABLE,F_SUDDIV_MAGAZZINI
|
MESSAGE ENABLE,F_SUDDIV_MAGAZZINI
|
||||||
MESSAGE RESET,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|HIDE,F_TOLIVELLOGIAC
|
MESSAGE RESET,F_TOLIVELLOGIAC|RESET,F_TOLIVELLOART|HIDE,F_TOLIVELLOART|HIDE,F_TOLIVELLOGIAC
|
||||||
|
|
||||||
@ -232,10 +232,9 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NUMBER F_TOLIVELLOART 1
|
NUMBER F_TOLIVELLOART 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 45 14 ""
|
PROMPT 57 14 ""
|
||||||
USE FCA
|
USE FCA
|
||||||
INPUT CODTAB F_TOLIVELLOART
|
INPUT CODTAB F_TOLIVELLOART
|
||||||
DISPLAY "Num." CODTAB
|
DISPLAY "Num." CODTAB
|
||||||
@ -251,7 +250,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_TOLIVELLOGIAC 1
|
NUMBER F_TOLIVELLOGIAC 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 45 14 ""
|
PROMPT 57 14 ""
|
||||||
USE FCG
|
USE FCG
|
||||||
INPUT CODTAB F_TOLIVELLOGIAC
|
INPUT CODTAB F_TOLIVELLOGIAC
|
||||||
DISPLAY "Num." CODTAB
|
DISPLAY "Num." CODTAB
|
||||||
|
191
mg/mg4300.cpp
191
mg/mg4300.cpp
@ -7,7 +7,9 @@
|
|||||||
#include "mag.h"
|
#include "mag.h"
|
||||||
#include "stomag.h"
|
#include "stomag.h"
|
||||||
#include "umart.h"
|
#include "umart.h"
|
||||||
|
#include "movmag.h"
|
||||||
|
#include "rmovmag.h"
|
||||||
|
|
||||||
#include "../ve/veconf.h"
|
#include "../ve/veconf.h"
|
||||||
#include "mglib.h"
|
#include "mglib.h"
|
||||||
#include "mg4300.h"
|
#include "mg4300.h"
|
||||||
@ -24,7 +26,7 @@ public:
|
|||||||
bool ragg_grpfis() const { return get_bool("B5"); }
|
bool ragg_grpfis() const { return get_bool("B5"); }
|
||||||
bool ragg_caus() const { return get_bool("B6"); }
|
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); }
|
void set_last_numreg(long n) { put("I4",n); }
|
||||||
// data ultima stampa esercizio precedente
|
// data ultima stampa esercizio precedente
|
||||||
TDate last_print_prec() const { return get_date("D4"); }
|
TDate last_print_prec() const { return get_date("D4"); }
|
||||||
@ -38,9 +40,8 @@ public:
|
|||||||
|
|
||||||
// ************************************************
|
// ************************************************
|
||||||
// TEMP!!!!!!!!!!!!!!!!
|
// TEMP!!!!!!!!!!!!!!!!
|
||||||
TRegistro_giornalemag::
|
TRegistro_giornalemag::TRegistro_giornalemag(const char* cod, int year)
|
||||||
TRegistro_giornalemag(const char* cod, int year)
|
:TRegistro_std(cod,year)
|
||||||
:TRegistro_std(cod,year)
|
|
||||||
{
|
{
|
||||||
if (tipo()!=TIPOREG_GIOMAG)
|
if (tipo()!=TIPOREG_GIOMAG)
|
||||||
fatal_box("Il registro richiesto non è relativo ad un libro giornale di magazzino");
|
fatal_box("Il registro richiesto non è relativo ad un libro giornale di magazzino");
|
||||||
@ -49,8 +50,8 @@ TRegistro_giornalemag::
|
|||||||
|
|
||||||
class TGiornalemag : public TForm_stampemg
|
class TGiornalemag : public TForm_stampemg
|
||||||
{
|
{
|
||||||
static TDate dadata;
|
static TDate _dadata;
|
||||||
static TDate adata;
|
static TDate _adata;
|
||||||
static int freq_stampa;
|
static int freq_stampa;
|
||||||
static bool stampa_def;
|
static bool stampa_def;
|
||||||
static bool ragg_mag;
|
static bool ragg_mag;
|
||||||
@ -61,6 +62,7 @@ class TGiornalemag : public TForm_stampemg
|
|||||||
static TCursor * cur;
|
static TCursor * cur;
|
||||||
static TGiornalemag* giofrm;
|
static TGiornalemag* giofrm;
|
||||||
static TAssoc_array _cod_magazzini;
|
static TAssoc_array _cod_magazzini;
|
||||||
|
static TAssoc_array _cau_magazzino;
|
||||||
static int _annoes;
|
static int _annoes;
|
||||||
static int livello_giac;
|
static int livello_giac;
|
||||||
|
|
||||||
@ -80,6 +82,8 @@ static bool filter_func(const TRelation* r);
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// void add_mag(TRectype & magrec,const char * codreg);
|
// void add_mag(TRectype & magrec,const char * codreg);
|
||||||
|
void calcola_range_movimenti(TRecnotype& primo, TRecnotype& ultimo) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_parametri(TMask & m);
|
void set_parametri(TMask & m);
|
||||||
bool can_be_printed();
|
bool can_be_printed();
|
||||||
@ -181,11 +185,13 @@ bool TGiornalemag::validate(TForm_item &cf, TToken_string &s)
|
|||||||
valore << ' ';
|
valore << ' ';
|
||||||
vv = "";
|
vv = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TRectype& anamag = cursor()->relation()->curr(LF_ANAMAG);
|
||||||
if (ragg_articoli)
|
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") << ' ';
|
//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)
|
if (livello.not_empty() && livello_giac != 0)
|
||||||
{
|
{
|
||||||
for (int lev=1; lev <= livello_giac; lev++)
|
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().name(livello_giac);
|
||||||
valore << " " << livelli_giacenza().group_descr_packed(livello,livello_giac) << " ";
|
valore << " " << livelli_giacenza().group_descr_packed(livello,livello_giac) << " ";
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (ragg_classi)
|
if (ragg_classi)
|
||||||
{
|
{
|
||||||
valore << "Classe fiscale " << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_CLASSEFIS) << ' ';
|
valore << "Classe fiscale " << anamag.get(ANAMAG_CLASSEFIS) << ' ';
|
||||||
if (ragg_raggart)
|
if (ragg_raggart)
|
||||||
{
|
{
|
||||||
valore << " ragg. " << cursor()->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS) << ' ';
|
valore << " ragg. " << anamag.get(ANAMAG_RAGGFIS) << ' ';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
vv.cut(0);
|
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 << "Mov." << cursor()->relation()->lfile(LF_RMOVMAG).get("NUMREG") << "/";
|
||||||
//valore << cursor()->relation()->lfile(LF_RMOVMAG).get("NRIG");
|
//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") << ' ';
|
//vv << ' ' << cursor()->relation()->lfile(LF_RMOVMAG).get("LIVGIAC") << ' ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
valore << vv;
|
valore << vv;
|
||||||
cf.set(valore);
|
cf.set(valore);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else if (subcode== "INFO_CAUS") {
|
}
|
||||||
|
else if (subcode== "INFO_CAUS")
|
||||||
|
{
|
||||||
const TRectype& rec_caus = cache().get("%CAU", cf.get());
|
const TRectype& rec_caus = cache().get("%CAU", cf.get());
|
||||||
if (ragg_caus)
|
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 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
|
// gestione frequenza
|
||||||
valore->cut(0);
|
valore->cut(0);
|
||||||
switch (freq_stampa ) {
|
switch (freq_stampa ) {
|
||||||
@ -262,7 +274,7 @@ const char * TGiornalemag::get_cronofield(TVariable_rectype & r)
|
|||||||
valore->format("%4d%2d%2d%7d",datamov.year(),
|
valore->format("%4d%2d%2d%7d",datamov.year(),
|
||||||
datamov.month(),
|
datamov.month(),
|
||||||
datamov.day(),
|
datamov.day(),
|
||||||
numreg);
|
movmag.get_long("NUMREG"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
valore->format("%4d%2d%2d",datamov.year(),
|
valore->format("%4d%2d%2d",datamov.year(),
|
||||||
@ -272,62 +284,100 @@ const char * TGiornalemag::get_cronofield(TVariable_rectype & r)
|
|||||||
return *valore;
|
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 ;
|
static TString * valore=NULL;
|
||||||
TString vv;
|
if (valore == NULL )
|
||||||
|
valore = new TString80 ;
|
||||||
|
|
||||||
|
TString80 vv;
|
||||||
valore->cut(0);
|
valore->cut(0);
|
||||||
|
|
||||||
|
const TString80 codart = rmovmag.get(RMOVMAG_CODART);
|
||||||
|
|
||||||
// gestione ragruppamenti
|
// gestione ragruppamenti
|
||||||
if (!ragg_mag)
|
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)
|
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)
|
if (livello_giac)
|
||||||
|
{
|
||||||
|
const TString80 c2 = rmovmag.get("LIVGIAC");
|
||||||
*valore << livelli_giacenza().unpack_grpcode(c2, livello_giac);
|
*valore << livelli_giacenza().unpack_grpcode(c2, livello_giac);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ragg_classi)
|
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)
|
if (ragg_raggart)
|
||||||
{
|
*valore << anamag.get(ANAMAG_RAGGFIS);
|
||||||
*valore << cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ragg_caus && freq_stampa==0)
|
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
|
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
|
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
|
else
|
||||||
*valore << cur->curr(-ALIAS_CAUSALI).get("CODTAB");
|
*valore << codcaus;
|
||||||
*valore << vv;
|
*valore << vv;
|
||||||
return *valore;
|
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)
|
void TGiornalemag::set_parametri(TMask & m)
|
||||||
{
|
{
|
||||||
// set static variables
|
// set static variables
|
||||||
dadata=m.get_date(F_DATAIN);
|
_dadata=m.get_date(F_DATAIN);
|
||||||
adata=m.get_date(F_DATAFIN);
|
_adata=m.get_date(F_DATAFIN);
|
||||||
freq_stampa = m.get_int(F_FREQ);
|
freq_stampa = m.get_int(F_FREQ);
|
||||||
stampa_def = (*m.get(F_DEFINITIVA) == 'D');
|
stampa_def = (*m.get(F_DEFINITIVA) == 'D');
|
||||||
ragg_mag = m.get_bool(F_RAGGMAG);
|
ragg_mag = m.get_bool(F_RAGGMAG);
|
||||||
@ -350,7 +400,6 @@ void TGiornalemag::set_parametri(TMask & m)
|
|||||||
ragg_articoli || ragg_classi || ragg_caus);
|
ragg_articoli || ragg_classi || ragg_caus);
|
||||||
find_field('B',odd_page,"HEADER_MOV").show(freq_stampa==0);
|
find_field('B',odd_page,"HEADER_MOV").show(freq_stampa==0);
|
||||||
|
|
||||||
|
|
||||||
TVariable_rectype *vrec_rmov= new TVariable_rectype(LF_RMOVMAG);
|
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 ("CRONO_FIELD",get_cronofield,32));
|
||||||
vrec_rmov->add_field(new TVariable_field ("FISC_FIELD",get_fiscfield,48));
|
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
|
// inserisce tutti i magazzini collegati
|
||||||
_cod_magazzini.destroy();
|
_cod_magazzini.destroy();
|
||||||
TTable mag("MAG");
|
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));
|
const TString16 codmag(mag.get("CODTAB").left(3));
|
||||||
if (codmag.len() == 3 && mag.get("S8")==m.get(F_CODREG))
|
if (codmag.len() == 3 && mag.get("S8")==m.get(F_CODREG))
|
||||||
_cod_magazzini.add(codmag);
|
_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
|
// 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)
|
bool TGiornalemag::filter_func(const TRelation* r)
|
||||||
{
|
{
|
||||||
const TRectype& movmag = r->curr(LF_MOVMAG);
|
// const TRectype& movmag = r->curr(LF_MOVMAG);
|
||||||
const TDate datareg = movmag.get("DATAREG");
|
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)
|
if (datareg.year() != _annoes)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!dadata.empty() && datareg < dadata)
|
if (!_dadata.empty() && datareg < _dadata)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (!adata.empty() && datareg > adata)
|
if (!_adata.empty() && datareg > _adata)
|
||||||
return FALSE;
|
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))
|
if (!_cod_magazzini.is_key(codmag))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
// considera solo le causali "fiscali" o quelle che movimentano le rimanenze iniziali(movimenti d'apertura)
|
// considera solo le causali "fiscali" o quelle che movimentano le rimanenze iniziali(movimenti d'apertura)
|
||||||
bool rval;
|
bool rval = FALSE;
|
||||||
TCausale_magazzino& causrig=(TCausale_magazzino&)r->curr(-ALIAS_CAUSALIR);
|
|
||||||
if (causrig.codice().not_empty())
|
TString16 codcaus = rmovmag.get(RMOVMAG_CODCAUS);
|
||||||
rval = causrig.is_fiscale() || causrig.sgn(s_rim);
|
if (codcaus.empty())
|
||||||
else
|
codcaus = movmag.get(MOVMAG_CODCAUS);
|
||||||
{
|
TCausale_magazzino* caus = (TCausale_magazzino*)_cau_magazzino.objptr(codcaus);
|
||||||
TCausale_magazzino& causmov=(TCausale_magazzino&)r->curr(-ALIAS_CAUSALI);
|
if (caus != NULL)
|
||||||
rval = causmov.is_fiscale() || causmov.sgn(s_rim);
|
rval = caus->is_fiscale() || caus->sgn(s_rim);
|
||||||
}
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -430,10 +501,10 @@ bool TGiornalemag::can_be_printed()
|
|||||||
{
|
{
|
||||||
TLocalisamfile mov(LF_MOVMAG);
|
TLocalisamfile mov(LF_MOVMAG);
|
||||||
mov.setkey(3);
|
mov.setkey(3);
|
||||||
mov.put("DATAREG",dadata);
|
mov.put(MOVMAG_DATAREG,_dadata);
|
||||||
mov.read();
|
mov.read();
|
||||||
mov.prev();
|
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 FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -454,8 +525,8 @@ TGiornalemag::~TGiornalemag()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// dichiarazioni degli static
|
// dichiarazioni degli static
|
||||||
TDate TGiornalemag::dadata;
|
TDate TGiornalemag::_dadata;
|
||||||
TDate TGiornalemag::adata;
|
TDate TGiornalemag::_adata;
|
||||||
int TGiornalemag::freq_stampa;
|
int TGiornalemag::freq_stampa;
|
||||||
bool TGiornalemag::ragg_mag;
|
bool TGiornalemag::ragg_mag;
|
||||||
bool TGiornalemag::stampa_def;
|
bool TGiornalemag::stampa_def;
|
||||||
@ -467,6 +538,7 @@ int TGiornalemag::livello_giac;
|
|||||||
TCursor * TGiornalemag::cur;
|
TCursor * TGiornalemag::cur;
|
||||||
TGiornalemag * TGiornalemag::giofrm;
|
TGiornalemag * TGiornalemag::giofrm;
|
||||||
TAssoc_array TGiornalemag::_cod_magazzini;
|
TAssoc_array TGiornalemag::_cod_magazzini;
|
||||||
|
TAssoc_array TGiornalemag::_cau_magazzino;
|
||||||
int TGiornalemag::_annoes;
|
int TGiornalemag::_annoes;
|
||||||
|
|
||||||
// STAMPA giornale
|
// STAMPA giornale
|
||||||
@ -476,7 +548,6 @@ class TStampa_giornalemag : public TSkeleton_application
|
|||||||
TGiornalemag * _giorn_mag; // to be moved into TPrint_application
|
TGiornalemag * _giorn_mag; // to be moved into TPrint_application
|
||||||
TCursor * _cur;
|
TCursor * _cur;
|
||||||
|
|
||||||
static bool livgiac_handler(TMask_field &, KEY);
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
#include "mg4300.h"
|
#include "mg4300.h"
|
||||||
USE LF_RMOVMAG BY CRONO_FIELD FISC_FIELD
|
USE LF_RMOVMAG BY CRONO_FIELD FISC_FIELD
|
||||||
JOIN LF_MOVMAG INTO NUMREG==NUMREG
|
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_ANAMAG TO LF_RMOVMAG INTO CODART==CODART
|
||||||
JOIN LF_UMART TO LF_ANAMAG 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
|
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
|
BEGIN
|
||||||
PROMPT 10 1 ""
|
PROMPT 10 1 ""
|
||||||
MESSAGE COPY,FF_INFOCAUS
|
MESSAGE COPY,FF_INFOCAUS
|
||||||
FIELD ALIAS_CAUSALIR@->CODTAB
|
FIELD CAUS
|
||||||
FIELD ALIAS_CAUSALI@->CODTAB
|
FIELD LF_MOVMAG->CODCAUS
|
||||||
END
|
END
|
||||||
STRINGA 102 12
|
STRINGA 102 12
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -23,8 +23,6 @@
|
|||||||
#define G_DESART 3
|
#define G_DESART 3
|
||||||
#define G_PARAMVALORI 4
|
#define G_PARAMVALORI 4
|
||||||
|
|
||||||
#define ALIAS_CAUSALI 500
|
|
||||||
#define ALIAS_CAUSALIR 501
|
|
||||||
#define ALIAS_UMRMOV 502
|
#define ALIAS_UMRMOV 502
|
||||||
|
|
||||||
#define FF_CODTOT 601
|
#define FF_CODTOT 601
|
||||||
|
@ -147,6 +147,7 @@ protected:
|
|||||||
void reset_anno_mag () { set_anno_mag();}
|
void reset_anno_mag () { set_anno_mag();}
|
||||||
void reset_anno_sto () { set_anno_sto();}
|
void reset_anno_sto () { set_anno_sto();}
|
||||||
bool is_last_esercizio(const char* annoes) const;
|
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 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);
|
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;
|
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)
|
bool TArticolo_giacenza::azzera_saldi(const char* cod_es, bool save_to_disk)
|
||||||
{
|
{
|
||||||
TRecord_array& rec_arr = TArticolo_giacenza::mag(cod_es);
|
TRecord_array& rec_arr = TArticolo_giacenza::mag(cod_es);
|
||||||
|
|
||||||
const int last = rec_arr.last_row();
|
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];
|
TRectype& mag = rec_arr[r];
|
||||||
|
for (int i = 0; zero_fields[i]; i++)
|
||||||
mag.put(MAG_GIAC,0);
|
mag.zero(zero_fields[i]);
|
||||||
mag.put(MAG_RIM,0);mag.put(MAG_VALRIM,0);
|
if (is_deletable(mag))
|
||||||
mag.put(MAG_ACQ,0);mag.put(MAG_VALACQ,0);
|
rec_arr.destroy_row(r, TRUE);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
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,
|
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);
|
TRecord_array& rec_arr = TArticolo_giacenza::mag(oldes);
|
||||||
const int last = rec_arr.last_row();
|
const int last = rec_arr.last_row();
|
||||||
real rim, val, giac, inpf, proc, icl, acl;
|
real rim, val, giac, inpf, proc, icl, acl;
|
||||||
TCurrency currency(ZERO, "_FIRM");
|
TCurrency currency(ZERO);
|
||||||
|
|
||||||
rec_arr.renum_key(MAG_ANNOES, codes); // Rinumera
|
rec_arr.renum_key(MAG_ANNOES, codes); // Rinumera
|
||||||
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
|
||||||
@ -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_ORDF); rec.zero(MAG_VALORDF);
|
||||||
rec.zero(MAG_ORDC); rec.zero(MAG_VALORDC);
|
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
|
// 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
|
// dell'esercizio newes
|
||||||
if (!save_to_disk)
|
if (!save_to_disk)
|
||||||
{
|
{
|
||||||
TRecord_array copia(rec_arr);
|
const TRecord_array copia(rec_arr);
|
||||||
TRecord_array& nuovo = TArticolo_giacenza::mag(codes);
|
|
||||||
|
|
||||||
if (copia.rows() > 0)
|
if (copia.rows() > 0)
|
||||||
|
{
|
||||||
|
TRecord_array& nuovo = TArticolo_giacenza::mag(codes);
|
||||||
nuovo = copia;
|
nuovo = copia;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
azzera_saldi(codes, FALSE);
|
azzera_saldi(codes, FALSE);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user