Correzioni quasi ultime immissione

git-svn-id: svn://10.65.10.50/trunk@3202 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1996-07-18 10:04:12 +00:00
parent d4c7ef3b76
commit 575590459b
29 changed files with 1142 additions and 397 deletions

@ -133,8 +133,8 @@ END
NUMBER 107 6
BEGIN
PROMPT 2 6 "Progressivo per versamento banca "
FLAGS "DZ"
// FLAGS "Z"
// FLAGS "DZ"
FLAGS "Z"
GROUP 2 6
END

@ -236,12 +236,15 @@ void TSchedaPercipienti::ver_pack()
void TSchedaPercipienti::load_pag_sheet(const long numvers)
{
real comp, spese, imp, ritpag;
int i, nriga;
int i, iNumRigaAS;
TSheet_field& pag = pags();
_pags->destroy();
for ( i = 0, nriga = 0; i < pag.items(); i++, nriga++ )
iNumRigaAS = 0; // numero di riga dell'array-sheet. Viene incrementato
// solo quando si trovano pagamenti 'giusti' (cioe' solo
// quando si aggiungono elementi all'array-sheet)
for ( i = 0; i < pag.items(); i++)
{
TToken_string* d = new TToken_string(64);
TToken_string& riga = pag.row(i);
@ -256,11 +259,7 @@ void TSchedaPercipienti::load_pag_sheet(const long numvers)
if (nvers > 0 && nvers != numvers)
continue;
const long npag = nriga;
// Setto il bit alla posizione numpag
if (nvers == numvers)
_selected.set(npag);
const long npag = i;
const int LARGHEZZA_COL = 15;
d->add(" "); // 0 spazio per la 'X' di selezione
@ -283,11 +282,20 @@ void TSchedaPercipienti::load_pag_sheet(const long numvers)
dep.right_just(LARGHEZZA_COL);
d->add(dep);
d->add(nriga, SS_POS_NRIGA);
d->add(i, SS_POS_NRIGA);
// Metto nell'array-sheet anche NUMVERS
d->add(nvers, SS_POS_NVER);
_pags->add(*d); // aggiungo la riga nell'array_sheet
// Setto il bit alla posizione numpag e metto la X
if (nvers == numvers)
{
_selected.set(npag);
_pags->check(iNumRigaAS, TRUE);
}
iNumRigaAS++; // ignoro in questo contatore i pagamenti che NON
// si vedono (se il pagamento e' scartato prima di qui
// non ci passa)
}
}
@ -474,10 +482,11 @@ bool TSchedaPercipienti::pag_select (TMask_field& f, KEY k)
app().load_pag_sheet(numvers);
TNikArray_sheet& ASpags = *app()._pags;
/*
const int iPagsASheetItems = ASpags.items();
// Metto la 'X' per quelli gia' collegati (se e' acceso il bit[NUMPAG])
for (int j = 0; j < ASpags.items(); j++)
ASpags.check(j, selected[j]);
for (int j = 0; j < iPagsASheetItems; j++)
ASpags.check(j, selected[j]);*/
// seleziona e aggiungi alle gia' selezionate
if (ASpags.run() == K_ENTER)
@ -547,8 +556,18 @@ void TSchedaPercipienti::work_tipoluogo(TMask_field& f)
const int row = ss.selected();
m.hide (-2); // nasconde tutto
ss.enable_cell(row,4);
// ss.enable_cell(row,4);
if (tipo == 'B')
{
m.show (-6); // ABI e CAB
m.enable(SM_PROGRBANCA); // abilita progressivo vers.banca
ss.enable_cell(row,6);
}
else
{
m.disable(SM_PROGRBANCA);
ss.disable_cell(row,6);
if (tipo == 'D')
{
@ -558,22 +577,19 @@ void TSchedaPercipienti::work_tipoluogo(TMask_field& f)
ss.disable_cell(row,4);
}
else
m.show(-4); // serie e numero
}
else
if (tipo == 'B')
{
m.show (-6); // ABI e CAB
m.enable(SM_PROGRBANCA); // abilita progressivo vers.banca
ss.enable_cell(row,6);
m.show(-4); // serie e numero
ss.enable_cell(row,4);
}
else
}
// else
if (tipo == 'C')
{
m.show (-5); // SOLO numero versamento
ss.disable_cell(row,4);
}
}
}
bool TSchedaPercipienti::luo_hndl(TMask_field& f, KEY k)
{
@ -582,6 +598,7 @@ bool TSchedaPercipienti::luo_hndl(TMask_field& f, KEY k)
if (k == K_ENTER)
{
work_tipoluogo(f);
TMask& m = f.mask();
char tipo = m.get(F_TIPOVERS)[0];
char luogo = m.get(F_LUOVERS)[0];

@ -21,16 +21,14 @@
#include <urldefid.h>
#include <mailbox.h>
#include <execp.h>
#include "771.h"
#include "771100.h"
#include "../ba/ba4200.h"
#include "../ba/ba4300.h" // per il f_coddittah
#include <comuni.h>
#include <anagr.h>
#include <nditte.h>
#include "77lib.h"
#include "../ba/ba4500.h"
class TDati_anagrafici : public TApplication
@ -44,9 +42,12 @@ class TDati_anagrafici : public TApplication
static bool fisica_handler(TMask_field&, KEY);
static bool giuridica_handler(TMask_field&, KEY);
static bool anagrafica_handler(TMask_field&, KEY);
// bottone ditta in DatiCAAF
static bool DCditta_handler(TMask_field&, KEY);
TMask* _msk;
TRelation* _rel;
char _ana;
long _codditta;
bool Dichiarante() const { return _ana == 'A'; }
bool Rappresentante() const { return _ana == 'C'; }
bool ScrittureContabili() const { return _ana == 'D'; }
@ -96,7 +97,7 @@ bool TDati_anagrafici::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);
@ -137,6 +138,30 @@ bool TDati_anagrafici::attivita_handler(TMask_field& m, KEY k)
return TRUE;
}
bool TDati_anagrafici::DCditta_handler(TMask_field& f, KEY k)
{
if (k != K_SPACE)
return TRUE;
else
{
TMask& m = f.mask();
app().registra();
m.stop_run(K_ESC);
const long lDittaCaaf = m.get_long(F_DITTACAAF);
TToken_string body(16);
body.add("1"); // usa la chiave 1
body.add(lDittaCaaf); // ditta per il campo codice ditta
body.add(lDittaCaaf); // ditta per il secondo campo codice ditta
TString16 cmd("ba4 -2");
TMessage msg(cmd2name(cmd), MSG_LN, (const char*) body);
msg.send();
TExternal_app a(cmd);
a.run();
m.set_focus();
}
return TRUE;
}
bool TDati_anagrafici::fisica_handler(TMask_field& m, KEY k)
{
if (k != K_SPACE)
@ -392,9 +417,7 @@ bool TDati_anagrafici::niscraa(TMask_field& f, KEY k)
f.mask().set(F_NISCRAA, niscraa);
if (dittacaaf != 0)
f.mask().set(F_DITTACAAF, dittacaaf);
}
return TRUE;
}
@ -411,7 +434,6 @@ bool TDati_anagrafici::ditta_caaf(TMask_field& f, KEY k)
if (caaf != 0 && ditta == 0)
return f.warning_box("Se indicato il codice del CAAF deve essere indicata anche la ditta a cui e' collegato");
}
return TRUE;
}
@ -422,9 +444,11 @@ bool TDati_anagrafici::create()
_rel->add(LF_BASE, "CODDITTA=CODDITTA");
_rel->add(LF_BASEBIS, "CODDITTA=CODDITTA");
_codditta = get_firm_770();
if (Dichiarante())
{
char tipo_pers = tipo_persona(get_firm_770());
char tipo_pers = tipo_persona(_codditta);
if (tipo_pers == ' ' || tipo_pers == '\0')
{
message_box("Il titolare della ditta non e' stato compilato correttamente.");
@ -464,6 +488,8 @@ bool TDati_anagrafici::create()
_msk->set_handler(F_ANAGR, niscraa);
_msk->set_handler(F_GIURIDICA, giuridica_handler);
_msk->set_handler(F_DITTACAAF, ditta_caaf);
// bottone ditte
_msk->set_handler(DCF_DITTA, DCditta_handler);
_msk->set_mode(NO_MODE);
}
@ -481,7 +507,7 @@ bool TDati_anagrafici::create()
_msk->set_handler(F_ANAGRAFICA, anagrafica_handler);
}
TString16 codditta; codditta << get_firm_770();
TString16 codditta; codditta << _codditta;
if (codditta != "0")
_msk->set(F_CODDITTA,codditta);
@ -504,7 +530,7 @@ bool TDati_anagrafici::main_loop()
do
{
_rel->lfile().put("CODDITTA", get_firm_770());
_rel->lfile().put("CODDITTA", _codditta);
_rel->read();
_msk->autoload(_rel);
tasto = _msk->run();

@ -115,4 +115,6 @@
#define F_SOC_DATAINPI 413
#define F_SOC_DATAFINPI 414
#define DCF_DITTA 415
#endif

@ -4,24 +4,29 @@ TOOLBAR "" 0 20 0 2
BUTTON F_GIURIDICA 10 2
BEGIN
PROMPT -14 -1 "~Giuridiche"
PROMPT -15 -1 "~Giuridiche"
END
BUTTON DCF_DITTA 10 2
BEGIN
PROMPT -25 -1 "~Ditte"
END
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -24 -1 "~Registra"
PROMPT -35 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -34 -1 ""
PROMPT -45 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -44 -1 ""
PROMPT -55 -1 ""
MESSAGE EXIT,K_QUIT
END

@ -192,8 +192,9 @@ BEGIN
DISPLAY "Cognome@24" COGNOME
DISPLAY "Nome@20" NOME
OUTPUT ADF_CODDIPDEC CODDIP
WARNING "Codice dipendente deceduto non valido"
VALIDATE NOT_EMPTY_CHECK_FIELD
// CHECKTYPE NORMAL
CHECKTYPE NORMAL
END
LISTBOX ADF_ASSFIS 1 40

@ -33,8 +33,9 @@ bool QA_cerca_codA(const long codditta, const long coddip, TString& quadro)
qq.put(QUA_CODDITTA, codditta);
qq.put(QUA_CODIP, coddip);
TRectype dep(qq.curr());
for (qq.read(); !qq.eof(); qq.next())
qq.read();
TRecnotype lPos = qq.recno();
for ( ;!qq.eof(); qq.next())
{
if (qq.curr() > dep) break;
c58 = qq.get(QUA_RETCON);
@ -44,6 +45,7 @@ bool QA_cerca_codA(const long codditta, const long coddip, TString& quadro)
break;
}
}
qq.readat(lPos);
return Result;
}
@ -78,7 +80,7 @@ class TQuadroA : public TRelation_application
static bool QA_tot_detraz_hnd (TMask_field& f, KEY key);
static bool QA_cfdlprec_hnd (TMask_field& f, KEY key);
static bool QA_chech_ritdatlav (TMask_field& f, KEY key);
static bool QA_check_ritdovute (TMask_field& f, KEY key);
static bool QA_calcola42 (TMask_field& f, KEY k);
static bool QA_check_2527 (TMask_field& f, KEY key);
static bool QA_A2_check_58 (TMask_field& f, KEY key);
static bool QA_calcolo30 (TMask_field& f, KEY key);
@ -244,8 +246,10 @@ TMask* TQuadroA::load_mask(int n)
m->set_handler(F_DETO, QA_tot_detraz_hnd);
// Controlla che 40 sia <= 30
m->set_handler(F_AMRIODL38, QA_chech_ritdatlav);
// Controlla che 42 = 39 + 40 - 41
m->set_handler(F_AMMRITDOV, QA_check_ritdovute);
// Calcola 42 = 39 + 40 - 41
m->set_handler(F_AMRIOT37, QA_calcola42);
m->set_handler(F_AMRIODL38, QA_calcola42);
m->set_handler(F_ECCRITRIMB, QA_calcola42);
// Calcolo: 30 = 23+27+28+29
m->set_handler(F_COMPNETTI, QA_calcolo30);
m->set_handler(F_TOTIMP26, QA_calcolo30);
@ -267,7 +271,6 @@ TMask* TQuadroA::load_mask(int n)
bool TQuadroA::is_societa_trasformata(TMask& m)
{
TLocalisamfile soc (LF_SOCTRASF);
soc.setkey(1);
soc.zero();
soc.put(SOC_CODDITTA, m.get_long(QAF_CODDITTA));
@ -334,14 +337,6 @@ bool TQuadroA::codanagr_handler(TMask_field& f, KEY k)
{
if (!f.mask().is_running()) return TRUE;
/* if (k == K_ENTER)
{
const long coddip = atol(f.get());
const long codditta = get_firm_770();
if (!esiste_dipendente(codditta, coddip))
return f.warning_box("Dipendente inesistente");
}*/
// if (k == K_TAB && f.focusdirty())
if (k == K_TAB)
{
@ -404,7 +399,7 @@ bool TQuadroA::nprog_handler(TMask_field& f, KEY key)
else
{
app()._codip = coddip;
app().AA3SettaCognomeNome(f.mask());
// app().AA3SettaCognomeNome(f.mask());
f.mask().stop_run(K_AUTO_ENTER); // entra in modo modifica (se il record che ha chiave specificata esiste gia') oppure
// inserimento (se trova che non esiste)
}
@ -453,12 +448,13 @@ bool TQuadroA::QA3_codip_handler(TMask_field& f, KEY key)
// 26.6.96 azzera soltanto
bool TQuadroA::QA_cfdlprec_hnd(TMask_field& f, KEY k)
{
/*
if (k == K_TAB)
{
TString tmp(f.get());
if (tmp.empty())
f.mask().set(F_CAUSA, 0L);
}
} */
return TRUE;
}
@ -469,26 +465,25 @@ bool TQuadroA::QA_chech_ritdatlav(TMask_field& f, KEY k)
{
real RitDatLavoro(f.get()); // c40
real TotImp(f.mask().get_real(F_TOTIMP29)); // c30
if (RitDatLavoro > TotImp)
return f.warning_box("Le ritenute del datore di lavoro non possono superare il totale imponibile");
}
return TRUE;
}
// Controlla che 42 = 39 + 40 - 41
bool TQuadroA::QA_check_ritdovute(TMask_field& f, KEY k)
// Calcola che 42 = 39 + 40 - 41. Se il risultato e' negativo scrive 0
bool TQuadroA::QA_calcola42(TMask_field& f, KEY k)
{
if (k == K_ENTER)
if (k==K_TAB)
{
real ritterzi = f.mask().get_real(F_AMRIOT37);
real ritdatlav = f.mask().get_real(F_AMRIODL38);
real eccrit = f.mask().get_real(F_ECCRITRIMB);
real c42(f.get());
real ritdovute = ritterzi + ritdatlav - eccrit;
if (c42 != ritdovute)
f.warning_box("Correggere l'importo delle ritenute dovute");
TMask& m = f.mask();
real c39 = m.get_real(F_AMRIOT37);
real c40 = m.get_real(F_AMRIODL38);
real c41 = m.get_real(F_ECCRITRIMB);
real c42 = c39 + c40 - c41;
if (c42 < ZERO) c42 = ZERO;
TString c42s(c42.string());
m.set(F_AMMRITDOV, c42s);
}
return TRUE;
}
@ -510,13 +505,14 @@ bool TQuadroA::QA_check_2527 (TMask_field& f, KEY k)
// Funziona sia col quadro A che con A2
bool TQuadroA::QA_A2_check_58(TMask_field& f, KEY k)
{
if (k == K_TAB || k == K_ENTER)
// if (k == K_TAB || k == K_ENTER)
if (f.to_check(k,TRUE))
{
TMask& m = f.mask();
TString16 cod(f.get());
cod.upper();
const long codditta = f.mask().get_long(QAF_CODDITTA);
const long coddip = f.mask().get_long(F_CODIP);
const long codditta = m.get_long(QAF_CODDITTA);
const long coddip = m.get_long(F_CODIP);
if (cod == "B")
{
if (!QA_cerca_codA(codditta, coddip, app()._quadro))
@ -526,23 +522,26 @@ bool TQuadroA::QA_A2_check_58(TMask_field& f, KEY k)
else
{
// Nasconde prompt 770 mostra prompt 730
m.reset(-G_ALL);
m.disable(-G_ALL);
// reset anche dei campi calcolati disabilitati nel quadro A
if (app().QuadroA()) m.reset(-G_2342);
m.hide(-G_770);
// m.reset(-G_ALL);
m.show(-G_730);
}
}
// Nasconde prompt 730 mostra prompt 770
else
{
m.hide(-G_730);
m.show(-G_770);
m.hide(-G_730);
m.enable(-G_ALL);
}
}
return TRUE;
}
// calcola c23 = 20 + 21 -22 Se minore di 0 scrive 0
bool TQuadroA::QA_comp_netti_hnd (TMask_field& f, KEY k)
{
if (k == K_TAB)
@ -551,6 +550,7 @@ bool TQuadroA::QA_comp_netti_hnd (TMask_field& f, KEY k)
real natura = f.mask().get_real(F_NATURA);
real cobbdip = f.mask().get_real(F_COBBDIP21);
real compnetti = denaro + natura - cobbdip;
if (compnetti < ZERO) compnetti = ZERO;
f.mask().set(F_COMPNETTI, compnetti);
f.send_key(K_TAB,F_COMPNETTI);
}
@ -566,10 +566,12 @@ bool TQuadroA::QA_tot_impon_hnd (TMask_field& f, KEY k)
real ammlordo = f.mask().get_real(F_AMMLORDO24);
real svnsrit = f.mask().get_real(QAF_SVNSOGRIT);
real tot_corr = f.mask().get_real(F_TOTIMP26);
if (tot_corr == ZERO || ForzaRicalcolo)
{
real totimp29 = ammlordo - svnsrit;
// c27 se < 0 scrivere 0 fax 15.7.96 p.1
if (totimp29 < ZERO)
totimp29 = ZERO;
f.mask().set(F_TOTIMP26, totimp29);
}
}
@ -609,6 +611,7 @@ bool TQuadroA::QA_calcolo30(TMask_field& f, KEY k)
real c28 = m.get_real(F_AIEREP23);
real c29 = m.get_real(F_CCTAMMCONT);
c30 = c23 + c27 + c28 + c29;
if (c30 < ZERO) c30 = ZERO;
m.set(F_TOTIMP29, c30);
}
return TRUE;
@ -657,7 +660,6 @@ void TQuadroA::registra_record2_A3(const TMask& m)
quaa3.put(QA3_REDCOR16, rd1);
quaa3.put(QA3_NGINC17, ng2);
quaa3.put(QA3_REDCOR18, rd2);
quaa3.rewrite();
}
else
@ -670,7 +672,6 @@ void TQuadroA::registra_record2_A3(const TMask& m)
quaa3.put(QA3_REDCOR16, rd1);
quaa3.put(QA3_NGINC17, ng2);
quaa3.put(QA3_REDCOR18, rd2);
quaa3.write();
}
}
@ -874,7 +875,6 @@ void TQuadroA::carica_record2_A3(TMask& m)
void TQuadroA::init_query_mode(TMask& m)
{
m.set(QAF_ANNODIC, _anno_dic);
if (QuadroA3())
{
_soc_trasf = is_societa_trasformata(m);
@ -901,6 +901,8 @@ void TQuadroA::init_query_insert_mode(TMask& m)
void TQuadroA::init_modify_mode(TMask& m)
{
if (QuadroA1())
m.set(QA1F_ANNORIF, _anno_dic);
if (QuadroA3())
{
_codditta = m.get_long(QAF_CODDITTA);

@ -179,7 +179,8 @@
#define F_CODANAGDIPQA 420
#define G_ALL 6
#define G_730 7
#define G_770 9
#define G_ALL 12
#define G_730 9
#define G_770 7
#define G_2342 6

@ -15,7 +15,7 @@ BEGIN
FLAGS "H"
FIELD LF_QUAA->CODDITTA
KEY 1
GROUP 8
GROUP 10
MESSAGE COPY,1@
END
@ -32,7 +32,7 @@ BEGIN
OUTPUT QAF_NOME NOME
CHECKTYPE REQUIRED
FLAGS "DG"
GROUP 8
GROUP 10
MESSAGE COPY,2@
KEY 1
END
@ -41,7 +41,7 @@ STRING QAF_COGNOME 24
BEGIN
PROMPT 25 1 ""
FLAGS "DG"
GROUP 8
GROUP 10
MESSAGE COPY,3@
END
@ -49,7 +49,7 @@ STRING QAF_NOME 20
BEGIN
PROMPT 49 1 ""
FLAGS "DG"
GROUP 8
GROUP 10
MESSAGE COPY,4@
END
@ -59,7 +59,7 @@ BEGIN
FIELD LF_QUAA->NPROG
FLAGS "DG"
KEY 1
GROUP 8
GROUP 10
MESSAGE COPY,5@
END
@ -70,7 +70,7 @@ END
LISTBOX QAF_AREAATT 1 22
BEGIN
PROMPT 2 4 "13 area attività "
PROMPT 2 4 "13 Area attività "
ITEM " |"
ITEM "A|Area amministrativa"
ITEM "B|Area vendita"
@ -82,7 +82,7 @@ END
STRING QAF_TIPOATT 1
BEGIN
PROMPT 42 4 "14 tipo "
PROMPT 42 4 "14 Tipo "
SHEET "Codice|Descrizione@70"
INPUT QAF_TIPOATT
ITEM " |"
@ -91,26 +91,27 @@ BEGIN
ITEM "C|Formazione lavoro"
OUTPUT QAF_TIPOATT
FIELD LF_QUAA->TIPO
FLAGS "U"
GROUP G_ALL
END
NUMBER F_NUMGIORNI 3
BEGIN
PROMPT 55 4 "15 numero giorni "
PROMPT 55 4 "15 Numero giorni "
FIELD LF_QUAA->NUMGIO
GROUP G_ALL
END
DATE F_DATAFR
BEGIN
PROMPT 2 5 "16 data fine rapporto "
PROMPT 2 5 "16 Data fine rapporto "
FIELD LF_QUAA->DATAFR
GROUP G_ALL
END
NUMBER QAF_GIODET 3
BEGIN
PROMPT 40 5 "17 num.gio.det.lav.dip "
PROMPT 40 5 "17 Num.gio.det.lav.dip "
FIELD LF_QUAA->NUMGIODET
NUM_EXPR {(#THIS>=0)&&(#THIS<=366)}
WARNING "I giorni detrazione per lav.dip. devono essere compresi tra 0 e 366"
@ -119,7 +120,7 @@ END
STRING F_CODFISDL 16
BEGIN
PROMPT 2 6 "18 cod.fis.prec.dat.lav. "
PROMPT 2 6 "18 Cod.fis.prec.dat.lav. "
FIELD LF_QUAA->CFDLPREC
FLAGS "U"
VALIDATE CF_FUNC F_CODFISDL
@ -128,7 +129,7 @@ END
NUMBER F_CAUSA 1
BEGIN
PROMPT 60 6 "19 causa "
PROMPT 60 6 "19 Causa "
FIELD LF_QUAA->CAUSA
SHEET "Codice|Descrizione@70"
INPUT F_CAUSA
@ -151,7 +152,7 @@ END
NUMBER F_DENARO 15
BEGIN
PROMPT 2 9 "20 in denaro "
PROMPT 2 9 "20 In denaro "
FIELD LF_QUAA->DENARO
PICTURE "."
GROUP G_ALL
@ -159,7 +160,7 @@ END
NUMBER F_NATURA 15
BEGIN
PROMPT 45 9 "21 in natura "
PROMPT 45 9 "21 In natura "
FIELD LF_QUAA->NATURA
PICTURE "."
GROUP G_ALL
@ -167,7 +168,7 @@ END
NUMBER F_COBBDIP21 15
BEGIN
PROMPT 2 11 "22 contr.obb.car. dip. "
PROMPT 2 11 "22 Contr.obb.car. dip. "
HELP "Contributi obbligatori a carico del dipendente"
FIELD LF_QUAA->COBBDIP
PICTURE "."
@ -176,10 +177,11 @@ END
NUMBER F_COMPNETTI 15
BEGIN
PROMPT 45 11 "23 compensi netti"
PROMPT 45 11 "23 Compensi netti"
FIELD LF_QUAA->COMPNETTI
PICTURE "."
GROUP G_ALL
FLAGS "D"
GROUP G_2342
END
GROUPBOX DLG_NULL 78 4
@ -189,7 +191,7 @@ END
NUMBER F_AMMLORDO24 15
BEGIN
PROMPT 2 14 "24 ammontare lordo "
PROMPT 2 14 "24 Ammontare lordo "
FIELD LF_QUAA->AMMLORDO
PICTURE "."
GROUP G_ALL
@ -197,7 +199,7 @@ END
NUMBER F_IACOBBCD25 15
BEGIN
PROMPT 39 14 "25 contr.obb.car. dip. "
PROMPT 39 14 "25 Contr.obb.car. dip. "
FIELD LF_QUAA->IACOBBCD
PICTURE "."
HELP "Contributi obbligatori a carico del dipendente"
@ -206,7 +208,7 @@ END
NUMBER QAF_SVNSOGRIT 15
BEGIN
PROMPT 2 15 "26 som.v.non sog.rit."
PROMPT 2 15 "26 Som.v.non sog.rit."
FIELD LF_QUAA->NORIT
PICTURE "."
GROUP G_ALL
@ -214,7 +216,7 @@ END
NUMBER F_TOTIMP26 15
BEGIN
PROMPT 39 15 "27 totale imponibile "
PROMPT 39 15 "27 Totale imponibile "
FIELD LF_QUAA->TOTIMP
PICTURE "."
GROUP G_ALL
@ -229,12 +231,6 @@ BEGIN
PROMPT 1 1 "@bDipendente"
END
NUMBER QAF_CODDITTA 5
BEGIN
FLAGS "H"
GROUP 1
END
NUMBER F_CODIP 6
BEGIN
PROMPT 17 1 ""
@ -265,7 +261,7 @@ END
NUMBER F_AIEREP23 15
BEGIN
PROMPT 2 3 "28 assegni indennita' erogati da enti previdenziali "
PROMPT 2 3 "28 Assegni indennita' erogati da enti previdenziali "
FIELD LF_QUAA->AIENTIPREV
PICTURE "."
HELP "Assegni e indennita' erogati da enti previdenziali"
@ -274,7 +270,7 @@ END
NUMBER F_CCTAMMCONT 15
BEGIN
PROMPT 2 4 "29 ammontare compensi corrisposti da terzi "
PROMPT 2 4 "29 Ammontare compensi corrisposti da terzi "
FIELD LF_QUAA->CCTAMMCONT
PICTURE "."
GROUP G_ALL
@ -282,7 +278,7 @@ END
NUMBER F_TOTIMP29 15
BEGIN
PROMPT 2 5 "30 totale imponibile "
PROMPT 2 5 "30 Totale imponibile "
FIELD LF_QUAA->TOTIMP2
PICTURE "."
GROUP G_ALL
@ -290,7 +286,7 @@ END
NUMBER F_ICTOTIMP30 15
BEGIN
PROMPT 2 6 "31 imposta corrispondente totale imponibile "
PROMPT 2 6 "31 Imposta corrispondente totale imponibile "
FIELD LF_QUAA->ICTOTIMP
PICTURE "."
HELP "Imposta corrispondente al totale imponibile"
@ -299,7 +295,7 @@ END
NUMBER F_DETCC 15
BEGIN
PROMPT 2 7 "32 detr.coniuge carico "
PROMPT 2 7 "32 Detr.coniuge carico "
FIELD LF_QUAA->DETCC
PICTURE "."
HELP "Detrazione per coniuge a carico"
@ -308,7 +304,7 @@ END
NUMBER F_DETFC 15
BEGIN
PROMPT 41 7 "33 detr.figli carico "
PROMPT 41 7 "33 Detr.figli carico "
FIELD LF_QUAA->DETFC
PICTURE "."
HELP "Detrazione per figli a carico"
@ -317,7 +313,7 @@ END
NUMBER F_DETAF 15
BEGIN
PROMPT 2 8 "34 det.altri fam.carico"
PROMPT 2 8 "34 Det.altri fam.carico"
FIELD LF_QUAA->DETAF
PICTURE "."
HELP "Detrazione per altri famigliari a carico"
@ -326,7 +322,7 @@ END
NUMBER F_DETLD 15
BEGIN
PROMPT 41 8 "35 detr.lav. dipend. "
PROMPT 41 8 "35 Detr.lav. dipend. "
FIELD LF_QUAA->DETLD
PICTURE "."
HELP "Detrazione per lavoro dipendente"
@ -335,7 +331,7 @@ END
NUMBER F_DETO 15
BEGIN
PROMPT 2 9 "36 detr. per oneri "
PROMPT 2 9 "36 Detr. per oneri "
FIELD LF_QUAA->DETO
PICTURE "."
HELP "Detrazione per oneri"
@ -344,7 +340,7 @@ END
NUMBER F_TOTDET36 15
BEGIN
PROMPT 41 9 "37 totale detrazione "
PROMPT 41 9 "37 Totale detrazione "
FIELD LF_QUAA->TOTDET
PICTURE "."
GROUP G_ALL
@ -352,7 +348,7 @@ END
NUMBER QAF_INCDETFC 15
BEGIN
PROMPT 2 10 "38 inc.detr.figli a ca."
PROMPT 2 10 "38 Inc.detr.figli a ca."
FIELD LF_QUAA->INCDETFC
PICTURE "."
GROUP G_ALL
@ -360,7 +356,7 @@ END
NUMBER F_AMRIOT37 15
BEGIN
PROMPT 2 11 "39 ammontare delle ritenute operate da terzi"
PROMPT 2 11 "39 Ammontare delle ritenute operate da terzi"
FIELD LF_QUAA->AMRIOT
PICTURE "."
HELP "Ammontare delle ritenute operate da terzi"
@ -369,7 +365,7 @@ END
NUMBER F_AMRIODL38 15
BEGIN
PROMPT 2 12 "40 ammontare ritenute operate datore lavoro "
PROMPT 2 12 "40 Ammontare ritenute operate datore lavoro "
FIELD LF_QUAA->AMRIODL
PICTURE "."
HELP "Ammontare delle ritenute operate dal datore di lavoro"
@ -378,7 +374,7 @@ END
NUMBER F_ECCRITRIMB 15
BEGIN
PROMPT 2 13 "41 eccedenza delle ritenute da rimborsare "
PROMPT 2 13 "41 Eccedenza delle ritenute da rimborsare "
FIELD LF_QUAA->ECCRITRIMB
PICTURE "."
HELP "Eccedenza delle ritenute da rimborsare"
@ -387,16 +383,17 @@ END
NUMBER F_AMMRITDOV 15
BEGIN
PROMPT 2 14 "42 ammont.riten. dovute"
PROMPT 2 14 "42 Ammont.riten. dovute"
FIELD LF_QUAA->AMMRITDOV
PICTURE "."
HELP "Ammontare delle ritenute dovute"
GROUP G_ALL
FLAGS "D"
GROUP G_2342
END
NUMBER F_ERSPSAN41 15
BEGIN
PROMPT 41 14 "43 er.spese sanitarie"
PROMPT 41 14 "43 Er.spese sanitarie"
FIELD LF_QUAA->ERSPSAN
PICTURE "."
HELP "Erogazioni per spese sanitarie, anche in forma assicurativa"
@ -405,7 +402,7 @@ END
NUMBER F_PRASSVI42 15
BEGIN
PROMPT 2 15 "44 premi di assicurazione vita e infortuni "
PROMPT 2 15 "44 Premi di assicurazione vita e infortuni "
FIELD LF_QUAA->PRASSVI
PICTURE "."
HELP "Premi di assicurazione vita e infortuni"
@ -414,7 +411,7 @@ END
NUMBER F_CONPRECO43 15
BEGIN
PROMPT 2 16 "45 contributi per previdenza complementare "
PROMPT 2 16 "45 Contributi per previdenza complementare "
FIELD LF_QUAA->CONPRECO
PICTURE "."
HELP "Contributi per previdenza complementare"
@ -471,7 +468,7 @@ END
NUMBER F_COBBDIP44 15
BEGIN
PROMPT 2 4 "46 cont.obb.carico dip."
PROMPT 2 4 "46 Cont.obb.carico dip."
FIELD LF_QUAA->COBBDIP2
PICTURE "."
HELP "Contributi obbligatori a carico del dipendente"
@ -480,7 +477,7 @@ END
NUMBER F_AMMIMP45 15
BEGIN
PROMPT 41 4 "47 ammontare imponib."
PROMPT 41 4 "47 Ammontare imponib."
FIELD LF_QUAA->AMMIMP
PICTURE "."
HELP "Ammontare imponibile"
@ -489,7 +486,7 @@ END
NUMBER F_DETIMPOS46 15
BEGIN
PROMPT 2 5 "48 detrazioni d'imposta"
PROMPT 2 5 "48 Detrazioni d'imposta"
FIELD LF_QUAA->DETIMPOS
PICTURE "."
GROUP G_ALL
@ -497,7 +494,7 @@ END
NUMBER F_RITESEG47 15
BEGIN
PROMPT 41 5 "49 ritenuta eseguita "
PROMPT 41 5 "49 Ritenuta eseguita "
FIELD LF_QUAA->RITESEG
PICTURE "."
GROUP G_ALL
@ -505,7 +502,7 @@ END
NUMBER F_SVNASSRI48 15
BEGIN
PROMPT 2 6 "50 altre somme e valori non ass.a ritenuta "
PROMPT 2 6 "50 Altre somme e valori non ass.a ritenuta "
FIELD LF_QUAA->SVNASSRI
PICTURE "."
GROUP G_ALL
@ -513,7 +510,7 @@ END
NUMBER F_AIFCSSN49 15
BEGIN
PROMPT 2 7 "51 ammontare imponibile ai fini del C.S.S.N."
PROMPT 2 7 "51 Ammontare imponibile ai fini del C.S.S.N."
FIELD LF_QUAA->AIFCSSN
PICTURE "."
HELP "Ammontare imponibile ai fini del C.S.S.N."
@ -544,6 +541,7 @@ BEGIN
ITEM "E|Retribuzione insufficiente"
ITEM "F|Nel caso di situazioni per le quali dovrebbero essere indicati piu' codici"
OUTPUT F_CONEFF50
FLAGS "U"
GROUP G_ALL
END
@ -554,7 +552,7 @@ END
NUMBER F_IMPVERS51 15
BEGIN
PROMPT 2 14 "53 imposta vers. "
PROMPT 2 14 "53 Imposta vers. "
FIELD LF_QUAA->IMPVERS
PICTURE "."
GROUP G_ALL
@ -562,7 +560,7 @@ END
NUMBER F_ISOPTAS52 15
BEGIN
PROMPT 37 14 "54 interessi "
PROMPT 37 14 "54 Interessi "
FIELD LF_QUAA->INTERE
PICTURE "."
GROUP G_ALL
@ -575,7 +573,7 @@ END
NUMBER F_CONTRVER53 15
BEGIN
PROMPT 2 17 "55 contr. versato"
PROMPT 2 17 "55 Contr. versato"
FIELD LF_QUAA->CSSN95CV
PICTURE "."
GROUP G_ALL
@ -583,7 +581,7 @@ END
NUMBER F_ISOPTAS54 15
BEGIN
PROMPT 37 17 "56 interessi "
PROMPT 37 17 "56 Interessi "
FIELD LF_QUAA->INTERE2
PICTURE "."
GROUP G_ALL
@ -639,7 +637,7 @@ END
STRING F_CNEFF55 1
BEGIN
PROMPT 2 4 "57 conguagli n/eff. "
PROMPT 2 4 "57 Conguagli n/eff. "
FIELD LF_QUAA->CNEFF
SHEET "Codice|Descrizione@85"
INPUT F_CNEFF55
@ -652,12 +650,13 @@ BEGIN
ITEM "F|Nel caso di situazioni per le quali dovrebbero essere indicati piu' codici"
ITEM "G|Rimborso non effettuato o rimborso effettuato parzialmente"
OUTPUT F_CNEFF55
FLAGS "U"
GROUP G_ALL
END
STRING F_RETCON56 1
BEGIN
PROMPT 37 4 "58 rettifica conguaglio "
PROMPT 37 4 "58 Rettifica conguaglio "
FIELD LF_QUAA->RETCON
SHEET "Cod.|Descrizione@200"
INPUT F_RETCON56
@ -665,7 +664,7 @@ BEGIN
ITEM "A|Rettifica da parte dei sostituti o dei CAAF degli importi da conguagliare indicati nei mod.730-3,4 e già consegnati entro il 15.5.96 (I n. d'ordine)"
ITEM "B|Rettifica da parte dei sostituti o dei CAAF degli importi da conguagliare indicati nei mod.730-3,4 e già consegnati entro il 15.5.96 (II n. d'ordine)"
ITEM "C|Conguaglio a seguito di rettifica di una precedente comunicazione tardivamente pervenuta al sostituto"
ITEM "D|Conguaglio a seguito di rettifica prec. comunic. tempestivam. perventuta al sostituto ma per la quale non è stato effettuato il conguaglio nel mese di giugno"
ITEM "D|Conguaglio a seguito di rett. prec. comunic. tempestivam. pervenuta al sostituto ma per la quale non è stato effettuato il conguaglio nel mese di giugno"
ITEM "E|Conguaglio tardivo per mod.730-4 pervenuto tardivamente"
ITEM "F|Conguaglio tardivo per causa dipendente dal sostituto d'imposta"
OUTPUT F_RETCON56
@ -679,7 +678,7 @@ END
NUMBER F_IMPRIMB57 15
BEGIN
PROMPT 2 7 "59 impo. rimborsata "
PROMPT 2 7 "59 Impo. rimborsata "
FIELD LF_QUAA->IMPRIMB
PICTURE "."
GROUP G_ALL
@ -687,7 +686,7 @@ END
NUMBER F_IMPVER58 15
BEGIN
PROMPT 44 7 "60 imposta versata"
PROMPT 44 7 "60 Imposta versata"
FIELD LF_QUAA->IMPVER
PICTURE "."
GROUP G_ALL
@ -695,7 +694,7 @@ END
NUMBER F_INTIRPEF59 15
BEGIN
PROMPT 2 8 "61 interessi "
PROMPT 2 8 "61 Interessi "
FIELD LF_QUAA->INTIRPEF
PICTURE "."
HELP "Interessi IRPEF"
@ -709,14 +708,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 11 "62 impo. versata "
PROMPT 2 11 "62 Impo. versata "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 11 "62 i.ver/tr.IRPEF"
// FLAGS "H"
PROMPT 2 11 "62 I.ver/tr.IRPEF"
GROUP G_730
END
@ -729,15 +727,14 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 44 11 "63 interessi "
PROMPT 44 11 "63 Interessi "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 44 11 "63 i.ri.IRPEF"
PROMPT 44 11 "63 I.ri.IRPEF"
GROUP G_730
// FLAGS "H"
END
NUMBER F_INTER61 15
@ -749,14 +746,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 12 "64 soprattasse saldo IRPEF per 95 e prima rata acconto 96 "
PROMPT 2 12 "64 Soprattasse saldo IRPEF per 95 e prima rata acconto 96 "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 12 "64 prima rata di acconto IRPEF per il 1996 "
// FLAGS "H"
PROMPT 2 12 "64 Prima rata di acconto IRPEF per il 1996 "
GROUP G_730
END
@ -782,7 +778,6 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 15 "65 2rata ac.IRPEF96"
// FLAGS "H"
GROUP G_730
END
@ -801,9 +796,8 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 44 15 "66 i.v.trat.CSSN "
PROMPT 44 15 "66 I.v.trat.CSSN "
GROUP G_730
// FLAGS "H"
END
NUMBER F_CONVER64 15
@ -815,14 +809,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 16 "67 interessi "
PROMPT 2 16 "67 Interessi "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 16 "67 imp. rimb. CSSN "
// FLAGS "H"
PROMPT 2 16 "67 Imp. rimb. CSSN "
GROUP G_730
END
@ -884,7 +877,7 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 4 "68 contr. versato "
PROMPT 2 4 "68 Contr. versato "
GROUP G_770
END
@ -892,7 +885,6 @@ TEXT DLG_NULL
BEGIN
PROMPT 2 4 "68 1r.acc.CSSN 96 "
GROUP G_730
// FLAGS "H"
END
NUMBER F_CONVER66 15
@ -905,7 +897,7 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 44 4 "69 interessi "
PROMPT 44 4 "69 Interessi "
GROUP G_770
END
@ -913,7 +905,6 @@ TEXT DLG_NULL
BEGIN
PROMPT 44 4 "69 2r.acc.CSSN 96"
GROUP G_730
// FLAGS "H"
END
NUMBER F_INTER67 15
@ -937,7 +928,7 @@ BEGIN
PROMPT 2 6 "71 Mod.730/96 non liquidabile "
FIELD LF_QUAA->M730NLIQ
FLAGS "Z"
SHEET "Codice|Descrizione@65"
SHEET "Codice|Descrizione@200"
INPUT F_SEGDICNL69
ITEM " |Niente"
ITEM "01|Errata o incompleta compilazione dei dati anagrafici e di residenza del dichiarante"

@ -65,9 +65,9 @@ BEGIN
FIELD LF_QUAA1->MESERIF
END
TEXT QA1F_ANNORIF
NUMBER QA1F_ANNORIF 4
BEGIN
PROMPT 44 3 "1995"
PROMPT 44 3 ""
FLAGS "D"
FIELD LF_QUAA1->ANNORIF
END

@ -103,14 +103,14 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 7 "10 Imposta rimbor. "
GROUP G_770
PROMPT 2 7 "10 Imp.ver/tr.IRPEF"
GROUP G_730
END
TEXT DLG_NULL
BEGIN
PROMPT 2 7 "10 i.ver/tr.IRPEF""
GROUP G_730
PROMPT 2 7 "10 Imposta rimbor. "
GROUP G_770
END
NUMBER F_IIRPEFVER8 15
@ -120,6 +120,12 @@ BEGIN
PICTURE "."
END
TEXT DLG_NULL
BEGIN
PROMPT 41 7 "11 Imp.da rim.IRPEF"
GROUP G_730
END
TEXT DLG_NULL
BEGIN
PROMPT 41 7 "11 Imposta versata "
@ -136,6 +142,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 8 "12 Interessi "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 8 "12 1rata ac.IRPEF95"
GROUP G_730
END
NUMBER F_INTER11 15
@ -153,7 +166,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 11 "13 Imposta versata "
// GROUP 6
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 11 "13 2rata ac.IRPEF95"
GROUP G_730
END
NUMBER F_PRIRPEF10 15
@ -167,7 +186,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 41 11 "14 Interessi "
// GROUP 6
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 41 11 "14 I.v.trat.CSSN "
GROUP G_730
END
NUMBER F_INTER11 15
@ -181,7 +206,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 13 "15 Soprattasse IRPEF saldo 94 e prima rata acc.95 "
GROUP 6
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 2 13 "15 Importo da rimborsare CSSN "
GROUP G_730
END
NUMBER F_STASSA12 15
@ -191,12 +222,6 @@ BEGIN
PICTURE "."
END
TEXT DLG_NULL
BEGIN
PROMPT 2 13 "Imp. rimb. CSSN "
GROUP 7
END
ENDPAGE
PAGE "MODULO 770 - Manutenzione Quadro A2" -1 -1 78 21
@ -248,12 +273,13 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 5 "16 Cont.a rimborso "
// GROUP 6
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 41 5 "17 Cont. versato "
PROMPT 2 5 "16 1r.acc.CSSN 95 "
GROUP G_730
END
NUMBER QA2F_CSSNCRIMB 15
@ -263,6 +289,18 @@ BEGIN
PICTURE "."
END
TEXT DLG_NULL
BEGIN
PROMPT 41 5 "17 Cont. versato "
GROUP G_770
END
TEXT DLG_NULL
BEGIN
PROMPT 41 5 "17 2r.acc.CSSN 95 "
GROUP G_730
END
NUMBER QA2F_CSSNCVER 15
BEGIN
// PROMPT 41 5 "Contr. versato "
@ -288,6 +326,7 @@ BEGIN
PROMPT 2 9 "19 Contrib.versato "
FIELD LF_QUAA2->CONTV19
PICTURE "."
GROUP G_ALL
END
NUMBER QA2F_CSSNAINT 15
@ -295,6 +334,7 @@ BEGIN
PROMPT 41 9 "20 Interessi "
FIELD LF_QUAA2->INTE20
PICTURE "."
GROUP G_ALL
END
NUMBER QA2F_STCSSN 15
@ -302,6 +342,7 @@ BEGIN
PROMPT 2 11 "21 Soprattasse su C.S.S.N. saldo 94 e prima rata acc.95 "
FIELD LF_QUAA2->SOPRAT21
PICTURE "."
GROUP G_ALL
END
STRING QA2F_730NLIQ 2
@ -326,6 +367,7 @@ BEGIN
FIELD LF_QUAA2->M730NLIQ
FLAGS "Z"
OUTPUT QA2F_730NLIQ
GROUP G_ALL
END
GROUPBOX DLG_NULL 78 4
@ -348,6 +390,7 @@ BEGIN
OUTPUT F_DENCAAF S0
OUTPUT F_NISCRA I1
OUTPUT F_CODFISCAAF S1
GROUP G_ALL
END
STRING F_DENCAAF 50

@ -117,7 +117,7 @@ BEGIN
KEY 1
END
NUMBER F_CODIP_2 5
NUMBER F_CODIP_2 6
BEGIN
PROMPT 17 1 ""
MESSAGE COPY,F_CODIP2

@ -424,6 +424,7 @@ bool TQuadroC_E2::generazione()
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)
continue;
@ -545,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, bInps = FALSE;
bool esiste_record = FALSE, acc_imp = FALSE;
struct righe_pag* rp;
keyp = key = "";
@ -562,8 +563,8 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
codcaus = atoi(rp->codcau);
perc = rp->perc;
acc_imp = rp->acim;
bInps = rp->bInps; // se la riga aveva il contributo inps nella cau.
rQCInps = bInps ? rp->inps : ZERO;
// non frega un tubo bInps = rp->bInps; // se la riga aveva il contributo inps nella caus.
rQCInps = rp->inps;
if (QuadroE1() && !acc_imp)
{
@ -630,7 +631,6 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
tot_rite += rp->rite;
tot_impo += rp->impo;
tot_comp += rp->comp;
if (bInps)
rTotQCInps += rQCInps;
if (tipoa_p != tipoa || codanag != codanag_p)
@ -701,7 +701,6 @@ void TQuadroC_E2::leggi_sort(TProgind& p)
qd.put("NETTO", tot_comp - tot_rite);
else
qd.put("NETTO", tot_impo - tot_rite);
qd.write();
}
}

@ -94,7 +94,7 @@ HIDDEN real __num_az = ZERO;
TQuadroG::TQuadroG(const char quadro)
{
_registra = FALSE;
_registra = _bUsatoDistinta = FALSE;
switch (quadro)
{
case '3':
@ -288,6 +288,8 @@ bool TQuadroG::exec_distinta(TMask_field& f, KEY k)
{
TExternal_app zzz(DISTINTA_APP);
zzz.run();
// Fai il ricalcolo
app()._bUsatoDistinta = TRUE;
}
return TRUE;
}
@ -314,7 +316,7 @@ bool TQuadroG::user_create()
bool TQuadroG::user_destroy()
{
delete _rel; delete _msk;
if (_registra)
if (_registra || _bUsatoDistinta)
_rip.set(_quadro);
return TRUE;
}

@ -24,7 +24,7 @@ class TQuadroG : public TRelation_application
TRiporti _rip;
TString16 _quadro;
TString80 _title;
bool _registra;
bool _registra, _bUsatoDistinta;
static bool p1_notify(TSheet_field& s, int r, KEY k);
static bool p2_notify(TSheet_field& s, int r, KEY k);
static bool pII_notify(TSheet_field& s, int r, KEY k);

@ -160,18 +160,7 @@ bool M71310_application::cod_tributo(TMask_field& f , KEY k)
bool M71310_application::auto_premi(TMask_field& f, KEY k)
{
if (k == K_TAB && f.mask().is_running())
{
TMask& m = f.mask();
m.stop_run(K_AUTO_ENTER);
/*
TRelation* rel = app()._rel;
TMask& m = f.mask();
m.autosave(rel);
if (rel->read() == NOERR)
m.stop_run(K_AUTO_ENTER);
else
m.stop_run(K_INS); */
}
f.mask().stop_run(K_AUTO_ENTER);
return TRUE;
}
@ -179,13 +168,18 @@ bool M71310_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];
TMask& m = f.mask();
TString16 tipo = m.get(F_QLTIPOVERS);
TString16 luogo = m.get(F_QLLUOVERS);
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
if (tipo.not_empty() && luogo.not_empty())
if (tipo == "D" && luogo == "T")
{
m.reset(-G_DISTINTA_TESORERIA);
m.disable(-G_DISTINTA_TESORERIA);
}
else
f.mask().show(F_QLSERIE);
m.enable(-G_DISTINTA_TESORERIA);
}
return TRUE;
}
@ -194,13 +188,18 @@ bool M71310_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];
TMask& m = f.mask();
TString16 tipo = m.get(F_QLTIPOVERS);
TString16 luogo = m.get(F_QLLUOVERS);
if (tipo == 'D' && luogo == 'T')
f.mask().hide(F_QLSERIE);
if (tipo.not_empty())
if (tipo == "D" && luogo == "T")
{
m.reset(-G_DISTINTA_TESORERIA);
m.disable(-G_DISTINTA_TESORERIA);
}
else
f.mask().show(F_QLSERIE);
m.enable(-G_DISTINTA_TESORERIA);
}
return TRUE;
}

