eb2b326a11
Files correlati : Ricompilazione Demo : [ ] Commento : Riportate le modifiche dalla versione 2.1 222 Si puo cominciare a fare il primo CD git-svn-id: svn://10.65.10.50/trunk@12708 c028cbd2-c16b-5b4b-a496-9718f37d4682
143 lines
3.1 KiB
C++
Executable File
143 lines
3.1 KiB
C++
Executable File
#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;
|
|
}
|