Patch level : 2.0 638

Files correlati     : bastbnp.msk batbbnp.msk ef0.exe ef0100a.msk ef0500a.msk f31.dir f31.trr riba.ini
Ricompilazione Demo : [ ]
Commento            :

Prima implementazione della gestione del codice IBAN in generazione effetti


git-svn-id: svn://10.65.10.50/trunk@11580 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-11-10 15:01:25 +00:00
parent 97d26f74be
commit 4aa6525ae2
16 changed files with 467 additions and 271 deletions

View File

@ -1,7 +1,7 @@
//DEFINIZIONE MASCHERA PER STAMPA TABELLA BANCHE DI PRESENTAZIONE
#include "bastbnp.h"
PAGE "Stampa Tabella Banche Presentazione" -1 -1 56 8
PAGE "Banche di Presentazione" -1 -1 56 8
STRING F_INIZIO1 5
BEGIN

View File

@ -26,7 +26,6 @@
#define F_GRUPPO_SCN 122
#define F_CONTO_SCN 123
#define F_SOTTOC_SCN 124
#define F_CBI 125
#define F_DESCR_INC 126
#define F_DESCR_SBF 127
#define F_DESCR_SCN 128
@ -35,4 +34,18 @@
#define F_SOTTOC_INCP 131
#define F_DESCR_INCP 132
#define F_IBAN 140
#define F_IBAN_STATO 141
#define F_IBAN_CHECK 142
#define F_BBAN 143
#define F_BBAN_CIN 144
#define F_BBAN_ABI 145
#define F_BBAN_CAB 146
#define F_BBAN_CONTO 147
#define F_CBI 150
#define F_IBAN_PAG 151
#define F_IBAN_INC 152
#endif//__BATBBNP_H

View File

@ -1,7 +1,6 @@
//DEFINIZIONE MASCHERA GESTIONE TABELLA BANCHE DI PRESENTAZIONE
#include "batbbnp.h"
TOOLBAR "" 0 20 0 2
TOOLBAR "" 0 -2 0 2
#include <toolbar.h>
ENDPAGE
@ -9,7 +8,7 @@ PAGE "Banche di Presentazione" 0 -1 77 20
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 " "
PROMPT 1 0 ""
END
NUMBER F_CODICEABI 5
@ -60,6 +59,7 @@ BEGIN
OUTPUT F_ABI CODTAB[1,5]
MESSAGE COPY,F_CODICEABI
MESSAGE CHECK,F_CODICEABI
MESSAGE COPY,F_BBAN_ABI
CHECKTYPE REQUIRED
END
@ -81,6 +81,7 @@ BEGIN
OUTPUT F_DENOM 100@->S0
MESSAGE COPY,F_CODICECAB
MESSAGE CHECK,F_CODICEABI
MESSAGE COPY,F_BBAN_CAB
CHECKTYPE REQUIRED
END
@ -96,40 +97,92 @@ BEGIN
FLAG "D"
END
GROUPBOX DLG_NULL 78 6
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 4 "@bPortafoglio Effetti all'incasso"
PROMPT 1 4 "@bConto Corrente"
END
STRING F_IBAN 34
BEGIN
PROMPT 2 5 ""
FLAGS "H"
FIELD S3
END
STRING F_IBAN_STATO 2
BEGIN
PROMPT 2 5 "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 5 ""
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 5 "BBAN "
FLAGS "UH"
END
STRINGA F_BBAN_CIN 1
BEGIN
PROMPT 30 5 "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 5 ""
FLAGS "DGZ"
END
NUMBER F_BBAN_CAB 5
BEGIN
PROMPT 45 5 ""
FLAGS "DGZ"
END
STRING F_BBAN_CONTO 12
BEGIN
PROMPT 52 5 ""
FLAGS "UZ"
VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 7 "@bPortafoglio Effetti all'incasso"
END
STRING F_CC_INC 20
BEGIN
PROMPT 2 5 "C/C "
PROMPT 2 8 "C/C "
FIELD S0
END
STRING F_CC_CONT_INC 20
BEGIN
PROMPT 2 6 "C/Contabile "
FIELD S3
END
NUMBER F_GRUPPO_INC 3
BEGIN
PROMPT 2 7 "Cont. attivi "
PROMPT 2 9 "Cont. attivi "
FIELD I0
CHECKTYPE NORMAL
END
NUMBER F_CONTO_INC 3
BEGIN
PROMPT 21 7 ""
PROMPT 21 9 ""
FIELD I1
CHECKTYPE NORMAL
END
NUMBER F_SOTTOC_INC 6
BEGIN
PROMPT 28 7 ""
PROMPT 28 9 ""
FIELD I2
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GRUPPO_INC
@ -148,7 +201,7 @@ END
STRING F_DESCR_INC 50 38
BEGIN
PROMPT 38 7 ""
PROMPT 38 9 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCR_INC
DISPLAY "Descrizione@50" DESCR
@ -161,21 +214,21 @@ END
NUMBER F_GRUPPO_INCP 3
BEGIN
PROMPT 2 8 "Cont. passivi "
PROMPT 2 10 "Cont. passivi "
FIELD I9
CHECKTYPE NORMAL
END
NUMBER F_CONTO_INCP 3
BEGIN
PROMPT 21 8 ""
PROMPT 21 10 ""
FIELD I10
CHECKTYPE NORMAL
END
NUMBER F_SOTTOC_INCP 6
BEGIN
PROMPT 28 8 ""
PROMPT 28 10 ""
FIELD I11
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GRUPPO_INCP
@ -194,7 +247,7 @@ END
STRING F_DESCR_INCP 50 38
BEGIN
PROMPT 38 8 ""
PROMPT 38 10 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCR_INCP
DISPLAY "Descrizione@50" DESCR
@ -205,47 +258,41 @@ BEGIN
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 10 "@bPortafoglio Effetti salvo buon fine"
PROMPT 1 12 "@bPortafoglio Effetti salvo buon fine"
END
STRING F_CC_SBF 20
BEGIN
PROMPT 2 11 "C/C "
PROMPT 2 13 "C/C "
FIELD S1
END
NUMBER F_FIDO_SBF 20 2
BEGIN
PROMPT 38 11 "Fido "
PROMPT 38 13 "Fido "
FIELD R1
PICTURE "###.###.###.###,@@"
END
STRING F_CC_CONT_SBF 20
BEGIN
PROMPT 2 12 "C/Contabile "
FIELD S4
END
NUMBER F_GRUPPO_SBF 3
BEGIN
PROMPT 2 13 "Contropartita "
PROMPT 2 14 "Contropartita "
FIELD I3
CHECKTYPE NORMAL
END
NUMBER F_CONTO_SBF 3
BEGIN
PROMPT 21 13 ""
PROMPT 21 14 ""
FIELD I4
CHECKTYPE NORMAL
END
NUMBER F_SOTTOC_SBF 6
BEGIN
PROMPT 28 13 ""
PROMPT 28 14 ""
FIELD I5
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GRUPPO_SBF
@ -264,7 +311,7 @@ END
STRING F_DESCR_SBF 50 38
BEGIN
PROMPT 38 13 ""
PROMPT 38 14 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCR_SBF
DISPLAY "Descrizione@50" DESCR
@ -275,30 +322,24 @@ BEGIN
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 15 "@bPortafoglio Effetti allo sconto"
PROMPT 1 16 "@bPortafoglio Effetti allo sconto"
END
STRING F_CC_SCN 20
BEGIN
PROMPT 2 16 "C/C "
PROMPT 2 17 "C/C "
FIELD S2
END
NUMBER F_FIDO_SCN 20 2
BEGIN
PROMPT 38 16 "Fido "
PROMPT 38 17 "Fido "
FIELD R2
PICTURE "###.###.###.###,@@"
END
STRING F_CC_CONT_SCN 20
BEGIN
PROMPT 2 17 "C/Contabile "
FIELD S5
END
NUMBER F_GRUPPO_SCN 3
BEGIN
PROMPT 2 18 "Contropartita "
@ -308,7 +349,7 @@ END
NUMBER F_CONTO_SCN 3
BEGIN
PROMPT 21 18 ""
PROMPT 20 18 ""
FIELD I7
CHECKTYPE NORMAL
END
@ -345,12 +386,33 @@ BEGIN
CHECKTYPE NORMAL
END
ENDPAGE
PAGE "Paramteri Distinte" 0 -1 77 20
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 1 "@bParametri emissione distinte su file"
END
BOOLEAN F_CBI
BEGIN
PROMPT 2 20 "Tracciato SETIF"
PROMPT 2 2 "Utilizza tracciato SETIF"
FIELD B0
END
BOOLEAN F_IBAN_PAG
BEGIN
PROMPT 2 3 "Genera IBAN su distinte di pagamento"
FIELD B1
END
BOOLEAN F_IBAN_INC
BEGIN
PROMPT 2 4 "Genera IBAN su distinte di incasso"
FIELD B2
END
ENDPAGE
ENDMASK

