Nuova gestione avanzata saldo alla data
git-svn-id: svn://10.65.10.50/branches/R_10_00@22907 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a9a4ffad45
commit
572327d74c
266
mg/mg1300.cpp
266
mg/mg1300.cpp
@ -15,6 +15,8 @@
|
||||
#include "../mg/movmag.h"
|
||||
#include "../mg/rmovmag.h"
|
||||
|
||||
#include "rdoc.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TSaldodata_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -22,6 +24,9 @@
|
||||
class TSaldodata_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
void preview(bool zero_giac);
|
||||
void load_physical();
|
||||
void save_movmag();
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
@ -33,42 +38,62 @@ static bool reset_cb(const TRelation& rel, void* pJolly)
|
||||
return rel.file().remove() == NOERR;
|
||||
}
|
||||
|
||||
void TSaldodata_mask::preview(bool zero_giac)
|
||||
{
|
||||
TString query;
|
||||
query = "USE &MAG";
|
||||
|
||||
if (zero_giac)
|
||||
query << "\nSELECT (S7=\"\")";
|
||||
|
||||
const TString& codmag = get(get_bool(F_USEDEP) ? F_DEP : F_MAG);
|
||||
if (codmag.full())
|
||||
{
|
||||
query << "\nFROM CODTAB=" << codmag
|
||||
<< "\nTO CODTAB=" << codmag;
|
||||
}
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
TToken_string fields = "CODTAB[1,5]|CODTAB[6,25]|CODTAB[26,35]|S7|R0|R1|R2|D0|S6|I0|I1|I2|I3|I4|I5|S0";
|
||||
TToken_string heads = HR("Mag+Dep|Articolo@20|Livello@10|UM|Giacenza@12V|Effettiva@12V|Fisica@12V|Data@10|Gr.Mer.|Gr.A|Cnt.A|Sott.A|Gr.V|Cnt.V|Sott.V|Descrizione@50");
|
||||
|
||||
if (!ini_get_bool(CONFIG_DITTA, "mg", "GESDEPOSITI"))
|
||||
{
|
||||
fields.add("CODTAB[1,3]", 0);
|
||||
heads.add(HR("Mag"), 0);
|
||||
}
|
||||
if (!ini_get_bool(CONFIG_DITTA, "mg", "GESLIVGIAC"))
|
||||
{
|
||||
fields.destroy(2);
|
||||
heads.destroy(2);
|
||||
}
|
||||
|
||||
TCursor_sheet s(recset.cursor(), fields, TR("Situazione"), heads, 0, 1);
|
||||
s.run();
|
||||
}
|
||||
|
||||
bool TSaldodata_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DATA:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const TDate d(o.get());
|
||||
int anno = d.year();
|
||||
if (d.month() < 10)
|
||||
anno--;
|
||||
set(F_ANNO, anno);
|
||||
set(F_DATACOMP, TDate(31,12,anno));
|
||||
}
|
||||
break;
|
||||
case DLG_PREVIEW:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TString query;
|
||||
query = "USE &MAG";
|
||||
|
||||
const TString& codmag = get(get_bool(F_USEDEP) ? F_DEP : F_MAG);
|
||||
if (codmag.full())
|
||||
{
|
||||
query << "\nFROM CODTAB=" << codmag
|
||||
<< "\nTO CODTAB=" << codmag;
|
||||
}
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
TToken_string fields = "CODTAB[1,5]|CODTAB[6,25]|CODTAB[26,35]|S7|R0|R1|R2|D0|S6|I0|I1|I2|I3|I4|I5|S0";
|
||||
TToken_string heads = HR("Mag+Dep|Articolo@20|Livello@10|UM|Giacenza@12V|Effettiva@12V|Fisica@12V|Data@10|Gr.Mer.|Gr.A|Cnt.A|Sott.A|Gr.V|Cnt.V|Sott.V|Descrizione@50");
|
||||
|
||||
if (!ini_get_bool(CONFIG_DITTA, "mg", "GESDEPOSITI"))
|
||||
{
|
||||
fields.add("CODTAB[1,3]", 0);
|
||||
heads.add(HR("Mag"), 0);
|
||||
}
|
||||
if (!ini_get_bool(CONFIG_DITTA, "mg", "GESLIVGIAC"))
|
||||
{
|
||||
fields.destroy(2);
|
||||
heads.destroy(2);
|
||||
}
|
||||
|
||||
TCursor_sheet s(recset.cursor(), fields, TR("Situazione"), heads, 0, 1);
|
||||
s.run();
|
||||
}
|
||||
preview(false);
|
||||
break;
|
||||
case DLG_FINDREC:
|
||||
if (e == fe_button)
|
||||
preview(true);
|
||||
break;
|
||||
case DLG_DELREC:
|
||||
if (e == fe_button && noyes_box(TR("Si desiderano azzerare tutte le giacenze alla data?")))
|
||||
@ -78,6 +103,14 @@ bool TSaldodata_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
||||
return false; // Otherwise quits!
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if (e == fe_button && check_fields() && yesno_box(TR("Si desiderano caricare le giacenza fisiche?")))
|
||||
load_physical();
|
||||
break;
|
||||
case DLG_NEXTREC:
|
||||
if (e == fe_button && check_fields() && yesno_box(TR("Si desiderano generare i movimenti di magazzino?")))
|
||||
save_movmag();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -132,6 +165,158 @@ TSaldo_info& TAssoc_saldi::info(const char* key)
|
||||
return *i;
|
||||
}
|
||||
|
||||
void TSaldodata_mask::load_physical()
|
||||
{
|
||||
const int anno = get_int(F_ANNO);
|
||||
const TString& codnum = get(F_CODNUM);
|
||||
const TString& dacod = get(F_ARTINI);
|
||||
const TString& acod = get(F_ARTFIN);
|
||||
TString query;
|
||||
query << "USE RDOC SELECT (CODARTMAG!=\"\")";
|
||||
if (dacod.full() || acod.full())
|
||||
query << "&&(BETWEEN(CODARTMAG,\"" << dacod << "\",\"" << acod << "\"))";
|
||||
query << "\nFROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum;
|
||||
query << "\nTO PROVV=D ANNO=" << anno << " CODNUM=" << codnum;
|
||||
|
||||
TAssoc_array saldi;
|
||||
TISAM_recordset docs(query);
|
||||
if (!docs.empty())
|
||||
{
|
||||
TProgind pi(docs.items(), TR("Scansione rilevazioni inventariali"));
|
||||
const TRectype& rec = docs.cursor()->curr();
|
||||
TString80 key;
|
||||
for (bool ok = docs.move_first(); ok; ok = docs.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
const TString& codmag = rec.get(RDOC_CODMAG);
|
||||
const TString& codart = rec.get(RDOC_CODARTMAG);
|
||||
const TString& livgiac = rec.get(RDOC_LIVELLO);
|
||||
if (codmag.empty() || codart.empty())
|
||||
continue;
|
||||
key.format("%-5s%-20s%s", (const char*)codmag, (const char*)codart, (const char*)livgiac);
|
||||
real* p = (real*)saldi.objptr(key);
|
||||
if (p == NULL)
|
||||
{
|
||||
p = new real;
|
||||
saldi.add(key, p);
|
||||
}
|
||||
*p += rec.get_real(RDOC_QTA);
|
||||
}
|
||||
}
|
||||
|
||||
if (!saldi.empty())
|
||||
{
|
||||
const TDate oggi(TODAY);
|
||||
TProgind pi(saldi.items(), TR("Aggiornamento giacenza fisica"));
|
||||
TFast_isamfile mag(LF_TABMOD);
|
||||
FOR_EACH_ASSOC_OBJECT(saldi, h, k, o)
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
mag.put("MOD", "MG");
|
||||
mag.put("COD", "MAG");
|
||||
mag.put("CODTAB", k);
|
||||
int err = mag.read(_isequal, _lock);
|
||||
if (err != NOERR)
|
||||
{
|
||||
mag.zero();
|
||||
mag.put("MOD", "MG");
|
||||
mag.put("COD", "MAG");
|
||||
mag.put("CODTAB", k);
|
||||
mag.put("R2", *(real*)o);
|
||||
mag.put("S0", TR("Articolo senza giacenza"));
|
||||
mag.put("D0", oggi);
|
||||
err = mag.write();
|
||||
}
|
||||
else
|
||||
{
|
||||
mag.put("R2", *(real*)o);
|
||||
err = mag.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TSaldodata_mask::save_movmag()
|
||||
{
|
||||
const TDate data_comp = get(F_DATACOMP);
|
||||
|
||||
TLocalisamfile f(LF_MOVMAG);
|
||||
const bool giac_eff = get_int(F_GIAC) != 0;
|
||||
|
||||
const int max_rows = 400;
|
||||
int nmov = 0;
|
||||
|
||||
TMov_mag* mm = NULL;
|
||||
|
||||
const bool use_dep = get_bool(F_USEDEP);
|
||||
const TString& codmag = get(use_dep ? F_DEP : F_MAG);
|
||||
|
||||
TString query;
|
||||
query = "USE &MAG";
|
||||
if (codmag.full())
|
||||
{
|
||||
query << "\nFROM CODTAB=" << codmag
|
||||
<< "\nTO CODTAB=" << codmag;
|
||||
}
|
||||
|
||||
TISAM_recordset mag(query);
|
||||
TProgind pi(mag.items(), TR("Generazione movimenti"));
|
||||
|
||||
TString8 last_mag;
|
||||
|
||||
for (bool ok = mag.move_first(); ok; ok = mag.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
TString8 curr_mag = mag.get("CODTAB").as_string().left(3);
|
||||
curr_mag.cut(3);
|
||||
|
||||
if (mm == NULL || mm->rows() >= max_rows || curr_mag != last_mag)
|
||||
{
|
||||
last_mag = curr_mag;
|
||||
if (mm)
|
||||
{
|
||||
nmov += mm->write(f) == NOERR;
|
||||
delete mm;
|
||||
}
|
||||
mm = new TMov_mag;
|
||||
mm->put(MOVMAG_ANNOES, get(F_ANNO));
|
||||
mm->put(MOVMAG_CODCAUS, get(F_CAUSALE));
|
||||
mm->put(MOVMAG_DATAREG, data_comp);
|
||||
mm->put(MOVMAG_DATACOMP, data_comp);
|
||||
mm->put(MOVMAG_CODCAUS, get(F_CAUSALE));
|
||||
mm->put(MOVMAG_DESCR, TR("Differenze inventariali"));
|
||||
}
|
||||
|
||||
real diff = mag.get("R2").as_real();
|
||||
diff -= mag.get(giac_eff ? "R1" : "R0").as_real();
|
||||
if (!diff.is_zero())
|
||||
{
|
||||
TRectype& rmovmag = mm->new_row();
|
||||
const TString& codtab = mag.get("CODTAB").as_string();
|
||||
rmovmag.put(RMOVMAG_CODMAG, codtab.left(5));
|
||||
rmovmag.put(RMOVMAG_CODART, codtab.mid(5, 20));
|
||||
rmovmag.put(RMOVMAG_LIVGIAC,codtab.mid(25));
|
||||
rmovmag.put(RMOVMAG_UM, mag.get("S1").as_string());
|
||||
rmovmag.put(RMOVMAG_QUANT, diff);
|
||||
}
|
||||
}
|
||||
|
||||
if (mm)
|
||||
{
|
||||
if (mm->rows() > 0)
|
||||
nmov += mm->write(f) == NOERR;
|
||||
delete mm;
|
||||
mm = NULL;
|
||||
}
|
||||
|
||||
message_box(FR("Sono stati generati %d movimenti"), nmov);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TSaldodata_app
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -140,9 +325,10 @@ class TSaldodata_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
void reset_saldi(const TDate& data, const TString& codmag);
|
||||
void init_saldi_iniziali(const TDate& data, bool use_dep,const TString& codmag, TAssoc_saldi& saldi);
|
||||
void init_saldi_iniziali(const TDate& data, bool use_dep,const TString& codmag,
|
||||
const TString& dacod, const TString& acod, TAssoc_saldi& saldi);
|
||||
void update_saldi(const TDate& data, bool use_dep, const TString& codmag, TAssoc_saldi& saldi);
|
||||
void rebuild_saldi(const TDate& data, bool use_dep, const TString& codmag);
|
||||
void rebuild_saldi(const TDate& data, bool use_dep, const TString& codmag, const TString& dacod, const TString& acod);
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
@ -174,7 +360,8 @@ void TSaldodata_app::reset_saldi(const TDate& data, const TString& codmag)
|
||||
}
|
||||
}
|
||||
|
||||
void TSaldodata_app::init_saldi_iniziali(const TDate& data, bool use_dep, const TString& codmag, TAssoc_saldi& saldi)
|
||||
void TSaldodata_app::init_saldi_iniziali(const TDate& data, bool use_dep, const TString& codmag,
|
||||
const TString& dacod, const TString& acod, TAssoc_saldi& saldi)
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
const int esercizio_corrente = esc.date2esc(data);
|
||||
@ -188,13 +375,15 @@ void TSaldodata_app::init_saldi_iniziali(const TDate& data, bool use_dep, const
|
||||
if (precedente_aperto) // Esercizio aperto
|
||||
{
|
||||
TString limit;
|
||||
limit << " ANNOES=" << (data.year()-1);
|
||||
limit << "ANNOES=" << (data.year()-1);
|
||||
if (codmag.full())
|
||||
limit << " CODMAG=" << codmag;
|
||||
limit << " CODART=";
|
||||
|
||||
TString query;
|
||||
query << "USE " << LF_MAG << " KEY 2"
|
||||
<< "\nFROM" << limit << "\nTO" << limit;
|
||||
<< "\nFROM " << limit << dacod
|
||||
<< "\nTO " << limit << acod;
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
TToken_string key;
|
||||
@ -275,10 +464,11 @@ void TSaldodata_app::update_saldi(const TDate& data, bool use_dep, const TString
|
||||
}
|
||||
}
|
||||
|
||||
void TSaldodata_app::rebuild_saldi(const TDate& data, bool use_dep, const TString& codmag)
|
||||
void TSaldodata_app::rebuild_saldi(const TDate& data, bool use_dep, const TString& codmag,
|
||||
const TString& dacod, const TString& acod)
|
||||
{
|
||||
TAssoc_saldi saldi;
|
||||
init_saldi_iniziali(data, use_dep, codmag, saldi);
|
||||
init_saldi_iniziali(data, use_dep, codmag, dacod, acod, saldi);
|
||||
update_saldi(data, use_dep, codmag, saldi);
|
||||
|
||||
TFast_isamfile mag(LF_TABMOD);
|
||||
@ -336,8 +526,10 @@ void TSaldodata_app::main_loop()
|
||||
const TDate al = m.get(F_DATA);
|
||||
const bool use_dep = m.get_bool(F_USEDEP);
|
||||
const TString& mag = m.get(use_dep ? F_DEP : F_MAG);
|
||||
const TString& dacod = m.get(F_ARTINI);
|
||||
const TString& acod = m.get(F_ARTFIN);
|
||||
reset_saldi(al, mag);
|
||||
rebuild_saldi(al, use_dep, mag);
|
||||
rebuild_saldi(al, use_dep, mag, dacod, acod);
|
||||
}
|
||||
}
|
||||
|
||||
|
17
mg/mg1300a.h
17
mg/mg1300a.h
@ -1,4 +1,13 @@
|
||||
#define F_DATA 101
|
||||
#define F_USEDEP 102
|
||||
#define F_MAG 103
|
||||
#define F_DEP 104
|
||||
#define F_DATA 101
|
||||
#define F_USEDEP 102
|
||||
#define F_MAG 103
|
||||
#define F_DEP 104
|
||||
#define F_ARTINI 105
|
||||
#define F_ARTFIN 106
|
||||
|
||||
#define F_ANNO 111
|
||||
#define F_CODNUM 112
|
||||
|
||||
#define F_CAUSALE 121
|
||||
#define F_GIAC 122
|
||||
#define F_DATACOMP 123
|
||||
|
146
mg/mg1300a.uml
146
mg/mg1300a.uml
@ -1,23 +1,80 @@
|
||||
#include "mg1300a.h"
|
||||
|
||||
PAGE "Giacenza alla data" -1 -1 46 3
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_PREVIEW 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Situazione"
|
||||
PICTURE TOOL_PREVIEW
|
||||
END
|
||||
|
||||
BUTTON DLG_FINDREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "No Giacenza"
|
||||
PICTURE TOOL_PREVIEW
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Giacenza"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
BUTTON DLG_SAVEREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Fisica"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
BUTTON DLG_NEXTREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Movimento"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Azzera"
|
||||
PICTURE TOOL_DELREC
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Giacenza alla data" -1 -1 64 8
|
||||
|
||||
GROUPBOX DLG_NULL 45 7
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bGiacenza alla data"
|
||||
END
|
||||
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
PROMPT 1 0 "Data "
|
||||
PROMPT 2 1 "Data "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
BOOLEAN F_USEDEP
|
||||
BEGIN
|
||||
PROMPT 1 1 "Suddivisione per deposito"
|
||||
PROMPT 2 2 "Suddivisione per deposito"
|
||||
MESSAGE FALSE HIDE,F_DEP|SHOW,F_MAG
|
||||
MESSAGE TRUE HIDE,F_MAG|SHOW,F_DEP
|
||||
END
|
||||
|
||||
STRING F_MAG 3
|
||||
BEGIN
|
||||
PROMPT 1 2 "Magazzino "
|
||||
PROMPT 2 3 "Magazzino "
|
||||
USE MAG SELECT CODTAB[4,4]=''
|
||||
INPUT CODTAB F_MAG
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -29,7 +86,7 @@ END
|
||||
|
||||
STRING F_DEP 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Deposito "
|
||||
PROMPT 2 3 "Deposito "
|
||||
USE MAG SELECT CODTAB[4,4]!=''
|
||||
INPUT CODTAB F_DEP
|
||||
COPY DISPLAY F_MAG
|
||||
@ -39,26 +96,81 @@ BEGIN
|
||||
HELP "Elabora tutti i depositi se vuoto"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_PREVIEW 2 2
|
||||
STRING F_ARTINI 20
|
||||
BEGIN
|
||||
PROMPT 1 1 "Situazione"
|
||||
PICTURE TOOL_PREVIEW
|
||||
PROMPT 2 4 "Dall'articolo "
|
||||
USE LF_ANAMAG
|
||||
INPUT CODART F_ARTINI
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_ARTINI CODART
|
||||
CHECKTYPE SEARCH
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
STRING F_ARTFIN 20
|
||||
BEGIN
|
||||
PROMPT 1 1 "Azzera"
|
||||
PICTURE TOOL_DELREC
|
||||
PROMPT 2 5 "All'articolo "
|
||||
COPY USE F_ARTINI
|
||||
INPUT CODART F_ARTFIN
|
||||
COPY DISPLAY F_ARTINI
|
||||
OUTPUT F_ARTFIN CODART
|
||||
CHECKTYPE SEARCH
|
||||
END
|
||||
|
||||
#include <elabar.h>
|
||||
GROUPBOX DLG_NULL 45 3
|
||||
BEGIN
|
||||
PROMPT 1 7 "@bGiacenza fisica"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Anno "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 23 8 "Numerazione "
|
||||
FLAGS "U"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODNUM CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 45 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bMovimento di rettifica inventariale"
|
||||
END
|
||||
|
||||
STRING F_CAUSALE 5
|
||||
BEGIN
|
||||
PROMPT 2 11 "Causale "
|
||||
USE %CAU SELECT (S7="C")&&(S2[1,1]="+")
|
||||
INPUT CODTAB F_CAUSALE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CAUSALE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN mg0 -0 %CAU
|
||||
END
|
||||
|
||||
DATE F_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 20 11 "Competenza "
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LISTBOX F_GIAC 1 12
|
||||
BEGIN
|
||||
PROMPT 2 12 "Calcolo in base a giacenza "
|
||||
ITEM "0|Corrente"
|
||||
ITEM "1|Effettiva"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
||||
|
||||
|
@ -584,15 +584,13 @@ public:
|
||||
TArticolo & articolo(int row) const { return cached_article(body()[row].get(RMOVMAG_CODART));}
|
||||
TArticolo_giacenza & articolo_giacenza(int row) const { return cached_article_balances(body()[row].get(RMOVMAG_CODART));}
|
||||
TCausale_magazzino& causale(int row) const;
|
||||
const TCausale_magazzino& causale(const char* cod = NULL) const;
|
||||
const TCausale_magazzino& causale(const char* cod = NULL) const;
|
||||
void renum_mov(const long numreg);
|
||||
|
||||
|
||||
// @member: effettua l'aggiornamento dei saldi di una giacenza
|
||||
void update_balances(TRectype& magrec, int numrig, bool plus = true);
|
||||
void update_balances_clifo(TRectype& cliforec, int numrig, bool plus = true);
|
||||
|
||||
//
|
||||
int codice_esercizio(const TDate& d) const;
|
||||
|
||||
// costruttori e distruttori
|
||||
|
Loading…
x
Reference in New Issue
Block a user