Patch level : 10.0 patch 586
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Aggiunti i commenti dettagliati al programma git-svn-id: svn://10.65.10.50/trunk@19961 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
011905cbeb
commit
12a7b6beb7
@ -35,40 +35,52 @@ public:
|
|||||||
TSitmag_msk();
|
TSitmag_msk();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//CALCOLA_QTA_MAGAZZINO: metodo che si preoccupa di riempire lo sheet
|
||||||
|
//con le quantità relative all'articolo / anno selezionati nei vari depositi
|
||||||
|
//ogni volta che viene modificato un campo dell'articolo o il campo anno
|
||||||
void TSitmag_msk::calcola_qta_magazzino() const
|
void TSitmag_msk::calcola_qta_magazzino() const
|
||||||
{
|
{
|
||||||
|
//recupero le variabili di interesse
|
||||||
const TString80 codart = field(F_CODART).get();
|
const TString80 codart = field(F_CODART).get();
|
||||||
TString4 codmag = field(F_CODMAG).get();
|
|
||||||
codmag.trim();
|
|
||||||
|
|
||||||
const int anno = field(F_ANNO).get_long();
|
const int anno = field(F_ANNO).get_long();
|
||||||
|
TString4 codmag = field(F_CODMAG).get(); codmag.trim();
|
||||||
|
|
||||||
|
//Instanzio l'oggetto che mi permette di recuperare le quantità riceercate
|
||||||
const TArticolo_giacenza art(codart);
|
const TArticolo_giacenza art(codart);
|
||||||
|
|
||||||
|
//Instanzio lo sheet, e recupero le posizioni di maggior interesse
|
||||||
|
//(vengono usate più volte all'interno del programma)
|
||||||
TSheet_field& sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
|
|
||||||
const int posgiac = sheet.cid2index(S_GIAC);
|
const int posgiac = sheet.cid2index(S_GIAC);
|
||||||
const int posordf = sheet.cid2index(S_ORDFOR);
|
const int posordf = sheet.cid2index(S_ORDFOR);
|
||||||
const int posordc = sheet.cid2index(S_ORDCLI);
|
const int posordc = sheet.cid2index(S_ORDCLI);
|
||||||
const int posdisp = sheet.cid2index(S_DISP);
|
const int posdisp = sheet.cid2index(S_DISP);
|
||||||
|
|
||||||
|
//per ogni magazzino
|
||||||
for(int i = 0; i < _ndep; i++)
|
for(int i = 0; i < _ndep; i++)
|
||||||
{
|
{
|
||||||
|
//recupero una riga alla volta
|
||||||
TToken_string& row = sheet.row(i);
|
TToken_string& row = sheet.row(i);
|
||||||
|
//recupero il codice del deposito
|
||||||
TString4 coddep = row.get(sheet.cid2index(S_CODDEP));
|
TString4 coddep = row.get(sheet.cid2index(S_CODDEP));
|
||||||
coddep.trim();
|
coddep.trim();
|
||||||
|
|
||||||
|
//costruisco il codice magazzino + deposito
|
||||||
TString8 deposito;
|
TString8 deposito;
|
||||||
deposito << codmag << coddep;
|
deposito << codmag << coddep;
|
||||||
|
|
||||||
|
//inizializzo le quantità di interesse(la giacenza a quella corrente, le altre a zero)
|
||||||
const long giac = art.giacenza_anno(deposito, "", anno).integer();
|
const long giac = art.giacenza_anno(deposito, "", anno).integer();
|
||||||
long ordf = 0L;
|
long ordf = 0L;
|
||||||
long ordc = 0L;
|
long ordc = 0L;
|
||||||
long disp = 0L;
|
long disp = 0L;
|
||||||
|
|
||||||
|
//cerco il record dell'articolo selzionato corrispondente all'anno corrente
|
||||||
TRecord_array& rmag = art.mag(anno);
|
TRecord_array& rmag = art.mag(anno);
|
||||||
int j = art.find_mag(anno, deposito, "");
|
int j = art.find_mag(anno, deposito, "");
|
||||||
|
//se lo trovo ricavo i valori degli ordini fornitori e clienti
|
||||||
|
//e poi calcolo la disponibilità seconda la formula
|
||||||
|
//disponibilità = giacenza + ordini_fornitori - ordini_clienti
|
||||||
if(j >= 0)
|
if(j >= 0)
|
||||||
{
|
{
|
||||||
const TRectype& rec = rmag.row(j);
|
const TRectype& rec = rmag.row(j);
|
||||||
@ -78,17 +90,21 @@ void TSitmag_msk::calcola_qta_magazzino() const
|
|||||||
|
|
||||||
disp = giac + ordf - ordc;
|
disp = giac + ordf - ordc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//scrivo le varie quntità che ho ricavato
|
||||||
row.add(giac, posgiac);
|
row.add(giac, posgiac);
|
||||||
row.add(ordf, posordf);
|
row.add(ordf, posordf);
|
||||||
row.add(ordc, posordc);
|
row.add(ordc, posordc);
|
||||||
row.add(disp, posdisp);
|
row.add(disp, posdisp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//calcolo dei totali
|
||||||
long totgiac = 0L;
|
long totgiac = 0L;
|
||||||
long totordf = 0L;
|
long totordf = 0L;
|
||||||
long totordc = 0L;
|
long totordc = 0L;
|
||||||
long totdisp = 0L;
|
long totdisp = 0L;
|
||||||
|
|
||||||
|
//rileggo lo sheet e sommo le varie quantità
|
||||||
for(int i = 1; i < _ndep; i++)
|
for(int i = 1; i < _ndep; i++)
|
||||||
{
|
{
|
||||||
TToken_string& row = sheet.row(i);
|
TToken_string& row = sheet.row(i);
|
||||||
@ -99,8 +115,8 @@ void TSitmag_msk::calcola_qta_magazzino() const
|
|||||||
totdisp += row.get_long(posdisp);
|
totdisp += row.get_long(posdisp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//scrivo i totali nelle posizioni corrette
|
||||||
TToken_string& row = sheet.row(_ndep);
|
TToken_string& row = sheet.row(_ndep);
|
||||||
|
|
||||||
row.add(totgiac, posgiac);
|
row.add(totgiac, posgiac);
|
||||||
row.add(totordf, posordf);
|
row.add(totordf, posordf);
|
||||||
row.add(totordc, posordc);
|
row.add(totordc, posordc);
|
||||||
@ -116,6 +132,8 @@ bool TSitmag_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
|||||||
switch (f.dlg())
|
switch (f.dlg())
|
||||||
{
|
{
|
||||||
case DLG_CANCEL:
|
case DLG_CANCEL:
|
||||||
|
//alla pressione del bottone annulla azzero tutte le quantità,
|
||||||
|
//svuoto i campi codart e desart e restituisco il focus al campo codart
|
||||||
if(e == fe_button)
|
if(e == fe_button)
|
||||||
{
|
{
|
||||||
reset(F_CODART);
|
reset(F_CODART);
|
||||||
@ -178,6 +196,7 @@ TSitmag_msk::TSitmag_msk():TAutomask("lv3500a")
|
|||||||
}
|
}
|
||||||
row.add(coddep, sheet.cid2index(S_CODDEP));
|
row.add(coddep, sheet.cid2index(S_CODDEP));
|
||||||
|
|
||||||
|
//questo if mi permette di fare la decodifica del campo descrizione deposito
|
||||||
if(i < _ndep)
|
if(i < _ndep)
|
||||||
sheet.check_row(i);
|
sheet.check_row(i);
|
||||||
}
|
}
|
||||||
@ -216,8 +235,8 @@ bool TSitmag_app::destroy()
|
|||||||
return TApplication::destroy();
|
return TApplication::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TRANSFER: metodo che scorre i campi nome e, se sono pieni, richiama il metodo
|
//TRANSFER: metodo principale dell'elaborazione, che non deve fare niente
|
||||||
//ELABORA_FILE(), che effettivamente fa l'elaborazione
|
//perchè viene tutto gestito nella maschera
|
||||||
bool TSitmag_app::transfer()
|
bool TSitmag_app::transfer()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user