Correzioni fine luglio

git-svn-id: svn://10.65.10.50/trunk@3263 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1996-07-29 10:56:41 +00:00
parent 76490bb089
commit f8073f1e33
25 changed files with 1550 additions and 924 deletions

View File

@ -354,14 +354,13 @@ void TSchedaPercipienti::compila_testata(TMask& m)
{
m.set(F_DATADOC, _coll._datadoc);
m.set(F_NUMDOC, _coll._numdoc);
m.set(F_IVA, _coll._imposte.string());
m.set(F_SPESE, _coll._spese.string());
m.set(F_COMPENS, _coll._compenso.string());
switch (tipo_coll())
{
case ritenuta:
case occasionale:
m.set(F_COMPENS, _coll._compenso.string());
m.set(F_TOTDOC, _coll._compenso.string());
break;
@ -380,67 +379,6 @@ bool TSchedaPercipienti::coll_variazione() const
tipo_coll() == pagamento_piu_perc;
}
void TSchedaPercipienti::init_mask(TMask& m)
{
update_lasts(m);
if (tipo_coll() != nessuno)
{
const bool variazione = coll_variazione();
if (!variazione) compila_testata(m);
switch (tipo_coll())
{
case pagamento:
case ritenuta:
// Compilo riga di pagamento SOLO SE NON ce ne sono gia'..
if ( (tipo_coll() == pagamento && _rel->pag_items() == 0)
||
tipo_coll() == ritenuta )
{
const real totrit(m.get(F_TOTRIT));
const real totdoc(m.get(F_TOTDOC));
const real compenso(m.get(F_COMPENS));
const real spese(m.get(F_SPESE));
if ( (tipo_coll() == pagamento && ( _coll._compenso + totrit == totdoc) )
||
(tipo_coll() == ritenuta) )
{
TSheet_field& pags = (TSheet_field&)m.field(F_PAGAMENTI);
TRectype rpag(_rel->pag(0));
rpag.zero();
real& imponibile = _coll._compenso;
rpag.put("DATAPAG", _coll._datadoc);
rpag.put("COMPENSO", compenso);
const real impo_calc = calcola_imponibile(compenso);
rpag.put("IMPONIBILE", impo_calc);
rpag.put("SPESA", spese);
const real rite_calc = calcola_ritenuta(impo_calc);
rpag.put("RITENUTA", rite_calc);
real perc = (rite_calc * 100) / impo_calc;
perc.round(2);
rpag.put("PERC", perc);
rpag.put("NUMVERS", (long)-1);
const real netto = compenso - rite_calc + spese;
rpag.put("NETTO", netto);
// Update spreadsheet
rec2row(pags.row(0), rpag, 0);
pags.force_update();
}
}
break;
default:
break;
}
}
fill_sheet(m);
}
void TSchedaPercipienti::get_ragsoc(const char* tipoa, const long codanagr)
{
TLocalisamfile anag(LF_ANAG);
@ -508,7 +446,7 @@ void TSchedaPercipienti::init_query_mode(TMask& m)
}
return;
break;
case ritenuta:
case occasionale:
/*
setta_nprog(m,FALSE); // Sempre in aggiunta
m.send_key(K_AUTO_ENTER, 0); */

View File

@ -9,13 +9,115 @@
// solo se e' un versamento in banca
//
// 5.6.96 Calcolo contributo INPS
//
// 22.7.96 Esegue controllo ritenuta solo se diversa da ZERO
// Tolti tutti i trunc() per lasciare i decimali nei conti
// 24.7.96 Non considera piu' la perc. come 100 se lasciata vuota
//
HIDDEN TString80 tmp1, tmp2;
HIDDEN TString80 tmp1, tmp2;
HIDDEN real __impo = ZERO;
HIDDEN real __compe = ZERO;
HIDDEN real __percra;
HIDDEN real __percra = ZERO;
HIDDEN TString80 __rite;
HIDDEN bool __bRicalcolaRigaPag = FALSE;
HIDDEN real __rCompensoCg = ZERO;
void TSchedaPercipienti::init_mask(TMask& m)
{
update_lasts(m);
__bRicalcolaRigaPag = FALSE;
__rCompensoCg = ZERO;
if (tipo_coll() != nessuno)
{
const bool variazione = coll_variazione();
if (!variazione) compila_testata(m);
switch (tipo_coll())
{
case pagamento:
case occasionale:
// Compilo riga di pagamento SOLO SE NON ce ne sono gia'..
if ( (tipo_coll() == pagamento && _rel->pag_items() == 0)
||
tipo_coll() == occasionale )
{
const real totrit(m.get(F_TOTRIT));
const real totdoc(m.get(F_TOTDOC));
const real compenso(m.get(F_COMPENS));
const real spese(m.get(F_SPESE));
if ( (tipo_coll() == pagamento && (_coll._compenso + totrit == totdoc) )
||
(tipo_coll() == occasionale) )
{
TSheet_field& pags = (TSheet_field&)m.field(F_PAGAMENTI);
TRectype rpag(_rel->pag(0));
rpag.zero();
real& imponibile = _coll._compenso;
rpag.put("DATAPAG", _coll._datadoc);
rpag.put("COMPENSO", compenso);
// Come 'zzo fa a calcolare l'imponibile se ancora nun c'e' la causale?
// const real impo_calc = calcola_imponibile(compenso);
// rpag.put("IMPONIBILE", impo_calc);
rpag.put("SPESA", spese);
/********** 26.7.96 non esiste piu' sta' roba
const real rite_calc = calcola_ritenuta(impo_calc);
rpag.put("RITENUTA", rite_calc);
real perc = (rite_calc * 100) / impo_calc;
perc.round(2);
rpag.put("PERC", perc);
rpag.put("NUMVERS", (long)-1);
const real netto = compenso - rite_calc + spese;
rpag.put("NETTO", netto);
**************************/
// forza il ricalcolo della riga pag. (da check_causale)
__bRicalcolaRigaPag = TRUE;
__rCompensoCg = compenso;
// Update spreadsheet
rec2row(pags.row(0), rpag, 0);
pags.force_update();
}
}
break;
default:
break;
}
}
fill_sheet(m);
}
// Utilizzato in collegamento da cg
real TSchedaPercipienti::calcola_ritenuta(const real& imponibile, TString& sPercRa)
{
TTable cau("%ca7");
TString codcau(curr_mask().get(F_CODCAUS));
cau.zero();
cau.put("CODTAB", codcau);
cau.read();
real rQuotaRaCaus = cau.get_real("R0");
sPercRa = cau.get("R0");
real rite = ZERO;
rite = (imponibile * rQuotaRaCaus)/100.00;
return rite;
}
// Utilizzato in collegamento da cg Forse ora da togliere..
real TSchedaPercipienti::calcola_imponibile(const real& compenso)
{
TTable cau("%ca7");
TString codcau(curr_mask().get(F_CODCAUS));
cau.zero();
cau.put("CODTAB", codcau);
if (cau.read() != NOERR)
return ZERO;
real quota_imp = cau.get_int("R4");
TString16 cod_qua(cau.get("S1"));
real imponibile_calcolato = ZERO;
// Calcola imponibile
if (compenso != ZERO)
imponibile_calcolato = (compenso * quota_imp) / 100.00;
return imponibile_calcolato;
}
bool TSchedaPercipienti::vers_notify(TSheet_field& s, int r, KEY k)
{
@ -726,26 +828,47 @@ bool TSchedaPercipienti::vers1015_handler(TMask_field& f, KEY k)
//
bool TSchedaPercipienti::check_causale(TMask_field& f, KEY k)
{
// if (k == K_TAB)
if (f.to_check(k))
TMask& m = f.mask();
if (k == K_TAB)
// if (f.to_check(k))
{
TFixed_string cod_caus(f.get(),3);
if (cod_caus.empty() && f.mask().is_running())
if (cod_caus.empty() && m.is_running())
{
KEY ke = f.mask().last_key();
KEY ke = m.last_key();
if (ke != K_QUIT && ke != K_ESC)
return f.warning_box("Manca la causale");
}
else
{
TString16 cod_qua (f.mask().get(F_CODQUA));
char tipo = f.mask().get(F_TIPOA)[0];
TString16 cod_qua (m.get(F_CODQUA));
char tipo = m.get(F_TIPOA)[0];
if (cod_qua == "C" || cod_qua == "E1")
if (tipo == 'G')
return f.warning_box("Con il quadro C o E1 e' possibile l'immissione"
" per le sole persone fisiche");
if (__bRicalcolaRigaPag)
{
TSheet_field& pags = app().pags();
TMask& ssMask = pags.sheet_mask();
// aggiorna la riga ( collegamenti con 6(occas.) e 3(pag.) )
TString sPercRa(6);
real rImpoCg = app().calcola_imponibile(__rCompensoCg);
real rRiteCg = app().calcola_ritenuta(rImpoCg, sPercRa);
TToken_string& tsRiga = pags.row(0);
tsRiga.add(rImpoCg.string(), 3);
tsRiga.add(sPercRa, 4);
tsRiga.add(rRiteCg.string(), 7);
pags.force_update(0);
// Per evitare che i valori vengano azzerati:
__compe = __rCompensoCg;
__impo = rImpoCg;
__percra = atof(sPercRa);
__rite = rRiteCg.string();
}
}
}
return TRUE;
@ -756,57 +879,6 @@ bool TSchedaPercipienti::check_causale(TMask_field& f, KEY k)
// RIGA PAGAMENTI
//
///////////////////////////////////////////////////////////////////////////
/*****************
bool TSchedaPercipienti::pag_handler(TMask_field& f, KEY k)
{
const bool forzatura = app().curr_mask().get_bool(F_FORCED);
const real compenso (f.mask().get(MPAG_COMPENSO));
real imponibile_calc = ZERO;
TString16 cod_qua(app().curr_mask().get(F_CODQUA));
if (k == K_TAB)
{
if (__compe != ZERO && compenso == ZERO)
app()._azzerato_pag = FALSE;
const bool cambiato_compenso = __compe == ZERO ? __compe != compenso : FALSE;
if (cambiato_compenso)
{
imponibile_calc = calcola_imponibile(f, compenso, cambiato_compenso);
calcola_ritenuta(f, imponibile_calc, cambiato_compenso);
// "Solo per il quadro E1 l'imponibile puo' essere maggiore del compenso"
if (cod_qua != "E1")
if (imponibile_calc > compenso)
{
f.warning_box("L'imponibile non puo' essere"
" maggiore del compenso");
return forzatura;
}
f.mask().send_key(K_TAB, MPAG_NETTO); // forza il ricalcolo del netto
}
const real imponibile(f.mask().get(MPAG_IMPONIBILE));
const bool imponibile_cambiato = __impo != ZERO ? imponibile != __impo : FALSE;
if (imponibile_cambiato)
calcola_ritenuta(f, imponibile, imponibile_cambiato);
}
if (k == K_ENTER)
{
// "Solo per il quadro E1 l'imponibile puo' essere maggiore del compenso"
if (cod_qua != "E1")
if (imponibile_calc > compenso)
{
f.warning_box("L'imponibile non puo' essere"
" maggiore del compenso");
return forzatura;
}
}
return TRUE;
}
*****************************/
//
// SPESA_HANDLER
//
@ -820,7 +892,7 @@ bool TSchedaPercipienti::spesa_handler(TMask_field& f, KEY k)
}
// CHECK_RITENUTA
// o Controlla se la ritenuta e' corretta
// o Controlla se la ritenuta e' corretta (SOLO SE != ZERO 22.7.96)
// o Ricalcola la ritenuta se e' stata vuotata
bool TSchedaPercipienti::check_ritenuta(TMask_field& f, KEY k)
{
@ -837,15 +909,20 @@ bool TSchedaPercipienti::check_ritenuta(TMask_field& f, KEY k)
f.mask().send_key(K_TAB, MPAG_NETTO); // forza il ricalcolo del netto
}
// Controlla solo se RITENUTA != ZERO
if (k == K_ENTER)
{
{
TMask& m = f.mask();
const bool forzatura = app().curr_mask().get_bool(F_FORCED);
real perc_ra = (f.mask().get_real(MPAG_PERCRA) );
real perc_ra = (m.get_real(MPAG_PERCRA) );
if (perc_ra == ZERO)
perc_ra = 100.00;
const real imponibile (f.mask().get(MPAG_IMPONIBILE));
real ritenuta (f.mask().get(MPAG_RITPAG));
const real imponibile (m.get(MPAG_IMPONIBILE));
real ritenuta (m.get(MPAG_RITPAG));
if (ritenuta == ZERO)
return TRUE;
real rite = ZERO;
// Se non indico la percentuale => considero come 100%
if (perc_ra != ZERO)
@ -903,57 +980,20 @@ real TSchedaPercipienti::calcola_imponibile(TMask_field& f, const real& compenso
// Calcola imponibile
if (compenso != ZERO)
{
// "Se la perc.ass.imponibile = 0 => percentuale = 100% "
if (quota_imp == ZERO)
imponibile_calcolato = compenso;
else
imponibile_calcolato = (compenso * quota_imp) / 100.00;
imponibile_calcolato.trunc();
// imponibile_calcolato = round_770(imponibile_calcolato);
imponibile_calcolato = (compenso * quota_imp) / 100.00;
// 13.6.96 toglie il contributo inps
if (bContributoInps)
{
real rPercCassaPrev=ZERO;
rPercCassaPrev = mm.get_real(F_CASSA_PREV);
imponibile_calcolato = (imponibile_calcolato / (100.00 + rPercCassaPrev)) * 100.00;
imponibile_calcolato.trunc();
}
TString impost(imponibile_calcolato.string());
lm.set(MPAG_IMPONIBILE, impost);
}
return imponibile_calcolato;
}
// Utilizzato in collegamento da cg
real TSchedaPercipienti::calcola_imponibile(const real& compenso)
{
TTable cau("%ca7");
TString codcau(curr_mask().get(F_CODCAUS));
cau.zero();
cau.put("CODTAB", codcau);
cau.read();
real quota_imp = cau.get_int("R4");
TString16 cod_qua(cau.get("S1"));
real imponibile_calcolato = ZERO;
// Calcola imponibile
if (compenso != ZERO)
{
// "Se la perc.ass.imponibile = 0 => percentuale = 100% "
if (quota_imp == ZERO)
imponibile_calcolato = compenso;
else
imponibile_calcolato = (compenso * quota_imp) / 100.00;
// imponibile_calcolato = round_770(imponibile_calcolato);
imponibile_calcolato.trunc();
}
return imponibile_calcolato;
}
bool TSchedaPercipienti::imponibile_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
@ -979,10 +1019,11 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
TMask& mm = app().curr_mask(); // main mask
TMask& lm = f.mask(); // local mask
const bool forzatura = mm.get_bool(F_FORCED);
const real compenso (lm.get(MPAG_COMPENSO));
real compenso (lm.get(MPAG_COMPENSO));
real imponibile = ZERO;
TString16 cod_qua(mm.get(F_CODQUA));
const bool bContributoInps = mm.get_bool(F_FLAG_INPS);
bool bCambiatoCompenso = FALSE;
if (k == K_TAB)
{
@ -992,11 +1033,11 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
if (compenso == ZERO)
return TRUE;
const bool forza_ricalcolo = __compe != ZERO ? __compe != compenso : FALSE;
bCambiatoCompenso = __compe != ZERO ? __compe != compenso : FALSE;
if (__compe != compenso)
__compe = compenso; // per evitare di perdere l'imponibile
imponibile = calcola_imponibile(f, compenso, forza_ricalcolo);
imponibile = calcola_imponibile(f, compenso, bCambiatoCompenso);
#ifdef DBG
tmp1 = imponibile.string();
@ -1006,7 +1047,7 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
warning_box("Imponibile = %s - Compenso = %s", (const char*)tmp1,(const char*)tmp2 );
#endif
calcola_ritenuta(f, imponibile, forza_ricalcolo);
calcola_ritenuta(f, imponibile, bCambiatoCompenso);
// "Solo per il quadro E1 l'imponibile puo' essere maggiore del compenso"
if (cod_qua != "E1")
@ -1020,15 +1061,14 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
// Calcolo contributo INPS
if (bContributoInps)
{
real /*rQuotaPrev,*/rScorporaComp, rImpInps, rInpsComplex, rInpsPerc;
real rInpsPercPrima = lm.get_real(MPAG_INPSPERC);
real rInpsCompPrima = lm.get_real(MPAG_INPSCOMP);
real rScorporaComp, rImpInps, rInpsComplex, rInpsPerc;
real rPercCassaPrev = mm.get_real(F_CASSA_PREV);
real rPercContrInps = mm.get_real(F_PERC_INPS);
real rPercAssContrInps = mm.get_real(F_PERC_ASS_INPS);
real rQuotaCommitContrInps = mm.get_real(F_PERC_COMMIT_INPS);
// rQuotaPrev = compenso / (100.00 + rPercCassaPrev);
// rQuotaPrev.round(0);
rScorporaComp = (compenso / (100.00 + rPercCassaPrev)) * 100.00;
rImpInps = (rScorporaComp / 100.00) * rPercAssContrInps;
rImpInps.round(0);
@ -1039,13 +1079,13 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
else
rInpsPerc = rInpsComplex - ((rInpsComplex * rQuotaCommitContrInps)/100.00);
rInpsComplex.trunc();
rInpsPerc.trunc();
TString sInpsComp(rInpsComplex.string());
TString sInpsPerc(rInpsPerc.string());
lm.set(MPAG_INPSPERC, sInpsPerc);
lm.set(MPAG_INPSCOMP, sInpsComp);
// Setto i compensi INPS solo se prima erano vuoti
if (rInpsPercPrima == ZERO || bCambiatoCompenso)
lm.set(MPAG_INPSPERC, sInpsPerc);
if (rInpsCompPrima == ZERO || bCambiatoCompenso)
lm.set(MPAG_INPSCOMP, sInpsComp);
}
lm.send_key(K_TAB, MPAG_NETTO); // forza il ricalcolo del netto
}
@ -1075,10 +1115,11 @@ bool TSchedaPercipienti::compenso_handler(TMask_field& f, KEY k)
//
bool TSchedaPercipienti::calcola_ritenuta(TMask_field& f, const real& imponibile, const bool forza, const real percent)
{
real rPercRaRiga = f.mask().get_real(MPAG_PERCRA);
TMask& m=f.mask();
real rPercRaRiga = m.get_real(MPAG_PERCRA);
real rPercRaCaus = app().curr_mask().get_real(F_PERRIT);
const bool azzerato = app()._azzerato_pag;
const real rit_prec(f.mask().get(MPAG_RITPAG));
const real rit_prec(m.get(MPAG_RITPAG));
if (rit_prec != ZERO && !forza)
return FALSE;
@ -1101,48 +1142,19 @@ bool TSchedaPercipienti::calcola_ritenuta(TMask_field& f, const real& imponibile
if (prendi_ra_da_causale)
{
TString quota_rast(rPercRaCaus.string());
f.mask().set(MPAG_PERCRA, quota_rast);
m.set(MPAG_PERCRA, quota_rast);
}
// Calcolo ritenuta ...
// Se non indico la percentuale => considero come 100%
real rite = ZERO;
if (rPerc == ZERO)
rite = imponibile;
else
rite = (imponibile * rPerc) / 100.00;
real rite = (imponibile * rPerc) / 100.00;
rite.trunc();
// rite.round();
// .. riempie il campo corrispondente
TString ritest(rite.string());
f.mask().set(MPAG_RITPAG, ritest);
f.mask().send_key(K_TAB, MPAG_NETTO); // forza il ricalcolo del netto
m.set(MPAG_RITPAG, ritest);
m.send_key(K_TAB, MPAG_NETTO); // forza il ricalcolo del netto
return TRUE;
}
// Utilizzato in collegamento da cg
real TSchedaPercipienti::calcola_ritenuta(const real& imponibile)
{
TTable cau("%ca7");
TString codcau(curr_mask().get(F_CODCAUS));
cau.zero();
cau.put("CODTAB", codcau);
cau.read();
real rQuotaRaCaus = cau.get_real("R0");
real rite = ZERO;
// Calcolo ritenuta ...
// Se non indico la percentuale => considero come 100%
if (rQuotaRaCaus == ZERO)
rite = imponibile;
else
rite = (imponibile * rQuotaRaCaus)/100.00;
rite.trunc();
return rite;
}
//
// Handler della percentuale di r.a.
// ricalcolo la ritenuta quando cambia
@ -1189,7 +1201,7 @@ real TSchedaPercipienti::calcola_netto(TMask_field& f)
const real inpsperc (m.get(MPAG_INPSPERC));
netto = compenso - ritenuta + spesa - inpsperc;
netto.trunc();
// netto.trunc();
f.mask().set(MPAG_NETTO, netto.string());
return netto;

View File

@ -92,7 +92,7 @@ class TSchedaPercipienti : public TRelation_application
static bool calcola_ritenuta (TMask_field& f,const real& compenso,const bool forza=FALSE,const real perc=ZERO);
static real calcola_netto (TMask_field& f);
real calcola_imponibile(const real& compenso);
real calcola_ritenuta (const real& imponibile);
real calcola_ritenuta (const real& imponibile, TString& sPercRa);
static long get_numvers (TMask_field& f);
static void setta_ritvers(TMask_field& f, const real& ritenuta);

View File

@ -104,7 +104,6 @@ bool TDati_anagrafici::codditta_hnd(TMask_field& f, KEY k)
f.check();
}
}
return TRUE;
}
@ -258,13 +257,12 @@ bool TDati_anagrafici::indirizzo (TMask_field& f, KEY k)
char tipoa;
TString ragione,nome,cognome,ind,civ,cap,com,prov,codcom;
if ( k == K_TAB )// && f.mask().is_running() )
if (k == K_TAB)
{
tipoa = f.mask().get (ASCF_TIPOA)[0];
codanagr = f.mask().get_long(F_ANAGR);
// Ricerca sull'archivio anagrafiche dei dati relativi al depositario
// Ricerca sull'archivio anagrafiche dei dati relativi al depositario
anag.setkey(1);
anag.zero();
anag.put("TIPOA", tipoa);
@ -343,8 +341,7 @@ bool TDati_anagrafici::cod_conc (TMask_field& f, KEY k)
tipoa = f.mask().get (F_TIPOA)[0];
codanagr = f.mask().get_long(F_ANAGR);
// Ricerca sull'archivio anagrafiche dei dati
// Ricerca sull'archivio anagrafiche dei dati
anag.setkey(1);
anag.zero();
anag.put("TIPOA", tipoa);
@ -357,8 +354,7 @@ bool TDati_anagrafici::cod_conc (TMask_field& f, KEY k)
codcom = anag.get("COMRES");
}
// Ricerca dati relativi al comune
// Ricerca dati relativi al comune
comuni.setkey(1);
comuni.zero();
comuni.put("STATO", "");
@ -520,7 +516,6 @@ bool TDati_anagrafici::destroy()
{
delete _msk;
delete _rel;
return TApplication::destroy();
}
@ -538,23 +533,17 @@ bool TDati_anagrafici::main_loop()
switch (tasto)
{
case K_ESC :
break;
break;
case K_QUIT :
break;
break;
case K_SAVE :
{
registra();
}
break;
break;
default:
break;
break;
}
}
while (tasto != K_QUIT); //K_ENTER
while (tasto != K_QUIT);
return FALSE;
}
@ -634,8 +623,7 @@ void TDati_anagrafici::registra_caaf()
long codditta;
char tipoa = 'G';
// Registro il codice caaf sull'archivio base
// Registro il codice caaf sull'archivio base
codditta = _msk->get_long(F_CODDITTA);
base.setkey(1);

