diff --git a/fe/fe0100.cpp b/fe/fe0100.cpp index 09a19a1f5..1ba0c26bf 100755 --- a/fe/fe0100.cpp +++ b/fe/fe0100.cpp @@ -289,14 +289,16 @@ class TAnagrafica : public TObject { char _tipo; // F o G TString16 _cofi, _paiv; - TString _ragsoc; + TString80 _ragsoc; TString4 _com_nasc, _com_res; - TString _loc_res; + TString80 _loc_res, _ind_res; TDate _data_nasc; int _allegato, _stato_estero; TAnagrafica& operator =(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } TAnagrafica(const TAnagrafica&) { CHECK(false, "Can't copy TAnagrafica"); } +protected: + void build_ind_res(const TRectype& rec, const char* ind, const char* civ); public: virtual bool ok() const { return _tipo=='F' || _tipo == 'G'; } @@ -319,6 +321,7 @@ public: const TString& comune_residenza() const { return comune_di(_com_res); } const TString& provincia_residenza() const { return provincia_di(_com_res); } const TString& localita_residenza() const { return _loc_res; } + const TString& indirizzo_residenza() const { return _ind_res; } bool init(const TRectype& rec); bool init(int num, const TString& codice) { return init(cache().get(num, codice)); } @@ -334,6 +337,20 @@ public: TAnagrafica(const TRectype& rec) { init(rec); } }; +void TAnagrafica::build_ind_res(const TRectype& rec, const char* ind, const char* civ) +{ + TString80 indirizzo = rec.get(ind); + if (indirizzo.full()) + { + const TString& numero = rec.get(civ); + if (numero.full()) + indirizzo << ", " << numero; + indirizzo.strip_double_spaces(); + TParagraph_string s(indirizzo, 40); + _ind_res = s.get(0); + } +} + bool TAnagrafica::init(const TRectype& rec) { _tipo = '\0'; @@ -361,6 +378,7 @@ bool TAnagrafica::init(const TRectype& rec) _com_nasc = rec.get(OCC_COMNASC); _com_res = rec.get(OCC_COM); _loc_res = rec.get(OCC_LOCALITA); + build_ind_res(rec, OCC_INDIR, OCC_CIV); _stato_estero = rec.get_int(OCC_STATO); _allegato = _paiv.blank() ? 6 : 2; break; @@ -374,6 +392,7 @@ bool TAnagrafica::init(const TRectype& rec) _com_res = rec.get(ANA_COMRF); if (_com_res.empty()) _com_res = rec.get(ANA_COMRES); + build_ind_res(rec, ANA_INDRES, ANA_CIVRES); // Dati di nascita persone fisiche if (_tipo == 'F') @@ -409,6 +428,8 @@ bool TAnagrafica::init(const TRectype& rec) _cofi = rec.get(CLI_COFI); if (rec.get(CLI_PAIV).not_empty()) _paiv = rec.get(CLI_PAIV); + build_ind_res(rec, CLI_INDCF, CLI_CIVCF); + // Prevale sempre la ragione sociale del cliente: "Il cliente ha sempre ragione". _ragsoc = rec.get(CLI_RAGSOC); _ragsoc.upper(); _stato_estero = rec.get_int(CLI_STATOCF); @@ -495,8 +516,8 @@ void TDati_rilevanti_trc::create_fields(int tipo, TAS400_recordset& recset) add_field( 2, 2, 6, 5, "Codice identificativo fornitura", AN, "ART21", OBBLIG); add_field( 3, 7, 8, 2, "Codice numerico fornitura", NU, "47", OBBLIG); add_field( 4, 9, 9, 1, "Tipologia di invio", NU, "0", OBBLIG); - add_field( 5, 10, 26,17, "Protocollo da sostituire", NU); - add_field( 6, 27, 32, 6, "Protocollo documento", NU); + add_field( 5, 10, 26,17, "Protocollo da sostituire", AN); // ex NU + add_field( 6, 27, 32, 6, "Protocollo documento", AN); // ex NU add_field( 7, 33, 48,16, "Codice fiscale", CF, "", OBBLIG); add_field( 8, 49, 59,11, "Partita IVA", PI); @@ -518,8 +539,8 @@ void TDati_rilevanti_trc::create_fields(int tipo, TAS400_recordset& recset) add_field(21,266,269, 4, "Numero totale invii telematici", NU, "1"); add_field(22,270,285,16, "Codice fiscale intermediario", CF); - add_field(23,286,290, 5, "Numero iscrizione C.A.F.", NU); - add_field(24,291,291, 1, "Impegno alla trasmissione", NU, "1"); + add_field(23,286,290, 5, "Numero iscrizione C.A.F.", AN); // Ex NU + add_field(24,291,291, 1, "Impegno alla trasmissione", AN ); // Ex NU add_field(25,292,299, 8, "Data dell'impegno", DT); add_field(26,300,1797,1498, "Filler", AN); @@ -643,13 +664,11 @@ public: bool set(unsigned int n, int v) { return set_val(n, long(v)); } bool set(unsigned int n, const real& v) { return set_val(n, v); } bool set(unsigned int n, const TDate& v) { return set_val(n, v); } - void add_control_rec(int zero_o_nove, int num_inv = 1, int tot_inv = 1); + void add_header(const TMask& msk, int num_inv = 1, int tot_inv = 1); + void add_footer(); bool split(const TFilename& name, const TRecnotype maxalleg = 15000); int anno() const { return _anno; } - void set_ragsoc(const TString& ragsoc) { row(-1).overwrite(ragsoc, 1000); } - const TString& ragsoc() const { return row(-1).mid(1000, 50); } - TDati_rilevanti_set(int anno); TDati_rilevanti_set(const TFilename& file); }; @@ -660,8 +679,13 @@ bool TDati_rilevanti_set::set_field(const TAS400_column_info& fi, const TVariant if (fi._type == DT && fi._width == 8) { const TDate d = var.as_date(); - TString8 str; str.format("%02d%02d%04d", d.day(), d.month(), d.year()); - row().overwrite(str, fi._pos); + if (d.ok()) + { + TFixed_string str = d.string(full, '\0', full, full, gma_date); + row().overwrite(str, fi._pos); + } + else + row().overwrite(" ", fi._pos); return true; } else // Salva gli importi in formato 000001234 (non possono essere negativi) @@ -703,14 +727,11 @@ const TVariant& TDati_rilevanti_set::get_field(const TAS400_column_info& ci) con return TAS400_recordset::get_field(ci); } -void TDati_rilevanti_set::add_control_rec(int zon, int num_inv, int tot_inv) +void TDati_rilevanti_set::add_header(const TMask& msk, int num_inv, int tot_inv) { - CHECKD(zon == 0 || zon == 9, "Tipo record di testa o coda non valido ", zon); - const TAnagrafica ditta(LF_NDITTE, prefix().get_codditta()); - TString4 tipo; tipo << zon; - new_rec(tipo); + new_rec("0"); set(7, ditta.codice_fiscale()); set(8, ditta.partita_IVA()); @@ -736,6 +757,26 @@ void TDati_rilevanti_set::add_control_rec(int zon, int num_inv, int tot_inv) if (num_inv > tot_inv) num_inv = tot_inv; set(20, num_inv); set(21, tot_inv); + + const TString& cofi = msk.get(F_INTER_COFI); + if (cofi.full()) + { + set(22, cofi); + set(23, msk.get(F_INTER_CAF)); + set(24, msk.get(F_INTER_COM)); + set(25, msk.get(F_INTER_DATE)); + } + else + { + set(25, TDate()); // Svuota data impegno + } +} + +void TDati_rilevanti_set::add_footer() +{ + TString f = row(0); + f.overwrite("9"); + new_rec(f); } bool TDati_rilevanti_set::split(const TFilename& name, const TRecnotype maxalleg) @@ -757,7 +798,7 @@ bool TDati_rilevanti_set::split(const TFilename& name, const TRecnotype maxalleg outset.new_rec(row(r)); if (outset.items() >= maxalleg || r == totrec-1) { - // Costruisce il nome del file di invio parziale, es: datiril_2.txt + // Costruisce il nome del file di invio parziale, es: Spesometro00001_2.txt TFilename outname = name; const TString8 saved_ext = outname.ext(); outname.ext(""); outname << '_' << (++f); @@ -875,10 +916,13 @@ TExclusion_mode TDati_rilevanti_array::add(const TRectype& alleg, bool send_all, { sum->add(ALL_IMPORTO, importo); sum->add(ALL_IMPOSTA, imposta); - const TDate sum_data = sum->get(ALL_DATAREG); - const TDate all_data = alleg.get(ALL_DATAREG); - if (all_data > sum_data) - sum->put(ALL_DATAREG, all_data); + // Le istruzioni dicono di mettere la data dell'ultima rettifica + // ma la procedura di controllo non accetta anni successivi! + // Per cui ... comment :-) + // const TDate sum_data = sum->get(ALL_DATAREG); + // const TDate all_data = alleg.get(ALL_DATAREG); + // if (all_data > sum_data) + // sum->put(ALL_DATAREG, all_data); const int old_mode = sum->get_int(ALL_IGNORA); if (old_mode <= 1) @@ -939,13 +983,113 @@ void TDati_rilevanti_array::add(const TArray& note, bool send_all, TLog_report& } } +/////////////////////////////////////////////////////////// +// TCofi_cache +/////////////////////////////////////////////////////////// + +class TCofi_cache : public TCache +{ + TLocalisamfile _clifo, _occas; + +protected: + virtual TObject* key2obj(const char* key); + +public: + const TString& cofi2ragsoc(char tipocf, const TString& cofi); + const TString& paiv2ragsoc(char tipocf, const TString& paiv); + TCofi_cache() : _clifo(LF_CLIFO), _occas(LF_OCCAS) { } +}; + +TObject* TCofi_cache::key2obj(const char* key) +{ + TToken_string chiave(key); + const int fkey = chiave.get_char(0)=='C' ? 4 : 5; + const TString4 tipocf = chiave.get(); + const TString16 code= chiave.get(); + + _clifo.setkey(fkey); + _clifo.zero(); + _clifo.put(CLI_TIPOCF, tipocf); + if (fkey == 5) + _clifo.put(CLI_PAIV, code); + else + _clifo.put(CLI_COFI, code); + + int err = _clifo.read(); + if (err != NOERR && fkey == 5 && pi_check("IT", code)) + { + _clifo.put(CLI_TIPOCF, tipocf); + _clifo.put(CLI_STATOPAIV, "IT"); + _clifo.put(CLI_PAIV, code); + err = _clifo.read(); + } + + if (err == NOERR) + return new TString80(_clifo.get(CLI_RAGSOC)); + + if (fkey == 5 && !pi_check("IT", code)) // cerco partite IVA estere + { + TString query; + query << "USE CLIFO SELECT PAIV=\"" << code << '"' + << "\nFROM TIPOCF=" << tipocf + << "\nTO TIPOCF=" << tipocf; + TISAM_recordset clifo(query); + if (clifo.move_first()) + return new TString80(clifo.get(CLI_RAGSOC).as_string()); + } + + _occas.put(OCC_CFPI, code); + if (_occas.read() == NOERR) + { + const TString& cfpi = _occas.get(fkey == 4 ? OCC_COFI : OCC_PAIV); + if (code == cfpi || cfpi.empty()) + return new TString80(_occas.get(OCC_RAGSOC)); + } + + TString query; + query << "USE OCCAS SELECT "; + if (fkey == 4) + query << "COFI=\"" << code << '"'; + else + query << "PAIV=\"" << code << '"'; + TISAM_recordset occas(query); + if (occas.move_first()) + return new TString80(occas.get(OCC_RAGSOC).as_string()); + + return NULL; +} + +const TString& TCofi_cache::cofi2ragsoc(char tipocf, const TString& cofi) +{ + TString80 key; + key.format("CF|%c|%s", tipocf, (const char*)cofi); + const TString* ragsoc = (const TString*)objptr(key); + return ragsoc != NULL ? *ragsoc : EMPTY_STRING; +} + +const TString& TCofi_cache::paiv2ragsoc(char tipocf, const TString& paiv) +{ + TString80 key; + key.format("PI|%c|%s", tipocf, (const char*)paiv); + const TString* ragsoc = (const TString*)objptr(key); + return ragsoc != NULL ? *ragsoc : EMPTY_STRING; +} + /////////////////////////////////////////////////////////// // TDati_rilevanti_rep /////////////////////////////////////////////////////////// class TDati_rilevanti_rep : public TReport { + TCofi_cache _cofi; + protected: + const TString& cofi2ragsoc(char tipocf, const TString& cofi) const + { return ((TDati_rilevanti_rep*)this)->_cofi.cofi2ragsoc(tipocf, cofi); } + + const TString& paiv2ragsoc(char tipocf, const TString& cofi) const + { return ((TDati_rilevanti_rep*)this)->_cofi.paiv2ragsoc(tipocf, cofi); } + virtual bool get_usr_val(const TString& name, TVariant& var) const; public: @@ -989,7 +1133,54 @@ bool TDati_rilevanti_rep::get_usr_val(const TString& name, TVariant& var) const } if (name == "RAGSOC") { - var.set(set.ragsoc()); + char tipocf = 'C'; + switch (tipo) + { + case 2: if (set.get("2.8").as_int() == 2) tipocf = 'F'; break; + default: break; + }; + switch (tipo) + { + case 1: var = cofi2ragsoc(tipocf, set.get("1.2").as_string()); break; + case 2: var = paiv2ragsoc(tipocf, set.get("2.2").as_string()); break; + case 3: + var = set.get("3.8"); + if (var.is_empty()) + { + TString80 rs; + rs << set.get("3.2") << ' ' << set.get("3.3"); + var = rs.trim(); + } + break; + case 4: + { + const TString16 paiv = set.get("4.2").as_string(); + if (paiv.full()) + { + var = paiv2ragsoc('C', paiv); + if (var.is_empty()) + var = paiv2ragsoc('F', paiv); + } + else + { + const TString16 cofi = set.get("4.3").as_string(); + var = cofi2ragsoc('C', cofi); + if (var.is_empty()) + var = paiv2ragsoc('F', cofi); + } + } + break; + case 5: + var = set.get("5.8"); + if (var.is_empty()) + { + TString80 rs; + rs << set.get("5.2") << ' ' << set.get("5.3"); + var = rs.trim(); + } + break; + default: var.set_null(); break; + } return true; } if (name == "DATAREG") @@ -1143,6 +1334,7 @@ protected: bool send_nota_variazione(const TRectype& alleg, TDati_rilevanti_set& operaz); bool send_fatt(const TRectype& alleg, TDati_rilevanti_set& operaz); + void build_outname(TFilename& n) const; protected: TRecnotype last_user_progr() const; @@ -1633,7 +1825,7 @@ void TDati_rilevanti_msk::collega_variazioni() const query << "\nFROM ANNO=" << anno << "\nTO ANNO=" << anno; TISAM_recordset fatture(query); - TProgind pi(fatture.items(), TR("Collegamente note di variazione"), false, true); + TProgind pi(fatture.items(), TR("Collegamento note di variazione"), false, true); TRelation& rel = *fatture.cursor()->relation(); for (bool ok = fatture.move_first(); ok; ok = fatture.move_next()) @@ -1708,7 +1900,7 @@ bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rile operaz.set(8, anag.ragione_sociale()); operaz.set(9, anag.comune_residenza()); operaz.set(10, anag.stato_estero()); - operaz.set(11, EMPTY_STRING); // TBI? Indirizzo estero + operaz.set(11, anag.indirizzo_residenza()); } operaz.set(12, alleg.get(ALL_DATAREG)); operaz.set(13, alleg.get(ALL_NUMDOC)); @@ -1736,7 +1928,6 @@ bool TDati_rilevanti_msk::send_nota_variazione(const TRectype& alleg, TDati_rile operaz.set(10, segno_imponibile); operaz.set(11, segno_imposta); } - operaz.set_ragsoc(anag.ragione_sociale()); return true; } @@ -1774,7 +1965,7 @@ bool TDati_rilevanti_msk::send_fatt(const TRectype& alleg, TDati_rilevanti_set& else operaz.set(9, anag.comune_residenza()); operaz.set(10, anag.stato_estero()); - operaz.set(11, EMPTY_STRING); // TBI? Indirizzo estero + operaz.set(11, anag.indirizzo_residenza()); } operaz.set(12, alleg.get(ALL_DATAREG)); operaz.set(13, alleg.get(ALL_NUMDOC)); @@ -1805,7 +1996,6 @@ bool TDati_rilevanti_msk::send_fatt(const TRectype& alleg, TDati_rilevanti_set& operaz.set(8, alleg.get(ALL_TIPOPE)); } } - operaz.set_ragsoc(anag.ragione_sociale()); return true; } @@ -1846,17 +2036,24 @@ bool TDati_rilevanti_msk::recall_alleg() const return true; } +void TDati_rilevanti_msk::build_outname(TFilename& n) const +{ + n = get(F_OUTFOLDER); + if (n.blank()) + n.tempdir(); + + TString16 f; f.format("Spesometro%05d", prefix().get_codditta()); + n.add(f); + n.ext("txt"); +} + // Genera file per invio telematico bool TDati_rilevanti_msk::send_alleg() { const int anno = get_int(F_ANNO); const bool send_all = get_int(F_SENDALL) != 1; - - TFilename temp = get(F_OUTFOLDER); - if (temp.blank()) - temp.tempdir(); - temp.add("datiril.txt"); + TFilename temp; build_outname(temp); TDati_rilevanti_array data; @@ -1870,9 +2067,7 @@ bool TDati_rilevanti_msk::send_alleg() if (tot_alleg > 0) { - TString str_pi; - str_pi << TR("Generazione file ") << temp; - _log = new TLog_report(str_pi); + _log = new TLog_report(temp); const TRectype& rec = alleg.cursor()->curr(); @@ -1909,7 +2104,7 @@ bool TDati_rilevanti_msk::send_alleg() } TDati_rilevanti_set recset(anno); - recset.add_control_rec(0); + recset.add_header(*this); const int tot = data.items(); if (tot > 0) @@ -1924,7 +2119,7 @@ bool TDati_rilevanti_msk::send_alleg() } } - recset.add_control_rec(9); + recset.add_footer(); recset.sort(); bool done = recset.save_as(temp); @@ -2234,9 +2429,7 @@ void TDati_rilevanti_msk::enable_buttons() enable(F_DEFINITIVO, !def); if (def) reset(F_DEFINITIVO); - TFilename temp = get(F_OUTFOLDER); - if (temp.blank()) temp.tempdir(); - temp.add("datiril.txt"); + TFilename temp; build_outname(temp); enable(DLG_PREVIEW, temp.exist()); } @@ -2300,9 +2493,7 @@ bool TDati_rilevanti_msk::on_field_event(TOperable_field& o, TField_event e, lon case DLG_PREVIEW: if (e == fe_button) { - TFilename temp = get(F_OUTFOLDER); - if (temp.blank()) temp.tempdir(); - temp.add("datiril.txt"); + TFilename temp; build_outname(temp); if (temp.exist()) { TDati_rilevanti_rep rep(temp); diff --git a/fe/fe0100.rep b/fe/fe0100.rep index 4212c7135..6469755a7 100644 --- a/fe/fe0100.rep +++ b/fe/fe0100.rep @@ -2,34 +2,34 @@ <report name="fe0100" lpi="6"> <font face="Courier New" size="8" /> <section type="Head" pattern="1"> - <field x="1" type="Stringa" valign="center" align="center" width="112" height="3" pattern="1"> + <field x="8" type="Stringa" valign="center" align="center" width="112" height="3" pattern="1"> <font face="Courier New" bold="1" size="24" /> <source>"Dati rilevanti " + ANNO + " tipo " + TIPO</source> </field> - <field border="3" x="1" y="3" type="Linea" width="112" height="0" pattern="1" /> - <field border="2" x="1" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="19" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="46" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="58" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="76" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="90" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="101" y="3" type="Linea" height="3" pattern="1" /> - <field border="2" x="113" y="3" type="Linea" height="3" pattern="1" /> - <field border="3" x="1" y="6" type="Linea" width="112" height="0" pattern="1" /> - <field x="2" y="3.5" type="Testo" width="16" id="101" pattern="1" text="Codice Fiscale"> + <field border="3" y="3" type="Linea" width="120" height="0" pattern="1" /> + <field border="2" x="8" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="26" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="53" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="65" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="83" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="97" y="3" type="Linea" height="3" pattern="1" /> + <field border="2" x="108" y="3" type="Linea" height="3" pattern="1" /> + <field x="1" y="4" type="Testo" width="6" pattern="1" text="Riga" /> + <field border="3" y="6" type="Linea" width="120" height="0" pattern="1" /> + <field x="9" y="3.5" type="Testo" width="16" id="101" pattern="1" text="Codice Fiscale"> <source>COFI</source> </field> - <field x="2" y="4.5" type="Testo" width="16" id="102" pattern="1" text="Partita IVA" /> - <field x="20" y="3.5" type="Testo" width="25" height="2" id="201" pattern="1" text="Ragione Sociale" /> - <field x="47" y="3.5" type="Testo" width="10" id="301" pattern="1" text="Data Reg." /> - <field x="47" y="4.5" type="Testo" width="10" id="302" pattern="1" text="Num. Doc." /> - <field x="59" y="3.5" type="Testo" width="16" id="401" pattern="1" text="Mod. Pagamento" /> - <field x="59" y="4.5" type="Testo" width="16" id="402" pattern="1" text="Tipo Operazione" /> - <field x="77" y="3.5" type="Testo" align="right" width="12" id="501" pattern="1" text="Importo" /> - <field x="77" y="4.5" type="Testo" align="right" width="12" id="502" pattern="1" text="Imposta" /> - <field x="93" y="3.5" type="Testo" width="10" height="2" id="601" pattern="1" text="Segno" /> - <field x="102" y="3.5" type="Testo" width="10" id="601" pattern="1" text="Data rett." /> - <field x="102" y="4.5" type="Testo" width="10" id="602" pattern="1" text="Num. Rett." /> + <field x="9" y="4.5" type="Testo" width="16" id="102" pattern="1" text="Partita IVA" /> + <field x="27" y="3.5" type="Testo" width="25" height="2" id="201" pattern="1" text="Ragione Sociale" /> + <field x="54" y="3.5" type="Testo" width="10" id="301" pattern="1" text="Data Reg." /> + <field x="54" y="4.5" type="Testo" width="10" id="302" pattern="1" text="Num. Doc." /> + <field x="66" y="3.5" type="Testo" width="16" id="401" pattern="1" text="Mod. Pagamento" /> + <field x="66" y="4.5" type="Testo" width="16" id="402" pattern="1" text="Tipo Operazione" /> + <field x="84" y="3.5" type="Testo" align="right" width="12" id="501" pattern="1" text="Importo" /> + <field x="84" y="4.5" type="Testo" align="right" width="12" id="502" pattern="1" text="Imposta" /> + <field x="100" y="3.5" type="Testo" width="10" height="2" id="601" pattern="1" text="Segno" /> + <field x="109" y="3.5" type="Testo" width="10" id="601" pattern="1" text="Data rett." /> + <field x="109" y="4.5" type="Testo" width="10" id="602" pattern="1" text="Num. Rett." /> </section> <section type="Head" level="1" pattern="1" /> <section type="Head" level="2" height="1" page_break="1" pattern="1"> @@ -38,60 +38,62 @@ </section> <section type="Body" pattern="1" /> <section type="Body" level="1" pattern="1"> - <field border="2" x="1" type="Linea" height="3" pattern="1" /> - <field border="2" x="19" type="Linea" height="3" pattern="1" /> - <field border="2" x="46" type="Linea" height="3" pattern="1" /> - <field border="2" x="58" type="Linea" height="3" pattern="1" /> - <field border="2" x="76" type="Linea" height="3" pattern="1" /> - <field border="2" x="90" type="Linea" height="3" pattern="1" /> - <field border="2" x="101" type="Linea" height="3" pattern="1" /> - <field border="2" x="113" type="Linea" height="3" pattern="1" /> - <field border="2" x="1" y="3" type="Linea" width="112" height="0" pattern="1" /> - <field x="2" y="0.5" type="Stringa" width="16" id="101" pattern="1"> + <field border="2" x="8" type="Linea" height="3" pattern="1" /> + <field border="2" x="26" type="Linea" height="3" pattern="1" /> + <field border="2" x="53" type="Linea" height="3" pattern="1" /> + <field border="2" x="65" type="Linea" height="3" pattern="1" /> + <field border="2" x="83" type="Linea" height="3" pattern="1" /> + <field border="2" x="97" type="Linea" height="3" pattern="1" /> + <field border="2" x="108" type="Linea" height="3" pattern="1" /> + <field border="2" y="3" type="Linea" width="120" height="0" pattern="1" /> + <field y="1" type="Numero" align="right" width="7" id="100" pattern="1" text="@@@@@@@"> + <source>#RECORD.NUMBER</source> + </field> + <field x="9" y="0.5" type="Stringa" width="16" id="101" pattern="1"> <source>COFI</source> </field> - <field x="2" y="1.5" type="Stringa" width="16" id="102" pattern="1"> + <field x="9" y="1.5" type="Stringa" width="16" id="102" pattern="1"> <source>PAIV</source> </field> - <field x="20" y="0.5" type="Stringa" width="25" height="2" id="201" pattern="1"> + <field x="27" y="0.5" type="Stringa" width="25" height="2" id="201" pattern="1"> <source>RAGSOC</source> </field> - <field x="47" y="0.5" type="Data" width="11" id="301" pattern="1"> + <field x="54" y="0.5" type="Data" width="11" id="301" pattern="1"> <source>DATAREG</source> </field> - <field x="47" y="1.5" type="Stringa" width="10" id="302" pattern="1"> + <field x="54" y="1.5" type="Stringa" width="10" id="302" pattern="1"> <source>NUMDOC</source> </field> - <field x="59" y="0.5" type="Array" width="16" id="401" pattern="1"> + <field x="66" y="0.5" type="Array" width="16" id="401" pattern="1"> <source>MODPAG</source> <list> - <li Value="" Code="" /> + <li /> <li Value="Non Frazionato" Code="1" /> <li Value="Frazionato" Code="2" /> <li Value="Periodico" Code="3" /> </list> </field> - <field x="59" y="1.5" type="Array" width="16" id="402" pattern="1"> + <field x="66" y="1.5" type="Array" width="16" id="402" pattern="1"> <source>TIPOPE</source> <list> - <li Value="" Code="" /> + <li /> <li Value="Vendita" Code="1" /> <li Value="Acquisto" Code="2" /> </list> </field> - <field x="77" y="0.5" type="Numero" align="right" width="12" id="501" pattern="1" text="############"> + <field x="84" y="0.5" type="Numero" align="right" width="12" id="501" pattern="1" text="############"> <source>IMPORTO</source> </field> - <field x="77" y="1.5" type="Numero" align="right" width="12" id="502" pattern="1" text="############"> + <field x="84" y="1.5" type="Numero" align="right" width="12" id="502" pattern="1" text="############"> <source>IMPOSTA</source> </field> - <field x="102" y="0.5" type="Data" width="10" id="601" pattern="1"> + <field x="109" y="0.5" type="Data" width="10" id="601" pattern="1"> <source>DATARETT</source> </field> - <field x="102" y="1.5" type="Stringa" width="10" id="602" pattern="1"> + <field x="109" y="1.5" type="Stringa" width="10" id="602" pattern="1"> <source>NUMRETT</source> </field> - <field x="91" y="0.5" type="Array" align="right" width="7" id="701" pattern="1"> + <field x="98" y="0.5" type="Array" width="8" id="701" pattern="1"> <source>SIMPORTO</source> <list> <li /> @@ -99,7 +101,7 @@ <li Value="Debito" Code="D" /> </list> </field> - <field x="91" y="1.5" type="Array" align="right" width="7" id="702" pattern="1"> + <field x="98" y="1.5" type="Array" width="8" id="702" pattern="1"> <source>SIMPOSTA</source> <list> <li /> diff --git a/fe/fe0100a.h b/fe/fe0100a.h index 5b2f6a0f9..17d4ba484 100755 --- a/fe/fe0100a.h +++ b/fe/fe0100a.h @@ -13,6 +13,11 @@ #define F_RAGSOC 314 #define F_RAGOCC 315 +#define F_INTER_COM 320 +#define F_INTER_DATE 321 +#define F_INTER_COFI 322 +#define F_INTER_CAF 323 + #define F_RIGHE 300 #define A_RIGA 101 @@ -33,4 +38,4 @@ #define A_PAIV 116 #define A_COFI 117 -#define A_OCCAS 155 +#define A_OCCAS 155 diff --git a/fe/fe0100a.uml b/fe/fe0100a.uml index 07c0245a1..280dadc87 100755 --- a/fe/fe0100a.uml +++ b/fe/fe0100a.uml @@ -178,7 +178,7 @@ ENDPAGE PAGE "Opzioni" 0 2 0 0 -GROUPBOX DLG_NULL 78 6 +GROUPBOX DLG_NULL 78 5 BEGIN PROMPT 1 1 "@bOpzioni per invio" END @@ -212,6 +212,36 @@ BEGIN WARNING "Specificare una valore compreso tra 100 e 15000" END +GROUPBOX DLG_NULL 78 6 +BEGIN + PROMPT 1 6 "@bDati del soggetto che assume l'impegno alla presentazione telematica" +END + +LIST F_INTER_COM 1 20 +BEGIN + PROMPT 2 7 "Comunicazione predisposta da " + ITEM "|" + ITEM "1|contribuente" + ITEM "2|chi effettua l'invio" +END + +STRING F_INTER_COFI 16 +BEGIN + PROMPT 2 8 "Codice fiscale dell'intermediario " + FLAGS "U" + VALIDATE CF_FUNC 1 F_INTER_COFI +END + +NUMBER F_INTER_CAF 5 +BEGIN + PROMPT 2 9 "Numero iscrizione all'albo C.A.F. " +END + +DATE F_INTER_DATE +BEGIN + PROMPT 2 10 "Data dell'impegno alla trasmissione " +END + ENDPAGE ENDMASK