campo-sirio/m770/776500.cpp
luciano f89864d07a Alre correzioni di errori
git-svn-id: svn://10.65.10.50/trunk@4121 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-02-07 16:25:24 +00:00

193 lines
4.4 KiB
C++
Executable File

// 776500.cpp - Parametri di generazione - Maschera di immissione
#include <applicat.h>
#include <mask.h>
#include <relation.h>
#include <config.h>
#include <urldefid.h>
#include <tabutil.h>
#include <utility.h>
#include <lffiles.h>
#include <mailbox.h>
#include <execp.h>
#include "776.h"
#include "776500.h"
#include "77lib.h"
class TParametri_genera : public TApplication
{
char _liv; // Se stampa a livello di studio
int _anno_dic; // Anno dichiarazione nei paramentri utente o studio
TRelation* _rel;
TString16 _section;
TConfig* _cnf;
int _risposta;
bool init_print();
protected:
virtual void on_config_change();
virtual bool create() ;
virtual bool destroy();
virtual bool menu(MENU_TAG m);
public:
KEY registra(TMask& m, bool check_dirty);
bool main_loop();
// D = stampa ditta, S = stampa a livello di studio
TParametri_genera(char livello='D') : _liv(toupper(livello)) {}
};
HIDDEN TParametri_genera& app() { return (TParametri_genera&) main_app(); }
void TParametri_genera::on_config_change()
{
TConfig conf(_liv == 'S' ? CONFIG_USER : CONFIG_STUDIO);
_anno_dic = (int)conf.get_long(ANNO_SEL, _section);
}
KEY TParametri_genera::registra(TMask& m, bool check_dirty)
{
KEY k = K_YES;
if (check_dirty && m.dirty())
k = yesnocancel_box("Registrare le modifiche?");
if (k == K_YES)
{
m.autosave(*_rel);
_rel->rewrite();
}
return k;
}
bool TParametri_genera::main_loop()
{
long codditta, codditta_prec;
int i = 0;
KEY tasto;
TMask msk("776500a");
msk.open_modal();
// da dichiarazioni selezionate
if (_liv == 'S')
{
codditta_prec = get_firm_770();
tasto = K_TAB;
// loop di scansione dichiarazioni selezionate
while ((codditta = _cnf->get_long(DITTE_SEL, _section, i++)) != 0L
&& tasto != K_QUIT)
{
set_firm_770(codditta);
_rel->lfile().put("CODDITTA", codditta);
_rel->read();
msk.autoload(*_rel);
tasto = K_TAB;
// loop di gestione maschera
while (tasto != K_ESC && tasto != K_QUIT)
{
tasto = msk.run();
switch (tasto)
{
case K_ESC:
if (registra(msk,TRUE) == K_ESC)
tasto = K_TAB;
break;
case K_QUIT:
if (registra(msk,TRUE) == K_ESC)
tasto = K_TAB;
break;
case K_SAVE:
registra(msk,FALSE);
default:
break;
}
} // endloop di gestione maschera
} // endloop di scansione dichiarazioni selezionate
set_firm_770(codditta_prec);
}
// dalla manutenzione dichiarazione
else
{
codditta = get_firm_770();
_rel->lfile().put("CODDITTA", codditta);
_rel->read();
msk.autoload(*_rel);
tasto = K_TAB;
// loop di gestione maschera
while (tasto != K_ESC && tasto != K_QUIT)
{
tasto = msk.run();
switch (tasto)
{
case K_ESC:
if (registra(msk,TRUE) == K_ESC)
tasto = K_TAB;
_risposta = 1;
break;
case K_QUIT:
if (registra(msk,TRUE) == K_ESC)
tasto = K_TAB;
_risposta = 0;
break;
case K_SAVE:
registra(msk,FALSE);
_risposta = 1;
default:
break;
}
} // endloop di gestione maschera
}
msk.close_modal();
return FALSE;
}
bool TParametri_genera::create()
{
TApplication::create();
// Parametri configurazione
_section = name();
_section.cut(2);
_cnf = new TConfig(CONFIG_USER, _section);
_rel = new TRelation (LF_BASE);
dispatch_e_menu (BAR_ITEM(1));
return TRUE;
}
bool TParametri_genera::destroy()
{
delete _rel;
delete _cnf;
if (_liv == 'D')
{
TString appname = "771mod -3";
TString body = "";
body << _risposta;
TMessage msg (appname,"",(const char*) body);
TMailbox mb;
mb.send(msg);
}
return TApplication::destroy();
}
bool TParametri_genera::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return main_loop();
return FALSE;
}
int ParametriGenera(int argc, char* argv[])
{
TParametri_genera a(*argv[2]);
a.run(argc, argv, "Parametri di generazione");
return 0;
}