@ -36,3 +36,9 @@
#define FH_NUMERO 137
#define FH_NPROG 138
#define F_CCQUIETANZA 139
#define G_ABICAB 7
#define G_DISTINTA 8
#define G_CC 9
#define G_DISTINTA_TESORERIA 10 // v. handler di tipo vers.

@ -16,12 +16,6 @@ ENDPAGE
PAGE "QUADRO L" -1 -1 78 18
#define ABI_CAB 7
#define NUM_SERIE 8
#define TEXT_NUM_SERIE 9
#define TEXT_ABI_CAB 6
#define GH 10
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 0 0 ""
@ -48,30 +42,6 @@ BEGIN
FLAGS "D"
END
TEXT 96
BEGIN
PROMPT 2 10 "Numero serie "
GROUP TEXT_NUM_SERIE
END
TEXT 97
BEGIN
PROMPT 2 10 "Codice ABI "
GROUP ABI_CAB
END
TEXT 98
BEGIN
PROMPT 46 10 "Numero quietanza "
GROUP TEXT_NUM_SERIE
END
TEXT 99
BEGIN
PROMPT 46 10 "Codice CAB "
GROUP ABI_CAB
END
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 0 5 ""
@ -150,17 +120,13 @@ LIST F_QLTIPOVERS 15
BEGIN
PROMPT 2 8 "Tipo versamento "
ITEM " |Nessuno"
MESSAGE SHOW,97|SHOW,99|HIDE,96|HIDE,98|RESET,GH@
MESSAGE ENABLE,F_QLSERIE
MESSAGE HIDE,G_ABICAB@|HIDE,G_DISTINTA@|HIDE,G_CC@
ITEM "B|Delega bancaria"
MESSAGE RESET,GH@|HIDE,TEXT_NUM_SERIE@|SHOW,ABI_CAB@
MESSAGE ENABLE,ABI_CAB@|DISABLE,NUM_SERIE@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_ABICAB@
ITEM "D|Distinta"
MESSAGE RESET,GH@|SHOW,TEXT_NUM_SERIE@|HIDE,ABI_CAB@
MESSAGE ENABLE,NUM_SERIE@|DISABLE,ABI_CAB@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_ABICAB@|HIDE,G_ABICAB@|SHOW,G_DISTINTA@
ITEM "C|C/C Postale"
MESSAGE RESET,GH@|SHOW,TEXT_NUM_SERIE@|CLEAR,F_ABI|CLEAR,F_QLSERIE|HIDE,ABI_CAB@
MESSAGE DISABLE,F_QLSERIE|DISABLE,ABI_CAB@
MESSAGE RESET,G_ABICAB@|HIDE,G_ABICAB@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_CC@
FIELD LF_QUAL->QLTV
KEY 1
END
@ -179,11 +145,41 @@ BEGIN
KEY 1
END
TEXT DLG_NULL
BEGIN
PROMPT 2 10 "Serie "
GROUP G_DISTINTA G_DISTINTA_TESORERIA
END
TEXT DLG_NULL
BEGIN
PROMPT 46 10 "Numero "
GROUP G_DISTINTA
END
TEXT DLG_NULL
BEGIN
PROMPT 46 10 "Quietanza "
GROUP G_CC
END
TEXT DLG_NULL
BEGIN
PROMPT 2 10 "Codice ABI "
GROUP G_ABICAB
END
TEXT DLG_NULL
BEGIN
PROMPT 46 10 "Codice CAB "
GROUP G_ABICAB
END
STRING F_QLSERIE 5
BEGIN
PROMPT 23 10 ""
FIELD LF_QUAL->QLSERIE
GROUP NUM_SERIE
GROUP G_DISTINTA G_DISTINTA_TESORERIA
KEY 1
END
@ -191,7 +187,15 @@ STRING F_QLNUMERO 11
BEGIN
PROMPT 63 10 ""
FIELD LF_QUAL->QLNUMERO
GROUP NUM_SERIE
GROUP G_DISTINTA
KEY 1
END
STRING F_CCQUIETANZA 11
BEGIN
PROMPT 63 10 ""
FIELD LF_QUAL->QLNUMERO
GROUP G_CC
KEY 1
END
@ -200,7 +204,7 @@ BEGIN
PROMPT 23 10 ""
FIELD LF_QUAL->QLSERIE
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
KEY 1
END
@ -209,7 +213,7 @@ BEGIN
PROMPT 63 10 ""
FIELD LF_QUAL->QLNUMERO[1,5]
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
KEY 1
END
@ -218,7 +222,7 @@ BEGIN
PROMPT 69 10 ""
FIELD LF_QUAL->QLNUMERO[6,11]
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
KEY 1
END

