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

@ -289,9 +289,15 @@ void TSchedaPercipienti::calcola_riga_pag(TRectype& rec,
const real totdet = detfamil + detlavdip; const real totdet = detfamil + detlavdip;
const real ritenuta = totdet > ritlorda ? ZERO : ritlorda - totdet; const real ritenuta = totdet > ritlorda ? ZERO : ritlorda - totdet;
rec.put(PAG_RITENUTA, ritenuta); rec.put(PAG_RITENUTA, ritenuta);
real ctssncomp = (((compenso * h_PercAssImpInps) / CENTO) * h_PercInps) / CENTO; ctssncomp.round(fdec); // calcolo contributo Inps complessivo
real ctssncomp = (((compenso * h_PercAssImpInps) / CENTO) * h_PercInps) / CENTO;
ctssncomp.round(fdec); // calcolo contributo Inps complessivo
rec.put(PAG_INPSCOMP, ctssncomp); 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
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); rec.put(PAG_INPSPERC, ctssnperc);
real utpagati = rec.get_real(PAG_UTPAGATI); real utpagati = rec.get_real(PAG_UTPAGATI);
if (abs(utpagati) > abs(imponibile)) if (abs(utpagati) > abs(imponibile))

View File

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

View File

@ -185,11 +185,12 @@ bool TGenera::azzera_quadroL()
TString scritta; TString scritta;
scritta.format("Azzeramento quadro ST per la ditta %ld", _codditta); 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) for (cl=0; cl.pos() < cl_items; ++cl)
{ {
progn.addstatus(1); if (!progn.addstatus(1))
break;
// solo quelli dell'anno dichiarazione // solo quelli dell'anno dichiarazione
if (curr.get_int(QUL_QLAP) != _annodic) if (curr.get_int(QUL_QLAP) != _annodic)
@ -204,7 +205,7 @@ bool TGenera::azzera_quadroL()
rl.remove(); rl.remove();
} }
return TRUE; return true;
} }
void TGenera::dati_rver(TLocalisamfile& rver,TSchedaP& sch, long numvers) void TGenera::dati_rver(TLocalisamfile& rver,TSchedaP& sch, long numvers)
@ -472,13 +473,12 @@ TGenera_versamenti& app() { return (TGenera_versamenti&)main_app(); }
bool TGenera_versamenti::menu(MENU_TAG m) 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)) 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) while ((codditta = cnf_user.get_long(DITTE_SEL, _section, i++)) != 0L)
{ {
set_firm_770(codditta); set_firm_770(codditta);
@ -486,10 +486,9 @@ bool TGenera_versamenti::menu(MENU_TAG m)
break; break;
} }
set_firm_770(codditta_prec); set_firm_770(codditta_prec);
return FALSE;
} }
return FALSE; return false;
} }
bool TGenera_versamenti::create() bool TGenera_versamenti::create()

View File

@ -4,11 +4,11 @@
int main(int argc,char** argv) 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) switch(n)
{ {
case 1: m777200(argc, argv); break; case 1: m777200(argc, argv); break; // C.U.
default: m777100(argc, argv); break; default: m777100(argc, argv); break; // 770
} }
return 0; return 0;
} }

View File

