Ho fatto troppe modifiche per poterle descrivere tutte in codesto luogo

pertanto rimando chi fosse interessato ai dettagli, alla consultazione
del documento crono.doc sulla mia macchina.


git-svn-id: svn://10.65.10.50/trunk@4134 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luciano 1997-02-14 15:39:49 +00:00
parent d18a572f45
commit 6449f498db
32 changed files with 2966 additions and 2946 deletions

View File

@ -42,7 +42,8 @@ class TDati_anagrafici : public TApplication
static bool fisica_handler(TMask_field&, KEY);
static bool giuridica_handler(TMask_field&, KEY);
static bool anagrafica_handler(TMask_field&, KEY);
static bool anagr_dich_handler(TMask_field&, KEY);
static bool anagr_dich_handler(TMask_field&, KEY);
// bottone ditta in DatiCAAF
static bool DCditta_handler(TMask_field&, KEY);
TMask* _msk;
@ -94,6 +95,7 @@ TDati_anagrafici::TDati_anagrafici(char anagrafica) : _titolo(50), _ana(toupper(
HIDDEN TDati_anagrafici& app() { return (TDati_anagrafici &) main_app(); }
bool TDati_anagrafici::codditta_hnd(TMask_field& f, KEY k)
{
if (k == K_TAB && !(f.mask().is_running()) )
@ -124,15 +126,15 @@ bool TDati_anagrafici::attivita_handler(TMask_field& m, KEY k)
body << "1" << "|";
body << m.mask().get(F_CODDITTA) << "|";
// body << m.mask().get(F_ATTIV) << "|";
// body << m.mask().get(F_ATTIV);
body << m.mask().get(F_ATTIV) << "|";
body << m.mask().get(F_ATTIV);
TMessage msg(cmd2name(appname), MSG_LN, (const char*) body);
TMailbox mb;
mb.send(msg);
TMessage msg(appname, MSG_LN, (const char*) body);
msg.send();
TExternal_app a(appname);
a.run();
a.run();
m.set_focus();
xvt_statbar_set("");
@ -154,7 +156,7 @@ bool TDati_anagrafici::DCditta_handler(TMask_field& f, KEY k)
body.add(lDittaCaaf); // ditta per il campo codice ditta
body.add(lDittaCaaf); // ditta per il secondo campo codice ditta
TString16 cmd("ba4 -2");
TMessage msg(cmd2name(cmd), MSG_LN, (const char*) body);
TMessage msg(cmd, MSG_LN, (const char*) body);
msg.send();
TExternal_app a(cmd);
a.run();
@ -512,15 +514,19 @@ bool TDati_anagrafici::create()
if (Rappresentante())
{
_msk = new TMask ("771100c");
_msk->set_handler(F_FISICA, fisica_handler);
_msk->set_handler(F_FISICA, fisica_handler);
}
if (ScrittureContabili())
{
_msk = new TMask ("771100d");
_msk->set_handler(F_ANAGR, indirizzo);
_msk->set_handler(F_ATTIVITA, attivita_handler);
_msk->set_handler(F_ANAGRAFICA, anagrafica_handler);
_msk->set_handler(F_ANAGR, indirizzo);
_msk->set_handler(F_ATTIVITA, attivita_handler);
_msk->set_handler(F_FISICA, anagrafica_handler);
_msk->set_handler(F_GIURIDICA,anagrafica_handler);
_msk->disable(DLG_SAVEREC);
_msk->disable(DLG_CANCEL);
}
if (DatiCAAF())
@ -528,8 +534,7 @@ bool TDati_anagrafici::create()
_msk = new TMask ("771100e");
_msk->set_handler(F_ANAGR, niscraa);
_msk->set_handler(F_GIURIDICA, giuridica_handler);
_msk->set_handler(F_DITTACAAF, ditta_caaf);
// bottone ditte
_msk->set_handler(F_DITTACAAF, ditta_caaf);
_msk->set_handler(DCF_DITTA, DCditta_handler);
}
@ -574,7 +579,12 @@ bool TDati_anagrafici::main_loop()
{
_rel->lfile().put("CODDITTA", _codditta);
_rel->read();
_msk->autoload(*_rel);
_msk->autoload(*_rel);
// controllo se indicato rappresentante
if (Rappresentante() && (_msk->get_long(F_ANAGR) == 0L))
message_box("Il rappresentante non e' stato indicato.");
tasto = _msk->run();
switch (tasto)

View File

@ -65,8 +65,7 @@
#define F_PROVCS 261
#define F_PTELCS 262
#define F_TELCS 263
#define F_ATTIVITA 264
#define F_ANAGRAFICA 265
#define F_ATTIVITA 264
// Campi maschera dati CAAF 771100e.uml

View File

@ -1,22 +1,16 @@
// 771100c.uml - Dati rappresentante
#include "771100.h"
//
// Lista modifiche
//
// 2.4.96 Aggiunto numero di telefono
//
TOOLBAR "" 0 20 0 2
BUTTON F_FISICA 10 2
BEGIN
PROMPT -14 -1 "~Fisiche"
PROMPT -14 -1 "F~isiche"
END
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -24 -1 ""
PROMPT -24 -1 "~Registra"
MESSAGE EXIT,K_SAVE
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
@ -36,7 +30,7 @@ END
ENDPAGE
PAGE "Dati relativi al rappresentante" -1 -1 78 18
PAGE "Rappresentante" -1 -1 78 18
GROUPBOX DLG_NULL 78 4
BEGIN
@ -64,11 +58,10 @@ END
NUMBER F_ANAGR 5
BEGIN
PROMPT 1 4 "Codice rappresentante "
FLAGS "D"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
FIELD LF_NDITTE->RAPPR
CHECKTYPE NORMAL
FLAGS "D"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
FIELD LF_NDITTE->RAPPR
JOIN LF_ANAG INTO CODANAGR=RAPPR TIPOA="F"
JOIN LF_ANAGFIS TO LF_ANAG INTO CODANAGR=CODANAGR
JOIN LF_COMUNI TO LF_ANAGFIS INTO COM==COMNASC
@ -94,47 +87,9 @@ BEGIN
OUTPUT F_DOMFISC LF_ANAG->VARSLORES
OUTPUT F_ANAGR LF_ANAGFIS->CODANAGR
OUTPUT F_PTELRF LF_ANAG->PTELRF
OUTPUT F_TELRF LF_ANAG->TELRF
OUTPUT F_TELRF LF_ANAG->TELRF
END
/*
NUMBER F_ANAGR 5
BEGIN
PROMPT 1 4 "Codice rappresentante "
USE LF_ANAGFIS KEY 1
INPUT CODANAGR F_ANAGR
JOIN LF_ANAG TO LF_ANAGFIS INTO CODANAGR=CODANAGR TIPOA="F"
JOIN LF_COMUNI TO LF_ANAGFIS INTO COM==COMNASC
JOIN LF_COMUNI TO LF_ANAG ALIAS 1 INTO COM==COMRES
JOIN LF_COMUNI TO LF_ANAG ALIAS 2 INTO COM==COMRF
DISPLAY "Codice" CODANAGR
DISPLAY "Ragione Sociale@50" LF_ANAG->RAGSOC
OUTPUT F_COFI LF_ANAG->COFI
OUTPUT F_COGNOME LF_ANAG->RAGSOC[1,30]
OUTPUT F_NOME LF_ANAG->RAGSOC[31,50]
OUTPUT F_SESSO SESSO
OUTPUT F_DATANASC DATANASC
OUTPUT F_COMNASC LF_COMUNI->DENCOM
OUTPUT F_PROVNASC LF_COMUNI->PROVCOM
OUTPUT F_INDRES LF_ANAG->INDRES
OUTPUT F_CIVRES LF_ANAG->CIVRES
OUTPUT F_CAPRES LF_ANAG->CAPRES
OUTPUT F_INDRF LF_ANAG->INDRF
OUTPUT F_CIVRF LF_ANAG->CIVRF
OUTPUT F_CAPRF LF_ANAG->CAPRF
OUTPUT F_COMRES 1@->DENCOM
OUTPUT F_PROVRES 1@->PROVCOM
OUTPUT F_COMRF 2@->DENCOM
OUTPUT F_PROVRF 2@->PROVCOM
OUTPUT F_DOMFISC LF_ANAG->VARSLORES
OUTPUT F_ANAGR LF_ANAGFIS->CODANAGR
OUTPUT F_PTELRF LF_ANAG->PTELRF
OUTPUT F_TELRF LF_ANAG->TELRF
FIELD LF_BASE->RAPPR
CHECKTYPE NORMAL
FLAGS "R"
END
*/
STRING F_COFI 16
BEGIN
PROMPT 1 5 "Codice fiscale "

View File

@ -2,11 +2,16 @@
TOOLBAR "" 0 20 0 2
BUTTON F_ANAGRAFICA 10 2
BUTTON F_FISICA 10 2
BEGIN
PROMPT -15 -1 "~Anagrafica"
PROMPT -15 -1 "F~isiche"
END
BUTTON F_GIURIDICA 10 2
BEGIN
PROMPT -15 -1 "~Giuridiche"
END
BUTTON F_ATTIVITA 10 2
BEGIN
PROMPT -25 -1 "~Attività"
@ -81,7 +86,9 @@ LIST ASCF_TIPOA 9
BEGIN
PROMPT 1 5 "Tipo persona "
ITEMS "G|Societa'"
MESSAGE HIDE,F_FISICA|SHOW,F_GIURIDICA
ITEMS "F|Fisica"
MESSAGE SHOW,F_FISICA|HIDE,F_GIURIDICA
FLAGS "D"
END

View File

@ -8,14 +8,15 @@ BUTTON F_BTN_GIURIDICA 10 2
BEGIN
PROMPT -14 -1 "~Giuridiche"
END
BUTTON F_BTN_FISICA 10 2
BEGIN
PROMPT -14 -1 "~Fisiche"
PROMPT -14 -1 "F~isiche"
END
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -24 -1 ""
PROMPT -24 -1 "~Registra"
MESSAGE EXIT,K_SAVE
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN

View File

@ -21,7 +21,7 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "GRD"
FLAGS "GRDP"
KEY 1
CHECKTYPE REQUIRED
USE LF_NDITTE KEY 1
@ -33,13 +33,13 @@ END
STRING F_RAGDITTA 50
BEGIN
PROMPT 17 1 "Ragione "
FLAGS "D"
FLAGS "DP"
END
NUMBER F_ANNODIC 4
BEGIN
PROMPT 52 3 "Anno dichiarazione "
FLAGS "DR"
FLAGS "DRP"
END
TEXT DLG_NULL

View File

@ -27,7 +27,7 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "GRD"
FLAGS "GRDP"
KEY 1
CHECKTYPE REQUIRED
USE LF_NDITTE KEY 1
@ -39,13 +39,13 @@ END
STRING F_RAGDITTA 50
BEGIN
PROMPT 17 1 "Ragione "
FLAGS "D"
FLAGS "DP"
END
NUMBER F_ANNODIC 4
BEGIN
PROMPT 52 3 "Anno dichiarazione "
FLAGS "DR"
FLAGS "DRP"
END
TEXT DLG_NULL
@ -103,7 +103,7 @@ END
NUMBER F_CODANAGRCOM 5
BEGIN
PROMPT 15 8 ""
PROMPT 16 8 ""
USE LF_ANAG
INPUT TIPOA F_TIPOA SELECT
INPUT CODANAGR F_CODANAGRCOM

View File

@ -13,7 +13,7 @@ END
NUMBER PE1F_CODDITTA 5
BEGIN
PROMPT 3 1 "Ditta "
FLAGS "GRD"
FLAGS "GRDP"
KEY 1
CHECKTYPE REQUIRED
USE LF_NDITTE KEY 1
@ -25,7 +25,7 @@ END
STRING PE1F_RAGDITTA 50
BEGIN
PROMPT 17 1 "Ragione "
FLAGS "D"
FLAGS "DP"
END
STRING PE1F_CODCAUS 2

View File

@ -88,8 +88,7 @@ class TQuadroF : public TRelation_application
void init_mask (TMask&);
void fill_ss(TMask& m);
void riempi_prospetto(TMask& m, const char prosp);
int re_write(const TMask& m, bool re);
int elimina();
int re_write(const TMask& m, bool re);
public:
TString16 _quadro, _aliq_caus;
@ -162,7 +161,7 @@ void TQuadroF::init_insert_mode (TMask& m)
void TQuadroF::init_modify_mode (TMask& m)
{
m.disable(DLG_DELREC); // disabilito Elimina nella toolbar
// m.disable(DLG_DELREC); // disabilito Elimina nella toolbar
}
void TQuadroF::init_query_mode (TMask& m)
@ -656,43 +655,27 @@ int TQuadroF::re_write(const TMask& m, bool re)
}
else
return err_b;
}
int TQuadroF::elimina()
{
int err;
// eliminazione righe del quadro
TRectype& recrf = _rf->curr();
recrf.zero();
recrf.put("CODDITTA",_codditta);
_rf->setkey(1);
for (err = _rf->read(_isequal, _lock); // stato iniziale
err == NOERR; // condizione di uscita
err = _rf->read(_isequal, _lock)) // incremento
{
_rf->remove(); // eliminazione riga quadro
}
if (err == _iskeynotfound)
_rf->reread();
return err;
}
bool TQuadroF::remove()
{
bool ok, ok_a, ok_b, ok_c, ok_d;
ok = TRelation_application::remove();
ok_b = _prosp_b->remove();
ok_b = _prosp_b->remove() == NOERR;
_prosp_b->destroy_rows();
if (_quadro == "F")
{
ok_a = _prosp_a->remove();
ok_c = _prosp_c->remove();
ok_d = _prosp_d->remove();
return ok && ok_a && ok_b && ok_c && ok_d;
ok_a = _prosp_a->remove() == NOERR;
_prosp_a->destroy_rows();
ok_c = _prosp_c->remove() == NOERR;
_prosp_c->destroy_rows();
ok_d = _prosp_d->remove() == NOERR;
_prosp_d->destroy_rows();
return _registra = ok && ok_a && ok_b && ok_c && ok_d;
}
else
return ok && ok_b;
return _registra = ok && ok_b;
}
bool TQuadroF::a_notify(TSheet_field& s, int r, KEY k)

View File

@ -128,7 +128,7 @@ void TQuadroG::init_insert_mode (TMask& m)
void TQuadroG::init_modify_mode (TMask& m)
{
m.disable(DLG_DELREC);
}
void TQuadroG::init_query_mode (TMask& m)
@ -303,6 +303,7 @@ bool TQuadroG::user_create()
_msk->disable(DLG_DELREC); // disabilito Elimina nella toolbar
_msk->disable(DLG_FINDREC); // disabilito Ricerca nella toolbar
_msk->set_handler(DLG_DISTINTA, exec_distinta);
_msk->set_handler(mainmsk_handler);
TSheet_field& p1 = (TSheet_field&) _msk->field(F_P1);
p1.set_notify(p1_notify);
p1.sheet_mask().set_handler(NUM_AZ, calc_amm);
@ -670,8 +671,8 @@ int TQuadroG::rewrite(const TMask& m)
bool TQuadroG::remove()
{
const bool ok = TRelation_application::remove();
return ok;
_registra = TRelation_application::remove();
return _registra;
}
bool TQuadroG::p1_notify(TSheet_field& s, int r, KEY k)
@ -773,3 +774,12 @@ bool TQuadroG::pIII_notify(TSheet_field& s, int r, KEY k)
return TRUE;
}
bool TQuadroG::mainmsk_handler(TMask& m, KEY k)
{
if (k == K_ESC)
{
TOperable_field& f = m.focus_field();
m.set_focus_field(f.dlg());
}
return TRUE;
}

