1996-06-17 08:46:44 +00:00
|
|
|
// 771231.cpp - Quadri F
|
|
|
|
//
|
1997-06-18 09:52:29 +00:00
|
|
|
#include <relapp.h>
|
1997-06-03 14:27:56 +00:00
|
|
|
#include <defmask.h>
|
1996-06-17 08:46:44 +00:00
|
|
|
#include <msksheet.h>
|
1997-01-15 14:38:42 +00:00
|
|
|
#include <recarray.h>
|
1997-06-03 14:27:56 +00:00
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
#include "77lib.h"
|
|
|
|
#include "774200.h"
|
1997-06-03 14:27:56 +00:00
|
|
|
#include "771231a.h" // F, F-1
|
|
|
|
#include "771232.h" // quadro G
|
1997-06-18 09:52:29 +00:00
|
|
|
#include "prospe1.h"
|
1996-06-17 08:46:44 +00:00
|
|
|
#include "quadrif.h"
|
|
|
|
#include "ca7.h"
|
1997-06-03 14:27:56 +00:00
|
|
|
|
|
|
|
// Righe spreadsheet F
|
|
|
|
#define S_CODC 101
|
|
|
|
#define S_DESC 102
|
|
|
|
#define S_ALIQ 103
|
|
|
|
#define S_SOGG 104
|
|
|
|
#define S_ROPE 105
|
|
|
|
#define S_SOMM 106
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
class TQuadroF : public TRelation_application
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
TRelation* _rel;
|
|
|
|
TMask* _msk;
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
int _anno_dic; // anno dichiarazione
|
|
|
|
long _codditta;
|
|
|
|
TRecord_array* _prosp_a, *_prosp_b, *_prosp_c;
|
|
|
|
bool _registra;
|
|
|
|
|
|
|
|
static void calcola_ritenuta_operata(TMask& m, char prosp);
|
|
|
|
static bool aliq_handler(TMask_field& f, KEY k);
|
|
|
|
static bool sogg_handler(TMask_field& f, KEY k);
|
|
|
|
static bool rope_handler(TMask_field& f, KEY k);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
static bool dprov_handler(TMask_field& f, KEY k);
|
|
|
|
static bool daliq_handler(TMask_field& f, KEY k);
|
|
|
|
|
|
|
|
static bool mainmsk_handler(TMask& m, KEY k);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
int salva_prospetto(char prosp, bool re);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
protected:
|
1997-06-03 14:27:56 +00:00
|
|
|
virtual bool user_create();
|
|
|
|
virtual bool user_destroy();
|
|
|
|
virtual int read(TMask& m);
|
|
|
|
virtual int rewrite(const TMask& m);
|
|
|
|
virtual int write (const TMask& m);
|
|
|
|
virtual bool remove();
|
|
|
|
virtual TRelation* get_relation() const { return _rel; }
|
|
|
|
virtual TMask* get_mask(int mode) { return _msk; }
|
|
|
|
virtual bool changing_mask(int mode) { return FALSE; }
|
|
|
|
virtual void init_query_mode (TMask&);
|
|
|
|
virtual void init_insert_mode (TMask&);
|
|
|
|
virtual void init_modify_mode (TMask&);
|
|
|
|
|
|
|
|
void init_mask (TMask&);
|
|
|
|
void init_sheet(TSheet_field& s);
|
|
|
|
void fill_ss();
|
|
|
|
void ss_pack(TSheet_field& ss) const;
|
|
|
|
void riempi_prospetto(const char prosp);
|
|
|
|
int re_write(bool re);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
public:
|
1997-06-03 14:27:56 +00:00
|
|
|
TString _quadro, _title;
|
|
|
|
const char* taitol() const { return _title; }
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
TQuadroF(char quadro = '0');
|
1996-06-17 08:46:44 +00:00
|
|
|
virtual ~TQuadroF() {};
|
|
|
|
};
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
TQuadroF::TQuadroF(char quadro)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
_registra = FALSE;
|
1996-06-17 08:46:44 +00:00
|
|
|
switch (quadro)
|
|
|
|
{
|
|
|
|
case '0':
|
|
|
|
_quadro = "F";
|
|
|
|
_title = "Quadro F";
|
|
|
|
break;
|
|
|
|
case '1':
|
|
|
|
_quadro = "F1";
|
1997-01-13 08:52:09 +00:00
|
|
|
_title = "Quadro F1";
|
1996-06-17 08:46:44 +00:00
|
|
|
break;
|
|
|
|
case '2':
|
|
|
|
_quadro = "F2";
|
1997-01-13 08:52:09 +00:00
|
|
|
_title = "Quadro F2";
|
1996-06-17 08:46:44 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
inline TQuadroF& app() { return (TQuadroF&) main_app(); }
|
1997-01-13 08:52:09 +00:00
|
|
|
|
|
|
|
void TQuadroF::init_insert_mode (TMask& m)
|
|
|
|
{
|
1996-06-17 08:46:44 +00:00
|
|
|
init_mask(m);
|
1997-01-13 08:52:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::init_modify_mode (TMask& m)
|
|
|
|
{
|
1997-02-14 15:39:49 +00:00
|
|
|
// m.disable(DLG_DELREC); // disabilito Elimina nella toolbar
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::init_query_mode (TMask& m)
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TString16 codditta;
|
1997-01-13 08:52:09 +00:00
|
|
|
codditta << _codditta;
|
1997-06-03 14:27:56 +00:00
|
|
|
TMask_field& f = m.field(DLG_CODDITTA);
|
1997-01-13 08:52:09 +00:00
|
|
|
f.set(codditta);
|
|
|
|
f.check();
|
1996-06-17 08:46:44 +00:00
|
|
|
m.send_key(K_AUTO_ENTER,0);
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
void TQuadroF::init_mask (TMask&)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
fill_ss();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::init_sheet(TSheet_field& s)
|
|
|
|
{
|
|
|
|
const int delta = _quadro == "F1" ? 3 : 0;
|
|
|
|
|
|
|
|
TMask& m = s.sheet_mask();
|
|
|
|
for (short id = S_CODC; id <= S_DESC; id++)
|
|
|
|
{
|
|
|
|
TEdit_field& e = m.efield(id+delta);
|
|
|
|
TBrowse* browse = e.browse();
|
|
|
|
CHECKD(browse, "Manca la ricerca sul file delle causali nel campo ", id);
|
|
|
|
TCursor* cur = browse->cursor();
|
1998-02-09 12:06:44 +00:00
|
|
|
TString16 filter; filter << "S1=" << "\"" << _quadro << "\"";
|
1997-06-03 14:27:56 +00:00
|
|
|
cur->setfilter(filter);
|
|
|
|
}
|
|
|
|
|
|
|
|
m.set_handler(S_ALIQ + delta, aliq_handler);
|
|
|
|
m.set_handler(S_SOGG + delta, sogg_handler);
|
|
|
|
m.set_handler(S_ROPE + delta, rope_handler);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::user_create()
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
_codditta = get_firm_770();
|
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771231a");
|
1997-06-03 14:27:56 +00:00
|
|
|
_msk->set_handler(D_PROVENTI, dprov_handler);
|
|
|
|
_msk->set_handler(D_ALI, daliq_handler);
|
|
|
|
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1997-06-03 14:27:56 +00:00
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_a = (TSheet_field&) _msk->field(F_A);
|
1997-06-03 14:27:56 +00:00
|
|
|
init_sheet(p_a);
|
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_b = (TSheet_field&) _msk->field(F_B);
|
1997-06-03 14:27:56 +00:00
|
|
|
init_sheet(p_b);
|
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_c = (TSheet_field&) _msk->field(F_C);
|
1997-06-03 14:27:56 +00:00
|
|
|
init_sheet(p_c);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
_rel = new TRelation(LF_QUAF);
|
|
|
|
for (char prosp = 'D'; prosp <= 'H'; prosp++)
|
|
|
|
{
|
|
|
|
TString80 filter;
|
|
|
|
filter.format("CODDITTA=%ld|TIPOPRO=\"%c\"|NPROG=1",
|
|
|
|
_codditta, prosp);
|
|
|
|
const int alias = -PROSP_A + prosp - 'A';
|
2011-06-28 09:49:04 +00:00
|
|
|
_rel->add(LF_RIGHEF2, filter, 1, 0, alias);
|
1997-06-03 14:27:56 +00:00
|
|
|
_rel->write_enable(-alias);
|
|
|
|
}
|
|
|
|
|
2011-06-28 09:49:04 +00:00
|
|
|
TRectype dep(LF_RIGHEF2);
|
1996-06-17 08:46:44 +00:00
|
|
|
dep.zero();
|
|
|
|
dep.put("CODDITTA", _codditta);
|
|
|
|
dep.put("TIPOPRO", "A");
|
|
|
|
_prosp_a = new TRecord_array(dep, "NPROG");
|
|
|
|
dep.put("TIPOPRO", "B");
|
|
|
|
_prosp_b = new TRecord_array(dep, "NPROG");
|
|
|
|
dep.put("TIPOPRO", "C");
|
|
|
|
_prosp_c = new TRecord_array(dep, "NPROG");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_quadro == "F1")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771232a");
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1997-06-03 14:27:56 +00:00
|
|
|
TSheet_field& p_a = (TSheet_field&) _msk->field(F_A);
|
|
|
|
init_sheet(p_a);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
_rel = new TRelation(LF_QUAF1);
|
1997-06-03 14:27:56 +00:00
|
|
|
TString80 filter;
|
|
|
|
filter.format("CODDITTA=%ld|NPROG=1", _codditta);
|
2011-06-28 09:49:04 +00:00
|
|
|
_rel->add(LF_RIGHEF2, filter);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
2011-06-28 09:49:04 +00:00
|
|
|
TRectype dep(LF_RIGHEF2);
|
1996-06-17 08:46:44 +00:00
|
|
|
dep.zero();
|
|
|
|
dep.put("CODDITTA", _codditta);
|
1997-06-03 14:27:56 +00:00
|
|
|
dep.put("TIPOPRO", "A");
|
|
|
|
_prosp_a = new TRecord_array(dep, "NPROG");
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (_quadro == "F2")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771233a");
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1997-06-03 14:27:56 +00:00
|
|
|
TSheet_field& p_a = (TSheet_field&)_msk->field(F_A);
|
|
|
|
init_sheet(p_a);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
_rel = new TRelation(LF_QUAF2);
|
1997-06-03 14:27:56 +00:00
|
|
|
TString80 filter;
|
|
|
|
filter.format("CODDITTA=%ld|NPROG=1", _codditta);
|
|
|
|
_rel->add(LF_RIGHEF2, filter);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
TRectype dep(LF_RIGHEF2);
|
1996-06-17 08:46:44 +00:00
|
|
|
dep.zero();
|
|
|
|
dep.put("CODDITTA", _codditta);
|
1997-06-03 14:27:56 +00:00
|
|
|
dep.put("TIPOPRO", "A");
|
|
|
|
_prosp_a = new TRecord_array(dep, "NPROG");
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
|
|
|
|
_msk->disable(DLG_CANCEL); // disabilito Annulla nella toolbar
|
|
|
|
_msk->disable(DLG_NEWREC); // disabilito Nuovo nella toolbar
|
|
|
|
_msk->disable(DLG_DELREC); // disabilito Elimina nella toolbar
|
|
|
|
_msk->disable(DLG_FINDREC); // disabilito Ricerca nella toolbar
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::user_destroy()
|
|
|
|
{
|
|
|
|
delete _msk;
|
|
|
|
delete _rel;
|
1997-06-03 14:27:56 +00:00
|
|
|
delete _prosp_a;
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
delete _prosp_b;
|
1996-06-17 08:46:44 +00:00
|
|
|
delete _prosp_c;
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
if (_registra)
|
|
|
|
{
|
|
|
|
TRiporti rip;
|
|
|
|
rip.set(_quadro);
|
|
|
|
}
|
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1999-10-22 10:00:18 +00:00
|
|
|
const int PROSP_RIGHE = 16;
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
void TQuadroF::riempi_prospetto(const char prosp)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TSheet_field& ss = (TSheet_field&)_msk->field(F_A + prosp - 'A');
|
|
|
|
TRecord_array& prosp_x = *(prosp == 'B' ? _prosp_b : (prosp == 'C' ? _prosp_c : _prosp_a));
|
|
|
|
const int last = prosp_x.last_row();
|
2007-01-02 14:26:03 +00:00
|
|
|
int i;
|
|
|
|
for (i = 0; i < last; i++)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TRectype& r = prosp_x.row(i+1, TRUE);
|
|
|
|
TToken_string& row = ss.row(i);
|
|
|
|
if (_quadro == "F1")
|
|
|
|
{
|
|
|
|
row.add(r.get(RQF1_TIPOA));
|
|
|
|
row.add(r.get(RQF1_CODANAGR));
|
|
|
|
row.add("");
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
row.add(r.get(QUF_CODCAUS));
|
|
|
|
row.add(r.get(QUF_DENCAUS));
|
|
|
|
row.add(r.get(QUF_ALIQUOTA));
|
|
|
|
|
|
|
|
const real sogg = r.get_real(QUF_SOGRIT);
|
|
|
|
const real rope = r.get_real(QUF_ROPE);
|
|
|
|
const real somm = sogg - rope;
|
|
|
|
row.add(sogg.string());
|
|
|
|
row.add(rope.string());
|
|
|
|
row.add(somm.string());
|
|
|
|
|
|
|
|
ss.check_row(i);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
for (i = last; i < PROSP_RIGHE; i++)
|
|
|
|
ss.row(i);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
void TQuadroF::fill_ss()
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
riempi_prospetto('A');
|
1996-06-17 08:46:44 +00:00
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
riempi_prospetto('B');
|
|
|
|
riempi_prospetto('C');
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::read(TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::read(m);
|
|
|
|
if (err == NOERR)
|
1997-06-03 14:27:56 +00:00
|
|
|
{
|
|
|
|
_prosp_a->read(_prosp_a->key());
|
1996-06-17 08:46:44 +00:00
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
_prosp_b->read(_prosp_b->key());
|
|
|
|
_prosp_c->read(_prosp_c->key());
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
fill_ss();
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::write(const TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::write(m);
|
|
|
|
if (err == NOERR)
|
1997-06-03 14:27:56 +00:00
|
|
|
err = re_write(FALSE);
|
1996-06-17 08:46:44 +00:00
|
|
|
_registra = err == NOERR;
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::rewrite(const TMask& m)
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
int err = re_write(TRUE);
|
|
|
|
if (err == NOERR)
|
|
|
|
err = TRelation_application::rewrite(m);
|
|
|
|
_registra = err == NOERR;
|
|
|
|
return err;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
void TQuadroF::ss_pack(TSheet_field& ss) const
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
|
|
|
TString_array& rows = ss.rows_array();
|
|
|
|
|
|
|
|
const int max = rows.items();
|
|
|
|
for (int i = 0; i < max; i++)
|
|
|
|
{
|
|
|
|
TToken_string& r = (TToken_string&)rows[i];
|
1997-06-03 14:27:56 +00:00
|
|
|
const int pos = _quadro == "F1" ? 4 : 1;
|
|
|
|
const char* desc = r.get(pos);
|
|
|
|
bool destroy = desc == NULL;
|
|
|
|
if (!destroy)
|
|
|
|
{
|
|
|
|
const TFixed_string desccaus(desc);
|
|
|
|
destroy = desccaus.blank();
|
|
|
|
}
|
|
|
|
if (destroy)
|
1996-06-17 08:46:44 +00:00
|
|
|
rows.destroy(i, FALSE);
|
|
|
|
}
|
|
|
|
rows.pack();
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
int TQuadroF::salva_prospetto(char prosp, bool re)
|
|
|
|
{
|
|
|
|
TRecord_array& prosp_x = *(prosp == 'B' ? _prosp_b : (prosp == 'C' ? _prosp_c : _prosp_a));
|
|
|
|
prosp_x.destroy_rows();
|
|
|
|
prosp_x.renum_key("CODDITTA", _codditta);
|
|
|
|
|
|
|
|
TSheet_field& p_x = (TSheet_field&)_msk->field(F_A + prosp - 'A');
|
|
|
|
TString_array& rows = p_x.rows_array();
|
|
|
|
ss_pack(p_x);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
TString caus, desc, aliq, sogg, rope;
|
|
|
|
|
|
|
|
for (int i = 0; i < p_x.items(); i++)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TToken_string &riga = p_x.row(i);
|
|
|
|
|
|
|
|
const int delta = _quadro == "F1" ? 3 : 0;
|
|
|
|
caus = riga.get(delta);
|
|
|
|
desc = riga.get();
|
|
|
|
aliq = riga.get();
|
|
|
|
sogg = riga.get();
|
|
|
|
rope = riga.get();
|
|
|
|
|
|
|
|
const int row = i + 1;
|
1996-06-17 08:46:44 +00:00
|
|
|
TRectype& r = _prosp_a->row(row, TRUE);
|
1997-06-03 14:27:56 +00:00
|
|
|
r.zero(); // Probabilmente inutile
|
|
|
|
r.put (QUF_CODDITTA, _codditta); // Probabilmente inutile
|
|
|
|
r.put (QUF_TIPOPRO, prosp); // Probabilmente inutile
|
|
|
|
r.put (QUF_NPROG, row); // Probabilmente inutile
|
1996-06-17 08:46:44 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
if (app()._quadro == "F1")
|
|
|
|
{
|
|
|
|
r.put (RQF1_TIPOA, riga.get(0));
|
|
|
|
r.put (RQF1_CODANAGR, riga.get());
|
|
|
|
}
|
|
|
|
r.put (QUF_ALIQUOTA, aliq);
|
|
|
|
r.put (QUF_CODCAUS, caus);
|
|
|
|
r.put (QUF_DENCAUS, desc);
|
|
|
|
r.put (QUF_SOGRIT, sogg);
|
1996-06-17 08:46:44 +00:00
|
|
|
r.put (QUF_ROPE, rope);
|
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
return _prosp_a->write(re);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
int TQuadroF::re_write(bool re)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
int err = salva_prospetto('A', re);
|
1996-06-17 08:46:44 +00:00
|
|
|
if (_quadro == "F")
|
1997-06-03 14:27:56 +00:00
|
|
|
{
|
|
|
|
if (err == NOERR)
|
|
|
|
err = salva_prospetto('B', re);
|
|
|
|
if (err == NOERR)
|
|
|
|
err = salva_prospetto('C', re);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
return err;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::remove()
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
bool ok, ok_a, ok_b, ok_c;
|
1996-06-17 08:46:44 +00:00
|
|
|
ok = TRelation_application::remove();
|
1997-06-03 14:27:56 +00:00
|
|
|
ok_a = _prosp_a->remove() == NOERR;
|
|
|
|
_prosp_a->destroy_rows();
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
ok_b = _prosp_b->remove() == NOERR;
|
|
|
|
_prosp_b->destroy_rows();
|
1997-02-14 15:39:49 +00:00
|
|
|
ok_c = _prosp_c->remove() == NOERR;
|
|
|
|
_prosp_c->destroy_rows();
|
1997-06-03 14:27:56 +00:00
|
|
|
return _registra = ok && ok_a && ok_b && ok_c;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
else
|
1997-06-03 14:27:56 +00:00
|
|
|
return _registra = ok && ok_a;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
1997-02-07 16:25:24 +00:00
|
|
|
bool TQuadroF::mainmsk_handler(TMask& m, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_ESC)
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TOperable_field& f = m.focus_field();
|
|
|
|
m.set_focus_field(f.dlg());
|
|
|
|
}
|
1997-02-07 16:25:24 +00:00
|
|
|
return TRUE;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
bool TQuadroF::dprov_handler(TMask_field& f, KEY k)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
1997-06-03 14:27:56 +00:00
|
|
|
{
|
|
|
|
calcola_ritenuta_operata(f.mask(), 'D');
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
bool TQuadroF::daliq_handler(TMask_field& f, KEY k)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
calcola_ritenuta_operata(f.mask(), 'D');
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::aliq_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
TMask& m = f.mask();
|
|
|
|
TSheet_field* s = m.get_sheet();
|
|
|
|
char prosp = 'A' + s->dlg() - F_A;
|
|
|
|
calcola_ritenuta_operata(m, prosp);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::sogg_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
if (k == K_TAB && f.focusdirty())
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
TMask& m = f.mask();
|
|
|
|
TSheet_field* s = m.get_sheet();
|
|
|
|
char prosp = 'A' + s->dlg() - F_A;
|
|
|
|
calcola_ritenuta_operata(m, prosp);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
bool TQuadroF::rope_handler(TMask_field& f, KEY k)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
1996-06-17 08:46:44 +00:00
|
|
|
TMask& m = f.mask();
|
1997-06-03 14:27:56 +00:00
|
|
|
const real sogg = m.get_real(f.dlg()-1);
|
|
|
|
const real rope = m.get_real(f.dlg());
|
|
|
|
const real somm = sogg - rope;
|
|
|
|
m.set(f.dlg()+1, somm);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
void TQuadroF::calcola_ritenuta_operata(TMask& m, char prosp)
|
|
|
|
{
|
|
|
|
if (app()._msk->is_running())
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
int id_ali, id_sogg, id_rope, id_somm;
|
|
|
|
|
|
|
|
if (prosp == 'D')
|
|
|
|
{
|
|
|
|
id_ali = D_ALI;
|
|
|
|
id_sogg = D_PROVENTI;
|
|
|
|
id_rope = D_ROP;
|
|
|
|
id_somm = 0;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-06-03 14:27:56 +00:00
|
|
|
else // A, B, C
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-06-03 14:27:56 +00:00
|
|
|
const int delta = app()._quadro == "F1" ? 3 : 0;
|
|
|
|
id_ali = S_ALIQ + delta;
|
|
|
|
id_sogg = S_SOGG + delta;
|
|
|
|
id_rope = S_ROPE + delta;
|
|
|
|
id_somm = S_SOMM + delta;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
1997-01-13 08:52:09 +00:00
|
|
|
|
1997-06-03 14:27:56 +00:00
|
|
|
real sogg = m.get_real(id_sogg);
|
|
|
|
real ali = m.get_real(id_ali);
|
|
|
|
real rope = (sogg * ali) / 100.00;
|
|
|
|
rope.round();
|
|
|
|
|
|
|
|
if (rope != ZERO) // Evita di scrivere "0" nel campo (v. reqif_func nella msk)
|
|
|
|
m.set(id_rope, rope);
|
1996-06-17 08:46:44 +00:00
|
|
|
else
|
1997-06-03 14:27:56 +00:00
|
|
|
m.reset(id_rope);
|
|
|
|
|
|
|
|
if (id_somm)
|
|
|
|
{
|
|
|
|
real somma = sogg - rope;
|
|
|
|
m.set(id_somm, somma);
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int quadroF(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
const char quadro = *argv[2]; // 0 = F, 1 = F-1, 2 = F-2, 3 = G
|
|
|
|
// 4 = distinta G, 5 = G-1
|
|
|
|
if (quadro <= '2')
|
|
|
|
{
|
|
|
|
TQuadroF a(quadro);
|
|
|
|
a.run(argc, argv, a.taitol());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (quadro == '3')
|
1997-06-18 09:52:29 +00:00
|
|
|
quadro_g(argc,argv);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
if (quadro == '4')
|
1997-06-18 09:52:29 +00:00
|
|
|
distinta_quadro_g(argc,argv);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
if (quadro == '5')
|
1997-06-18 09:52:29 +00:00
|
|
|
quadro_g1(argc, argv);
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|