@ -28,7 +28,7 @@
// Utility // Utility
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
const int ANNO_DIC = 2014; const int ANNO_PAG = 2014;
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TForm770 // TForm770
@ -131,26 +131,39 @@ public:
bool TForm770::validate(TForm_item &cf, TToken_string &s) 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") if (code == "_PERIODO_RIF")
{ {
const TRectype& curr = relation()->curr(); const TRectype& curr = relation()->curr();
const int anno = curr.get_int("QLAP"); const int anno = curr.get_int("QLAP");
const int mese = curr.get_int("QLMP"); const int mese = curr.get_int("QLMP");
TString8 str; TString8 str; str.format("%02d%04d", mese, anno);
str.format("%02d%04d", mese, anno);
cf.set(str); cf.set(str);
return true; return true;
} }
if (code == "_PROVINCIA") 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 if (prov == "EE") // Il 770 non gradisce la provincia EE associata agli stati esteri
cf.set(""); else cf.set(""); else
if (prov == "FO") // Ci sono ancora vecchie province :-( if (prov == "FO") // Ci sono ancora vecchie province :-(
cf.set("FC"); cf.set("FC");
return true; 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); return TForm::validate(cf, s);
} }
@ -398,12 +411,14 @@ TRecnotype TForm770::trasfer(long codditta, TTrasferimento770& file, char rectyp
region.put(BSE_CODDITTA, codditta); region.put(BSE_CODDITTA, codditta);
cur.setregion(region, region); cur.setregion(region, region);
if (region.num() == LF_QUADRO_ST)
{
TString16 filter; TString16 filter;
filter.format("QLAP=%d", ANNO_DIC); switch (region.num())
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(); const TRecnotype items = cur.items();
if (items > 0) // Se c'e almeno un record ... 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 _codatt_dic = rec_nditte.get(NDT_CODATTPREV); // Codice attivita' prevalente
key.add(_codatt_dic); // key = CODDITTA|CODATTPREV key.add(_codatt_dic); // key = CODDITTA|CODATTPREV
const TRectype& attiv = _cache770.get(LF_ATTIV, key); 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); const TString& codateco = attiv.get(ATT_CODATECO);
if (codateco.full()) if (codateco.full())
_codatt_dic = codateco; _codatt_dic = codateco;
} else
error_box(TR("Non esiste il codice attività ATECO"));
const TAnagrafica dich(LF_ANAG, _tipoa_dic, _codan_dic); const TAnagrafica dich(LF_ANAG, _tipoa_dic, _codan_dic);
if (!dich.ok()) if (!dich.ok())
@ -660,8 +674,8 @@ const TString& TTrasferimento770::read_codfis_dic(const TRectype& rec)
TRecnotype TTrasferimento770::conta_certificazioni() const TRecnotype TTrasferimento770::conta_certificazioni() const
{ {
TString query; TString query;
query.format("USE %d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld", query.format("USE %d SELECT ANNO=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld",
LF_QUALA, _cod_ditta, _cod_ditta); LF_QUALA, ANNO_PAG,_cod_ditta, _cod_ditta);
TISAM_recordset recset(query); TISAM_recordset recset(query);
const TRecnotype nc = recset.items(); const TRecnotype nc = recset.items();
return nc; return nc;
@ -672,7 +686,7 @@ bool TTrasferimento770::casella_prospetto_st() const
// Il quadro ST e' il "vecchio" quadro L // Il quadro ST e' il "vecchio" quadro L
TString query; TString query;
query.format("USE %d\nSELECT QLAP=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld", 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); TISAM_recordset recset(query);
const TRecnotype nr = recset.items(); const TRecnotype nr = recset.items();
return nr > 0; return nr > 0;
@ -683,7 +697,7 @@ bool TTrasferimento770::casella_prospetto_sx() const
// Il quadro SX sono le ritenute versate in eccesso // Il quadro SX sono le ritenute versate in eccesso
TString query; TString query;
query.format("USE %d\nSELECT QLAP=%d\nFROM CODDITTA=%ld\nTO CODDITTA=%ld", 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); TISAM_recordset recset(query);
bool found = false; bool found = false;
for (bool ok = recset.move_first(); ok && !found; ok = recset.move_next()) 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(134, rec_rap.data_nascita());
rec.set(135, rec_rap.comune_nascita()); rec.set(135, rec_rap.comune_nascita());
rec.set(136, rec_rap.provincia_nascita()); rec.set(136, rec_rap.provincia_nascita());
if (rec_rap.comune_nascita().blank())
cantread_box("dati nascita legale rappresentante");
} }
else else
cantread_box("dati del legale rappresentante"); cantread_box("dati del legale rappresentante");
@ -830,18 +847,18 @@ void TTrasferimento770::riepiloga_ss(const TRecord770& rec, TArray& riep_ss) con
{ {
TString8 code; TString8 code;
real val; 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 TString& key = code.right(3);
const int num = atoi(key); 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 real& r = real_at(riep_ss, num-9); // AU_9 -AU_54 -> SS003001
r += val; r += val; // AU_10-AU_55 -> SS003002
} else } 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; r -= val;
} }
} }
@ -874,10 +891,10 @@ bool TTrasferimento770::split(const char* path)
TRecord770 rec; TRecord770 rec;
unsigned long disk_size = 15*1024*1024; // Max 15 Mb per fornitura 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 (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" "Tutti i dischi devono essere vuoti ed avere la stesso formato.\n"
"Si desidera iniziare il trasferimento?"), path)) "Si desidera iniziare il trasferimento?"), path))
return false; 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 long records_per_disk = long(disk_size / TOTAL_SIZE) - 3; // Tolgo A,B,Z
const int volumes = int((records-1)/records_per_disk)+1; 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 // Read from start
open("", 'r'); open("", 'r');
@ -933,7 +950,7 @@ bool TTrasferimento770::split(const char* path)
{ {
while (read(rec)) while (read(rec))
{ {
pi.addstatus(1); pi.add_status();
const char tipo_rec = rec.tipo_record(); const char tipo_rec = rec.tipo_record();
if (tipo_rec <= 'A' || tipo_rec == 'F' || tipo_rec == 'J' || tipo_rec >= 'Z') if (tipo_rec <= 'A' || tipo_rec == 'F' || tipo_rec == 'J' || tipo_rec >= 'Z')
@ -1050,6 +1067,7 @@ protected:
public: public:
TTransfer770_msk(); TTransfer770_msk();
~TTransfer770_msk();
}; };
bool TTransfer770_msk::on_field_event(TOperable_field& of, TField_event fe, long jolly) 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") TTransfer770_msk::TTransfer770_msk() : TAutomask("777100a")
{ {
/* set(F_ANNOPAG, ANNO_PAG);
int anno = ini_get_int(CONFIG_STUDIO, "77", ANNO_SEL); set(F_ANNODIC, ANNO_PAG+1);
if (anno <= 0) 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); TPointer_array d;
anno = oggi.year()-1; 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_DADITTA, ditta1);
set(F_ANNO, ANNO_DIC); 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 class TTransfer770_app : public TSkeleton_application
@ -1098,7 +1134,7 @@ void TTransfer770_app::main_loop()
{ {
TFilename tmp; tmp.tempdir(); TFilename tmp; tmp.tempdir();
TTrasferimento770 t(tmp, 'w'); 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)); t.set_cent_mode(m.get_bool(F_CENT));
TRelation rel_base(LF_BASE); TRelation rel_base(LF_BASE);

View File

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

View File

@ -1,14 +1,20 @@
#include "777100a.h" #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 BEGIN
PROMPT 47 1 "Anno dichiarazione " PROMPT 49 0 "Anno pagamenti "
FLAGS "D" FLAGS "D"
END 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 BEGIN
PROMPT 1 2 "Destinazione " PROMPT 1 2 "Destinazione "
DSELECT DSELECT
@ -17,7 +23,7 @@ END
NUMBER F_DADITTA 5 NUMBER F_DADITTA 5
BEGIN BEGIN
PROMPT 1 3 "Da ditta " PROMPT 1 4 "Dalla ditta "
USE LF_BASE USE LF_BASE
JOIN LF_NDITTE INTO CODDITTA=CODDITTA JOIN LF_NDITTE INTO CODDITTA=CODDITTA
INPUT CODDITTA F_DADITTA INPUT CODDITTA F_DADITTA
@ -27,17 +33,18 @@ BEGIN
OUTPUT F_DADITTA CODDITTA OUTPUT F_DADITTA CODDITTA
OUTPUT F_DADESC LF_NDITTE->RAGSOC OUTPUT F_DADESC LF_NDITTE->RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN ba4 -2
END END
STRING F_DADESC 50 STRING F_DADESC 50
BEGIN BEGIN
PROMPT 20 3 "" PROMPT 22 4 ""
FLAGS "D" FLAGS "D"
END END
NUMBER F_ADITTA 5 NUMBER F_ADITTA 5
BEGIN BEGIN
PROMPT 1 4 "A ditta " PROMPT 1 5 "Alla ditta "
COPY USE F_DADITTA COPY USE F_DADITTA
INPUT CODDITTA F_ADITTA INPUT CODDITTA F_ADITTA
COPY DISPLAY F_DADITTA COPY DISPLAY F_DADITTA
@ -46,22 +53,23 @@ BEGIN
CHECKTYPE SEARCH CHECKTYPE SEARCH
NUM_EXPR (#F_ADITTA=0)||(#F_ADITTA>=#F_DADITTA) NUM_EXPR (#F_ADITTA=0)||(#F_ADITTA>=#F_DADITTA)
WARNING "La ditta finale deve seguire quella iniziale" WARNING "La ditta finale deve seguire quella iniziale"
ADD RUN ba4 -2
END END
STRING F_ADESC 50 STRING F_ADESC 50
BEGIN BEGIN
PROMPT 20 4 "" PROMPT 22 5 ""
FLAGS "D" FLAGS "D"
END END
BOOLEAN F_HEADERS BOOLEAN F_NOHEADERS
BEGIN 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 END
BOOLEAN F_CENT BOOLEAN F_CENT
BEGIN BEGIN
PROMPT 1 7 "Salva importi in centesimi (x 100)" PROMPT 1 8 "Salvataggio importi in centesimi (x 100)"
FLAGS "H" FLAGS "H"
END END

View File

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