@ -773,7 +773,8 @@ void TRiporti::calcola_riporti_A(TCursor* cur, const long dich)
TString codfis = cur->curr().get (QUA_CODFISDL);
char retcon = cur->curr().get_char(QUA_RETCON);
if (causa == 0 && retcon != 'B' && codfis.empty())
// if (causa == 0 && retcon != 'B' && codfis.empty())
if (retcon != 'B' && codfis.empty())
{
a0cobb += cur->curr().get_real(QUA_COBBDIP);
a0cnet += cur->curr().get_real(QUA_COMPNETTI);
@ -1015,7 +1016,7 @@ void TRiporti::calcola_riporti_H(TCursor* cur, const long dich)
void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
{
TLocalisamfile base (LF_BASE);
real totale,somme,ritenute;
real totale,somme,ritenute,rTotCSSN;
bool almeno_una_riga = FALSE;
double percipienti;
@ -1024,6 +1025,7 @@ void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
totale = ZERO;
somme = ZERO;
ritenute = ZERO;
rTotCSSN = ZERO;
(*cur) = 0L;
@ -1051,6 +1053,7 @@ void TRiporti::calcola_riporti_C(TCursor* cur, const long dich)
totale += cur->curr().get_real(QUC_TOTALE);
somme += cur->curr().get_real(QUC_SOMME);
ritenute += cur->curr().get_real(QUC_RITENUTE);
rTotCSSN += cur->curr().get_real(QUC_CONTSSN);
if (!almeno_una_riga)
almeno_una_riga = TRUE;
@ -1080,6 +1083,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.rewrite();
base.reread(_unlock);
setta_flag_quadri_comp(_codditta, C, almeno_una_riga, dich);
@ -1824,7 +1828,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;
bool almeno_una_riga=FALSE, almeno_una_riga_distinta=FALSE;
long fogli_comp = 0L, percipienti=0L;
TRelation* relp;
TCursor* curp;
@ -1838,7 +1842,6 @@ void TRiporti::calcola_riporti_G(TCursor* cur, const long dich)
(*cur) = 0L;
TRecnotype items = cur->items();
almeno_una_riga = items > 0L;
// Legge quadro G
i24_2 = cur->curr().get_real(QG_P1NUMQT);
@ -1849,6 +1852,9 @@ 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
|| i24_5 != ZERO || i24_6 != ZERO || i24_7 != ZERO
|| i24_8 != ZERO || i24_9 != ZERO;
TString scritta(60);
// scritta.format("Calcolo riporti del quadro G per la ditta %ld", _codditta);
@ -1886,12 +1892,14 @@ void TRiporti::calcola_riporti_G(TCursor* cur, const long dich)
i24_13 += curp->curr().get_real(QGD_ROPE);
i25_4 += curp->curr().get_real(QGD_ROPESPET);
if (!almeno_una_riga)
almeno_una_riga = TRUE;
almeno_una_riga_distinta = TRUE;
progn.addstatus(1);
}
// 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;
fogli_comp = fogli_compilati(fisiche,no_fisiche,QGD_FISICHE_PER_FOGLIO,QGD_NOFISICHE_PER_FOGLIO);
basebis.setkey(1);

@ -77,7 +77,7 @@ BEGIN
PROMPT 1 7 ""
PICTURE 123
GROUP 1
MESSAGE RUN,773mod,-1,771150a,45,"Anagrafica dipendenti",/uPRASSI
MESSAGE RUN,773mod,-1,771150a,45,"Anagrafica dipendenti"|K_TAB,RILEGGI_QUADRI
END
TEXT DLG_NULL

@ -10,3 +10,4 @@
#define F_CAB 109
#define F_PROGBANCA 110
#define FH_NUMERO 111
#define F_CCQUIETANZA 112

@ -24,8 +24,9 @@ ENDPAGE
PAGE "Prospetto dati generali" -1 -1 78 18
#define ABICAB 1
#define GSERIE 2
#define G_ABICAB 1
#define G_DISTINTA 2
#define G_CC 3
GROUPBOX DLG_NULL 78 4
BEGIN
@ -56,25 +57,25 @@ END
TEXT 96
BEGIN
PROMPT 2 13 "Numero serie "
GROUP GSERIE
GROUP G_DISTINTA
END
TEXT 97
BEGIN
PROMPT 2 13 "Codice ABI "
GROUP ABICAB
GROUP G_ABICAB
END
TEXT 98
BEGIN
PROMPT 46 13 "Numero quietanza "
GROUP GSERIE
GROUP G_DISTINTA G_CC
END
TEXT 99
BEGIN
PROMPT 46 13 "Codice CAB "
GROUP ABICAB
GROUP G_ABICAB
END
DATE F_DATAVERS
@ -96,11 +97,11 @@ RADIOBUTTON F_TIPOVERS 26
BEGIN
PROMPT 46 7 "Tipo versamento "
ITEM "B|Delega bancaria"
MESSAGE SHOW,ABICAB@|SHOW,97|SHOW,99|HIDE,96|HIDE,98|HIDE,F_SERIE|HIDE,F_NUMERO
MESSAGE RESET,G_DISTINTA@|CLEAR,F_CCQUIETANZA|HIDE,G_DISTINTA@|HIDE,G_CC@|SHOW,G_ABICAB@
ITEM "D|Distinta"
MESSAGE HIDE,ABICAB@|ENABLE,F_SERIE|SHOW,96|SHOW,98|SHOW,F_SERIE|SHOW,F_NUMERO|HIDE,97|HIDE,99|
MESSAGE RESET,G_ABICAB@|CLEAR,F_CCQUIETANZA|HIDE,G_ABICAB@|HIDE,G_CC@|SHOW,G_DISTINTA@
ITEM "C|C/C Postale"
MESSAGE HIDE,ABICAB@|SHOW,96|SHOW,98|SHOW,F_SERIE|SHOW,F_NUMERO|HIDE,97|HIDE,99|CLEAR,F_SERIE|DISABLE,F_SERIE
MESSAGE RESET,G_ABICAB@|HIDE,G_ABICAB@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_CC@|ENABLE,G_CC@
FIELD LF_BASE->TIPOVERS
END
@ -109,7 +110,7 @@ BEGIN
PROMPT 18 13 ""
FIELD LF_BASE->SERIE
FLAGS "Z"
GROUP ABICAB
GROUP G_ABICAB
END
NUMBER F_CAB 5
@ -117,7 +118,7 @@ BEGIN
PROMPT 63 13 ""
FIELD LF_BASE->NUMERO[1,5]
FLAGS "Z"
GROUP ABICAB
GROUP G_ABICAB
END
NUMBER F_PROGBANCA 6
@ -125,21 +126,28 @@ BEGIN
PROMPT 69 13 ""
FLAGS "Z"
FIELD LF_BASE->NUMERO[6,11]
GROUP ABICAB
GROUP G_ABICAB
END
STRING F_SERIE 5
BEGIN
PROMPT 18 13 ""
FIELD LF_BASE->SERIE
GROUP GSERIE
GROUP G_DISTINTA
END
STRING F_NUMERO 11
BEGIN
PROMPT 63 13 ""
FIELD LF_BASE->NUMERO
GROUP GSERIE
GROUP G_DISTINTA
END
STRING F_CCQUIETANZA 11
BEGIN
PROMPT 63 13 ""
FIELD LF_BASE->NUMERO
GROUP G_CC
END
GROUPBOX DLG_NULL 78 11

@ -20,6 +20,8 @@ HIDDEN const char* _build_key(TVersamento& vers);
// La ditta corrente 770
HIDDEN long _codditta_770 = 0L;
#define QUALIF_EREDE "11"
//////////////////////////////////////////////////////////////////////////////
// Utility varie
//////////////////////////////////////////////////////////////////////////////
@ -218,18 +220,19 @@ bool is_dipendente(const long codditta, const long coddip)
}
// Stabilisce se il dipendente e' un erede
// SE QUALIFICA=11 17.7.96
bool is_erede(const long codditta, const long coddip)
{
TLocalisamfile dip (LF_DIPEND);
TString CodDipDec;
TString sQualif;
dip.setkey(1);
dip.zero();
dip.put(DIP_CODDITTA, (long)codditta);
dip.put(DIP_CODIP, (long)coddip);
if (dip.read() == NOERR)
CodDipDec = dip.get(DIP_CODDIPDEC);
CodDipDec.trim();
return CodDipDec.not_empty();
sQualif = dip.get(DIP_QUALIFICA);
sQualif.trim();
return sQualif == QUALIF_EREDE;
}
// Stabilisce se il dipendente e' un deceduto
@ -325,7 +328,10 @@ bool riscrivi_erede(const long codditta, const long deceduto, const long erede,
}
}
if (!trovato) dip.reread(_unlock);
return trovato;
// return trovato; // Cosi' fallirebbe anche nel caso di un codice gia'
// cancellato (per es. azzero il codice e faccio registra due volte la seconda
// fallirebbe).
return TRUE;
}
bool esiste_pag_in_periodo(TSchedaP& sch, const TDate& data_da, const TDate& data_a)

