770 2015 dopo controlli 770 semplificato dell'agenzia delle entrate

git-svn-id: svn://10.65.10.50/branches/R_10_00@23101 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2015-05-25 15:29:42 +00:00
parent 66243e8aaa
commit a04851fc0d
8 changed files with 209 additions and 227 deletions

View File

@ -278,21 +278,27 @@ void TSchedaPercipienti::calcola_riga_pag(TRectype& rec,
{
const int fdec = TCurrency::get_firm_dec();
real compenso = rec.get_real(PAG_COMPENSO);
real impcpa = (compenso * h_PercCassaPrev) / (CENTO + h_PercCassaPrev); impcpa.round(fdec); // calcolo CPA
real impcpa = (compenso * h_PercCassaPrev) / (CENTO + h_PercCassaPrev); impcpa.round(fdec); // calcolo CPA
rec.put(PAG_IMPCPA, impcpa);
real imponibile = ((compenso - impcpa) * h_PercAssImp) / CENTO; imponibile.round(fdec); // calcolo imponibile
real imponibile = ((compenso - impcpa) * h_PercAssImp) / CENTO; imponibile.round(fdec); // calcolo imponibile
rec.put(PAG_IMPONIBILE, imponibile);
real ritlorda = (imponibile * h_PercRitenuta) / CENTO; ritlorda.round(fdec); // calcolo ritenuta lorda
real ritlorda = (imponibile * h_PercRitenuta) / CENTO; ritlorda.round(fdec); // calcolo ritenuta lorda
rec.put(PAG_RITLORDA, ritlorda);
const real detfamil = rec.get_real(PAG_DETFAMIL);
const real detlavdip = rec.get_real(PAG_DETLAVDIP);
const real totdet = detfamil + detlavdip;
const real ritenuta = totdet > ritlorda ? ZERO : ritlorda - totdet;
rec.put(PAG_RITENUTA, ritenuta);
real ctssncomp = (((compenso * h_PercAssImpInps) / CENTO) * h_PercInps) / CENTO; ctssncomp.round(fdec); // calcolo contributo Inps complessivo
rec.put(PAG_INPSCOMP, ctssncomp);
real ctssnperc = (h_PercCommitInps == ZERO) ? ctssncomp - ((ctssncomp * 2) / 3) : ctssncomp - ((ctssncomp * h_PercCommitInps) / CENTO); ctssnperc.round(fdec); // calcolo contributo Inps del percipiente
rec.put(PAG_INPSPERC, ctssnperc);
real ctssncomp = (((compenso * h_PercAssImpInps) / CENTO) * h_PercInps) / CENTO;
ctssncomp.round(fdec); // calcolo contributo Inps complessivo
rec.put(PAG_INPSCOMP, ctssncomp);
real ctssnperc = h_PercCommitInps.is_zero() ? ctssncomp - ((ctssncomp * 2) / 3)
: ctssncomp - ((ctssncomp * h_PercCommitInps) / CENTO);
ctssnperc.round(fdec); // calcolo contributo Inps del percipiente
rec.put(PAG_INPSPERC, ctssnperc);
real utpagati = rec.get_real(PAG_UTPAGATI);
if (abs(utpagati) > abs(imponibile))
utpagati = imponibile;

View File

@ -22,7 +22,7 @@
#include "rpag.h"
#include "scperc.h"
TString _quadronuovo;
static TString4 _quadronuovo;
///////////////////////////////////////////////////////////
// Righe pagamento delle schede percipienti
@ -70,7 +70,7 @@ const TRectype* TRighe_pagamento::prospetto_e1(char caus)
void TRighe_pagamento::add_riga(const TRectype& scheda, const TRectype& riga)
{
TString chiave;
TString16 chiave;
const char causqua = toupper(scheda.get_char(SPR_CAUSQUA));
chiave << causqua;
@ -735,7 +735,7 @@ void TQuadroC_E2::genera_la(TRectype& quadro, const TRectype& riga) const
ammlordo += riga.get_real(PAG_SOMNSRIT);
ammlordo += riga.get_real(PAG_CONTROBB);
ammlordo += riga.get_real(PAG_SOMREGCONV);
quadro.put(QUD_TOTALE, ammlordo); // AUXXX021
quadro.put(QUD_TOTALE, ammlordo);
real somme = riga.get_real(PAG_COMPENSO);
somme -= imponibile;
@ -744,8 +744,8 @@ void TQuadroC_E2::genera_la(TRectype& quadro, const TRectype& riga) const
somme -= riga.get_real(PAG_SOMREGCONV);
quadro.put(QUD_SOMME, somme);
quadro.put(QUD_SOMREGCONV, riga.get(PAG_SOMREGCONV)); // AUXXX022
quadro.put(QUD_IMPONIBILE, imponibile); // AUXXX024
quadro.put(QUD_SOMREGCONV, riga.get(PAG_SOMREGCONV));
quadro.put(QUD_IMPONIBILE, imponibile); // AUXXX008
quadro.put(QUD_IMPORTO, riga.get(PAG_RITENUTA));
const real inps_tot = riga.get(PAG_INPSCOMP);
@ -755,8 +755,8 @@ void TQuadroC_E2::genera_la(TRectype& quadro, const TRectype& riga) const
inps_perc = riga.get_real(PAG_INPSPERC);
inps_erog = inps_tot - inps_perc;
}
quadro.put(QUD_CTINPSEROG, inps_erog); // AUXXX033
quadro.put(QUD_CTINPSPERC, inps_perc); // AUXXX034
quadro.put(QUD_CTINPSEROG, inps_erog); // AUXXX020
quadro.put(QUD_CTINPSPERC, inps_perc); // AUXXX021
genera_aliquota(quadro, QUD_PERC, QUD_IMPONIBILE, QUD_IMPORTO);
}
@ -892,7 +892,7 @@ void TQuadroC_E2::generazione()
const TRectype& scheda = cur.curr();
const TRectype& riga = cur.curr(LF_RPAG);
TProgress_monitor pi(items, TR("Generazione da schede."));
TProgress_monitor pi(items, TR("Generazione da schede"));
distruzione();

View File

@ -185,11 +185,12 @@ bool TGenera::azzera_quadroL()
TString scritta;
scritta.format("Azzeramento quadro ST per la ditta %ld", _codditta);
TProgind progn(cl_items, scritta, FALSE, TRUE);
TProgind progn(cl_items, scritta, false);
for (cl=0; cl.pos() < cl_items; ++cl)
{
progn.addstatus(1);
if (!progn.addstatus(1))
break;
// solo quelli dell'anno dichiarazione
if (curr.get_int(QUL_QLAP) != _annodic)
@ -204,7 +205,7 @@ bool TGenera::azzera_quadroL()
rl.remove();
}
return TRUE;
return true;
}
void TGenera::dati_rver(TLocalisamfile& rver,TSchedaP& sch, long numvers)
@ -461,7 +462,7 @@ class TGenera_versamenti : public TApplication
virtual bool menu(MENU_TAG m);
virtual bool destroy();
TGenera& genera() { return *_genera; }
TGenera& genera() { return *_genera; }
public:
TGenera_versamenti(char livello = 'S') : _liv(toupper(livello)) {}
@ -472,13 +473,12 @@ TGenera_versamenti& app() { return (TGenera_versamenti&)main_app(); }
bool TGenera_versamenti::menu(MENU_TAG m)
{
long codditta, codditta_prec;
int i = 0;
TConfig cnf_user(CONFIG_USER);
if (m == BAR_ITEM_ID(1))
{
codditta_prec = get_firm_770();
TConfig cnf_user(CONFIG_USER, _section);
const long codditta_prec = get_firm_770();
int i = 0;
long codditta = 0;
while ((codditta = cnf_user.get_long(DITTE_SEL, _section, i++)) != 0L)
{
set_firm_770(codditta);
@ -486,10 +486,9 @@ bool TGenera_versamenti::menu(MENU_TAG m)
break;
}
set_firm_770(codditta_prec);
return FALSE;
}
return FALSE;
return false;
}
bool TGenera_versamenti::create()