View File

@ -75,7 +75,7 @@ BEGIN
OUTPUT F_PROVNASC LF_COMUNI->PROVCOM
OUTPUT F_COMRES 1@->DENCOM
OUTPUT F_PROVRES 1@->PROVCOM
OUTPUT F_COMRF 2@->DENCOM
OUTPUT F_COMRF 2@->DENCOM
OUTPUT F_PROVRF 2@->PROVCOM
OUTPUT F_PTELRF LF_ANAG->PTELRF
OUTPUT F_TELRF LF_ANAG->TELRF

View File

@ -70,25 +70,25 @@ BEGIN
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_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_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_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_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_COMRF 2@->DENCOM
OUTPUT F_PROVRF 2@->PROVCOM
OUTPUT F_DOMFISC LF_ANAG->VARSLORES
OUTPUT F_ANAGR LF_ANAGFIS->CODANAGR
OUTPUT F_ANAGR LF_ANAGFIS->CODANAGR
OUTPUT F_PTELRF LF_ANAG->PTELRF
OUTPUT F_TELRF LF_ANAG->TELRF
FIELD LF_BASE->RAPPR

View File

@ -313,7 +313,8 @@ NUMBER QA2F_CSSNINT 15
BEGIN
PROMPT 2 6 "18 Interessi "
FIELD LF_QUAA2->INTER18
PICTURE "."
PICTURE "."
GROUP G_ALL
END
GROUPBOX DLG_NULL 78 3