@ -17,3 +17,4 @@
#define QPF_CCQUIETANZA 183

@ -8,10 +8,9 @@ ENDPAGE
// 2.4.96 Messo CAB di 5. Abi e Cab zerofilled
//
#define ABI_CAB 7
#define NUM_SERIE 8
#define TEXT_NUM_SERIE 9
#define TEXT_ABI_CAB 6
#define G_ABICAB 7
#define G_DISTINTA 8
#define G_CC 9
PAGE "MODULO 770 - QUADRO N" -1 -1 78 18
@ -49,12 +48,6 @@ BEGIN
DISPLAY "Serie/ABI" SERIE
DISPLAY "Numero/Bollettino/CAB" NUMERO
OUTPUT QPF_NPROG NPROG
OUTPUT QPF_CODTRIB CODTRIB
OUTPUT QPF_DATAVERS DATAVERS
OUTPUT QPF_TIPOVERS TIPOVERS
OUTPUT QPF_INTERDIP INTERDIP
OUTPUT QPF_INTERDAT INTERDAT
OUTPUT QPF_IMPOSTA IMPOSTA
CHECKTYPE REQUIRED
KEY 1
END
@ -128,25 +121,25 @@ END
TEXT 96
BEGIN
PROMPT 2 14 "Numero serie "
GROUP TEXT_NUM_SERIE
GROUP G_DISTINTA
END
TEXT 97
BEGIN
PROMPT 2 14 "Codice ABI "
GROUP ABI_CAB
GROUP G_ABICAB
END
TEXT 98
BEGIN
PROMPT 40 14 "Numero quietanza "
GROUP TEXT_NUM_SERIE
GROUP G_DISTINTA G_CC
END
TEXT 99
BEGIN
PROMPT 42 14 "Codice CAB "
GROUP ABI_CAB
GROUP G_ABICAB
END
GROUPBOX DLG_NULL 0 6
@ -163,14 +156,13 @@ LIST QPF_TIPOVERS 1 18
BEGIN
PROMPT 2 12 ""
ITEM " |Nessuno"
MESSAGE SHOW,97|SHOW,99|HIDE,96|HIDE,98|ENABLE,QPF_SERIE|HIDE,NUM_SERIE@
MESSAGE HIDE,G_DISTINTA@|HIDE,G_ABICAB@|HIDE,G_CC@
ITEM "B|Delega bancaria"
MESSAGE HIDE,TEXT_NUM_SERIE@|SHOW,ABI_CAB@|ENABLE,ABI_CAB@|HIDE,NUM_SERIE@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_ABICAB@
ITEM "D|Distinta"
MESSAGE SHOW,TEXT_NUM_SERIE@|ENABLE,NUM_SERIE@|SHOW,NUM_SERIE@|HIDE,ABI_CAB@|DISABLE,ABI_CAB@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_ABICAB@|HIDE,G_ABICAB@|SHOW,G_DISTINTA@
ITEM "C|C/C Postale"
MESSAGE SHOW,TEXT_NUM_SERIE@|CLEAR,QPF_ABI|CLEAR,QPF_SERIE|HIDE,ABI_CAB@
MESSAGE DISABLE,QPF_SERIE|DISABLE,ABI_CAB@
MESSAGE RESET,G_DISTINTA@|HIDE,G_DISTINTA@|RESET,G_ABICAB@|HIDE,G_ABICAB@|SHOW,G_CC@
FIELD LF_QUAP->TIPOVERS
END
@ -184,38 +176,56 @@ DATE QPF_DATAVERS
BEGIN
PROMPT 43 12 "Data versamento "
FIELD LF_QUAP->DATAVERS
WARNING "Manca la data versamento"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
END
STRING QPF_SERIE 5
BEGIN
PROMPT 23 14 ""
FIELD LF_QUAP->SERIE
GROUP NUM_SERIE
WARNING "Manca la serie"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
GROUP G_DISTINTA
END
STRING QPF_NUMERO 11
BEGIN
PROMPT 58 14 ""
WARNING "Manca il numero"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
FIELD LF_QUAP->NUMERO
GROUP NUM_SERIE
GROUP G_DISTINTA
END
NUMBER QPF_ABI 5
BEGIN
PROMPT 23 14 ""
FIELD LF_QUAP->SERIE
WARNING "Manca il codice ABI"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
END
NUMBER QPF_CAB 5
BEGIN
PROMPT 58 14 ""
FIELD LF_QUAP->NUMERO
WARNING "Manca il codice CAB"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
END
STRING QPF_CCQUIETANZA 11
BEGIN
PROMPT 58 14 ""
WARNING "Manca il numero quietanza"
VALIDATE REQIF_FUNC 1 QPF_TIPOVERS
FIELD LF_QUAP->NUMERO
GROUP G_CC
END
ENDPAGE