View File

@ -31,7 +31,8 @@ class TQuadroG : public TRelation_application
static bool pIII_notify(TSheet_field& s, int r, KEY k);
static bool calc_amm(TMask_field& f, KEY k);
static bool exec_distinta(TMask_field& f, KEY k);
static void update_totals(TSheet_field& f, int ss);
static void update_totals(TSheet_field& f, int ss);
static bool mainmsk_handler(TMask& m, KEY k);
protected:
virtual bool user_create();
virtual bool user_destroy();
@ -113,8 +114,9 @@ class TQuadroG1 : public TRelation_application
TString16 _quadro;
TString80 _title;
bool _registra;
static bool p1_notify(TSheet_field& s, int r, KEY k);
static void update_totals(TSheet_field& f);
static bool p1_notify(TSheet_field& s, int r, KEY k);
static void update_totals(TSheet_field& f);
static bool mainmsk_handler(TMask& m, KEY k);
protected:
virtual bool user_create();
virtual bool user_destroy();

View File

@ -188,4 +188,4 @@
#define F_DATADELIB 293
#define F_DATADISTR 294
#define DLG_AZZERA 295

View File

@ -50,9 +50,9 @@ BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_NULL 9 2
BUTTON DLG_AZZERA 9 2
BEGIN
PROMPT -33 -1 "Azzera"
PROMPT -33 -1 "A~zzera"
MESSAGE RESET,1@
END

