diff --git a/src/ef/ef0100.cpp b/src/ef/ef0100.cpp index 49020f24f..5bbcff8c7 100755 --- a/src/ef/ef0100.cpp +++ b/src/ef/ef0100.cpp @@ -12,6 +12,18 @@ #include "tabutil.h" #include "utility.h" +class TEffetti_mask : public TIBAN_mask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + bool on_sheet_event(TOperable_field& o, TField_event e, long jolly); + void calcola_totali(); + +public: + TEffetti_mask() : TIBAN_mask("ef0100a", F_IBAN_STATO, F_IBAN_CHECK, F_BBAN_CIN, F_CODABI, F_CODCAB, F_BBAN_CONTO, F_IBAN, F_BBAN) {} + +}; + /////////////////////////////////////////////////////////////// // Classe per la gestione di effetti con metodi standard di: // // inserimento, modifica, cancellazione. // @@ -29,20 +41,9 @@ protected: virtual bool get_next_key(TToken_string& key); virtual void init_modify_mode(TMask&); - static bool clifo_handler(TMask_field& f, KEY k); - static bool datascad_handler(TMask_field& f, KEY k); - static bool mandato_handler(TMask_field& f, KEY k); - static bool handle_sheet(TMask_field& f, KEY); - static bool cambio_handler(TMask_field& f, KEY k); - static bool codval_handler(TMask_field& f, KEY k); - static bool contab_handler(TMask_field& f, KEY k); - static bool fatt_handler(TMask_field& f, KEY k); - static bool impeff_notify(TSheet_field& s, int r, KEY key); - TSheet_field& cess_sheet() const; TSheet_field& righe_sheet() const; void common_f(const TMask& m); - static void calcola_totali(); virtual int read(TMask& m); virtual int rewrite(const TMask& m); virtual int write(const TMask& m); @@ -52,20 +53,16 @@ protected: virtual TMask* get_mask(int mode) {return _msk;} virtual bool changing_mask(int mode) {return false;} virtual void ini2mask(TConfig& ini, TMask& m, bool query); - public: virtual bool protected_record(TRectype&); virtual TRelation* get_relation() const {return _rel;} - TVariazione_effetti(): _msk(nullptr), _effetto(nullptr), _rel(nullptr) - { - } - + TVariazione_effetti(): _msk(nullptr), _effetto(nullptr), _rel(nullptr) {} virtual ~TVariazione_effetti() = default; }; // restituisce un riferimento all' applicazione -inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();} +inline TVariazione_effetti& app() { return (TVariazione_effetti&)main_app(); } // quando si va in query mode resetta i due campi della maschera // relativi ai totali @@ -213,18 +210,21 @@ int TVariazione_effetti::read(TMask& m) TLocalisamfile& f = _rel->lfile(LF_EFFETTI); // legge l'effetto dal record corrente della relazione err = _effetto->read(f, _rel->curr()); + if (err == NOERR) { TString16 codcom(3); TToken_string riga(80); TSheet_field& shcess = cess_sheet(); + shcess.reset(); TSheet_field& shrighe = righe_sheet(); shrighe.reset(); int items = _effetto->rows_c(); - int i; + +// m.set(F_IBAN, _rel->curr().get(EFF_IBAN), 0x3); // carica tutti i cessionari nello sheet dal file - for (i = 1; i <= items; i++) + for (int i = 1; i <= items; i++) { const TRectype& rec = _effetto->row_c(i); riga.cut(0); @@ -242,12 +242,7 @@ int TVariazione_effetti::read(TMask& m) shcess.row(i-1)=riga; } items = _effetto->rows_r(); - // carica tutte le righe dell'effetto nello sheet dal file -// TEdit_field & e = (TEdit_field &) shrighe.sheet_mask().field(F_NUMFATT); -// CheckType c = e.check_type(); - -// e.check_type(CHECK_REQUIRED); - for (i = 1; i <= items; i++) + for (int i = 1; i <= items; i++) { const TRectype& rec = _effetto->row_r(i); riga.cut(0); @@ -268,7 +263,6 @@ int TVariazione_effetti::read(TMask& m) shrighe.row(i - 1) = riga; shrighe.check_row(i - 1); } -// e.check_type(c); } } return err; @@ -309,19 +303,8 @@ bool TVariazione_effetti::user_create() LF_CLIFO, LF_CFVEN, LF_OCCAS, 0); _rel = new TRelation(LF_EFFETTI); _effetto = new TEffetto; - _msk = new TMask("ef0100a") ; - - _msk->set_handler(F_CODCF, clifo_handler); - _msk->set_handler(F_DATASCAD, datascad_handler); - _msk->set_handler(F_MANDATO, mandato_handler); - _msk->set_handler(F_CODVAL, codval_handler); - _msk->set_handler(F_CAMBIO, cambio_handler); - _msk->set_handler(F_EFFCONT, contab_handler); - _msk->set_handler(F_SHEET_RIGHE, handle_sheet); - + _msk = new TEffetti_mask ; righe_sheet().set_append(true); - righe_sheet().set_notify(impeff_notify); - _msk->sfield(F_SHEET_RIGHE).sheet_mask().set_handler(F_NUMFATT, fatt_handler); return true; } @@ -334,252 +317,269 @@ bool TVariazione_effetti::user_destroy() return true; } -// handler che permette di effettuare il controllo sul fatto -// che venga inserita almeno una riga per un effetto -bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k) +void TEffetti_mask::calcola_totali() { - TMask& m = f.mask(); - const int mode = m.mode(); - // se si vuole salvare e si è in uno dei due modi di funzionamento - if ( k == K_ENTER && (mode == MODE_INS || mode == MODE_MOD) ) - { // si controllano le righe del effetto nello sheet - TSheet_field& sf = m.sfield(F_SHEET_RIGHE); - int items = sf.items(); - bool found = false; - for (int i = 0; i < items && !found; i++)// scandisco tutte le righe dello sheet - { - TToken_string& row = sf.row(i); - real imp_eff(row.get(sf.cid2index(F_IMPEFF))); - // controlla che le righe abbiano un importo - if (imp_eff != ZERO) found = true; - } - // se non ha trovato righe nello sheet oppure se quelle che ci sono non - // hanno importo - if (!found) - { // non permetto di salvare l'effetto - error_box(TR("L'effetto non può contenere righe con importo nullo!")); - return false; - } - } - return true; -} - -bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k) -{ - if (k == K_TAB && f.to_check(k)) - { - TMask& m = f.mask(); - const char tipocf = m.get(F_TIPOCF)[0]; - const long codcf = m.get_long(F_CODCF); - TCli_for & cf = (TCli_for &)cached_clifor(tipocf, codcf); - const TString & iban = cf.get_iban(); - - if (iban.full()) - { - m.set(F_IBAN, iban); - m.set(F_IBAN_STATO, iban.left(2)); - m.set(F_IBAN_CHECK, iban.mid(2,2)); - m.set(F_BBAN, iban.mid(4)); - m.set(F_BBAN_CIN, iban.mid(4,1)); - m.set(F_BBAN_ABI, iban.mid(5,5)); - m.set(F_BBAN_CAB, iban.mid(10,5)); - m.set(F_BBAN_CONTO, iban.mid(15)); - m.efield(F_IBAN_STATO).validate(K_TAB); - } - - TToken_string& banp = cf.get_ban_pres(); - - if (banp.full()) - { - m.set(F_CODABIP, banp.get()); - m.set(F_CODCABP, banp.get()); - m.set(F_PROG, banp.get()); - m.efield(F_PROG).validate(K_TAB); - } - } - return true; -} - -bool TVariazione_effetti::datascad_handler(TMask_field& f, KEY k) -{ - if (k == K_ENTER) - { - const TDate datascad = f.get(); - TSheet_field& sf = f.mask().sfield(F_SHEET_RIGHE); - FOR_EACH_SHEET_ROW(sf, r, row) - { - TDate datafat = row->get(F_DATAFATT-FIRST_FIELD); - if (datascad < datafat) - return f.error_box(FR("La data fattura della riga %d è successiva alla data di scadenza"), r+1); - } - } - return true; -} - -bool TVariazione_effetti::mandato_handler(TMask_field& f, KEY k) -{ - if (k == K_TAB && !f.empty()) - { - TMask& m = f.mask(); - TEdit_field& i = m.efield(F_IBAN_STATO); - i.validate(K_TAB); - m.set(F_CODABI, m.get(F_BBAN_ABI)); - m.set(F_CODCAB, m.get(F_BBAN_CAB)); - - } - return true; -} - - -// handler che permette il controllo sulla abilitazione dei campi collegati -// al codice valuta -bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k) -{ - if (f.to_check(k, true)) - { - TMask& m = f.mask(); - const TString& val = f.get(); - // se non c'e valuta o se è lire disabilitato i campi collegati - const bool valuta = (val.not_empty() && val != TCurrency::get_firm_val()); - m.enable(-1,valuta); - TSheet_field& sf = m.sfield(F_SHEET_RIGHE); - if (!valuta) - { - m.reset(-1); - m.reset(F_TOTIMPVAL); - for (int i = sf.items() - 1; i >= 0; i--) - { - TToken_string& row = sf.row(i); - row.add(" ", sf.cid2index(F_IMPEFFVAL)); - row.add(" ", sf.cid2index(F_IMPFATTVAL)); - } - } - sf.enable_column(F_IMPEFFVAL, valuta); - if (f.focusdirty()) - sf.force_update(); - } - return true; -} - -// handler che gestisce la modifica del cambio -bool TVariazione_effetti::cambio_handler(TMask_field& f, KEY k) -{ - TMask &m = f.mask(); - //if (k == K_TAB && f.to_check(k, true)) - if (k == K_TAB && f.focusdirty()) - { - const real cambio = f.get(); - const TString& valuta = m.get(F_CODVAL); - TSheet_field& sf = m.sfield(F_SHEET_RIGHE); - int items = sf.items(); - real imp, impval; - // scandisco tutte le righe dello sheet e modifico gli importi in lire - for (int i = 0; i < items; i++) - { - TToken_string& row = sf.row(i); - impval = row.get(sf.cid2index(F_IMPEFFVAL)); - TCurrency val(impval, valuta, cambio); - val.change_to_firm_val(); - imp = val.get_num(); - row.add(imp.string(), sf.cid2index(F_IMPEFF)); - } - if (f.focusdirty()) - sf.force_update(); - } - return true; -} - -// handler che permette il controllo sulla abilitazione dei campi collegati -// al codice valuta -bool TVariazione_effetti::fatt_handler(TMask_field& f, KEY k) -{ - TMask &m = f.mask(); - if (k == K_TAB && f.focusdirty() || !app().get_mask(MODE_MOD)->is_running()) - { - TEdit_field & e = (TEdit_field &) f; - CheckType c = e.check_type(); - - e.check_type(CHECK_REQUIRED); - const bool ok = e.check(); - e.check_type(c); - m.enable(F_DATAFATT, !ok); - m.enable(F_IMPFATT, !ok); - m.enable(F_IMPFATTVAL, !ok && app().get_mask(MODE_MOD)->get(F_CODVAL).not_empty()); - if (app().get_mask(MODE_MOD)->is_running() && ok && k == K_TAB && f.focusdirty()) - { - const TDocumento d(e.browse()->cursor()->curr()); - m.set(F_DATAFATT, d.get("DATADOC")); - const real imp = d.totale_doc(); - if (d.in_valuta()) - { - const TString16 codval = d.get(DOC_CODVAL); - TCurrency val(imp, codval, d.get_real(DOC_CAMBIO)); - val.change_to_firm_val(); - const real& lit = val.get_num(); - - m.set(F_IMPFATT, lit); - m.set(F_IMPFATTVAL, imp); - } - else - { - m.set(F_IMPFATT, imp); - m.reset(F_IMPFATTVAL); - } - } - } - return true; -} - -bool TVariazione_effetti::contab_handler(TMask_field& f, KEY k) -{ - if (k == K_SPACE) - { - TMask &m = f.mask(); - const bool da_contab = f.get().empty(); - TSheet_field& sf = m.sfield(F_SHEET_RIGHE); - sf.enable_column(F_ANNO, da_contab); - sf.enable_column(F_NUMPART, da_contab); - sf.force_update(); - } - return true; -} - -// funzione chiamata dal notify dello sheet per effettuare il calcolo degli -// importi totali (in lire ed in valuta) dell'effetto -void TVariazione_effetti::calcola_totali() -{ - TMask* m = app()._msk; - TSheet_field& sf = m->sfield(F_SHEET_RIGHE); + TSheet_field& sf = sfield(F_SHEET_RIGHE); int items = sf.items(); - real imp, impval, impeff, impeffval; + real impeff, impeffval; + // scandisco tutte le righe dello sheet e ne prendo gli importi // (in lire ed in valuta) e li sommo al totale for (int i = 0; i < items; i++) { - TToken_string& row = sf.row(i); - imp = row.get(sf.cid2index(F_IMPEFF)); - impeff += imp; - impval = row.get(sf.cid2index(F_IMPEFFVAL)); - impeffval += impval; + impeff += sf.get_real_row_cell(i, F_IMPEFF); + impeffval += sf.get_real_row_cell(i, F_IMPEFFVAL); } - m->set(F_TOTIMP, impeff); - m->set(F_TOTIMPVAL, impeffval); + set(F_TOTIMP, impeff); + set(F_TOTIMPVAL, impeffval); } -// notify per il calcolo dei totali dell'effetto e per il controllo che non -// vengano eliminate tutte le righe dell'effetto, almeno una deve rimanere -bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key) +bool TEffetti_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) { - if (s.to_check(key, true)) + TMask& m = o.mask(); + short id = o.dlg(); + + switch (id) { - calcola_totali(); + case F_NUMFATT: + if (e == fe_modify || !is_running()) + { + TEdit_field & ef = (TEdit_field &)o; + CheckType c = ef.check_type(); + + ef.check_type(CHECK_REQUIRED); + const bool ok = ef.check(); + ef.check_type(c); + m.enable(F_DATAFATT, !ok); + m.enable(F_IMPFATT, !ok); + m.enable(F_IMPFATTVAL, !ok && is_true_value(get(F_CODVAL))); + if (is_running() && ok && e == fe_modify) + { + const TDocumento d(ef.browse()->cursor()->curr()); + const real imp = d.totale_doc(); + + m.set(F_DATAFATT, d.get(DOC_DATADOC)); + if (d.in_valuta()) + { + const TString16 codval = d.get(DOC_CODVAL); + TCurrency val(imp, codval, d.get_real(DOC_CAMBIO)); + + val.change_to_firm_val(); + + const real& lit = val.get_num(); + + m.set(F_IMPFATT, lit); + m.set(F_IMPFATTVAL, imp); + } + else + { + m.set(F_IMPFATT, imp); + m.reset(F_IMPFATTVAL); + } + } + } + break; + case F_SHEET_RIGHE: + switch (e) + { + case se_leave: + if (sfield(F_SHEET_RIGHE).focusdirty()) + calcola_totali(); + return true; + case se_query_del: + if (sfield(F_SHEET_RIGHE).items() == 1) + return error_box(TR("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!")); + return true; + break; + default: + break; + } + default: + break; } - //se rimane una sola riga nello sheet non la si può cancellare - if (key == K_DEL && s.items() == 1) - return s.error_box(TR("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!")); return true; } +bool TEffetti_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + const short id = o.dlg(); + + switch (id) + { + case F_CODCF: + if (e == fe_modify) + { + const char tipocf = get(F_TIPOCF)[0]; + const long codcf = get_long(F_CODCF); + TCli_for & cf = (TCli_for &)cached_clifor(tipocf, codcf); + const TString & iban = cf.get_iban(); + + if (iban.full()) + set(F_IBAN, iban, 0x3); + + TToken_string& banp = cf.get_ban_pres(); + + if (banp.full()) + { + set(F_CODABIP, banp.get()); + set(F_CODCABP, banp.get()); + set(F_PROG, banp.get()); + efield(F_PROG).validate(K_TAB); + } + } + return true; + break; + case F_CODVAL: + if (e == fe_init || e == fe_modify) + { + // se non c'e valuta o se è lire disabilitato i campi collegati + const bool valuta = is_true_value(o.get()); + TSheet_field& sf = sfield(F_SHEET_RIGHE); + + enable(-1, valuta); + if (!valuta) + { + reset(-1); + reset(F_TOTIMPVAL); + for (int i = sf.items() - 1; i >= 0; i--) + { + TToken_string& row = sf.row(i); + + sf.set_row_cell(F_IMPEFFVAL, ZERO, i); + sf.set_row_cell(F_IMPFATTVAL, ZERO, i); + } + } + sf.enable_column(F_IMPEFFVAL, valuta); + sf.enable_column(F_IMPFATTVAL, valuta); + if (o.focusdirty()) + sf.force_update(); + } + return true; + break; + case F_DATASCAD: + if (e == fe_close) + { + const TDate datascad = get_date(F_DATASCAD); + TSheet_field& sf = sfield(F_SHEET_RIGHE); + + FOR_EACH_SHEET_ROW(sf, r, row) + { + TDate datafat = row->get(F_DATAFATT - FIRST_FIELD); + + if (datascad < datafat) + return error_box(FR("La data fattura della riga %d è successiva alla data di scadenza"), r + 1); + } + } + return true; + break; + case F_MANDATO: + if (e == fe_modify && !o.empty()) + efield(F_IBAN).on_hit(); + return true; + break; + case F_CAMBIO: + if (e == fe_modify) + { + const TString& valuta = get(F_CODVAL); + + if (is_true_value(valuta)) + { + const real cambio = get_real(F_CAMBIO); + + TSheet_field& sf = sfield(F_SHEET_RIGHE); + int items = sf.items(); + + // scandisco tutte le righe dello sheet e modifico gli importi in lire + for (int i = 0; i < items; i++) + { + TCurrency val(sf.get_real_row_cell(i, F_IMPEFFVAL), valuta, cambio); + + val.change_to_firm_val(); + sf.set_row_cell(F_IMPEFF, val.get_num(), i); + } + if (o.focusdirty()) + sf.force_update(); + } + } + return true; + break; + case F_EFFCONT: + if (e == fe_init || e == fe_modify) + { + const bool da_contab = !get_bool(F_EFFCONT); + TSheet_field& sf = sfield(F_SHEET_RIGHE); + + sf.enable_column(F_ANNO, da_contab); + sf.enable_column(F_NUMPART, da_contab); + sf.enable_column(F_NUMRIGA, da_contab); + sf.enable_column(F_NUMRATA, da_contab); + sf.enable_column(F_ACCSAL, da_contab); + sf.force_update(); + } + return true; + break; + case F_IMPEFFVAL: + case F_IMPEFF: + if (e == fe_modify) + sfield(F_SHEET_RIGHE).set_focusdirty(); + break; + case F_SHEET_RIGHE: + return on_sheet_event(o, e, jolly); + default: + if (jolly > 0) + return on_sheet_event(o, e, jolly); + break; + } + return TIBAN_mask::on_field_event(o, e, jolly); +} + +/* +bool TVariazione_effetti::iban_handler(TMask_field& f, KEY k) +{ + if (f.to_check(k, true)) + { + TMask& m = f.mask(); + const TString & iban = f.get(); + + m.set(F_IBAN_STATO, iban.left(2), 0x3); + set_iban_fields(iban, m, F_BBAN, F_IBAN_STATO, F_IBAN_CHECK, F_BBAN_CIN, F_CODABI, F_CODCAB, F_BBAN_CONTO, -1, 0); + } + return true; +} + +bool TVariazione_effetti::iso_handler(TMask_field& f, KEY k) +{ + if (f.initial_check(k) || f.running_check(k)) + { + static TString __last_iso; + TMask &m = f.mask(); + const TString & iso = f.get(); + const bool italy = iso.blank() || iso == "IT"; + + m.show(F_BBAN, !italy); + m.show(F_BBAN_CONTO, italy); + if (f.running_check(k)) + { + if (iso != __last_iso) + { + const TString iban = m.get(F_IBAN); + + set_iban_fields(iban.blank() || iban.left(2) != iso ? iso : iban, m, F_BBAN, F_IBAN_STATO, F_IBAN_CHECK, F_BBAN_CIN, F_CODABI, F_CODCAB, F_BBAN_CONTO, -1, 0); + } + __last_iso = iso; + } + else + { + enable_iban_fields(m, F_BBAN, F_BBAN_CIN, F_CODABI, F_CODCAB, F_BBAN_CONTO, -1, italy, 0); + __last_iso = "INV"; + } + } + return true; +} + +per documenti +*/ + int ef0100(int argc, char* argv[]) { TVariazione_effetti a ; diff --git a/src/ef/ef0100.h b/src/ef/ef0100.h index 06370cda7..5748bee32 100755 --- a/src/ef/ef0100.h +++ b/src/ef/ef0100.h @@ -49,8 +49,6 @@ #define F_IBAN_CHECK 252 #define F_BBAN 253 #define F_BBAN_CIN 254 -#define F_BBAN_ABI 255 -#define F_BBAN_CAB 256 #define F_BBAN_CONTO 257 diff --git a/src/ef/ef0100a.uml b/src/ef/ef0100a.uml index 57eab6f3e..f0633a256 100755 --- a/src/ef/ef0100a.uml +++ b/src/ef/ef0100a.uml @@ -294,9 +294,29 @@ BEGIN PROMPT 0 4 "@bBanca d'appoggio" END +STRING F_IBAN_STATO 2 +BEGIN + PROMPT 1 5 "Stato " + FLAGS "U" +END + +NUMBER F_IBAN_CHECK 2 +BEGIN + PROMPT 11 5 "" + FLAGS "UZ" + VALIDATE CHECK_IBAN_FUNC F_IBAN F_IBAN_STATO F_IBAN_CHECK F_BBAN F_BBAN_CIN F_CODABI F_CODCAB F_BBAN_CONTO -1 0 +END + +STRINGA F_BBAN_CIN 1 +BEGIN + PROMPT 17 5 "" + FLAGS "U" + VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_CODABI F_CODCAB F_BBAN_CONTO +END + NUMBER F_CODABI 5 BEGIN - PROMPT 1 5 "Codice ABI " + PROMPT 20 5 "ABI " FIELD CODABI FLAGS "Z" USE %BAN SELECT CODTAB ?= "?????" @@ -306,12 +326,11 @@ BEGIN OUTPUT F_CODABI CODTAB[1,5] CHECKTYPE REQUIRED WARNING "Codice ABI assente" - MESSAGE COPY,F_BBAN_ABI END NUMBER F_CODCAB 5 BEGIN - PROMPT 41 5 "Codice CAB " + PROMPT 35 5 "CAB " FIELD CODCAB FLAGS "Z" USE %BAN KEY 1 SELECT CODTAB ?= "??????????" @@ -323,62 +342,27 @@ BEGIN OUTPUT F_CODABI CODTAB[1,5] OUTPUT F_CODCAB CODTAB[6,10] CHECKTYPE REQUIRED - VALIDATE REQIF_FUNC 1 F_CODCABP WARNING "Banca assente" - MESSAGE COPY,F_BBAN_CAB END STRING F_IBAN 34 BEGIN PROMPT 2 60 "" - FLAGS "D" + FLAGS "DG" FIELD IBAN END -STRING F_IBAN_STATO 2 -BEGIN - PROMPT 1 6 "Codice IBAN " - FLAGS "U" - VALIDATE CHECK_IBAN_FUNC F_IBAN F_IBAN_STATO F_IBAN_CHECK F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO -END - -NUMBER F_IBAN_CHECK 2 -BEGIN - PROMPT 19 6 "" - FLAGS "UZ" - VALIDATE CHECK_IBAN_FUNC F_IBAN F_IBAN_STATO F_IBAN_CHECK F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO -END - STRINGA F_BBAN 30 BEGIN - PROMPT 30 6 "BBAN " + PROMPT 1 6 "BBAN " FLAGS "UH" END -STRINGA F_BBAN_CIN 1 -BEGIN - PROMPT 30 6 "BBAN " - FLAGS "U" - VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO -END - -NUMBER F_BBAN_ABI 5 -BEGIN - PROMPT 38 6 "" - FLAGS "DGZ" -END - -NUMBER F_BBAN_CAB 5 -BEGIN - PROMPT 45 6 "" - FLAGS "DGZ" -END - STRING F_BBAN_CONTO 12 BEGIN - PROMPT 52 6 "" + PROMPT 1 6 "Conto " FLAGS "UZ" - VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO + VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_CODABI F_CODCAB F_BBAN_CONTO END diff --git a/src/ef/ef0200.cpp b/src/ef/ef0200.cpp index a5822bc63..2576064e7 100755 --- a/src/ef/ef0200.cpp +++ b/src/ef/ef0200.cpp @@ -1,8 +1,18 @@ #include +#include "eftbman.h" + +class TMandati_mask : public TIBAN_mask +{ +public: + TMandati_mask() : TIBAN_mask("eftbman", F_STATO, F_CHECK, F_CIN, F_ABI, F_CAB, F_CONTO, F_IBAN, F_BBAN) {} +}; class TMandati_app : public TTable_module_application { + TMask* user_create_mask() { return new TMandati_mask(); } + public: + }; int ef0200(int argc, char* argv[]) diff --git a/src/ef/ef1100a.uml b/src/ef/ef1100a.uml index 89bcd161a..6acb3e2c5 100644 --- a/src/ef/ef1100a.uml +++ b/src/ef/ef1100a.uml @@ -62,7 +62,7 @@ BEGIN OUTPUT F_CAB CODTAB[6,10] OUTPUT F_PRO CODTAB[11,12] OUTPUT F_BANCA 4->S0 - CHECTYPE NORMAL + CHECTYPE SEARCH END STRING F_BANCA 50 47 diff --git a/src/ef/eftbman.h b/src/ef/eftbman.h index 4a3c9e7e9..3da0bf144 100644 --- a/src/ef/eftbman.h +++ b/src/ef/eftbman.h @@ -12,8 +12,13 @@ #define F_DESCR 111 #define F_DATA 112 #define F_SEQUENZA 113 -#define F_ABI 114 -#define F_CAB 115 -#define F_IBAN 116 +#define F_STATO 114 +#define F_CHECK 115 +#define F_CIN 116 +#define F_ABI 117 +#define F_CAB 118 +#define F_IBAN 119 +#define F_BBAN 120 +#define F_CONTO 121 #endif // __EF0200_H diff --git a/src/ef/eftbman.uml b/src/ef/eftbman.uml index 52740789c..9c78b08e4 100644 --- a/src/ef/eftbman.uml +++ b/src/ef/eftbman.uml @@ -115,39 +115,82 @@ BEGIN FIELD S6 END +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 12 "@bBanca d'appoggio" +END + +STRING F_STATO 2 +BEGIN + PROMPT 2 13 "Stato " + FLAGS "U" +END + +NUMBER F_CHECK 2 +BEGIN + PROMPT 12 13 "" + FLAGS "UZ" + VALIDATE CHECK_IBAN_FUNC F_IBAN F_STATO F_CHECK F_BBAN F_CIN F_ABI F_CAB F_CONTO -1 0 +END + +STRINGA F_CIN 1 +BEGIN + PROMPT 18 13 "" + FLAGS "U" + VALIDATE CHECK_BBAN_FUNC F_BBAN F_CIN F_ABI F_CAB F_CONTO +END + NUMBER F_ABI 5 -BEGIN - PROMPT 2 10 "Banca d'appoggio " +BEGIN + PROMPT 21 13 "ABI " + FIELD CODABI FLAGS "Z" - FIELD S4[1,5] + USE %BAN SELECT CODTAB ?= "?????" + INPUT CODTAB F_ABI + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Denominazione@50" S0 + OUTPUT F_ABI CODTAB[1,5] CHECKTYPE REQUIRED -END + WARNING "Codice ABI assente" + FIELD S4[1,5] +END NUMBER F_CAB 5 -BEGIN - PROMPT 28 10 "" +BEGIN + PROMPT 36 13 "CAB " FLAGS "Z" - USE LF_CFBAN - INPUT TIPOCF "C" - INPUT CODCF F_CODCF SELECT - INPUT TIPOBAN "V" - DISPLAY "ABI@5" ABI - DISPLAY "CAB@5" CAB - DISPLAY "IBAN@50" IBAN - OUTPUT F_ABI ABI - OUTPUT F_CAB CAB - OUTPUT F_IBAN IBAN - CHECKTYPE SEARCH + USE %BAN KEY 1 SELECT CODTAB ?= "??????????" + INPUT CODTAB[1,5] F_ABI + INPUT CODTAB[6,10] F_CAB + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Codice CAB" CODTAB[6,10] + DISPLAY "Denominazione@50" S0 + OUTPUT F_ABI CODTAB[1,5] + OUTPUT F_CAB CODTAB[6,10] + CHECKTYPE REQUIRED + WARNING "Banca assente" FIELD S4[6,10] END STRING F_IBAN 34 BEGIN - PROMPT 38 10 "IBAN " - FLAGS "D" + PROMPT 2 60 "" + FLAGS "DG" FIELD S1 END +STRINGA F_BBAN 30 +BEGIN + PROMPT 2 14 "BBAN " + FLAGS "UH" +END + +STRING F_CONTO 12 +BEGIN + PROMPT 2 14 "Conto " + VALIDATE CHECK_BBAN_FUNC F_BBAN F_CIN F_ABI F_CAB F_CONTO + FLAGS "UZ" +END ENDPAGE