143 lines
3.1 KiB
C++
143 lines
3.1 KiB
C++
|
#include <automask.h>
|
||
|
#include <relapp.h>
|
||
|
#include <utility.h>
|
||
|
|
||
|
#include "mr0500a.h"
|
||
|
|
||
|
///////////////////////////////////////////////////////////
|
||
|
// TRilprod_mask
|
||
|
///////////////////////////////////////////////////////////
|
||
|
class TRilprod_mask : public TAutomask
|
||
|
{
|
||
|
|
||
|
protected:
|
||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||
|
virtual bool on_key(KEY key);
|
||
|
|
||
|
public:
|
||
|
TRilprod_mask() : TAutomask("mr0500a") { }
|
||
|
};
|
||
|
|
||
|
bool TRilprod_mask::on_key(KEY key)
|
||
|
{
|
||
|
//shift+f12 per abilitare il riquadro della bolla di protezione
|
||
|
if (key == K_SHIFT + K_F12)
|
||
|
{
|
||
|
enable(-GR_BOLPROD);
|
||
|
return true;
|
||
|
}
|
||
|
return TAutomask::on_key(key);
|
||
|
}
|
||
|
|
||
|
bool TRilprod_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||
|
{
|
||
|
bool ok = true;
|
||
|
switch (o.dlg())
|
||
|
{
|
||
|
case F_ORAINI :
|
||
|
case F_MININI :
|
||
|
case F_SECINI :
|
||
|
case F_ORAFIN :
|
||
|
case F_MINFIN :
|
||
|
case F_SECFIN :
|
||
|
if (e == fe_modify || e == fe_close)
|
||
|
{
|
||
|
//i campi ore/min/sec vanno zero filled
|
||
|
TString8 stringa;
|
||
|
int numero = atoi(o.get());
|
||
|
stringa.format("%02d", numero);
|
||
|
o.set(stringa);
|
||
|
}
|
||
|
break;
|
||
|
case F_DATAFIN :
|
||
|
if (e == fe_close)
|
||
|
{
|
||
|
if (o.get().not_empty() && get_real(F_QTA) <= 0.0)
|
||
|
return error_box(FR("La quantita' deve essere >0 avendo\n indicato una data di fine produzione"));
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
return ok;
|
||
|
}
|
||
|
|
||
|
///////////////////////////////////////////////////////////
|
||
|
// TRilprod_app
|
||
|
///////////////////////////////////////////////////////////
|
||
|
|
||
|
class TRilprod_app : public TRelation_application
|
||
|
{
|
||
|
TRelation* _rel;
|
||
|
TRilprod_mask* _msk;
|
||
|
|
||
|
protected:
|
||
|
virtual TMask* get_mask(int) { return _msk; }
|
||
|
virtual TRelation* get_relation() const { return _rel; }
|
||
|
virtual bool user_create();
|
||
|
virtual bool user_destroy();
|
||
|
virtual void init_insert_mode(TMask& m);
|
||
|
virtual void init_modify_mode(TMask& m);
|
||
|
virtual bool changing_mask (int) {return false; }
|
||
|
virtual bool get_next_key(TToken_string& key);
|
||
|
};
|
||
|
|
||
|
void TRilprod_app::init_insert_mode(TMask& m)
|
||
|
{
|
||
|
m.disable(-GR_BOLPROD);
|
||
|
}
|
||
|
|
||
|
void TRilprod_app::init_modify_mode(TMask& m)
|
||
|
{
|
||
|
m.disable(-GR_BOLPROD);
|
||
|
}
|
||
|
|
||
|
bool TRilprod_app::user_create()
|
||
|
{
|
||
|
_rel = new TRelation(LF_RILPROD);
|
||
|
_msk = new TRilprod_mask();
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool TRilprod_app::user_destroy()
|
||
|
{
|
||
|
if (_msk != NULL)
|
||
|
delete _msk;
|
||
|
if (_rel != NULL)
|
||
|
delete _rel;
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool TRilprod_app::get_next_key(TToken_string& key)
|
||
|
{
|
||
|
TMask& m = curr_mask( );
|
||
|
|
||
|
if (m.get(F_CODART).empty() || m.get(F_DATAPROD).empty())
|
||
|
return false;
|
||
|
|
||
|
TLocalisamfile rilprod(LF_RILPROD);
|
||
|
rilprod.put("CODART", m.get(F_CODART));
|
||
|
rilprod.put("DATAPROD", m.get(F_DATAPROD));
|
||
|
|
||
|
TRectype cmp_rec(rilprod.curr()); // record campione
|
||
|
|
||
|
rilprod.put( "PROG", 999 );
|
||
|
if (rilprod.read(_isgreat) == NOERR)
|
||
|
rilprod.prev();
|
||
|
else
|
||
|
rilprod.last();
|
||
|
|
||
|
const int num = ((rilprod.curr() == cmp_rec) ? rilprod.get_int("PROG") : 0) + 1;
|
||
|
|
||
|
key.format("%d|%d", F_PROG, num);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
int mr0500(int argc, char* argv[])
|
||
|
{
|
||
|
TRilprod_app app;
|
||
|
app.run(argc, argv, TR("Rilevazione Produzione"));
|
||
|
return 0;
|
||
|
}
|