View File

@ -53,9 +53,9 @@ BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_NULL 9 2
BUTTON DLG_AZZERA 9 2
BEGIN
PROMPT -33 -1 "Azzera"
PROMPT -33 -1 "A~zzera"
MESSAGE RESET,1@
END

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@
HIDDEN TString80 __tmp;
HIDDEN const int NUM_QUADRI = 26;
HIDDEN const int QUADRO_L = 30;
HIDDEN const int QUADRO_L = 27;
typedef enum { grassetto=0, sottolineato, piano } stile;
@ -38,7 +38,8 @@ class TManutenzione_quadri : public TApplication
TLocalisamfile* _base, *_basebis;
int _anno_dic;
bool _soci;
long _codditta, _coddic;
long _codditta, _coddic;
TString _qcomp_prev;
protected:
virtual bool create();
@ -192,7 +193,10 @@ bool TManutenzione_quadri::create()
_base = new TLocalisamfile(LF_BASE);
_basebis = new TLocalisamfile(LF_BASEBIS);
_rel = new TRelation(LF_BASE);
_rel->add(LF_BASEBIS, "CODDITTA=CODDITTA");
_rel->add(LF_BASEBIS, "CODDITTA=CODDITTA");
// inizializza stato precedente quadri per ottimizzazione enphasize
_qcomp_prev.spaces(NUM_QUADRI+1);
load_mask(0);
dispatch_e_menu (BAR_ITEM(1));
@ -327,36 +331,50 @@ void TManutenzione_quadri::inibith(TString& qric, TMask& m)
}
//
// Metto in grassetto i quadri gia' compilati
// Metto in grassetto i quadri gia' compilati
// ma solo quelli variati dal ciclo precedente
// Il quadro L non ha il flag di compilato sul base.
//
void TManutenzione_quadri::enphasize(TString& qcomp, TMask& m)
void TManutenzione_quadri::enphasize(TString& qcomp,TMask& m)
{
int start_dlg = DLG_NULL_A;
const char* prompt;
const int L = 19;
int dlg = 0;
int start_dlg = DLG_NULL_A;
const char* prompt;
const int L = 19;
int dlg = 0;
char qcompL;
// quadri fino al quadro L non compreso
for (int i = 0; i < L; i++)
{
dlg = start_dlg + (i * 2);
prompt = make_prompt(i, qcomp[i] == 'X' ? grassetto : piano);
m.field(dlg).set_prompt(prompt);
}
prompt = esiste_record_L(get_firm_770(), _anno_dic) ?
make_prompt(QUADRO_L, grassetto) :
make_prompt(QUADRO_L, piano);
dlg = start_dlg + (i * 2);
m.field(dlg).set_prompt(prompt);
if (qcomp[i] != _qcomp_prev[i])
{
dlg = start_dlg + (i * 2);
prompt = make_prompt(i, qcomp[i] == 'X' ? grassetto : piano);
m.field(dlg).set_prompt(prompt);
_qcomp_prev[i] = qcomp[i];
}
}
// quadro L
qcompL = esiste_record_L(get_firm_770(), _anno_dic) ? 'X' : ' ';
if (qcompL != _qcomp_prev[QUADRO_L])
{
dlg = start_dlg + (i * 2);
prompt = make_prompt(QUADRO_L, qcompL == 'X' ? grassetto : piano);
m.field(dlg).set_prompt(prompt);
_qcomp_prev[QUADRO_L] = qcompL;
}
// rimanenti quadri
for (i = L+1; i < NUM_QUADRI; i++)
{
int dlg = start_dlg + (i * 2);
// Controlla qcomp[i-1] perche' in QCOMP non c'e' il flag del quadro L
prompt = make_prompt(i-1, qcomp[i-1] == 'X' ? grassetto : piano);
m.field(dlg).set_prompt(prompt);
// Controlla qcomp[i-1] perche' in QCOMP non c'e' il flag del quadro L
if (qcomp[i-1] != _qcomp_prev[i-1])
{
int dlg = start_dlg + (i * 2);
prompt = make_prompt(i-1, qcomp[i-1] == 'X' ? grassetto : piano);
m.field(dlg).set_prompt(prompt);
_qcomp_prev[i-1] = qcomp[i-1];
}
}
}
@ -478,7 +496,7 @@ void TManutenzione_quadri::init_menu(TMask& m)
int rt = _basebis->read();
qcomp = _basebis->get("QCOMP");
qric = _basebis->get("QSUPPRIC");
if (qcomp == "") qcomp.spaces();
if (qric == "") qric.spaces();

View File

@ -1060,7 +1060,7 @@ BEGIN
PROMPT 39 ROW4 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E,D|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
@ -1076,7 +1076,7 @@ BEGIN
PROMPT 39 ROW5 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E1,D|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
@ -1092,7 +1092,7 @@ BEGIN
PROMPT 39 ROW6 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E2,D|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
// Fine terza colonna
@ -1110,7 +1110,7 @@ BEGIN
PROMPT 58 ROW1 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
@ -1126,7 +1126,7 @@ BEGIN
PROMPT 58 ROW2 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
@ -1142,7 +1142,7 @@ BEGIN
PROMPT 58 ROW3 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END
@ -1174,7 +1174,7 @@ BEGIN
PROMPT 58 ROW5 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1|K_TAB,RILEGGI_QUADRI
FLAGS "H"
FLAGS "HD"
GROUP MENU_STAMPEDICH
END

View File

