From a04851fc0d3762bda0ce41e85dfa2c032022785c Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 25 May 2015 15:29:42 +0000 Subject: [PATCH] 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 --- m770/770100.cpp | 20 +++-- m770/771230.cpp | 16 ++-- m770/774100.cpp | 21 +++-- m770/777.cpp | 6 +- m770/777100.cpp | 114 ++++++++++++++++--------- m770/777100a.h | 17 ++-- m770/777100a.uml | 30 ++++--- m770/77qla.frm | 212 ++++++++++++++++------------------------------- 8 files changed, 209 insertions(+), 227 deletions(-) diff --git a/m770/770100.cpp b/m770/770100.cpp index 6f4510d2b..9bd160cb4 100755 --- a/m770/770100.cpp +++ b/m770/770100.cpp @@ -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; diff --git a/m770/771230.cpp b/m770/771230.cpp index 6bbbcf5f7..3c00e36cd 100755 --- a/m770/771230.cpp +++ b/m770/771230.cpp @@ -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(); diff --git a/m770/774100.cpp b/m770/774100.cpp index c469e4775..d447f8432 100755 --- a/m770/774100.cpp +++ b/m770/774100.cpp @@ -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() diff --git a/m770/777.cpp b/m770/777.cpp index a45128801..b4b468bc5 100755 --- a/m770/777.cpp +++ b/m770/777.cpp @@ -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; } \ No newline at end of file diff --git a/m770/777100.cpp b/m770/777100.cpp index 167301feb..b7c0a5c6d 100755 --- a/m770/777100.cpp +++ b/m770/777100.cpp @@ -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); diff --git a/m770/777100a.h b/m770/777100a.h index 6d44d1914..7c5363f36 100755 --- a/m770/777100a.h +++ b/m770/777100a.h @@ -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 diff --git a/m770/777100a.uml b/m770/777100a.uml index 4b126d425..e64942211 100755 --- a/m770/777100a.uml +++ b/m770/777100a.uml @@ -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 diff --git a/m770/77qla.frm b/m770/77qla.frm index 990a2d5df..279cd90c0 100755 --- a/m770/77qla.frm +++ b/m770/77qla.frm @@ -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 -