1996-06-17 08:46:44 +00:00
|
|
|
// 771231.cpp - Quadri F
|
|
|
|
//
|
|
|
|
#include <relapp.h>
|
|
|
|
#include <config.h>
|
|
|
|
#include <msksheet.h>
|
|
|
|
#include <sort.h>
|
|
|
|
#include <tabutil.h>
|
|
|
|
#include <progind.h>
|
1997-01-15 14:38:42 +00:00
|
|
|
#include <defmask.h>
|
|
|
|
#include <recarray.h>
|
1996-06-17 08:46:44 +00:00
|
|
|
#include "77lib.h"
|
|
|
|
#include "scperc.h"
|
|
|
|
#include "rpag.h"
|
|
|
|
#include "perc.h"
|
|
|
|
#include "prospe1.h"
|
|
|
|
#include "774200.h"
|
|
|
|
#include "771231a.h" // F, F-1
|
|
|
|
#include "771232.h" // quadro G
|
|
|
|
#include "quadrif.h"
|
|
|
|
#include "ca7.h"
|
|
|
|
|
|
|
|
#define S_CODC 101
|
|
|
|
#define S_DESC 102
|
|
|
|
#define S_ALIQ 103
|
|
|
|
#define S_SOGG 104
|
|
|
|
#define S_ROPE 105
|
|
|
|
// Solo nel prospetto A
|
|
|
|
#define S_TACC 106
|
|
|
|
#define S_SALD 107
|
|
|
|
#define S_VECC 108
|
|
|
|
|
|
|
|
const int RIGHE_PA = 6;
|
|
|
|
|
|
|
|
HIDDEN TString80 __dep;
|
|
|
|
|
|
|
|
void ss_pack(TSheet_field& ss);
|
|
|
|
void do_output(TString& quadro, TMask& m, const bool bOutputAliq);
|
|
|
|
bool check_caus(const char* codcau);
|
|
|
|
|
|
|
|
class TQuadroF : public TRelation_application
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
TRelation* _rel;
|
|
|
|
TMask* _msk;
|
|
|
|
int _anno_dic; // anno dichiarazione
|
|
|
|
long _codditta;
|
|
|
|
TLocalisamfile* _qf, *_rf;
|
|
|
|
TTable* _ca7;
|
|
|
|
TRecord_array* _prosp_a, *_prosp_b, *_prosp_c, *_prosp_d;
|
|
|
|
TRiporti _rip;
|
|
|
|
bool _registra;
|
|
|
|
char _tipo_prosp;
|
|
|
|
TString _sAliqPrec; // in set_notify per det.se cambiata aliq.
|
|
|
|
static real calcola_rope(TMask_field& f, const real& sogg, const bool force);
|
|
|
|
static bool codc_handler(TMask_field& f, KEY k);
|
|
|
|
static bool aliq_handler(TMask_field& f, KEY k);
|
|
|
|
static bool sogg_handler(TMask_field& f, KEY k);
|
|
|
|
static bool sald_handler(TMask_field& f, KEY k);
|
|
|
|
static bool vecc_handler(TMask_field& f, KEY k);
|
|
|
|
static bool tacc_handler(TMask_field& f, KEY k);
|
|
|
|
static bool eprov_handler(TMask_field& f, KEY k);
|
|
|
|
static bool ealiq_handler(TMask_field& f, KEY k);
|
|
|
|
static bool fsogg_handler(TMask_field& f, KEY k);
|
1997-02-07 16:25:24 +00:00
|
|
|
static bool faliq_handler(TMask_field& f, KEY k);
|
|
|
|
static bool mainmsk_handler(TMask& m, KEY k);
|
1996-06-17 08:46:44 +00:00
|
|
|
static bool a_notify(TSheet_field& s, int r, KEY k);
|
|
|
|
static bool b_notify(TSheet_field& s, int r, KEY k);
|
|
|
|
static bool c_notify(TSheet_field& s, int r, KEY k);
|
|
|
|
static bool d_notify(TSheet_field& s, int r, KEY k);
|
|
|
|
int salva_prosp_a(const TMask& m, bool re);
|
|
|
|
int salva_prosp_b(const TMask& m, bool re);
|
|
|
|
int salva_prosp_c(const TMask& m, bool re);
|
|
|
|
int salva_prosp_d(const TMask& m, bool re);
|
|
|
|
// const char* get_desc_cau(const char* codcau);
|
|
|
|
protected:
|
|
|
|
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&);
|
1997-01-13 08:52:09 +00:00
|
|
|
virtual void init_insert_mode (TMask&);
|
1996-06-17 08:46:44 +00:00
|
|
|
virtual void init_modify_mode (TMask&);
|
|
|
|
void init_mask (TMask&);
|
|
|
|
void fill_ss(TMask& m);
|
|
|
|
void riempi_prospetto(TMask& m, const char prosp);
|
1997-02-07 16:25:24 +00:00
|
|
|
int re_write(const TMask& m, bool re);
|
|
|
|
int elimina();
|
1996-06-17 08:46:44 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
TString16 _quadro, _aliq_caus;
|
|
|
|
TString80 _title, _desc_caus;
|
|
|
|
TSheet_field& sfProspA() const;
|
|
|
|
TSheet_field& sfProspB() const;
|
|
|
|
TSheet_field& sfProspC() const;
|
|
|
|
TSheet_field& sfProspD() const;
|
|
|
|
const char* taitol() { return (const char*)_title; }
|
|
|
|
|
|
|
|
TQuadroF(const char quadro='0');
|
|
|
|
virtual ~TQuadroF() {};
|
|
|
|
};
|
|
|
|
|
|
|
|
TSheet_field& TQuadroF::sfProspA() const
|
|
|
|
{
|
|
|
|
TSheet_field& s = (TSheet_field&)curr_mask().field(F_A);
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
TSheet_field& TQuadroF::sfProspB() const
|
|
|
|
{
|
|
|
|
TSheet_field& s = (TSheet_field&)curr_mask().field(F_B);
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
TSheet_field& TQuadroF::sfProspC() const
|
|
|
|
{
|
|
|
|
TSheet_field& s = (TSheet_field&)curr_mask().field(F_C);
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
TSheet_field& TQuadroF::sfProspD() const
|
|
|
|
{
|
|
|
|
TSheet_field& s = (TSheet_field&)curr_mask().field(F_D);
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQuadroF::TQuadroF(const char quadro)
|
|
|
|
{
|
|
|
|
_registra = FALSE;
|
|
|
|
_tipo_prosp = 'A';
|
|
|
|
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
|
|
|
_tipo_prosp = 'B';
|
|
|
|
break;
|
|
|
|
case '2':
|
|
|
|
_quadro = "F2";
|
1997-01-13 08:52:09 +00:00
|
|
|
_title = "Quadro F2";
|
1996-06-17 08:46:44 +00:00
|
|
|
_tipo_prosp = 'B';
|
|
|
|
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)
|
|
|
|
{
|
|
|
|
m.disable(DLG_DELREC); // disabilito Elimina nella toolbar
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::init_query_mode (TMask& m)
|
|
|
|
{
|
1997-01-13 08:52:09 +00:00
|
|
|
TString16 codditta;
|
|
|
|
codditta << _codditta;
|
|
|
|
TMask_field& f = m.field(F_CODDITTA);
|
|
|
|
f.set(codditta);
|
|
|
|
f.check();
|
1996-06-17 08:46:44 +00:00
|
|
|
m.send_key(K_AUTO_ENTER,0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::init_mask (TMask& m)
|
|
|
|
{
|
|
|
|
fill_ss(m);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::user_create()
|
|
|
|
{
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771231a");
|
1997-01-13 08:52:09 +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
|
|
|
_msk->set_handler(E_PROVENTI, eprov_handler);
|
|
|
|
_msk->set_handler(E_ALI, ealiq_handler);
|
|
|
|
_msk->set_handler(F_SOGG, fsogg_handler);
|
|
|
|
_msk->set_handler(F_ALI, faliq_handler);
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_a = (TSheet_field&) _msk->field(F_A);
|
|
|
|
p_a.set_notify(a_notify);
|
|
|
|
p_a.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_a.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_a.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
p_a.sheet_mask().set_handler(S_SALD, sald_handler);
|
|
|
|
p_a.sheet_mask().set_handler(S_VECC, vecc_handler);
|
|
|
|
p_a.sheet_mask().set_handler(S_TACC, tacc_handler);
|
|
|
|
TSheet_field& p_b = (TSheet_field&) _msk->field(F_B);
|
|
|
|
p_b.set_notify(b_notify);
|
|
|
|
p_b.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
TSheet_field& p_c = (TSheet_field&) _msk->field(F_C);
|
|
|
|
p_c.set_notify(c_notify);
|
|
|
|
p_c.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_c.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_c.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
TSheet_field& p_d = (TSheet_field&) _msk->field(F_D);
|
|
|
|
p_d.set_notify(d_notify);
|
|
|
|
p_d.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_d.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_d.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
|
|
|
|
_rel = new TRelation(LF_QUAF);
|
|
|
|
_rf = new TLocalisamfile(LF_RIGHEF);
|
|
|
|
|
|
|
|
_codditta = get_firm_770();
|
|
|
|
TRectype dep(_rf->curr());
|
|
|
|
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");
|
|
|
|
dep.put("TIPOPRO", "D");
|
|
|
|
_prosp_d = new TRecord_array(dep, "NPROG");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_quadro == "F1")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771232a");
|
1997-01-13 08:52:09 +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
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_b = (TSheet_field&) _msk->field(F_B);
|
|
|
|
p_b.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
|
|
|
|
_rel = new TRelation(LF_QUAF1);
|
|
|
|
_rf = new TLocalisamfile(LF_RIGHEF1);
|
|
|
|
|
|
|
|
_codditta = get_firm_770();
|
|
|
|
TRectype dep(_rf->curr());
|
|
|
|
dep.zero();
|
|
|
|
dep.put("CODDITTA", _codditta);
|
|
|
|
dep.put("TIPOPRO", "B");
|
|
|
|
_prosp_b = new TRecord_array(dep, "NPROG");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_quadro == "F2")
|
|
|
|
{
|
|
|
|
_msk = new TMask("771233a");
|
1997-01-13 08:52:09 +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
|
1997-02-07 16:25:24 +00:00
|
|
|
_msk->set_handler(mainmsk_handler);
|
1996-06-17 08:46:44 +00:00
|
|
|
TSheet_field& p_b = (TSheet_field&) _msk->field(F_B);
|
|
|
|
p_b.sheet_mask().set_handler(S_CODC, codc_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_ALIQ, aliq_handler);
|
|
|
|
p_b.sheet_mask().set_handler(S_SOGG, sogg_handler);
|
|
|
|
|
|
|
|
_rel = new TRelation(LF_QUAF2);
|
|
|
|
_rf = new TLocalisamfile(LF_RIGHEF2);
|
|
|
|
|
|
|
|
_codditta = get_firm_770();
|
|
|
|
TRectype dep(_rf->curr());
|
|
|
|
dep.zero();
|
|
|
|
dep.put("CODDITTA", _codditta);
|
|
|
|
dep.put("TIPOPRO", "B");
|
|
|
|
_prosp_b = new TRecord_array(dep, "NPROG");
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::user_destroy()
|
|
|
|
{
|
|
|
|
delete _msk;
|
|
|
|
delete _rel;
|
|
|
|
delete _rf;
|
|
|
|
delete _prosp_b;
|
|
|
|
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
delete _prosp_a;
|
|
|
|
delete _prosp_c;
|
|
|
|
delete _prosp_d;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_registra) _rip.set(_quadro);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
HIDDEN const int PROSP_RIGHE = 10;
|
|
|
|
|
|
|
|
/***********************************
|
|
|
|
const char* TQuadroF::get_desc_cau(const char* codcau)
|
|
|
|
{
|
|
|
|
TTable ca7("%ca7");
|
|
|
|
__dep = "";
|
|
|
|
ca7.zero();
|
|
|
|
ca7.put("CODTAB", codcau);
|
|
|
|
const int rc = ca7.read();
|
|
|
|
if (rc == NOERR)
|
|
|
|
__dep = ca7.get("S0");
|
|
|
|
return __dep;
|
|
|
|
}
|
|
|
|
**************************/
|
|
|
|
|
|
|
|
void TQuadroF::riempi_prospetto(TMask& m, const char prosp)
|
|
|
|
{
|
|
|
|
switch (prosp)
|
|
|
|
{
|
|
|
|
case 'A':
|
|
|
|
{
|
|
|
|
TSheet_field& ss = (TSheet_field&)m.field(F_A);
|
|
|
|
const int last_a = _prosp_a->last_row();
|
|
|
|
for (int i = 1; i <= last_a; i++)
|
|
|
|
{
|
|
|
|
TRectype& r = _prosp_a->row(i, TRUE);
|
|
|
|
TToken_string& row = ss.row(i-1);
|
|
|
|
TString16 codcau(r.get(QUF_CODCAUS));
|
|
|
|
TString descr_cau(get_desc_cau(codcau));
|
|
|
|
TString16 aliq (r.get(QUF_ALIQUOTA));
|
|
|
|
TString sogg (r.get(QUF_SOGRIT));
|
|
|
|
TString rope (r.get(QUF_ROPE));
|
|
|
|
row.add(codcau);
|
|
|
|
row.add(descr_cau);
|
|
|
|
row.add(aliq);
|
|
|
|
row.add(sogg);
|
|
|
|
row.add(rope);
|
|
|
|
// Solo se (prosp == 'A')
|
|
|
|
TString acc(r.get(QUF_ACCONTI));
|
|
|
|
TString ecc(r.get(QUF_VERSECC));
|
|
|
|
TString sal(r.get(QUF_VERSALDO));
|
|
|
|
row.add(acc);
|
|
|
|
row.add(sal);
|
|
|
|
row.add(ecc);
|
|
|
|
}
|
|
|
|
for (i = last_a; i < PROSP_RIGHE; i++)
|
1997-01-13 08:52:09 +00:00
|
|
|
ss.row(i);
|
|
|
|
// dava origine ad una indesiderata doppia visualizzazione
|
|
|
|
// ss.force_update();
|
1996-06-17 08:46:44 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 'B': {
|
|
|
|
TSheet_field& ss = (TSheet_field&)m.field(F_B);
|
|
|
|
const int last_b = _prosp_b->last_row();
|
|
|
|
for (int i = 1; i <= last_b; i++)
|
|
|
|
{
|
|
|
|
TRectype& r = _prosp_b->row(i, TRUE);
|
|
|
|
TToken_string& row = ss.row(i-1);
|
|
|
|
TString dep(50);
|
|
|
|
// if (_quadro != "F2")
|
|
|
|
dep = r.get(QUF_CODCAUS);
|
|
|
|
TString descr_cau(get_desc_cau(dep));
|
|
|
|
// else dep = r.get("DENFONDO");
|
|
|
|
TString16 aliq (r.get(QUF_ALIQUOTA));
|
|
|
|
TString sogg (r.get(QUF_SOGRIT));
|
|
|
|
TString rope (r.get(QUF_ROPE));
|
|
|
|
row.add(dep);
|
|
|
|
row.add(descr_cau);
|
|
|
|
row.add(aliq);
|
|
|
|
row.add(sogg);
|
|
|
|
row.add(rope);
|
|
|
|
}
|
|
|
|
for (i = last_b+1; i < PROSP_RIGHE; i++)
|
1997-01-13 08:52:09 +00:00
|
|
|
ss.row(i);
|
|
|
|
// dava origine ad una indesiderata doppia visualizzazione
|
|
|
|
// if (_quadro != "F")
|
|
|
|
// ss.force_update();
|
1996-06-17 08:46:44 +00:00
|
|
|
break; }
|
|
|
|
case 'C': {
|
|
|
|
TSheet_field& ss = (TSheet_field&)m.field(F_C);
|
|
|
|
const int last_c = _prosp_c->last_row();
|
|
|
|
for (int i = 1; i <= last_c; i++)
|
|
|
|
{
|
|
|
|
TRectype& r = _prosp_c->row(i, TRUE);
|
|
|
|
TToken_string& row = ss.row(i-1);
|
|
|
|
TString16 codcau(r.get(QUF_CODCAUS));
|
|
|
|
TString descr_cau(get_desc_cau(codcau));
|
|
|
|
TString16 aliq (r.get(QUF_ALIQUOTA));
|
|
|
|
TString sogg (r.get(QUF_SOGRIT));
|
|
|
|
TString rope (r.get(QUF_ROPE));
|
|
|
|
row.add(codcau);
|
|
|
|
row.add(descr_cau);
|
|
|
|
row.add(aliq);
|
|
|
|
row.add(sogg);
|
|
|
|
row.add(rope);
|
|
|
|
}
|
|
|
|
for (i = last_c+1; i < PROSP_RIGHE; i++)
|
|
|
|
ss.row(i);
|
|
|
|
break; }
|
|
|
|
case 'D': {
|
|
|
|
TSheet_field& ss = (TSheet_field&)m.field(F_D);
|
|
|
|
const int last_d = _prosp_d->last_row();
|
|
|
|
for (int i = 1; i <= last_d; i++)
|
|
|
|
{
|
|
|
|
TRectype& r = _prosp_d->row(i, TRUE);
|
|
|
|
TToken_string& row = ss.row(i-1);
|
|
|
|
TString16 codcau(r.get(QUF_CODCAUS));
|
|
|
|
TString descr_cau(get_desc_cau(codcau));
|
|
|
|
TString16 aliq (r.get(QUF_ALIQUOTA));
|
|
|
|
TString sogg (r.get(QUF_SOGRIT));
|
|
|
|
TString rope (r.get(QUF_ROPE));
|
|
|
|
row.add(codcau);
|
|
|
|
row.add(descr_cau);
|
|
|
|
row.add(aliq);
|
|
|
|
row.add(sogg);
|
|
|
|
row.add(rope);
|
|
|
|
}
|
|
|
|
for (i = last_d+1; i < PROSP_RIGHE; i++)
|
|
|
|
ss.row(i);
|
|
|
|
break; }
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TQuadroF::fill_ss(TMask& m)
|
|
|
|
{
|
|
|
|
riempi_prospetto(m, 'B');
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
riempi_prospetto(m, 'A');
|
|
|
|
riempi_prospetto(m, 'C');
|
|
|
|
riempi_prospetto(m, 'D');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::read(TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::read(m);
|
|
|
|
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
TRectype r = _rf->curr();
|
|
|
|
r.zero();
|
|
|
|
r.put("CODDITTA", m.get(F_CODDITTA));
|
|
|
|
r.put("TIPOPRO", "B");
|
|
|
|
_prosp_b->read(r);
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
r.put("TIPOPRO", "A");
|
|
|
|
_prosp_a->read(r);
|
|
|
|
r.put("TIPOPRO", "C");
|
|
|
|
_prosp_c->read(r);
|
|
|
|
r.put("TIPOPRO", "D");
|
|
|
|
_prosp_d->read(r);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fill_ss(m);
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::write(const TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::write(m);
|
|
|
|
if (err == NOERR)
|
|
|
|
err = re_write(m, FALSE);
|
|
|
|
_registra = err == NOERR;
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::rewrite(const TMask& m)
|
|
|
|
{
|
|
|
|
int err = re_write(m, TRUE);
|
|
|
|
int err1 = TRelation_application::rewrite(m);
|
|
|
|
// _registra = err == NOERR;
|
|
|
|
// 12.6.96 se compilo solo prosp.A del F-1 non fa i riporti
|
|
|
|
_registra = err == NOERR || err1 == NOERR;
|
|
|
|
return err == NOERR ? err1 : err;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ss_pack(TSheet_field& ss)
|
|
|
|
{
|
|
|
|
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];
|
|
|
|
TString16 codcaus(r.get(0));
|
|
|
|
codcaus.trim();
|
|
|
|
if (codcaus.empty())
|
|
|
|
rows.destroy(i, FALSE);
|
|
|
|
}
|
|
|
|
rows.pack();
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::salva_prosp_a(const TMask& m, bool re)
|
|
|
|
{
|
|
|
|
_prosp_a->destroy_rows();
|
|
|
|
if (m.insert_mode())
|
|
|
|
_prosp_a->renum_key("CODDITTA", m.get(F_CODDITTA));
|
|
|
|
|
|
|
|
TSheet_field& p_a = (TSheet_field&)m.field(F_A);
|
|
|
|
TString_array& rows = p_a.rows_array();
|
|
|
|
ss_pack(p_a);
|
|
|
|
|
|
|
|
for (int i = 0; i < p_a.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string& riga = p_a.row(i);
|
|
|
|
TString16 codcaus(riga.get(0));
|
|
|
|
if (codcaus.empty()) continue;
|
|
|
|
TString16 aliq (riga.get(2)); // salta descr. caus.
|
|
|
|
// const float aliq = atof(riga.get());
|
|
|
|
TString sogg (riga.get());
|
|
|
|
TString rope (riga.get());
|
|
|
|
TString totacc (riga.get());
|
|
|
|
TString vers_a_saldo (riga.get());
|
|
|
|
TString somm_versata (riga.get());
|
|
|
|
const int row = i + 1 ;
|
|
|
|
TRectype& r = _prosp_a->row(row, TRUE);
|
|
|
|
r.zero();
|
|
|
|
r.put (QUF_CODDITTA, (long)_codditta);
|
|
|
|
r.put (QUF_TIPOPRO, "A");
|
|
|
|
r.put (QUF_NPROG, i+1);
|
|
|
|
r.put (QUF_CODCAUS, codcaus);
|
|
|
|
r.put (QUF_ALIQUOTA , (const char*)aliq);
|
|
|
|
r.put (QUF_SOGRIT , sogg);
|
|
|
|
r.put (QUF_ROPE, rope);
|
|
|
|
r.put (QUF_ACCONTI, totacc);
|
|
|
|
r.put (QUF_VERSALDO, vers_a_saldo);
|
|
|
|
r.put (QUF_VERSECC, somm_versata);
|
|
|
|
}
|
|
|
|
return _prosp_a->write(re);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::salva_prosp_b(const TMask& m, bool re)
|
|
|
|
{
|
|
|
|
_prosp_b->destroy_rows();
|
|
|
|
TSheet_field& p_b = (TSheet_field&)m.field(F_B);
|
|
|
|
TString_array& rowsb = p_b.rows_array();
|
|
|
|
ss_pack(p_b);
|
|
|
|
|
|
|
|
if (m.insert_mode())
|
|
|
|
_prosp_b->renum_key("CODDITTA", m.get(F_CODDITTA));
|
|
|
|
|
|
|
|
for (int i = 0; i < p_b.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string &riga = p_b.row(i);
|
|
|
|
TString dep(40);
|
|
|
|
dep = riga.get(0); dep.trim();
|
|
|
|
// if (_quadro != "F2" && dep.empty()) continue;
|
|
|
|
if (dep.empty()) continue;
|
|
|
|
TString aliq (riga.get(2));
|
|
|
|
TString sogg (riga.get());
|
|
|
|
TString rope (riga.get());
|
|
|
|
|
|
|
|
const int row = i + 1 ;
|
|
|
|
TRectype& r = _prosp_b->row(row, TRUE);
|
|
|
|
r.zero();
|
|
|
|
r.put (QUF_CODDITTA, (long)_codditta);
|
|
|
|
r.put (QUF_TIPOPRO, "B");
|
|
|
|
r.put (QUF_NPROG, i+1);
|
|
|
|
r.put (QUF_ALIQUOTA, (const char*)aliq);
|
|
|
|
// r.put (_quadro == "F2" ? "DENFONDO" : "CODCAUS" , dep);
|
|
|
|
r.put (QUF_CODCAUS , dep);
|
|
|
|
r.put (QUF_SOGRIT , sogg);
|
|
|
|
r.put (QUF_ROPE, rope);
|
|
|
|
}
|
|
|
|
return _prosp_b->write(re);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::salva_prosp_c(const TMask& m, bool re)
|
|
|
|
{
|
|
|
|
_prosp_c->destroy_rows();
|
|
|
|
TSheet_field& p_c = (TSheet_field&)m.field(F_C);
|
|
|
|
TString_array& rowsc = p_c.rows_array();
|
|
|
|
ss_pack(p_c);
|
|
|
|
|
|
|
|
if (m.insert_mode())
|
|
|
|
_prosp_c->renum_key("CODDITTA", m.get(F_CODDITTA));
|
|
|
|
|
|
|
|
for (int i = 0; i < p_c.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string &riga = p_c.row(i);
|
|
|
|
TString16 codcaus(riga.get(0));
|
|
|
|
if (codcaus.empty()) continue;
|
|
|
|
TString16 aliq (riga.get(2));
|
|
|
|
TString sogg (riga.get());
|
|
|
|
TString rope (riga.get());
|
|
|
|
|
|
|
|
const int row = i + 1 ;
|
|
|
|
TRectype& r = _prosp_c->row(row, TRUE);
|
|
|
|
r.zero();
|
|
|
|
r.put (QUF_CODDITTA, (long)_codditta);
|
|
|
|
r.put (QUF_TIPOPRO, "C");
|
|
|
|
r.put (QUF_NPROG, i+1);
|
|
|
|
r.put (QUF_CODCAUS, codcaus);
|
|
|
|
r.put (QUF_ALIQUOTA , (const char*)aliq);
|
|
|
|
r.put (QUF_SOGRIT , sogg);
|
|
|
|
r.put (QUF_ROPE, rope);
|
|
|
|
}
|
|
|
|
return _prosp_c->write(re);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::salva_prosp_d(const TMask& m, bool re)
|
|
|
|
{
|
|
|
|
_prosp_d->destroy_rows();
|
|
|
|
TSheet_field& p_d = (TSheet_field&)m.field(F_D);
|
|
|
|
TString_array& rowsd = p_d.rows_array();
|
|
|
|
ss_pack(p_d);
|
|
|
|
|
|
|
|
if (m.insert_mode())
|
|
|
|
_prosp_d->renum_key("CODDITTA", m.get(F_CODDITTA));
|
|
|
|
|
|
|
|
for (int i = 0; i < p_d.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string &riga = p_d.row(i);
|
|
|
|
TString16 codcaus(riga.get(0));
|
|
|
|
if (codcaus.empty()) continue;
|
|
|
|
TString16 aliq (riga.get(2));
|
|
|
|
TString sogg (riga.get());
|
|
|
|
TString rope (riga.get());
|
|
|
|
|
|
|
|
const int row = i + 1 ;
|
|
|
|
TRectype& r = _prosp_d->row(row, TRUE);
|
|
|
|
r.zero();
|
|
|
|
r.put (QUF_CODDITTA, (long)_codditta);
|
|
|
|
r.put (QUF_TIPOPRO, "D");
|
|
|
|
r.put (QUF_NPROG, i+1);
|
|
|
|
r.put (QUF_CODCAUS, codcaus);
|
|
|
|
r.put (QUF_ALIQUOTA , (const char*)aliq);
|
|
|
|
r.put (QUF_SOGRIT , sogg);
|
|
|
|
r.put (QUF_ROPE, rope);
|
|
|
|
}
|
|
|
|
return _prosp_d->write(re);
|
|
|
|
}
|
|
|
|
|
|
|
|
int TQuadroF::re_write(const TMask& m, bool re)
|
|
|
|
{
|
|
|
|
int err_a, err_b, err_c, err_d;
|
|
|
|
|
|
|
|
err_b = salva_prosp_b(m, re);
|
|
|
|
if (_quadro == "F")
|
|
|
|
{
|
|
|
|
err_a = salva_prosp_a(m, re);
|
|
|
|
err_c = salva_prosp_c(m, re);
|
|
|
|
err_d = salva_prosp_d(m, re);
|
|
|
|
return err_a | err_b | err_c | err_d;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return err_b;
|
1997-02-07 16:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::remove()
|
|
|
|
{
|
|
|
|
bool ok, ok_a, ok_b, ok_c, ok_d;
|
|
|
|
ok = TRelation_application::remove();
|
|
|
|
ok_b = _prosp_b->remove();
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return ok && ok_b;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::a_notify(TSheet_field& s, int r, KEY k)
|
|
|
|
{
|
|
|
|
switch(k)
|
|
|
|
{
|
|
|
|
case K_SPACE:
|
|
|
|
{
|
|
|
|
TSheet_field& sfProspA = app().sfProspA();
|
|
|
|
TToken_string& row = sfProspA.row(r);
|
|
|
|
app()._sAliqPrec = row.get(2);
|
|
|
|
app()._sAliqPrec.trim();
|
|
|
|
}
|
|
|
|
case K_TAB:
|
|
|
|
app()._tipo_prosp = 'A';
|
|
|
|
break;
|
|
|
|
case K_INS:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::b_notify(TSheet_field& s, int r, KEY k)
|
|
|
|
{
|
|
|
|
switch(k)
|
|
|
|
{
|
|
|
|
case K_SPACE:
|
|
|
|
{
|
|
|
|
TSheet_field& sfProspB = app().sfProspB();
|
|
|
|
TToken_string& row = sfProspB.row(r);
|
|
|
|
app()._sAliqPrec = row.get(2);
|
|
|
|
app()._sAliqPrec.trim();
|
|
|
|
}
|
|
|
|
case K_TAB:
|
|
|
|
app()._tipo_prosp = 'B';
|
|
|
|
break;
|
|
|
|
case K_INS:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::c_notify(TSheet_field& s, int r, KEY k)
|
|
|
|
{
|
|
|
|
switch(k)
|
|
|
|
{
|
|
|
|
case K_SPACE:
|
|
|
|
{
|
|
|
|
TSheet_field& sfProspC = app().sfProspC();
|
|
|
|
TToken_string& row = sfProspC.row(r);
|
|
|
|
app()._sAliqPrec = row.get(2);
|
|
|
|
app()._sAliqPrec.trim();
|
|
|
|
}
|
|
|
|
case K_TAB:
|
|
|
|
app()._tipo_prosp = 'C';
|
|
|
|
break;
|
|
|
|
case K_INS:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::d_notify(TSheet_field& s, int r, KEY k)
|
|
|
|
{
|
|
|
|
switch(k)
|
|
|
|
{
|
|
|
|
case K_SPACE:
|
|
|
|
{
|
|
|
|
TSheet_field& sfProspD = app().sfProspD();
|
|
|
|
TToken_string& row = sfProspD.row(r);
|
|
|
|
app()._sAliqPrec = row.get(2);
|
|
|
|
app()._sAliqPrec.trim();
|
|
|
|
}
|
|
|
|
case K_TAB:
|
|
|
|
app()._tipo_prosp = 'D';
|
|
|
|
break;
|
|
|
|
case K_INS:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return TRUE;
|
1997-02-07 16:25:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::mainmsk_handler(TMask& m, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_ESC)
|
|
|
|
{
|
|
|
|
TOperable_field& f = m.focus_field();
|
|
|
|
m.set_focus_field(f.dlg());
|
|
|
|
}
|
|
|
|
return TRUE;
|
1996-06-17 08:46:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::eprov_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
app()._tipo_prosp = 'E';
|
|
|
|
const real sogg(f.mask().get(E_PROVENTI));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::ealiq_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
app()._tipo_prosp = 'E';
|
|
|
|
const real sogg(f.mask().get(E_PROVENTI));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::fsogg_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
app()._tipo_prosp = 'F';
|
|
|
|
const real sogg(f.mask().get(F_SOGG));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::faliq_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
app()._tipo_prosp = 'F';
|
|
|
|
const real sogg(f.mask().get(F_SOGG));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Se scrivo S_SALD devo pulire S_VECC e viceversa
|
|
|
|
bool TQuadroF::sald_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
TString16 dep(f.get());
|
|
|
|
if (dep.not_empty())
|
|
|
|
f.mask().reset(S_VECC);
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::vecc_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB && f.focusdirty())
|
|
|
|
{
|
|
|
|
TString16 dep(f.get());
|
|
|
|
if (dep.not_empty())
|
|
|
|
f.mask().reset(S_SALD);
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::tacc_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB)
|
|
|
|
{
|
|
|
|
const real sogg(f.mask().get(S_SOGG));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::aliq_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
if (k == K_TAB)
|
|
|
|
{
|
|
|
|
const real sogg(f.mask().get(S_SOGG));
|
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::sogg_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
1997-01-13 08:52:09 +00:00
|
|
|
if (k == K_TAB)
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-01-13 08:52:09 +00:00
|
|
|
const real sogg(f.mask().get(S_SOGG));
|
1996-06-17 08:46:44 +00:00
|
|
|
calcola_rope(f, sogg, f.focusdirty());
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void do_output(TString& quadro, TMask& m, const bool bOutputAliq)
|
|
|
|
{
|
|
|
|
m.set(S_DESC, app()._desc_caus);
|
|
|
|
if (bOutputAliq)
|
|
|
|
m.set(S_ALIQ, app()._aliq_caus);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool check_caus(const char* codcau)
|
|
|
|
{
|
|
|
|
TTable ca7("%ca7");
|
|
|
|
bool ok = FALSE;
|
|
|
|
TString& quadro = app()._quadro;
|
|
|
|
|
|
|
|
ca7.zero();
|
|
|
|
ca7.put(CA7_CODTAB, codcau);
|
|
|
|
ok = ca7.read();
|
|
|
|
if (ok != NOERR)
|
|
|
|
__dep = "";
|
|
|
|
else
|
|
|
|
__dep = ca7.get(CA7_CODQUA);
|
|
|
|
|
|
|
|
if (__dep != quadro)
|
|
|
|
return FALSE;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
app()._aliq_caus = ca7.get(CA7_ALIQ);
|
|
|
|
app()._desc_caus = ca7.get(CA7_DESCR);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TQuadroF::codc_handler(TMask_field& f, KEY k)
|
|
|
|
{
|
|
|
|
// Controlla codice quadro
|
|
|
|
if (k == K_TAB)
|
|
|
|
{
|
|
|
|
TString16 codcau(f.get());
|
|
|
|
if (codcau.empty())
|
|
|
|
return TRUE;
|
|
|
|
TMask& m = f.mask();
|
|
|
|
TString& quadro = app()._quadro;
|
|
|
|
const bool ok = check_caus(codcau);
|
|
|
|
TString sAliqCorr(m.get(S_ALIQ));
|
|
|
|
sAliqCorr.trim();
|
|
|
|
// Se sono diverse vuol dire che e' stata cambiata l'aliq.e non va scritta
|
|
|
|
bool bAliqCorrVuota = sAliqCorr.empty();
|
|
|
|
bool bOutputAliq = app()._sAliqPrec == sAliqCorr || bAliqCorrVuota;
|
|
|
|
if (ok)
|
|
|
|
do_output(quadro, f.mask(), bOutputAliq);
|
|
|
|
else
|
|
|
|
return warning_box("Causale con codice quadro diverso da %s", (const char*)quadro);
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
real TQuadroF::calcola_rope(TMask_field& f, const real& sogg, const bool force)
|
|
|
|
{
|
|
|
|
real pa_col4 = ZERO;
|
|
|
|
int id_rope, id_ali;
|
|
|
|
TMask& m = f.mask();
|
|
|
|
|
|
|
|
if (app()._tipo_prosp == 'E')
|
|
|
|
{
|
|
|
|
id_rope = E_ROP;
|
|
|
|
id_ali = E_ALI;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
if (app()._tipo_prosp == 'F')
|
|
|
|
{
|
|
|
|
id_rope = F_ROP;
|
|
|
|
id_ali = F_ALI;
|
|
|
|
}
|
|
|
|
else // prospetti A,B,C,D
|
|
|
|
{
|
|
|
|
id_rope = S_ROPE;
|
|
|
|
id_ali = S_ALIQ;
|
|
|
|
}
|
|
|
|
|
|
|
|
real ali = m.get_real(id_ali);
|
|
|
|
const real pa_col4_prec(m.get(id_rope)); // rit.operata
|
|
|
|
if (pa_col4_prec != ZERO && !force)
|
|
|
|
return pa_col4_prec;
|
|
|
|
|
|
|
|
pa_col4 = (sogg * ali) / 100.00;
|
|
|
|
pa_col4.round(0);
|
|
|
|
|
|
|
|
TString ropest(20);
|
|
|
|
if (pa_col4 != ZERO) // Evita di scrivere "0" nel campo (v. reqif_func nella msk)
|
|
|
|
{
|
|
|
|
ropest = pa_col4.string();
|
|
|
|
m.set(id_rope, ropest);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
m.reset(id_rope);
|
|
|
|
|
1997-01-13 08:52:09 +00:00
|
|
|
// Nel prospetto A oltre alla ritenuta operata setto anche S_SALD
|
1997-02-07 16:25:24 +00:00
|
|
|
if ((app()._tipo_prosp == 'A') && (m.get_sheet()->dlg() == F_A))
|
1996-06-17 08:46:44 +00:00
|
|
|
{
|
1997-01-13 08:52:09 +00:00
|
|
|
const real pa_col5(f.mask().get(S_TACC));
|
|
|
|
real pa_col6 = pa_col4 - pa_col5;
|
|
|
|
|
1996-06-17 08:46:44 +00:00
|
|
|
if (pa_col6 > ZERO)
|
|
|
|
{
|
|
|
|
TString col6_st(pa_col6.string());
|
|
|
|
m.set(S_SALD, col6_st);
|
|
|
|
m.reset(S_VECC);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// Sempre positiva, la somma versata in ecc.
|
|
|
|
pa_col6 *= -1.00;
|
|
|
|
TString col7_st(pa_col6.string());
|
|
|
|
m.set(S_VECC, col7_st);
|
|
|
|
m.reset(S_SALD);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return pa_col4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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')
|
|
|
|
{
|
|
|
|
TQuadroG a(quadro);
|
|
|
|
a.run(argc, argv, a.taitol());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (quadro == '4')
|
|
|
|
{
|
|
|
|
TDistintaQuadroG a;
|
|
|
|
a.run(argc, argv, a.taitol());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (quadro == '5')
|
|
|
|
{
|
|
|
|
TQuadroG1 a;
|
|
|
|
a.run(argc, argv, a.taitol());
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|