diff --git a/m770/777.cpp b/m770/777.cpp index 8ab29f19d..140dfe50b 100755 --- a/m770/777.cpp +++ b/m770/777.cpp @@ -8,7 +8,7 @@ int main(int argc,char** argv) switch(n) { case 0: m777100(argc, argv); break; - default: break; + default: m777200(argc, argv); break; } exit(0); return 0; diff --git a/m770/777.h b/m770/777.h index 2030ff453..8474f698e 100755 --- a/m770/777.h +++ b/m770/777.h @@ -1 +1,2 @@ -int m777100(int argc, char* argv[]); \ No newline at end of file +int m777100(int argc, char* argv[]); +int m777200(int argc, char* argv[]); \ No newline at end of file diff --git a/m770/777100.cpp b/m770/777100.cpp index d19c21978..15196828f 100755 --- a/m770/777100.cpp +++ b/m770/777100.cpp @@ -357,8 +357,7 @@ long TForm770::raggruppa_c() _positions.add_long(cur.pos()+1); } } - - + return _records.items(); } @@ -422,7 +421,6 @@ long TForm770::trasfer(long codditta, TTrasferimento770& file, if (items > 0) // Se c'e almeno un record ... { cur.freeze(TRUE); // Per efficienza congela il cursore - int rpm = 10; // Righe per modulo // Inizializza record col primo modulo TRecord770 rec(rectype); diff --git a/m770/777200.cpp b/m770/777200.cpp new file mode 100755 index 000000000..cbeac3ee2 --- /dev/null +++ b/m770/777200.cpp @@ -0,0 +1,833 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "777.h" +#include "777100a.h" + +#include +#include +#include +#include +#include +#include "base.h" +#include "quadroc.h" + +/////////////////////////////////////////////////////////// +// Dichiarazioni +/////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////// +// TFormDylog +/////////////////////////////////////////////////////////// + +class TRecordDylog; +class TTrasferimentoDylog; + +class TFormDylog : public TForm +{ + TCursor* _sortedcur; + + int _index; + TArray _records; + TPointer_array _positions; + +protected: + bool compatible(const TRectype& r1, const TRectype& r2); + void add_rec(TRectype& r1, const TRectype& r2); + + long raggruppa_c(); + int first(); + int next(); + + void transfer_section(TPrint_section& body, int rigo, + TRecordDylog& rec, TTrasferimentoDylog& file); + char log2rec(int num, int& rpm) const; + +protected: + + virtual TCursor* cursor() { return _sortedcur ? _sortedcur : TForm::cursor(); } + +public: + long trasfer(long codditta, TTrasferimentoDylog& file, const char* tipo); + + TFormDylog(const char* name); + virtual ~TFormDylog(); +}; + +/////////////////////////////////////////////////////////// +// TTracciatiDylog +/////////////////////////////////////////////////////////// + +class TTracciatiDylog : public TObject +{ + TAssoc_array _form; + +public: + TFormDylog& form(const char* quadro); + + void destroy(); + + TTracciatiDylog(); + virtual ~TTracciatiDylog(); +} _trcDylog; + + +/////////////////////////////////////////////////////////// +// TRecordDylog +/////////////////////////////////////////////////////////// + +class TCacheDylog : public TObject +{ + TArray _files; + TAssoc_array _tables; + +public: + const TRectype& get(int num, const char* key); + const TRectype& get(int num, long key); + void destroy(); + + TCacheDylog() { } + virtual ~TCacheDylog() { } +} _cacheDylog; + +const int REC_SIZE = 630; + +class TRecordDylog : public TObject +{ + TString _buffer; + +protected: // TObject + virtual TObject* dup() const { return new TRecordDylog(*this); } + virtual void print_on(ostream& outs) const; + virtual void read_from(istream& ins); + +public: + void set(const char* val, char tipo, int pos, int len); + + const TRecordDylog& operator=(const TRecordDylog& rec) + { _buffer = rec._buffer; return *this; } + + const TString& tipo_record() const { return _buffer.left(2); } + void tipo_record(const char* tipo); + + bool valid() const; + + TRecordDylog(); + TRecordDylog(const char* tipo); + TRecordDylog(const TRecordDylog& rec); + virtual ~TRecordDylog(); +}; + +/////////////////////////////////////////////////////////// +// TTrasferimentoDylog +/////////////////////////////////////////////////////////// + +class TTrasferimentoDylog : public TObject +{ + TFilename _name; + ifstream* _in_stream; + ofstream* _out_stream; + +public: + bool open(const char* path = "", char mode = 'r'); + bool close(); + bool write(const TRecordDylog& rec); + bool read(TRecordDylog& rec); + bool eof() const { return _in_stream && _in_stream->eof(); } + + virtual bool ok() const; + + const char* default_name() const { return "MOE"; } + + TTrasferimentoDylog& operator<<(const TRecordDylog& rec) + { write(rec); return *this; } + TTrasferimentoDylog& operator>>(TRecordDylog& rec) + { read(rec); return *this; } + + long append_quadro(const char* quadro, long codditta, TProgind& pi); + + bool split(const char* dest_path); + void remove(); + + TTrasferimentoDylog(const char* name = "", char mode = 'r'); + virtual ~TTrasferimentoDylog(); +}; + +/////////////////////////////////////////////////////////// +// Implementazioni +/////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////// +// TFormDylog +/////////////////////////////////////////////////////////// + +void TFormDylog::transfer_section(TPrint_section& body, int rigo, + TRecordDylog& rec, TTrasferimentoDylog& file) +{ + TToken_string trc(16, ','); + TString80 str; + + TCursor& cur = *cursor(); + + body.update(); + for (word f = 0; f < body.fields(); f++) + { + TForm_item& fi = body.field(f); + str = fi.get(); str.trim(); + if (fi.shown() && str.not_empty()) + { + trc = fi.get_special_value("DYLOG"); + if (trc.not_empty()) + { + const char tipo = trc[0]; + const int pos = trc.get_int(1); + const int len = trc.get_int(); + rec.set(str, tipo, pos, len); + } + } + } +} + +bool TFormDylog::compatible(const TRectype& r1, const TRectype& r2) +{ + if (r1.empty() || r2.empty()) + return TRUE; + + if (r1.get_long(QUC_CODDITTA) != r2.get_long(QUC_CODDITTA)) + return FALSE; + if (r1.get_char(QUC_TIPOA) != r2.get_char(QUC_TIPOA)) + return FALSE; + if (r1.get_long(QUC_CODANAGR) != r2.get_long(QUC_CODANAGR)) + return FALSE; + if (r1.get_char(QUC_CAUSALE) != r2.get_char(QUC_CAUSALE)) + return FALSE; + if (r1.get_int(QUC_TASSAZIONE) != r2.get_int(QUC_TASSAZIONE)) + return FALSE; + + const real p1 = r1.get_real(QUC_PERC); + const real p2 = r2.get_real(QUC_PERC); + bool yes = (p1 == ZERO && p2 != ZERO) || (p1 == p2); + return yes; +} + +void TFormDylog::add_rec(TRectype& r1, const TRectype& r2) +{ + if (r1.empty()) + r1 = r2; + else + { + for (int f = r1.items()-1; f >= 0; f--) + { + const char* name = r1.fieldname(f); + if (r1.type(name) == _realfld) + { + real val = r1.get_real(name); + val += r2.get_real(name); + r1.put(name, val); + } + } + r1.put(QUC_PERC, r2.get(QUC_PERC)); + } +} + +long TFormDylog::raggruppa_c() +{ + TCursor& cur = *cursor(); + TRectype& rc = cur.curr(); + _records.destroy(); + for (cur = 0; cur.ok(); ++cur) + { + bool append = TRUE; + const int last = _records.items()-1; + if (last >= 0) + { + TRectype& sum = (TRectype&)_records[last]; + if (compatible(sum, rc)) + { + add_rec(sum, rc); + append = FALSE; + } + } + if (append) + { + _records.add(rc); + _positions.add_long(cur.pos()+1); + } + } + + return _records.items(); +} + +int TFormDylog::first() +{ + TCursor& cur = *cursor(); + + cur = 0; + bool ok = cur.ok(); + + if (cur.file().num() == LF_QUAC) + { + if (ok) + { + raggruppa_c(); + _index = 0; + cur.curr() = (TRectype&)_records[0]; + } + } + + return ok ? NOERR : _iseof; +} + +int TFormDylog::next() +{ + TCursor& cur = *cursor(); + + bool ok; + if (cur.file().num() == LF_QUAC) + { + _index++; + ok = _index < _records.items(); + if (ok) + { + cur = _positions.get_long(_index) - 1; + cur.curr() = (TRectype&)_records[_index]; + } + } + else + { + ++cur; + ok = cur.ok(); + } + + return ok ? NOERR : _iseof; +} + + +long TFormDylog::trasfer(long codditta, TTrasferimentoDylog& file, const char* tipo) +{ + TCursor& cur = *cursor(); + + // Filtra il cursore sulla ditta corrente + TRectype filter(cur.curr()); + filter.zero(); + filter.put(BSE_CODDITTA, codditta); + cur.setregion(filter, filter); + + const long items = cur.items(); + if (items > 0) // Se c'e almeno un record ... + { + cur.freeze(TRUE); // Per efficienza congela il cursore + + // Inizializza record col primo modulo + TRecordDylog rec(tipo); + int rigo = 0; + + int err = first(); // Deve sempre tornare NOERR + CHECKS(err == NOERR, "Invalid cursor ", tipo); + + TPrint_section& head = section('H', first_page); + transfer_section(head, rigo, rec, file); + + TPrint_section& body = section('B', odd_page); + for (; err == NOERR; err = next()) + { + transfer_section(body, rigo, rec, file); + file << rec; + rigo++; + } + + cur.freeze(FALSE); + } + + return items; +} + +TFormDylog::TFormDylog(const char* name) +: TForm(name), _sortedcur(NULL) +{ + const char* key = NULL; + + switch (TForm::cursor()->file().num()) + { + case LF_QUAC: key = "CODDITTA|TIPOA|216@->RAGSOC|CODANAGR|CODCAUS|PERC"; + case LF_QUAD: key = "CODDITTA|216@->RAGSOC|TIPOA|CODANAGR"; break; + default : break; + } + if (key) + _sortedcur = new TSorted_cursor(TForm::relation(), key); +} + +TFormDylog::~TFormDylog() +{ + if (_sortedcur) + delete _sortedcur; +} + +/////////////////////////////////////////////////////////// +// TTracciatiDylog +/////////////////////////////////////////////////////////// + +TFormDylog& TTracciatiDylog::form(const char* quadro) +{ + CHECK(quadro && *quadro == 'S' && quadro[1] != '\0', + "Codice quadro non valido"); + + const char* name; + switch(quadro[1]) + { + case 'C': name = "77qc"; break; + case 'F': name = "77qd"; break; + case 'G': name = "77qdb"; break; + case 'H': name = "77qd1"; break; + case 'K': name = "77qsk"; break; + case 'L': name = "77ql"; break; + case 'P': name = "77qe"; break; + case 'Q': name = "77qe1"; break; + default : name = NULL; break; + } + + TFormDylog* frm = (TFormDylog*)_form.objptr(name); + if (frm == NULL) + { + frm = new TFormDylog(name); + _form.add(name, frm); + } + + return *frm; +} + +void TTracciatiDylog::destroy() +{ + _form.destroy(); +} + +TTracciatiDylog::TTracciatiDylog() +{ +} + +TTracciatiDylog::~TTracciatiDylog() +{ + destroy(); // Non viene mai chiamato! +} + +/////////////////////////////////////////////////////////// +// TCacheDylog +/////////////////////////////////////////////////////////// + +const TRectype& TCacheDylog::get(int num, const char* key) +{ + TRecord_cache* rc = (TRecord_cache*)_files.objptr(num); + if (rc == NULL) + { + rc = new TRecord_cache(num); + _files.add(rc, num); + } + return rc->get(key); +} + +const TRectype& TCacheDylog::get(int num, long key) +{ + TString16 str; str << key; + return get(num, str); +} + +void TCacheDylog::destroy() +{ + _files.destroy(); + _tables.destroy(); +} + +/////////////////////////////////////////////////////////// +// TRecordDylog +/////////////////////////////////////////////////////////// + +void TRecordDylog::print_on(ostream& outs) const +{ + outs.write(_buffer, _buffer.size()); +} + +void TRecordDylog::read_from(istream& ins) +{ + ins.read(_buffer.get_buffer(), _buffer.size()); +} + +void TRecordDylog::set(const char* val, char tipo, int pos, int len) +{ + TString80 str(val); str.upper(); + int lenstr = str.len(); + + if (tipo == 'N') + { + // Controlla date + if (len == 8 && lenstr == 10 && str[2] == '-' && str[5] == '-') + { + str.strip("-"); + lenstr = len; + } else + // Controlla numeri reali + if (len == 11) + { + const int point = str.find('.'); + if (point >= 0) + str.cut(lenstr = point); + if (real::is_null(str)) + str.cut(lenstr = 0); + } + } + + if (lenstr > len) + { +#ifdef DBG + NFCHECK("Campo troppo lungo: %s (max. %d)", val, len); +#endif + str.cut(lenstr = len); + } + if (lenstr != len) + { + if (tipo == 'N') + str.right_just(len); + else + str.left_just(len); + } + _buffer.overwrite(str, pos-1); +} + +bool TRecordDylog::valid() const +{ + if (tipo_record().blank()) + return FALSE; + + if (_buffer.right(3) != "A\r\n") + return FALSE; + + return TRUE; +} + +void TRecordDylog::tipo_record(const char* tipo) +{ + _buffer.spaces(REC_SIZE); + if (tipo && *tipo) + { + _buffer[0] = tipo[0]; + _buffer[1] = tipo[1]; + } + _buffer.overwrite("A\r\n", REC_SIZE-3); +} + +TRecordDylog::TRecordDylog() +{ + tipo_record(NULL); +} + +TRecordDylog::TRecordDylog(const char* tipo) +{ + tipo_record(tipo); +} + +TRecordDylog::TRecordDylog(const TRecordDylog& rec) : _buffer(rec._buffer) +{ } + +TRecordDylog::~TRecordDylog() +{ } + +/////////////////////////////////////////////////////////// +// TTrasferimentoDylog +/////////////////////////////////////////////////////////// + +bool TTrasferimentoDylog::open(const char* path, char mode) +{ + CHECK(mode == 'r' || mode == 'w', "Invalid open mode"); + close(); + + if (path && *path) + { + _name = path; + _name.add(default_name()); + } + if (_name.empty()) + _name = default_name(); + if (mode == 'r') + _in_stream = new ifstream(_name, ios::in | ios::nocreate | ios::binary); + else + _out_stream = new ofstream(_name, ios::out | ios::binary); + + return TRUE; +} + +bool TTrasferimentoDylog::ok() const +{ + if (_in_stream) + return _in_stream->good() != 0; + + if (_out_stream) + return _out_stream->good() != 0; + + return FALSE; +} + +bool TTrasferimentoDylog::close() +{ + if (_in_stream) + { + delete _in_stream; + _in_stream = NULL; + } + if (_out_stream) + { + delete _out_stream; + _out_stream = NULL; + } + return TRUE; +} + +bool TTrasferimentoDylog::write(const TRecordDylog& rec) +{ + bool ok = _out_stream != NULL; + if (ok) + (*_out_stream) << rec; + return ok; +} + +bool TTrasferimentoDylog::read(TRecordDylog& rec) +{ + bool ok = _in_stream != NULL && !_in_stream->eof(); + if (ok) + { + (*_in_stream) >> rec; + ok = rec.valid(); + } + return ok; +} + +long TTrasferimentoDylog::append_quadro(const char* quadro, long codditta, + TProgind& pi) +{ + TString str; + str << "Trasferimento quadro " << quadro << " ditta " << codditta; + pi.set_text(str); + + TFormDylog& frm = _trcDylog.form(quadro); + long items = frm.trasfer(codditta, *this, quadro); + return items; +} + +bool TTrasferimentoDylog::split(const char* path) +{ + close(); + + long totale[32]; memset(totale, 0, sizeof(totale)); + long records = 0; + + TRecordDylog rec; + + long records_per_disk = 0; + int volumes = 1; + const bool magnetic = ::os_is_removable_drive(path); + if (magnetic) + { + if (!yesno_box("Inserire il primo disco del trasferimento nell'unita' %s\n" + "Tutti i dischi devono essere vuoti ed avere la stesso formato.\n" + "Si desidera iniziare il trasferimento?", path)) + return FALSE; + + unsigned long disk_size = ::os_get_disk_size(path); + records_per_disk = long(disk_size / REC_SIZE - 2); + volumes = int((records-1)/records_per_disk)+1; + } + + TProgind pi(records, "Trasferimento records", FALSE, TRUE); + + // Read from start + open("", 'r'); + + for (int volume = 1; volume <= volumes; volume++) + { + if (magnetic && volume > 1) + { + if (!yesno_box("Inserire il disco %d di %d:\n" + "Si desidera proseguire il trasferimento?", + volume, volumes)) + { + break; + } + } + + TTrasferimentoDylog outfile(path, 'w'); + while (!outfile.ok()) + { + if (magnetic) + { + if (yesno_box("Errore di scrittura in %s\n" + "Si desidera ritentare?", (const char*)path)) + outfile.open(path, 'w'); + else + break; + } + else + { + error_box("Errore di scrittura in %s", (const char*)path); + break; + } + } + + // Compila record di testata + // Scrive record testata + + // Azzera totali + memset(totale, 0, sizeof(totale)); + long written = 0; + + while (read(rec)) + { + const TString& tipo_rec = rec.tipo_record(); + if (tipo_rec == "AA" || tipo_rec == "ZZ") + continue; + + const int pos = tipo_rec[1] - 'A'; + if (pos >= 0 && pos < 26) + { + outfile << rec; + totale[pos]++; + written++; + pi.addstatus(1); + } + else + error_box("Tipo record non riconosciuto: %c", tipo_rec); + + if (magnetic && written > records_per_disk) + break; + } + + // Compila record di coda + // Scrive record di coda + } + return TRUE; +} + +// Cancella il file +void TTrasferimentoDylog::remove() +{ + close(); + ::remove(_name); +} + +TTrasferimentoDylog::TTrasferimentoDylog(const char* path, char mode) +: _in_stream(NULL), _out_stream(NULL) +{ + open(path, mode); +} + +TTrasferimentoDylog::~TTrasferimentoDylog() +{ + close(); +} + +/////////////////////////////////////////////////////////// +// main +/////////////////////////////////////////////////////////// + +HIDDEN int anno_dic() +{ + TConfig ini(CONFIG_STUDIO); + return ini.get_int("AnnoDic"); +} + +class TTransferDylog_msk : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& of, TField_event fe, long jolly); + +public: + TTransferDylog_msk(); + virtual ~TTransferDylog_msk() { } +}; + +bool TTransferDylog_msk::on_field_event(TOperable_field& of, TField_event fe, long jolly) +{ + switch (of.dlg()) + { + case F_PATH: + if (fe == fe_modify || fe == fe_close) + { + TFilename name = of.get(); + if (!name.exist()) + return error_box("Il percorso non e' valido"); + } + break; + default: + break; + } + return TRUE; +} + +TTransferDylog_msk::TTransferDylog_msk() : TAutomask("777100a") +{ + set(F_ANNO, anno_dic()); +} + +class TTransferDylog_app : public TSkeleton_application +{ +protected: + virtual void main_loop(); +}; + +void TTransferDylog_app::main_loop() +{ + TTransferDylog_msk m; + + while (m.run() == K_ENTER) + { + TFilename tmp; tmp.tempdir(); + TTrasferimentoDylog t(tmp, 'w'); + TRecordDylog rec; + + TRelation rel_base(LF_BASE); + TRectype da_rec(LF_BASE), a_rec(LF_BASE); + da_rec.put(BSE_CODDITTA, m.get(F_DADITTA)); + a_rec.put(BSE_CODDITTA, m.get(F_ADITTA)); + + TString filter; + filter << "ANNODIC==" << anno_dic(); + TCursor cur_base(&rel_base, filter, 1, &da_rec, &a_rec); + + TProgind pi(cur_base.items(), "Generazione file di trasferimento", FALSE, TRUE); + cur_base.freeze(); + for (cur_base = 0; cur_base.ok(); ++cur_base) + { + const TRectype& base = cur_base.curr(); + const long codditta = base.get_long(BSE_CODDITTA); + pi.addstatus(1); + t.append_quadro("SC", codditta, pi); + t.append_quadro("SF", codditta, pi); + t.append_quadro("SG", codditta, pi); + t.append_quadro("SH", codditta, pi); + t.append_quadro("SL", codditta, pi); + } + pi.close_modal(); + + if (m.get(F_SUPPORTO) == "D") + tmp = m.get(F_DISK); + else + tmp = m.get(F_PATH); + + t.split(tmp); + t.remove(); + } + + _trcDylog.destroy(); +} + +int m777200(int argc, char* argv[]) +{ + TTransferDylog_app app; + app.run(argc, argv, "Invio Dylog"); + return 0; +} + diff --git a/m770/77qc.frm b/m770/77qc.frm index 71166d61e..79eb49ac3 100755 --- a/m770/77qc.frm +++ b/m770/77qc.frm @@ -38,12 +38,14 @@ BEGIN PROMPT 53 5 "" FIELD 116@->COFI SPECIAL STRINGA TRASFER "SC0101" "" + SPECIAL STRINGA DYLOG "AN,3,16" "" END STRINGA 3 BEGIN KEY "CODICE FISCALE DEL SOSTITUTO D'IMPOSTA" PROMPT 85 5 "" + SPECIAL STRINGA DYLOG "AN,19,16" "" END NUMBER 4 @@ -70,6 +72,7 @@ BEGIN PROMPT 9 2 "" FIELD 216@->COFI SPECIAL STRINGA TRASFER "SC0201" "" + SPECIAL STRINGA DYLOG "AN,35,16" "" END STRING 2 @@ -78,6 +81,7 @@ BEGIN PROMPT 42 2 "" FIELD 216@->RAGSOC[1,30] SPECIAL STRINGA TRASFER "SC0202" "" + SPECIAL STRINGA DYLOG "AN,51,24" "" GROUP 1 END @@ -87,6 +91,7 @@ BEGIN PROMPT 79 2 "" FIELD 216@->RAGSOC[31,50] SPECIAL STRINGA TRASFER "SC0203" "" + SPECIAL STRINGA DYLOG "AN,75,20" "" GROUP 1 END @@ -96,6 +101,7 @@ BEGIN PROMPT 112 2 "" FIELD 218@->DATANASC SPECIAL STRINGA TRASFER "SC0204" "" + SPECIAL STRINGA DYLOG "NU,95,8" "" END STRING 5 @@ -104,6 +110,7 @@ BEGIN PROMPT 126 2 "" FIELD 218@->SESSO SPECIAL STRINGA TRASFER "SC0205" "" + SPECIAL STRINGA DYLOG "AN,103,1" "" END STRING 6 @@ -112,6 +119,7 @@ BEGIN PROMPT 9 4 "" FIELD 313@->DENCOM SPECIAL STRINGA TRASFER "SC0206" "" + SPECIAL STRINGA DYLOG "AN,104,21" "" GROUP 1 END @@ -121,6 +129,7 @@ BEGIN PROMPT 46 4 "" FIELD 313@->PROVCOM SPECIAL STRINGA TRASFER "SC0207" "" + SPECIAL STRINGA DYLOG "AN,125,2" "" GROUP 1 END @@ -130,6 +139,7 @@ BEGIN PROMPT 52 4 "" FIELD 413@->DENCOM SPECIAL STRINGA TRASFER "SC0208" "" + SPECIAL STRINGA DYLOG "AN,127,21" "" GROUP 1 END @@ -139,6 +149,7 @@ BEGIN PROMPT 88 4 "" FIELD 413@->PROVCOM SPECIAL STRINGA TRASFER "SC0209" "" + SPECIAL STRINGA DYLOG "AN,148,2" "" END STRING 101 @@ -164,6 +175,7 @@ BEGIN KEY "VIA RES. + numcivres" PROMPT 93 4 "" SPECIAL STRINGA TRASFER "SC0210" "" + SPECIAL STRINGA DYLOG "AN,150,35" "" GROUP 1 END @@ -173,6 +185,7 @@ BEGIN PROMPT 9 6 "" FIELD CAUSALE SPECIAL STRINGA TRASFER "SC0211" "" + SPECIAL STRINGA DYLOG "AN,185,1" "" END STRING 12 @@ -181,6 +194,7 @@ BEGIN PROMPT 20 6 "" FIELD TASSAZIONE SPECIAL STRINGA TRASFER "SC0212" "" + SPECIAL STRINGA DYLOG "AN,186,1" "" END NUMBER 13 @@ -190,6 +204,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD AMMLORDO SPECIAL STRINGA TRASFER "SC0213" "" + SPECIAL STRINGA DYLOG "NU,187,11" "" END NUMBER 14 @@ -199,6 +214,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD CONTROBB SPECIAL STRINGA TRASFER "SC0214" "" + SPECIAL STRINGA DYLOG "NU,198,11" "" END NUMBER 15 @@ -208,6 +224,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD SOMNONSOGG SPECIAL STRINGA TRASFER "SC0215" "" + SPECIAL STRINGA DYLOG "NU,209,11" "" END NUMBER 16 @@ -217,6 +234,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD IMPONIBILE SPECIAL STRINGA TRASFER "SC0216" "" + SPECIAL STRINGA DYLOG "NU,220,11" "" END NUMBER 17 @@ -226,6 +244,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD IMPOSTA SPECIAL STRINGA TRASFER "SC0217" "" + SPECIAL STRINGA DYLOG "NU,231,11" "" END NUMBER 18 @@ -235,6 +254,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD DETCARFAM SPECIAL STRINGA TRASFER "SC0218" "" + SPECIAL STRINGA DYLOG "NU,242,11" "" END NUMBER 19 @@ -243,6 +263,7 @@ BEGIN PROMPT 36 8 "" FIELD GGLAVDIP SPECIAL STRINGA TRASFER "SC0219" "" + SPECIAL STRINGA DYLOG "NU,253,3" "" END NUMBER 20 @@ -252,6 +273,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD DETLAVDIP SPECIAL STRINGA TRASFER "SC0220" "" + SPECIAL STRINGA DYLOG "NU,256,11" "" END NUMBER 21 @@ -261,6 +283,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD TOTDET SPECIAL STRINGA TRASFER "SC0221" "" + SPECIAL STRINGA DYLOG "NU,267,11" "" END NUMBER 22 @@ -270,6 +293,7 @@ BEGIN PICTURE "###.###.###^^^" FIELD RITENUTE SPECIAL STRINGA TRASFER "SC0222" "" + SPECIAL STRINGA DYLOG "NU,278,11" "" END NUMBER 23 diff --git a/m770/77qd.frm b/m770/77qd.frm index 4f5a6b382..a45190129 100755 --- a/m770/77qd.frm +++ b/m770/77qd.frm @@ -77,12 +77,14 @@ BEGIN PROMPT 55 8 "" FIELD 206@->COFI SPECIAL STRING TRASFER "SF0101" "" + SPECIAL STRING DYLOG "AN,3,16" "" END STRINGA 13 BEGIN KEY "CODICE FISCALE DICHIARANTE" PROMPT 88 8 "" + SPECIAL STRING DYLOG "AN,19,16" "" END NUMBER 14 @@ -109,8 +111,14 @@ BEGIN KEY "Tipo anagrafica" PROMPT 1 1 "" FIELD TIPOA - ITEM "F| " MESSAGE SHOW,1@|HIDE,2@ - ITEM "G| " MESSAGE SHOW,2@|HIDE,1@ + ITEM "F| " MESSAGE SHOW,1@|HIDE,2@|"1",98 + ITEM "G| " MESSAGE SHOW,2@|HIDE,1@|"2",98 +END + +STRINGA 98 +BEGIN + KEY "Tipo anagrafica 1/2" + SPECIAL STRING DYLOG "NU,51,1" "" END STRINGA 1 @@ -119,6 +127,7 @@ BEGIN PROMPT 10 1 "" FIELD 216@->COFI SPECIAL STRING TRASFER "SF0201" "" + SPECIAL STRING DYLOG "AN,35,16" "" END STRINGA 2 @@ -128,6 +137,7 @@ BEGIN FIELD 216@->RAGSOC[1,30] GROUP 1 SPECIAL STRING TRASFER "SF0202" "" + SPECIAL STRING DYLOG "AN,52,24" "" END STRINGA 3 @@ -137,6 +147,7 @@ BEGIN FIELD 216@->RAGSOC[31,50] GROUP 1 SPECIAL STRING TRASFER "SF0203" "" + SPECIAL STRING DYLOG "AN,76,20" "" END STRINGA 102 @@ -146,6 +157,7 @@ BEGIN FIELD 216@->RAGSOC GROUP 2 SPECIAL STRING TRASFER "SF0202" "" + SPECIAL STRING DYLOG "AN,186,60" "" END STRINGA 4 @@ -155,6 +167,7 @@ BEGIN FIELD 218@->SESSO GROUP 1 SPECIAL STRING TRASFER "SF0204" "" + SPECIAL STRING DYLOG "AN,104,1" "" END STRINGA 5 @@ -165,6 +178,7 @@ BEGIN PICTURE "##^ ##^ ####" GROUP 1 SPECIAL STRING TRASFER "SF0205" "" + SPECIAL STRING DYLOG "NU,96,8" "" END STRINGA 6 @@ -174,6 +188,7 @@ BEGIN FIELD 313@->DENCOM GROUP 1 SPECIAL STRING TRASFER "SF0206" "" + SPECIAL STRING DYLOG "AN,105,21" "" END STRINGA 7 @@ -183,6 +198,7 @@ BEGIN FIELD 313@->PROVCOM GROUP 1 SPECIAL STRING TRASFER "SF0207" "" + SPECIAL STRING DYLOG "AN,126,2" "" END STRINGA 8 @@ -192,6 +208,8 @@ BEGIN FIELD 513@->DENCOM MESSAGE EMPTY SHOW,3@|HIDE,4@ MESSAGE SHOW,4@|HIDE,3@ + SPECIAL STRING TRASFER "SF0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 80 @@ -201,6 +219,7 @@ BEGIN FIELD 413@->DENCOM GROUP 3 SPECIAL STRING TRASFER "SF0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 9 @@ -210,6 +229,7 @@ BEGIN FIELD 513@->PROVCOM FIELD 413@->PROVCOM SPECIAL STRING TRASFER "SF0209" "" + SPECIAL STRING DYLOG "AN,149,2" "" END STRINGA 101 @@ -234,6 +254,7 @@ BEGIN PROMPT 78 5 "" GROUP 3 SPECIAL STRING TRASFER "SF0210" "" + SPECIAL STRING DYLOG "AN,151,35" "" END STRINGA 103 @@ -257,14 +278,20 @@ BEGIN KEY "VIA RF + NUMCIVRF" PROMPT 78 5 "" GROUP 4 + SPECIAL STRING DYLOG "AN,128,35" "" +END + +NUMBER 97 +BEGIN + SPECIAL STRING DYLOG "NU,304,1" "" END LISTA 11 BEGIN KEY "FLAG DI NON RESIDENTE" PROMPT 10 7 "" - ITEM "| " MESSAGE HIDE,5@ - ITEM "X|X" MESSAGE SHOW,5@ + ITEM "| " MESSAGE HIDE,5@|"0",97 + ITEM "X|X" MESSAGE SHOW,5@|"1",97 FIELD 216@->SOGGNRES SPECIAL STRING TRASFER "SF0211" "" END @@ -276,6 +303,7 @@ BEGIN FIELD 104@->S0 GROUP 5 SPECIAL STRING TRASFER "SF0212" "" + SPECIAL STRING DYLOG "AN,305,35" "" END STRINGA 13 @@ -285,6 +313,7 @@ BEGIN FIELD 216@->STATORES GROUP 5 SPECIAL STRING TRASFER "SF0213" "" + SPECIAL STRING DYLOG "NU,340,3" "" END STRINGA 14 @@ -294,6 +323,7 @@ BEGIN FIELD 216@->COFIEST GROUP 5 SPECIAL STRING TRASFER "SF0214" "" + SPECIAL STRING DYLOG "AN,343,20" "" END STRINGA 15 @@ -302,6 +332,7 @@ BEGIN PROMPT 13 9 "" FIELD CAUSALE SPECIAL STRING TRASFER "SF0215" "" + SPECIAL STRING DYLOG "AN,363,1" "" END NUMBER 16 @@ -311,6 +342,7 @@ BEGIN FIELD TOTALE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SF0216" "" + SPECIAL STRING DYLOG "NU,364,11" "" END NUMBER 17 @@ -320,6 +352,7 @@ BEGIN FIELD SOMME PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SF0217" "" + SPECIAL STRING DYLOG "NU,375,11" "" END NUMBER 18 @@ -329,6 +362,7 @@ BEGIN FIELD SOMREGCONV PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SF0218" "" + SPECIAL STRING DYLOG "NU,386,11" "" END NUMBER 19 @@ -338,6 +372,7 @@ BEGIN FIELD IMPONIBILE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SF0219" "" + SPECIAL STRING DYLOG "NU,397,11" "" END NUMBER 20 @@ -347,6 +382,7 @@ BEGIN FIELD IMPORTO PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SF0220" "" + SPECIAL STRING DYLOG "NU,408,11" "" END NUMBER 21 diff --git a/m770/77qd1.frm b/m770/77qd1.frm index 1ca61ac12..56c4948c1 100755 --- a/m770/77qd1.frm +++ b/m770/77qd1.frm @@ -75,12 +75,14 @@ BEGIN PROMPT 55 8 "" FIELD 106@->COFI SPECIAL STRING TRASFER "SH0101" "" + SPECIAL STRING DYLOG "AN,3,16" "" END STRINGA 13 BEGIN KEY "CODICE FISCALE DICHIARANTE" PROMPT 88 8 "" + SPECIAL STRING DYLOG "AN,19,16" "" END NUMBER 14 @@ -102,8 +104,13 @@ BEGIN KEY "Tipo anagrafica" PROMPT 1 1 "" FIELD TIPOA - ITEM "F| " MESSAGE SHOW,1@|HIDE,2@ - ITEM "G| " MESSAGE SHOW,2@|HIDE,1@ + ITEM "F| " MESSAGE SHOW,1@|HIDE,2@|"1",98 + ITEM "G| " MESSAGE SHOW,2@|HIDE,1@|"2",98 +END + +NUMERO 98 +BEGIN + SPECIAL STRING DYLOG "NU,51,1" "" END STRINGA 1 @@ -112,6 +119,7 @@ BEGIN PROMPT 9 1 "" FIELD 216@->COFI SPECIAL STRING TRASFER "SH0201" "" + SPECIAL STRING DYLOG "AN,35,16" "" END STRINGA 2 @@ -121,6 +129,7 @@ BEGIN FIELD 216@->RAGSOC[1,30] GROUP 1 SPECIAL STRING TRASFER "SH0202" "" + SPECIAL STRING DYLOG "AN,52,24" "" END STRINGA 3 @@ -130,6 +139,7 @@ BEGIN FIELD 216@->RAGSOC[31,50] GROUP 1 SPECIAL STRING TRASFER "SH0203" "" + SPECIAL STRING DYLOG "AN,76,20" "" END STRINGA 102 @@ -139,6 +149,7 @@ BEGIN FIELD 216@->RAGSOC GROUP 2 SPECIAL STRING TRASFER "SH0202" "" + SPECIAL STRING DYLOG "AN,186,60" "" END STRINGA 4 @@ -148,6 +159,7 @@ BEGIN FIELD 218@->SESSO GROUP 1 SPECIAL STRING TRASFER "SH0204" "" + SPECIAL STRING DYLOG "AN,104,1" "" END STRINGA 5 @@ -158,6 +170,7 @@ BEGIN PICTURE "##^ ##^ ####" GROUP 1 SPECIAL STRING TRASFER "SH0205" "" + SPECIAL STRING DYLOG "NU,96,8" "" END STRINGA 6 @@ -167,6 +180,7 @@ BEGIN FIELD 313@->DENCOM GROUP 1 SPECIAL STRING TRASFER "SH0206" "" + SPECIAL STRING DYLOG "AN,105,21" "" END STRINGA 7 @@ -176,6 +190,7 @@ BEGIN FIELD 313@->PROVCOM GROUP 1 SPECIAL STRING TRASFER "SH0207" "" + SPECIAL STRING DYLOG "AN,126,2" "" END STRINGA 8 @@ -186,6 +201,7 @@ BEGIN MESSAGE EMPTY SHOW,3@|HIDE,4@ MESSAGE SHOW,4@|HIDE,3@ SPECIAL STRING TRASFER "SH0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 80 @@ -195,6 +211,7 @@ BEGIN FIELD 413@->DENCOM GROUP 3 SPECIAL STRING TRASFER "SH0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 9 @@ -204,6 +221,7 @@ BEGIN FIELD 513@->PROVCOM FIELD 413@->PROVCOM SPECIAL STRING TRASFER "SH0209" "" + SPECIAL STRING DYLOG "AN,149,2" "" END STRINGA 101 @@ -228,6 +246,7 @@ BEGIN PROMPT 78 5 "" GROUP 3 SPECIAL STRING TRASFER "SH0210" "" + SPECIAL STRING DYLOG "AN,151,35" "" END STRINGA 103 @@ -252,6 +271,7 @@ BEGIN PROMPT 78 5 "" GROUP 4 SPECIAL STRING TRASFER "SH0210" "" + SPECIAL STRING DYLOG "AN,151,35" "" END STRING 11 @@ -260,6 +280,7 @@ BEGIN PROMPT 10 7 "" FIELD CAUSALE SPECIAL STRING TRASFER "SH0211" "" + SPECIAL STRING DYLOG "AN,304,1" "" END NUMBER 12 @@ -269,6 +290,7 @@ BEGIN FIELD TOTALE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SH0212" "" + SPECIAL STRING DYLOG "NU,305,11" "" END NUMBER 13 @@ -278,6 +300,7 @@ BEGIN FIELD SPESEANT PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SH0213" "" + SPECIAL STRING DYLOG "NU,316,11" "" END NUMBER 14 @@ -287,6 +310,7 @@ BEGIN FIELD QUOTAPRO PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SH0214" "" + SPECIAL STRING DYLOG "NU,327,11" "" END NUMBER 15 @@ -296,6 +320,7 @@ BEGIN FIELD IMPONIBILE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SH0215" "" + SPECIAL STRING DYLOG "NU,338,11" "" END NUMBER 16 @@ -305,6 +330,7 @@ BEGIN FIELD IMPORTO PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SH0216" "" + SPECIAL STRING DYLOG "NU,349,11" "" END NUMBER 17 diff --git a/m770/77qdb.frm b/m770/77qdb.frm index e0516080c..e4c04565d 100755 --- a/m770/77qdb.frm +++ b/m770/77qdb.frm @@ -75,12 +75,14 @@ BEGIN KEY "CODICE FISCALE" PROMPT 55 8 "" FIELD 106@->COFI + SPECIAL STRING DYLOG "AN,3,16" "" END STRINGA 13 BEGIN KEY "CODICE FISCALE DICHIARANTE" PROMPT 88 8 "" + SPECIAL STRING DYLOG "AN,19,16" "" END NUMERO 14 @@ -100,11 +102,17 @@ SECTION BODY ODD 10 LISTA 99 BEGIN - KEY "Tipo anagrafica" + KEY "Tipo anagrafica F/G" PROMPT 1 1 "" FIELD TIPOA - ITEM "F| " MESSAGE SHOW,1@|HIDE,2@ - ITEM "G| " MESSAGE SHOW,2@|HIDE,1@ + ITEM "F|1" MESSAGE SHOW,1@|HIDE,2@|"1",98 + ITEM "G|2" MESSAGE SHOW,2@|HIDE,1@|"2",98 +END + +STRINGA 98 +BEGIN + KEY "Tipo anagrafica 1/2" + SPECIAL STRING DYLOG "AN,51,1" "" END STRINGA 1 @@ -113,6 +121,7 @@ BEGIN PROMPT 9 1 "" FIELD 216@->COFI SPECIAL STRING TRASFER "SG0101" "" + SPECIAL STRING DYLOG "AN,35,16" "" END STRINGA 2 @@ -122,6 +131,7 @@ BEGIN FIELD 216@->RAGSOC[1,30] GROUP 1 SPECIAL STRING TRASFER "SG0201" "" + SPECIAL STRING DYLOG "AN,52,24" "" END STRINGA 3 @@ -131,6 +141,7 @@ BEGIN FIELD 216@->RAGSOC[31,50] GROUP 1 SPECIAL STRING TRASFER "SG0202" "" + SPECIAL STRING DYLOG "AN,76,20" "" END STRINGA 102 @@ -140,6 +151,7 @@ BEGIN FIELD 216@->RAGSOC GROUP 2 SPECIAL STRING TRASFER "SG0201" "" + SPECIAL STRING DYLOG "AN,186,60" "" END STRINGA 4 @@ -149,6 +161,7 @@ BEGIN FIELD 218@->SESSO GROUP 1 SPECIAL STRING TRASFER "SG0204" "" + SPECIAL STRING DYLOG "AN,104,1" "" END STRINGA 5 @@ -159,6 +172,7 @@ BEGIN PICTURE "##^ ##^ ####" GROUP 1 SPECIAL STRING TRASFER "SG0205" "" + SPECIAL STRING DYLOG "NU,96,8" "" END STRINGA 6 @@ -168,6 +182,7 @@ BEGIN FIELD 313@->DENCOM GROUP 1 SPECIAL STRING TRASFER "SG0206" "" + SPECIAL STRING DYLOG "AN,105,21" "" END STRINGA 7 @@ -176,6 +191,7 @@ BEGIN PROMPT 126 3 "" FIELD 313@->PROVCOM GROUP 1 + SPECIAL STRING DYLOG "AN,126,2" "" SPECIAL STRING TRASFER "SG0207" "" END @@ -187,6 +203,7 @@ BEGIN MESSAGE EMPTY SHOW,3@|HIDE,4@ MESSAGE SHOW,4@|HIDE,3@ SPECIAL STRING TRASFER "SG0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 80 @@ -196,6 +213,7 @@ BEGIN FIELD 413@->DENCOM GROUP 3 SPECIAL STRING TRASFER "SG0208" "" + SPECIAL STRING DYLOG "AN,128,21" "" END STRINGA 9 @@ -205,6 +223,7 @@ BEGIN FIELD 513@->PROVCOM FIELD 413@->PROVCOM SPECIAL STRING TRASFER "SG0209" "" + SPECIAL STRING DYLOG "AN,149,2" "" END STRINGA 101 @@ -229,6 +248,7 @@ BEGIN PROMPT 78 5 "" GROUP 3 SPECIAL STRING TRASFER "SG0210" "" + SPECIAL STRING DYLOG "AN,151,35" "" END STRINGA 103 @@ -253,18 +273,25 @@ BEGIN PROMPT 78 5 "" GROUP 4 SPECIAL STRING TRASFER "SG0210" "" + SPECIAL STRING DYLOG "AN,151,35" "" END LISTA 11 BEGIN KEY "FLAG DI NON RESIDENTE" PROMPT 10 7 "" - ITEM "| " MESSAGE HIDE,5@ - ITEM "X|X" MESSAGE SHOW,5@ + ITEM "| " MESSAGE HIDE,5@|"0",97 + ITEM "X|X" MESSAGE SHOW,5@|"1",97 FIELD 216@->SOGGNRES SPECIAL STRING TRASFER "SG0211" "" END +NUMERO 97 +BEGIN + KEY "FLAG DI NON RESIDENTE 0/1" + SPECIAL STRING DYLOG "NU,304,1" "" +END + STRINGA 12 BEGIN KEY "STATO ESTERO DI RES." @@ -272,6 +299,7 @@ BEGIN FIELD 104@->S0 GROUP 5 SPECIAL STRING TRASFER "SG0212" "" + SPECIAL STRING DYLOG "AN,305,35" "" END STRINGA 13 @@ -281,6 +309,7 @@ BEGIN FIELD 216@->STATORES GROUP 5 SPECIAL STRING TRASFER "SG0213" "" + SPECIAL STRING DYLOG "NU,340,3" "" END STRINGA 14 @@ -290,6 +319,7 @@ BEGIN FIELD 216@->COFIEST GROUP 5 SPECIAL STRING TRASFER "SG0214" "" + SPECIAL STRING DYLOG "AN,343,20" "" END STRINGA 15 @@ -298,6 +328,7 @@ BEGIN PROMPT 10 9 "" FIELD CAUSALE SPECIAL STRING TRASFER "SG0215" "" + SPECIAL STRING DYLOG "AN,363,1" "" END NUMERO 16 @@ -307,6 +338,7 @@ BEGIN FIELD TOTALE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SG0216" "" + SPECIAL STRING DYLOG "NU,364,11" "" END NUMERO 17 @@ -316,6 +348,7 @@ BEGIN FIELD SOMME PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SG0217" "" + SPECIAL STRING DYLOG "NU,375,11" "" END NUMERO 18 @@ -325,6 +358,7 @@ BEGIN FIELD SOMREGCONV PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SG0218" "" + SPECIAL STRING DYLOG "NU,386,11" "" END NUMERO 19 @@ -334,6 +368,7 @@ BEGIN FIELD IMPONIBILE PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SG0219" "" + SPECIAL STRING DYLOG "NU,397,11" "" END NUMERO 20 @@ -343,6 +378,7 @@ BEGIN FIELD IMPORTO PICTURE "###.###.###^^^" SPECIAL STRING TRASFER "SG0220" "" + SPECIAL STRING DYLOG "NU,408,11" "" END NUMERO 21 @@ -360,6 +396,7 @@ BEGIN PROMPT 124 9 "" FIELD CONTR10 SPECIAL STRING TRASFER "SG0222" "" + SPECIAL STRING DYLOG "AN,419,1" "" END END diff --git a/m770/77qh.frm b/m770/77qh.frm index fdcea215a..b2094b5dc 100755 --- a/m770/77qh.frm +++ b/m770/77qh.frm @@ -49,12 +49,14 @@ BEGIN KEY "CODICE FISCALE DICHIARANTE" PROMPT 54 8 "" FIELD 116@->COFI + SPECIAL STRINGA DYLOG "AN,3,16" "" END STRINGA 13 BEGIN KEY "CODICE FISCALE DEL SOSTITUTO D'IMPOSTA" PROMPT 88 8 "" + SPECIAL STRINGA DYLOG "AN,19,16" "" END NUMBER 14 @@ -76,6 +78,7 @@ BEGIN KEY "ENTE PREVIDENZIALE" PROMPT 10 1 "" FIELD 214@->S0 + SPECIAL STRINGA DYLOG "AN,35,60" "" END NUMBER 12 @@ -84,6 +87,7 @@ BEGIN PROMPT 86 1 "" PICTURE "###.###.###^^^" FIELD 43->H1DAT + SPECIAL STRINGA DYLOG "NU,95,11" "" END NUMBER 13 @@ -92,6 +96,7 @@ BEGIN PROMPT 119 1 "" PICTURE "###.###.###^^^" FIELD 43->H1LAV + SPECIAL STRINGA DYLOG "NU,106,11" "" END END diff --git a/m770/77ql.frm b/m770/77ql.frm index d10085d9d..efe2bfe03 100755 --- a/m770/77ql.frm +++ b/m770/77ql.frm @@ -39,12 +39,14 @@ BEGIN KEY "CODICE FISCALE DEL DICHIARANTE" PROMPT 53 5 "" FIELD 106@->COFI + SPECIAL STRING DYLOG "AN,3,16" "" END STRINGA 3 BEGIN KEY "CODICE FISCALE DEL SOSTITUTO IMPOSTA" PROMPT 85 5 "" + SPECIAL STRING DYLOG "AN,19,16" "" END NUMERO 4 @@ -105,15 +107,18 @@ BEGIN KEY "Mese rif." PROMPT 23 2 "" PICTURE "@@" + FIELD 42->QLMP MESSAGE COPY,100 + SPECIAL STRING DYLOG "NU,65,2" "" END NUMERO 2 BEGIN KEY "Anno rif." PROMPT 28 2 "" - FIELD 42->QLAP + FIELD 42->QLAP[3,4] MESSAGE ADD,100 + SPECIAL STRING DYLOG "NU,67,2" "" END STRING 100 @@ -130,6 +135,7 @@ BEGIN FIELD 42->QLRITEFF PICTURE "###.###.###.###^^^" MESSAGE ADD,FL->1 + SPECIAL STRING DYLOG "NU,69,11" "" END NUMERO 4 @@ -139,24 +145,32 @@ BEGIN FIELD 42->QLRITVER PICTURE "###.###.###.###^^^" MESSAGE ADD,FL->2 + SPECIAL STRING DYLOG "NU,80,11" "" END LISTA 5 BEGIN KEY "RSS" PROMPT 99 2 "" - ITEM " | " - ITEM "1|VA" - ITEM "2|SA" - ITEM "3|SI" + ITEM " | " MESSAGE " ",50 + ITEM "1|VA" MESSAGE "VA",50 + ITEM "2|SA" MESSAGE "SA",50 + ITEM "3|SI" MESSAGE "SI",50 FIELD 42->QLRSS END +STRING 50 +BEGIN + KEY "RSS decodificato" + SPECIAL STRING DYLOG "NU,96,2" "" +END + STRINGA 6 BEGIN KEY "Note" PROMPT 109 2 "" FIELD 42->QLNOTE + SPECIAL STRING DYLOG "AN,98,16" "" END STRINGA 7 @@ -192,6 +206,7 @@ BEGIN PROMPT 53 4 "" FIELD 42->QLAB SPECIAL STRING TRASFER "SL0108" "" + SPECIAL STRING DYLOG "AN,63,2" "" END STRINGA 11 @@ -201,6 +216,7 @@ BEGIN FIELD 42->QLDV PICTURE " ## ^ ## ^####" SPECIAL STRING TRASFER "SL0104" "" + SPECIAL STRING DYLOG "NU,35,8" "" END STRINGA 12 @@ -208,6 +224,7 @@ BEGIN KEY "SERIE" PROMPT 81 4 "" FIELD 42->QLSERIE + SPECIAL STRING DYLOG "NU,43,5" "" END STRINGA 13 @@ -220,9 +237,8 @@ END STRINGA 14 BEGIN KEY "NUMERO COMPLETO" - PROMPT 96 4 "" FIELD 42->QLNUMERO - FLAGS "H" + SPECIAL STRING DYLOG "NU,48,11" "" END END