Patch level : 10.0 NO PATCH
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Programma di riepilogo magazzino - manca la parte di giacenza presso il cliente git-svn-id: svn://10.65.10.50/trunk@19958 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ce189a1b59
commit
55f264f43c
134
lv/lv3500.cpp
134
lv/lv3500.cpp
@ -8,6 +8,7 @@
|
||||
|
||||
#include "lvlib.h"
|
||||
#include "../mg/clifogiac.h"
|
||||
#include "../mg/mglib.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
#include "clifo.h"
|
||||
@ -24,17 +25,127 @@
|
||||
//classe TSitmag_msk
|
||||
class TSitmag_msk: public TAutomask
|
||||
{
|
||||
static const int _ndep = 4;
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
void calcola_qta_magazzino() const;
|
||||
|
||||
public:
|
||||
TSitmag_msk();
|
||||
};
|
||||
|
||||
void TSitmag_msk::calcola_qta_magazzino() const
|
||||
{
|
||||
const TString80 codart = field(F_CODART).get();
|
||||
TString4 codmag = field(F_CODMAG).get();
|
||||
codmag.trim();
|
||||
|
||||
const int anno = field(F_ANNO).get_long();
|
||||
|
||||
const TArticolo_giacenza art(codart);
|
||||
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
|
||||
const int posgiac = sheet.cid2index(S_GIAC);
|
||||
const int posordf = sheet.cid2index(S_ORDFOR);
|
||||
const int posordc = sheet.cid2index(S_ORDCLI);
|
||||
const int posdisp = sheet.cid2index(S_DISP);
|
||||
|
||||
for(int i = 0; i < _ndep; i++)
|
||||
{
|
||||
TToken_string& row = sheet.row(i);
|
||||
TString4 coddep = row.get(sheet.cid2index(S_CODDEP));
|
||||
coddep.trim();
|
||||
|
||||
TString8 deposito;
|
||||
deposito << codmag << coddep;
|
||||
|
||||
const long giac = art.giacenza_anno(deposito, "", anno).integer();
|
||||
long ordf = 0L;
|
||||
long ordc = 0L;
|
||||
long disp = 0L;
|
||||
|
||||
TRecord_array& rmag = art.mag(anno);
|
||||
int j = art.find_mag(anno, deposito, "");
|
||||
|
||||
if(j >= 0)
|
||||
{
|
||||
const TRectype& rec = rmag.row(j);
|
||||
|
||||
ordf = rec.get_long(MAG_ORDF);
|
||||
ordc = rec.get_long(MAG_ORDC);
|
||||
|
||||
disp = giac + ordf - ordc;
|
||||
}
|
||||
row.add(giac, posgiac);
|
||||
row.add(ordf, posordf);
|
||||
row.add(ordc, posordc);
|
||||
row.add(disp, posdisp);
|
||||
}
|
||||
|
||||
long totgiac = 0L;
|
||||
long totordf = 0L;
|
||||
long totordc = 0L;
|
||||
long totdisp = 0L;
|
||||
|
||||
for(int i = 1; i < _ndep; i++)
|
||||
{
|
||||
TToken_string& row = sheet.row(i);
|
||||
|
||||
totgiac += row.get_long(posgiac);
|
||||
totordf += row.get_long(posordf);
|
||||
totordc += row.get_long(posordc);
|
||||
totdisp += row.get_long(posdisp);
|
||||
}
|
||||
|
||||
TToken_string& row = sheet.row(_ndep);
|
||||
|
||||
row.add(totgiac, posgiac);
|
||||
row.add(totordf, posordf);
|
||||
row.add(totordc, posordc);
|
||||
row.add(totdisp, posdisp);
|
||||
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
|
||||
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
|
||||
bool TSitmag_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
case DLG_CANCEL:
|
||||
if(e == fe_button)
|
||||
{
|
||||
reset(F_CODART);
|
||||
reset(F_DESART);
|
||||
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
for (int i = 1; i <= _ndep; i++)
|
||||
{
|
||||
TToken_string& row = sheet.row(i);
|
||||
row.add(0L, sheet.cid2index(S_GIAC));
|
||||
row.add(0L, sheet.cid2index(S_ORDFOR));
|
||||
row.add(0L, sheet.cid2index(S_ORDCLI));
|
||||
row.add(0L, sheet.cid2index(S_DISP));
|
||||
}
|
||||
sheet.force_update();
|
||||
|
||||
field(F_CODART).set_focus();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case F_CODART:
|
||||
if (e == fe_modify && !f.empty())
|
||||
calcola_qta_magazzino();
|
||||
break;
|
||||
case F_ANNO:
|
||||
if (e == fe_modify)
|
||||
calcola_qta_magazzino();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -46,7 +157,28 @@ TSitmag_msk::TSitmag_msk():TAutomask("lv3500a")
|
||||
set(F_ANNO, esercizi().date2esc(oggi));
|
||||
set(F_CODMAG, ini_get_string(CONFIG_DITTA, "lv", "CODMAG"));
|
||||
|
||||
hide(F_RIGHE);
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
|
||||
for(int i = 0; i <= _ndep; i++)
|
||||
{
|
||||
TString4 coddep;
|
||||
|
||||
TToken_string& row = sheet.row(-1);
|
||||
switch(i)
|
||||
{
|
||||
case 0: coddep = ini_get_string(CONFIG_DITTA, "lv", "CODMAGN"); break; //Deposito nuovo
|
||||
case 1: coddep = ini_get_string(CONFIG_DITTA, "lv", "CODMAGP"); break; //Deposito pulito
|
||||
case 2: coddep = ini_get_string(CONFIG_DITTA, "lv", "CODMAGC"); break; //Deposito circolante
|
||||
case 3: coddep = ini_get_string(CONFIG_DITTA, "lv", "CODMAGCL"); break; //Deposito presso cliente
|
||||
default: row.add(TR("TOTALI"), sheet.cid2index(S_DESDEP)); break;
|
||||
}
|
||||
row.add(coddep, sheet.cid2index(S_CODDEP));
|
||||
|
||||
if(i < _ndep)
|
||||
sheet.check_row(i);
|
||||
}
|
||||
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
|
@ -68,7 +68,6 @@ END
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Esercizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_CODMAG 4
|
||||
@ -92,12 +91,12 @@ END
|
||||
SPREADSHEET F_RIGHE
|
||||
BEGIN
|
||||
PROMPT 2 6 "Righe"
|
||||
ITEM "Cod.\nDep."
|
||||
ITEM "Deposito"
|
||||
ITEM "Giacenza"
|
||||
ITEM "Ord.\nFor."
|
||||
ITEM "Ord.\nCli."
|
||||
ITEM "Disponibilità"
|
||||
ITEM "Cod.\nDep.@3"
|
||||
ITEM "Deposito@50"
|
||||
ITEM "Giacenza@6"
|
||||
ITEM "Ord.\nFor.@6"
|
||||
ITEM "Ord.\nCli.@6"
|
||||
ITEM "Disp.@6"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -123,7 +122,12 @@ PAGE "Riga" -1 -1 80 10
|
||||
STRING S_CODDEP 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Cod. dep. "
|
||||
FLAGS "D"
|
||||
USE MAG
|
||||
INPUT CODTAB[1,3] -F_CODMAG
|
||||
INPUT CODTAB[4,5] S_CODDEP
|
||||
OUTPUT S_DESDEP S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "DG"
|
||||
END
|
||||
|
||||
STRING S_DESDEP 50
|
||||
|
Loading…
x
Reference in New Issue
Block a user