@ -1,483 +1,482 @@
// 776300.cpp - Selezione dichiarazioni per menu' stampe
#include <confapp.h>
#include <mask.h>
#include <isam.h>
#include <sheet.h>
#include <prefix.h>
#include <progind.h>
#include <lffiles.h>
#include <utility.h>
#include <relation.h>
#include "776300a.h"
#include "77lib.h"
class TSelezioneDich : public TConfig_application
{
TString16 _section;
TBit_array _selected;
TArray_sheet* _ditte, * _ditte_sel;
TArray _nomiditte;
TArray _old_ditte;
TConfig* _user_cnf, * _studio_cnf;
int _n_ditte;
int _anno_dic;
TRelation* _nditte;
long _da_cod, _a_cod;
bool _builded_nomiditte;
void build_nomiditte();
void build_ditte_sheet();
void build_ditte_sel_sheet();
bool is_in (long codditta);
void init_sheet();
void check_all_dic();
public:
void set_choice_limits(TMask& m);
long select_firm_range(long from, long to);
long set_previous_firm_range();
// handlers & handlers
static bool to_ditt_handler (TMask_field&, KEY);
static bool fr_ditt_handler (TMask_field&, KEY);
static bool to_butt_handler (TMask_field&, KEY);
static bool fr_butt_handler (TMask_field&, KEY);
static bool mask_select (TMask_field&, KEY);
static bool mask_azzera (TMask_field&, KEY);
// Seleziona tutte le dic
static bool tutte_handler (TMask_field&, KEY);
// Mostra solo le selezionate
static bool dicsel_handler (TMask_field&, KEY);
virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config (TMask& mask, TConfig& config);
// virtual bool postprocess_config_changed(const char* par, const char* var,const char* oldv, const char* newv);
virtual bool user_create();
virtual bool user_destroy();
virtual bool firm_change_enabled() const;
TSelezioneDich() : TConfig_application(CONFIG_USER) ,
_a_cod(0L), _da_cod(0L) {}
virtual ~TSelezioneDich() {}
};
HIDDEN TSelezioneDich& app() { return (TSelezioneDich&) main_app(); }
bool TSelezioneDich::user_create()
{
const char* edit_mask = "776300a";
_section = name();
_section.cut(2);
// Forza la scrittura del file in partenza
// (onde evitare di vedere il messaggio "Nessun parametro da configurare" e di dover
// rientrare).
TConfig* tmp = new TConfig(CONFIG_USER, _section);
tmp->get("EdMask", _section, -1, edit_mask);
delete tmp;
_user_cnf = new TConfig(CONFIG_USER, _section);
_user_cnf->get("EdMask", _section, -1, edit_mask);
_studio_cnf = new TConfig(CONFIG_STUDIO);
_nditte = new TRelation(LF_NDITTE);
_nditte->add(LF_BASE,"CODDITTA=CODDITTA");
_ditte = new TArray_sheet(11, 1, 67, 20, "Seleziona dichiarazioni",
"@1|Cod.@5|Ragione Sociale@50");
_ditte_sel = new TArray_sheet(11, 1, 67, 20, "Dichiarazioni selezionate",
"@1|Cod.@5|Ragione Sociale@50", 0);
_builded_nomiditte = FALSE;
return TRUE;
}
bool TSelezioneDich::user_destroy()
{
delete _ditte;
delete _ditte_sel;
delete _nditte;
delete _user_cnf;
delete _studio_cnf;
return TRUE;
}
bool TSelezioneDich::firm_change_enabled() const
{
return FALSE;
}
void TSelezioneDich::init_sheet()
{
_n_ditte = 0l;
_old_ditte.destroy();
if (!_builded_nomiditte)
{
build_nomiditte();
_builded_nomiditte = TRUE;
}
// Legge ditte selezionate dal CONFIG_USER e mette nell'array _old_ditte
long codditta = 0L;
int i = 0;
TString16 cods;
while ((codditta = _user_cnf->get_long(DITTE_SEL, _section, i++)) != 0L)
{
// Salvo il primo e l'ultimo codice ditta per settare i campi in maschera
if (_da_cod == 0L) _da_cod = codditta;
_a_cod = codditta;
cods.format("%5ld", codditta);
_old_ditte.add(cods);
}
build_ditte_sheet();
}
bool TSelezioneDich::preprocess_config (TMask& m, TConfig& config)
{
init_sheet();
// Setto l'anno dichiarazione con quello preso dai parametri di studio
// ma SOLO SE non gia' compilato nei par. utente
_anno_dic = (int)_user_cnf->get_long(ANNO_SEL, _section);
if (_anno_dic == 0)
_anno_dic = (int)_studio_cnf->get_long(ANNO_SEL, _section);
m.set(F_ANNODIC, _anno_dic);
// const long l = select_firm_range(_da_cod, _a_cod);
// Evidenzia le ditte precedentemente selezionate. Legge _old_ditte
const long l = set_previous_firm_range();
set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
m.set_handler (DLG_SELECT_2, mask_select);
m.set_handler (F_ANNULLA, mask_azzera);
m.set_handler (A_CODICE, to_ditt_handler);
m.set_handler (DA_CODICE, fr_ditt_handler);
m.set_handler (F_TUTTE, tutte_handler);
m.set_handler (F_DICSEL, dicsel_handler);
return TRUE;
}
bool TSelezioneDich::is_in (long codditta)
{
for (int i=0; i<_old_ditte.items(); i++)
if (codditta == atol((TString&)_old_ditte[i]))
return TRUE;
return FALSE;
}
bool TSelezioneDich::postprocess_config (TMask& m, TConfig& config)
{
if (m.last_key() == K_ENTER)
{
const int anno_dic = m.get_int(F_ANNODIC);
const long selec = _ditte->checked();
const long items = _ditte->items();
TProgind prg(items, "Registrazione in corso\nAttendere prego...", FALSE, TRUE);
// Registro l'anno dic. nei parametri utente
_user_cnf->set(ANNO_SEL, anno_dic);
// Compatto l'array delle ditte nel .ini
int ditte_in_ini = 0;
long codditta = 0L;
for (int i = 0; i < items; i++)
{
if (_selected[i])
{
TToken_string& d = (TToken_string&)_nomiditte[i];
codditta = d.get_long(1);
_user_cnf->set(DITTE_SEL, codditta, _section, TRUE, ditte_in_ini);
ditte_in_ini++ ;
}
prg.addstatus(1);
}
// Segno l'ultima ditta nel .ini
_user_cnf->set(DITTE_SEL, "", _section, TRUE, ditte_in_ini);
// Reset dei due codici ditta "Da" "A"
_a_cod = _da_cod = 0L;
}
return TRUE;
}
bool TSelezioneDich::mask_select (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app()._ditte->enable_check();
// seleziona e aggiungi alle gia' selezionate
if (app()._ditte->run() == K_ENTER)
{
for (long j = 0l; j < app()._ditte->items(); j++)
app()._selected.set(j, app()._ditte->checked(j));
app().set_choice_limits(f.mask());
}
}
return TRUE;
}
bool TSelezioneDich::mask_azzera (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app()._selected.reset();
f.mask().reset(F_SELECT);
f.mask().reset(DA_CODICE);
f.mask().reset(A_CODICE);
app()._ditte->check(-1, FALSE);
}
return TRUE;
}
// --------------------------- handlers per selezione ditte
bool TSelezioneDich::to_ditt_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_F9)
{
app().to_butt_handler(f, K_SPACE);
}
if (key == K_TAB && f.focusdirty())
{
const long l = app().select_firm_range(m.get_long(DA_CODICE), m.get_long(A_CODICE));
app().set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
}
return TRUE;
}
bool TSelezioneDich::fr_ditt_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_F9)
{
app().fr_butt_handler(f, K_SPACE);
}
else if (key == K_TAB && f.focusdirty())
{
const long l = app().select_firm_range(m.get_long(DA_CODICE), m.get_long(A_CODICE));
app().set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
}
return TRUE;
}
bool TSelezioneDich::to_butt_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TArray_sheet* sh = app()._ditte;
TMask& m = f.mask();
sh->disable_check();
if (sh->run() == K_ENTER)
{
app().select_firm_range(m.get_long(DA_CODICE),sh->row(sh->selected()).get_long(1));
app().set_choice_limits(m);
}
}
return TRUE;
}
bool TSelezioneDich::fr_butt_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TMask& m = f.mask();
TArray_sheet* sh = app()._ditte;
sh->disable_check();
if (sh->run() == K_ENTER)
{
app().select_firm_range(sh->row(sh->selected()).get_long(1), m.get_long(A_CODICE));
app().set_choice_limits(m);
}
}
return TRUE;
}
void TSelezioneDich::check_all_dic()
{
for (int i = 0; i < _ditte->items(); i++)
_ditte->check(i);
}
bool TSelezioneDich::tutte_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
const bool checked = (f.get() == "X");
if (checked)
{
app().check_all_dic();
app().select_firm_range(0L,0L);
app().set_choice_limits(f.mask());
}
}
return TRUE;
}
bool TSelezioneDich::dicsel_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
app().build_ditte_sel_sheet();
app()._ditte_sel->run();
}
return TRUE;
}
void TSelezioneDich::set_choice_limits(TMask& m)
{
long first = -1l, last = -1l;
for (int i = 0; i < _ditte->items(); i++)
{
if (_selected[i])
{
long dit = _ditte->row(i).get_long(1);
if (first == -1l) first = dit;
if (last < dit) last = dit;
}
}
if (first != -1) m.field(DA_CODICE).set(format("%ld",first));
if (last != -1) m.field(A_CODICE).set(format("%ld",last));
m.set(F_SELECT, _selected.ones());
}
// Legge da _old_ditte le ditte selezionate e le evidenzia
long TSelezioneDich::set_previous_firm_range()
{
const long items = _old_ditte.items();
for (int i=0; i < items; i++)
{
const long codditta = atol((TString&)_old_ditte[i]);
for (int dit=0; dit < _ditte->items(); dit++)
{
TToken_string& d = _ditte->row(dit);
const long cod = d.get_long(1);
if (codditta == cod)
{
_selected.set(dit);
_ditte->check(dit);
break;
}
/************************
else
{
_selected.set(dit,FALSE);
_ditte->uncheck(dit);
}
**************************/
}
}
return _selected.ones();
}
long TSelezioneDich::select_firm_range(long from, long to)
{
if (to == 0l) to = 99999L;
for (int i = 0; i < _ditte->items(); i++)
{
if (_ditte->row_disabled(i))
continue;
TToken_string& d = _ditte->row(i);
const long cod = d.get_long(1);
if (cod >= from && cod <= to)
{
_selected.set(i);
_ditte->check(i);
}
else
{
_selected.set(i,FALSE);
_ditte->uncheck(i);
}
}
return _selected.ones();
}
// 23/6/95 - Scelta ditte solo tra quelle che hanno dichiarazione
void TSelezioneDich::build_nomiditte()
{
_nomiditte.destroy();
// ricostruire _nomiditte e rifare build_ditte_sheet
TRectype& dt = _nditte->curr();
TProgind prg(dt.items(), "Lettura ditte in corso\nAttendere prego...", FALSE, TRUE);
for (_nditte->first(); !_nditte->eof(); _nditte->next())
{
prg.addstatus(1);
_n_ditte++;
TToken_string* d = new TToken_string(64);
d->add(" "); // spazio per la selezione
d->add(dt.get("CODDITTA"));
d->add(dt.get("RAGSOC"));
_nomiditte.add(d);
}
}
void TSelezioneDich::build_ditte_sheet()
{
long codditta = 0L;
// build sheet
_ditte->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
codditta = d->get_long(1);
const long pos = _ditte->add(d);
// Metto check se selezionata o era nei parametri precedenti
if (_selected[i] || is_in(codditta))
_ditte->check(pos);
}
}
// Costruisce un array sheet copiando da nomiditte solo quelle
// gia' selezionate
void TSelezioneDich::build_ditte_sel_sheet()
{
long codditta = 0L;
// build sheet
_ditte_sel->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
codditta = d->get_long(1);
// se selezionata o era nei parametri precedenti
if (_selected[i])
{
const long pos = _ditte_sel->add(d);
// _ditte_sel->check(pos);
}
}
}
int SelezioneDichiarazioni(int argc, char* argv[])
{
TSelezioneDich app;
app.run(argc, argv, "Selezione dichiarazione");
return 0;
}
// 776300.cpp - Selezione dichiarazioni per menu' stampe
#include <confapp.h>
#include <mask.h>
#include <isam.h>
#include <sheet.h>
#include <prefix.h>
#include <progind.h>
#include <lffiles.h>
#include <utility.h>
#include <relation.h>
#include "776300a.h"
#include "77lib.h"
class TSelezioneDich : public TConfig_application
{
TString16 _section;
TBit_array _selected;
TArray_sheet* _ditte, * _ditte_sel;
TArray _nomiditte;
TArray _old_ditte;
TConfig* _user_cnf, * _studio_cnf;
int _n_ditte;
int _anno_dic;
TRelation* _nditte;
long _da_cod, _a_cod;
bool _builded_nomiditte;
void build_nomiditte();
void build_ditte_sheet();
void build_ditte_sel_sheet();
bool is_in (long codditta);
void init_sheet();
void check_all_dic();
public:
void set_choice_limits(TMask& m);
long select_firm_range(long from, long to);
long set_previous_firm_range();
// handlers & handlers
static bool to_ditt_handler (TMask_field&, KEY);
static bool fr_ditt_handler (TMask_field&, KEY);
static bool to_butt_handler (TMask_field&, KEY);
static bool fr_butt_handler (TMask_field&, KEY);
static bool mask_select (TMask_field&, KEY);
static bool mask_azzera (TMask_field&, KEY);
// Seleziona tutte le dic
static bool tutte_handler (TMask_field&, KEY);
// Mostra solo le selezionate
static bool dicsel_handler (TMask_field&, KEY);
virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config (TMask& mask, TConfig& config);
// virtual bool postprocess_config_changed(const char* par, const char* var,const char* oldv, const char* newv);
virtual bool user_create();
virtual bool user_destroy();
virtual bool firm_change_enabled() const;
TSelezioneDich() : TConfig_application(CONFIG_USER) ,
_a_cod(0L), _da_cod(0L) {}
virtual ~TSelezioneDich() {}
};
HIDDEN TSelezioneDich& app() { return (TSelezioneDich&) main_app(); }
bool TSelezioneDich::user_create()
{
const char* edit_mask = "776300a";
_section = name();
_section.cut(2);
// Forza la scrittura del file in partenza
// (onde evitare di vedere il messaggio "Nessun parametro da configurare" e di dover
// rientrare).
TConfig* tmp = new TConfig(CONFIG_USER, _section);
tmp->get("EdMask", _section, -1, edit_mask);
delete tmp;
_user_cnf = new TConfig(CONFIG_USER, _section);
_user_cnf->get("EdMask", _section, -1, edit_mask);
_studio_cnf = new TConfig(CONFIG_STUDIO);
_nditte = new TRelation(LF_NDITTE);
_nditte->add(LF_BASE,"CODDITTA=CODDITTA");
_ditte = new TArray_sheet(11, 1, 67, 20, "Seleziona dichiarazioni",
"@1|Cod.@5|Ragione Sociale@50");
_ditte_sel = new TArray_sheet(11, 1, 67, 20, "Dichiarazioni selezionate",
"Cod.@5|Ragione Sociale@50", 0x10);
_builded_nomiditte = FALSE;
return TRUE;
}
bool TSelezioneDich::user_destroy()
{
delete _ditte;
delete _ditte_sel;
delete _nditte;
delete _user_cnf;
delete _studio_cnf;
return TRUE;
}
bool TSelezioneDich::firm_change_enabled() const
{
return FALSE;
}
void TSelezioneDich::init_sheet()
{
_n_ditte = 0l;
_old_ditte.destroy();
if (!_builded_nomiditte)
{
build_nomiditte();
_builded_nomiditte = TRUE;
}
// Legge ditte selezionate dal CONFIG_USER e mette nell'array _old_ditte
long codditta = 0L;
int i = 0;
TString16 cods;
while ((codditta = _user_cnf->get_long(DITTE_SEL, _section, i++)) != 0L)
{
// Salvo il primo e l'ultimo codice ditta per settare i campi in maschera
if (_da_cod == 0L) _da_cod = codditta;
_a_cod = codditta;
cods.format("%5ld", codditta);
_old_ditte.add(cods);
}
build_ditte_sheet();
}
bool TSelezioneDich::preprocess_config (TMask& m, TConfig& config)
{
init_sheet();
// Setto l'anno dichiarazione con quello preso dai parametri di studio
// ma SOLO SE non gia' compilato nei par. utente
_anno_dic = (int)_user_cnf->get_long(ANNO_SEL, _section);
if (_anno_dic == 0)
_anno_dic = (int)_studio_cnf->get_long(ANNO_SEL, _section);
m.set(F_ANNODIC, _anno_dic);
// const long l = select_firm_range(_da_cod, _a_cod);
// Evidenzia le ditte precedentemente selezionate. Legge _old_ditte
const long l = set_previous_firm_range();
set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
m.set_handler (DLG_SELECT_2, mask_select);
m.set_handler (F_ANNULLA, mask_azzera);
m.set_handler (A_CODICE, to_ditt_handler);
m.set_handler (DA_CODICE, fr_ditt_handler);
m.set_handler (F_TUTTE, tutte_handler);
m.set_handler (F_DICSEL, dicsel_handler);
return TRUE;
}
bool TSelezioneDich::is_in (long codditta)
{
for (int i=0; i<_old_ditte.items(); i++)
if (codditta == atol((TString&)_old_ditte[i]))
return TRUE;
return FALSE;
}
bool TSelezioneDich::postprocess_config (TMask& m, TConfig& config)
{
if (m.last_key() == K_ENTER)
{
const int anno_dic = m.get_int(F_ANNODIC);
const long selec = _ditte->checked();
const long items = _ditte->items();
TProgind prg(items, "Registrazione in corso\nAttendere prego...", FALSE, TRUE);
// Registro l'anno dic. nei parametri utente
_user_cnf->set(ANNO_SEL, anno_dic);
// Compatto l'array delle ditte nel .ini
int ditte_in_ini = 0;
long codditta = 0L;
for (int i = 0; i < items; i++)
{
if (_selected[i])
{
TToken_string& d = (TToken_string&)_nomiditte[i];
codditta = d.get_long(1);
_user_cnf->set(DITTE_SEL, codditta, _section, TRUE, ditte_in_ini);
ditte_in_ini++ ;
}
prg.addstatus(1);
}
// Segno l'ultima ditta nel .ini
_user_cnf->set(DITTE_SEL, "", _section, TRUE, ditte_in_ini);
// Reset dei due codici ditta "Da" "A"
_a_cod = _da_cod = 0L;
}
return TRUE;
}
bool TSelezioneDich::mask_select (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app()._ditte->enable_check();
// seleziona e aggiungi alle gia' selezionate
if (app()._ditte->run() == K_ENTER)
{
for (long j = 0l; j < app()._ditte->items(); j++)
app()._selected.set(j, app()._ditte->checked(j));
app().set_choice_limits(f.mask());
}
}
return TRUE;
}
bool TSelezioneDich::mask_azzera (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
app()._selected.reset();
f.mask().reset(F_SELECT);
f.mask().reset(DA_CODICE);
f.mask().reset(A_CODICE);
app()._ditte->check(-1, FALSE);
}
return TRUE;
}
// --------------------------- handlers per selezione ditte
bool TSelezioneDich::to_ditt_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_F9)
{
app().to_butt_handler(f, K_SPACE);
}
if (key == K_TAB && f.focusdirty())
{
const long l = app().select_firm_range(m.get_long(DA_CODICE), m.get_long(A_CODICE));
app().set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
}
return TRUE;
}
bool TSelezioneDich::fr_ditt_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_F9)
{
app().fr_butt_handler(f, K_SPACE);
}
else if (key == K_TAB && f.focusdirty())
{
const long l = app().select_firm_range(m.get_long(DA_CODICE), m.get_long(A_CODICE));
app().set_choice_limits(m);
m.field(F_SELECT).set(format("%ld", l));
}
return TRUE;
}
bool TSelezioneDich::to_butt_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TArray_sheet* sh = app()._ditte;
TMask& m = f.mask();
sh->disable_check();
if (sh->run() == K_ENTER)
{
app().select_firm_range(m.get_long(DA_CODICE),sh->row(sh->selected()).get_long(1));
app().set_choice_limits(m);
}
}
return TRUE;
}
bool TSelezioneDich::fr_butt_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
TMask& m = f.mask();
TArray_sheet* sh = app()._ditte;
sh->disable_check();
if (sh->run() == K_ENTER)
{
app().select_firm_range(sh->row(sh->selected()).get_long(1), m.get_long(A_CODICE));
app().set_choice_limits(m);
}
}
return TRUE;
}
void TSelezioneDich::check_all_dic()
{
for (int i = 0; i < _ditte->items(); i++)
_ditte->check(i);
}
bool TSelezioneDich::tutte_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
const bool checked = (f.get() == "X");
if (checked)
{
app().check_all_dic();
app().select_firm_range(0L,0L);
app().set_choice_limits(f.mask());
}
}
return TRUE;
}
bool TSelezioneDich::dicsel_handler(TMask_field& f, KEY key)
{
if (key == K_SPACE)
{
app().build_ditte_sel_sheet();
app()._ditte_sel->run();
}
return TRUE;
}
void TSelezioneDich::set_choice_limits(TMask& m)
{
long first = -1l, last = -1l;
for (int i = 0; i < _ditte->items(); i++)
{
if (_selected[i])
{
long dit = _ditte->row(i).get_long(1);
if (first == -1l) first = dit;
if (last < dit) last = dit;
}
}
if (first != -1) m.field(DA_CODICE).set(format("%ld",first));
if (last != -1) m.field(A_CODICE).set(format("%ld",last));
m.set(F_SELECT, _selected.ones());
}
// Legge da _old_ditte le ditte selezionate e le evidenzia
long TSelezioneDich::set_previous_firm_range()
{
const long items = _old_ditte.items();
for (int i=0; i < items; i++)
{
const long codditta = atol((TString&)_old_ditte[i]);
for (int dit=0; dit < _ditte->items(); dit++)
{
TToken_string& d = _ditte->row(dit);
const long cod = d.get_long(1);
if (codditta == cod)
{
_selected.set(dit);
_ditte->check(dit);
break;
}
/************************
else
{
_selected.set(dit,FALSE);
_ditte->uncheck(dit);
}
**************************/
}
}
return _selected.ones();
}
long TSelezioneDich::select_firm_range(long from, long to)
{
if (to == 0l) to = 99999L;
for (int i = 0; i < _ditte->items(); i++)
{
if (_ditte->row_disabled(i))
continue;
TToken_string& d = _ditte->row(i);
const long cod = d.get_long(1);
if (cod >= from && cod <= to)
{
_selected.set(i);
_ditte->check(i);
}
else
{
_selected.set(i,FALSE);
_ditte->uncheck(i);
}
}
return _selected.ones();
}
// 23/6/95 - Scelta ditte solo tra quelle che hanno dichiarazione
void TSelezioneDich::build_nomiditte()
{
_nomiditte.destroy();
// ricostruire _nomiditte e rifare build_ditte_sheet
TRectype& dt = _nditte->curr();
TProgind prg(dt.items(), "Lettura ditte in corso\nAttendere prego...", FALSE, TRUE);
for (_nditte->first(); !_nditte->eof(); _nditte->next())
{
prg.addstatus(1);
_n_ditte++;
TToken_string* d = new TToken_string(64);
d->add(" "); // spazio per la selezione
d->add(dt.get("CODDITTA"));
d->add(dt.get("RAGSOC"));
_nomiditte.add(d);
}
}
void TSelezioneDich::build_ditte_sheet()
{
long codditta = 0L;
// build sheet
_ditte->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
codditta = d->get_long(1);
const long pos = _ditte->add(d);
// Metto check se selezionata o era nei parametri precedenti
if (_selected[i] || is_in(codditta))
_ditte->check(pos);
}
}
// Costruisce un array sheet copiando da nomiditte solo quelle
// gia' selezionate
void TSelezioneDich::build_ditte_sel_sheet()
{
// build sheet
_ditte_sel->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
// copia da quelle selezionate
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
// elimina il token riservato alla selezione
d->destroy(0);
// se selezionata o era nei parametri precedenti
if (_selected[i])
const long pos = _ditte_sel->add(d);
}
}
int SelezioneDichiarazioni(int argc, char* argv[])
{
TSelezioneDich app;
app.run(argc, argv, "Selezione dichiarazione");
return 0;
}