View File

@ -4,11 +4,11 @@
int main(int argc,char** argv)
{
const int n = (argc > 1) ? atoi(argv[1]+1) : -1;
const int n = argc>1 ? *argv[1]-'0' : 0;
switch(n)
{
case 1: m777200(argc, argv); break;
default: m777100(argc, argv); break;
case 1: m777200(argc, argv); break; // C.U.
default: m777100(argc, argv); break; // 770
}
return 0;
}

View File

@ -28,7 +28,7 @@
// Utility
///////////////////////////////////////////////////////////
const int ANNO_DIC = 2014;
const int ANNO_PAG = 2014;
///////////////////////////////////////////////////////////
// TForm770
@ -131,26 +131,39 @@ public:
bool TForm770::validate(TForm_item &cf, TToken_string &s)
{
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
const TFixed_string code = s.get(0); // prende il primo parametro, il codice del messaggio
if (code == "_PERIODO_RIF")
{
const TRectype& curr = relation()->curr();
const int anno = curr.get_int("QLAP");
const int mese = curr.get_int("QLMP");
TString8 str;
str.format("%02d%04d", mese, anno);
TString8 str; str.format("%02d%04d", mese, anno);
cf.set(str);
return true;
}
if (code == "_PROVINCIA")
{
const TString& prov = cf.get();
const TFixed_string prov = cf.get();
if (prov == "EE") // Il 770 non gradisce la provincia EE associata agli stati esteri
cf.set(""); else
if (prov == "FO") // Ci sono ancora vecchie province :-(
cf.set("FC");
return true;
}
if (code == "_SOLO_CAUS_M")
{
const TRectype& curr = relation()->curr();
if (!curr.get("CAUSALE").starts_with("M") || curr.get_real("IMPONIBILE") <= 5000)
cf.set("");
return true;
}
if (code == "_SOLO_CAUS_N")
{
const TRectype& curr = relation()->curr();
if (curr.get("CAUSALE") != "N")
cf.set("");
return true;
}
return TForm::validate(cf, s);
}
@ -398,12 +411,14 @@ TRecnotype TForm770::trasfer(long codditta, TTrasferimento770& file, char rectyp
region.put(BSE_CODDITTA, codditta);
cur.setregion(region, region);
if (region.num() == LF_QUADRO_ST)
TString16 filter;
switch (region.num())
{
TString16 filter;
filter.format("QLAP=%d", ANNO_DIC);
cur.setfilter(filter);
case LF_QUADRO_ST: filter.format("QLAP=%d", ANNO_PAG); break;
case LF_QUALA : filter.format("ANNO=%d", ANNO_PAG); break;
default: break;
}
cur.setfilter(filter);
const TRecnotype items = cur.items();
if (items > 0) // Se c'e almeno un record ...
@ -639,12 +654,11 @@ const TString& TTrasferimento770::read_codfis_dic(const TRectype& rec)
_codatt_dic = rec_nditte.get(NDT_CODATTPREV); // Codice attivita' prevalente
key.add(_codatt_dic); // key = CODDITTA|CODATTPREV
const TRectype& attiv = _cache770.get(LF_ATTIV, key);
if (attiv.exist(ATT_CODATECO)) // Non e' detto che il campo esista sempre
{
const TString& codateco = attiv.get(ATT_CODATECO);
if (codateco.full())
_codatt_dic = codateco;
}
const TString& codateco = attiv.get(ATT_CODATECO);
if (codateco.full())
_codatt_dic = codateco;
else
error_box(TR("Non esiste il codice attività ATECO"));
const TAnagrafica dich(LF_ANAG, _tipoa_dic, _codan_dic);
if (!dich.ok())
@ -660,8 +674,8 @@ const TString& TTrasferimento770::read_codfis_dic(const TRectype& rec)
TRecnotype TTrasferimento770::conta_certificazioni() const
{
TString query;
query.format("USE %d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld",
LF_QUALA, _cod_ditta, _cod_ditta);
query.format("USE %d SELECT ANNO=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld",
LF_QUALA, ANNO_PAG,_cod_ditta, _cod_ditta);
TISAM_recordset recset(query);
const TRecnotype nc = recset.items();
return nc;
@ -672,7 +686,7 @@ bool TTrasferimento770::casella_prospetto_st() const
// Il quadro ST e' il "vecchio" quadro L
TString query;
query.format("USE %d\nSELECT QLAP=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld",
LF_QUADRO_ST, ANNO_DIC, _cod_ditta, _cod_ditta);
LF_QUADRO_ST, ANNO_PAG, _cod_ditta, _cod_ditta);
TISAM_recordset recset(query);
const TRecnotype nr = recset.items();
return nr > 0;
@ -683,7 +697,7 @@ bool TTrasferimento770::casella_prospetto_sx() const
// Il quadro SX sono le ritenute versate in eccesso
TString query;
query.format("USE %d\nSELECT QLAP=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld",
LF_QUADRO_ST, ANNO_DIC, _cod_ditta, _cod_ditta);
LF_QUADRO_ST, ANNO_PAG, _cod_ditta, _cod_ditta);
TISAM_recordset recset(query);
bool found = false;
for (bool ok = recset.move_first(); ok && !found; ok = recset.move_next())
@ -769,6 +783,9 @@ bool TTrasferimento770::append_record_b()
rec.set(134, rec_rap.data_nascita());
rec.set(135, rec_rap.comune_nascita());
rec.set(136, rec_rap.provincia_nascita());
if (rec_rap.comune_nascita().blank())
cantread_box("dati nascita legale rappresentante");
}
else
cantread_box("dati del legale rappresentante");
@ -830,18 +847,18 @@ void TTrasferimento770::riepiloga_ss(const TRecord770& rec, TArray& riep_ss) con
{
TString8 code;
real val;
for (int i = 0; rec.np_get_real(i, code, val); i++) if (code.starts_with("AU") && !val.is_zero())
for (int i = 0; rec.np_get_real(i, code, val); i++) if (code.starts_with("AU") && code[5] != 'A' && !val.is_zero())
{
const TString& key = code.right(3);
const int num = atoi(key);
if (num >= 27 && num <= 35)
if (num >= 9 && num <= 17)
{
real& r = real_at(riep_ss, num-27); // AU_27-AU_47 -> SS003001
r += val;
real& r = real_at(riep_ss, num-9); // AU_9 -AU_54 -> SS003001
r += val; // AU_10-AU_55 -> SS003002
} else
if (num >= 47 && num <= 55)
if (num >= 54 && num <= 62)
{
real& r = real_at(riep_ss, num-47);
real& r = real_at(riep_ss, num-54);
r -= val;
}
}
@ -874,10 +891,10 @@ bool TTrasferimento770::split(const char* path)
TRecord770 rec;
unsigned long disk_size = 15*1024*1024; // Max 15 Mb per fornitura
const bool magnetic = ::xvt_fsys_is_removable_drive(path) !=0;
const bool magnetic = ::xvt_fsys_is_floppy_drive(path)!=0;
if (magnetic)
{
if (!yesno_box(FR("Inserire il primo disco del trasferimento nell'unita' %s\n"
if (!yesno_box(FR("Inserire il primo disco del trasferimento nell'unità %s\n"
"Tutti i dischi devono essere vuoti ed avere la stesso formato.\n"
"Si desidera iniziare il trasferimento?"), path))
return false;
@ -887,7 +904,7 @@ bool TTrasferimento770::split(const char* path)
const long records_per_disk = long(disk_size / TOTAL_SIZE) - 3; // Tolgo A,B,Z
const int volumes = int((records-1)/records_per_disk)+1;
TProgind pi(records, TR("Generazione file trasferimento"), false, true);
TProgress_monitor pi(records, TR("Generazione file trasferimento"));
// Read from start
open("", 'r');
@ -933,7 +950,7 @@ bool TTrasferimento770::split(const char* path)
{
while (read(rec))
{
pi.addstatus(1);
pi.add_status();
const char tipo_rec = rec.tipo_record();
if (tipo_rec <= 'A' || tipo_rec == 'F' || tipo_rec == 'J' || tipo_rec >= 'Z')
@ -1029,7 +1046,7 @@ void TTrasferimento770::remove()
}
TTrasferimento770::TTrasferimento770(const char* path, char mode, int volume)
: _in_stream(NULL), _out_stream(NULL), _save_headers(false), _centesimi(false)
: _in_stream(NULL), _out_stream(NULL), _save_headers(false), _centesimi(false)
{
open(path, mode, volume);
}
@ -1050,6 +1067,7 @@ protected:
public:
TTransfer770_msk();
~TTransfer770_msk();
};
bool TTransfer770_msk::on_field_event(TOperable_field& of, TField_event fe, long jolly)
@ -1072,16 +1090,34 @@ bool TTransfer770_msk::on_field_event(TOperable_field& of, TField_event fe, long
TTransfer770_msk::TTransfer770_msk() : TAutomask("777100a")
{
/*
int anno = ini_get_int(CONFIG_STUDIO, "77", ANNO_SEL);
if (anno <= 0)
set(F_ANNOPAG, ANNO_PAG);
set(F_ANNODIC, ANNO_PAG+1);
set(F_NOHEADERS,ini_get_bool(CONFIG_STUDIO, "77", "SaveDataOnly", false));
set(F_PATH, ini_get_string(CONFIG_STUDIO, "77", "SavePath"));
long ditta1 = ini_get_int (CONFIG_STUDIO, "77", "SaveFirm1", 0);
long ditta2 = ini_get_int (CONFIG_STUDIO, "77", "SaveFirm2", 0);
if (ditta1 <= 0 || ditta2 <= 0)
{
const TDate oggi(TODAY);
anno = oggi.year()-1;
TPointer_array d;
prefix().firms(d);
if (!d.empty())
{
if (ditta1 <= 0)
ditta1 = d.get_long(0);
if (ditta2 < ditta1)
ditta2 = d.get_long(d.last());
}
}
set(F_ANNO, anno);
*/
set(F_ANNO, ANNO_DIC);
set(F_DADITTA, ditta1);
set(F_ADITTA, ditta2);
}
TTransfer770_msk::~TTransfer770_msk()
{
ini_set_bool (CONFIG_STUDIO, "77", "SaveDataOnly",get_bool(F_NOHEADERS));
ini_set_string(CONFIG_STUDIO, "77", "SavePath", get(F_PATH));
ini_set_int (CONFIG_STUDIO, "77", "SaveFirm1", get_long(F_DADITTA));
ini_set_int (CONFIG_STUDIO, "77", "SaveFirm2", get_long(F_ADITTA));
}
class TTransfer770_app : public TSkeleton_application
@ -1098,7 +1134,7 @@ void TTransfer770_app::main_loop()
{
TFilename tmp; tmp.tempdir();
TTrasferimento770 t(tmp, 'w');
t.save_headers(m.get_bool(F_HEADERS));
t.save_headers(!m.get_bool(F_NOHEADERS));
t.set_cent_mode(m.get_bool(F_CENT));
TRelation rel_base(LF_BASE);

View File

@ -1,9 +1,10 @@
#define F_PATH 102
#define F_ANNO 104
#define F_DADITTA 105
#define F_DADESC 106
#define F_ADITTA 107
#define F_ADESC 108
#define F_HEADERS 109
#define F_CENT 110
#define F_PATH 102
#define F_ANNOPAG 103
#define F_ANNODIC 104
#define F_DADITTA 105
#define F_DADESC 106
#define F_ADITTA 107
#define F_ADESC 108
#define F_NOHEADERS 109
#define F_CENT 110

View File

@ -1,14 +1,20 @@
#include "777100a.h"
PAGE "Invio 770" -1 -1 72 8
PAGE "Invio 770" -1 -1 76 10
NUMBER F_ANNO 4
NUMBER F_ANNOPAG 4
BEGIN
PROMPT 47 1 "Anno dichiarazione "
PROMPT 49 0 "Anno pagamenti "
FLAGS "D"
END
STRING F_PATH 260 53
NUMBER F_ANNODIC 4
BEGIN
PROMPT 49 1 "Anno dichiarazione "
FLAGS "D"
END
STRING F_PATH 260 58
BEGIN
PROMPT 1 2 "Destinazione "
DSELECT
@ -17,7 +23,7 @@ END
NUMBER F_DADITTA 5
BEGIN
PROMPT 1 3 "Da ditta "
PROMPT 1 4 "Dalla ditta "
USE LF_BASE
JOIN LF_NDITTE INTO CODDITTA=CODDITTA
INPUT CODDITTA F_DADITTA
@ -27,17 +33,18 @@ BEGIN
OUTPUT F_DADITTA CODDITTA
OUTPUT F_DADESC LF_NDITTE->RAGSOC
CHECKTYPE NORMAL
ADD RUN ba4 -2
END
STRING F_DADESC 50
BEGIN
PROMPT 20 3 ""
PROMPT 22 4 ""
FLAGS "D"
END
NUMBER F_ADITTA 5
BEGIN
PROMPT 1 4 "A ditta "
PROMPT 1 5 "Alla ditta "
COPY USE F_DADITTA
INPUT CODDITTA F_ADITTA
COPY DISPLAY F_DADITTA
@ -46,22 +53,23 @@ BEGIN
CHECKTYPE SEARCH
NUM_EXPR (#F_ADITTA=0)||(#F_ADITTA>=#F_DADITTA)
WARNING "La ditta finale deve seguire quella iniziale"
ADD RUN ba4 -2
END
STRING F_ADESC 50
BEGIN
PROMPT 20 4 ""
PROMPT 22 5 ""
FLAGS "D"
END
BOOLEAN F_HEADERS
BOOLEAN F_NOHEADERS
BEGIN
PROMPT 1 6 "Genera record di testata (tipo A, B, Z)"
PROMPT 1 7 "Generazione dei soli record dati (H,J) senza record di testata (A, B, Z)"
END
BOOLEAN F_CENT
BEGIN
PROMPT 1 7 "Salva importi in centesimi (x 100)"
PROMPT 1 8 "Salvataggio importi in centesimi (x 100)"
FLAGS "H"
END

View File

@ -40,7 +40,7 @@ BEGIN
KEY "COD.FIS"
PROMPT 10 1 ""
FIELD 216@->COFI
SPECIAL STRING TRASFER "AU001001" "AN"
SPECIAL STRING TRASFER "AU001A01" "AN"
END
STRINGA 2
@ -48,7 +48,7 @@ BEGIN
KEY "COGNOME"
PROMPT 42 1 ""
FIELD 216@->RAGSOC[1,30]
SPECIAL STRING TRASFER "AU001002" "AN"
SPECIAL STRING TRASFER "AU001A02" "AN"
END
STRINGA 3
@ -56,7 +56,7 @@ BEGIN
KEY "NOME"
PROMPT 22 3 ""
FIELD 216@->RAGSOC[31,50]
SPECIAL STRING TRASFER "AU001003" "AN"
SPECIAL STRING TRASFER "AU001A03" "AN"
END
STRINGA 4
@ -64,7 +64,7 @@ BEGIN
KEY "SESSO"
PROMPT 57 3 ""
FIELD 218@->SESSO
SPECIAL STRING TRASFER "AU001004" "AN"
SPECIAL STRING TRASFER "AU001A04" "AN"
END
STRINGA 5
@ -73,7 +73,7 @@ BEGIN
PROMPT 63 3 ""
FIELD 218@->DATANASC
PICTURE "##^ ##^ ####"
SPECIAL STRING TRASFER "AU001005" "DT"
SPECIAL STRING TRASFER "AU001A05" "DT"
END
STRINGA 6
@ -81,7 +81,7 @@ BEGIN
KEY "COMUNE DI NASCITA"
PROMPT 79 3 ""
FIELD 313@->DENCOM
SPECIAL STRING TRASFER "AU001006" "AN"
SPECIAL STRING TRASFER "AU001A06" "AN"
END
STRINGA 7
@ -89,273 +89,205 @@ BEGIN
KEY "PROV DI NASCITA"
PROMPT 126 3 ""
FIELD 313@->PROVCOM
SPECIAL STRING TRASFER "AU001007" "AN"
SPECIAL STRING TRASFER "AU001A07" "AN"
MESSAGE _PROVINCIA
END
STRINGA 8
STRINGA 20
BEGIN
KEY "COMUNE DI RESIDENZA FISCALE"
PROMPT 25 5 ""
FIELD 513@->DENCOM
FIELD 413@->DENCOM
SPECIAL STRING TRASFER "AU001008" "AN"
GROUP 1
SPECIAL STRING TRASFER "AU001A20" "AN"
END
STRINGA 9
STRINGA 21
BEGIN
KEY "PROV DI RESIDENZA FISCALE"
PROMPT 126 3 ""
FIELD 513@->PROVCOM
FIELD 413@->PROVCOM
GROUP 1
SPECIAL STRING TRASFER "AU001009" "AN"
MESSAGE _PROVINCIA
MESSAGE _SOLO_CAUS_N
SPECIAL STRING TRASFER "AU001A21" "AN"
END
NUMBER 10
STRINGA 22
BEGIN
KEY "CODICE REGIONE"
KEY "CODICE COMUNE"
PROMPT 78 5 ""
FIELD 218@->CODREG96
SPECIAL STRING TRASFER "AU001010" "NU"
GROUP 1
END
STRINGA 12
BEGIN
KEY "CODICE COMUNE SOLO SE CAUSALE=N"
PROMPT 78 5 ""
SPECIAL STRING TRASFER "AU001011" "AN"
FIELD 513@->COM
FIELD 413@->COM
SPECIAL STRING TRASFER "AU001A22" "AN"
MESSAGE _SOLO_CAUS_N
END
STRINGA 101
BEGIN
KEY "VIA RES. FISC."
FIELD 216@->INDRF[1,35]
FIELD 216@->INDRES[1,35]
FLAGS "H"
MESSAGE COPY,11
END
STRINGA 102
BEGIN
KEY "NUM.CIV DI RESIDENZA FISC."
FLAGS "H"
FIELD 216@->CIVRF
FIELD 216@->CIVRES
MESSAGE APPEND,11
END
STRINGA 11
BEGIN
KEY "VIA RF + NUMCIVRF"
PROMPT 78 5 ""
SPECIAL STRING TRASFER "AU001012" "AN"
MESSAGE COPY,17
END
STRINGA 15
BEGIN
KEY "CODICE FISCALE ESTERO"
PROMPT 90 7 ""
FIELD 216@->COFIEST
SPECIAL STRING TRASFER "AU001015" "AN"
MESSAGE EMPTY HIDE,15@
MESSAGE SHOW,15@
END
STRINGA 16
BEGIN
KEY "LOCALITA' ESTERA DI RES."
PROMPT 75 7 ""
SPECIAL STRING TRASFER "AU001016" "AN"
GROUP 15
END
STRINGA 17
BEGIN
KEY "INDIRIZZO DI RES. ESTERO"
PROMPT 75 7 ""
SPECIAL STRING TRASFER "AU001017" "AN"
GROUP 15
END
NUMERO 18
BEGIN
KEY "STATO ESTERO"
PROMPT 75 7 ""
FIELD 216@->STATORES
SPECIAL STRING TRASFER "AU001018" "NU"
GROUP 15
END
STRINGA 19
BEGIN
KEY "CAUSALE"
PROMPT 13 9 ""
FIELD CAUSALE
SPECIAL STRING TRASFER "AU001019" "AN"
SPECIAL STRING TRASFER "AU001001" "AN"
END
NUMERO 20
NUMERO 102
BEGIN
KEY "ANNO"
PROMPT 16 9 ""
FIELD ANNO
SPECIAL STRING TRASFER "AU001020" "NP"
SPECIAL STRING TRASFER "AU001002" "NP"
END
STRINGA 21
STRINGA 103
BEGIN
KEY "ANTICIPAZIONI"
PROMPT 27 9 ""
FIELD ANTICIPAZ
SPECIAL STRING TRASFER "AU001021" "CB"
SPECIAL STRING TRASFER "AU001003" "CB"
END
VALUTA 22
VALUTA 104
BEGIN
KEY "AMMONTARE LORDO"
PROMPT 27 9 ""
FIELD TOTALE
SPECIAL STRING TRASFER "AU001022" "NP"
SPECIAL STRING TRASFER "AU001004" "NP"
END
VALUTA 23
VALUTA 105
BEGIN
KEY "SOMREGCONV"
PROMPT 47 9 ""
FIELD SOMREGCONV
SPECIAL STRING TRASFER "AU001023" "NP"
SPECIAL STRING TRASFER "AU001005" "NP"
END
NUMERO 24
NUMERO 106
BEGIN
KEY "Codice somme non soggette a ritenuta"
PROMPT 64 9 ""
SPECIAL STRING TRASFER "AU001024" "NP"
SPECIAL STRING TRASFER "AU001006" "NP"
MESSAGE _NUMEXPR,IF(SOMME>0,1,0)
END
VALUTA 25
VALUTA 107
BEGIN
KEY "SOMME NON SOGGETTE A RITENUTA"
PROMPT 66 9 ""
PROMPT 107 9 ""
FIELD SOMME
SPECIAL STRING TRASFER "AU001025" "NP"
SPECIAL STRING TRASFER "AU001007" "NP"
END
VALUTA 26
VALUTA 108
BEGIN
KEY "IMPONIBILE = 22-23-25"
PROMPT 88 9 ""
FIELD IMPONIBILE
SPECIAL STRING TRASFER "AU001026" "NP"
PROMPT 108 9 ""
FIELD IMPONIBILE
SPECIAL STRING TRASFER "AU001008" "NP"
END
VALUTA 27
VALUTA 109
BEGIN
KEY "Ritenute operate a titolo di acconto"
PROMPT 109 9 ""
FIELD IMPORTO
SPECIAL STRING TRASFER "AU001027" "NP"
SPECIAL STRING TRASFER "AU001009" "NP"
END
VALUTA 28
VALUTA 110
BEGIN
KEY "Ritenute operate a titolo di imposta"
PROMPT 109 9 ""
SPECIAL STRING TRASFER "AU001028" "NP"
PROMPT 110 9 ""
SPECIAL STRING TRASFER "AU001010" "NP"
END
VALUTA 29
VALUTA 111
BEGIN
KEY "RITENUTE SOSPESE"
PROMPT 109 9 ""
FIELD RITSOSPESE
SPECIAL STRING TRASFER "AU001029" ""
SPECIAL STRING TRASFER "AU001011" ""
END
VALUTA 30
VALUTA 112
BEGIN
KEY "ADDIZIONALE REGIONALE a titolo di acconto"
PROMPT 109 9 ""
FIELD ADDREG
SPECIAL STRING TRASFER "AU001030" "NP"
SPECIAL STRING TRASFER "AU001012" "NP"
END
VALUTA 31
VALUTA 113
BEGIN
KEY "ADDIZIONALE REGIONALE a titolo di imposta"
PROMPT 109 9 ""
SPECIAL STRING TRASFER "AU001031" "NP"
SPECIAL STRING TRASFER "AU001013" "NP"
END
VALUTA 32
VALUTA 114
BEGIN
KEY "ADDIZIONALE REGIONALE SOSPESA"
PROMPT 109 9 ""
PROMPT 114 9 ""
FIELD ADDREGSOSP
SPECIAL STRING TRASFER "AU001032" "NP"
SPECIAL STRING TRASFER "AU001014" "NP"
END
VALUTA 33
VALUTA 115
BEGIN
KEY "ADDIZIONALE COMUNALE a titolo di acconto"
PROMPT 109 9 ""
// FIELD ADDCOM
SPECIAL STRING TRASFER "AU001033" "NP"
SPECIAL STRING TRASFER "AU001015" "NP"
END
VALUTA 34
VALUTA 116
BEGIN
KEY "ADDIZIONALE COMUNALE a titolo di imposta"
PROMPT 109 9 ""
SPECIAL STRING TRASFER "AU001034" "NP"
PROMPT 116 9 ""
SPECIAL STRING TRASFER "AU001016" "NP"
END
VALUTA 35
VALUTA 117
BEGIN
KEY "ADDIZIONALE COMUNALE SOSPESA"
PROMPT 109 9 ""
PROMPT 117 9 ""
// FIELD ADDCOMSOSP
SPECIAL STRING TRASFER "AU001035" "NP"
SPECIAL STRING TRASFER "AU001017" "NP"
END
VALUTA 36
VALUTA 118
BEGIN
KEY "IMPONIBILE ANNI PRECEDENTI"
PROMPT 109 9 ""
PROMPT 118 9 ""
FIELD IMPANNIPRE
SPECIAL STRING TRASFER "AU001036" "NP"
SPECIAL STRING TRASFER "AU001018" "NP"
END
VALUTA 37
VALUTA 119
BEGIN
KEY "RITENUTE ANNI PRECEDENTI"
PROMPT 109 9 ""
PROMPT 119 9 ""
FIELD RITANNIPRE
SPECIAL STRING TRASFER "AU001037" "NP"
SPECIAL STRING TRASFER "AU001019" "NP"
END
VALUTA 38
VALUTA 120
BEGIN
KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL SOGGETTO EROGANTE"
PROMPT 109 9 ""
PROMPT 120 9 ""
FIELD CTINPSEROG
SPECIAL STRING TRASFER "AU001038" "NP"
SPECIAL STRING TRASFER "AU001020" "NP"
MESSAGE _SOLO_CAUS_M
END
VALUTA 39
VALUTA 121
BEGIN
KEY "CONTRIBUTI PREVIDENZIALI A CARICO DEL PERCIPIENTE"
PROMPT 109 9 ""
PROMPT 121 9 ""
FIELD CTINPSPERC
SPECIAL STRING TRASFER "AU001039" "NP"
SPECIAL STRING TRASFER "AU001021" "NP"
MESSAGE _SOLO_CAUS_M
END
END