campo-sirio/li/li0400.cpp
luca b947d26c8a Patch level :2.2 nopatch
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :sempre modulo LI


git-svn-id: svn://10.65.10.50/trunk@12921 c028cbd2-c16b-5b4b-a496-9718f37d4682
2005-04-07 13:39:10 +00:00

149 lines
3.4 KiB
C++
Executable File

#include <automask.h>
#include <defmask.h>
#include <relapp.h>
#include <utility.h>
#include "li0.h"
#include "li0400a.h"
#include "letint.h"
//-------------------------------------------------------------------
// MASCHERA (li0400a)
//-------------------------------------------------------------------
class TLetint_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TLetint_mask();
};
bool TLetint_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_NUMPROT:
if (e == fe_close && query_mode())
{
const long numprot = get_long(F_NUMPROT);
if (numprot > 1)
{
const int anno = get_int(F_ANNO);
TLocalisamfile letint(LF_LETINT);
letint.put(LETINT_ANNO, anno);
letint.put(LETINT_NUMPROT, numprot - 1);
if (letint.read() != NOERR)
return error_box(TR("Il numero di protocollo deve essere progressivo!"));
}
}
break;
case F_DATAREG:
if (e == fe_close && insert_mode())
{
const long numprot = get_long(F_NUMPROT);
if (numprot > 1)
{
const int anno = get_int(F_ANNO);
TLocalisamfile letint(LF_LETINT);
letint.put(LETINT_ANNO, anno);
letint.put(LETINT_NUMPROT, numprot);
if (letint.read() == NOERR)
{
const TDate& old_data = letint.get_date(LETINT_DATAREG);
if (get_date(F_DATAREG) < old_data)
return error_box(TR("La data di registrazione non puo' essere antecedente a %s"), (const char*) old_data.string());
}
}
}
break;
default:
break;
}
return true;
}
TLetint_mask::TLetint_mask() : TAutomask("li0400a")
{
first_focus(F_ANNO);
}
//--------------------------------------------------------------
// APPLICAZIONE
//--------------------------------------------------------------
class TLetint : public TRelation_application
{
TLetint_mask* _mask;
TRelation* _rel;
protected:
bool user_create();
bool user_destroy();
virtual TMask* get_mask(int mode) { return _mask; }
virtual bool changing_mask(int mode) { return false; }
virtual bool get_next_key(TToken_string& key);
public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const {return true;}
virtual TRelation* get_relation() const {return (TRelation*)_rel;}
};
bool TLetint::get_next_key(TToken_string& key)
{
TLocalisamfile& letint = _rel->lfile() ;
long numprot = 1L ;
const int anno(_mask->get_int(F_ANNO)) ;
if (!letint.empty())
{
letint.zero() ;
letint.setkey(1) ;
letint.put(LETINT_ANNO, anno);
letint.read(_isgteq);
if (letint.good()) //se e' tutto ok,si posiziona sull'ultimo record con l'anno selezionato
letint.last();
if (letint.good())
{
const int year(letint.get_int(LETINT_ANNO));
if (year == anno)
numprot += letint.get_long(LETINT_NUMPROT);
}
}
key.format("%d|%d|%d|%ld", F_ANNO, anno, F_NUMPROT, numprot);
return true;
}
bool TLetint::user_create()
{
_rel = new TRelation(LF_LETINT);
_mask = new TLetint_mask;
return true;
}
bool TLetint::user_destroy()
{
delete _mask;
return true;
}
int li0400(int argc, char* argv[])
{
TLetint a;
a.run(argc, argv, TR("Lettere d'intento"));
return 0;
}