View File

@ -60,7 +60,7 @@ END
STRING F_SELECT 5
BEGIN
PROMPT 2 8 "Dichiarazioni selezionate "
FLAGS "D"
FLAGS "DR"
END
NUMBER F_ANNODIC 4

View File

@ -32,8 +32,7 @@ void TQuadroG1::init_insert_mode (TMask& m)
void TQuadroG1::init_modify_mode (TMask& m)
{
// init_mask(m);
m.disable(DLG_DELREC);
}
int TQuadroG1::read(TMask& m)
@ -98,6 +97,7 @@ bool TQuadroG1::user_create()
_msk->disable(DLG_NEWREC); // disabilito Nuovo nella toolbar
_msk->disable(DLG_DELREC); // disabilito Elimina nella toolbar
_msk->disable(DLG_FINDREC); // disabilito Ricerca nella toolbar
_msk->set_handler(mainmsk_handler);
TSheet_field& p1 = (TSheet_field&) _msk->field(F_PI);
p1.set_notify(p1_notify);
return TRUE;
@ -250,8 +250,8 @@ int TQuadroG1::rewrite(const TMask& m)
bool TQuadroG1::remove()
{
const bool ok = TRelation_application::remove();
return ok;
_registra = TRelation_application::remove();
return _registra;
}
bool TQuadroG1::p1_notify(TSheet_field& s, int r, KEY k)
@ -276,4 +276,13 @@ bool TQuadroG1::p1_notify(TSheet_field& s, int r, KEY k)
}
return TRUE;
}
bool TQuadroG1::mainmsk_handler(TMask& m, KEY k)
{
if (k == K_ESC)
{
TOperable_field& f = m.focus_field();
m.set_focus_field(f.dlg());
}
return TRUE;
}