@ -17,3 +17,4 @@
#define QSF_CCQUIETANZA 183

@ -8,10 +8,9 @@ ENDPAGE
// 2.4.96 Messo CAB di 5. Abi e Cab zerofilled
//
#define ABI_CAB 7
#define NUM_SERIE 8
#define TEXT_NUM_SERIE 9
#define TEXT_ABI_CAB 6
#define G_ABICAB 7
#define G_DISTINTA 8
#define G_CC 9
PAGE "MODULO 770 - QUADRO S" -1 -1 78 18
@ -49,12 +48,6 @@ BEGIN
DISPLAY "Serie/ABI" SERIE
DISPLAY "Numero/Bollettino/CAB" NUMERO
OUTPUT QSF_NPROG NPROG
OUTPUT QSF_CODTRIB CODTRIB
OUTPUT QSF_DATAVERS DATAVERS
OUTPUT QSF_TIPOVERS TIPOVERS
OUTPUT QSF_INTERDIP INTERDIP
OUTPUT QSF_INTERDAT INTERDAT
OUTPUT QSF_IMPOSTA IMPOSTA
CHECKTYPE REQUIRED
KEY 1
END
@ -128,25 +121,25 @@ END
TEXT 96
BEGIN
PROMPT 2 14 "Numero serie "
GROUP TEXT_NUM_SERIE
GROUP G_DISTINTA
END
TEXT 97
BEGIN
PROMPT 2 14 "Codice ABI "
GROUP ABI_CAB
GROUP G_ABICAB
END
TEXT 98
BEGIN
PROMPT 42 14 "Numero quietanza "
GROUP TEXT_NUM_SERIE
GROUP G_DISTINTA G_CC
END
TEXT 99
BEGIN
PROMPT 42 14 "Codice CAB "
GROUP ABI_CAB
GROUP G_ABICAB
END
GROUPBOX DLG_NULL 0 6
@ -163,13 +156,13 @@ LIST QSF_TIPOVERS 1 18
BEGIN
PROMPT 2 12 ""
ITEM " |Nessuno"
MESSAGE SHOW,97|SHOW,99|HIDE,96|HIDE,98|ENABLE,QSF_SERIE|HIDE,NUM_SERIE@
MESSAGE HIDE,G_DISTINTA@|HIDE,G_CC@|HIDE,G_ABICAB@
ITEM "B|Delega bancaria"
MESSAGE HIDE,TEXT_NUM_SERIE@|SHOW,ABI_CAB@|ENABLE,ABI_CAB@|DISABLE,NUM_SERIE@|HIDE,NUM_SERIE@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_DISTINTA@|HIDE,G_DISTINTA@|SHOW,G_ABICAB@
ITEM "D|Distinta"
MESSAGE SHOW,TEXT_NUM_SERIE@|HIDE,ABI_CAB@|SHOW,NUM_SERIE@|ENABLE,NUM_SERIE@|DISABLE,ABI_CAB@
MESSAGE RESET,G_CC@|HIDE,G_CC@|RESET,G_ABICAB@|HIDE,G_ABICAB@|SHOW,G_DISTINTA@
ITEM "C|C/C Postale"
MESSAGE SHOW,TEXT_NUM_SERIE@|CLEAR,QSF_ABI|CLEAR,QSF_SERIE|HIDE,ABI_CAB@|DISABLE,QSF_SERIE|DISABLE,ABI_CAB@
MESSAGE RESET,G_DISTINTA@|HIDE,G_DISTINTA@|RESET,G_ABICAB@|HIDE,G_ABICAB@|SHOW,G_CC@
FIELD LF_QUAS->TIPOVERS
END
@ -183,38 +176,56 @@ DATE QSF_DATAVERS
BEGIN
PROMPT 43 12 "Data versamento "
FIELD LF_QUAS->DATAVERS
WARNING "Manca la data versamento"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
END
STRING QSF_SERIE 5
BEGIN
PROMPT 23 14 ""
FIELD LF_QUAS->SERIE
GROUP NUM_SERIE
GROUP G_DISTINTA
WARNING "Manca la serie"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
END
STRING QSF_NUMERO 11
BEGIN
PROMPT 58 14 ""
FIELD LF_QUAS->NUMERO
GROUP NUM_SERIE
WARNING "Manca il numero"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
GROUP G_DISTINTA
END
NUMBER QSF_ABI 5
BEGIN
PROMPT 23 14 ""
FIELD LF_QUAS->SERIE
WARNING "Manca il codice ABI"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
END
NUMBER QSF_CAB 5
BEGIN
PROMPT 58 14 ""
FIELD LF_QUAS->NUMERO
WARNING "Manca il codice CAB"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
FLAGS "Z"
GROUP ABI_CAB
GROUP G_ABICAB
END
STRING QSF_CCQUIETANZA 11
BEGIN
PROMPT 58 14 ""
FIELD LF_QUAS->NUMERO
WARNING "Manca il numero quietanza"
VALIDATE REQIF_FUNC 1 QSF_TIPOVERS
GROUP G_CC
END
ENDPAGE