View File

@ -35,20 +35,20 @@ class TQuadroC_E2 : public TRelation_application
bool bInps;
real inps;
};
righe_pag* _rig;
TRelation* _rel;
TMask* _msk[2];
TSort* _sort;
long _codanagr;
char _tipoa, _tipoq;
int _nproga;
int _mode;
int _anno_dic; // anno dichiarazione
TLocalisamfile* _per, *_scper, *_rpag, *_qd;
TTable* _ca7;
TRiporti _rip;
int _file;
righe_pag* _rig;
TRelation* _rel;
TMask* _msk[2];
TSort* _sort;
long _codanagr;
char _tipoa, _tipoq;
int _nproga;
int _mode;
int _anno_dic; // anno dichiarazione
TLocalisamfile* _per, *_scper, *_rpag, *_qd;
TTable* _ca7;
TRiporti _rip;
long _codditta;
int _file;
private:
static bool nprog_handler (TMask_field& f, KEY key);
@ -249,7 +249,7 @@ bool TQuadroC_E2::codditta_hnd(TMask_field& f, KEY k)
{
if (k == K_TAB && !f.mask().is_running())
{
TString16 codditta; codditta << get_firm_770();
TString16 codditta; codditta << app()._codditta;
if (codditta != "0")
{
f.set(codditta);
@ -377,7 +377,7 @@ bool TQuadroC_E2::generazione()
int codcaus, nprog;
TString16 qua;
TDate datapag;
real perc=ZERO,somme=ZERO,impo=ZERO,rite=ZERO,comp=ZERO,inps=ZERO;
real perc=ZERO,spesa=ZERO,impo=ZERO,rite=ZERO,comp=ZERO,inps=ZERO;
for (; cur.pos() < nitems; ++cur)
{
@ -419,16 +419,16 @@ bool TQuadroC_E2::generazione()
continue;
//codtrib = cau.get_int("I0");
perc = rpag.get_real(PAG_PERC);
somme = rpag.get_real(PAG_SPESA);
spesa = rpag.get_real(PAG_SPESA);
rite = rpag.get_real(PAG_RITENUTA);
impo = rpag.get_real(PAG_IMPONIBILE);
comp = rpag.get_real(PAG_COMPENSO);
inps = rpag.get_real(PAG_INPSPERC);
if (perc==ZERO && comp==ZERO && rite==ZERO && impo==ZERO
&& somme==ZERO)
&& spesa==ZERO)
continue;
riempi_record(tipoa,codan,codcaus,perc,somme,impo,rite,comp,acc_imp,inps,bContrInps);
riempi_record(tipoa,codan,codcaus,perc,spesa,impo,rite,comp,acc_imp,inps,bContrInps);
}
rpag.readat(nrec);
}
@ -546,7 +546,7 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
int codcaus_p, codcaus, nprog;
real tot_somme=ZERO,tot_impo=ZERO,tot_rite=ZERO,tot_comp=ZERO, rQCInps=ZERO;
real rTotQCInps = ZERO;
bool esiste_record = FALSE, acc_imp = FALSE;
bool esiste_record=FALSE, bAssoggettateRacc=FALSE,bFattoProspetto=FALSE;
struct righe_pag* rp;
keyp = key = "";
@ -557,25 +557,26 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
{
p.addstatus(1);
esiste_record = TRUE;
rp = (struct righe_pag*)buf;
tipoa = rp->tipoa;
codanag = atol(rp->codan);
codcaus = atoi(rp->codcau);
perc = rp->perc;
acc_imp = rp->acim;
rp = (struct righe_pag*)buf;
tipoa = rp->tipoa;
codanag = atol(rp->codan);
codcaus = atoi(rp->codcau);
perc = rp->perc;
bAssoggettateRacc = rp->acim;
// non frega un tubo bInps = rp->bInps; // se la riga aveva il contributo inps nella caus.
rQCInps = rp->inps;
if (QuadroE1() && !acc_imp)
if (QuadroE1() && !bAssoggettateRacc)
{
genera_prospetto(codcaus,rp->comp,rp->impo,rp->rite);
esiste_record = FALSE;
bFattoProspetto = TRUE;
}
else
{
key.format("%c%5ld%2d%s", tipoa, codanag, codcaus, (const char*)perc);
if ( (key != keyp) && (keyp != "") )
{
bFattoProspetto = FALSE;
qd.zero();
qd.put("CODDITTA", (long)get_firm_770());
qd.put("TIPOA", tipoa_p);
@ -587,7 +588,7 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
if (QuadroC())
qd.put("CONTSSN", rTotQCInps);
if (QuadroD() || QuadroC())
if (QuadroD() || QuadroC() || QuadroE())
qd.put("SOMME", tot_somme + tot_comp - tot_impo);
else
if (QuadroD1())
@ -596,11 +597,8 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
qd.put("SPESEANT", tot_somme);
}
else
if (QuadroE())
qd.put("SOMME", tot_somme);
else
if (QuadroE1())
qd.put("SOMME", tot_comp);
if (QuadroE1())
qd.put("SOMME", tot_comp);
if (QuadroE1())
qd.put("AMMONTARE", tot_impo);
@ -614,11 +612,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
qd.put("PERC", perc_p);
// if (_tipoq != 'E' && _tipoq != '2')
if (!QuadroE() && !QuadroE1())
qd.put("TOTALE", tot_comp + tot_somme);
// if (_tipoq == '2')
if (QuadroE1())
qd.put("NETTO", tot_comp - tot_rite);
else
@ -627,11 +623,11 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
rTotQCInps = tot_impo = tot_somme = tot_rite = tot_comp = ZERO;
}
tot_somme += rp->somme;
tot_rite += rp->rite;
tot_impo += rp->impo;
tot_comp += rp->comp;
rTotQCInps += rQCInps;
tot_somme += rp->somme;
tot_rite += rp->rite;
tot_impo += rp->impo;
tot_comp += rp->comp;
rTotQCInps += rQCInps;
if (tipoa_p != tipoa || codanag != codanag_p)
nprog = 1;
@ -645,41 +641,32 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
}
} // while (retrieve() != NULL)
if (esiste_record)
if (esiste_record || bFattoProspetto)
{
qd.zero();
qd.put("CODDITTA", (long)get_firm_770());
qd.put("CODDITTA", (long)_codditta);
qd.put("TIPOA", tipoa_p);
qd.put("CODANAGR", (long)codanag_p);
qd.put("CODCAUS", codcaus_p);
qd.put("NPROG", nprog++);
// if (_tipoq == 'D' || _tipoq == 'C')
if (QuadroD() || QuadroC())
if (QuadroD() || QuadroC() || QuadroE())
qd.put("SOMME", tot_somme + tot_comp - tot_impo);
else
// if (_tipoq == '1')
if (QuadroD1())
{
qd.put("QUOTAPRO", tot_comp - tot_impo);
qd.put("SPESEANT", tot_somme);
}
else
// if (_tipoq == 'E')
if (QuadroE())
qd.put("SOMME", tot_somme);
else
// if (_tipoq == '2')
if (QuadroE1())
qd.put("SOMME", tot_comp);
if (QuadroE1())
qd.put("SOMME", tot_comp);
// if (_tipoq == '2')
if (QuadroE1())
qd.put("AMMONTARE", tot_impo);
else
qd.put("IMPONIBILE", tot_impo);
// if (_tipoq == 'C')
if (QuadroC())
qd.put("RITENUTE", tot_rite);
else
@ -691,12 +678,9 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
if (QuadroC())
qd.put("CONTSSN", rTotQCInps);
// if (_tipoq != 'E' && _tipoq != '2')
if (!QuadroE() && !QuadroE1())
qd.put("TOTALE", tot_comp + tot_somme);
// if (_tipoq == '2')
if (QuadroE1())
qd.put("NETTO", tot_comp - tot_rite);
else
@ -828,7 +812,7 @@ bool TQuadroC_E2::user_create()
_rel = new TRelation(_file);
_rpag = new TLocalisamfile(LF_RPAG);
_ca7 = new TTable ("%CA7");
_codditta = get_firm_770();
set_search_field(F_CODANAGRPERC);
_registra = FALSE;

View File

@ -214,8 +214,9 @@ BEGIN
DISPLAY "C.T." B2
DISPLAY "I.C." B1
DISPLAY "R.A." B0
OUTPUT F_CODCAU CODTAB
OUTPUT F_DESCRCAUS S0
OUTPUT F_CODCAU CODTAB
OUTPUT F_DESCRCAUS S0
OUTPUT F_ALI R0
FLAGS "Z"
WARNING "Manca la causale"
CHECKTYPE NORMAL

View File

@ -68,6 +68,7 @@ class TQuadroI : public TRelation_application
TMask * _msk;
char _quadro;
protected:
static bool PDGcalcolaM6(TMask_field& f, KEY k);
virtual bool user_create();
virtual bool user_destroy();
virtual TRelation* get_relation() const { return _rel; }
@ -209,6 +210,23 @@ int TQuadroI::read(TMask& m)
return NOERR;
}
bool TQuadroI::PDGcalcolaM6(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
TMask& m = f.mask();
real m3 = m.get_real(F_M3);
real m4 = m.get_real(F_M4);
real m5 = m.get_real(F_M5);
real m6 = m3 - m4 - m5;
if (m6 < ZERO)
m6 = ZERO;
TString m6s(m6.string());
m.set(F_M6, m6s);
}
return TRUE;
}
bool TQuadroI::user_create()
{
switch (_quadro)
@ -225,7 +243,10 @@ bool TQuadroI::user_create()
break;
case 'W':
_msk = new TMask("771400a");
_rel = new TRelation (LF_BASEBIS);
_msk->set_handler(F_M3, PDGcalcolaM6);
_msk->set_handler(F_M4, PDGcalcolaM6);
_msk->set_handler(F_M5, PDGcalcolaM6);
_rel = new TRelation (LF_BASEBIS);
break;
case '2':
_msk = new TMask("771400b");

View File

@ -202,8 +202,16 @@
#define F_QSUPPR 423
#define F_QSUPPS 424
#define F_QSUPPT 425
#define F_CRIMPDL357 307
// P.dati generali
#define F_M1 300
#define F_M2 301
#define F_M3 302
#define F_M4 303
#define F_M5 304
#define F_M6 305
#define F_TIPOQUA1 430
#define F_TIPOQUA2 431
#define F_TIPOQUA 432

View File

@ -449,8 +449,9 @@ bool M71310_application::user_create()
_msk->set_handler (F_QLMESEPAG, mese);
_msk->set_handler (F_QLANNOPAG, anno);
_msk->set_handler (F_QLCODTRIB, cod_tributo);
_msk->set_handler (F_QLNUMERO, auto_premi);
_msk->set_handler (F_NPROG, auto_premi);
_msk->set_handler (F_QLNUMERO, auto_premi);
_msk->set_handler (F_CCQUIETANZA, auto_premi);
_msk->set_handler (F_NPROG, auto_premi);
_msk->set_handler (F_ARTBIL, artbil_hnd);
return TRUE;

View File

@ -80,9 +80,10 @@ BEGIN
OUTPUT F_ARTBIL QLAB
OUTPUT F_QLSERIE QLSERIE
OUTPUT F_ABI QLSERIE
OUTPUT F_CAB QLNUMERO[1,5]
OUTPUT F_NPROG QLNUMERO[6,11]
OUTPUT F_QLNUMERO QLNUMERO
OUTPUT F_CAB QLNUMERO[1,5]
OUTPUT F_NPROG QLNUMERO[6,11]
OUTPUT F_QLNUMERO QLNUMERO
OUTPUT F_CCQUIETANZA QLNUMERO
FIELD LF_QUAL->QLAP
FLAGS "R"
VALIDATE FIXLEN_FUNC 4
@ -119,8 +120,8 @@ END
LIST F_QLTIPOVERS 15
BEGIN
PROMPT 2 8 "Tipo versamento "
ITEM " |Nessuno"
MESSAGE HIDE,G_ABICAB@|HIDE,G_DISTINTA@|HIDE,G_CC@
// ITEM " |Nessuno"
// MESSAGE HIDE,G_ABICAB@|HIDE,G_DISTINTA@|HIDE,G_CC@
ITEM "B|Delega bancaria"
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_ABICAB@
ITEM "D|Distinta"

View File

@ -70,17 +70,17 @@ BEGIN
PROMPT 0 4 "Dati relativi al conguaglio di fine anno effettuato dai datori di lavoro"
END
NUMBER F_ER92C93 15
NUMBER F_M1 15
BEGIN
PROMPT 1 5 "Eccedenza di ritenute di fine 1994 compensata nel 1995 "
PROMPT 1 5 "M1 Eccedenza di ritenute di fine 1994 compensata nel 1995 "
FIELD LF_BASEBIS->ECCRIT12
PICTURE "."
FLAGS "R"
END
NUMBER F_ER93C94 15
NUMBER F_M2 15
BEGIN
PROMPT 1 6 "Eccedenza di ritenute di fine 1995 da compensare nel 1996 "
PROMPT 1 6 "M2 Eccedenza di ritenute fine 1995 da compensare nel 1996 "
FIELD LF_BASEBIS->ECCRIT23
PICTURE "."
FLAGS "R"
@ -91,36 +91,40 @@ BEGIN
PROMPT 0 8 "Prospetto riservato ai sostituti non tenuti a presentare la dichiarazione"
END
NUMBER F_CRIMPDL357 15
NUMBER F_M3 15
BEGIN
PROMPT 1 9 "Credito di imposta ex D.L.357/94 spettante "
PROMPT 1 9 "M3 Credito di imposta ex D.L.357/94 spettante "
FIELD LF_BASEBIS->CRIMPDL
PICTURE "."
FLAGS "R"
// MESSAGE K_TAB,F_M6
END
NUMBER F_CRIMPDL357 15
NUMBER F_M4 15
BEGIN
PROMPT 1 10 "Credito di imposta utilizzato ai fini IVA "
PROMPT 1 10 "M4 Credito di imposta utilizzato ai fini IVA "
FIELD LF_BASEBIS->CRIMPIVA
PICTURE "."
FLAGS "R"
FLAGS "R"
// MESSAGE K_TAB,F_M6
END
NUMBER F_CRIMPDL357 15
NUMBER F_M5 15
BEGIN
PROMPT 1 11 "Credito di imposta utilizzato per versamento ritenute "
PROMPT 1 11 "M5 Credito imposta utilizzato per versamento ritenute "
FIELD LF_BASEBIS->CRIMPRIT
PICTURE "."
FLAGS "R"
FLAGS "R"
// MESSAGE K_TAB,F_M6
END
NUMBER F_CRIMPDL357 15
NUMBER F_M6 15
BEGIN
PROMPT 1 12 "Credito di imposta residuo "
PROMPT 1 12 "M6 Credito di imposta residuo "
FIELD LF_BASEBIS->CRIMPRES
PICTURE "."
FLAGS "R"
FLAGS "D"
// NUM_CALC {#F_M3-#F_M4-#F_M5}
END
ENDPAGE

View File

@ -16,8 +16,6 @@
//
// 15.3.96 Allungata la stringa QCOMP per far spazio ai quadri A1-2-3
//
#include <math.h>
#include <applicat.h>
#include <mask.h>
#include <printapp.h>
@ -27,9 +25,7 @@
#include <utility.h>
#include <config.h>
#include <urldefid.h>
#include "774200.h"
#include "quadroa.h"
#include "quadroa3.h"
#include "quadrob.h"
@ -710,13 +706,14 @@ bool TRiporti::set(const TString& quadro, int anno, const long codditta, const l
return TRUE;
}
const int NUM_DIP_A = 9;
void TRiporti::calcola_riporti_A(TCursor* cur, const long dich)
{
TLocalisamfile base (LF_BASE);
real totale,somme,ritenute;
bool almeno_una_riga = FALSE;
double dipendenti;
double num_rec;
long dipendenti,num_rec;
real a0cobb,a0cnet,a0eprev,a0iitra,a0cter,a0timp,a0ilor,a0tdet,a0rter,a0rdat;
real a0erit,a0carr,a0aarr,a0darr,a0rarr,a0cinps,a0ciiaut,a0crimpras;
@ -798,10 +795,9 @@ void TRiporti::calcola_riporti_A(TCursor* cur, const long dich)
}
}
double app = num_rec / 9;
double foglid = ceil(app);
long fogli = (long)foglid;
long fogli = num_rec / NUM_DIP_A;
if (num_rec % NUM_DIP_A)
fogli++;
// base.setkey(2);
base.zero();
@ -843,54 +839,56 @@ void TRiporti::calcola_riporti_A(TCursor* cur, const long dich)
warning_box("Dichiarazione non presente. Impossibile registrare i riporti");
}
const int NUM_DIPENDENTI_MODULO_A3 = 35;
void TRiporti::calcola_riporti_A3(TCursor* cur, const long dich)
{
TLocalisamfile base (LF_BASE);
bool almeno_una_riga = FALSE;
double dipendenti;
double num_rec;
real a3rept10,a3rept12;
a3rept10 = ZERO;
a3rept12 = ZERO;
dipendenti = 0;
num_rec = 0;
bool almeno_una_riga = FALSE;
long dipendenti=0L, num_rec=0L;
real a3rept10=ZERO,a3rept12=ZERO;
(*cur) = 0L;
TRecnotype items = cur->items();
TString scritta(60);
scritta.format("Calcolo riporti del quadro A3 per la ditta %ld", _codditta);
TProgind progn(items, scritta, FALSE, TRUE);
// fogli per l'elenco delle trasf.
int iFogliTrasf=0;
int iDipTrasf=0;
for (int i = 0; i < items; i++, ++(*cur))
{
progn.addstatus(1);
const long coddip = cur->curr().get_long(QUA_CODIP);
const long nprog = cur->curr().get_long(QUA_NPROG);
long coddip = cur->curr().get_long(QUA_CODIP);
if (!almeno_una_riga)
almeno_una_riga = TRUE;
if ( (cur->curr().get_real(QA3_REDCOR16) == ZERO) && (cur->curr().get_real(QA3_REDCOR18) == ZERO))
// Non conta quelli con redditto corrisposto = ZERO
if ((cur->curr().get_real(QA3_REDCOR16) == ZERO) && (cur->curr().get_real(QA3_REDCOR18) == ZERO))
continue;
// nprog=2 se e' il record della trasformata. Conto i dip.con trasf. per
// contare i fogli
if (nprog == 2)
iDipTrasf++;
dipendenti++;
a3rept10 += cur->curr().get_real(QA3_REDCOR16);
a3rept12 += cur->curr().get_real(QA3_REDCOR18);
}
double app = dipendenti / 35;
double foglid = ceil(app);
long fogli = (long)foglid;
// base.setkey(2);
long fogli = dipendenti / NUM_DIPENDENTI_MODULO_A3;
if (dipendenti % NUM_DIPENDENTI_MODULO_A3)
fogli++;
iFogliTrasf = iDipTrasf / NUM_DIPENDENTI_MODULO_A3;
if (iDipTrasf % NUM_DIPENDENTI_MODULO_A3)
iFogliTrasf++;
fogli += iFogliTrasf;
base.zero();
if (dich)
{
@ -1013,14 +1011,14 @@ void TRiporti::calcola_riporti_H(TCursor* cur, const long dich)
warning_box("Dichiarazione non presente. Impossibile registrare i riporti");
}
const int NUM_PERC_C = 36;
void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
{
TLocalisamfile base (LF_BASE);
real totale,somme,ritenute,rTotCSSN;
bool almeno_una_riga = FALSE;
double percipienti;
percipienti = 0;
long percipienti=0L;
totale = ZERO;
somme = ZERO;
@ -1061,10 +1059,9 @@ void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
progn.addstatus(1);
}
double app = percipienti / 36;
double foglid = ceil(app);
long fogli = (long)foglid;
long fogli = percipienti / NUM_PERC_C;
if (percipienti % NUM_PERC_C)
fogli++;
// base.setkey(2);
base.zero();
@ -1083,7 +1080,7 @@ void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
base.put(BSE_C0ACTOT, totale);
base.put(BSE_C0SNSRIT, somme);
base.put(BSE_C0ROPE, ritenute);
base.put(BSE_C0SNSRIT, rTotCSSN);
base.put(BSE_C0CONTSSN, rTotCSSN);
base.rewrite();
base.reread(_unlock);
setta_flag_quadri_comp(_codditta, C, almeno_una_riga, dich);
@ -1549,6 +1546,21 @@ void TRiporti::calcola_riporti_F(TCursor* cur, const long dich)
TString scritta(60);
scritta.format("Calcolo riporti del quadro F per la ditta %ld", _codditta);
i20_4 = cur->curr().get_real(QF0_A1);
i20_5 = cur->curr().get_real(QF0_A2);
i20_6 = cur->curr().get_real(QF0_A3);
i21_1 = cur->curr().get_real(QF0_A4);
e_sogrit = cur->curr().get_real(QF0_ESOGRIT);
f_sogrit = cur->curr().get_real(QF0_FSOGRIT);
e_rope = cur->curr().get_real(QF0_EROPE);
f_rope = cur->curr().get_real(QF0_FROPE);
// Per stabilire se il quadro e' stato compilato verifica anche i campi
// fuori dagli spreadsheet
almeno_una_riga = i20_4 != ZERO || i20_5 != ZERO || i20_6 != ZERO ||
i21_1 != ZERO || e_sogrit != ZERO || f_sogrit != ZERO || e_rope != ZERO ||
f_rope != ZERO;
rf = new TLocalisamfile(LF_RIGHEF);
TRectype dep(rf->curr());
@ -1582,14 +1594,6 @@ void TRiporti::calcola_riporti_F(TCursor* cur, const long dich)
i20_1 = a_sogrit;
i20_2 = a_rope;
i20_3 = a_totacc;
i20_4 = cur->curr().get_real(QF0_A1);
i20_5 = cur->curr().get_real(QF0_A2);
i20_6 = cur->curr().get_real(QF0_A3);
i21_1 = cur->curr().get_real(QF0_A4);
e_sogrit = cur->curr().get_real(QF0_ESOGRIT);
f_sogrit = cur->curr().get_real(QF0_FSOGRIT);
e_rope = cur->curr().get_real(QF0_EROPE);
f_rope = cur->curr().get_real(QF0_FROPE);
for (i = 1; i <= _prosp_b->last_row(); i++)
{
@ -1828,7 +1832,7 @@ void TRiporti::calcola_riporti_G(TCursor* cur, const long dich)
real i24_1, i24_2, i24_3, i24_4, i24_5, i24_6;
real i24_7, i24_8, i24_9, i24_10, i24_11, i24_12;
real i24_13, i25_4;
bool almeno_una_riga=FALSE, almeno_una_riga_distinta=FALSE;
bool almeno_una_riga=FALSE, almeno_una_riga_distinta=FALSE,almeno_una_riga_prospetti=FALSE;
long fogli_comp = 0L, percipienti=0L;
TRelation* relp;
TCursor* curp;
@ -1852,7 +1856,8 @@ void TRiporti::calcola_riporti_G(TCursor* cur, const long dich)
i24_7 = cur->curr().get_real(QG_P35TOT);
i24_8 = cur->curr().get_real(QG_P36TOT);
i24_9 = cur->curr().get_real(QG_P37TOT);
almeno_una_riga = i24_2 != ZERO || i24_3 != ZERO || i24_4 != ZERO
almeno_una_riga_prospetti = i24_2 != ZERO || i24_3 != ZERO
|| i24_4 != ZERO
|| i24_5 != ZERO || i24_6 != ZERO || i24_7 != ZERO
|| i24_8 != ZERO || i24_9 != ZERO;
@ -1898,9 +1903,12 @@ void TRiporti::calcola_riporti_G(TCursor* cur, const long dich)
}
// E' compilato se c'e' qualcosa nel G o nella distinta fax 15.7.96 p.1
almeno_una_riga = almeno_una_riga || almeno_una_riga_distinta;
almeno_una_riga = almeno_una_riga_prospetti || almeno_una_riga_distinta;
fogli_comp = fogli_compilati(fisiche,no_fisiche,QGD_FISICHE_PER_FOGLIO,QGD_NOFISICHE_PER_FOGLIO);
// Considera un foglio in piu' per la parte del G (prospetti 1-2-3-4)
if (almeno_una_riga_prospetti)
fogli_comp++;
basebis.setkey(1);
basebis.zero();

View File

@ -12,7 +12,7 @@ bool filter_func (const TRelation *);
enum {A,A1,A2,A3,B,B1,C,D,D1,E,E1,E2,F,F1,F2,G,G1,H,I,N,P,Q,R,S,T};
const int CAMPI_IB1 = 60;
const int CAMPI_IB1 = 61;
const int CAMPI_IB2 = 50;
const int CAMPI_A = 53;
@ -23,7 +23,7 @@ HIDDEN const char* _campi_I1[CAMPI_IB1] = { BSE_A0NFCOM,BSE_A0NLDIP,BSE_A0COBB,B
BSE_A0NACAAF,BSE_B0NFCOM,BSE_B0NLDIP,BSE_B0TFR93,BSE_B0AI,BSE_B0COLAV,
BSE_B0TFR7492,BSE_B0AI7492,BSE_B0RITSI,BSE_B0IMP,BSE_B0TIMP,BSE_B0ROP,
BSE_B0AIINPS,BSE_B0ROPESA,BSE_B0CIIAUT,BSE_B1NFCOM,BSE_B1NPER,BSE_B1TIND,
BSE_B1TIRM,BSE_B1TICOM,BSE_C0NFCOM,BSE_C0NLASS,BSE_C0ACTOT,BSE_C0SNSRIT,
BSE_B1TIRM,BSE_B1TICOM,BSE_C0NFCOM,BSE_C0NLASS,BSE_C0ACTOT,BSE_C0CONTSSN,BSE_C0SNSRIT,
BSE_C0ROPE,BSE_C0CIIAUT,BSE_D0NFCOM,BSE_D0NLAUT,BSE_D0ACTOT,BSE_D0SNSRIT,
BSE_D0ROPE,BSE_D0CIIAUT,BSE_D1NFCOM,BSE_D1NPER,BSE_D1TACOR,BSE_D1SNSRIT,
BSE_D1ROPE};

636
m770/77base1.frm Executable file
View File

@ -0,0 +1,636 @@
USE 36
JOIN 37 TO 36 INTO TIPOQUA=TIPOQUA CODDITTA=CODDITTA
JOIN 9 TO 36 INTO CODDITTA=CODDITTA
JOIN 6 TO 9 ALIAS 116 INTO TIPOA=TIPOA CODANAGR=CODANAGR
JOIN 8 TO 6 ALIAS 118 INTO CODANAGR=CODANAGR
JOIN 13 TO 8 ALIAS 113 INTO COM=COMNASC
JOIN 13 TO 6 ALIAS 213 INTO COM=COMRF(COMRES)
JOIN 6 TO 36 ALIAS 216 INTO CODANAGR=RAPPR
JOIN 13 TO 216@ ALIAS 313 INTO COM=COMNASC
JOIN 13 TO 216@ ALIAS 413 INTO COM=COMRF(COMRES)
END
DESCRIPTION
BEGIN
36->* "Base 770"
37->* "Basebis 770"
9->* "Ditte"
6->* "LF_ANAG Anagrafica persone fisiche e giuridiche"
8->* "Anagrafica persone fisiche"
116@->* "Comuni"
118@->* "Comuni"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier 17cpi"
SIZE 10
CA "X"
IN 3 2
FI 131
END
SECTION BODY FIRST 73
LISTA 1
BEGIN
KEY "Tipo anagrafica: ABILITA PERSONE FISICHE/ALTRI SOGGETTI"
FIELD 9->TIPOA
ITEM "F| " MESSAGE ENABLE,1@|DISABLE,2@
ITEM "G| " MESSAGE ENABLE,2@|DISABLE,1@
FLAGS "H"
END
STRINGA 2
BEGIN
KEY "GRUPPO 1 - PERSONE FISICHE - CODICE FISCALE"
PROMPT 22 13 ""
FIELD 116@->COFI
GROUP 1
END
LISTA 3
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 90 13 ""
ITEM "1|X"
ITEM "2|"
ITEM "3|"
FIELD 36->RSS
GROUP 1
END
LISTA 4
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 98 13 ""
ITEM "1|"
ITEM "2|X"
ITEM "3|"
FIELD 36->RSS
GROUP 1
END
LISTA 5
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 107 13 ""
ITEM "1|"
ITEM "2|"
ITEM "3|X"
FIELD 36->RSS
GROUP 1
END
STRINGA 6
BEGIN
KEY "CODICE ATTIVITA"
PROMPT 119 13 ""
FIELD 9->CODATTPREV
GROUP 1
END
STRINGA 7
BEGIN
KEY "COGNOME"
PROMPT 22 15 ""
FIELD 116@->RAGSOC[1,30]
GROUP 1
END
STRINGA 8
BEGIN
KEY "NOME"
PROMPT 80 15 ""
FIELD 116@->RAGSOC[31,50]
GROUP 1
END
LISTA 9
BEGIN
KEY "SESSO M"
PROMPT 119 15 ""
ITEM "M|X"
ITEM "F|"
FIELD 118@->SESSO
GROUP 1
END
LISTA 10
BEGIN
KEY "SESSO F"
PROMPT 127 15 ""
ITEM "M|"
ITEM "F|X"
FIELD 118@->SESSO
GROUP 1
END
STRINGA 11
BEGIN
KEY "DATA DI NASCITA"
PROMPT 22 17 ""
FIELD 118@->DATANASC
FORMAT "1444-"
PICTURE "## ^ ##^^^^^"
GROUP 1
END
STRINGA 12
BEGIN
KEY "COMUNE DI NASCITA"
PROMPT 44 17 ""
FIELD 113@->DENCOM
GROUP 1
END
STRINGA 13
BEGIN
KEY "PROV. DI NASCITA"
PROMPT 100 17 ""
FIELD 113@->PROVCOM
GROUP 1
END
STRINGA 14
BEGIN
KEY "EVENTI ECCEZIONALI"
PROMPT 127 17 ""
FIELD 116@->EVECC
GROUP 1
END
STRINGA 15
BEGIN
KEY "COMUNE DI RES.FISCALE"
PROMPT 41 19 ""
FIELD 213@->DENCOM
GROUP 1
END
STRINGA 16
BEGIN
KEY "PROV DI RES.FISCALE"
PROMPT 100 19 ""
FIELD 213@->PROVCOM
GROUP 1
END
STRINGA 17
BEGIN
KEY "CAP"
PROMPT 119 19 ""
FIELD 116@->CAPRF
FIELD 116@->CAPRES
GROUP 1
END
STRINGA 18
BEGIN
KEY "VIA di RES."
PROMPT 41 21 ""
FIELD 116@->INDRF
FIELD 116@->INDRES
GROUP 1
END
STRINGA 19
BEGIN
KEY "NUM. CIVICO di RES."
PROMPT 102 13 ""
FIELD 116@->CIVRF
FIELD 116@->CIVRES
FLAGS "H"
GROUP 1
END
STRINGA 20
BEGIN
KEY "TELEFONO - PREFISSO"
PROMPT 100 21 ""
FIELD 116@->PTELRF
END
STRINGA 21
BEGIN
KEY "TELEFONO - NUMERO"
PROMPT 112 21 ""
FIELD 116@->TELRF
END
STRINGA 22
BEGIN
KEY "GRUPPO 2 - ALTRI SOGGETTI - CODICE FISCALE"
PROMPT 22 23 ""
FIELD 116@->COFI
GROUP 2
END
LISTA 23
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 90 23 ""
ITEM "1|X"
ITEM "2|"
ITEM "3|"
FIELD 36->RSS
GROUP 2
END
LISTA 24
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 98 23 ""
ITEM "1|"
ITEM "2|X"
ITEM "3|"
FIELD 36->RSS
GROUP 2
END
LISTA 25
BEGIN
KEY "REG.A.STATUTO.SPECIALE VA - SA -SI"
PROMPT 107 23 ""
ITEM "1|"
ITEM "2|"
ITEM "3|X"
FIELD 36->RSS
GROUP 2
END
STRINGA 26
BEGIN
KEY "CODICE ATTIVITA"
PROMPT 119 23 ""
FIELD 9->CODATTPREV
GROUP 2
END
STRINGA 27
BEGIN
KEY "RAGIONE SOCIALE"
PROMPT 22 25 ""
FIELD 116@->RAGSOC
GROUP 2
END
STRINGA 28
BEGIN
KEY "EVENTI ECCEZIONALI"
PROMPT 127 25 ""
FIELD 116@->EVECC
GROUP 2
END
STRINGA 29
BEGIN
KEY "FLAG SEDE LEGALE"
GROUP 2
END
STRING 30
BEGIN
KEY "COMUNE SEDE LEGALE "
PROMPT 39 27 ""
FIELD 413@->DENCOM
GROUP 2
END
STRING 31
BEGIN
KEY "PROV. SEDE LEGALE"
PROMPT 119 27 ""
FIELD 413@->PROVCOM
GROUP 2
END
STRING 32
BEGIN
KEY "VIA SEDE LEGALE"
PROMPT 39 27 ""
FIELD 216@->INDRES[1,18]
FLAGS "H"
MESSAGE COPY,12|COPY,107
END
STRING 33
BEGIN
KEY "NUM.CIV"
PROMPT 93 4 ""
FLAGS "H"
FIELD 216@->CIVRES
MESSAGE APPEND,12|APPEND,107
END
STRING 34
BEGIN
KEY "VIA SEDE LEGALE"
PROMPT 39 27 ""
GROUP 2
END
STRINGA 35
BEGIN
KEY "CAP"
PROMPT 119 27 ""
FIELD 116@->CAPRF
FIELD 116@->CAPRES
GROUP 2
END
STRING 36
BEGIN
KEY "COMUNE DI RESIDENZA FISCALE"
PROMPT 39 29 ""
FIELD 413@->DENCOM
GROUP 2
END
STRING 37
BEGIN
KEY "PROV. RESIDENZA FISCALE"
PROMPT 119 29 ""
FIELD 413@->PROVCOM
GROUP 2
END
STRING 38
BEGIN
KEY "VIA RESIDENZA FISCALE"
PROMPT 39 29 ""
FIELD 216@->INDRES[1,18]
FLAGS "H"
MESSAGE COPY,12|COPY,107
END
STRING 39
BEGIN
KEY "NUM.CIV"
PROMPT 93 4 ""
FLAGS "H"
FIELD 216@->CIVRES
MESSAGE APPEND,12|APPEND,107
END
STRING 40
BEGIN
KEY "VIA RES FISCALE"
PROMPT 39 29 ""
GROUP 2
END
STRINGA 41
BEGIN
KEY "CAP"
PROMPT 119 29 ""
FIELD 116@->CAPRF
GROUP 2
END
STRINGA 42
BEGIN
KEY "DATA APP.BILANCIO gg-mm-aaa"
PROMPT 29 31 ""
FORMAT "1444-"
PICTURE "## ^ ##^^^^^"
GROUP 2
END
STRINGA 43
BEGIN
KEY "Termine per APP.BILANCIO gg-mm-aaa"
PROMPT 88 31 ""
FORMAT "1444-"
PICTURE "## ^ ##^^^^^"
GROUP 2
END
STRINGA 48
BEGIN
KEY "STATO"
PROMPT 29 33 ""
FIELD 118@->STATOSOC
GROUP 2
END
STRINGA 49
BEGIN
KEY "NAT.GIURIDICA"
PROMPT 49 33 ""
FIELD 118@->NATGIU
GROUP 2
END
STRINGA 50
BEGIN
KEY "SITUAZIONE"
PROMPT 73 33 ""
FIELD 118@->SITSOC
GROUP 2
END
STRINGA 51
BEGIN
KEY "TELEFONO - PREF"
PROMPT 99 33 ""
GROUP 2
END
STRINGA 52
BEGIN
KEY "TELEFONO - NUMERO"
PROMPT 110 33 ""
GROUP 2
END
NUMBER 53
BEGIN
KEY "NUMERO ESTINTI"
PROMPT 66 35 ""
END
STRINGA 54
BEGIN
KEY "Dati RAPP. - COFI"
PROMPT 22 37 ""
FIELD 216@->COFI
END
LISTA 55
BEGIN
KEY "CODICE CARICA 1"
PROMPT 85 37 ""
ITEM "1|X"
ITEM "2|"
ITEM "3|"
ITEM "4|"
ITEM "5|"
ITEM "6|"
FIELD 36->CARRAPP
END
LISTA 56
BEGIN
KEY "CODICE CARICA 2"
PROMPT 94 37 ""
ITEM "1|"
ITEM "2|X"
ITEM "3|"
ITEM "4|"
ITEM "5|"
ITEM "6|"
FIELD 36->CARRAPP
END
LISTA 57
BEGIN
KEY "CODICE CARICA 3"
PROMPT 102 37 ""
ITEM "1|"
ITEM "2|"
ITEM "3|X"
ITEM "4|"
ITEM "5|"
ITEM "6|"
FIELD 36->CARRAPP
END
LISTA 58
BEGIN
KEY "CODICE CARICA 4"
PROMPT 110 37 ""
ITEM "1|"
ITEM "2|"
ITEM "3|"
ITEM "4|X"
ITEM "5|"
ITEM "6|"
FIELD 36->CARRAPP
END
LISTA 59
BEGIN
KEY "CODICE CARICA 5"
PROMPT 119 37 ""
ITEM "1|"
ITEM "2|"
ITEM "3|"
ITEM "4|"
ITEM "5|X"
ITEM "6|"
FIELD 36->CARRAPP
END
LISTA 60
BEGIN
KEY "CODICE CARICA 6"
PROMPT 127 37 ""
ITEM "1|"
ITEM "2|"
ITEM "3|"
ITEM "4|"
ITEM "5|"
ITEM "6|X"
FIELD 36->CARRAPP
END
STRINGA 61
BEGIN
KEY "RAPP.COGNOME"
PROMPT 22 39 ""
FIELD 216@->RAGSOC[1,30]
END
STRINGA 62
BEGIN
KEY "RAPP.NOME"
PROMPT 80 39 ""
FIELD 216@->RAGSOC[31,50]
END
LISTA 63
BEGIN
KEY "RAPP.SESSO"
PROMPT 119 39 ""
ITEM "M|X"
ITEM "F|"
ITEM "|"
FIELD 216@->SESSO
END
LISTA 64
BEGIN
KEY "RAPP.SESSO"
PROMPT 127 39 ""
ITEM "M|"
ITEM "F|X"
ITEM "|"
FIELD 216@->SESSO
END
STRINGA 65
BEGIN
KEY "RAPP.DATANAGG"
PROMPT 22 41 ""
FORMAT "1444-"
PICTURE "## ^ ##^^^^^"
FIELD 216@->DATANASC
END
STRINGA 68
BEGIN
KEY "COMUNE NA"
PROMPT 46 41 ""
FIELD 313@->DENCOM
END
STRINGA 69
BEGIN
KEY "PROV NA"
PROMPT 119 41 ""
FIELD 313@->PROVCOM
END
STRINGA 70
BEGIN
KEY "COMUNE RES"
PROMPT 41 43 ""
FIELD 413@->DENCOM
END
STRINGA 71
BEGIN
KEY "PROV RES"
PROMPT 99 43 ""
FIELD 413@->PROVCOM
END
STRINGA 72
BEGIN
KEY "CAP RES"
PROMPT 119 43 ""
FIELD 413@->CAPRF
FIELD 413@->CAPRES
END
STRINGA 73
BEGIN
KEY "IND RES"
PROMPT 41 45 ""
FIELD 413@->INDRF
FIELD 413@->INDRES
END
STRINGA 74
BEGIN
KEY "TELEFONO PREFISSO"
PROMPT 99 45 ""
FIELD 216@->PTELRF
END
STRINGA 75
BEGIN
KEY "TELEFONO NUMERO"
PROMPT 111 45 ""
FIELD 216@->TELRF
END
END

View File

@ -338,7 +338,7 @@ class TVersamento_stampa : public TVersamento
////////////////////////////////////////////////////////////////////////////
typedef enum { nessuno=0, fattura=1, pagamento=3, versamento=4,
ritenuta=6, pagamento_piu_perc=7 } TTipo_coll;
occasionale=6, pagamento_piu_perc=7 } TTipo_coll;
struct TLink770
{

View File

@ -55,6 +55,7 @@
#define RICERCA_DIP 4
#define RICERCA_QB 5
#define GROUP_ALL 6
#define G_DISABILI 7
#define QBG_ANADIP 1
#define QBG_QUADROB 2

View File

@ -182,25 +182,9 @@ BEGIN
FLAGS "R"
END
NUMBER F_UTPAG 15
BEGIN
PROMPT 2 14 "Utili pagati "
FIELD LF_QUAGD->UTPAG
PICTURE "."
FLAGS "R"
END
NUMBER F_ROPE 15
BEGIN
PROMPT 40 14 "Rit. utili pagati "
FIELD LF_QUAGD->ROPE
PICTURE "."
FLAGS "R"
END
NUMBER F_UTSPETT 15
BEGIN
PROMPT 2 16 "Utili spettanti "
PROMPT 2 14 "Utili spettanti "
FIELD LF_QUAGD->UTSPETT
PICTURE "."
FLAGS "R"
@ -208,12 +192,28 @@ END
NUMBER F_ROPESPET 15
BEGIN
PROMPT 40 16 "Rit.ut. spettanti "
PROMPT 40 14 "Rit.ut. spettanti "
FIELD LF_QUAGD->ROPESPET
PICTURE "."
FLAGS "R"
END
NUMBER F_UTPAG 15
BEGIN
PROMPT 2 16 "Utili pagati "
FIELD LF_QUAGD->UTPAG
PICTURE "."
FLAGS "R"
END
NUMBER F_ROPE 15
BEGIN
PROMPT 40 16 "Rit. utili pagati "
FIELD LF_QUAGD->ROPE
PICTURE "."
FLAGS "R"
END
ENDPAGE
ENDMASK

View File

@ -1,103 +1,104 @@
// Mod.770 - Archivio BASE
#define BSE_CODDITTA "CODDITTA"
#define BSE_CODDIC "CODDIC"
#define BSE_TIPOQUA "TIPOQUA"
#define BSE_CODDATLAV "CODDATLAV"
#define BSE_ANNODIC "ANNODIC"
#define BSE_ER92C93 "ER92C93"
#define BSE_ER93C94 "ER93C94"
#define BSE_NATTVER "NATTVER"
#define BSE_EVNATTEC "EVNATTEC"
#define BSE_CODCAAF "CODCAAF"
#define BSE_CODPRO "CODPRO"
#define BSE_N73093ALL "N73093ALL"
#define BSE_SERIE "SERIE"
#define BSE_DATAVERS "DATAVERS"
#define BSE_NUMERO "NUMERO"
#define BSE_A0NFCOM "A0NFCOM"
#define BSE_A0NLDIP "A0NLDIP"
#define BSE_A0COBB "A0COBB"
#define BSE_A0CNET "A0CNET"
#define BSE_A0EPREV "A0EPREV"
#define BSE_A0IITRA "A0IITRA"
#define BSE_A0CTER "A0CTER"
#define BSE_A0TIMP "A0TIMP"
#define BSE_A0ILOR "A0ILOR"
#define BSE_A0TDET "A0TDET"
#define BSE_A0RTER "A0RTER"
#define BSE_A0RDAT "A0RDAT"
#define BSE_A0ERIT "A0ERIT"
#define BSE_A0CARR "A0CARR"
#define BSE_A0AARR "A0AARR"
#define BSE_A0DARR "A0DARR"
#define BSE_A0RARR "A0RARR"
#define BSE_A0RITSI "A0RITSI"
#define BSE_A0CINPS "A0CINPS"
#define BSE_A0RITOPEVA "A0RITOPEVA"
#define BSE_A0RITOPESA "A0RITOPESA"
#define BSE_A0CIIAUT "A0CIIAUT"
#define BSE_A0NADLAV "A0NADLAV"
#define BSE_A0NACAAF "A0NACAAF"
#define BSE_A0CRIMPRAS "A0CRIMPRAS"
#define BSE_A3NFCOM "A3NFCOM"
#define BSE_A3NUMPER "A3NUMPER"
#define BSE_A3REPT10 "A3REPT10"
#define BSE_A3REPT12 "A3REPT12"
#define BSE_B0NFCOM "B0NFCOM"
#define BSE_B0NLDIP "B0NLDIP"
#define BSE_B0TFR93 "B0TFR93"
#define BSE_B0AI "B0AI"
#define BSE_B0COLAV "B0COLAV"
#define BSE_B0TFR7492 "B0TFR7492"
#define BSE_B0AI7492 "B0AI7492"
#define BSE_B0RITSI "B0RITSI"
#define BSE_B0IMP "B0IMP"
#define BSE_B0TIMP "B0TIMP"
#define BSE_B0ROP "B0ROP"
#define BSE_B0AIINPS "B0AIINPS"
#define BSE_B0ROPESA "B0ROPESA"
#define BSE_B0CIIAUT "B0CIIAUT"
#define BSE_B1NFCOM "B1NFCOM"
#define BSE_B1NPER "B1NPER"
#define BSE_B1TIND "B1TIND"
#define BSE_B1TIRM "B1TIRM"
#define BSE_B1TICOM "B1TICOM"
#define BSE_C0NFCOM "C0NFCOM"
#define BSE_C0NLASS "C0NLASS"
#define BSE_C0ACTOT "C0ACTOT"
#define BSE_C0SNSRIT "C0SNSRIT"
#define BSE_C0ROPE "C0ROPE"
#define BSE_C0CIIAUT "C0CIIAUT"
#define BSE_D0NFCOM "D0NFCOM"
#define BSE_D0NLAUT "D0NLAUT"
#define BSE_D0ACTOT "D0ACTOT"
#define BSE_D0SNSRIT "D0SNSRIT"
#define BSE_D0ROPE "D0ROPE"
#define BSE_D0CIIAUT "D0CIIAUT"
#define BSE_D1NFCOM "D1NFCOM"
#define BSE_D1NPER "D1NPER"
#define BSE_D1TACOR "D1TACOR"
#define BSE_D1SNSRIT "D1SNSRIT"
#define BSE_D1ROPE "D1ROPE"
#define BSE_QCOMP "QCOMP"
#define BSE_QSUPPINV "QSUPPINV"
#define BSE_NSUPPM "NSUPPM"
#define BSE_LUOVERS "LUOVERS"
#define BSE_TIPOVERS "TIPOVERS"
#define BSE_RSS "RSS"
#define BSE_FLART4 "FLART4"
#define BSE_QSUPPRIC "QSUPPRIC"
#define BSE_DITTACAAF "DITTACAAF"
#define I8_1 "B0NFCOM"
#define I8_2 "B0NLDIP"
#define I8_3 "B0TFR93"
#define I8_4 "B0AI"
#define I8_5 "B0COLAV"
#define I8_6 "B0TFR7492"
#define I9_7 "B0AI7492"
#define I9_8 "B0IMP"
#define I9_9 "B0TIMP"
#define I9_10 "B0ROP"
// Mod.770 - Archivio BASE
#define BSE_CODDITTA "CODDITTA"
#define BSE_CODDIC "CODDIC"
#define BSE_TIPOQUA "TIPOQUA"
#define BSE_CODDATLAV "CODDATLAV"
#define BSE_ANNODIC "ANNODIC"
#define BSE_ER92C93 "ER92C93"
#define BSE_ER93C94 "ER93C94"
#define BSE_NATTVER "NATTVER"
#define BSE_EVNATTEC "EVNATTEC"
#define BSE_CODCAAF "CODCAAF"
#define BSE_CODPRO "CODPRO"
#define BSE_N73093ALL "N73093ALL"
#define BSE_SERIE "SERIE"
#define BSE_DATAVERS "DATAVERS"
#define BSE_NUMERO "NUMERO"
#define BSE_A0NFCOM "A0NFCOM"
#define BSE_A0NLDIP "A0NLDIP"
#define BSE_A0COBB "A0COBB"
#define BSE_A0CNET "A0CNET"
#define BSE_A0EPREV "A0EPREV"
#define BSE_A0IITRA "A0IITRA"
#define BSE_A0CTER "A0CTER"
#define BSE_A0TIMP "A0TIMP"
#define BSE_A0ILOR "A0ILOR"
#define BSE_A0TDET "A0TDET"
#define BSE_A0RTER "A0RTER"
#define BSE_A0RDAT "A0RDAT"
#define BSE_A0ERIT "A0ERIT"
#define BSE_A0CARR "A0CARR"
#define BSE_A0AARR "A0AARR"
#define BSE_A0DARR "A0DARR"
#define BSE_A0RARR "A0RARR"
#define BSE_A0RITSI "A0RITSI"
#define BSE_A0CINPS "A0CINPS"
#define BSE_A0RITOPEVA "A0RITOPEVA"
#define BSE_A0RITOPESA "A0RITOPESA"
#define BSE_A0CIIAUT "A0CIIAUT"
#define BSE_A0NADLAV "A0NADLAV"
#define BSE_A0NACAAF "A0NACAAF"
#define BSE_A0CRIMPRAS "A0CRIMPRAS"
#define BSE_A3NFCOM "A3NFCOM"
#define BSE_A3NUMPER "A3NUMPER"
#define BSE_A3REPT10 "A3REPT10"
#define BSE_A3REPT12 "A3REPT12"
#define BSE_B0NFCOM "B0NFCOM"
#define BSE_B0NLDIP "B0NLDIP"
#define BSE_B0TFR93 "B0TFR93"
#define BSE_B0AI "B0AI"
#define BSE_B0COLAV "B0COLAV"
#define BSE_B0TFR7492 "B0TFR7492"
#define BSE_B0AI7492 "B0AI7492"
#define BSE_B0RITSI "B0RITSI"
#define BSE_B0IMP "B0IMP"
#define BSE_B0TIMP "B0TIMP"
#define BSE_B0ROP "B0ROP"
#define BSE_B0AIINPS "B0AIINPS"
#define BSE_B0ROPESA "B0ROPESA"
#define BSE_B0CIIAUT "B0CIIAUT"
#define BSE_B1NFCOM "B1NFCOM"
#define BSE_B1NPER "B1NPER"
#define BSE_B1TIND "B1TIND"
#define BSE_B1TIRM "B1TIRM"
#define BSE_B1TICOM "B1TICOM"
#define BSE_C0NFCOM "C0NFCOM"
#define BSE_C0NLASS "C0NLASS"
#define BSE_C0ACTOT "C0ACTOT"
#define BSE_C0SNSRIT "C0SNSRIT"
#define BSE_C0ROPE "C0ROPE"
#define BSE_C0CIIAUT "C0CIIAUT"
#define BSE_D0NFCOM "D0NFCOM"
#define BSE_D0NLAUT "D0NLAUT"
#define BSE_D0ACTOT "D0ACTOT"
#define BSE_D0SNSRIT "D0SNSRIT"
#define BSE_D0ROPE "D0ROPE"
#define BSE_D0CIIAUT "D0CIIAUT"
#define BSE_D1NFCOM "D1NFCOM"
#define BSE_D1NPER "D1NPER"
#define BSE_D1TACOR "D1TACOR"
#define BSE_D1SNSRIT "D1SNSRIT"
#define BSE_D1ROPE "D1ROPE"
#define BSE_QCOMP "QCOMP"
#define BSE_QSUPPINV "QSUPPINV"
#define BSE_NSUPPM "NSUPPM"
#define BSE_LUOVERS "LUOVERS"
#define BSE_TIPOVERS "TIPOVERS"
#define BSE_RSS "RSS"
#define BSE_FLART4 "FLART4"
#define BSE_QSUPPRIC "QSUPPRIC"
#define BSE_DITTACAAF "DITTACAAF"
#define BSE_C0CONTSSN "C0CONTSSN"
#define I8_1 "B0NFCOM"
#define I8_2 "B0NLDIP"
#define I8_3 "B0TFR93"
#define I8_4 "B0AI"
#define I8_5 "B0COLAV"
#define I8_6 "B0TFR7492"
#define I9_7 "B0AI7492"
#define I9_8 "B0IMP"
#define I9_9 "B0TIMP"
#define I9_10 "B0ROP"

View File

@ -23,5 +23,8 @@
#define TCF_COMMINPS 118
#define TCF_PERCASSPREV 119
#define G_INPS 10
#define INPS_GROUP 7
#define GR_CAUDD1 8
#define G_ICTS 9

View File

@ -3,10 +3,6 @@ TOOLBAR "" 0 20 0 2
#include <toolbar.h>
ENDPAGE
#define INPS_GROUP 7
#define GR_CAUDD1 8
#define G_ICTS 9
PAGE "Tabella causali modello 770" -1 -1 78 18
GROUPBOX DLG_NULL 77 8
@ -54,20 +50,19 @@ LIST F_QUADRCE2 2
BEGIN
PROMPT 1 3 "Codice quadro "
HELP "Inserire il codice quadro"
ITEM "| "
MESSAGE DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "C|C"
MESSAGE ENABLE,F_CT|DISABLE,F_IC|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|ENABLE,F_CT|DISABLE,F_IC|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "D|D"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD1|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE ENABLE,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD1|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "D1|D1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD|DISABLE,GR_CAUDD1@||ENABLE,TCF_CAUSD1|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE ENABLE,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD|DISABLE,GR_CAUDD1@||ENABLE,TCF_CAUSD1|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "E|E"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "E1|E1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE COPY,F_CODQUA
WARNING "Manca il codice quadro"
CHECKTYPE REQUIRED
FIELD LF_TABCOM->S1
END
@ -75,57 +70,56 @@ LIST F_QUADRAT 2
BEGIN
PROMPT 1 3 "Codice quadro "
HELP "Inserire il codice quadro"
ITEM "| "
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "A|A"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "A1|A1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "A2|A2"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "A3|A3"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "B|B"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "B1|B1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "C|C"
MESSAGE ENABLE,F_CT|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|ENABLE,F_IC|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|ENABLE,F_CT|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|ENABLE,F_IC|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "D|D"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD1|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE ENABLE,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD1|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "D1|D1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD1|DISABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE ENABLE,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_CAUSD|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD1|DISABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "E|E"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "E1|E1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "E2|E2"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|HIDE,F_DESCR1|SHOW,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|HIDE,F_DESCR1|SHOW,F_DESCR2
ITEM "F|F"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "F1|F1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "F2|F2"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|HIDE,F_DESCR1|SHOW,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|HIDE,F_DESCR1|SHOW,F_DESCR2
ITEM "G|G"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "G1|G1"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "N|N"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "P|P"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "Q|Q"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "R|R"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "S|S"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "T|T"
MESSAGE RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE CLEAR,G_INPS@|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,GR_CAUDD1@|DISABLE,GR_CAUDD1@|SHOW,F_DESCR1|HIDE,F_DESCR2
MESSAGE COPY,F_QUADRCE2
MESSAGE COPY,F_CODQUA
WARNING "Manca il codice quadro"
CHECKTYPE REQUIRED
FIELD LF_TABCOM->S1
END
@ -322,7 +316,8 @@ END
BOOLEAN TCF_BINPS
BEGIN
PROMPT 1 14 "Contributo INPS "
FIELD LF_TABCOM->B4
FIELD LF_TABCOM->B4
GROUP G_INPS
MESSAGE TRUE ENABLE,INPS_GROUP@
MESSAGE FALSE DISABLE,INPS_GROUP@
END

View File

@ -20,6 +20,7 @@ class TQuadriBB1_application : public TRelation_application
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 bool QBCalcola37 (TMask_field& f, KEY k);
static void BB1SettaCognomeNome(TMask& m);
const char* _maskname;
int _num;
@ -167,6 +168,8 @@ TMask* TQuadriBB1_application::load_mask(int n)
m->set_handler(QBF_CONTLAV, QBTotIndennHandler);
m->set_handler(QBF_TFR7494, QBTotIndennHandler);
m->set_handler(QBF_INDEN7494, QBTotIndennHandler);
m->set_handler(QBF_TIND7494, QBCalcola37); // 28
m->set_handler(QBF_TRID, QBCalcola37); // 29
}
// m->disable(DLG_FINDREC);
break;
@ -176,6 +179,22 @@ TMask* TQuadriBB1_application::load_mask(int n)
return _msk[n] = m;
}
bool TQuadriBB1_application::QBCalcola37(TMask_field& f, KEY k)
{
if (k==K_TAB)
{
TMask& m=f.mask();
real c28=m.get_real(QBF_TIND7494);
real c29=m.get_real(QBF_TRID);
real c37 = c28 - c29;
if (c37 < ZERO)
c37 = ZERO;
TString c37s(c37.string());
m.set(QBF_TOTIMP,c37s);
}
return TRUE;
}
bool TQuadriBB1_application::MaskConAnnoDic() const
{
return _MaskConAnnoDic;
@ -588,8 +607,12 @@ bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k)
real c27 = m.get_real(QBF_INDEN7494);
real c28 = c20 + c24 - c25 + c26 + c27;
if (c28 < ZERO)
c28 = ZERO;
TString c28s(c28.string());
m.set(QBF_TIND7494, c28s);
m.set(QBF_TIND7494, c28s);
// Ricalcola il 37 da qui perche' il 28 e' disabilitato
QBCalcola37(f,k);
}
}
return TRUE;