View File

@ -46,8 +46,8 @@ BEGIN
DISPLAY "N°" NPROG
DISPLAY "Mese" MESERIF
DISPLAY "Anno" ANNORIF
DISPLAY "Imposta rimborsata" IMPOSTA
DISPLAY "Compensi per l'assistenza" COMPENSI
DISPLAY "Imposta rimborsata" IMPOSTA
DISPLAY "Compensi per l'assistenza" COMPENSI
OUTPUT QNF_NPROG NPROG
OUTPUT QNF_COMPENSI COMPENSI
OUTPUT QNF_IMPOSTA IMPOSTA

View File

@ -53,11 +53,11 @@ BEGIN
INPUT NPROG QPF_NPROG
DISPLAY "N°" NPROG
DISPLAY "Imposta versata" IMPOSTA
DISPLAY "Data versamento" DATAVERS
DISPLAY "Tipo" TIPOVERS
DISPLAY "Codice tributo" CODTRIB
DISPLAY "Interessi dipendente" INTERDIP
DISPLAY "Interessi datore di lavoro" INTERDAT
DISPLAY "Tipo" TIPOVERS
DISPLAY "Codice tributo" CODTRIB
DISPLAY "Data versamento" DATAVERS
DISPLAY "Serie/ABI" SERIE
DISPLAY "Numero/Bollettino/CAB" NUMERO
OUTPUT QPF_NPROG NPROG

