1997-01-13 08:52:09 +00:00
|
|
|
// 776600.cpp - Gestione estinti
|
|
|
|
#include <applicat.h>
|
|
|
|
#include <mask.h>
|
|
|
|
#include <isam.h>
|
|
|
|
#include <relation.h>
|
|
|
|
#include <sheet.h>
|
|
|
|
#include <urldefid.h>
|
|
|
|
#include "776600a.h"
|
|
|
|
#include "77lib.h"
|
|
|
|
//
|
|
|
|
// Lista modifiche
|
|
|
|
// 3.4.96 Aggiunto controllo in save() per impedire la creazione di un record-dichiarazione
|
|
|
|
// anche quando si vuol solo cancellare il codice dichiarante senza immetterne un altro
|
|
|
|
//
|
|
|
|
|
|
|
|
class TEstinti_app : public TApplication
|
|
|
|
{
|
|
|
|
long _codditta;
|
|
|
|
TMask* _msk;
|
|
|
|
TLocalisamfile* _base, *_basebis;
|
|
|
|
TRelation* _rel;
|
|
|
|
TCursor* _cur;
|
|
|
|
TBrowse_sheet* _estint_sheet;
|
|
|
|
static bool show_estinti(TMask_field& f, KEY k);
|
|
|
|
void force_output(int dlg, const long cod);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual bool create();
|
|
|
|
virtual bool destroy();
|
|
|
|
virtual bool menu(MENU_TAG m);
|
|
|
|
bool save(TMask& m, const long coddic_prec);
|
|
|
|
bool set_codditta(TMask_field& f);
|
|
|
|
bool main_loop();
|
|
|
|
|
|
|
|
public:
|
|
|
|
TEstinti_app();
|
|
|
|
~TEstinti_app() {};
|
|
|
|
};
|
|
|
|
|
|
|
|
TEstinti_app& app() { return (TEstinti_app&) main_app(); }
|
|
|
|
|
|
|
|
TEstinti_app::TEstinti_app():
|
|
|
|
_base(NULL),
|
|
|
|
_basebis(NULL),
|
|
|
|
_rel(NULL),
|
|
|
|
_msk(NULL),
|
|
|
|
_cur(NULL),
|
|
|
|
_estint_sheet(NULL)
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
bool TEstinti_app::set_codditta(TMask_field& f)
|
|
|
|
{
|
|
|
|
TString16 codditta;
|
|
|
|
codditta << get_firm_770();
|
|
|
|
if (codditta != "0")
|
|
|
|
{
|
|
|
|
f.set(codditta);
|
|
|
|
// f.set_dirty();
|
|
|
|
f.check();
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::show_estinti(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_SPACE)
|
|
|
|
app()._estint_sheet->run();
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::create()
|
|
|
|
{
|
|
|
|
TApplication::create();
|
|
|
|
_base = new TLocalisamfile(LF_BASE);
|
|
|
|
_basebis = new TLocalisamfile(LF_BASEBIS);
|
|
|
|
_msk = new TMask("776600a");
|
|
|
|
_rel = new TRelation(LF_BASE);
|
|
|
|
_rel->add(LF_NDITTE, "CODDITTA=CODDITTA");
|
|
|
|
|
|
|
|
_codditta = get_firm_770();
|
|
|
|
set_codditta(_msk->field(F_CODDITTA));
|
|
|
|
TString16 filt;
|
|
|
|
filt.format("CODDIC=%ld", _codditta);
|
|
|
|
_cur = new TCursor(_rel, filt);
|
|
|
|
TEdit_field& dummy = (TEdit_field&)_msk->field(F_CODDIC_DUMMY);
|
|
|
|
TToken_string siblings;
|
|
|
|
_estint_sheet = new TBrowse_sheet(_cur,"CODDITTA|9->RAGSOC", "Elenco estinti",
|
|
|
|
"Codice|Ragione sociale@50", 8, &dummy, siblings);
|
|
|
|
_msk->set_handler(F_ESTINTI, show_estinti);
|
|
|
|
dispatch_e_menu (BAR_ITEM(1));
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::destroy()
|
|
|
|
{
|
|
|
|
delete _estint_sheet;
|
|
|
|
delete _rel; delete _cur;
|
|
|
|
delete _msk; delete _base; delete _basebis;
|
|
|
|
return TApplication::destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TEstinti_app::force_output(int dlg, const long codditta)
|
|
|
|
{
|
|
|
|
TLocalisamfile ditte(LF_NDITTE);
|
|
|
|
ditte.zero();
|
|
|
|
ditte.put("CODDITTA", (long)codditta);
|
|
|
|
int ret = ditte.read(_isequal);
|
|
|
|
if (ret == NOERR)
|
|
|
|
{
|
|
|
|
TString80 ragsoc(ditte.get("RAGSOC"));
|
|
|
|
_msk->set(dlg, ragsoc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::save(TMask& m, const long codic_prec)
|
|
|
|
{
|
|
|
|
const long new_codic = m.get_long(F_CODDIC);
|
|
|
|
TRectype _rec = _base->curr();
|
|
|
|
_base->setkey(1);
|
|
|
|
_rec.zero();
|
|
|
|
_rec.put("TIPOQUA", ' ');
|
|
|
|
_rec.put("CODDITTA",(long)_codditta);
|
|
|
|
if (_base->read(_rec) == NOERR)
|
|
|
|
{
|
|
|
|
_rec.put("CODDIC",(long)new_codic);
|
|
|
|
_base->rewrite(_rec);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Stessa cosa su basebis
|
|
|
|
TRectype _recbis = _basebis->curr();
|
|
|
|
_basebis->setkey(1);
|
|
|
|
_recbis.zero();
|
|
|
|
_recbis.put("TIPOQUA", ' ');
|
|
|
|
_recbis.put("CODDITTA",(long)_codditta);
|
|
|
|
|
|
|
|
if (_basebis->read(_recbis) == NOERR)
|
|
|
|
{
|
|
|
|
_recbis.put("CODDIC",(long)new_codic);
|
|
|
|
_basebis->rewrite(_rec);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Crea il record globale per il dichiarante scelto se non esiste
|
|
|
|
// 3.4.96 - Solo se il dichiarante e' diverso da 0, senno' quando si vuol cancellare
|
|
|
|
// il dichiarante crea un record duplicato!
|
|
|
|
if (new_codic != 0L)
|
|
|
|
if (!exist_dichiar_770(new_codic, TRUE))
|
|
|
|
enter_dichiar_770(new_codic, anno_770(), TRUE);
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::main_loop()
|
|
|
|
{
|
|
|
|
KEY tasto = K_ESC;
|
|
|
|
|
|
|
|
const long codditta = _msk->get_long(F_CODDITTA);
|
|
|
|
_base->zero();
|
|
|
|
_base->setkey(1);
|
|
|
|
_base->put("CODDITTA", (long)codditta);
|
|
|
|
_base->read();
|
|
|
|
_msk->open_modal();
|
|
|
|
|
|
|
|
while (tasto != K_QUIT)
|
|
|
|
{
|
|
|
|
const bool dichiarante = sogg_dic(_codditta);
|
|
|
|
long coddic = 0L;
|
|
|
|
if (!dichiarante)
|
|
|
|
coddic = sogg_estinto(_codditta);
|
|
|
|
_msk->set(F_CODDIC, coddic);
|
|
|
|
|
|
|
|
force_output(F_RAGSOC, coddic);
|
|
|
|
_msk->enable(F_CODDIC, !dichiarante);
|
|
|
|
_msk->enable(F_ESTINTI, dichiarante);
|
|
|
|
_msk->enable(DLG_SAVEREC,!dichiarante);
|
|
|
|
|
|
|
|
tasto = _msk->run();
|
|
|
|
|
|
|
|
switch (tasto) {
|
|
|
|
case K_ENTER:
|
|
|
|
if (_msk->dirty())
|
|
|
|
// Se e' un dichiarante F_CODDIC e' disabilitato e non c'e' nulla da salvare
|
|
|
|
if (!dichiarante)
|
|
|
|
save(*_msk, coddic);
|
|
|
|
break;
|
|
|
|
case K_ESC :
|
|
|
|
tasto = K_QUIT;
|
|
|
|
break;
|
|
|
|
case K_QUIT :
|
|
|
|
break;
|
|
|
|
case K_SAVE :
|
|
|
|
if (!dichiarante)
|
|
|
|
save(*_msk, coddic);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_msk->close();
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TEstinti_app::menu(MENU_TAG m)
|
|
|
|
{
|
|
|
|
if (m == BAR_ITEM(1))
|
|
|
|
return main_loop();
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
int Estinti(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
TEstinti_app a;
|
|
|
|
a.run(argc, argv, "Gestione dichiarante / estinti");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|