dcd9df026d
ba3500.cpp Corretta creazione della prima unita' locale ba610?.cpp Corretti vari errori segnalati sul fax dalla Cecilia git-svn-id: svn://10.65.10.50/trunk@5668 c028cbd2-c16b-5b4b-a496-9718f37d4682
136 lines
3.5 KiB
C++
Executable File
136 lines
3.5 KiB
C++
Executable File
#include <relapp.h>
|
|
|
|
#include "ba4.h"
|
|
#include "ba4600.h"
|
|
|
|
class TSoci_application : public TRelation_application
|
|
{
|
|
TMask* _msk;
|
|
TRelation* _rel;
|
|
TLocalisamfile* _anag;
|
|
TLocalisamfile* _ditte;
|
|
|
|
virtual bool user_create() ;
|
|
virtual bool user_destroy() ;
|
|
virtual TMask* get_mask(int mode) { return _msk;}
|
|
virtual bool changing_mask(int mode) { return FALSE;}
|
|
virtual TRelation* get_relation() const { return _rel;}
|
|
|
|
public:
|
|
TSoci_application() {}
|
|
virtual ~TSoci_application() {}
|
|
virtual void init_query_mode(TMask& m) ;
|
|
virtual void init_query_insert_mode(TMask& m) ;
|
|
virtual void init_modify_mode(TMask& m) ;
|
|
virtual void init_insert_mode(TMask& m) { init_modify_mode(m) ; }
|
|
virtual int rewrite(const TMask& m);
|
|
virtual int write(const TMask& m);
|
|
virtual bool remove();
|
|
virtual void update_ap_socio(const TMask& m);
|
|
};
|
|
|
|
void TSoci_application::init_query_mode(TMask& m)
|
|
{
|
|
m.show(FLD_SC1_CODANAGRSOH);
|
|
m.hide(FLD_SC1_CODANAGRSO);
|
|
m.set(FLD_SC1_CODANAGR_ANAGR_RAGSOC, "");
|
|
m.enable(FLD_SC1_CODANAGR_ANAGR_RAGSOC);
|
|
set_search_field(FLD_SC1_CODANAGRSOH);
|
|
}
|
|
|
|
|
|
void TSoci_application::init_query_insert_mode(TMask& m)
|
|
{
|
|
m.show(FLD_SC1_CODANAGRSO);
|
|
m.hide(FLD_SC1_CODANAGRSOH);
|
|
m.set(FLD_SC1_CODANAGR_ANAGR_RAGSOC, "");
|
|
set_search_field(FLD_SC1_CODANAGRSO);
|
|
}
|
|
|
|
void TSoci_application::init_modify_mode(TMask& m)
|
|
{
|
|
m.disable(FLD_SC1_CODANAGR_ANAGR_RAGSOC);
|
|
}
|
|
|
|
void TSoci_application::update_ap_socio(const TMask& m)
|
|
{
|
|
int err = NOERR;
|
|
const char ap = (m.get(FLD_SC1_ANNO)[0] == 'A') ? 'P' : 'A';
|
|
|
|
if (yesno_box("Aggiornare il socio anche per l' anno %s?", ap == 'A' ? "in corso" : "precedente"))
|
|
{
|
|
_rel->save_status();
|
|
m.autosave(*_rel);
|
|
_rel->lfile().put("ATTPREC", ap);
|
|
const bool was =_rel->read(_isequal, _lock) == NOERR;
|
|
m.autosave(*_rel);
|
|
_rel->lfile().put("ATTPREC", ap);
|
|
if (was) err = _rel->rewrite();
|
|
else err = _rel->write();
|
|
if (err != NOERR)
|
|
error_box("Aggiornamento socio anno %s - Errore : %d", ap == 'A' ? "in corso" : "precedente", err);
|
|
_rel->restore_status();
|
|
}
|
|
}
|
|
|
|
int TSoci_application::write(const TMask& m)
|
|
{
|
|
const int err = TRelation_application::write(m);
|
|
if (err == NOERR)
|
|
update_ap_socio(m);
|
|
return err;
|
|
}
|
|
|
|
int TSoci_application::rewrite(const TMask& m)
|
|
{
|
|
const int err = TRelation_application::rewrite(m);
|
|
if (err == NOERR)
|
|
update_ap_socio(m);
|
|
return err;
|
|
}
|
|
|
|
bool TSoci_application::remove()
|
|
{
|
|
const char ap = (curr_mask().get(FLD_SC1_ANNO)[0] == 'A') ? 'P' : 'A';
|
|
|
|
if (yesno_box("Cancellare il socio anche per l' anno %s?", ap == 'A' ? "in corso" : "precedente"))
|
|
{
|
|
_rel->save_status();
|
|
_rel->lfile().put("ATTPREC", ap);
|
|
if (_rel->read(_isequal, _lock) == NOERR)
|
|
{
|
|
const int err = _rel->remove();
|
|
if (err != NOERR)
|
|
error_box("Cancellazione socio anno %s - Errore : %d", ap == 'A' ? "in corso" : "precedente", err);
|
|
}
|
|
_rel->restore_status();
|
|
}
|
|
return TRelation_application::remove();
|
|
}
|
|
|
|
bool TSoci_application::user_create()
|
|
{
|
|
_rel = new TRelation(LF_SOCI) ;
|
|
_anag = new TLocalisamfile(LF_ANAG) ;
|
|
_ditte = new TLocalisamfile(LF_NDITTE) ;
|
|
_msk = new TMask("ba4600a") ;
|
|
set_search_field(FLD_SC1_CODANAGRSOH);
|
|
return TRUE;
|
|
}
|
|
|
|
bool TSoci_application::user_destroy()
|
|
{
|
|
delete _msk;
|
|
delete _ditte;
|
|
delete _anag;
|
|
delete _rel;
|
|
return TRUE;
|
|
}
|
|
|
|
int ba4600(int argc, char* argv[])
|
|
{
|
|
TSoci_application a;
|
|
a.run(argc, argv, "Anagrafica Soci");
|
|
return 0;
|
|
}
|