Corretto
git-svn-id: svn://10.65.10.50/trunk@3222 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
304535ad67
commit
53749b5677
@ -1,4 +1,3 @@
|
||||
<<<<<<< quadb_b1.cpp
|
||||
// quadb_b1.cpp
|
||||
#include <relapp.h>
|
||||
#include <urldefid.h>
|
||||
@ -289,7 +288,7 @@ void TQuadriBB1_application::init_mask(TMask& m)
|
||||
const long codip = _msk[0]->get_long(QBF_CODDIP);
|
||||
if (codip==0L)
|
||||
return;
|
||||
if (is_erede(codditta,codip) && modifica(m))
|
||||
if (is_erede(codditta,codip)) // && modifica(m))
|
||||
{
|
||||
m.disable(-GROUP_ALL);
|
||||
m.enable(-GROUP_EREDE);
|
||||
@ -596,600 +595,3 @@ bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
=======
|
||||
// quadb_b1.cpp
|
||||
#include <relapp.h>
|
||||
#include <urldefid.h>
|
||||
#include <tabutil.h>
|
||||
#include <config.h>
|
||||
#include "dipend.h"
|
||||
#include "774200.h"
|
||||
#include "77lib.h"
|
||||
#include "quadrob.h"
|
||||
#include "quadrob1.h"
|
||||
#include "77qb.h"
|
||||
#include "77qb1.h"
|
||||
|
||||
class TQuadriBB1_application : public TRelation_application
|
||||
{
|
||||
static bool codditta77_handler (TMask_field& m, KEY k);
|
||||
static bool PrimoNprogLibero (TMask& m, const long codditta, const long coddip);
|
||||
static bool CodDipHandler (TMask_field& m, KEY k);
|
||||
static bool NprogExitHandler (TMask_field& m, KEY k);
|
||||
static bool QBTotRedImpHandler (TMask_field& f, KEY k);
|
||||
static bool QBAmmRopeHandler (TMask_field& f, KEY k);
|
||||
static bool QBTotIndennHandler (TMask_field& f, KEY k);
|
||||
static void BB1SettaCognomeNome(TMask& m);
|
||||
const char* _maskname;
|
||||
int _num;
|
||||
int _pos_quadro; // posizione nell'array dei quadri. Usato in set_comp
|
||||
TString16 _quadro;
|
||||
TRiporti _rip;
|
||||
TRelation* _rel;
|
||||
TMask* _msk[2];
|
||||
bool _registra;
|
||||
int _anno_dic;
|
||||
int _mode;
|
||||
bool _MaskConAnnoDic, _MaskConCodditta;
|
||||
bool MaskConAnnoDic() const;
|
||||
bool MaskConCodditta() const { return _MaskConCodditta; }
|
||||
bool QuadroB() const { return _num == LF_QUAB; }
|
||||
bool QuadroB1() const { return _num == LF_QUAB1; }
|
||||
bool CheckImporti(const TMask& m);
|
||||
bool EsisteGiaCodDip(const TMask& m);
|
||||
bool EsisteGiaRecordDip(const TMask& m);
|
||||
long _codditta;
|
||||
long _lCodDip;
|
||||
int _iNprog;
|
||||
TString _sCognome, _sNome;
|
||||
void init_mask(TMask&);
|
||||
|
||||
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 void on_config_change();
|
||||
virtual TMask* get_mask(int);
|
||||
virtual bool changing_mask(int);
|
||||
TMask* load_mask(int n);
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
virtual void init_query_mode(TMask&);
|
||||
virtual void init_query_insert_mode(TMask&);
|
||||
virtual void init_insert_mode(TMask&);
|
||||
virtual void init_modify_mode(TMask&);
|
||||
|
||||
public:
|
||||
TQuadriBB1_application(const char* name, const int num, const char* quadro);
|
||||
};
|
||||
|
||||
TQuadriBB1_application::TQuadriBB1_application(const char* name, const int num, const char* quadro)
|
||||
: _maskname(name), _num(num), _mode(0),
|
||||
_MaskConCodditta(FALSE), _MaskConAnnoDic(FALSE),
|
||||
_rel(NULL), _quadro(quadro)
|
||||
{
|
||||
memset(_msk, 0, sizeof(_msk));
|
||||
switch (_num)
|
||||
{
|
||||
case LF_QUAB:
|
||||
_pos_quadro = B;
|
||||
break;
|
||||
case LF_QUAB1:
|
||||
_pos_quadro = B1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
TQuadriBB1_application& app() { return (TQuadriBB1_application&)main_app(); }
|
||||
|
||||
bool TQuadriBB1_application::changing_mask(int mode)
|
||||
{
|
||||
if (mode == MODE_QUERY)
|
||||
return _mode != MODE_QUERY;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TMask* TQuadriBB1_application::get_mask(int mode)
|
||||
{
|
||||
const int m = (mode == MODE_QUERY) ? 0 : 1;
|
||||
_mode = mode;
|
||||
return load_mask(m);
|
||||
}
|
||||
|
||||
TMask* TQuadriBB1_application::load_mask(int n)
|
||||
{
|
||||
if (_msk[n] != NULL)
|
||||
return _msk[n];
|
||||
|
||||
TFilename name("77qb");
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
switch (_num)
|
||||
{
|
||||
case LF_QUAB:
|
||||
name << 'a';
|
||||
break;
|
||||
case LF_QUAB1:
|
||||
name << "1a";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (_num)
|
||||
{
|
||||
case LF_QUAB:
|
||||
name << 'b';
|
||||
break;
|
||||
case LF_QUAB1:
|
||||
name << "1b";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
TMask* m = new TMask(name);
|
||||
m->set_handler(CODDITTA77, codditta77_handler);
|
||||
|
||||
switch (n)
|
||||
{
|
||||
case 0:
|
||||
if (QuadroB())
|
||||
{
|
||||
m->set_handler(QBF_CODDIP_QB, CodDipHandler);
|
||||
m->set_handler(QBF_CODDIP_ANAG, CodDipHandler);
|
||||
set_search_field(QBF_NPROG);
|
||||
}
|
||||
else
|
||||
{
|
||||
m->set_handler(QB1F_CODDIP_QB1, CodDipHandler);
|
||||
m->set_handler(QB1F_CODDIP_ANAG, CodDipHandler);
|
||||
set_search_field(QB1F_NPROG);
|
||||
}
|
||||
m->set_handler(QuadroB() ? QBF_NPROG : QB1F_NPROG, NprogExitHandler);
|
||||
break;
|
||||
case 1:
|
||||
if (m)
|
||||
if (QuadroB())
|
||||
{
|
||||
m->set_handler(QBF_TOTIMP, QBTotRedImpHandler);
|
||||
m->set_handler(QBF_ROPE, QBAmmRopeHandler);
|
||||
m->set_handler(QBF_AMMNETTO, QBTotIndennHandler);
|
||||
m->set_handler(QBF_AMMNETTO2, QBTotIndennHandler);
|
||||
m->set_handler(QBF_CONTLAV, QBTotIndennHandler);
|
||||
m->set_handler(QBF_TFR7494, QBTotIndennHandler);
|
||||
m->set_handler(QBF_INDEN7494, QBTotIndennHandler);
|
||||
}
|
||||
m->disable(DLG_FINDREC);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return _msk[n] = m;
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::MaskConAnnoDic() const
|
||||
{
|
||||
return _MaskConAnnoDic;
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::on_config_change()
|
||||
{
|
||||
TConfig conf(CONFIG_STUDIO);
|
||||
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year());
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::user_create()
|
||||
{
|
||||
_registra = FALSE;
|
||||
_rel = new TRelation(_num);
|
||||
_codditta = get_firm_770();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::user_destroy()
|
||||
{
|
||||
if (_quadro != "")
|
||||
if (_registra)
|
||||
_rip.set(_quadro);
|
||||
if (_msk[1] != NULL) delete _msk[1];
|
||||
if (_msk[0] != NULL) delete _msk[0];
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Q.B. Controlla che ci sia diverso da ZERO il tot.red.imp.
|
||||
bool TQuadriBB1_application::CheckImporti(const TMask& m)
|
||||
{
|
||||
real TotRedImp(m.get(QBF_TOTIMP));
|
||||
return TotRedImp != ZERO;
|
||||
}
|
||||
|
||||
// Controlla se esiste gia' un record con lo stesso cod.dip.
|
||||
bool TQuadriBB1_application::EsisteGiaCodDip(const TMask& m)
|
||||
{
|
||||
TLocalisamfile q(_num);
|
||||
const long codip = m.get_long(QuadroB()? QBF_CODDIP : QB1F_CODDIP);
|
||||
q.zero();
|
||||
q.put(QB_CODDITTA, _codditta);
|
||||
q.put(QB_CODDIP, codip);
|
||||
TRectype dep(q.curr());
|
||||
q.read(_isgteq);
|
||||
const bool bEq = q.curr() == dep;
|
||||
return bEq;
|
||||
}
|
||||
|
||||
// Controlla se esiste gia' una chiave completa
|
||||
bool TQuadriBB1_application::EsisteGiaRecordDip(const TMask& m)
|
||||
{
|
||||
TLocalisamfile q(_num);
|
||||
const long codip = m.get_long(QuadroB()? QBF_CODDIP : QB1F_CODDIP);
|
||||
const long nprog = m.get_long(QuadroB()? QBF_NPROG : QB1F_NPROG);
|
||||
q.zero();
|
||||
q.put(QB_CODDITTA, _codditta);
|
||||
q.put(QB_CODDIP, codip);
|
||||
q.put(QB_NPROG, nprog);
|
||||
TRectype dep(q.curr());
|
||||
const bool bEq = q.read() == NOERR;
|
||||
return bEq;
|
||||
}
|
||||
|
||||
int TQuadriBB1_application::rewrite(const TMask& m)
|
||||
{
|
||||
m.autosave(_rel);
|
||||
const int err = _rel->rewrite();
|
||||
_registra = err == NOERR;
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
int TQuadriBB1_application::read(TMask& m)
|
||||
{
|
||||
int err;
|
||||
_rel->lfile().put("CODDITTA", (long)_codditta);
|
||||
_rel->lfile().put("CODDIP", (long)_lCodDip);
|
||||
_rel->lfile().put("NPROG", _iNprog);
|
||||
err = _rel->read();
|
||||
return err;
|
||||
}
|
||||
*/
|
||||
|
||||
int TQuadriBB1_application::write(const TMask& m)
|
||||
{
|
||||
m.autosave(_rel);
|
||||
if (QuadroB1())
|
||||
if (EsisteGiaRecordDip(m))
|
||||
return warning_box("E' già presente un record per questo dipendente");
|
||||
const int err = _rel->write();
|
||||
_registra = err == NOERR;
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::remove()
|
||||
{
|
||||
_registra = TRUE;
|
||||
return TRelation_application::remove();
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::init_mask(TMask& m)
|
||||
{
|
||||
if (QuadroB())
|
||||
{
|
||||
const long codditta = m.get_long(QBF_CODDITTA);
|
||||
const long codip = m.get_long(QBF_CODDIP);
|
||||
if (codip==0L)
|
||||
return;
|
||||
if (is_erede(codditta,codip) && modifica(m))
|
||||
{
|
||||
m.disable(-GROUP_ALL);
|
||||
m.enable(-GROUP_EREDE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.enable(-GROUP_ALL);
|
||||
if (is_deceduto(codditta,codip) || is_dipendente(codditta,codip))
|
||||
m.disable(-GROUP_DIPDEC);
|
||||
else
|
||||
m.enable(-GROUP_DIPDEC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::init_modify_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
/*
|
||||
if (QuadroB())
|
||||
{
|
||||
m.set(QBF_CODDIP, _lCodDip);
|
||||
m.set(QBF_COGNOME, _sCognome);
|
||||
m.set(QBF_NOME, _sNome);
|
||||
m.set(QBF_NPROG, _iNprog);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.set(QB1F_CODDIP, _lCodDip);
|
||||
m.set(QB1F_COGNOME, _sCognome);
|
||||
m.set(QB1F_NOME, _sNome);
|
||||
m.set(QB1F_NPROG, _iNprog);
|
||||
}*/
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::init_insert_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::init_query_mode(TMask& m)
|
||||
{
|
||||
m.set(ANNODIC77, _anno_dic);
|
||||
if (QuadroB())
|
||||
{
|
||||
m.send_key(K_SHIFT+K_CTRL+'h', -QBG_ANADIP); // nasconde dipend.
|
||||
m.send_key(K_SHIFT+K_CTRL+'s', -QBG_QUADROB); // ricerca su B
|
||||
}
|
||||
else
|
||||
{
|
||||
m.send_key(K_SHIFT+K_CTRL+'h', -QB1G_ANADIP); // nasconde dipend.
|
||||
m.send_key(K_SHIFT+K_CTRL+'s', -QB1G_QUADROB); // ricerca su B
|
||||
}
|
||||
}
|
||||
|
||||
void TQuadriBB1_application::init_query_insert_mode(TMask& m)
|
||||
{
|
||||
m.set(ANNODIC77, _anno_dic);
|
||||
if (QuadroB())
|
||||
{
|
||||
m.send_key(K_SHIFT+K_CTRL+'h', -QBG_ANADIP); // group 2 Nasconde QUADROB
|
||||
m.send_key(K_SHIFT+K_CTRL+'s', -QBG_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI
|
||||
}
|
||||
else
|
||||
{
|
||||
m.send_key(K_SHIFT+K_CTRL+'h', -QB1G_ANADIP); // group 2 Nasconde QUADROB
|
||||
m.send_key(K_SHIFT+K_CTRL+'s', -QB1G_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI
|
||||
}
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::codditta77_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TString16 codditta; codditta << app()._codditta;
|
||||
TMask& m = f.mask();
|
||||
if (codditta != "0")
|
||||
{
|
||||
m.set(CODDITTA77, codditta);
|
||||
m.field(CODDITTA77).check();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// 2 modi :
|
||||
// RUN,773,-1,771230m,89,"Prospetto del Quadro E1","E1" [771230i.uml]
|
||||
// oppure
|
||||
// 773 -1 menu_st "Stampe dichiarazioni" [prassi.mnu]
|
||||
// QUADRO N:
|
||||
// 773,-2,77qn,72,"Quadro N","N"
|
||||
///////////////////////////////////////////////////////////
|
||||
int quadriB_B1(int argc, char* argv[])
|
||||
{
|
||||
TFilename mask;
|
||||
int num = 0;
|
||||
if (argc > 1)
|
||||
mask = argv[2];
|
||||
num = atoi(argv[3]);
|
||||
const char* title = argv[4];
|
||||
const char* quadro = argv[5];
|
||||
TQuadriBB1_application a(mask, num, quadro);
|
||||
a.run(argc, argv, title ? title : "Test Relation Application");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// CodDipHandler
|
||||
//
|
||||
// 1 - Controlla che il codice dipendente esista
|
||||
// 2 - Propone il primo progressivo disponibile per quel codice
|
||||
//
|
||||
bool TQuadriBB1_application::CodDipHandler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (!m.is_running()) return TRUE;
|
||||
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
const long codip = atol(f.get());
|
||||
if (codip==0L)
|
||||
return TRUE;
|
||||
|
||||
if (!esiste_dipendente(app()._codditta, codip))
|
||||
return f.warning_box("Dipendente inesistente");
|
||||
}
|
||||
|
||||
if (k == K_TAB)
|
||||
{
|
||||
const long codip = atol(f.get());
|
||||
if (codip==0L)
|
||||
return TRUE;
|
||||
|
||||
if (!esiste_dipendente(app()._codditta, codip))
|
||||
return f.warning_box("Dipendente inesistente");
|
||||
|
||||
PrimoNprogLibero(m, app()._codditta, codip);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Compila cognome e nome se vuoti
|
||||
void TQuadriBB1_application::BB1SettaCognomeNome(TMask& m)
|
||||
{
|
||||
const int iDlgCognome = app().QuadroB() ? QBF_COGNOME : QB1F_COGNOME;
|
||||
const int iDlgNome = app().QuadroB() ? QBF_NOME : QB1F_NOME;
|
||||
const int iDlgNProg = app().QuadroB() ? QBF_NPROG : QB1F_NPROG;
|
||||
const int iProg = m.get_int(iDlgNProg);
|
||||
TString sCognome(m.get(iDlgCognome));
|
||||
TString sNome;
|
||||
if (app()._lCodDip != 0L)
|
||||
{
|
||||
TLocalisamfile dip (LF_DIPEND);
|
||||
dip.zero();
|
||||
dip.put(DIP_CODDITTA, app()._codditta);
|
||||
dip.put(DIP_CODIP, app()._lCodDip);
|
||||
if (dip.read() == NOERR)
|
||||
{
|
||||
sCognome = dip.get("COGNOME");
|
||||
sNome = dip.get("NOME");
|
||||
app()._sCognome = sCognome;
|
||||
app()._sNome = sNome;
|
||||
app()._iNprog = iProg;
|
||||
m.set(iDlgCognome, sCognome);
|
||||
m.set(iDlgNome, sNome);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::NprogExitHandler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (!m.is_running()) return TRUE;
|
||||
|
||||
if (k == K_TAB)
|
||||
{
|
||||
TString nprog(f.get());
|
||||
if (nprog.not_empty())
|
||||
{
|
||||
const int ID_CODDIP = app().QuadroB()? QBF_CODDIP : QB1F_CODDIP;
|
||||
const long codip = app()._lCodDip = m.get_long(ID_CODDIP);
|
||||
const long codditta = app()._codditta;
|
||||
// const long codip = m.get_long(ID_CODDIP);
|
||||
// const long codditta = app()._codditta;
|
||||
|
||||
if (codip==0L)
|
||||
return TRUE;
|
||||
|
||||
// Nel B1 e nel B (per gli eredi) può esserci un solo record per dipendente
|
||||
if (app().QuadroB1() || (app().QuadroB() && is_erede(codditta,codip)) )
|
||||
// Se esiste gia' un record per questo dipendente MA NON la chiave completa
|
||||
// (ora presente nella maschera) rifiuta il record
|
||||
// (impedisce cioe' di andare in inserimento, a meno che non sia la prima
|
||||
// volta, cioe' a meno che non esista ancora nessun record per il dip.
|
||||
// (questo caso e' segnalato dal fallimento della EsisteGiaCodDip) )
|
||||
if (app().EsisteGiaCodDip(m) && !app().EsisteGiaRecordDip(m))
|
||||
return warning_box("Esiste già una riga per questo dipendente");
|
||||
|
||||
// Compila cognome e nome se vuoti
|
||||
BB1SettaCognomeNome(m);
|
||||
m.stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::PrimoNprogLibero(TMask& m, const long codditta, const long codip)
|
||||
{
|
||||
// Propone il primo numero disponibile
|
||||
if (codip != 0L)
|
||||
{
|
||||
long nprog = 0L;
|
||||
const int id_nprog = app().QuadroB() ? QBF_NPROG : QB1F_NPROG;
|
||||
const bool erede = is_erede(codditta,codip);
|
||||
bool EsisteGiaDip = FALSE;
|
||||
TLocalisamfile qb(app()._num);
|
||||
qb.zero();
|
||||
qb.put(QB_CODDITTA, codditta);
|
||||
qb.put(QB_CODDIP, codip);
|
||||
TRectype dep(qb.curr());
|
||||
qb.read(_isgteq);
|
||||
TRecnotype lPosPrec = qb.recno();
|
||||
for ( ; !qb.eof(); qb.next())
|
||||
{
|
||||
if (qb.curr() > dep) break;
|
||||
EsisteGiaDip = TRUE;
|
||||
nprog = qb.get_long(QB_NPROG);
|
||||
}
|
||||
qb.readat(lPosPrec);
|
||||
|
||||
// Nel B se e' un erede si puo' solo andare in modifica
|
||||
// Nel B1 è consentito un solo record per dipendente
|
||||
if ( (nprog == 0) || (app().QuadroB1() && !EsisteGiaDip) ||
|
||||
(app().QuadroB() && !erede) )
|
||||
nprog++;
|
||||
|
||||
TString16 nprog_str; nprog_str << nprog;
|
||||
m.set(id_nprog, nprog_str);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// QUADRO B
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
bool TQuadriBB1_application::QBTotRedImpHandler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (k == K_ENTER && !ricerca(m))
|
||||
{
|
||||
const long codditta = m.get_long(QBF_CODDITTA);
|
||||
const long codip = m.get_long(QBF_CODDIP);
|
||||
if (!is_erede(codditta,codip))
|
||||
{
|
||||
real totimp(f.get());
|
||||
if (totimp == ZERO)
|
||||
return f.warning_box("Il totale reddito imponibile non può essere nullo");
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TQuadriBB1_application::QBAmmRopeHandler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (k == K_ENTER && !ricerca(m))
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const long codditta = m.get_long(QBF_CODDITTA);
|
||||
const long codip = m.get_long(QBF_CODDIP);
|
||||
if (!is_erede(codditta,codip))
|
||||
{
|
||||
real totimp(m.get(QBF_TOTIMP));
|
||||
real rope(f.get());
|
||||
if (rope > totimp)
|
||||
return f.warning_box("Il totale ritenute non può essere maggiore del totale reddito imponibile");
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// 23.5.96 Calcola totale indennità
|
||||
bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
{
|
||||
const bool ricalcola = f.focusdirty();
|
||||
if (ricalcola)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
real c20 = m.get_real(QBF_AMMNETTO);
|
||||
real c24 = m.get_real(QBF_AMMNETTO2);
|
||||
real c25 = m.get_real(QBF_CONTLAV);
|
||||
real c26 = m.get_real(QBF_TFR7494);
|
||||
real c27 = m.get_real(QBF_INDEN7494);
|
||||
|
||||
real c28 = c20 + c24 - c25 + c26 + c27;
|
||||
TString c28s(c28.string());
|
||||
m.set(QBF_TIND7494, c28s);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
>>>>>>> 1.3
|
||||
>>>>>>> 1.4
|
||||
|
Loading…
x
Reference in New Issue
Block a user