From 3c7ec717e2d85aa447c6ba074d4f81b3fd33612d Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 7 Dec 2010 16:58:46 +0000 Subject: [PATCH] Patch level : 10.0 854 Files correlati : cg0.exe ca0.exe Ricompilazione Demo : [ ] Commento : Campi per gestione CUP nei clienti e nelle commesse git-svn-id: svn://10.65.10.50/branches/R_10_00@21263 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca0600.cpp | 292 +++++++++++++++++++++++++- ca/ca0600a.h | 27 +++ ca/ca0600a.uml | 347 ++++++++++++++++++++++++++++--- ca/cfcms.h | 10 + ca/f99.dir | 2 +- ca/f99.trr | 7 +- cg/cfban.h | 10 + cg/cg0200.cpp | 280 +++++++++++++++++++++++-- cg/cg0200.h | 30 +-- cg/cg0200a.uml | 478 +++++++++++++++++++++++++++++-------------- cg/f20.dir | 2 +- cg/f20.trr | 5 +- cg/f98.dir | 2 +- cg/f98.trr | 6 +- include/clifo.h | 3 + include/config.cpp | 2 +- include/controls.cpp | 22 ++ include/controls.h | 1 + include/maskfld.cpp | 8 +- include/maskfld.h | 3 +- include/modtbapp.cpp | 10 + include/modtbapp.h | 1 + include/validate.cpp | 2 +- 23 files changed, 1330 insertions(+), 220 deletions(-) create mode 100755 ca/cfcms.h create mode 100755 cg/cfban.h diff --git a/ca/ca0600.cpp b/ca/ca0600.cpp index 17c0d5708..f70c223ba 100755 --- a/ca/ca0600.cpp +++ b/ca/ca0600.cpp @@ -6,6 +6,7 @@ #include "calib01.h" #include "ca0600a.h" #include "commesse.h" +#include "cfcms.h" //////////////////////////////////////////////////////////////////////// //MASCHERA @@ -56,7 +57,19 @@ class TCms_app : public TAnal_app bool _has_filter; protected: - virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM + void fin2row(const TMask& m); + void for2row(const TMask& m); + void row2fin(const TMask& m); + void row2for(const TMask& m); + virtual int read(TMask& m); + virtual int write(const TMask& m); + virtual int rewrite(const TMask& m); + virtual bool remove(); + + virtual void ini2mask(TConfig& ini, TMask&m, bool query); + virtual void mask2ini(const TMask& m, TConfig& ini); + + virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM virtual bool filtered() const; @@ -65,8 +78,285 @@ protected: virtual bool protected_record(TRectype& record); virtual TSimple_anal_msk* create_mask() const { return new TCms_anal_msk; } virtual bool user_create(); + +public: + + TCms_app() {} }; +void TCms_app::fin2row(const TMask& m) +{ + const TRelation * r = get_relation(); + TToken_string key; + + key.add(r->curr().get(COMMESSE_CODCMS)); + key.add("C"); + + TRecord_array fins(key, LF_CFCMS); + const int items = fins.rows(); + TSheet_field & s = m.sfield(F_CMS_FINAN); + + s.destroy(); + for (int i = 1; i <= items; i++) + { + const TRectype & rec = fins[i]; + TToken_string & str = s.row(i - 1); + + + str.add(rec.get(CFCMS_CODCF), s.cid2index(F_CMS_CODFIN)); + str.add(rec.get(CFCMS_NRIGABAN), s.cid2index(F_CMS_NRIGABANFIN)); + str.add(rec.get(CFCMS_CUP), s.cid2index(F_CMS_CUPFIN)); + str.add(rec.get(CFCMS_CIG), s.cid2index(F_CMS_CIGFIN)); + str.add(rec.get(CFCMS_PERCFIN), s.cid2index(F_CMS_PERCFINFIN)); + str.add(rec.get(CFCMS_DESCR), s.cid2index(F_CMS_DESCRFIN)); + s.check_row(i - 1); + } + s.force_update(); +} + +void TCms_app::for2row(const TMask& m) +{ + const TRelation * r = get_relation(); + TToken_string key; + + key.add(r->curr().get(COMMESSE_CODCMS)); + key.add("F"); + + TRecord_array fors(key, LF_CFCMS); + const int items = fors.rows(); + TSheet_field & s = m.sfield(F_CMS_FORN); + + s.destroy(); + for (int i = 1; i <= items; i++) + { + const TRectype & rec = fors[i]; + TToken_string & str = s.row(i - 1); + + str.add(rec.get(CFCMS_CODCF), s.cid2index(F_CMS_CODFOR)); + str.add(rec.get(CFCMS_NRIGABAN), s.cid2index(F_CMS_NRIGABANFOR)); + str.add(rec.get(CFCMS_CUP), s.cid2index(F_CMS_CUPFOR)); + str.add(rec.get(CFCMS_CIG), s.cid2index(F_CMS_CUPFOR)); + s.check_row(i - 1); + } + s.force_update(); +} + +int TCms_app::read(TMask& m) +{ + int err = TAnal_app::read(m); + + if (err == NOERR) + { + fin2row(m); + for2row(m); + } + return err; +} + +void TCms_app::row2fin(const TMask& m) +{ + TRelation * r = get_relation(); + TToken_string key; + + key.add(r->lfile().get(COMMESSE_CODCMS)); + key.add("C"); + + TRecord_array fins(key, LF_CFCMS); + TSheet_field & s = m.sfield(F_CMS_FINAN); + const int items = s.items(); + + fins.destroy_rows(); + for (int i = 0; i < items; i++) + { + TRectype & rec = fins.row(i + 1, true); + TToken_string & str = s.row(i); + + rec.put(CFCMS_CODCF, str.get(s.cid2index(F_CMS_CODFIN))); + rec.put(CFCMS_NRIGABAN, str.get(s.cid2index(F_CMS_NRIGABANFIN))); + rec.put(CFCMS_CUP, str.get(s.cid2index(F_CMS_CUPFIN))); + rec.put(CFCMS_CIG, str.get(s.cid2index(F_CMS_CIGFIN))); + rec.put(CFCMS_PERCFIN, str.get(s.cid2index(F_CMS_PERCFINFIN))); + rec.put(CFCMS_DESCR, str.get(s.cid2index(F_CMS_DESCRFIN))); + } + fins.write(true); +} + +void TCms_app::row2for(const TMask& m) +{ + TRelation * r = get_relation(); + TToken_string key; + + key.add(r->lfile().get(COMMESSE_CODCMS)); + key.add("F"); + + TRecord_array fors(key, LF_CFCMS); + TSheet_field & s = m.sfield(F_CMS_FORN); + const int items = s.items(); + + fors.destroy_rows(); + for (int i = 0; i < items; i++) + { + TRectype & rec = fors.row(i + 1, true); + TToken_string & str = s.row(i); + + rec.put(CFCMS_CODCF, str.get(s.cid2index(F_CMS_CODFOR))); + rec.put(CFCMS_NRIGABAN, str.get(s.cid2index(F_CMS_NRIGABANFOR))); + rec.put(CFCMS_CUP, str.get(s.cid2index(F_CMS_CUPFOR))); + rec.put(CFCMS_CIG, str.get(s.cid2index(F_CMS_CIGFOR))); + } + fors.write(true); +} + +int TCms_app::write(const TMask& m) +{ + TRelation * r = get_relation(); + + m.autosave(*r); + int err = TAnal_app::write(m); + if (err == NOERR) + { + row2fin(m); + row2for(m); + } + return err; +} + +int TCms_app::rewrite(const TMask& m) +{ + TRelation * r = get_relation(); + + m.autosave(*r); + int err = TAnal_app::rewrite(m); + if (err == NOERR) + { + row2fin(m); + row2for(m); + } + return err; +} + +bool TCms_app::remove() +{ + int err = TAnal_app::remove(); + if (err == NOERR) + { + TRelation * r = get_relation(); + TToken_string key; + + key.add(r->lfile().get(COMMESSE_CODCMS)); + key.add("C"); + + TRecord_array fins(key, LF_CFCMS); + + err = fins.remove(); + if (err == NOERR) + { + key.cut(0); + key.add(r->lfile().get(COMMESSE_CODCMS)); + key.add("F"); + + TRecord_array fors(key, LF_CFCMS); + err = fors.remove(); + } + } + return err == NOERR; +} + +void TCms_app::ini2mask(TConfig& ini, TMask& m, bool query) +{ + TString p; + const TRelation * r = get_relation(); + + TAnal_app::ini2mask(ini, m, query); + + if (!query) + { + int i; + p << LF_CFCMS << ",C"; + TSheet_field & si = m.sfield(F_CMS_FINAN); + + for (i = 0; ; i++) + { + TString para(p); para << "," << i + 1; + const long codcf = ini.get_long(CFCMS_CODCF, para); + if (codcf == 0L) + break; + TToken_string & row = si.row(i); + + row.add(codcf, si.cid2index(F_CMS_CODFIN)); + row.add(ini.get(CFCMS_NRIGABAN, para), si.cid2index(F_CMS_NRIGABANFIN)); + row.add(ini.get(CFCMS_CUP, para), si.cid2index(F_CMS_CUPFIN)); + row.add(ini.get(CFCMS_CIG, para), si.cid2index(F_CMS_CIGFIN)); + row.add(ini.get(CFCMS_PERCFIN, para), si.cid2index(F_CMS_PERCFINFIN)); + row.add(ini.get(CFCMS_DESCR, para), si.cid2index(F_CMS_DESCRFIN)); + si.update_mask(i - 1); + } + si.force_update(); + + p.cut(0); + p << LF_CFCMS << ",F"; + + TSheet_field & so = m.sfield(F_CMS_FORN); + + for (i = 0; ; i++) + { + TString para(p); para << "," << i + 1; + const long codcf = ini.get_long(CFCMS_CODCF, para); + if (codcf == 0L) + break; + TToken_string & row = so.row(i); + + row.add(codcf, so.cid2index(F_CMS_CODFOR)); + row.add(ini.get(CFCMS_NRIGABAN, para), so.cid2index(F_CMS_NRIGABANFOR)); + row.add(ini.get(CFCMS_CUP, para), so.cid2index(F_CMS_CUPFOR)); + row.add(ini.get(CFCMS_CIG, para), so.cid2index(F_CMS_CIGFOR)); + so.update_mask(i - 1); + } + so.force_update(); + } +} + +void TCms_app::mask2ini(const TMask& m, TConfig& ini) +{ + TString p; + const TRelation * r = get_relation(); + + TAnal_app::mask2ini(m, ini); + p << LF_CFCMS << ",C"; + TSheet_field & si = m.sfield(F_CMS_FINAN); + int items = si.items(); + + for (int i = 0; i < items; i++) + { + TString para(p); para << "," << i + 1; + TToken_string & row = si.row(i); + + ini.set(CFCMS_CODCF, row.get(si.cid2index(F_CMS_CODFIN)), para); + ini.set(CFCMS_NRIGABAN, row.get(si.cid2index(F_CMS_NRIGABANFIN)), para); + ini.set(CFCMS_CUP, row.get(si.cid2index(F_CMS_CUPFIN)), para); + ini.set(CFCMS_CIG, row.get(si.cid2index(F_CMS_CIGFIN)), para); + ini.set(CFCMS_PERCFIN, row.get(si.cid2index(F_CMS_PERCFINFIN)), para); + ini.set(CFCMS_DESCR, row.get(si.cid2index(F_CMS_DESCRFIN)), para); + } + + p.cut(0); + p << LF_CFCMS << ",F"; + + TSheet_field & so = m.sfield(F_CMS_FORN); + + items = so.items(); + for (int i = 0; i < items; i++) + { + TString para(p); para << "," << i + 1; + TToken_string & row = so.row(i); + + ini.set(CFCMS_CODCF, row.get(so.cid2index(F_CMS_CODFOR)), para); + ini.set(CFCMS_NRIGABAN, row.get(so.cid2index(F_CMS_NRIGABANFOR)), para); + ini.set(CFCMS_CUP, row.get(so.cid2index(F_CMS_CUPFOR)), para); + ini.set(CFCMS_CIG, row.get(so.cid2index(F_CMS_CIGFOR)), para); + } +} + bool TCms_app::filtered() const { if (_has_filter) diff --git a/ca/ca0600a.h b/ca/ca0600a.h index f070703aa..6771347e5 100755 --- a/ca/ca0600a.h +++ b/ca/ca0600a.h @@ -57,6 +57,8 @@ #define F_CMS_CODATT 256 #define F_CMS_CODDITTA 257 #define F_CMS_INDETR 258 +#define F_CMS_FINAN 259 +#define F_CMS_FORN 260 #define F_CMS_MAG 353 #define F_CMS_DESCMAG 354 @@ -79,3 +81,28 @@ #define F_CMSDES1 701 #define F_CMSDES4 705 + +#define F_CMS_CODFIN 101 +#define F_CMS_RAGFIN 102 +#define F_CMS_NRIGABANFIN 103 +#define F_CMS_IBANFIN 104 +#define F_CMS_CUPFIN 105 +#define F_CMS_CIGFIN 106 +#define F_CMS_PERCFINFIN 107 +#define F_CMS_DESCRFIN 108 + +#define F_CMS_DCUPFIN 171 +#define F_CMS_DCIGFIN 172 +#define F_CMS_GARAFIN 173 +#define F_CMS_TIPOCLI 174 + +#define F_CMS_CODFOR 101 +#define F_CMS_RAGFOR 102 +#define F_CMS_NRIGABANFOR 103 +#define F_CMS_IBANFOR 104 +#define F_CMS_CUPFOR 105 +#define F_CMS_CIGFOR 106 + +#define F_CMS_DCUPFOR 171 +#define F_CMS_DCIGFOR 172 +#define F_CMS_GARAFOR 173 diff --git a/ca/ca0600a.uml b/ca/ca0600a.uml index a9e8cf233..4b8b61f36 100755 --- a/ca/ca0600a.uml +++ b/ca/ca0600a.uml @@ -6,7 +6,7 @@ TOOLBAR "topbar" 0 0 0 2 ENDPAGE -PAGE "Pagina 1" 0 0 0 2 +PAGE "Commessa" 0 0 0 2 GROUPBOX DLG_NULL 78 6 BEGIN @@ -126,34 +126,7 @@ END ENDPAGE -PAGE "Pagina 2" -1 -1 64 6 - -STRING F_CMS_CODCF 6 -BEGIN - PROMPT 2 1 "Cliente " - FIELD CODCF - USE LF_CLIFO - INPUT TIPOCF "C" - INPUT CODCF F_CMS_CODCF - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - OUTPUT F_CMS_CODCF CODCF - OUTPUT F_CMS_CRAGSOC RAGSOC - CHECKTYPE NORMAL -END - -STRING F_CMS_CRAGSOC 50 -BEGIN - PROMPT 20 1 "" - USE LF_CLIFO KEY 2 - INPUT TIPOCF "C" - INPUT RAGSOC F_CMS_CRAGSOC - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Partita IVA@12" PAIV - COPY OUTPUT F_CMS_CODCF -END +PAGE "Parametri" -1 -1 64 6 LIST F_CMS_REGIVA 2 14 BEGIN @@ -415,7 +388,7 @@ END ENDPAGE -PAGE "Pagina 3" -1 -1 64 6 +PAGE "Parametri" -1 -1 64 6 GROUPBOX DLG_NULL 78 6 BEGIN @@ -587,7 +560,7 @@ END ENDPAGE -PAGE "Pagina 4" 0 0 0 2 +PAGE "Default" 0 0 0 2 GROUPBOX DLG_NULL 78 6 BEGIN @@ -596,4 +569,316 @@ END ENDPAGE +PAGE "Clienti/Fornitori" 0 0 0 2 + +SPREADSHEET F_CMS_FINAN 0 10 +BEGIN + PROMPT 1 0 "@bFinanziatori" + ITEM "Codice" + ITEM "Ragione Sociale@50" + ITEM "Riga banca" + ITEM "IBAN@27" + ITEM "CUP@22" + ITEM "CIG@10" + ITEM "% finanziamento" + ITEM "Settore/Dipartimento/Servizio@50" +END + +SPREADSHEET F_CMS_FORN 0 10 +BEGIN + PROMPT 1 12 "@bFornitori" + ITEM "Codice" + ITEM "Ragione Sociale@50" + ITEM "Riga banca" + ITEM "IBAN@27" + ITEM "CUP@22" + ITEM "CIG@10" +END + +ENDPAGE +ENDMASK + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +PAGE "Finanziatori" 0 0 0 2 + +STRING F_CMS_CODFIN 6 +BEGIN + PROMPT 2 1 "Cliente " + USE LF_CLIFO + INPUT TIPOCF "C" + INPUT CODCF F_CMS_CODFIN + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + OUTPUT F_CMS_CODFIN CODCF + OUTPUT F_CMS_RAGFIN RAGSOC + OUTPUT F_CMS_TIPOCLI ALLEG + CHECKTYPE REQUIRED + ADD RUN cg0 -1 +END + +STRING F_CMS_RAGFIN 50 +BEGIN + PROMPT 20 1 "" + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC F_CMS_RAGFIN + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Partita IVA@12" PAIV + COPY OUTPUT F_CMS_CODFIN +END + +LISTBOX F_CMS_TIPOCLI 1 35 +BEGIN + PROMPT 2 60 "Tipo cliente/fornitore " + ITEM " |Valido per allegato IVA" MESSAGE CLEAR,1@ + ITEM "1|Non valido per allegato IVA" MESSAGE CLEAR,1@ + ITEM "2|Occasionale" MESSAGE CLEAR,1@ + ITEM "3|Documenti riepilogativi" MESSAGE CLEAR,1@ + ITEM "4|Codice fiscale gia' inserito" MESSAGE CLEAR,1@ + ITEM "5|Estero" MESSAGE CLEAR,1@ + ITEM "6|Privato" MESSAGE CLEAR,1@ + ITEM "7|Ente pubblico" MESSAGE ENABLE,1@ + ITEM "8|Fallimento/proc.concorsuale" MESSAGE CLEAR,1@ + FLAGS "DG" +END + +NUMBER F_CMS_NRIGABANFIN 3 +BEGIN + PROMPT 2 3 "Conto corr. " + USE LF_CFBAN + JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF + INPUT TIPOCF "C" + INPUT CODCF F_CMS_CODFIN SELECT + INPUT TIPOBAN "V" + INPUT NRIGA F_CMS_NRIGABANFIN + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC + DISPLAY "IBAN" IBAN + OUTPUT F_CMS_NRIGABANFIN NRIGA + OUTPUT F_CMS_IBANFIN IBAN + CHECKTYPE NORMAL +END + +STRING F_CMS_IBANFIN 27 +BEGIN + PROMPT 25 3 "IBAN " + FLAGS "D" +END + +STRING F_CMS_CUPFIN 22 +BEGIN + PROMPT 2 5 "CUP " + USE %CUP + INPUT CODTAB F_CMS_CUPFIN + DISPLAY "Codice@22" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CMS_CUPFIN CODTAB + OUTPUT F_CMS_DCUPFIN S0 + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_CMS_DCUPFIN 50 30 +BEGIN + PROMPT 40 5 "" + USE %CUP KEY 2 + INPUT S0 F_CMS_DCUPFIN + DISPLAY "Ragione Sociale@50" S0 + DISPLAY "Codice@22" CODTAB + COPY OUTPUT F_CMS_CUPFIN + GROUP 1 +END + +STRING F_CMS_CIGFIN 10 +BEGIN + PROMPT 2 6 "CIG " + USE %CIG + INPUT CODTAB F_CMS_CIGFIN + DISPLAY "Codice@10" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice gara" S1 + OUTPUT F_CMS_CIGFIN CODTAB + OUTPUT F_CMS_DCIGFIN S0 + OUTPUT F_CMS_GARAFIN S1 + CHECKTYPE NORMAL + GROUP 1 +END + +STRING F_CMS_DCIGFIN 50 30 +BEGIN + PROMPT 40 6 "" + USE %CIG KEY 2 + INPUT S0 F_CMS_DCIGFIN + DISPLAY "Ragione Sociale@50" S0 + DISPLAY "Codice@10" CODTAB + COPY OUTPUT F_CMS_CIGFIN + GROUP 1 +END + +STRING F_CMS_GARAFIN 10 +BEGIN + PROMPT 8 7 "Codice gara " + FLAGS "D" +END + +NUMBER F_CMS_PERCFINFIN 6 2 +BEGIN + PROMPT 8 8 "% di finanz." +END + +STRING F_CMS_DESCRFIN 50 +BEGIN + PROMPT 8 9 "Descrizione " +END + +ENDPAGE + +ENDMASK + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +PAGE "Fornitori" 0 0 0 2 + +STRING F_CMS_CODFOR 6 +BEGIN + PROMPT 2 1 "Fornitore" + FIELD CODCF + USE LF_CLIFO + INPUT TIPOCF "F" + INPUT CODCF F_CMS_CODFOR + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + OUTPUT F_CMS_CODFIN CODCF + OUTPUT F_CMS_RAGFIN RAGSOC + CHECKTYPE REQUIRED + ADD RUN cg0 -1 +END + +STRING F_CMS_RAGFOR 50 +BEGIN + PROMPT 20 1 "" + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC F_CMS_RAGFOR + DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Partita IVA@12" PAIV + COPY OUTPUT F_CMS_CODFOR +END + +NUMBER F_CMS_NRIGABANFOR 3 +BEGIN + PROMPT 2 3 "Conto corr. " + USE LF_CFBAN + JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF + INPUT TIPOCF "F" + INPUT CODCF F_CMS_CODFOR SELECT + INPUT TIPOBAN "V" + INPUT NRIGA F_CMS_NRIGABANFOR + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC + DISPLAY "IBAN" IBAN + OUTPUT F_CMS_NRIGABANFOR NRIGA + OUTPUT F_CMS_IBANFOR IBAN + CHECKTYPE NORMAL +END + +STRING F_CMS_IBANFOR 27 +BEGIN + PROMPT 2 25 "IBAN " + FLAGS "D" +END + +STRING F_CMS_CUPFOR 22 +BEGIN + PROMPT 2 5 "CUP " + USE %CUP + INPUT CODTAB F_CMS_CUPFOR + DISPLAY "Codice@22" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CMS_CUPFOR CODTAB + OUTPUT F_CMS_DCUPFOR S0 + CHECKTYPE NORMAL +END + +STRING F_CMS_DCUPFOR 50 30 +BEGIN + PROMPT 40 5 "" + USE %CUP KEY 2 + INPUT S0 F_CMS_DCUPFOR + DISPLAY "Ragione Sociale@50" S0 + DISPLAY "Codice@22" CODTAB + COPY OUTPUT F_CMS_CUPFOR +END + +STRING F_CMS_CIGFOR 10 +BEGIN + PROMPT 2 6 "CIG " + USE %CIG + INPUT CODTAB F_CMS_CIGFOR + DISPLAY "Codice@10" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice gara" S1 + OUTPUT F_CMS_CIGFOR CODTAB + OUTPUT F_CMS_DCIGFOR S0 + OUTPUT F_CMS_GARAFOR S1 + CHECKTYPE NORMAL +END + +STRING F_CMS_DCIGFOR 50 30 +BEGIN + PROMPT 40 6 "" + USE %CIG KEY 2 + INPUT S0 F_CMS_DCIGFOR + DISPLAY "Ragione Sociale@50" S0 + DISPLAY "Codice@10" CODTAB + COPY OUTPUT F_CMS_CIGFOR +END + +STRING F_CMS_GARAFOR 10 +BEGIN + PROMPT 8 7 "Codice gara " + FLAGS "D" +END + +ENDPAGE + ENDMASK \ No newline at end of file diff --git a/ca/cfcms.h b/ca/cfcms.h new file mode 100755 index 000000000..741d05fc4 --- /dev/null +++ b/ca/cfcms.h @@ -0,0 +1,10 @@ +#define CFCMS_COMMESSA "COMMESSA" +#define CFCMS_TIPOCF "TIPOCF" +#define CFCMS_NRIGA "NRIGA" +#define CFCMS_CODCF "CODCF" +#define CFCMS_DESCR "DESCR" +#define CFCMS_NRIGABAN "NRIGABAN" +#define CFCMS_CUP "CUP" +#define CFCMS_CIG "CIG" +#define CFCMS_CINT "CINT" +#define CFCMS_PERCFIN "PERCFIN" diff --git a/ca/f99.dir b/ca/f99.dir index 31e5c4b57..f44d08dcf 100755 --- a/ca/f99.dir +++ b/ca/f99.dir @@ -1,3 +1,3 @@ 99 0 -$cmscf|0|0|60|0|Clienti Fornitori per commessa||| +$cmscf|0|0|145|0|Clienti Fornitori per commessa||| diff --git a/ca/f99.trr b/ca/f99.trr index aebfc98e2..0bb8a3f0d 100755 --- a/ca/f99.trr +++ b/ca/f99.trr @@ -1,11 +1,14 @@ 99 -7 +10 COMMESSA|1|20|0|Codice commessa TIPOCF|1|1|0|Tipo (liente/ornitore) NRIGA|2|3|0|Numero riga CODCF|3|6|0|Codice cliente/fornitore +DESCR|1|70|0|Descrizione servizio/dipartimento/assessorato/centro di costo/commessa NRIGABAN|2|3|0|Numero riga Banca -CUP|1|20|0|Codice CUP/ CIG +CUP|1|15|0|Codice CUP/ CIG +CIG|1|10|0|Codice Identificativo Gara +CINT|1|10|0|Codice Identificativo Interno del finanazioamento (Privati) PERCFIN|4|6|2|Percentuale di finanziamento 1 COMMESSA+TIPOCF+NRIGA| diff --git a/cg/cfban.h b/cg/cfban.h new file mode 100755 index 000000000..ebae25800 --- /dev/null +++ b/cg/cfban.h @@ -0,0 +1,10 @@ +#define CFBAN_TIPOCF "TIPOCF" +#define CFBAN_CODCF "CODCF" +#define CFBAN_TIPOBAN "TIPOBAN" +#define CFBAN_NRIGA "NRIGA" +#define CFBAN_ABI "ABI" +#define CFBAN_CAB "CAB" +#define CFBAN_PROGPR "PROGPR" +#define CFBAN_NUMCC "NUMCC" +#define CFBAN_IBAN "IBAN" + \ No newline at end of file diff --git a/cg/cg0200.cpp b/cg/cg0200.cpp index 859891928..4a8a64a45 100755 --- a/cg/cg0200.cpp +++ b/cg/cg0200.cpp @@ -19,6 +19,7 @@ #include #include #include +#include "cfban.h" class TClifo_application : public TRelation_application { @@ -56,6 +57,7 @@ protected: virtual int write(const TMask& m); virtual int rewrite(const TMask& m); virtual int read(TMask& m); + virtual bool remove(); virtual void ini2mask(TConfig& ini, TMask&m, bool query); virtual void mask2ini(const TMask& m, TConfig& ini); @@ -634,7 +636,6 @@ void TClifo_application::init_insert_mode(TMask& m) void TClifo_application::init_modify_mode(TMask& m) { m.enable_page(4, _gesven); - m.efield(F_IBAN_STATO).validate(K_TAB); // Decodifica IBAN m.enable(DLG_CONTRLAV, main_app().has_module(LVAUT) && m.get(F_TIPOCF) == "C"); } @@ -662,13 +663,15 @@ int TClifo_application::read(TMask& m) const TRectype& cfven = get_relation()->curr(LF_CFVEN); TToken_string nonacc(cfven.get(CFV_NONACCEFF), ';'); TToken_string nonscd(cfven.get(CFV_NONSCADEFF), ';'); + int i; + set_pnae(m, nonacc, nonscd); if (_gesven) { TToken_string riga(240); indsp_sheet().reset(); - for (int i=0; i< _rel->indirizzi_items();i++) + for (i = 0; i < _rel->indirizzi_items(); i++) { TRectype& rec=_rel->indirizzo(i); riga.cut(0); @@ -706,12 +709,83 @@ int TClifo_application::read(TMask& m) field_sheet(F_CODINDEFF).add(riga); } } + TToken_string key; + + key.add(m.get(F_TIPOCF)); + key.add(m.get(F_CODCF)); + key.add("V"); + + TRecord_array ns_ban(key, LF_CFBAN); + const TRectype& clifo = get_relation()->curr(LF_CLIFO); + TSheet_field & ns_sh = m.sfield(F_BANA); + + ns_sh.destroy(-1, false); + for (i = 1; i <= ns_ban.rows(); i++) + { + TToken_string & row = ns_sh.row(i -1); + const TRectype & ban = ns_ban.row(i); + + row.add(ban.get(CFBAN_ABI), ns_sh.cid2index(F_BBAN_ABI)); + row.add(ban.get(CFBAN_CAB), ns_sh.cid2index(F_BBAN_CAB)); + row.add(ban.get(CFBAN_NUMCC), ns_sh.cid2index(F_BBAN_CONTO)); + + const TString & iban = ban.get(CFBAN_IBAN); + + row.add(iban, ns_sh.cid2index(F_IBAN)); + ns_sh.update_mask(i - 1); + if (iban.full()) + ns_sh.sheet_row_mask(i - 1).efield(F_IBAN_STATO).validate(K_TAB); // Decodifica IBAN + ns_sh.update_row(i - 1); + } + if (ns_ban.rows() == 0 && clifo.get_int(CLI_CODABI) != 0) + { + TToken_string & row = ns_sh.row(0); + + row.add(clifo.get(CLI_CODABI), ns_sh.cid2index(F_BBAN_ABI)); + row.add(clifo.get(CLI_CODCAB), ns_sh.cid2index(F_BBAN_CAB)); + row.add(clifo.get(CLI_NUMCC), ns_sh.cid2index(F_BBAN_CONTO)); + + const TString & iban = clifo.get(CLI_IBAN); + + row.add(iban, ns_sh.cid2index(F_IBAN)); + ns_sh.update_mask(0); + } + key.cut(0); + key.add(m.get(F_TIPOCF)); + key.add(m.get(F_CODCF)); + key.add("N"); + + TRecord_array vs_ban(key, LF_CFBAN); + TSheet_field & vs_sh = m.sfield(F_BANP); + + vs_sh.destroy(-1, false); + for (i = 1; i <= vs_ban.rows(); i++) + { + TToken_string & row = vs_sh.row(i -1); + const TRectype & ban = vs_ban.row(i); + + row.add(ban.get(CFBAN_ABI), vs_sh.cid2index(F_BBAN_ABI)); + row.add(ban.get(CFBAN_CAB), vs_sh.cid2index(F_BBAN_CAB)); + row.add(ban.get(CFBAN_PROGPR), vs_sh.cid2index(F_PROGPR)); + vs_sh.update_mask(i - 1); + vs_sh.sheet_row_mask(i - 1).efield(F_IBAN_STATO).validate(K_TAB); // Decodifica IBAN + vs_sh.update_row(i - 1); + } + if (vs_ban.rows() == 0 && cfven.get_int(CFV_CODABIPR) != 0) + { + TToken_string & row = vs_sh.row(0); + + row.add(cfven.get(CFV_CODABIPR), vs_sh.cid2index(F_BBAN_ABI)); + row.add(cfven.get(CFV_CODCABPR), vs_sh.cid2index(F_BBAN_CAB)); + vs_sh.update_mask(0); + } return _rel->status(); } void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) { TRelation_application::ini2mask(ini, m, query); + int i; if (!query) { @@ -728,7 +802,7 @@ void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) { TToken_string riga(240); TString16 para; - for (int i=0; ;i++) + for (i = 0; ; i++) { para.format("%d,%d", LF_INDSP, i+1); if (!ini.set_paragraph(para)) @@ -773,18 +847,87 @@ void TClifo_application::ini2mask(TConfig& ini, TMask& m, bool query) } } } + TString p; + + p << LF_CFBAN << ",V"; + TSheet_field & ns_sh = m.sfield(F_BANA); + + for (i = 0; ; i++) + { + TString para(p); para << "," << i + 1; + const TString & abi = ini.get(CFBAN_ABI, para); + if (abi.blank()) + break; + TToken_string & row = ns_sh.row(i); + + row.add(abi, ns_sh.cid2index(F_BBAN_ABI)); + row.add(ini.get(CFBAN_CAB, para), ns_sh.cid2index(F_BBAN_CAB)); + row.add(ini.get(CFBAN_NUMCC, para), ns_sh.cid2index(F_BBAN_CONTO)); + + const TString & iban = ini.get(CFBAN_IBAN, para); + + row.add(iban, ns_sh.cid2index(F_IBAN)); + ns_sh.update_mask(i - 1); + } + p.cut(0); + p << LF_CFBAN << ",N"; + TSheet_field & vs_sh = m.sfield(F_BANP); + + for (i = 0; ; i++) + { + TString para(p); para << "," << i + 1; + const TString & abi = ini.get(CFBAN_ABI, para); + + if (abi.blank()) + break; + TToken_string & row = vs_sh.row(i); + + row.add(abi, vs_sh.cid2index(F_BBAN_ABI)); + row.add(ini.get(CFBAN_CAB, para), vs_sh.cid2index(F_BBAN_CAB)); + row.add(ini.get(CFBAN_PROGPR, para), vs_sh.cid2index(F_PROGPR)); + vs_sh.update_mask(i - 1); + } } int TClifo_application::rewrite(const TMask& m) { - common_f(m); - return TRelation_application::rewrite(m); + common_f(m); + return TRelation_application::rewrite(m); } int TClifo_application::write(const TMask& m) { - common_f(m); - return TRelation_application::write(m); + common_f(m); + return TRelation_application::write(m); +} + +bool TClifo_application::remove() +{ + int err = TRelation_application::remove(); + + if (err == NOERR) + { + TRelation * r = get_relation(); + TToken_string key; + + key.add(r->lfile().get(CLI_TIPOCF)); + key.add(r->lfile().get(CLI_CODCF)); + key.add("V"); + + TRecord_array ns_ban(key, LF_CFBAN); + + ns_ban.remove(); + + key.cut(0); + key.add(r->lfile().get(CLI_TIPOCF)); + key.add(r->lfile().get(CLI_CODCF)); + key.add("N"); + + TRecord_array vs_ban(key, LF_CFBAN); + + vs_ban.remove(); + } + return err == NOERR; } void TClifo_application::mask2ini(const TMask& m, TConfig& ini) @@ -795,6 +938,7 @@ void TClifo_application::mask2ini(const TMask& m, TConfig& ini) get_pnae(m, nonacceff, nonscadeff); ini.set(CFV_NONACCEFF, nonacceff, "17"); ini.set(CFV_NONSCADEFF, nonscadeff, "17"); + int i; if (_gesven) { @@ -805,7 +949,6 @@ void TClifo_application::mask2ini(const TMask& m, TConfig& ini) const int n_items = rows.items(); TString16 para; - int i; for (i = 0; i < n_items; i++) { @@ -838,6 +981,53 @@ void TClifo_application::mask2ini(const TMask& m, TConfig& ini) else break; } + } + TString p; + + p << LF_CFBAN << ",V"; + TSheet_field & ns_sh = m.sfield(F_BANA); + + for (int i = 0; i < ns_sh.items(); i++) + { + TString para(p); para << "," << i + 1; + TToken_string & row = ns_sh.row(i); + + ini.set(CFBAN_ABI, row.get(ns_sh.cid2index(F_BBAN_ABI)), para); + ini.set(CFBAN_CAB, row.get(ns_sh.cid2index(F_BBAN_CAB)), para); + ini.set(CFBAN_NUMCC, row.get(ns_sh.cid2index(F_BBAN_CONTO)), para); + ini.set(CFBAN_IBAN, row.get(ns_sh.cid2index(F_IBAN)), para); + } + for ( ; ; i++) + { + TString para(p); para << "," << i + 1; + + if (ini.set_paragraph(para)) + ini.remove_all(); + else + break; + } + + p.cut(0); + p << LF_CFBAN << ",N"; + TSheet_field & vs_sh = m.sfield(F_BANP); + + for (i = 0; i < vs_sh.items(); i++) + { + TString para(p); para << "," << i + 1; + TToken_string & row = vs_sh.row(i); + + ini.set(CFBAN_ABI, row.get(vs_sh.cid2index(F_BBAN_ABI)), para); + ini.set(CFBAN_CAB, row.get(vs_sh.cid2index(F_BBAN_CAB)), para); + ini.set(CFBAN_PROGPR, row.get(vs_sh.cid2index(F_PROGPR)), para); + } + for ( ; ; i++) + { + TString para(p); para << "," << i + 1; + + if (ini.set_paragraph(para)) + ini.remove_all(); + else + break; } } @@ -908,6 +1098,7 @@ void TClifo_application::get_pnae(const TMask& m, TToken_string& nonacceff, TTok void TClifo_application::common_f(const TMask& m) { TString alter = m.get(F_RICALT); + int i; if (alter.blank() && m.mode() == MODE_INS) ((TMask &)m).set(F_RICALT, m.get(F_RAGSOC).left(m.field(F_RICALT).size())); @@ -928,7 +1119,7 @@ void TClifo_application::common_f(const TMask& m) TArray& rows=indsp_sheet().rows_array(); int n_items = rows.items(); - for (int i = 0; i < n_items; i++) + for (i = 0; i < n_items; i++) { TToken_string& row=(TToken_string&)rows[i]; TRectype& rec=_rel->indirizzo(i); @@ -953,6 +1144,73 @@ void TClifo_application::common_f(const TMask& m) rec.put(IND_CODIND,i+1); } } + TToken_string key; + + key.add(m.get(F_TIPOCF)); + key.add(m.get(F_CODCF)); + key.add("V"); + + TRecord_array ns_ban(key, LF_CFBAN); + TRectype& clifo = get_relation()->curr(LF_CLIFO); + TSheet_field & ns_sh = m.sfield(F_BANA); + const int nsrow = ns_sh.items(); + + for (i = 0; i < nsrow; i++) + { + TToken_string & row = ns_sh.row(i); + TRectype & ban = ns_ban.row(i + 1, true); + + ban.put(CFBAN_ABI, row.get(ns_sh.cid2index(F_BBAN_ABI))); + ban.put(CFBAN_CAB, row.get(ns_sh.cid2index(F_BBAN_CAB))); + ban.put(CFBAN_NUMCC, row.get(ns_sh.cid2index(F_BBAN_CONTO))); + ban.put(CFBAN_IBAN, row.get(ns_sh.cid2index(F_IBAN))); + if (i == 0) + { + clifo.put(CLI_CODABI, row.get(ns_sh.cid2index(F_BBAN_ABI))); + clifo.put(CLI_CODCAB, row.get(ns_sh.cid2index(F_BBAN_CAB))); + clifo.put(CLI_NUMCC, row.get(ns_sh.cid2index(F_BBAN_CONTO))); + clifo.put(CLI_IBAN, row.get(ns_sh.cid2index(F_IBAN))); + } + } + if (nsrow == 0) + { + clifo.zero(CLI_CODABI); + clifo.zero(CLI_CODCAB); + clifo.zero(CLI_NUMCC); + clifo.zero(CLI_IBAN); + } + if (ns_ban.write(true) != NOERR) + return; + + key.cut(0); + key.add(m.get(F_TIPOCF)); + key.add(m.get(F_CODCF)); + key.add("N"); + + TRecord_array vs_ban(key, LF_CFBAN); + TSheet_field & vs_sh = m.sfield(F_BANP); + const int vsrow = vs_sh.items(); + + for (i = 0; i < vsrow; i++) + { + TToken_string & row = vs_sh.row(i); + TRectype & ban = vs_ban.row(i + 1, true); + + ban.put(CFBAN_ABI, row.get(vs_sh.cid2index(F_BBAN_ABI))); + ban.put(CFBAN_CAB, row.get(vs_sh.cid2index(F_BBAN_CAB))); + ban.put(CFBAN_PROGPR, row.get(vs_sh.cid2index(F_PROGPR))); + if (i == 0) + { + cfven.put(CFV_CODABIPR, row.get(ns_sh.cid2index(F_BBAN_ABI))); + cfven.put(CFV_CODCABPR, row.get(ns_sh.cid2index(F_BBAN_CAB))); + } + } + if (vsrow == 0) + { + cfven.zero(CFV_CODABIPR); + cfven.zero(CFV_CODCABPR); + } + vs_ban.write(true); } void TClifo_application::indsp_sheet_rebuilder() @@ -1046,7 +1304,6 @@ bool TClifo_application::user_create() // initvar e arrmask LF_ANAGFIS, LF_PCON, LF_COMUNI, 0); _has_cg = has_module(CGAUT, CHK_DONGLE); _rel = new TClifoVI; - _msk = new TMask("cg0200a") ; _msk->set_handler(F_TIPOCF, tipocf_handler); @@ -1075,8 +1332,7 @@ bool TClifo_application::user_create() // initvar e arrmask bool TClifo_application::user_destroy() // releasev e arrmask { - delete _msk; - delete _rel; + delete _rel; return true; } diff --git a/cg/cg0200.h b/cg/cg0200.h index af824a294..69ada5ffd 100755 --- a/cg/cg0200.h +++ b/cg/cg0200.h @@ -40,19 +40,7 @@ #define F_CODPAG 131 #define F_DESPAG 331 #define F_RAGSOC1 132 -#define F_CODABI 133 -#define F_CODCAB 134 -#define F_IBAN 350 -#define F_IBAN_STATO 351 -#define F_IBAN_CHECK 352 -#define F_BBAN 353 -#define F_BBAN_CIN 354 -#define F_BBAN_ABI 355 -#define F_BBAN_CAB 356 -#define F_BBAN_CONTO 357 - -#define F_DESBAN 140 #define F_CODVAL 136 #define F_DESVAL 336 #define F_FIDO 139 @@ -137,7 +125,6 @@ #define F_RAGSOCALLEG 228 #define F_CODDEP 230 #define F_RAGGEFF 232 -#define F_NUMCC 233 #define F_CODLIST1 234 #define F_ESACC 235 #define F_ESALL 236 @@ -174,6 +161,23 @@ #define F_DOCMAIL 307 #define DLG_ANAG 308 #define DLG_CONTRLAV 309 +#define F_BANA 310 +#define F_BANP 311 +#define F_DIPPUBB 312 +#define F_ENTE 313 +#define F_AUTORIZ 314 + +#define F_IBAN_STATO 101 +#define F_IBAN_CHECK 102 +#define F_BBAN_CIN 103 +#define F_BBAN_ABI 104 +#define F_BBAN_CAB 105 +#define F_BBAN_CONTO 106 +#define F_PROGPR 107 +#define F_DESBAN 108 +#define F_IBAN 109 + +#define F_BBAN 350 ////////////////////////////////////// diff --git a/cg/cg0200a.uml b/cg/cg0200a.uml index 4ec47d25b..3ed8782d3 100755 --- a/cg/cg0200a.uml +++ b/cg/cg0200a.uml @@ -626,7 +626,7 @@ END ENDPAGE -PAGE "Banche/Condizioni" -1 -1 78 19 +PAGE "Banche" -1 -1 78 19 GROUPBOX DLG_NULL 76 4 BEGIN @@ -663,115 +663,86 @@ BEGIN GROUP 6 END -NUMBER F_CODABI 5 +TEXT DLG_NULL BEGIN - PROMPT 2 4 "Banca d'appoggio " - FIELD CODABI - FLAGS "Z" - USE %BAN SELECT CODTAB ?= "?????" - INPUT CODTAB F_CODABI - DISPLAY "Codice ABI" CODTAB[1,5] - DISPLAY "Denominazione@50" S0 - OUTPUT F_CODABI CODTAB[1,5] - HELP "Codice ABI banca del C/F" - CHECKTYPE NORMAL - MESSAGE COPY,F_BBAN_ABI + PROMPT 0 4 "@bBanche di appoggio" END -NUMBER F_CODCAB 5 +SPREADSHEET F_BANA 80 7 BEGIN - PROMPT 28 4 "" - FIELD CODCAB - FLAGS "Z" - USE %BAN SELECT CODTAB ?= "??????????" - INPUT CODTAB[1,5] F_CODABI - INPUT CODTAB[6,10] F_CODCAB - DISPLAY "Codice ABI" CODTAB[1,5] - DISPLAY "Codice CAB" CODTAB[6,10] - DISPLAY "Denominazione@50" S0 - OUTPUT F_CODABI CODTAB[1,5] - OUTPUT F_CODCAB CODTAB[6,10] - OUTPUT F_DESBAN S0 - HELP "Codice CAB banca del C/F" - CHECKTYPE NORMAL - MESSAGE COPY,F_BBAN_CAB + PROMPT 0 5 "" + ITEM "IBAN\nStato" + ITEM "IBAN\nCheck" + ITEM "IBAN\nCIN" + ITEM "IBAN\nABI" + ITEM "IBAN\nCAB" + ITEM "IBAN\nConto@12" + ITEM "@1" + ITEM "Descrizione@50" + ITEM "IBAN@27" END -STRING F_DESBAN 50 37 +TEXT DLG_NULL BEGIN - PROMPT 37 4 "" - USE %BAN KEY 2 SELECT CODTAB ?= "??????????" - INPUT S0 F_DESBAN - DISPLAY "Denominazione@50" S0 - DISPLAY "Codice ABI" CODTAB[1,5] - DISPLAY "Codice CAB" CODTAB[6,10] - COPY OUTPUT F_CODCAB + PROMPT 0 14 "@bBanche di presentazione" END -STRING F_NUMCC 20 +SPREADSHEET F_BANP 80 7 BEGIN - PROMPT 2 5 "Conto corrente " - FIELD NUMCC - FLAGS "U" + PROMPT 0 15 "" + ITEM "IBAN\nStato" + ITEM "IBAN\nCheck" + ITEM "IBAN\nCIN" + ITEM "IBAN\nABI" + ITEM "IBAN\nCAB" + ITEM "IBAN\nConto@12" + ITEM "Progressivo" + ITEM "Descrizione@50" + ITEM "IBAN@27" END -STRING F_IBAN 34 +ENDPAGE + +PAGE "Condizioni" -1 -1 78 19 + +GROUPBOX DLG_NULL 76 4 BEGIN - PROMPT 2 60 "" + PROMPT 1 0 "Dati identificativi" +END + +LIST DLG_NULL 1 11 +BEGIN + PROMPT 2 1 "Tipo " FLAGS "D" - FIELD IBAN + GROUP 1 + ITEM "C|Clienti" + ITEM "F|Fornitori" END -STRING F_IBAN_STATO 2 +NUMBER DLG_NULL 6 BEGIN - PROMPT 2 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 + PROMPT 2 2 "Codice " + FLAGS "RD" + GROUP 2 END -NUMBER F_IBAN_CHECK 2 +STRING DLG_NULL 30 BEGIN - PROMPT 24 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 + PROMPT 25 1 "Cognome/Rag. Soc. " + FLAGS "D" + GROUP 3 END -STRINGA F_BBAN 30 +STRING DLG_NULL 20 BEGIN - PROMPT 33 6 "BBAN " - FLAGS "UH" + PROMPT 25 2 "Nome/Seconda parte Rag. Soc. " + FLAGS "D" + GROUP 6 END -STRINGA F_BBAN_CIN 1 -BEGIN - PROMPT 33 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 41 6 "" - FLAGS "DGZ" -END - -NUMBER F_BBAN_CAB 5 -BEGIN - PROMPT 48 6 "" - FLAGS "DGZ" -END - -STRING F_BBAN_CONTO 12 -BEGIN - PROMPT 55 6 "" - FLAGS "UZ" - VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO -END - - STRING F_CODVAL 3 BEGIN - PROMPT 2 8 "Valuta " + PROMPT 2 4 "Valuta " FLAGS "UZ" FIELD CODVAL USE %VAL @@ -785,7 +756,7 @@ END STRING F_DESVAL 50 BEGIN - PROMPT 22 8 "" + PROMPT 22 4 "" USE %VAL KEY 2 INPUT S0 F_DESVAL DISPLAY "Descrizione@50" S0 @@ -796,7 +767,7 @@ END STRING F_CODVALINTRA 3 BEGIN - PROMPT 2 9 "Valuta INTRA " + PROMPT 2 5 "Valuta INTRA " FLAGS "UZ" FIELD VALINTRA COPY USE F_CODVAL @@ -810,7 +781,7 @@ END STRING F_DESVALINTRA 50 BEGIN - PROMPT 22 9 "" + PROMPT 22 5 "" COPY USE F_DESVAL INPUT S0 F_DESVALINTRA COPY DISPLAY F_DESVAL @@ -821,7 +792,7 @@ END STRING F_CODLIN 1 BEGIN - PROMPT 2 10 "Lingua " + PROMPT 2 6 "Lingua " FIELD CODLIN USE %LNG FLAGS "U" @@ -836,7 +807,7 @@ END STRING F_DESLIN 50 BEGIN - PROMPT 22 10 "" + PROMPT 22 6 "" USE %LNG KEY 2 INPUT S0 F_DESLIN DISPLAY "Descrizione@50" S0 @@ -847,7 +818,7 @@ END STRING F_CODPAG 4 BEGIN - PROMPT 2 11 "Pagamento " + PROMPT 2 7 "Pagamento " FIELD CODPAG FLAGS "U#" USE %CPG @@ -863,7 +834,7 @@ END STRING F_DESPAG 50 BEGIN - PROMPT 22 11 "" + PROMPT 22 7 "" USE %CPG KEY 2 INPUT S0 F_DESPAG DISPLAY "Descrizione@50" S0 @@ -875,7 +846,7 @@ END CURRENCY F_FIDO 15 BEGIN - PROMPT 2 12 "Fido " + PROMPT 2 8 "Fido " FIELD FIDO DRIVENBY F_CODVAL HELP "Importo massimo fido del cliente/fornitore" @@ -883,18 +854,18 @@ END GROUPBOX DLG_NULL 76 3 BEGIN - PROMPT 1 13 "@bConto cliente/fornitore" + PROMPT 1 9 "@bConto cliente/fornitore" END NUMBER F_GRUPPO 3 BEGIN - PROMPT 2 14 "Grp." + PROMPT 2 10 "Grp." FIELD GRUPPO END NUMBER F_CONTO 3 BEGIN - PROMPT 11 14 "Cnt." + PROMPT 11 10 "Cnt." FIELD CONTO USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF) INPUT GRUPPO F_GRUPPO @@ -912,7 +883,7 @@ END STRING F_DESCONTO 50 BEGIN - PROMPT 22 14 "" + PROMPT 22 10 "" USE LF_PCON KEY 2 SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF=#F_TIPOCF) INPUT DESCR F_DESCONTO DISPLAY "Descrizione@50" DESCR @@ -925,18 +896,18 @@ END GROUPBOX DLG_RIC 76 4 BEGIN - PROMPT 1 16 "@bConto di ricavo" + PROMPT 1 12 "@bConto di ricavo" END GROUPBOX DLG_CST 76 4 BEGIN - PROMPT 1 16 "@bConto di costo" + PROMPT 1 12 "@bConto di costo" FLAGS "H" END NUMBER F_GRUPPORIC 3 BEGIN - PROMPT 2 17 "Gruppo " + PROMPT 2 13 "Gruppo " FIELD GRUPPORIC FLAGS "R" HELP "Gruppo di contropartita" @@ -944,7 +915,7 @@ END NUMBER F_CONTORIC 3 BEGIN - PROMPT 27 17 "Conto " + PROMPT 27 13 "Conto " FIELD CONTORIC FLAGS "R" HELP "Conto di contropartita" @@ -952,7 +923,7 @@ END NUMBER F_SOTTOCRIC 6 BEGIN - PROMPT 47 17 "Sottoconto " + PROMPT 47 13 "Sottoconto " FIELD SOTTOCRIC FLAGS "R" USE LF_PCON SELECT SOTTOCONTO!="" @@ -974,7 +945,7 @@ END STRING F_DESCRIC 50 BEGIN - PROMPT 2 18 "Descrizione " + PROMPT 2 14 "Descrizione " USE LF_PCON KEY 2 SELECT SOTTOCONTO!="" INPUT DESCR F_DESCRIC DISPLAY "Descrizione@50" DESCR @@ -986,9 +957,32 @@ BEGIN ADD RUN cg0 -0 END +BOOLEAN F_DIPPUBB +BEGIN + PROMPT 2 16 "Dipendente pubblico" + FIELD DIPPUBB + MESSAGE FALSE CLEAR,40@ + MESSAGE TRUE ENABLE,40@ + GROUP 4 +END + +STRING F_ENTE 50 +BEGIN + PROMPT 2 17 "Ente " + FIELD ENTE + GROUP 4 40 +END + +STRING F_AUTORIZ 50 +BEGIN + PROMPT 2 18 "Autorizzazione" + FIELD AUTORIZ + GROUP 4 40 +END + ENDPAGE -PAGE "Banche/Effetti" -1 -1 78 19 +PAGE "Effetti" -1 -1 78 19 GROUPBOX DLG_NULL 76 4 BEGIN @@ -1025,86 +1019,48 @@ BEGIN GROUP 6 END -NUMBER F_CODABIPR 5 -BEGIN - PROMPT 2 4 "Banca presentazione ABI " - FIELD LF_CFVEN->CODABIPR - FLAGS "Z" - COPY USE F_CODABI - INPUT CODTAB F_CODABIPR - COPY DISPLAY F_CODABI - OUTPUT F_CODABIPR CODTAB[1,5] - HELP "Codice ABI della banca presentazione effetti" - CHECKTYPE NORMAL -END - -NUMBER F_CODBANPR 5 -BEGIN - PROMPT 43 4 "CAB " - FIELD LF_CFVEN->CODCABPR - FLAGS "Z" - COPY USE F_CODCAB - INPUT CODTAB[1,5] F_CODABIPR - INPUT CODTAB[6,10] F_CODBANPR - COPY DISPLAY F_CODCAB - OUTPUT F_CODABIPR CODTAB[1,5] - OUTPUT F_CODBANPR CODTAB[6,10] - OUTPUT F_DESBANPR S0 - HELP "Codice CAB della banca presentazione effetti" - CHECKTYPE NORMAL -END - -STRING F_DESBANPR 50 47 -BEGIN - PROMPT 2 5 "Denominazione " - COPY USE F_DESBAN - INPUT S0 F_DESBANPR - COPY DISPLAY F_DESBAN - COPY OUTPUT F_CODBANPR -END - CURRENCY F_IMPMINEFF 10 BEGIN - PROMPT 2 6 "Importo minimo effetti " + PROMPT 2 4 "Importo minimo effetti " FIELD LF_CFVEN->IMPMINEFF END BOOLEAN F_EMEFFRICH BEGIN - PROMPT 43 6 "Emissione effetti" + PROMPT 43 4 "Emissione effetti" FIELD LF_CFVEN->EMEFFRICH END BOOLEAN F_RAGGEFF BEGIN - PROMPT 43 7 "Raggruppamento effetti" + PROMPT 43 5 "Raggruppamento effetti" FIELD LF_CFVEN->RAGGEFF END NUMBER F_NUMESC 5 BEGIN - PROMPT 2 8 "Ultimo Nr. estratto conto " + PROMPT 2 6 "Ultimo Nr. estratto conto " FIELD LF_CFVEN->NUMESC GROUP 9 END NUMBER F_MAXSOLL 2 BEGIN - PROMPT 43 8 "Numero max solleciti " + PROMPT 43 6 "Numero max solleciti " FIELD LF_CFVEN->MAXSOLL GROUP 7 9 END DATE F_DATAESC BEGIN - PROMPT 2 9 "Data ultimo estratto conto " + PROMPT 2 7 "Data ultimo estratto conto " FIELD LF_CFVEN->DATAESC GROUP 9 END DATE F_DATASOLL BEGIN - PROMPT 43 9 "Data ultimo sollecito " + PROMPT 43 7 "Data ultimo sollecito " FIELD LF_CFVEN->DATASOLL GROUP 7 9 END @@ -1112,7 +1068,7 @@ END /* Campo non ancora utilizzato STRING F_PROFSOLL 5 BEGIN - PROMPT 45 10 "Codice profilo " + PROMPT 45 8 "Codice profilo " FIELD LF_CFVEN->PROFSOLL GROUP 7 END @@ -1120,12 +1076,12 @@ END TEXT DLG_NULL BEGIN - PROMPT 1 10 "@bPeriodi di non accettazione effetti" + PROMPT 1 8 "@bPeriodi di non accettazione effetti" END SPREADSHEET F_NONACCEFF 76 BEGIN - PROMPT 1 11 "Periodi effetti" + PROMPT 1 9 "Periodi effetti" ITEM "Dal\nGiorno@8" ITEM "Dal\nMese" ITEM "Al\nGiorno@8" @@ -2070,6 +2026,228 @@ ENDPAGE ENDMASK +PAGE "Banche di appoggio" -1 -1 80 8 + +STRING F_IBAN_STATO 2 +BEGIN + PROMPT 2 2 "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 24 2 "" + 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_CIN 1 +BEGIN + PROMPT 33 2 "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 41 2 "" + USE %BAN SELECT CODTAB ?= "?????" + INPUT CODTAB F_BBAN_ABI + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Denominazione@50" S0 + OUTPUT F_BBAN_ABI CODTAB[1,5] + HELP "Codice ABI banca del C/F" + CHECKTYPE NORMAL + FLAGS "Z" +END + +NUMBER F_BBAN_CAB 5 +BEGIN + PROMPT 50 2 "" + USE %BAN SELECT CODTAB ?= "??????????" + INPUT CODTAB[1,5] F_BBAN_ABI + INPUT CODTAB[6,10] F_BBAN_CAB + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Codice CAB" CODTAB[6,10] + DISPLAY "Denominazione@50" S0 + OUTPUT F_BBAN_ABI CODTAB[1,5] + OUTPUT F_BBAN_CAB CODTAB[6,10] + OUTPUT F_DESBAN S0 + HELP "Codice CAB banca del C/F" + CHECKTYPE NORMAL + FLAGS "Z" +END + +STRING F_BBAN_CONTO 12 +BEGIN + PROMPT 59 2 "" + FLAGS "UZ" + VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO +END + +NUMBER F_PROGPR 2 +BEGIN + PROMPT 2 60 "" + FLAGS "D" +END + +STRING F_DESBAN 50 40 +BEGIN + PROMPT 20 4 "Descrizione " + USE %BAN KEY 2 SELECT CODTAB ?= "??????????" + INPUT S0 F_DESBAN + DISPLAY "Denominazione@50" S0 + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Codice CAB" CODTAB[6,10] + COPY OUTPUT F_BBAN_CAB +END + +STRING F_IBAN 27 +BEGIN + PROMPT 2 6 "IBAN " + FLAGS "D" +END + +STRING F_BBAN 23 +BEGIN + PROMPT 2 60 "BBAN " + FLAGS "HD" +END + +ENDPAGE + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +ENDMASK + +PAGE "Banche di presentazione" -1 -1 80 8 + +STRING F_IBAN_STATO 2 +BEGIN + PROMPT 2 2 "Codice IBAN " + FLAGS "UDG" +END + +NUMBER F_IBAN_CHECK 2 +BEGIN + PROMPT 24 2 "" + FLAGS "UZD" +END + +STRINGA F_BBAN_CIN 1 +BEGIN + PROMPT 33 42 "BBAN " + FLAGS "UDG" +END + +NUMBER F_BBAN_ABI 5 +BEGIN + PROMPT 41 2 "" + USE BNP + JOIN %BAN ALIAS 100 INTO CODTAB==CODTAB[1,10] + INPUT CODTAB[1,5] F_BBAN_ABI + INPUT CODTAB[6,10] F_BBAN_CAB + INPUT CODTAB[11,12] F_PROGPR + DISPLAY "ABI@5" CODTAB[1,5] + DISPLAY "CAB@5" CODTAB[6,10] + DISPLAY "Progr." CODTAB[11,12] + DISPLAY "IBAN@25" S3 + DISPLAY "Denominazione@50" 100@->S0 + OUTPUT F_BBAN_ABI CODTAB[1,5] + OUTPUT F_BBAN_CAB CODTAB[6,10] + OUTPUT F_PROGPR CODTAB[11,12] + OUTPUT F_DESBAN 100@->S0 + OUTPUT F_IBAN S3 + OUTPUT F_IBAN_STATO S3[1,2] + OUTPUT F_IBAN_CHECK S3[3,4] + OUTPUT F_BBAN_CIN S3[5,5] + OUTPUT F_BBAN_CONTO S3[16,27] + HELP "Codice ABI banca del C/F" + CHECKTYPE SEARCH + FLAGS "Z" +END + +NUMBER F_BBAN_CAB 5 +BEGIN + PROMPT 50 2 "" + COPY ALL F_BBAN_ABI + HELP "Codice CAB banca del C/F" + CHECKTYPE NORMAL + FLAGS "Z" +END + +STRING F_BBAN_CONTO 12 +BEGIN + PROMPT 59 2 "" + FLAGS "UDZ" +END + +NUMBER F_PROGPR 2 +BEGIN + PROMPT 2 4 "Progressivo " + COPY ALL F_BBAN_ABI + FLAGS "Z" +END + +STRING F_DESBAN 50 40 +BEGIN + PROMPT 20 4 "Descrizione " + USE %BAN KEY 2 SELECT (CODTAB ?= "??????????"&&100@->CODTAB!="") + JOIN BNP ALIAS 100 INTO CODTAB==CODTAB + INPUT S0 F_DESBAN + DISPLAY "Denominazione@50" S0 + DISPLAY "Codice ABI" CODTAB[1,5] + DISPLAY "Codice CAB" CODTAB[6,10] + COPY OUTPUT F_BBAN_CAB +END + +STRING F_IBAN 27 +BEGIN + PROMPT 2 6 "IBAN " + FLAGS "D" +END + +ENDPAGE + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +ENDMASK + PAGE "Effetti" -1 -1 42 10 GROUPBOX DLG_NULL 40 4 diff --git a/cg/f20.dir b/cg/f20.dir index b77ff5652..4ac89f3f0 100755 --- a/cg/f20.dir +++ b/cg/f20.dir @@ -1,3 +1,3 @@ 20 0 -$clifo|0|0|737|0|Clienti/Fornitori||| +$clifo|0|0|838|0|Clienti/Fornitori||| diff --git a/cg/f20.trr b/cg/f20.trr index 02ec892c5..cd3da30ab 100755 --- a/cg/f20.trr +++ b/cg/f20.trr @@ -1,5 +1,5 @@ 20 -58 +61 TIPOCF|1|1|0|Tipo liente ornitore CODCF|3|6|0|Codice RAGSOC|1|50|0|Ragione sociale @@ -58,6 +58,9 @@ REFERENTE|1|50|0|Persona referente presso il cliente/fornitore VALINTRA|1|3|0|Codice Valuta Intracomunitaria CODCFASS|3|6|0|Codice cliente (fornitori) o fornitore (clienti) associato CODCFFATT|3|6|0|Codice cliente (fornitore) cui fatturare +DIPPUBB|8|1|0|Dipendente Pubblico +ENTE|1|50|0|Ente di appartenenza (Dipendente Pubblico) +AUTORIZ|1|50|0|Autorizzazione (Dipendente Pubblico) 6 TIPOCF+CODCF| TIPOCF+UPPER(RAGSOC)|X diff --git a/cg/f98.dir b/cg/f98.dir index 12c764ed8..1d723a998 100755 --- a/cg/f98.dir +++ b/cg/f98.dir @@ -1,3 +1,3 @@ 98 0 -$cfban|0|0|77|0|Banche per clienti e fornitori||| +$cfban|0|0|79|0|Banche per clienti e fornitori||| diff --git a/cg/f98.trr b/cg/f98.trr index ce3e27226..cc4330f71 100755 --- a/cg/f98.trr +++ b/cg/f98.trr @@ -1,12 +1,14 @@ 98 -8 +9 TIPOCF|1|1|0|Tipo (liente/ornitore) CODCF|3|6|0|Codice cliente/fornitore TIPOBAN|1|2|0|Tipo Banca (ostra, ostra) NRIGA|2|3|0|Numero riga ABI|9|5|0|ABI CAB|9|5|0|CAB +PROGPR|9|2|0|Progressivo per banche di presentazione NUMCC|1|20|0|Numero conto corrente IBAN|1|34|0|IBAN -1 +2 TIPOCF+CODCF+TIPOBAN+NRIGA| +TIPOCF+CODCF+TIPOBAN+ABI+CAB+NUMCC|X diff --git a/include/clifo.h b/include/clifo.h index 4e6f01a0c..6dc9bdb0a 100755 --- a/include/clifo.h +++ b/include/clifo.h @@ -68,6 +68,9 @@ #define CLI_REFERENTE "REFERENTE" #define CLI_VALINTRA "VALINTRA" #define CLI_CODCFASS "CODCFASS" +#define CLI_DIPPUBB "DIPPUBB" +#define CLI_ENTE "ENTE" +#define CLI_AUTORIZ "AUTORIZ" #endif diff --git a/include/config.cpp b/include/config.cpp index 78d8192d5..2bab27ca7 100755 --- a/include/config.cpp +++ b/include/config.cpp @@ -874,7 +874,7 @@ bool ini_get_bool(int cfg, const char* para, const char* name, bool defval, int int ini_get_int(const char* file, const char* para, const char* name, int defval, int idx) { DECLARE_VARNAME(name, idx); - return xvt_sys_get_profile_int(file, para, name, defval); + return xvt_sys_get_profile_int(file, para, varname, defval); } bool ini_set_int(const char* file, const char* paragraph, const char* name, int val, int idx) diff --git a/include/controls.cpp b/include/controls.cpp index 4af281a33..f4b4bc231 100755 --- a/include/controls.cpp +++ b/include/controls.cpp @@ -1006,6 +1006,28 @@ void TControl::set_rect(const RCT& r) xvt_vobj_move((WINDOW)_obj->v.btn->btnctl, &r); } } + +void TControl::set_rect(short cx, short cy, short cwidth, short cheight, short clen) +{ + XI_RCT rct = coord2rct(_obj->itf, cx, cy, cwidth + 1, cheight); + + xi_fu_to_pu(_obj->itf, (XI_PNT*)&rct, 2); + set_rect((const RCT &)rct); + + if ( _obj->type == XIT_FIELD) + { + if (_obj->v.field->button) + { + const short delta = _obj->v.field->btn_rct.left - (_obj->v.field->rct.right + CAMPI_SCAVATI); + + _obj->v.field->btn_rct.left -= delta; + _obj->v.field->btn_rct.right -= delta; + } + + if (clen > 0) + _obj->v.field->field_width = clen + 1; + } +} unsigned long TControl::flags2attr(const char* flags) const { diff --git a/include/controls.h b/include/controls.h index 4987a46d2..c4706c249 100755 --- a/include/controls.h +++ b/include/controls.h @@ -117,6 +117,7 @@ public: virtual RCT& get_rect(RCT& r) const; virtual void set_rect(const RCT& r); + virtual void set_rect(short cx, short cy, short cwidth, short cheight, short clen = 0); // @cmember imposta la posizione del cursore a void set_caret_pos(int pos = -1); diff --git a/include/maskfld.cpp b/include/maskfld.cpp index 7ae4ed19e..d0e530d45 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -463,6 +463,11 @@ void TMask_field::set_rect(const RCT& r) if (_ctl) _ctl->set_rect(r); } +void TMask_field::set_rect(short cx, short cy, short cwidth, short cheight, short clen) +{ + if (_ctl) _ctl->set_rect(cx, cy, cwidth, cheight, clen); +} + // Certified 100% // @doc EXTERNAL @@ -978,8 +983,7 @@ HIDDEN void run_app(TMask& mask, TToken_string& msg) { if (*f == '#') { - const int id = atoi(++f); - a << mask.get(id); + mask.focus_field().evaluate_field(f); break; } else diff --git a/include/maskfld.h b/include/maskfld.h index d5b36aced..0d4d3b11f 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -166,7 +166,8 @@ public: virtual RCT& get_rect(RCT& r) const; virtual void set_rect(const RCT& r); - + virtual void set_rect(short cx, short cy, short cwidth, short cheight, short clen = 0); + // @cmember Ritorna l'identificatore del controllo virtual short dlg() const; diff --git a/include/modtbapp.cpp b/include/modtbapp.cpp index 3226b6285..df784749a 100755 --- a/include/modtbapp.cpp +++ b/include/modtbapp.cpp @@ -30,6 +30,16 @@ bool TTable_module_application::protected_record(TRectype& rec) return rec.get_bool("FPC"); } +void TTable_module_application::set_mask(TMask * mask) +{ + if (mask != NULL) + { + if (_msk != NULL) + delete _msk; + _msk = mask; + } +} + TMask* TTable_module_application::user_create_mask() { TModule_table& tab = (TModule_table&)file(); diff --git a/include/modtbapp.h b/include/modtbapp.h index 8da5020f4..fc3654c80 100755 --- a/include/modtbapp.h +++ b/include/modtbapp.h @@ -27,6 +27,7 @@ protected: virtual bool user_destroy(); virtual bool protected_record(TRectype& rec); virtual TMask* get_mask(int mode); + virtual void set_mask(TMask * mask); virtual TRelation* get_relation() const; virtual void print(); diff --git a/include/validate.cpp b/include/validate.cpp index 213f658aa..f54b3f54f 100755 --- a/include/validate.cpp +++ b/include/validate.cpp @@ -983,7 +983,7 @@ HIDDEN bool _iban_val(TMask_field& f, KEY key) if (f.dlg() == id[1]) // Campo Stato IBAN { - if (key == K_TAB && !m.is_running()) + if (key == K_TAB && !f.focusdirty()) { const TString& iban = m.get(id[0]); m.set(id[1], iban.left(2));