@ -1,3 +1,602 @@
<<<<<<< quadb_b1.cpp
// 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())
{
// leggi dalla maschera di query, che' dovrebbero li' esservi sempre..
const long codditta = _msk[0]->get_long(QBF_CODDITTA);
const long codip = _msk[0]->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_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI
m.send_key(K_SHIFT+K_CTRL+'s', -QBG_ANADIP); // group 2 Nasconde QUADROB
}
else
{
m.send_key(K_SHIFT+K_CTRL+'h', -QB1G_QUADROB); // group 1 Ricerca su ANAGR.DIPENDENTI
m.send_key(K_SHIFT+K_CTRL+'s', -QB1G_ANADIP); // group 2 Nasconde QUADROB
}
}
bool TQuadriBB1_application::codditta77_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
TMask& m = f.mask();
TString16 codditta; codditta << app()._codditta;
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;
}
=======
// quadb_b1.cpp
#include <relapp.h>
#include <urldefid.h>
@ -592,4 +1191,5 @@ bool TQuadriBB1_application::QBTotIndennHandler(TMask_field& f, KEY k)
}
>>>>>>> 1.3
>>>>>>> 1.4

@ -14,5 +14,6 @@
#define QUC_PERC "PERC"
#define QUC_RITENUTE "RITENUTE"
#define QUC_NETTO "NETTO"
#define QUC_CONTSSN "CONTSSN"
#endif