Patch level : 10.0

Files correlati     : lv3
Ricompilazione Demo : [ ]
Commento            :
Corretto salvataggio delle dotazioni odierne e temporanee dalle bolle


git-svn-id: svn://10.65.10.50/trunk@18281 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-02-16 10:00:06 +00:00
parent 443a707020
commit 3fa48db8a7

View File

@ -11,6 +11,43 @@
#include "lvrconsplan.h"
#include "../mg/clifogiac.h"
#define FOR_EACH_DOC_ROW_BACK(d, r, row) const TRiga_documento* row = NULL; for (int r = d.rows(); r > 0 && (row = &d[r]) != NULL; r--)
//////////////////////////////////////////
//// CLASSE TGESTIONE_BOLLE_MSK ////
//////////////////////////////////////////
//Definizione della classe della maschera
class TGestione_bolle_msk : public TDocumento_mask
{
long _stcodcf;
long _stcodcont;
protected:
static void arrotonda(const TMask& msk, real& quantita);
//hanlder di documento:
static bool lv_bolla_handler(TMask_field& f, KEY k);
//handler di riga:
static bool lv_ritirato_handler(TMask_field& f, KEY k);
static bool lv_consegnato_handler(TMask_field& f, KEY k);
static bool lv_codart_handler(TMask_field& f, KEY k);
static bool lv_causale_handler(TMask_field& f, KEY k);
static bool ss_notify(TSheet_field& ss, int r, KEY key);
virtual void on_idle();
public:
virtual void user_set_handler( short fieldid, int index);
virtual void user_set_row_handler(TMask& rm, short field, int index);
void reset_var_mask() {_stcodcf = 0; _stcodcont = 0;}
TGestione_bolle_msk(const char* tipodoc);
int _autoselect;
};
////////////////////////////////////
//// CLASSE TGIAC_PER_CLI ////
////////////////////////////////////
@ -35,6 +72,7 @@ public:
bool reset(const TDocumento& doc); //svuota i TAssoc_array e carica cli e cont
bool load_row(const TRiga_documento& rdoc); //popola i TAssoc_array
real giac_att(TRiga_documento& rdoc, bool odierna); //restituisce le quantità attuali di dotazione
int write_giac(const TMask& m); //scrive i valori corretti sul file 166
TGiac_per_cli(); //costruttore
};
@ -185,6 +223,31 @@ real TGiac_per_cli::giac_att(TRiga_documento& rdoc, bool odierna)
return giac;
}
int TGiac_per_cli::write_giac(const TMask& m)
{
int err = NOERR;
TGestione_bolle_msk& mask = (TGestione_bolle_msk&) m;
TDocumento& d = mask.doc();
TLocalisamfile magcli(LF_CLIFOGIAC);
FOR_EACH_DOC_ROW_BACK(d, r, row)
{
if (row->is_articolo())
{
magcli.put(CLIFOGIAC_ANNOES, _year);
magcli.put(CLIFOGIAC_TIPOCF, 'C');
magcli.put(CLIFOGIAC_CODCF, _clifo);
magcli.put(CLIFOGIAC_INDSPED, _indsped);
magcli.put(CLIFOGIAC_CODART, row->get(RDOC_CODART));
magcli.put (CLIFOGIAC_DOTOD, row->get_real("DOTOD"));
magcli.put (CLIFOGIAC_DOTTM, row->get_real("DOTMP"));
err = magcli.rewrite_write();
}
}
return err;
}
//costruttore
TGiac_per_cli::TGiac_per_cli()
{
@ -222,37 +285,6 @@ inline TGestione_bolle_app& gbapp() { return (TGestione_bolle_app &)main_app();
//// CLASSE TGESTIONE_BOLLE_MSK ////
//////////////////////////////////////////
//Definizione della classe della maschera
class TGestione_bolle_msk : public TDocumento_mask
{
long _stcodcf;
long _stcodcont;
protected:
static void arrotonda(const TMask& msk, real& quantita);
//hanlder di documento:
static bool lv_bolla_handler(TMask_field& f, KEY k);
//handler di riga:
static bool lv_ritirato_handler(TMask_field& f, KEY k);
static bool lv_consegnato_handler(TMask_field& f, KEY k);
static bool lv_codart_handler(TMask_field& f, KEY k);
static bool lv_causale_handler(TMask_field& f, KEY k);
static bool ss_notify(TSheet_field& ss, int r, KEY key);
virtual void on_idle();
public:
virtual void user_set_handler( short fieldid, int index);
virtual void user_set_row_handler(TMask& rm, short field, int index);
void reset_var_mask() {_stcodcf = 0; _stcodcont = 0;}
TGestione_bolle_msk(const char* tipodoc);
int _autoselect;
};
//ARROTONDA: metodo che arrotonda la quantità che gli passo se è previsto sul contratto
void TGestione_bolle_msk::arrotonda(const TMask& msk, real& quantita)
{
@ -800,8 +832,6 @@ TMask* TGestione_bolle_app::get_mask( int mode )
return TMotore_application::get_mask(mode);
}
#define FOR_EACH_DOC_ROW_BACK(d, r, row) const TRiga_documento* row = NULL; for (int r = d.rows(); r > 0 && (row = &d[r]) != NULL; r--)
void TGestione_bolle_app::elimina_vuote( const TMask& m)
{
TDocumento_mask& mask = (TDocumento_mask&) m;
@ -822,6 +852,12 @@ void TGestione_bolle_app::elimina_vuote( const TMask& m)
int TGestione_bolle_app::write( const TMask& m )
{
elimina_vuote(m);
TGestione_bolle_msk& mask = (TGestione_bolle_msk&) m;
TDocumento& d = mask.doc();
_giac.reset(d);
_giac.write_giac(m);
return TMotore_application::write(m);
}
@ -829,6 +865,12 @@ int TGestione_bolle_app::write( const TMask& m )
int TGestione_bolle_app::rewrite( const TMask& m )
{
elimina_vuote(m);
TGestione_bolle_msk& mask = (TGestione_bolle_msk&) m;
TDocumento& d = mask.doc();
_giac.reset(d);
_giac.write_giac(m);
return TMotore_application::rewrite(m);
}