View File

@ -45,11 +45,11 @@ BEGIN
INPUT NPROG QQF_NPROG
DISPLAY "N°" NPROG
DISPLAY "Mese" MESEPAG
DISPLAY "Anno" ANNOPAG
DISPLAY "Cod.reg." CODREG
DISPLAY "Interessi o soprattasse" INTERESSI
DISPLAY "Anno" ANNOPAG
DISPLAY "Contributo versato" CONTVERS
DISPLAY "Contributo rimborsato" CONTRIMB
DISPLAY "Interessi o soprattasse" INTERESSI
DISPLAY "Cod.reg." CODREG
OUTPUT QQF_NPROG NPROG
OUTPUT QQF_CONTRIMB CONTRIMB
OUTPUT QQF_CONTVERS CONTVERS

View File

@ -46,8 +46,8 @@ BEGIN
DISPLAY "N°" NPROG
DISPLAY "Mese" MESERIF
DISPLAY "Anno" ANNORIF
DISPLAY "Imposta rimborsata" IMPRIMB
DISPLAY "Compensi per l'assistenza" COMPENSI
DISPLAY "Imposta rimborsata" IMPRIMB
DISPLAY "Compensi per l'assistenza" COMPENSI
OUTPUT QRF_NPROG NPROG
OUTPUT QRF_COMPENSI COMPENSI
OUTPUT QRF_IMPOSTA IMPRIMB

View File

@ -53,11 +53,11 @@ BEGIN
INPUT NPROG QSF_NPROG
DISPLAY "N°" NPROG
DISPLAY "Imposta versata" IMPOSTA
DISPLAY "Data versamento" DATAVERS
DISPLAY "Tipo" TIPOVERS
DISPLAY "Codice tributo" CODTRIB
DISPLAY "Interessi dipendente" INTERDIP
DISPLAY "Interessi datore di lavoro" INTERDAT
DISPLAY "Tipo" TIPOVERS
DISPLAY "Codice tributo" CODTRIB
DISPLAY "Data versamento" DATAVERS
DISPLAY "Serie/ABI" SERIE
DISPLAY "Numero/Bollettino/CAB" NUMERO
OUTPUT QSF_NPROG NPROG

View File

@ -45,11 +45,11 @@ BEGIN
INPUT NPROG QTF_NPROG
DISPLAY "N°" NPROG
DISPLAY "Mese" MESEPAG
DISPLAY "Anno" ANNOPAG
DISPLAY "Cod.reg." CODREG
DISPLAY "Interessi o soprattasse" INTERESSI
DISPLAY "Anno" ANNOPAG
DISPLAY "Contributo versato" CONTVERS
DISPLAY "Contributo rimborsato" CONTRIMB
DISPLAY "Interessi o soprattasse" INTERESSI
DISPLAY "Cod.reg." CODREG
OUTPUT QTF_NPROG NPROG
OUTPUT QTF_CONTRIMB CONTRIMB
OUTPUT QTF_CONTVERS CONTVERS

View File

@ -1,27 +1,27 @@
// batbca7.h - Tabella causali 770
#define F_CODCAUS 100
#define F_CODTRIB 101
#define F_DESCR1 102
#define F_QUADRAT 103
#define F_QUADRCE2 104
#define F_ASSRIT 105
#define F_IC 106
#define F_CT 107
#define F_PERASS 108
#define F_PERRIT 109
#define F_ARTBIL 110
#define F_DESCR2 111
#define F_CODQUA 112
// Aggiunte 96
#define TCF_CAUSD 113
#define TCF_CAUSD1 114
#define TCF_BINPS 115
#define TCF_PERCINPS 116
#define TCF_ASSIMPINPS 117
#define TCF_COMMINPS 118
#define TCF_PERCASSPREV 119
#define F_CODCAUS 100
#define F_CODTRIB 101
#define F_DESCR1 102
#define F_QUADRAT 103
#define F_QUADRCE2 104
#define F_ASSRIT 105
#define F_IC 106
#define F_CT 107
#define F_PERASS 108
#define F_PERRIT 109
#define F_ARTBIL 110
#define F_DESCR2 111
#define F_CODQUA 112
#define TCF_CAUSD 113
#define TCF_CAUSD1 114
#define TCF_BINPS 115
#define TCF_PERCINPS 116
#define TCF_ASSIMPINPS 117
#define TCF_COMMINPS 118
#define TCF_PERCASSPREV 119
#define TCF_CAUSD_DESCR 120
#define TCF_CAUSD1_DESCR 121
#define G_INPS 10
#define INPS_GROUP 7

View File

