Aggiustata maschera causali

git-svn-id: svn://10.65.10.50/branches/R_10_00@22813 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-03-03 21:47:43 +00:00
parent 92b444daf1
commit 55a0b71a66
6 changed files with 76 additions and 41 deletions

View File

@ -28,45 +28,66 @@ public:
TSaldodata_mask();
};
static bool reset_cb(const TRelation& rel, void* pJolly)
{
return rel.file().remove() == NOERR;
}
bool TSaldodata_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
if (e == fe_button && o.dlg() == DLG_PREVIEW)
switch (o.dlg())
{
TString query;
query = "USE &MAG";
const TString& codmag = get(get_bool(F_USEDEP) ? F_DEP : F_MAG);
if (codmag.full())
case DLG_PREVIEW:
if (e == fe_button)
{
query << "\nFROM CODTAB=" << codmag
<< "\nTO CODTAB=" << codmag;
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();
}
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"))
break;
case DLG_DELREC:
if (e == fe_button && noyes_box(TR("Si desiderano azzerare tutte le giacenze alla data?")))
{
fields.add("CODTAB[1,3]", 0);
heads.add(HR("Mag"), 0);
TISAM_recordset recset("USE &MAG");
recset.cursor()->scan(reset_cb, NULL, TR("Azzeramento"));
return false; // Otherwise quits!
}
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();
break;
default:
break;
}
return true;
}
TSaldodata_mask::TSaldodata_mask() : TAutomask("mg1300a")
{
const bool lg = ini_get_bool(CONFIG_DITTA, "mg", "GESLIVGIAC");
enable(F_USEDEP, lg);
const bool gd = ini_get_bool(CONFIG_DITTA, "mg", "GESDEPOSITI");
enable(F_USEDEP, gd);
}
@ -210,31 +231,32 @@ void TSaldodata_app::update_saldi(const TDate& data, bool use_dep, const TString
TRecord_array righe(key, LF_RMOVMAG);
for (int i = righe.last_row(); i > 0; i = righe.pred_row(i))
{
real qta = recset.get(RMOVMAG_QUANT).as_real();
const TRectype& riga = righe.row(i);
real qta = riga.get_real(RMOVMAG_QUANT);
if (qta.is_zero())
continue;
const TString& rcaus = recset.get(RMOVMAG_CODCAUS).as_string();
const TString& rcaus = riga.get(RMOVMAG_CODCAUS);
const TCausale_magazzino& caus = cached_causale_magazzino(rcaus.full() ? rcaus : hcaus);
const int sgn_giac = caus.sgn(s_giac);
const int sgn_icl = caus.sgn(s_incl);
const int sgn_acl = caus.sgn(s_acl);
if ((sgn_giac != 0 || sgn_icl != 0 || sgn_acl != 0) && caus.update_qta())
{
TString8 codmag = recset.get(RMOVMAG_CODMAG).as_string();
TString8 codmag = riga.get(RMOVMAG_CODMAG);
if (codmag.empty()) codmag.spaces(5);
if (!use_dep) codmag.cut(3);
if (mag.full() && codmag != mag)
continue;
const TString80 codart = recset.get(RMOVMAG_CODART).as_string();
const TString4 um = recset.get(RMOVMAG_UM).as_string();
const TString80 codart = riga.get(RMOVMAG_CODART);
const TString4 um = riga.get(RMOVMAG_UM);
TArticolo& art = cached_article(codart);
qta = art.convert_to_um(qta, EMPTY_STRING, um);
key = codmag;
key.add(codart);
key.add(recset.get(RMOVMAG_LIVGIAC).as_string());
key.add(riga.get(RMOVMAG_LIVGIAC));
TSaldo_info& info = saldi.info(key);
info._giac += qta * sgn_giac;
@ -256,7 +278,7 @@ void TSaldodata_app::rebuild_saldi(const TDate& data, bool use_dep, const TStrin
TToken_string k;
TString80 codtab;
TProgind pi(saldi.items(), TR("Salvataggio inventario"));
TProgind pi(saldi.items(), TR("Salvataggio giacenze"));
FOR_EACH_ASSOC_OBJECT(saldi, hash, key, obj)
{
if (!pi.addstatus(1))
@ -293,7 +315,7 @@ void TSaldodata_app::rebuild_saldi(const TDate& data, bool use_dep, const TStrin
mag.put("D0", data);
if (mag.rewrite() != NOERR)
{
cantwrite_box("inventario alla data");
cantwrite_box(title());
break;
}
}

View File

@ -1,6 +1,6 @@
#include "mg1300a.h"
PAGE "Giacenza alla data" -1 -1 40 3
PAGE "Giacenza alla data" -1 -1 46 3
DATE F_DATA
BEGIN
@ -49,6 +49,12 @@ BEGIN
PICTURE TOOL_PREVIEW
END
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT 1 1 "Azzera"
PICTURE TOOL_DELREC
END
#include <elabar.h>
ENDPAGE

View File

@ -123,14 +123,14 @@ public:
int find_codcorr(const char * codcorr, int from = 0) const;
bool is_first_um(const char * ums) const { return um().rows() > 0 ? find_um(ums) == 1: false; }
const char * first_um() const { return um().rows() > 0 ? um()[1].get(UMART_UM) : ""; }
const TString& first_um() const;
static void round_um(real& v, const char* to_um);
real convert_to_um(const real& v, const TString& to_um, const TString& from_um = EMPTY_STRING, bool arrotonda = true);
TRecord_array & um() const { return body(LF_UMART); }
TRecord_array & deslin() const { return body(LF_DESLIN); }
TRecord_array & codcorr() const { return body(LF_CODCORR); }
TRecord_array& um() const { return body(LF_UMART); }
TRecord_array& deslin() const { return body(LF_DESLIN); }
TRecord_array& codcorr() const { return body(LF_CODCORR); }
TArticolo(const char* codice = NULL);
TArticolo(const TRectype& rec);

View File

@ -302,6 +302,12 @@ int TArticolo::find_codcorr(const char * codcorr, int from) const
return find(LF_CODCORR, CODCORR_CODARTALT, codcorr, from);
}
const TString& TArticolo::first_um() const
{
const TRecord_array& a = um();
return a.rows() > 0 ? a[1].get(UMART_UM) : EMPTY_STRING;
}
// Funzione statica utilizzabile da tutti
void TArticolo::round_um(real& r, const char* to_um)
{

View File

@ -46,9 +46,10 @@ Item_10 = "Controllo lista movimenti", "mg4 -3", "F"
[MGMENU_070]
Caption = "Servizi modulo magazzino"
Picture = <mg01>
Module = 32
Module = mg
Flags = ""
Item_01 = "Apertura/chiusura magazzino", "mg1 -3", "F"
Item_02 = "Giacenza alla data", "mg1 -2", "F"
[MGMENU_090]
Caption = "Configurazione modulo magazzino"

View File

@ -64,7 +64,7 @@ END
STRING F_RAGGFD 50 40
BEGIN
PROMPT 30 5 ""
PROMPT 32 5 ""
FLAGS "D"
END