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,9 +28,18 @@ public:
TSaldodata_mask(); 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) 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())
{
case DLG_PREVIEW:
if (e == fe_button)
{ {
TString query; TString query;
query = "USE &MAG"; query = "USE &MAG";
@ -60,13 +69,25 @@ 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();
} }
break;
case DLG_DELREC:
if (e == fe_button && noyes_box(TR("Si desiderano azzerare tutte le giacenze alla data?")))
{
TISAM_recordset recset("USE &MAG");
recset.cursor()->scan(reset_cb, NULL, TR("Azzeramento"));
return false; // Otherwise quits!
}
break;
default:
break;
}
return true; return true;
} }
TSaldodata_mask::TSaldodata_mask() : TAutomask("mg1300a") TSaldodata_mask::TSaldodata_mask() : TAutomask("mg1300a")
{ {
const bool lg = ini_get_bool(CONFIG_DITTA, "mg", "GESLIVGIAC"); const bool gd = ini_get_bool(CONFIG_DITTA, "mg", "GESDEPOSITI");
enable(F_USEDEP, lg); 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); TRecord_array righe(key, LF_RMOVMAG);
for (int i = righe.last_row(); i > 0; i = righe.pred_row(i)) 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()) if (qta.is_zero())
continue; 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 TCausale_magazzino& caus = cached_causale_magazzino(rcaus.full() ? rcaus : hcaus);
const int sgn_giac = caus.sgn(s_giac); const int sgn_giac = caus.sgn(s_giac);
const int sgn_icl = caus.sgn(s_incl); const int sgn_icl = caus.sgn(s_incl);
const int sgn_acl = caus.sgn(s_acl); const int sgn_acl = caus.sgn(s_acl);
if ((sgn_giac != 0 || sgn_icl != 0 || sgn_acl != 0) && caus.update_qta()) 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 (codmag.empty()) codmag.spaces(5);
if (!use_dep) codmag.cut(3); if (!use_dep) codmag.cut(3);
if (mag.full() && codmag != mag) if (mag.full() && codmag != mag)
continue; continue;
const TString80 codart = recset.get(RMOVMAG_CODART).as_string(); const TString80 codart = riga.get(RMOVMAG_CODART);
const TString4 um = recset.get(RMOVMAG_UM).as_string(); const TString4 um = riga.get(RMOVMAG_UM);
TArticolo& art = cached_article(codart); TArticolo& art = cached_article(codart);
qta = art.convert_to_um(qta, EMPTY_STRING, um); qta = art.convert_to_um(qta, EMPTY_STRING, um);
key = codmag; key = codmag;
key.add(codart); key.add(codart);
key.add(recset.get(RMOVMAG_LIVGIAC).as_string()); key.add(riga.get(RMOVMAG_LIVGIAC));
TSaldo_info& info = saldi.info(key); TSaldo_info& info = saldi.info(key);
info._giac += qta * sgn_giac; 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; TToken_string k;
TString80 codtab; TString80 codtab;
TProgind pi(saldi.items(), TR("Salvataggio inventario")); TProgind pi(saldi.items(), TR("Salvataggio giacenze"));
FOR_EACH_ASSOC_OBJECT(saldi, hash, key, obj) FOR_EACH_ASSOC_OBJECT(saldi, hash, key, obj)
{ {
if (!pi.addstatus(1)) 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); mag.put("D0", data);
if (mag.rewrite() != NOERR) if (mag.rewrite() != NOERR)
{ {
cantwrite_box("inventario alla data"); cantwrite_box(title());
break; break;
} }
} }

View File

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

View File

@ -123,14 +123,14 @@ public:
int find_codcorr(const char * codcorr, int from = 0) const; 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; } 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); 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); 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& um() const { return body(LF_UMART); }
TRecord_array & deslin() const { return body(LF_DESLIN); } TRecord_array& deslin() const { return body(LF_DESLIN); }
TRecord_array & codcorr() const { return body(LF_CODCORR); } TRecord_array& codcorr() const { return body(LF_CODCORR); }
TArticolo(const char* codice = NULL); TArticolo(const char* codice = NULL);
TArticolo(const TRectype& rec); 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); 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 // Funzione statica utilizzabile da tutti
void TArticolo::round_um(real& r, const char* to_um) 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] [MGMENU_070]
Caption = "Servizi modulo magazzino" Caption = "Servizi modulo magazzino"
Picture = <mg01> Picture = <mg01>
Module = 32 Module = mg
Flags = "" Flags = ""
Item_01 = "Apertura/chiusura magazzino", "mg1 -3", "F" Item_01 = "Apertura/chiusura magazzino", "mg1 -3", "F"
Item_02 = "Giacenza alla data", "mg1 -2", "F"
[MGMENU_090] [MGMENU_090]
Caption = "Configurazione modulo magazzino" Caption = "Configurazione modulo magazzino"

View File

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