@ -17,10 +17,11 @@ BEGIN
HELP "Inserire il codice della causale"
USE %CA7
INPUT CODTAB F_CODCAUS
DISPLAY "Codice causale " CODTAB
DISPLAY "Codice tributo " I0
DISPLAY "Cod.caus." CODTAB
DISPLAY "Cod.trib." I0
DISPLAY "Art.bil." I3
DISPLAY "Quadro " S1
DISPLAY "Descrizione @60" S0
DISPLAY "Codice quadro " S1
OUTPUT F_CODCAUS CODTAB
OUTPUT F_DESCR2 S0
OUTPUT F_CODTRIB I0
@ -151,7 +152,7 @@ BEGIN
FIELD LF_TABCOM->S1
END
STRING F_DESCR1 35
STRING F_DESCR1 60 35
BEGIN
PROMPT 1 4 "Descrizione "
HELP "Inserire la descrizione della causale"
@ -171,45 +172,67 @@ BEGIN
MESSAGE COPY,F_DESCR1,1,22
END
LISTBOX TCF_CAUSD 1 62
BEGIN
STRING TCF_CAUSD 1
BEGIN
PROMPT 1 5 "Causale D "
ITEM "|"
ITEM "A|A prestaz. di lav. aut. ... nelles. arti o prof. abituale"
ITEM "B|B prestaz. rese da amministratori, sindaci e revisori..."
ITEM "C|C prestaz. rese da collaboratori a giornali, riviste, ..."
ITEM "D|D prestaz. rese da partecipanti a collegi e commissioni"
ITEM "E|E prestaz. rese dagli sportivi con contratto di lav. autonomo"
ITEM "F|F prestaz. ... di rapp. di coll. coord. e c. diversi dai prec"
ITEM "G|G utiliz. economica, da parte dellautore o dellinventore..."
ITEM "H|H utili ... da contratti di associazione in partecipazioni..."
ITEM "I|I utili ... ai soci promot. e/o fond. delle soc. di capitale"
ITEM "L|L per la levata di protesti cambiari da parte dei segretar..."
ITEM "M|M utiliz. economica, ... di soggetto diverso dallautore o..."
ITEM "N|N indennità corrisp. per la cessaz. di rapporti di coll..."
ITEM "P|P indennità corrisp. per la cessaz. dei rapporti di agenzia"
ITEM "Q|Q indennità corrisp. per la cessaz. da funzioni notarili"
ITEM "R|R indennità corrisp. per la cessaz. di attività sportiva prof"
ITEM "S|S indennità di trasf. o di rimborso forfettario di spese..."
ITEM "T|T altro titolo diverso dai precedenti"
SHEET "Codice|Descrizione@60"
INPUT TCF_CAUSD
ITEM " | "
ITEM "A|prestaz. di lav. aut. ... nelles. arti o prof. abituale"
ITEM "B|prestaz. rese da amministratori, sindaci e revisori..."
ITEM "C|prestaz. rese da collaboratori a giornali, riviste, ..."
ITEM "D|prestaz. rese da partecipanti a collegi e commissioni"
ITEM "E|prestaz. rese dagli sportivi con contratto di lav. autonomo"
ITEM "F|prestaz. ... di rapp. di coll. coord. e c. diversi dai prec"
ITEM "G|utiliz. economica, da parte dellautore o dellinventore..."
ITEM "H|utili ... da contratti di associazione in partecipazioni..."
ITEM "I|utili ... ai soci promot. e/o fond. delle soc. di capitale"
ITEM "L|per la levata di protesti cambiari da parte dei segretar..."
ITEM "M|utiliz. economica, ... di soggetto diverso dallautore o..."
ITEM "N|indennità corrisp. per la cessaz. di rapporti di coll..."
ITEM "P|indennità corrisp. per la cessaz. dei rapporti di agenzia"
ITEM "Q|indennità corrisp. per la cessaz. da funzioni notarili"
ITEM "R|indennità corrisp. per la cessaz. di attività sportiva prof"
ITEM "S|indennità di trasf. o di rimborso forfettario di spese..."
ITEM "T|altro titolo diverso dai precedenti"
OUTPUT TCF_CAUSD
OUTPUT TCF_CAUSD_DESCR
FIELD LF_TABCOM->S2
FLAGS "D"
GROUP GR_CAUDD1
END
LISTBOX TCF_CAUSD1 1 62
BEGIN
STRING TCF_CAUSD_DESCR 60
BEGIN
PROMPT 16 5 ""
FLAGS "D"
GROUP GR_CAUDD1
END
STRING TCF_CAUSD1 1
BEGIN
PROMPT 1 6 "Causale D1 "
ITEM "|"
ITEM "A|A Agente o rappresentante di commercio monomadatario"
ITEM "B|B Agente o rappresentate plurimandatario"
ITEM "C|C Commissionario"
ITEM "D|D Mediatore"
ITEM "E|E Procacciatore d'affari"
ITEM "F|F Per somme assoggettate a ritenuta a titolo d'imposta"
SHEET "Codice|Descrizione@60"
INPUT TCF_CAUSD1
ITEM " | "
ITEM "A|Agente o rappresentante di commercio monomadatario"
ITEM "B|Agente o rappresentate plurimandatario"
ITEM "C|Commissionario"
ITEM "D|Mediatore"
ITEM "E|Procacciatore d'affari"
ITEM "F|Per somme assoggettate a ritenuta a titolo d'imposta"
OUTPUT TCF_CAUSD1
OUTPUT TCF_CAUSD1_DESCR
FIELD LF_TABCOM->S3
FLAGS "D"
GROUP GR_CAUDD1
GROUP GR_CAUDD1
END
STRING TCF_CAUSD1_DESCR 60
BEGIN
PROMPT 16 6 ""
FLAGS "D"
GROUP GR_CAUDD1
END
BOOLEAN F_ASSRIT

View File

@ -14,10 +14,13 @@ BEGIN
USE %CAF
CHECKTYPE REQUIRED
INPUT CODTAB F_CODCAAF
DISPLAY "Codice CAA " CODTAB
DISPLAY "Denominazione@50" S0
DISPLAY "Cod.CAA " CODTAB
DISPLAY "Denominazione@50" S0
DISPLAY "Codice fiscale@11" S1
DISPLAY "N.iscr.albo" I1
OUTPUT F_CODCAAF CODTAB
KEY 1
KEY 1
FLAGS "RZ"
END
STRING F_DENOM 50

View File

@ -16,19 +16,20 @@ BEGIN
USE %ENT
CHECKTYPE REQUIRED
INPUT CODTAB F_CODENTE
DISPLAY "Codice Ente " CODTAB
DISPLAY "Descrizione@60 " S0
DISPLAY "Cod.Ente" CODTAB
DISPLAY "Denominazione@60 " S0
OUTPUT F_CODENTE CODTAB
OUTPUT F_DESCR S0
KEY 1
KEY 1
FLAGS "RZ"
END
STRING F_DESCR 60
BEGIN
PROMPT 4 3 "Descrizione "
PROMPT 4 3 "Denominazione "
FIELD LF_TABCOM->S0
HELP "Inserire la descrizione dell' Ente"
WARNING "Manca la descrizione"
WARNING "Manca la denominazione"
CHECKTYPE REQUIRED
END

View File

@ -746,11 +746,9 @@ bool TGeneric_application::menu(MENU_TAG)
TMask m(_maskname);
// if (m.id2pos(F_CODDITTA) > 0)
// m.set_handler(F_CODDITTA, codditta77_handler);
k = m.run();
if (k == K_QUIT) stop_run();
if (k == K_QUIT || k == K_ESC) stop_run();
return k != K_QUIT;
}

View File

@ -9,7 +9,6 @@ BEGIN
GROUP 1
END
// Il menu' viene richiamato nell'handler di questo bottone
BUTTON B_SELDIC 1 1
BEGIN
PROMPT 1 3 ""
@ -255,7 +254,8 @@ BUTTON B_E 1 1
BEGIN
PROMPT 39 ROW4 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E,S
MESSAGE RUN,772MOD,-4,E,S
FLAG "D"
GROUP 1
END
@ -269,7 +269,8 @@ BUTTON B_E1 1 1
BEGIN
PROMPT 39 ROW5 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E1,S
MESSAGE RUN,772MOD,-4,E1,S
FLAG "D"
GROUP 1
END
@ -284,6 +285,7 @@ BEGIN
PROMPT 39 ROW6 ""
PICTURE 123
MESSAGE RUN,772MOD,-4,E2,S
FLAG "D"
GROUP 1
END
// Fine terza colonna
@ -300,6 +302,7 @@ BEGIN
PROMPT 58 ROW1 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1
FLAG "D"
GROUP 1
END
@ -314,6 +317,7 @@ BEGIN
PROMPT 58 ROW2 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1
FLAG "D"
GROUP 1
END
@ -328,6 +332,7 @@ BEGIN
PROMPT 58 ROW3 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1
FLAG "D"
GROUP 1
END
@ -356,6 +361,7 @@ BEGIN
PROMPT 58 ROW5 ""
PICTURE 123
// MESSAGE RUN,771MOD,-1
FLAG "D"
GROUP 1
END
@ -374,9 +380,9 @@ BEGIN
END
// Fine QUARTA colonna
BUTTON DLG_QUIT 20 2
BEGIN
PROMPT -12 -1 "Fine"
BUTTON DLG_CANCEL 20 2
BEGIN
PROMPT -22 -1 "Menu precedente"
END
ENDPAGE