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
220
mg/mg1300.cpp
220
mg/mg1300.cpp
@ -15,6 +15,8 @@
|
|||||||
#include "../mg/movmag.h"
|
#include "../mg/movmag.h"
|
||||||
#include "../mg/rmovmag.h"
|
#include "../mg/rmovmag.h"
|
||||||
|
|
||||||
|
#include "rdoc.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TSaldodata_mask
|
// TSaldodata_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -22,6 +24,9 @@
|
|||||||
class TSaldodata_mask : public TAutomask
|
class TSaldodata_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
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);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -33,17 +38,14 @@ static bool reset_cb(const TRelation& rel, void* pJolly)
|
|||||||
return rel.file().remove() == NOERR;
|
return rel.file().remove() == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TSaldodata_mask::preview(bool zero_giac)
|
||||||
bool TSaldodata_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
||||||
{
|
|
||||||
switch (o.dlg())
|
|
||||||
{
|
|
||||||
case DLG_PREVIEW:
|
|
||||||
if (e == fe_button)
|
|
||||||
{
|
{
|
||||||
TString query;
|
TString query;
|
||||||
query = "USE &MAG";
|
query = "USE &MAG";
|
||||||
|
|
||||||
|
if (zero_giac)
|
||||||
|
query << "\nSELECT (S7=\"\")";
|
||||||
|
|
||||||
const TString& codmag = get(get_bool(F_USEDEP) ? F_DEP : F_MAG);
|
const TString& codmag = get(get_bool(F_USEDEP) ? F_DEP : F_MAG);
|
||||||
if (codmag.full())
|
if (codmag.full())
|
||||||
{
|
{
|
||||||
@ -69,6 +71,29 @@ bool TSaldodata_mask::on_field_event(TOperable_field& o, TField_event e, long jo
|
|||||||
TCursor_sheet s(recset.cursor(), fields, TR("Situazione"), heads, 0, 1);
|
TCursor_sheet s(recset.cursor(), fields, TR("Situazione"), heads, 0, 1);
|
||||||
s.run();
|
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)
|
||||||
|
preview(false);
|
||||||
|
break;
|
||||||
|
case DLG_FINDREC:
|
||||||
|
if (e == fe_button)
|
||||||
|
preview(true);
|
||||||
break;
|
break;
|
||||||
case DLG_DELREC:
|
case DLG_DELREC:
|
||||||
if (e == fe_button && noyes_box(TR("Si desiderano azzerare tutte le giacenze alla data?")))
|
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!
|
return false; // Otherwise quits!
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -132,6 +165,158 @@ TSaldo_info& TAssoc_saldi::info(const char* key)
|
|||||||
return *i;
|
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
|
// TSaldodata_app
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -140,9 +325,10 @@ class TSaldodata_app : public TSkeleton_application
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
void reset_saldi(const TDate& data, const TString& codmag);
|
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 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:
|
public:
|
||||||
virtual void main_loop();
|
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;
|
TEsercizi_contabili esc;
|
||||||
const int esercizio_corrente = esc.date2esc(data);
|
const int esercizio_corrente = esc.date2esc(data);
|
||||||
@ -191,10 +378,12 @@ void TSaldodata_app::init_saldi_iniziali(const TDate& data, bool use_dep, const
|
|||||||
limit << "ANNOES=" << (data.year()-1);
|
limit << "ANNOES=" << (data.year()-1);
|
||||||
if (codmag.full())
|
if (codmag.full())
|
||||||
limit << " CODMAG=" << codmag;
|
limit << " CODMAG=" << codmag;
|
||||||
|
limit << " CODART=";
|
||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE " << LF_MAG << " KEY 2"
|
query << "USE " << LF_MAG << " KEY 2"
|
||||||
<< "\nFROM" << limit << "\nTO" << limit;
|
<< "\nFROM " << limit << dacod
|
||||||
|
<< "\nTO " << limit << acod;
|
||||||
|
|
||||||
TISAM_recordset recset(query);
|
TISAM_recordset recset(query);
|
||||||
TToken_string key;
|
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;
|
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);
|
update_saldi(data, use_dep, codmag, saldi);
|
||||||
|
|
||||||
TFast_isamfile mag(LF_TABMOD);
|
TFast_isamfile mag(LF_TABMOD);
|
||||||
@ -336,8 +526,10 @@ void TSaldodata_app::main_loop()
|
|||||||
const TDate al = m.get(F_DATA);
|
const TDate al = m.get(F_DATA);
|
||||||
const bool use_dep = m.get_bool(F_USEDEP);
|
const bool use_dep = m.get_bool(F_USEDEP);
|
||||||
const TString& mag = m.get(use_dep ? F_DEP : F_MAG);
|
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);
|
reset_saldi(al, mag);
|
||||||
rebuild_saldi(al, use_dep, mag);
|
rebuild_saldi(al, use_dep, mag, dacod, acod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,3 +2,12 @@
|
|||||||
#define F_USEDEP 102
|
#define F_USEDEP 102
|
||||||
#define F_MAG 103
|
#define F_MAG 103
|
||||||
#define F_DEP 104
|
#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"
|
#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
|
DATE F_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "Data "
|
PROMPT 2 1 "Data "
|
||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_USEDEP
|
BOOLEAN F_USEDEP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Suddivisione per deposito"
|
PROMPT 2 2 "Suddivisione per deposito"
|
||||||
MESSAGE FALSE HIDE,F_DEP|SHOW,F_MAG
|
MESSAGE FALSE HIDE,F_DEP|SHOW,F_MAG
|
||||||
MESSAGE TRUE HIDE,F_MAG|SHOW,F_DEP
|
MESSAGE TRUE HIDE,F_MAG|SHOW,F_DEP
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_MAG 3
|
STRING F_MAG 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Magazzino "
|
PROMPT 2 3 "Magazzino "
|
||||||
USE MAG SELECT CODTAB[4,4]=''
|
USE MAG SELECT CODTAB[4,4]=''
|
||||||
INPUT CODTAB F_MAG
|
INPUT CODTAB F_MAG
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -29,7 +86,7 @@ END
|
|||||||
|
|
||||||
STRING F_DEP 5
|
STRING F_DEP 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Deposito "
|
PROMPT 2 3 "Deposito "
|
||||||
USE MAG SELECT CODTAB[4,4]!=''
|
USE MAG SELECT CODTAB[4,4]!=''
|
||||||
INPUT CODTAB F_DEP
|
INPUT CODTAB F_DEP
|
||||||
COPY DISPLAY F_MAG
|
COPY DISPLAY F_MAG
|
||||||
@ -39,26 +96,81 @@ BEGIN
|
|||||||
HELP "Elabora tutti i depositi se vuoto"
|
HELP "Elabora tutti i depositi se vuoto"
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
STRING F_ARTINI 20
|
||||||
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
|
||||||
|
|
||||||
BUTTON DLG_PREVIEW 2 2
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Situazione"
|
PROMPT 2 4 "Dall'articolo "
|
||||||
PICTURE TOOL_PREVIEW
|
USE LF_ANAMAG
|
||||||
|
INPUT CODART F_ARTINI
|
||||||
|
DISPLAY "Codice@20" CODART
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_ARTINI CODART
|
||||||
|
CHECKTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_DELREC 2 2
|
STRING F_ARTFIN 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Azzera"
|
PROMPT 2 5 "All'articolo "
|
||||||
PICTURE TOOL_DELREC
|
COPY USE F_ARTINI
|
||||||
|
INPUT CODART F_ARTFIN
|
||||||
|
COPY DISPLAY F_ARTINI
|
||||||
|
OUTPUT F_ARTFIN CODART
|
||||||
|
CHECKTYPE SEARCH
|
||||||
END
|
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
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
@ -587,12 +587,10 @@ public:
|
|||||||
const TCausale_magazzino& causale(const char* cod = NULL) const;
|
const TCausale_magazzino& causale(const char* cod = NULL) const;
|
||||||
void renum_mov(const long numreg);
|
void renum_mov(const long numreg);
|
||||||
|
|
||||||
|
|
||||||
// @member: effettua l'aggiornamento dei saldi di una giacenza
|
// @member: effettua l'aggiornamento dei saldi di una giacenza
|
||||||
void update_balances(TRectype& magrec, int numrig, bool plus = true);
|
void update_balances(TRectype& magrec, int numrig, bool plus = true);
|
||||||
void update_balances_clifo(TRectype& cliforec, int numrig, bool plus = true);
|
void update_balances_clifo(TRectype& cliforec, int numrig, bool plus = true);
|
||||||
|
|
||||||
//
|
|
||||||
int codice_esercizio(const TDate& d) const;
|
int codice_esercizio(const TDate& d) const;
|
||||||
|
|
||||||
// costruttori e distruttori
|
// costruttori e distruttori
|
||||||
|
Loading…
x
Reference in New Issue
Block a user