View File

@ -30,6 +30,7 @@ protected:
virtual void init_insert_mode(TMask&);
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 handle_sheet(TMask_field& f, KEY);
static bool cambio_handler(TMask_field& f, KEY k);
@ -95,10 +96,11 @@ void TVariazione_effetti::init_insert_mode(TMask&)
enable_controeuro();
}
void TVariazione_effetti::init_modify_mode(TMask&)
void TVariazione_effetti::init_modify_mode(TMask& m)
{
_msk->disable(F_TIPOCF);
m.disable(F_TIPOCF);
enable_controeuro();
m.efield(F_IBAN_STATO).validate(K_TAB);
}
// ritorna il prossimo numero valido di chiave
@ -292,9 +294,10 @@ bool TVariazione_effetti::user_create()
open_files(LF_TAB, LF_TABCOM, LF_EFFETTI, LF_REFFETTI, LF_CESS,
LF_COMUNI, LF_DOC, LF_RIGHEDOC,
LF_CLIFO, LF_CFVEN, LF_OCCAS, 0);
_msk = new TMask("ef0100a") ;
_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_CODVAL, codval_handler);
_msk->set_handler(F_CAMBIO, cambio_handler);
@ -310,8 +313,8 @@ bool TVariazione_effetti::user_create()
bool TVariazione_effetti::user_destroy()
{
delete _msk;
delete _rel;
delete _effetto;
delete _rel;
return TRUE;
}
@ -319,8 +322,8 @@ bool TVariazione_effetti::user_destroy()
// che venga inserita almeno una riga per un effetto
bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
{
TMask& m = f.mask();
const int mode = m.mode();
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
@ -345,6 +348,30 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
return TRUE;
}
bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k)
{
if (k == K_TAB && f.to_check(k))
{
TMask& m = f.mask();
TString8 str;
str << m.get(F_TIPOCF) << '|' << m.get(F_CODCF);
const TString& iban = cache().get(LF_CFVEN, str, "IBAN");
if (iban.not_empty())
{
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);
}
}
return true;
}
bool TVariazione_effetti::datascad_handler(TMask_field& f, KEY k)
{
if (k == K_ENTER)

View File

@ -37,6 +37,16 @@
#define F_TIPOCF 231
#define F_CONTROEURO 232
#define F_IBAN 250
#define F_IBAN_STATO 251
#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
// Identificatori campi per lo spreadsheet dei Cessionari
#define F_RAGSOC 101
#define F_LOCALITA 102

View File

@ -56,7 +56,6 @@ BEGIN
GROUP 9
END
NUMBER F_CODCF 6
BEGIN
PROMPT 15 3 ""
@ -228,7 +227,7 @@ ENDPAGE
PAGE "Parametri" 0 -1 0 19
GROUPBOX DLG_NULL 78 5
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 0 0 ""
END
@ -261,26 +260,26 @@ END
STRING DLG_NULL 50
BEGIN
PROMPT 27 2 ""
PROMPT 26 2 ""
FLAGS "D"
GROUP 12
END
DATE DLG_NULL
BEGIN
PROMPT 1 3 "Data scadenza "
PROMPT 51 1 "Data scadenza "
FLAGS "D"
GROUP 13
END
GROUPBOX DLG_NULL 38 4
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 0 5 "Banca d'appoggio"
PROMPT 0 4 "@bBanca d'appoggio"
END
NUMBER F_CODABI 5
BEGIN
PROMPT 1 6 "Codice ABI "
PROMPT 1 5 "Codice ABI "
FIELD CODABI
FLAGS "Z"
USE %BAN SELECT CODTAB ?= "?????"
@ -290,11 +289,12 @@ 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 1 7 "Codice CAB "
PROMPT 41 5 "Codice CAB "
FIELD CODCAB
FLAGS "Z"
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
@ -308,23 +308,78 @@ BEGIN
CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_CODCABP
WARNING "Banca assente"
MESSAGE COPY,F_BBAN_CAB
END
GROUPBOX DLG_NULL 38 4
STRING F_IBAN 34
BEGIN
PROMPT 41 5 "Banca di presentazione"
PROMPT 2 6 ""
FLAGS "H"
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 "
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 ""
FLAGS "UZ"
VALIDATE CHECK_BBAN_FUNC F_BBAN F_BBAN_CIN F_BBAN_ABI F_BBAN_CAB F_BBAN_CONTO
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 8 "@bBanca di presentazione"
END
NUMBER F_CODABIP 5
BEGIN
PROMPT 42 6 "Codice ABI "
PROMPT 1 9 "Codice ABI "
FIELD CODABIP
FLAGS "Z"
END
NUMBER F_CODCABP 5
BEGIN
PROMPT 42 7 "Codice CAB "
PROMPT 41 9 "Codice CAB "
FIELD CODCABP
FLAGS "Z"
USE BNP
@ -343,25 +398,30 @@ END
DATE F_DATAEMISS
BEGIN
PROMPT 1 10 "Data di emissione "
PROMPT 1 11 "Data di emissione "
FIELD DATAEMISS
END
NUMBER F_NUMEMISS 8
BEGIN
PROMPT 42 10 "Nr. di emissione "
PROMPT 42 11 "Nr. di emissione "
FIELD NUMEMISS
END
BOOLEAN F_EFFSTAMP
BEGIN
PROMPT 1 11 "Effetto stampato"
PROMPT 1 12 "Effetto stampato"
FIELD EFFSTAMP
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 0 13 "@bDistinta"
END
LIST F_TIPODIST 15
BEGIN
PROMPT 1 13 "Tipo distinta "
PROMPT 1 14 "Tipo distinta "
FIELD TIPODIST
ITEM " | "
ITEM "I|All'incasso"
@ -372,7 +432,7 @@ END
NUMBER F_NDIST 5
BEGIN
PROMPT 42 13 "Nr. distinta "
PROMPT 42 14 "Nr. distinta "
FIELD NDIST
FLAGS "D"
VALIDATE NOT_EMPTY_FUNC
@ -381,46 +441,46 @@ END
DATE F_DATADIST
BEGIN
PROMPT 1 14 "Data distinta "
PROMPT 1 15 "Data distinta "
FIELD DATADIST
FLAGS "D"
END
NUMBER F_NRIGADIST 4
BEGIN
PROMPT 42 14 "Nr. di riga "
PROMPT 42 15 "Nr. di riga "
FIELD NRIGADIST
FLAGS "D"
END
BOOLEAN F_DISTSTAM
BEGIN
PROMPT 1 15 "Distinta stampata"
PROMPT 1 16 "Distinta stampata"
FIELD DISTSTAM
FLAGS "D"
END
DATE F_DATARIBA
BEGIN
PROMPT 1 17 "Data Ri.Ba. "
PROMPT 1 18 "Data Ri.Ba. "
FIELD DATARIBA
END
BOOLEAN F_DISRIBAEST
BEGIN
PROMPT 42 17 "Distinta Ri.Ba. estratta"
PROMPT 42 18 "Distinta Ri.Ba. estratta"
FIELD DISRIBAEST
END
BOOLEAN F_EFFCONT
BEGIN
PROMPT 1 18 "Effetto contabilizzato"
PROMPT 1 19 "Effetto contabilizzato"
FIELD EFFCONT
END
BOOLEAN F_EFFCOMP
BEGIN
PROMPT 42 18 "Effetto completato"
PROMPT 42 19 "Effetto completato"
FIELD EFFCOMP
END
@ -428,7 +488,7 @@ ENDPAGE
PAGE "Cessionari" 0 -1 0 19
GROUPBOX DLG_NULL 78 5
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 0 0 ""
END
@ -440,6 +500,13 @@ BEGIN
GROUP 10
END
DATE DLG_NULL
BEGIN
PROMPT 51 1 "Data scadenza "
FLAGS "D"
GROUP 13
END
TEXT DLG_NULL
BEGIN
PROMPT 1 2 "Cliente"
@ -461,21 +528,14 @@ END
STRING DLG_NULL 50
BEGIN
PROMPT 27 2 ""
PROMPT 26 2 ""
FLAGS "D"
GROUP 12
END
DATE DLG_NULL
BEGIN
PROMPT 1 3 "Data scadenza "
FLAGS "D"
GROUP 13
END
SPREADSHEET F_SHEET_EFF
BEGIN
PROMPT 1 6 "Obbligati principali"
PROMPT 1 4 "Obbligati principali"
ITEM "Ragione Sociale@50"
ITEM "Localita'@35"
ITEM "Stato"

View File

@ -13,7 +13,7 @@ TEffetto::TEffetto()
}
// costuisce l'effetto con il record passato
TEffetto::TEffetto(TRectype& rec)
TEffetto::TEffetto(const TRectype& rec)
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, REFF_NRIGATR), _cess(LF_CESS, CES_NRIGA)
{
TLocalisamfile f(LF_EFFETTI);

View File

@ -94,7 +94,7 @@ public:
// costruttore di default
TEffetto();
// costuisce l'effetto con il record passato
TEffetto(TRectype& rec);
TEffetto(const TRectype& rec);
// costuttore di copia
TEffetto(const TEffetto& eff);
// distruttore di default

View File

@ -19,7 +19,6 @@
class TRiba_form;
class TDistinta_form;
class TRiba_file;
enum fo { kb360 = 1, kb720 = 2, kb1200 = 3, kb1440 = 4 };
#define RIBAFILENAME "ribael.dat"
@ -29,7 +28,6 @@ enum fo { kb360 = 1, kb720 = 2, kb1200 = 3, kb1440 = 4 };
class TEmissione: public TSkeleton_application
{
fo _foutput;
TMask* _msk;
TRelation* _firmrel;
TRelation* _rel;
@ -46,8 +44,8 @@ protected:
virtual void on_firm_change(void);
void conferma(void);
void enable_dettaglio(TForm& form) const;
virtual void print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis);
virtual void print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis);
virtual void print_rb(char tipost, int ndist, char tipodist, const bool is_vis);
virtual void print_dse(char tipost, int ndist, char tipodist, const bool is_vis);
virtual void print(void);
void floppy(void);
void save_data_emis(void);
@ -59,7 +57,8 @@ protected:
bool ok_write(void);
void aggiorna_rb(TCursor*);
void aggiorna_dist(TCursor*);
static bool annulla_handler(TMask_field& f, KEY k);
bool test_record_type(const TString& key) const;
public:
int base_no() const { return _base_page_no; }
@ -112,7 +111,8 @@ class TRiba_file: public TFile_text
{
real _tot_importi;
char _codice_moneta;
bool _tracciato_setif;
bool _tracciato_setif, _iban_pag, _iban_inc;
TString _my_iban; // IBAN del mio conto corrente (ordinante)
protected:
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
@ -121,8 +121,16 @@ public:
void set_tot_importi(const real& importo) { _tot_importi = importo; }
void add_tot_importi(const real& importo) { _tot_importi += importo; }
const real tot_importi() const { return _tot_importi; }
bool tracciato_setif() {return _tracciato_setif;}
void set_tracciato_setif(const bool tracciato_setif=TRUE) {_tracciato_setif = tracciato_setif;}
bool tracciato_setif() const { return _tracciato_setif; }
void set_tracciato_setif(bool tracciato_setif=TRUE) { _tracciato_setif = tracciato_setif; }
const TString& my_iban() const { return _my_iban; }
void set_my_iban(const char* ib) { _my_iban = ib; }
bool iban_pag() const { return _iban_pag; }
bool iban_inc() const { return _iban_inc; }
void set_iban_pag(bool ib) { _iban_pag = ib; }
void set_iban_inc(bool ib) { _iban_inc = ib; }
TRiba_file(const TString& file_name, const TString& config_name);
virtual ~TRiba_file() { }
@ -140,6 +148,9 @@ bool TEmissione::create()
_formrb = NULL;
_formdse = NULL;
_msk = new TMask("ef0500a");
_msk->set(F_NOMEFILE,RIBAFILENAME);
_msk->set(F_PATH, "A:\\");
_firmrel= new TRelation(LF_NDITTE);
_firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
_firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA");
@ -155,10 +166,6 @@ bool TEmissione::create()
_rel->add(LF_COMUNI, "STATO==STATO|COM==COM", 1, LF_INDSP, 213);
_rel->add("BNP", "CODTAB=CODABIP+CODCABP", 1, 0, 403);
_cur = NULL;
_msk->set(F_NOMEFILE,RIBAFILENAME);
// _trasfile = new TRiba_file(RIBAFILENAME, "riba.ini");
// _trasfile->set_ditta(get_firm());
_msk->set_handler(DLG_CANCEL, annulla_handler);
_trasfile = NULL;
return TSkeleton_application::create();
}
@ -258,31 +265,35 @@ void TEmissione::floppy()
}
inizializza_file();
long n_eff = _cur->items();
bool condition = ok_write();
const bool condition = ok_write();
if (!condition)
error_box(TR("Impossibile continuare dischetto pieno"));
error_box(TR("Impossibile scrivere sull'unita' di destinazione"));
else
{
TProgind pi(n_eff,TR("Emissione Ri.Ba. su floppy..."),FALSE,TRUE);
TAssoc_array& tracciati = _trasfile->tracciati();
header_rb();//intestazione flusso effetti
//scandisco tutti gli effetti della distinta selezionata
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))
const TRecnotype n_eff = _cur->items();
if (n_eff > 0)
{
pi.addstatus(1L);
save_data_emis();
THash_object* lavoro = tracciati.get_hashobj();
//scandisco tutti i record di un effetto
for (int i = 0; lavoro != NULL; i++)
TProgind pi(n_eff,TR("Emissione Ri.Ba. su file..."),FALSE,TRUE);
TAssoc_array& tracciati = _trasfile->tracciati();
header_rb();//intestazione flusso effetti
//scandisco tutti gli effetti della distinta selezionata
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))
{
record(*lavoro);//emetto il record
lavoro = tracciati.get_hashobj();
pi.addstatus(1L);
save_data_emis();
THash_object* lavoro = tracciati.get_hashobj();
//scandisco tutti i record di un effetto
for (int i = 0; lavoro != NULL; i++)
{
record(*lavoro);//emetto il record
lavoro = tracciati.get_hashobj();
}
}
footer_ef(); //chiusura flusso effetti
}
footer_ef(); //chiusura flusso effetti
message_box("Effetti emessi: %d", n_eff);
}
_trasfile->close();
delete _trasfile;
@ -310,45 +321,39 @@ void TEmissione::save_data_emis()
//emetto il record d'intestazione del flusso di effetti
void TEmissione::header_rb()
{
TRecord_text rec;
*_cur = 0;
const TRectype& eff = _rel->curr();
TString16 codtab = eff.get(EFF_CODABIP);
codtab << eff.get(EFF_CODCABP);
const TRectype& bnp = cache().get("BNP", codtab);
if (bnp.get_bool("B0"))
{
rec.set_type("RB");
_trasfile->set_tracciato_setif(TRUE);
}
else
{
rec.set_type("IB");
_trasfile->set_tracciato_setif(FALSE);
}
const bool setif = bnp.get_bool("B0");
_trasfile->set_tracciato_setif(setif);
_trasfile->set_my_iban(bnp.get("S3"));
_trasfile->set_iban_pag(bnp.get_bool("B1"));
_trasfile->set_iban_inc(bnp.get_bool("B2"));
TRecord_text rec(setif ? "RB" : "IB");
_trasfile->autoload(rec, *_cur);
_trasfile->write(rec);
}
//emetto il record di chiusura del flusso di effetti
void TEmissione::footer_ef()
{
TRecord_text rec;
*_cur = 0;
rec.set_type("EF");
if (!_trasfile->tracciato_setif())
{
TTracciato_record * trec = _trasfile->t_rec("EF");
TTracciato_record* trec = _trasfile->t_rec("EF");
const int p1 = trec->get(7).position();
const int p2 = trec->get(8).position();
trec->get(7).set_position(p2);
trec->get(8).set_position(p1);
}
TRecord_text rec("EF");
_trasfile->autoload(rec, *_cur);
_trasfile->write(rec);
_trasfile->write_file()->seekp(0, ios::end);
@ -372,12 +377,35 @@ void TEmissione::inizializza_cur()
//inizializza il file di testo su cui emettere gli effetti
void TEmissione::inizializza_file()
{
TFilename fileriba = _msk->get(F_UNITA);
fileriba << ":\\" << _msk->get(F_NOMEFILE);
TFilename fileriba = _msk->get(F_PATH);
fileriba.add(_msk->get(F_NOMEFILE));
_trasfile->open(fileriba,'w');
_trasfile->set_tot_importi(ZERO);
_trasfile->force_record_separator(_msk->get_bool(F_FORCESEP));
_foutput = (fo)_msk->get_int(F_FOR_OUT);
}
bool TEmissione::test_record_type(const TString& key) const
{
bool ok = true;
if (key == "16" || key == "17")
{
const TRectype& eff = _cur->curr();
if (key == "16")
ok = _trasfile->my_iban().not_empty();
else
ok = eff.get(EFF_IBAN).not_empty();
if (ok)
{
const char tipocf = eff.get_char(EFF_TIPOCF);
if (tipocf == 'C')
ok = _trasfile->iban_inc();
else
ok = _trasfile->iban_pag();
}
}
return ok;
}
//emetto un record del flusso di effetti
@ -386,12 +414,15 @@ void TEmissione::record(THash_object& lavoro)
const TString& chiave = lavoro.key();
if (chiave !="EF" && chiave !="RB" && chiave != "IB")
{
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
const TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
const TString& tipo = oggetto.type();
TRecord_text rec(tipo);
//carico il record da emettere
_trasfile->autoload(rec, *_cur, &tipo);
_trasfile->write(rec);//emetto i dati su file
if (test_record_type(tipo))
{
TRecord_text rec(tipo);
//carico il record da emettere
_trasfile->autoload(rec, *_cur, &tipo);
_trasfile->write(rec);//emetto i dati su file
}
}
}
@ -403,7 +434,7 @@ bool TEmissione::ok_write()
int dim = _trasfile->recordsize();
unsigned long nbyte = (elem*7+2)*dim;
TString16 unita; unita << _msk->get(F_UNITA)[0] << ":/";
const TString& unita = _msk->get(F_PATH);
return xvt_fsys_test_disk_free_space(unita, nbyte) != 0;
}
@ -440,7 +471,7 @@ void TEmissione::aggiorna_dist(TCursor* cur)
}
// gestione emissione su moduli cartacei delle riba
void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
void TEmissione::print_rb(char tipost, int ndist, char tipodist, const bool is_vis)
{
TCursor* fcur = _formrb->cursor();
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
@ -466,30 +497,15 @@ void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, con
}
fcur->setfilter(filter,TRUE);
long n = fcur->items();
fcur->freeze();
// se la stampa non si fa a video istanzia puntatore per la gestione
// della barra di attesa
TProgind* pi = is_vis ? NULL : new TProgind(ncopie,TR("Stampa Effetti..."),FALSE,TRUE);
for (int j=0; j < ncopie; j++)
{
if (pi) pi->addstatus(1L); // aggiorna la barra d'attesa
// ciclo sugli elementi del cursore di stampa
//for (*fcur = 0; fcur->pos() < n; ++(*fcur))
{
_formrb->print(); // stampa il form
}
}
_formrb->print(); // stampa il form
if (tipost == 'D') // se emetto riba in definitiva devo aggiornare
aggiorna_rb(fcur);// data, numero emissione e flag di stampa effetto
if (pi) delete pi;
}
// gestione emissione su moduli cartacei delle distinte
void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
void TEmissione::print_dse(char tipost, int ndist, char tipodist, const bool is_vis)
{
TCursor* fcur = _formdse->cursor();
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti
// della distinta
TString16 filter;
@ -497,36 +513,29 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co
filter = "DISTSTAM=\" \"";// setta il filtro del cursore per ...
fcur->setfilter(filter,TRUE);
fcur->setkey(4);
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ...
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
TRectype darec(LF_EFFETTI); // fissa i dati per la scelta degli ...
// ... effetti nel primo e nell'ultimo record del cursore
if (ndist > 0)
{
darec.put(EFF_NDIST, ndist);
darec.put(EFF_TIPODIST, tipodist);
TRectype arec(darec);
fcur->setregion(darec, arec);
fcur->setregion(darec, darec);
fcur->setfilter("");
}
else
fcur->setfilter("(TIPODIST==\"\")&&(NDIST==\"\")");
long n = fcur->items();
const TRecnotype n = fcur->items();
fcur->freeze();
// se la stampa non si fa a video istanzia puntatore per la gestione
// della barra di attesa
TProgind* pi = is_vis ? NULL : new TProgind(ncopie,TR("Stampa Distinta..."),FALSE,TRUE);
for (int j=0; j < ncopie; j++)
{
_base_page_no = 0;
if (pi) pi->addstatus(1L); // aggiorna la barra d'attesa
_formdse->find_field('F',last_page,2).set(""); // Azzera nr documenti
_formdse->find_field('F',last_page,3).set(""); // Azzera tot documenti
_formdse->print(); // stampa il form
// stampa numero di pagina (solo nella distinta)
_base_page_no = printer().getcurrentpage() -1;
}
_base_page_no = 0;
_formdse->find_field('F',last_page,2).set(""); // Azzera nr documenti
_formdse->find_field('F',last_page,3).set(""); // Azzera tot documenti
_formdse->print(); // stampa il form
// stampa numero di pagina (solo nella distinta)
_base_page_no = printer().getcurrentpage() -1;
if (tipost == 'D') // se emetto distinta in definitiva ...
aggiorna_dist(fcur);// ... devo aggiornare flag di stampa distinta
if (pi) delete pi;
}
void TEmissione::enable_dettaglio(TForm& form) const
@ -549,8 +558,6 @@ void TEmissione::enable_dettaglio(TForm& form) const
// gestione emissione effetti/distinte su moduli cartacei
void TEmissione::print()
{
int ncopie = _msk->get_int(F_NCOPIE);
if (ncopie == 0) ncopie = 1;
printer().open();
// TRUE se si stampa a video
const bool is_vis = printer().printtype() == screenvis;
@ -582,7 +589,7 @@ void TEmissione::print()
nomeform = "rb.frm"; // utilizzo quello generico
_formrb = new TRiba_form(nomeform);
enable_dettaglio(*_formrb);
print_rb(tipost,ndist,tipodist,ncopie,is_vis);
print_rb(tipost,ndist,tipodist,is_vis);
}
else
{
@ -596,24 +603,11 @@ void TEmissione::print()
_formdse = new TDistinta_form(nomeform, _firmrel);
enable_dettaglio(*_formdse);
_formdse->set_order(tipord);
print_dse(tipost,ndist,tipodist,ncopie,is_vis);
print_dse(tipost,ndist,tipodist,is_vis);
}
printer().close();
}
// handler per gestire la conferma dell'annullamento dei dati inseriti
// nella maschera
bool TEmissione::annulla_handler(TMask_field& f, KEY k)
{
TMask &m = f.mask();
if (k == K_SPACE)
{
if (yesno_box(TR("Vuoi veramente annullare i dati inseriti")))
m.reset();
}
return TRUE;
}
// costruttore classe TRiba_form
TRiba_form::TRiba_form(const char* name): TForm()
{
@ -631,7 +625,7 @@ bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
// gestione dei campi relativi all'importo dell'effetto. Setta il valore da
// solo se e' in valuta (cambia anche la picture)
// sintassi: _IMPORTO
TEffetto effetto(cursor()->file().curr());
const TEffetto effetto(cursor()->file().curr());
const bool in_valuta = effetto.in_valuta();
real importo = effetto.importo(in_valuta);
cf.set(importo.string());
@ -643,12 +637,8 @@ bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
TCursor* cur = cursor();
if (cur->curr().get_int(EFF_NDIST) > 0)
{
TRectype & ban = cur->curr(-204);
valore.cut(0);
valore << ban.get("S0");
valore.trim();
ban = cur->curr(-202);
valore << " " << ban.get("S0");
valore = cur->curr(-204).get("S0");
valore << ' ' << cur->curr(-202).get("S0");
valore.trim();
cf.set(valore);
cf.put_paragraph(valore);
@ -774,7 +764,7 @@ TDistinta_form::TDistinta_form(const char* name, TRelation *rel): TForm(), _firm
// setta l'ordinamento del TSordet_cursor del form
void TDistinta_form::set_order(const char tipo)
{
TString ordine;
const char* ordine = "";
// ordinamento secondo la data di scadenza dell'effetto
if (tipo == 'S')
ordine = "DATASCAD|TIPODIST|NDIST|NRIGADIST";
@ -789,7 +779,8 @@ void TDistinta_form::set_order(const char tipo)
// distruttore classe TDistinta_form
TDistinta_form::~TDistinta_form()
{
if (_cursor) delete _cursor;
if (_cursor)
delete _cursor;
}
// gestione dei messaggi estesi nei campi
@ -1015,16 +1006,15 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
if (in=="RAGSOC")
{
const TRectype& ditte = app().firm_rel().curr();
const TString ragsoc = ditte.get("RAGSOC");
const TString& ragsoc = ditte.get("RAGSOC");
in = s.get();
if (in == "0")
{
valore.cut(0);
valore = ragsoc.left(30);
valore.trim();
TString str = ragsoc.right(20);
str.trim();
valore << " " << str;
valore << ' ' << ragsoc.mid(30);
valore.trim();
}
else
{
@ -1048,7 +1038,7 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
// dove: <opzione> è uno delle opzioni seguenti:
// "1" la ragione sociale andrà ad occupare più campi, primo segmento
// "2" la ragione sociale andrà ad occupare più campi, secondo segmento
const bool pick_normal = cur.relation()->lfile(LF_CFVEN).get_int(CFV_CODINDEFF) == 0;
const bool pick_normal = cur.curr(LF_CFVEN).get_int(CFV_CODINDEFF) == 0;
TRectype& clifo_1 = cur.curr(LF_CLIFO);
TRectype& clifo_2 = cur.curr(pick_normal ? LF_CLIFO : LF_INDSP);
@ -1125,13 +1115,8 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
{
// gestione dei campi relativi alla banca d'appoggio dell'effetto
// sintassi: _BANCA
TRectype & ban = cur.curr(-401);
valore.cut(0);
valore << ban.get("S0");
valore.trim();
ban = cur.curr(-402);
valore << " " << ban.get("S0");
valore.trim();
valore = cur.curr(-401).get("S0");
valore << ' ' << cur.curr(-402).get("S0");
}
else if (code == "_FATT")
{
@ -1140,8 +1125,8 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
// dove: <opzione> è uno delle opzioni seguenti:
// "1" i dati della fattura andranno ad occupare più campi, primo segmento
// "2" i dati della fattura andranno ad occupare più campi, secondo segmento
TLocalisamfile &eff = cur.file();
TEffetto effetto = eff.curr();
//TLocalisamfile &eff = cur.file();
TEffetto effetto = cur.curr();
long num = effetto.numero();
TString descfatt;
if (tracciato_setif())
@ -1208,7 +1193,7 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
real importo = cur.curr(LF_EFFETTI).get(EFF_IMPORTO);
if (_codice_moneta == 'E')
importo *= 100.0;
importo *= CENTO;
importo.round(0);
add_tot_importi(importo);
valore = importo.string(13,0);

View File

@ -9,9 +9,7 @@
#define F_NUMBERRIGA 103
#define F_TIPOEMIS 104
#define F_EMIS 105
#define F_UNITA 106
#define F_FOR_OUT 107
#define F_NCOPIE 108
#define F_PATH 106
#define F_TIPORD 109
#define F_TIPOST 110
#define F_DATAEMIS 111

View File

@ -1,4 +1,3 @@
// DEFINIZIONE CAMPI MASCHERA PER LA EMISSIONE DEGLI EFFETTI
#include "ef0500.h"
PAGE "Emissione Effetti e Distinte" -1 -1 76 15
@ -6,7 +5,7 @@ PAGE "Emissione Effetti e Distinte" -1 -1 76 15
RADIOBUTTON F_TIPOEMIS 39
BEGIN
PROMPT 2 0 " "
ITEM "1|Emissione su floppy"
ITEM "1|Emissione su file"
MESSAGE DISABLE,2@|DISABLE,4@|DISABLE,5@
MESSAGE ENABLE,1@|SHOW,F_NOMEFILE
ITEM "2|Emissione su moduli cartacei"
@ -45,7 +44,6 @@ END
NUMBER F_NUMBER 5
BEGIN
PROMPT 43 6 "Numero Distinta "
FLAGS "R"
KEY 4
USE LF_EFFETTI KEY 4 SELECT (NRIGADIST=1)&&((TIPOCF=#F_TIPOCF)||((TIPOCF="")&&(#F_TIPOCF="C")))
INPUT NDIST F_NUMBER
@ -61,6 +59,7 @@ BEGIN
OUTPUT F_TIPODIST TIPODIST
OUTPUT F_NUMBERRIGA NRIGADIST
CHECKTYPE NORMAL
ADD RUN ef0 -2
END
/* CAMPO NASCOSTO CHE SERVE PER LA RICERCA */
@ -72,23 +71,11 @@ BEGIN
FLAGS "D"
END
LIST F_UNITA 9
STRING F_PATH 80 50
BEGIN
PROMPT 2 6 "Unità di output "
ITEM "a|Drive A"
ITEM "b|Drive B"
PROMPT 2 7 "Percorso di output "
GROUP 1
END
LIST F_FOR_OUT 7
BEGIN
PROMPT 43 6 "Formato unità output "
ITEM "1|360 Kb"
ITEM "2|720 Kb"
ITEM "3|1,2 Mb"
ITEM "4|1,44 Mb"
GROUP 1
FLAGS "H"
CHECKTYPE REQUIRED
END
LIST F_EMIS 10
@ -101,14 +88,6 @@ BEGIN
GROUP 2
END
NUMBER F_NCOPIE 3
BEGIN
PROMPT 2 9 "Numero copie "
NUM_EXPR {(#THIS_FIELD >= 0)}
WARNING "Il numero di copie deve essere positivo"
GROUP 2
END
LIST F_TIPORD 14
BEGIN
PROMPT 2 10 "Tipo Ordinamento "
@ -145,17 +124,12 @@ END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -23 -1 ""
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -33 -1 ""
PROMPT -22 -1 ""
END
ENDPAGE

View File

@ -12,6 +12,7 @@ protected:
virtual bool user_create() ;
virtual void init_query_insert_mode(TMask& m) ;
virtual void init_insert_mode(TMask& m) ;
virtual void init_modify_mode(TMask& m) ;
virtual void init_query_mode (TMask&);
public:
@ -54,6 +55,14 @@ void TBnp_table_app::init_insert_mode(TMask& m)
}
}
void TBnp_table_app::init_modify_mode(TMask& m)
{
if (get_tabname() == "BNP")
{
m.efield(F_IBAN_STATO).validate(K_TAB);
}
}
void TBnp_table_app::init_query_mode(TMask& m)
{
TTable_application::init_query_mode(m);

View File

@ -569,21 +569,34 @@ void TPE_mask::save_rate()
key.add(row->get(sheet.cid2index(F_RATA)));
const TRectype& scad = cache().get(LF_SCADENZE, key);
TString16 abi = scad.get(SCAD_CODABI);
TString16 cab = scad.get(SCAD_CODCAB);
TString8 abi = scad.get(SCAD_CODABI);
TString8 cab = scad.get(SCAD_CODCAB);
key = get(F_TIPOCF);
key.add(row->get(sheet.cid2index(F_CODCF)));
const TRectype& clifo = cache().get(LF_CLIFO, key);
TString80 iban = clifo.get(CLI_IBAN);
if (atol(cab) == 0L)
{
key = get(F_TIPOCF);
key.add(row->get(sheet.cid2index(F_CODCF)));
const TRectype& clifo = cache().get(LF_CLIFO, key);
abi = clifo.get(CLI_CODABI);
cab = clifo.get(CLI_CODCAB);
}
else
{
if (iban.starts_with("IT"))
{
TString16 abicab; abicab << abi << cab;
if (iban.mid(5, 10) != abicab)
iban.cut(0);
}
}
TEffetto& eff = distinta[rigadist-1];
eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD));
eff.put(EFF_CODABI, abi);
eff.put(EFF_CODCAB, cab);
eff.put(EFF_IBAN, iban);
}
TEffetto& eff = distinta[rigadist-1];
@ -702,9 +715,9 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
{
case se_query_add:
{
TOperable_field& baggio = (TOperable_field&)field(F_AGGIORNA);
if (baggio.active())
on_field_event(baggio, fe_button, 0);
TOperable_field& ronaldo = (TOperable_field&)field(F_AGGIORNA);
if (ronaldo.active())
on_field_event(ronaldo, fe_button, 0);
}
return FALSE;
case se_notify_modify:

View File

@ -1,3 +1,3 @@
31
0
$effetti|3|6|181|34|Effetti|NEFF||
$effetti|3|6|215|34|Effetti|NEFF||

View File

@ -1,5 +1,5 @@
31
31
32
NPROGTR|3|7|0|Numero progressivo effetto
DATASCAD|5|8|0|Data di scadenza
TIPOPAG|2|1|0|Tipo pagamento
@ -31,6 +31,7 @@ DISRIBAEST|8|1|0|Distinta RIBA estratta
IMPORTO|4|18|3|Importo effetto
IMPORTOVAL|4|18|3|Importo effetto in valuta
SPESE|4|18|3|Spese bancarie distinta
IBAN|1|34|0|Codice IBAN di appoggio
4
NPROGTR|
CODCF+NPROGTR|

View File

@ -93,13 +93,11 @@ POSITION(7)=113
LENGTH(7)=1
MESSAGE(7) = _CODMON
NAME(8)=FILLER
TYPE(8)=FISSO
POSITION(8)=114
LENGTH(8)=6
[RECORD 14]
NAME(0) = CAMPO BLANK
TYPE(0) = FISSO
@ -207,6 +205,52 @@ POSITION(19) = 119
LENGTH(19) = 1
MESSAGE(19) = _CODMON
[RECORD 16]
NAME(0) = CAMPO BLANK
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = TIPO RECORD
POSITION(1) = 1
LENGTH(1) = 2
MESSAGE(1) = _FISSO,!16
NAME(2) = NUMERO PROGRESSIVO RIBA
TYPE(2) = NUMERO
POSITION(2) = 3
LENGTH(2) = 7
MESSAGE(2) = _NRIBA,!NUM
NAME(3) = Codice IBAN
TYPE(3) = STRINGA
POSITION(3) = 10
LENGTH(3) = 34
FIELD(3) = 403@->S3
[RECORD 17]
NAME(0) = CAMPO BLANK
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = TIPO RECORD
POSITION(1) = 1
LENGTH(1) = 2
MESSAGE(1) = _FISSO,!17
NAME(2) = NUMERO PROGRESSIVO RIBA
TYPE(2) = NUMERO
POSITION(2) = 3
LENGTH(2) = 7
MESSAGE(2) = _NRIBA,!NUM
NAME(3) = Codice IBAN
TYPE(3) = STRINGA
POSITION(3) = 10
LENGTH(3) = 34
FIELD(3) = 31->IBAN
[RECORD 20]
NAME(0)=CAMPO BLANK
TYPE(0)=FISSO