View File

@ -1,370 +1,370 @@
// quadn_t.cpp
#include <relapp.h>
#include <urldefid.h>
#include <tabutil.h>
#include <config.h>
#include "774200.h"
#include "77lib.h"
#include "quadron.h"
#include "77qn.h"
#include "77qq.h"
#include "77qp.h"
#define CODDITTA77 181
#define ANNODIC77 182
class TQuadriNT_application : public TRelation_application
{
static bool codditta77_handler (TMask_field& m, KEY k);
static bool nprog_handler (TMask_field& m, KEY k);
static bool anno_handler (TMask_field& m, KEY k);
static bool mese_handler (TMask_field& f, KEY k);
static bool codreg_handler (TMask_field& f, KEY k);
static bool codtrib_handler (TMask_field& f, KEY k);
static bool tipo (TMask_field& f , KEY k);
static bool luogo (TMask_field& f , KEY k);
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;
bool _registra;
int _anno_dic;
bool _MaskConAnnoDic, _MaskConCodditta;
bool MaskConAnnoDic() const;
bool MaskConCodditta() const { return _MaskConCodditta; }
void LeggiMask();
bool EsisteUnRec();
bool QuadroNoR() const { return _num == LF_QUAN || _num == LF_QUAR; }
bool QuadroPoS() const { return _num == LF_QUAP || _num == LF_QUAS; }
bool QuadroQoT() const { return _num == LF_QUAQ || _num == LF_QUAT; }
bool CheckImporti(const TMask& m);
long _codditta;
protected:
virtual bool user_create();
virtual bool user_destroy();
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) { return _msk; }
virtual bool changing_mask(int) { return FALSE;}
virtual TRelation* get_relation() const { return _rel; }
virtual void init_mask(TMask&);
virtual void init_query_mode(TMask&);
virtual void init_insert_mode(TMask&);
virtual void init_query_insert_mode(TMask&);
public:
TQuadriNT_application(const char* name, const int num, const char* quadro);
};
TQuadriNT_application::TQuadriNT_application(const char* name, const int num, const char* quadro)
: _maskname(name), _num(num),
_MaskConCodditta(FALSE), _MaskConAnnoDic(FALSE),
_msk(NULL), _rel(NULL), _quadro(quadro)
{
switch (_num)
{
case LF_QUAN:
_pos_quadro = N;
break;
case LF_QUAR:
_pos_quadro = R;
break;
case LF_QUAP:
_pos_quadro = P;
break;
case LF_QUAQ:
_pos_quadro = Q;
break;
case LF_QUAS:
_pos_quadro = S;
break;
case LF_QUAT:
_pos_quadro = T;
break;
}
}
TQuadriNT_application& app() { return (TQuadriNT_application&)main_app(); }
void TQuadriNT_application::LeggiMask()
{
_MaskConAnnoDic = _msk->id2pos(ANNODIC77) > 0;
_MaskConCodditta = _msk->id2pos(CODDITTA77) > 0;
}
bool TQuadriNT_application::MaskConAnnoDic() const
{
return _MaskConAnnoDic;
}
void TQuadriNT_application::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year());
}
bool TQuadriNT_application::user_create()
{
_msk = new TMask(_maskname);
_rel = new TRelation(_num);
_codditta = get_firm_770();
_msk->set_handler(CODDITTA77, codditta77_handler);
_msk->set_handler(QNF_NPROG, nprog_handler);
if (QuadroNoR())
{
_msk->set_handler(QNF_ANNORIF, anno_handler);
_msk->set_handler(QNF_MESERIF, mese_handler);
}
if (QuadroQoT())
{
_msk->set_handler(QNF_ANNORIF, anno_handler);
_msk->set_handler(QNF_MESERIF, mese_handler);
_msk->set_handler(QQF_CODREG, codreg_handler);
}
if (QuadroPoS())
_msk->set_handler(QPF_CODTRIB, codtrib_handler);
_registra = FALSE;
set_search_field(QNF_NPROG);
return TRUE;
}
bool TQuadriNT_application::EsisteUnRec()
{
TLocalisamfile qn(_num);
qn.zero();
qn.put(QN_CODDITTA, (long)app()._codditta);
TRectype dep(qn.curr());
qn.read(_isgteq);
if (qn.curr() > dep || qn.eof())
return FALSE;
else
return TRUE;
}
bool TQuadriNT_application::user_destroy()
{
if (_quadro != "")
if (_registra)
_rip.set_compilato(_codditta, _pos_quadro, EsisteUnRec());
delete _msk;
delete _rel;
return TRUE;
}
// Controlla che ci siano o l'imposta o i compensi
// NB che siano uguali QNF_IMPOSTA anche nei corrispondenti campi dei
// quadri Q, R e T (107 e 106)
bool TQuadriNT_application::CheckImporti(const TMask& m)
{
TString impost(m.get(QNF_IMPOSTA));
TString compen(m.get(QNF_COMPENSI));
return impost.not_empty() || compen.not_empty();
}
int TQuadriNT_application::rewrite(const TMask& m)
{
m.autosave(*_rel);
const int err = _rel->rewrite();
_registra = err == NOERR;
return err;
}
int TQuadriNT_application::write(const TMask& m)
{
m.autosave(*_rel);
const int err = _rel->write();
_registra = err == NOERR;
return err;
}
bool TQuadriNT_application::remove()
{
_registra = TRUE;
return TRelation_application::remove();
}
void TQuadriNT_application::init_mask(TMask& m)
{
m.set(ANNODIC77, _anno_dic);
}
void TQuadriNT_application::init_query_mode(TMask& m)
{
init_mask(m);
}
void TQuadriNT_application::init_insert_mode(TMask& m)
{
init_mask(m);
}
void TQuadriNT_application::init_query_insert_mode(TMask& m)
{
init_mask(m);
}
bool TQuadriNT_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 quadriN_T(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];
TQuadriNT_application a(mask, num, quadro);
a.run(argc, argv, title ? title : "Test Relation Application");
return 0;
}
bool TQuadriNT_application::anno_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca l'anno");
else
if (!app().CheckImporti(m))
return f.warning_box("Manca almeno un importo");
}
return TRUE;
}
bool TQuadriNT_application::mese_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il mese");
}
return TRUE;
}
// Per i Quadri Q e T
bool TQuadriNT_application::codreg_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il codice regione");
}
return TRUE;
}
// Per i Quadri P e S. Codice tributo REQUIRED
bool TQuadriNT_application::codtrib_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il codice tributo");
}
return TRUE;
}
bool TQuadriNT_application::nprog_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
TMask& m = f.mask();
// Propone il primo numero disponibile quando la maschera e' ancora "off"
if (!m.is_running())
{
long nprog = 0L;
TLocalisamfile qnr(app()._num);
qnr.zero();
qnr.put(QN_CODDITTA, (long)app()._codditta);
TRectype dep(qnr.curr());
for (qnr.read(_isgteq); !qnr.eof(); qnr.next())
{
if (qnr.curr() > dep) break;
nprog = qnr.get_long(QN_NPROG);
}
nprog++;
TString16 nprog_str; nprog_str << nprog;
f.mask().set(QNF_NPROG, nprog_str);
}
// Quando la maschera e' running, se c'e' NPROG la chiude
else
{
TString nprogstr(f.get());
if (nprogstr.not_empty())
m.stop_run(K_AUTO_ENTER);
}
}
return TRUE;
}
bool TQuadriNT_application::tipo(TMask_field& f , KEY k)
{
/*
if (k == K_SPACE)
{
char tipo = f.mask().get(F_QLTIPOVERS)[0];
char luogo = f.mask().get(F_QLLUOVERS)[0];
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
else
f.mask().show(F_QLSERIE);
}
*/
return TRUE;
}
bool TQuadriNT_application::luogo(TMask_field& f , KEY k)
{
/*
if (k == K_SPACE)
{
char tipo = f.mask().get(F_QLTIPOVERS)[0];
char luogo = f.mask().get(F_QLLUOVERS)[0];
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
else
f.mask().show(F_QLSERIE);
}
*/
return TRUE;
}
// quadn_t.cpp
#include <relapp.h>
#include <urldefid.h>
#include <tabutil.h>
#include <config.h>
#include "774200.h"
#include "77lib.h"
#include "quadron.h"
#include "77qn.h"
#include "77qq.h"
#include "77qp.h"
#define CODDITTA77 181
#define ANNODIC77 182
class TQuadriNT_application : public TRelation_application
{
static bool codditta77_handler (TMask_field& m, KEY k);
static bool nprog_handler (TMask_field& m, KEY k);
static bool anno_handler (TMask_field& m, KEY k);
static bool mese_handler (TMask_field& f, KEY k);
static bool codreg_handler (TMask_field& f, KEY k);
static bool codtrib_handler (TMask_field& f, KEY k);
static bool tipo (TMask_field& f , KEY k);
static bool luogo (TMask_field& f , KEY k);
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;
bool _registra;
int _anno_dic;
bool _MaskConAnnoDic, _MaskConCodditta;
bool MaskConAnnoDic() const;
bool MaskConCodditta() const { return _MaskConCodditta; }
void LeggiMask();
bool EsisteUnRec();
bool QuadroNoR() const { return _num == LF_QUAN || _num == LF_QUAR; }
bool QuadroPoS() const { return _num == LF_QUAP || _num == LF_QUAS; }
bool QuadroQoT() const { return _num == LF_QUAQ || _num == LF_QUAT; }
bool CheckImporti(const TMask& m);
long _codditta;
protected:
virtual bool user_create();
virtual bool user_destroy();
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) { return _msk; }
virtual bool changing_mask(int) { return FALSE;}
virtual TRelation* get_relation() const { return _rel; }
virtual void init_mask(TMask&);
virtual void init_query_mode(TMask&);
virtual void init_insert_mode(TMask&);
virtual void init_query_insert_mode(TMask&);
public:
TQuadriNT_application(const char* name, const int num, const char* quadro);
};
TQuadriNT_application::TQuadriNT_application(const char* name, const int num, const char* quadro)
: _maskname(name), _num(num),
_MaskConCodditta(FALSE), _MaskConAnnoDic(FALSE),
_msk(NULL), _rel(NULL), _quadro(quadro)
{
switch (_num)
{
case LF_QUAN:
_pos_quadro = N;
break;
case LF_QUAR:
_pos_quadro = R;
break;
case LF_QUAP:
_pos_quadro = P;
break;
case LF_QUAQ:
_pos_quadro = Q;
break;
case LF_QUAS:
_pos_quadro = S;
break;
case LF_QUAT:
_pos_quadro = T;
break;
}
}
TQuadriNT_application& app() { return (TQuadriNT_application&)main_app(); }
void TQuadriNT_application::LeggiMask()
{
_MaskConAnnoDic = _msk->id2pos(ANNODIC77) > 0;
_MaskConCodditta = _msk->id2pos(CODDITTA77) > 0;
}
bool TQuadriNT_application::MaskConAnnoDic() const
{
return _MaskConAnnoDic;
}
void TQuadriNT_application::on_config_change()
{
TConfig conf(CONFIG_STUDIO);
_anno_dic = (int)conf.get_long(ANNO_SEL, NULL, -1, TDate(TODAY).year());
}
bool TQuadriNT_application::user_create()
{
_msk = new TMask(_maskname);
_rel = new TRelation(_num);
_codditta = get_firm_770();
_msk->set_handler(CODDITTA77, codditta77_handler);
_msk->set_handler(QNF_NPROG, nprog_handler);
if (QuadroNoR())
{
_msk->set_handler(QNF_ANNORIF, anno_handler);
_msk->set_handler(QNF_MESERIF, mese_handler);
}
if (QuadroQoT())
{
_msk->set_handler(QNF_ANNORIF, anno_handler);
_msk->set_handler(QNF_MESERIF, mese_handler);
_msk->set_handler(QQF_CODREG, codreg_handler);
}
if (QuadroPoS())
_msk->set_handler(QPF_CODTRIB, codtrib_handler);
_registra = FALSE;
set_search_field(QNF_NPROG);
return TRUE;
}
bool TQuadriNT_application::EsisteUnRec()
{
TLocalisamfile qn(_num);
qn.zero();
qn.put(QN_CODDITTA, (long)app()._codditta);
TRectype dep(qn.curr());
qn.read(_isgteq);
if (qn.curr() > dep || qn.eof())
return FALSE;
else
return TRUE;
}
bool TQuadriNT_application::user_destroy()
{
if (_quadro != "")
if (_registra)
_rip.set_compilato(_codditta, _pos_quadro, EsisteUnRec());
delete _msk;
delete _rel;
return TRUE;
}
// Controlla che ci siano o l'imposta o i compensi
// NB che siano uguali QNF_IMPOSTA anche nei corrispondenti campi dei
// quadri Q, R e T (107 e 106)
bool TQuadriNT_application::CheckImporti(const TMask& m)
{
TString impost(m.get(QNF_IMPOSTA));
TString compen(m.get(QNF_COMPENSI));
return impost.not_empty() || compen.not_empty();
}
int TQuadriNT_application::rewrite(const TMask& m)
{
m.autosave(_rel);
const int err = _rel->rewrite();
_registra = err == NOERR;
return err;
}
int TQuadriNT_application::write(const TMask& m)
{
m.autosave(_rel);
const int err = _rel->write();
_registra = err == NOERR;
return err;
}
bool TQuadriNT_application::remove()
{
_registra = TRUE;
return TRelation_application::remove();
}
void TQuadriNT_application::init_mask(TMask& m)
{
m.set(ANNODIC77, _anno_dic);
}
void TQuadriNT_application::init_query_mode(TMask& m)
{
init_mask(m);
}
void TQuadriNT_application::init_insert_mode(TMask& m)
{
init_mask(m);
}
void TQuadriNT_application::init_query_insert_mode(TMask& m)
{
init_mask(m);
}
bool TQuadriNT_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 quadriN_T(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];
TQuadriNT_application a(mask, num, quadro);
a.run(argc, argv, title ? title : "Test Relation Application");
return 0;
}
bool TQuadriNT_application::anno_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca l'anno");
else
if (!app().CheckImporti(m))
return f.warning_box("Manca almeno un importo");
}
return TRUE;
}
bool TQuadriNT_application::mese_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il mese");
}
return TRUE;
}
// Per i Quadri Q e T
bool TQuadriNT_application::codreg_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il codice regione");
}
return TRUE;
}
// Per i Quadri P e S. Codice tributo REQUIRED
bool TQuadriNT_application::codtrib_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (k == K_ENTER && (modifica(m) || inserimento(m)) )
{
TString dep(f.get());
if (dep.empty())
return f.warning_box("Manca il codice tributo");
}
return TRUE;
}
bool TQuadriNT_application::nprog_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
TMask& m = f.mask();
// Propone il primo numero disponibile quando la maschera e' ancora "off"
if (!m.is_running())
{
long nprog = 0L;
TLocalisamfile qnr(app()._num);
qnr.zero();
qnr.put(QN_CODDITTA, (long)app()._codditta);
TRectype dep(qnr.curr());
for (qnr.read(_isgteq); !qnr.eof(); qnr.next())
{
if (qnr.curr() > dep) break;
nprog = qnr.get_long(QN_NPROG);
}
nprog++;
TString16 nprog_str; nprog_str << nprog;
f.mask().set(QNF_NPROG, nprog_str);
}
// Quando la maschera e' running, se c'e' NPROG la chiude
else
{
TString nprogstr(f.get());
if (nprogstr.not_empty())
m.stop_run(K_AUTO_ENTER);
}
}
return TRUE;
}
bool TQuadriNT_application::tipo(TMask_field& f , KEY k)
{
/*
if (k == K_SPACE)
{
char tipo = f.mask().get(F_QLTIPOVERS)[0];
char luogo = f.mask().get(F_QLLUOVERS)[0];
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
else
f.mask().show(F_QLSERIE);
}
*/
return TRUE;
}
bool TQuadriNT_application::luogo(TMask_field& f , KEY k)
{
/*
if (k == K_SPACE)
{
char tipo = f.mask().get(F_QLTIPOVERS)[0];
char luogo = f.mask().get(F_QLLUOVERS)[0];
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
else
f.mask().show(F_QLSERIE);
}
*/
return TRUE;
}