Gestiono tracciato CBI "arricchito"
git-svn-id: svn://10.65.10.50/branches/R_10_00@23003 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
dc46bc0acc
commit
7877d04c64
@ -6,11 +6,9 @@ int main(int argc, char** argv)
|
|||||||
const char op = argc < 2 ? '0' : argv[1][1];
|
const char op = argc < 2 ? '0' : argv[1][1];
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
case '1':
|
case '1':
|
||||||
ef0200(argc,argv);// GENERAZIONE EFFETTI DA E/C (OBSOLETO NON USARE PIU")
|
ef0200(argc,argv);// Tabella Mandati
|
||||||
break;
|
break;
|
||||||
*/
|
|
||||||
case '2':
|
case '2':
|
||||||
ef0300(argc,argv);// AGGIORNAMENTO DISTINTE (DISTINTE DI PRESENTAZIONE)
|
ef0300(argc,argv);// AGGIORNAMENTO DISTINTE (DISTINTE DI PRESENTAZIONE)
|
||||||
break;
|
break;
|
||||||
|
@ -25,14 +25,17 @@ protected:
|
|||||||
virtual void init_insert_mode(TMask&);
|
virtual void init_insert_mode(TMask&);
|
||||||
virtual bool get_next_key(TToken_string& key);
|
virtual bool get_next_key(TToken_string& key);
|
||||||
virtual void init_modify_mode(TMask&);
|
virtual void init_modify_mode(TMask&);
|
||||||
|
|
||||||
static bool clifo_handler(TMask_field& f, KEY k);
|
static bool clifo_handler(TMask_field& f, KEY k);
|
||||||
static bool datascad_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 handle_sheet(TMask_field& f, KEY);
|
||||||
static bool cambio_handler(TMask_field& f, KEY k);
|
static bool cambio_handler(TMask_field& f, KEY k);
|
||||||
static bool codval_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 contab_handler(TMask_field& f, KEY k);
|
||||||
static bool fatt_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);
|
static bool impeff_notify(TSheet_field& s, int r, KEY key);
|
||||||
|
|
||||||
TSheet_field& cess_sheet() const;
|
TSheet_field& cess_sheet() const;
|
||||||
TSheet_field& righe_sheet() const;
|
TSheet_field& righe_sheet() const;
|
||||||
void common_f(const TMask& m);
|
void common_f(const TMask& m);
|
||||||
@ -44,7 +47,7 @@ protected:
|
|||||||
bool user_create();
|
bool user_create();
|
||||||
bool user_destroy();
|
bool user_destroy();
|
||||||
virtual TMask* get_mask(int mode) {return _msk;}
|
virtual TMask* get_mask(int mode) {return _msk;}
|
||||||
virtual bool changing_mask(int mode) {return FALSE;}
|
virtual bool changing_mask(int mode) {return false;}
|
||||||
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
virtual void ini2mask(TConfig& ini, TMask& m, bool query);
|
||||||
|
|
||||||
|
|
||||||
@ -117,7 +120,7 @@ bool TVariazione_effetti::get_next_key(TToken_string& key)
|
|||||||
nprogtr += effetti.get_long(EFF_NPROGTR);
|
nprogtr += effetti.get_long(EFF_NPROGTR);
|
||||||
}
|
}
|
||||||
key.format("%d|%ld",F_NPROGTR,nprogtr);
|
key.format("%d|%ld",F_NPROGTR,nprogtr);
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna un riferimento allo sheet dei cessionari
|
// ritorna un riferimento allo sheet dei cessionari
|
||||||
@ -150,7 +153,7 @@ void TVariazione_effetti::common_f(const TMask& m)
|
|||||||
{
|
{
|
||||||
TToken_string& row = shcess.row(i);
|
TToken_string& row = shcess.row(i);
|
||||||
if ( row.items()== 0 ) continue; // salta le righe vuote
|
if ( row.items()== 0 ) continue; // salta le righe vuote
|
||||||
TRectype& rec = _effetto->row_c(ii, TRUE);
|
TRectype& rec = _effetto->row_c(ii, true);
|
||||||
row.restart();
|
row.restart();
|
||||||
rec.zero();
|
rec.zero();
|
||||||
rec.put(CES_NPROGTR, nprogtr);
|
rec.put(CES_NPROGTR, nprogtr);
|
||||||
@ -171,7 +174,7 @@ void TVariazione_effetti::common_f(const TMask& m)
|
|||||||
real imp_eff(row.get(shrighe.cid2index(F_IMPEFF)));
|
real imp_eff(row.get(shrighe.cid2index(F_IMPEFF)));
|
||||||
if (imp_eff == 0.0) continue; // salta le righe con importo nullo
|
if (imp_eff == 0.0) continue; // salta le righe con importo nullo
|
||||||
row.restart();
|
row.restart();
|
||||||
TRectype& rec = _effetto->row_r(ii, TRUE);
|
TRectype& rec = _effetto->row_r(ii, true);
|
||||||
rec.zero();
|
rec.zero();
|
||||||
rec.put(REFF_NPROGTR, nprogtr);
|
rec.put(REFF_NPROGTR, nprogtr);
|
||||||
rec.put(REFF_NRIGATR, ii);
|
rec.put(REFF_NRIGATR, ii);
|
||||||
@ -301,16 +304,19 @@ bool TVariazione_effetti::user_create()
|
|||||||
_rel = new TRelation(LF_EFFETTI);
|
_rel = new TRelation(LF_EFFETTI);
|
||||||
_effetto = new TEffetto;
|
_effetto = new TEffetto;
|
||||||
_msk = new TMask("ef0100a") ;
|
_msk = new TMask("ef0100a") ;
|
||||||
|
|
||||||
_msk->set_handler(F_CODCF, clifo_handler);
|
_msk->set_handler(F_CODCF, clifo_handler);
|
||||||
_msk->set_handler(F_DATASCAD, datascad_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_CODVAL, codval_handler);
|
||||||
_msk->set_handler(F_CAMBIO, cambio_handler);
|
_msk->set_handler(F_CAMBIO, cambio_handler);
|
||||||
_msk->set_handler(F_EFFCONT, contab_handler);
|
_msk->set_handler(F_EFFCONT, contab_handler);
|
||||||
_msk->set_handler(F_SHEET_RIGHE, handle_sheet);
|
_msk->set_handler(F_SHEET_RIGHE, handle_sheet);
|
||||||
righe_sheet().set_append(TRUE);
|
|
||||||
|
righe_sheet().set_append(true);
|
||||||
righe_sheet().set_notify(impeff_notify);
|
righe_sheet().set_notify(impeff_notify);
|
||||||
_msk->sfield(F_SHEET_RIGHE).sheet_mask().set_handler(F_NUMFATT, fatt_handler);
|
_msk->sfield(F_SHEET_RIGHE).sheet_mask().set_handler(F_NUMFATT, fatt_handler);
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// distrugge la relap
|
// distrugge la relap
|
||||||
@ -319,7 +325,7 @@ bool TVariazione_effetti::user_destroy()
|
|||||||
delete _msk;
|
delete _msk;
|
||||||
delete _effetto;
|
delete _effetto;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler che permette di effettuare il controllo sul fatto
|
// handler che permette di effettuare il controllo sul fatto
|
||||||
@ -333,23 +339,23 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
|||||||
{ // si controllano le righe del effetto nello sheet
|
{ // si controllano le righe del effetto nello sheet
|
||||||
TSheet_field& sf = m.sfield(F_SHEET_RIGHE);
|
TSheet_field& sf = m.sfield(F_SHEET_RIGHE);
|
||||||
int items = sf.items();
|
int items = sf.items();
|
||||||
bool found = FALSE;
|
bool found = false;
|
||||||
for (int i = 0; i < items && !found; i++)// scandisco tutte le righe dello sheet
|
for (int i = 0; i < items && !found; i++)// scandisco tutte le righe dello sheet
|
||||||
{
|
{
|
||||||
TToken_string& row = sf.row(i);
|
TToken_string& row = sf.row(i);
|
||||||
real imp_eff(row.get(sf.cid2index(F_IMPEFF)));
|
real imp_eff(row.get(sf.cid2index(F_IMPEFF)));
|
||||||
// controlla che le righe abbiano un importo
|
// controlla che le righe abbiano un importo
|
||||||
if (imp_eff != 0.0) found = TRUE;
|
if (imp_eff != 0.0) found = true;
|
||||||
}
|
}
|
||||||
// se non ha trovato righe nello sheet oppure se quelle che ci sono non
|
// se non ha trovato righe nello sheet oppure se quelle che ci sono non
|
||||||
// hanno importo
|
// hanno importo
|
||||||
if (!found)
|
if (!found)
|
||||||
{ // non permetto di salvare l'effetto
|
{ // non permetto di salvare l'effetto
|
||||||
error_box(TR("L'effetto non può contenere righe con importo nullo!"));
|
error_box(TR("L'effetto non può contenere righe con importo nullo!"));
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k)
|
bool TVariazione_effetti::clifo_handler(TMask_field& f, KEY k)
|
||||||
@ -389,14 +395,29 @@ bool TVariazione_effetti::datascad_handler(TMask_field& f, KEY k)
|
|||||||
return f.error_box(FR("La data fattura della riga %d è successiva alla data di scadenza"), r+1);
|
return f.error_box(FR("La data fattura della riga %d è successiva alla data di scadenza"), r+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
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
|
// handler che permette il controllo sulla abilitazione dei campi collegati
|
||||||
// al codice valuta
|
// al codice valuta
|
||||||
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if (f.to_check(k, TRUE))
|
if (f.to_check(k, true))
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
const TString& val = f.get();
|
const TString& val = f.get();
|
||||||
@ -419,14 +440,14 @@ bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
|||||||
if (f.focusdirty())
|
if (f.focusdirty())
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler che gestisce la modifica del cambio
|
// handler che gestisce la modifica del cambio
|
||||||
bool TVariazione_effetti::cambio_handler(TMask_field& f, KEY k)
|
bool TVariazione_effetti::cambio_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
TMask &m = f.mask();
|
TMask &m = f.mask();
|
||||||
//if (k == K_TAB && f.to_check(k, TRUE))
|
//if (k == K_TAB && f.to_check(k, true))
|
||||||
if (k == K_TAB && f.focusdirty())
|
if (k == K_TAB && f.focusdirty())
|
||||||
{
|
{
|
||||||
const real cambio = f.get();
|
const real cambio = f.get();
|
||||||
@ -447,7 +468,7 @@ bool TVariazione_effetti::cambio_handler(TMask_field& f, KEY k)
|
|||||||
if (f.focusdirty())
|
if (f.focusdirty())
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler che permette il controllo sulla abilitazione dei campi collegati
|
// handler che permette il controllo sulla abilitazione dei campi collegati
|
||||||
@ -488,7 +509,7 @@ bool TVariazione_effetti::fatt_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVariazione_effetti::contab_handler(TMask_field& f, KEY k)
|
bool TVariazione_effetti::contab_handler(TMask_field& f, KEY k)
|
||||||
@ -502,7 +523,7 @@ bool TVariazione_effetti::contab_handler(TMask_field& f, KEY k)
|
|||||||
sf.enable_column(F_NUMPART, da_contab);
|
sf.enable_column(F_NUMPART, da_contab);
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli
|
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli
|
||||||
@ -531,14 +552,14 @@ void TVariazione_effetti::calcola_totali()
|
|||||||
// vengano eliminate tutte le righe dell'effetto, almeno una deve rimanere
|
// vengano eliminate tutte le righe dell'effetto, almeno una deve rimanere
|
||||||
bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
||||||
{
|
{
|
||||||
if (s.to_check(key, TRUE))
|
if (s.to_check(key, true))
|
||||||
{
|
{
|
||||||
calcola_totali();
|
calcola_totali();
|
||||||
}
|
}
|
||||||
//se rimane una sola riga nello sheet non la si può cancellare
|
//se rimane una sola riga nello sheet non la si può cancellare
|
||||||
if (key == K_DEL && s.items() == 1)
|
if (key == K_DEL && s.items() == 1)
|
||||||
return s.error_box(TR("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!"));
|
return s.error_box(TR("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!"));
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ef0100(int argc, char* argv[])
|
int ef0100(int argc, char* argv[])
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#define F_DCIG 237
|
#define F_DCIG 237
|
||||||
#define F_CONTSEP 238
|
#define F_CONTSEP 238
|
||||||
#define F_DESCONTSEP 239
|
#define F_DESCONTSEP 239
|
||||||
|
#define F_MANDATO 240
|
||||||
|
|
||||||
#define F_IBAN 250
|
#define F_IBAN 250
|
||||||
#define F_IBAN_STATO 251
|
#define F_IBAN_STATO 251
|
||||||
|
@ -6,14 +6,14 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Testata/Righe" 0 2 0 0
|
PAGE "Testata/Righe" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 6
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 0 ""
|
PROMPT 0 0 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOCF 10
|
LIST F_TIPOCF 1 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Tipo effetto "
|
PROMPT 1 1 "Effetto "
|
||||||
ITEM "C|Attivo"
|
ITEM "C|Attivo"
|
||||||
MESSAGE SHOW,8@|HIDE,9@
|
MESSAGE SHOW,8@|HIDE,9@
|
||||||
ITEM "F|Passivo"
|
ITEM "F|Passivo"
|
||||||
@ -23,7 +23,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_NPROGTR 7
|
NUMBER F_NPROGTR 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Numero "
|
PROMPT 30 1 "Numero "
|
||||||
FIELD NPROGTR
|
FIELD NPROGTR
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_EFFETTI SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
|
USE LF_EFFETTI SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF))
|
||||||
@ -44,19 +44,19 @@ END
|
|||||||
|
|
||||||
TEXT DLG_NULL
|
TEXT DLG_NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Cliente"
|
PROMPT 1 2 "Cliente"
|
||||||
GROUP 8
|
GROUP 8
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT DLG_NULL
|
TEXT DLG_NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Fornitore"
|
PROMPT 1 2 "Fornitore"
|
||||||
GROUP 9
|
GROUP 9
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCF 6
|
NUMBER F_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 15 3 ""
|
PROMPT 10 2 ""
|
||||||
FIELD CODCF
|
FIELD CODCF
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
@ -74,7 +74,7 @@ END
|
|||||||
|
|
||||||
STRING F_CFRAGSOC 50
|
STRING F_CFRAGSOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 3 ""
|
PROMPT 23 2 ""
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO KEY 2
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
INPUT RAGSOC F_CFRAGSOC
|
INPUT RAGSOC F_CFRAGSOC
|
||||||
@ -88,7 +88,7 @@ END
|
|||||||
|
|
||||||
DATE F_DATASCAD
|
DATE F_DATASCAD
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Data scadenza "
|
PROMPT 1 3 "Scadenza "
|
||||||
FIELD DATASCAD
|
FIELD DATASCAD
|
||||||
KEY 3
|
KEY 3
|
||||||
USE LF_EFFETTI KEY 3 SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF, #F_CODCF, #F_CODCF))
|
USE LF_EFFETTI KEY 3 SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF, #F_CODCF, #F_CODCF))
|
||||||
@ -109,21 +109,29 @@ END
|
|||||||
|
|
||||||
LIST F_TIPOPAG 24
|
LIST F_TIPOPAG 24
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "Tipo pagamento "
|
PROMPT 1 5 "Tipo pagamento "
|
||||||
FIELD TIPOPAG
|
FIELD TIPOPAG
|
||||||
ITEM "2|Tratta"
|
ITEM "2|Tratta"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "3|Ricevuta Bancaria"
|
ITEM "3|Ricevuta Bancaria"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "4|Cessione"
|
ITEM "4|Cessione"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "5|Paghero'"
|
ITEM "5|Paghero'"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "6|Lettera di credito"
|
ITEM "6|Lettera di credito"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "7|Tratta accettata"
|
ITEM "7|Tratta accettata"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
ITEM "8|Rapporti interb. diretti"
|
ITEM "8|Rapporti interb. diretti"
|
||||||
|
MESSAGE ENABLE,F_MANDATO
|
||||||
ITEM "9|Bonifico"
|
ITEM "9|Bonifico"
|
||||||
|
MESSAGE DISABLE,F_MANDATO
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_ULTCLASS 1
|
STRING F_ULTCLASS 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 6 "Ulteriore classificazione "
|
PROMPT 46 5 "Ulteriore classificazione "
|
||||||
FIELD ULTCLASS
|
FIELD ULTCLASS
|
||||||
USE %CLR
|
USE %CLR
|
||||||
INPUT CODTAB[1,1] F_TIPOPAG SELECT
|
INPUT CODTAB[1,1] F_TIPOPAG SELECT
|
||||||
@ -133,6 +141,22 @@ BEGIN
|
|||||||
OUTPUT F_ULTCLASS CODTAB[2,2]
|
OUTPUT F_ULTCLASS CODTAB[2,2]
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_MANDATO 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "Mandato R.I.D. "
|
||||||
|
USE &EFMAN SELECT I0=#F_CODCF
|
||||||
|
INPUT CODTAB F_MANDATO
|
||||||
|
DISPLAY "Codice@35" CODTAB
|
||||||
|
DISPLAY "Data@10" D0
|
||||||
|
DISPLAY "IBAN@34" S1
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_MANDATO CODTAB
|
||||||
|
OUTPUT F_IBAN S1
|
||||||
|
CHECTYPE REQUIRED
|
||||||
|
FIELD MANDATO
|
||||||
|
ADD RUN ef0 -1 &EFMAN
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_CODVAL 3
|
STRING F_CODVAL 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Codice valuta "
|
PROMPT 1 7 "Codice valuta "
|
||||||
|
249
ef/ef0200.cpp
249
ef/ef0200.cpp
@ -1,254 +1,13 @@
|
|||||||
#include <applicat.h>
|
#include <modtbapp.h>
|
||||||
#include <sheet.h>
|
|
||||||
#include <msksheet.h>
|
|
||||||
|
|
||||||
#include "ef0.h"
|
class TMandati_app : public TTable_module_application
|
||||||
#include "ef0200.h"
|
|
||||||
|
|
||||||
#include <clifo.h>
|
|
||||||
#include <effetti.h>
|
|
||||||
|
|
||||||
class Creazione_Effetti_da_EC : public TSkeleton_application
|
|
||||||
{
|
{
|
||||||
TMask * _msk;
|
|
||||||
TArray_sheet * _Partite_aperte;
|
|
||||||
real _residuo;
|
|
||||||
|
|
||||||
void Load_Partite_Aperte(const long cli);
|
|
||||||
static bool Gen_Handler(TMask_field& f, KEY k);
|
|
||||||
static bool Gen_Notify(TSheet_field& sheet, int r, KEY k);
|
|
||||||
static bool Cli_Handler(TMask_field& f, KEY k);
|
|
||||||
virtual bool create();
|
|
||||||
virtual bool destroy();
|
|
||||||
virtual void main_loop();
|
|
||||||
public:
|
public:
|
||||||
real get_res() {return _residuo;}
|
|
||||||
void set_res(const real& a) {_residuo = a;}
|
|
||||||
TMask* get_msk() {return _msk;}
|
|
||||||
Creazione_Effetti_da_EC() : _residuo(0.0) {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
inline Creazione_Effetti_da_EC& app() {return (Creazione_Effetti_da_EC&)main_app();}
|
|
||||||
|
|
||||||
void Creazione_Effetti_da_EC::Load_Partite_Aperte(const long cli)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
Caricamento partite aperte da E.C.
|
|
||||||
|
|
||||||
Questo che segue e' pseudo-codice; andra' verificato non appena
|
|
||||||
sara' completato lo scadenziario.
|
|
||||||
|
|
||||||
TLocalisamfile Ec(LF_........);
|
|
||||||
|
|
||||||
* Carica tutte le partite aperte del cliente *
|
|
||||||
|
|
||||||
Ec.zero();
|
|
||||||
Ec.put(EC_CODCLI,cli);
|
|
||||||
Ec.read();
|
|
||||||
|
|
||||||
Finche' si tratta dello stesso cliente...
|
|
||||||
|
|
||||||
while (Ec.good() && Ec.get_long(EC_CODCLI) == cli)
|
|
||||||
{
|
|
||||||
|
|
||||||
Controlla se la partita esaminata e' aperta...
|
|
||||||
|
|
||||||
if (Ec.get(EC_APERTA))
|
|
||||||
{
|
|
||||||
Con questo le carica tutte nello sheet...
|
|
||||||
|
|
||||||
TToken_string riga(80);
|
|
||||||
riga.cut(0);
|
|
||||||
riga.add(Ec.get(EC_ANNO));
|
|
||||||
riga.add(Ec.get(EC_NUMERO));
|
|
||||||
riga.add(Ec.get(EC_DATADOC));
|
|
||||||
riga.add(Ec.get(EC_SALDO));
|
|
||||||
_Partite_aperte->add(riga);
|
|
||||||
}
|
|
||||||
|
|
||||||
Legge il prossimo record
|
|
||||||
|
|
||||||
Ec.next()
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
TToken_string riga(80);
|
|
||||||
riga.cut(0);
|
|
||||||
riga.add("");
|
|
||||||
riga.add("1994");
|
|
||||||
riga.add("1");
|
|
||||||
riga.add("10-11-94");
|
|
||||||
riga.add("19000000");
|
|
||||||
_Partite_aperte->add(riga);
|
|
||||||
riga.cut(0);
|
|
||||||
riga.add("");
|
|
||||||
riga.add("1994");
|
|
||||||
riga.add("2");
|
|
||||||
riga.add("11-11-94");
|
|
||||||
riga.add("18000000");
|
|
||||||
_Partite_aperte->add(riga);
|
|
||||||
riga.cut(0);
|
|
||||||
riga.add("");
|
|
||||||
riga.add("1994");
|
|
||||||
riga.add("3");
|
|
||||||
riga.add("16-11-94");
|
|
||||||
riga.add("23009000");
|
|
||||||
_Partite_aperte->add(riga);
|
|
||||||
riga.cut(0);
|
|
||||||
riga.add("");
|
|
||||||
riga.add("1994");
|
|
||||||
riga.add("4");
|
|
||||||
riga.add("19-11-94");
|
|
||||||
riga.add("450600");
|
|
||||||
_Partite_aperte->add(riga);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Creazione_Effetti_da_EC::Gen_Handler(TMask_field& f, KEY k)
|
|
||||||
{
|
|
||||||
if (k == K_TAB && f.focusdirty())
|
|
||||||
{
|
|
||||||
TMask& m = f.mask();
|
|
||||||
real importo = m.get(F_RATA);
|
|
||||||
importo += m.get_real(F_SPESE);
|
|
||||||
importo += m.get_real(F_BOLLI);
|
|
||||||
m.set(F_IMPEFF, importo);
|
|
||||||
f.set_focusdirty(FALSE);
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Creazione_Effetti_da_EC::Gen_Notify(TSheet_field& sheet, int r, KEY k)
|
|
||||||
{
|
|
||||||
if (k == K_CTRL + K_DEL)
|
|
||||||
return TRUE;
|
|
||||||
if (k == K_INS)
|
|
||||||
{
|
|
||||||
if (app().get_res().is_zero())
|
|
||||||
{
|
|
||||||
warning_box(TR("Residuo da ripartire gia' annullato"));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
TToken_string & row = sheet.row(r);
|
|
||||||
const real importo(row.get(1));
|
|
||||||
static real old_rata;
|
|
||||||
|
|
||||||
switch (k)
|
|
||||||
{
|
|
||||||
case K_SPACE:
|
|
||||||
old_rata = importo;
|
|
||||||
break;
|
|
||||||
case K_DEL:
|
|
||||||
{
|
|
||||||
const real new_res = app().get_res() + importo;
|
|
||||||
|
|
||||||
app().set_res(new_res);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case K_ENTER:
|
|
||||||
{
|
|
||||||
const real new_res = app().get_res() - importo + old_rata;
|
|
||||||
if (new_res < ZERO)
|
|
||||||
{
|
|
||||||
warning_box(TR("Non e' possibile superare l'importo da ripartire"));
|
|
||||||
if (old_rata.is_zero())
|
|
||||||
{
|
|
||||||
row.add(app().get_res().string(),1);
|
|
||||||
app().set_res(ZERO);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
row.add(old_rata.string(),1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
app().set_res(new_res);
|
|
||||||
real totale = importo;
|
|
||||||
totale+= real(row.get(2));
|
|
||||||
totale+= real(row.get(3));
|
|
||||||
row.add(totale.string(),4);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
sheet.mask().set(F_RESIDUO,app().get_res());
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Creazione_Effetti_da_EC::Cli_Handler(TMask_field&f, KEY k)
|
|
||||||
{
|
|
||||||
if (f.focusdirty())
|
|
||||||
{
|
|
||||||
TSheet_field& sheet =(TSheet_field&)f.mask().field(F_SHEET_EFF);
|
|
||||||
sheet.reset();
|
|
||||||
sheet.force_update();
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Creazione_Effetti_da_EC::create()
|
|
||||||
{
|
|
||||||
_msk = new TMask("ef0200a");
|
|
||||||
TSheet_field& sheet = _msk->sfield(F_SHEET_EFF);
|
|
||||||
sheet.set_notify(Gen_Notify);
|
|
||||||
sheet.enable_column(4,FALSE);
|
|
||||||
TMask& mask= sheet.sheet_mask();
|
|
||||||
mask.set_handler(F_RATA,Gen_Handler);
|
|
||||||
mask.set_handler(F_SPESE,Gen_Handler);
|
|
||||||
mask.set_handler(F_BOLLI,Gen_Handler);
|
|
||||||
_msk->set_handler(F_CODCF,Cli_Handler);
|
|
||||||
|
|
||||||
return TSkeleton_application::create();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Creazione_Effetti_da_EC::destroy()
|
|
||||||
{
|
|
||||||
if (_msk != NULL) delete _msk;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Creazione_Effetti_da_EC::main_loop()
|
|
||||||
{
|
|
||||||
KEY tasto;
|
|
||||||
|
|
||||||
do {
|
|
||||||
tasto=get_msk()->run();
|
|
||||||
switch (tasto)
|
|
||||||
{
|
|
||||||
case K_ENTER: // first check if the application can write effects
|
|
||||||
{
|
|
||||||
TSheet_field& sheet =(TSheet_field&)get_msk()->field(F_SHEET_EFF);
|
|
||||||
if (!_residuo && sheet.items()>0)
|
|
||||||
message_box(TR("Perform writing procedure..."));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case K_F6: //Selects opened counts from E.C.
|
|
||||||
{
|
|
||||||
_Partite_aperte = new TArray_sheet(-1,1,0,-1,TR("Selezione partite aperte"),"@1|Anno|Numero|Data documento|Saldo@15", 0, 1);
|
|
||||||
Load_Partite_Aperte(get_msk()->get_long(F_CODCF));
|
|
||||||
if (_Partite_aperte->run() == K_ENTER)
|
|
||||||
{
|
|
||||||
_residuo = ZERO;
|
|
||||||
for (int i = 0; i < _Partite_aperte->items(); i++)
|
|
||||||
if (_Partite_aperte->checked(i))
|
|
||||||
_residuo += real(_Partite_aperte->row(i).get(4));
|
|
||||||
get_msk()->set(F_RESIDUO,_residuo);
|
|
||||||
TSheet_field& sheet = (TSheet_field&)get_msk()->field(F_SHEET_EFF);
|
|
||||||
sheet.reset();
|
|
||||||
}
|
|
||||||
delete _Partite_aperte;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (tasto!=K_QUIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ef0200(int argc, char* argv[])
|
int ef0200(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
Creazione_Effetti_da_EC a ;
|
TMandati_app a;
|
||||||
a.run(argc, argv, TR("Creazione effetti da E.C."));
|
a.run(argc, argv, TR("Tabelle modulo Effetti"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
20
ef/ef0200.h
20
ef/ef0200.h
@ -8,24 +8,8 @@
|
|||||||
#define F_INDIRIZZO 103
|
#define F_INDIRIZZO 103
|
||||||
#define F_COMUNE 104
|
#define F_COMUNE 104
|
||||||
#define F_PROV 105
|
#define F_PROV 105
|
||||||
#define F_CODABI 106
|
|
||||||
#define F_CODCAB 107
|
|
||||||
#define F_TIPOEFF 108
|
|
||||||
#define F_ADDEBITO 109
|
|
||||||
#define F_ADDSPINC 110
|
|
||||||
#define F_ADDBOLLITR 111
|
|
||||||
#define F_ADDBOLLIRB 112
|
|
||||||
#define F_ADDBNS1500 113
|
|
||||||
#define F_RESIDUO 114
|
|
||||||
#define F_SHEET_EFF 115
|
|
||||||
|
|
||||||
#define DLG_PARTITE 201
|
#define F_MANDATO 110
|
||||||
|
#define F_DESCR 111
|
||||||
// campi per maschera ef0200b
|
|
||||||
#define F_DATASCAD 101
|
|
||||||
#define F_RATA 102
|
|
||||||
#define F_SPESE 103
|
|
||||||
#define F_BOLLI 104
|
|
||||||
#define F_IMPEFF 105
|
|
||||||
|
|
||||||
#endif // __EF0200_H
|
#endif // __EF0200_H
|
||||||
|
144
ef/ef0200a.uml
144
ef/ef0200a.uml
@ -1,18 +1,22 @@
|
|||||||
#include "ef0200.h"
|
#include "ef0200.h"
|
||||||
|
|
||||||
PAGE "Selezione dati" -1 -1 78 19
|
TOOLBAR "" 0 0 0 2
|
||||||
|
#include <relapbar.h>
|
||||||
|
END{AGE
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 5
|
PAGE "Mandati" 0 2 0 0
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "Dati clienti"
|
PROMPT 1 1 "@bCliente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCF 6
|
NUMBER F_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Cliente "
|
PROMPT 2 2 "Codice "
|
||||||
USE LF_CLIFO KEY 1
|
USE LF_CLIFO
|
||||||
JOIN LF_CFVEN TO LF_CLIFO KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
JOIN LF_CFVEN TO LF_CLIFO INTO CODCF=CODCF TIPOCF="C"
|
||||||
JOIN LF_COMUNI TO LF_CLIFO KEY 1 INTO STATO=STATOCF COM=COMCF
|
JOIN LF_COMUNI TO LF_CLIFO INTO STATO=STATOCF COM=COMCF
|
||||||
INPUT TIPOCF "C"
|
INPUT TIPOCF "C"
|
||||||
INPUT CODCF F_CODCF
|
INPUT CODCF F_CODCF
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
@ -36,7 +40,7 @@ END
|
|||||||
|
|
||||||
STRING F_RAGSOC 50
|
STRING F_RAGSOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 22 1 ""
|
PROMPT 22 2 ""
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO KEY 2
|
||||||
JOIN LF_CFVEN TO LF_CLIFO KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
JOIN LF_CFVEN TO LF_CLIFO KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
||||||
JOIN LF_COMUNI TO LF_CLIFO KEY 1 INTO STATO=STATOCF COM=COMCF
|
JOIN LF_COMUNI TO LF_CLIFO KEY 1 INTO STATO=STATOCF COM=COMCF
|
||||||
@ -51,119 +55,61 @@ END
|
|||||||
|
|
||||||
STRING F_INDIRIZZO 35
|
STRING F_INDIRIZZO 35
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Indirizzo "
|
PROMPT 2 3 "Indirizzo "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_COMUNE 50
|
STRING F_COMUNE 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 3 "Comune "
|
PROMPT 2 4 "Comune "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_PROV 2
|
STRING F_PROV 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 70 3 ""
|
PROMPT 70 4 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODABI 5
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Banca d'appoggio "
|
PROMPT 1 6 "@bMandato"
|
||||||
FLAGS "RZ"
|
|
||||||
USE %BAN KEY 1 SELECT CODTAB ?="?????"
|
|
||||||
INPUT CODTAB F_CODABI
|
|
||||||
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]
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
HELP "Inserire il codice della banca d'appoggio"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCAB 5
|
STRING F_MANDATO 35
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 32 5 ""
|
STRING 2 7 "Codice "
|
||||||
FLAGS "RZ"
|
USE &EFMAN SELECT (#F_CLIFO=0)||(#F_CLIFO=I0)
|
||||||
USE %BAN
|
JOIN LF_CLIFO INTO TIPOCF="C" CODCF=I0
|
||||||
INPUT CODTAB[1,5] F_CODABI
|
INPUT CODTAB F_MANDATO
|
||||||
INPUT CODTAB[6,10] F_CODCAB
|
DISPLAY "Codice@35" CODTAB
|
||||||
COPY DISPLAY F_CODABI
|
DISPLAY "Descrizione@50" S0
|
||||||
COPY OUTPUT F_CODABI
|
DISPLAY "Cliente" I0
|
||||||
CHECKTYPE NORMAL
|
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||||
|
OUTPUT F_MANDATO CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD CODTAB
|
||||||
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOEFF 18
|
STRING F_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 43 5 "Tipo effetto "
|
STRING 2 8 "Descrizione "
|
||||||
ITEM "2|Tratta"
|
USE &EFMAN KEY 2 SELECT (#F_CLIFO=0)||(#F_CLIFO=I0)
|
||||||
ITEM "3|Ricevuta bancaria"
|
JOIN LF_CLIFO INTO TIPOCF="C" CODCF=I0
|
||||||
HELP "Inserire il tipo dell'effetto"
|
INPUT CODTAB F_MANDATO
|
||||||
END
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice@35" CODTAB
|
||||||
GROUPBOX DLG_NULL 35 4
|
DISPLAY "Cliente" I0
|
||||||
BEGIN
|
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||||
PROMPT 1 6 "Addebiti"
|
COPY OUTPUT F_MANDATO
|
||||||
END
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD S0
|
||||||
BOOLEAN F_ADDSPINC
|
KEY 2
|
||||||
BEGIN
|
|
||||||
PROMPT 2 7 "Sp. incasso"
|
|
||||||
HELP "Flag di addebito delle spese d'incasso"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_ADDBOLLIRB
|
|
||||||
BEGIN
|
|
||||||
PROMPT 19 7 "Bolli R.B."
|
|
||||||
HELP "Flag di addebito bolli delle R.B. "
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_ADDBOLLITR
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 8 "Bolli Tr."
|
|
||||||
HELP "Flag di addebito bolli delle tratte"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_ADDBNS1500
|
|
||||||
BEGIN
|
|
||||||
PROMPT 19 8 "Bollo esente"
|
|
||||||
HELP "Flag di addebito dei bolli"
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_PARTITE 9 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 39 8 "~Partite"
|
|
||||||
MESSAGE EXIT,K_F6
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 52 8 ""
|
|
||||||
END
|
|
||||||
|
|
||||||
BUTTON DLG_QUIT 9 2
|
|
||||||
BEGIN
|
|
||||||
PROMPT 65 8 ""
|
|
||||||
END
|
|
||||||
|
|
||||||
CURRENCY F_RESIDUO 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 10 "Residuo da ripartire "
|
|
||||||
FLAGS "RD"
|
|
||||||
END
|
|
||||||
|
|
||||||
SPREADSHEET F_SHEET_EFF 74
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 12 "Immissione effetti"
|
|
||||||
ITEM "Data scad."
|
|
||||||
ITEM "Importo rata@15 R"
|
|
||||||
ITEM "Spese incasso@15 R"
|
|
||||||
ITEM "Importo bolli@15 R"
|
|
||||||
ITEM "Importo effetto@15 R"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
#include "ef0200b.uml"
|
|
||||||
|
107
ef/ef0300.cpp
107
ef/ef0300.cpp
@ -1,17 +1,17 @@
|
|||||||
#include <relapp.h>
|
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <utility.h>
|
#include <relapp.h>
|
||||||
|
|
||||||
#include <clifo.h>
|
|
||||||
|
|
||||||
#include "ef0.h"
|
#include "ef0.h"
|
||||||
#include "ef0300.h"
|
#include "ef0300.h"
|
||||||
#include "ef0301.h"
|
#include "ef0301.h"
|
||||||
|
|
||||||
|
#include <clifo.h>
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Classe per la gestione di distinte (inserimento, modifica, cancellazione)//
|
// Classe per la gestione di distinte (inserimento, modifica, cancellazione)//
|
||||||
// e per la creazione automatica di distinte per importi. //
|
// e per la creazione automatica di distinte per importi. //
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TVariazione_distinte: public TRelation_application
|
class TVariazione_distinte: public TRelation_application
|
||||||
{
|
{
|
||||||
TMask *_msk, *_m2;
|
TMask *_msk, *_m2;
|
||||||
@ -22,14 +22,15 @@ protected:
|
|||||||
virtual void init_query_mode(TMask&);
|
virtual void init_query_mode(TMask&);
|
||||||
virtual void init_insert_mode(TMask&);
|
virtual void init_insert_mode(TMask&);
|
||||||
virtual void init_modify_mode(TMask&);
|
virtual void init_modify_mode(TMask&);
|
||||||
virtual const char* get_next_key();
|
virtual bool get_next_key(TToken_string& key);
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
virtual bool remove();
|
virtual bool remove();
|
||||||
virtual TMask* get_mask(int mode) {return _msk;}
|
|
||||||
virtual bool changing_mask(int mode) {return false;}
|
|
||||||
virtual bool has_filtered_cursor() const { return true; }
|
virtual bool has_filtered_cursor() const { return true; }
|
||||||
|
virtual bool changing_mask(int mode) { return false; }
|
||||||
|
virtual TMask* get_mask(int mode) { return _msk; }
|
||||||
|
|
||||||
static bool tipodist_handler(TMask_field& f, KEY k);
|
static bool tipodist_handler(TMask_field& f, KEY k);
|
||||||
static bool importo_handler(TMask_field& f, KEY k);
|
static bool importo_handler(TMask_field& f, KEY k);
|
||||||
static bool imp_sel_handler(TMask_field& f, KEY k);
|
static bool imp_sel_handler(TMask_field& f, KEY k);
|
||||||
@ -37,6 +38,7 @@ protected:
|
|||||||
static bool imp_notify(TSheet_field& s, int r, KEY key);
|
static bool imp_notify(TSheet_field& s, int r, KEY key);
|
||||||
static bool dist_check_handler(TMask_field& f, KEY key);
|
static bool dist_check_handler(TMask_field& f, KEY key);
|
||||||
static bool impdist_notify(TSheet_field& s, int r, KEY key);
|
static bool impdist_notify(TSheet_field& s, int r, KEY key);
|
||||||
|
static bool impdist_handler(TMask_field& s, KEY key);
|
||||||
static bool conferma_handler(TMask_field& f, KEY k);
|
static bool conferma_handler(TMask_field& f, KEY k);
|
||||||
static bool annulla_handler(TMask_field& f, KEY k);
|
static bool annulla_handler(TMask_field& f, KEY k);
|
||||||
static bool data_handler(TMask_field& f, KEY k);
|
static bool data_handler(TMask_field& f, KEY k);
|
||||||
@ -63,8 +65,6 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
virtual TRelation* get_relation() const { return _rel;}
|
virtual TRelation* get_relation() const { return _rel;}
|
||||||
TVariazione_distinte() {};
|
|
||||||
virtual ~TVariazione_distinte() {};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// restituisce un riferimento all' applicazione
|
// restituisce un riferimento all' applicazione
|
||||||
@ -109,7 +109,7 @@ void TVariazione_distinte::init_modify_mode(TMask& m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ritorna il prossimo numero di distinta valido
|
// ritorna il prossimo numero di distinta valido
|
||||||
const char* TVariazione_distinte::get_next_key()
|
bool TVariazione_distinte::get_next_key(TToken_string& key)
|
||||||
{
|
{
|
||||||
const TString& tipodist = curr_mask().get(F_TIPODIST);
|
const TString& tipodist = curr_mask().get(F_TIPODIST);
|
||||||
TLocalisamfile& effetti = _rel->lfile();
|
TLocalisamfile& effetti = _rel->lfile();
|
||||||
@ -127,7 +127,8 @@ const char* TVariazione_distinte::get_next_key()
|
|||||||
ndist += effetti.get_long(EFF_NDIST);
|
ndist += effetti.get_long(EFF_NDIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
return format("%d|%ld",F_NUMBER,ndist);
|
key.format("%d|%ld",F_NUMBER,ndist);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna true se trovo nell'array delle righe distinta l'effetto
|
// ritorna true se trovo nell'array delle righe distinta l'effetto
|
||||||
@ -135,11 +136,9 @@ const char* TVariazione_distinte::get_next_key()
|
|||||||
bool TVariazione_distinte::cerca(long num)
|
bool TVariazione_distinte::cerca(long num)
|
||||||
{
|
{
|
||||||
TArray& righedist = _distinta->righe();
|
TArray& righedist = _distinta->righe();
|
||||||
|
|
||||||
for (int i = _distinta->items() - 1; i >= 0; i--)// ciclo sugli elementi dell'array
|
for (int i = _distinta->items() - 1; i >= 0; i--)// ciclo sugli elementi dell'array
|
||||||
{
|
{
|
||||||
TEffetto& eff = (TEffetto&)righedist[i];
|
TEffetto& eff = (TEffetto&)righedist[i];
|
||||||
|
|
||||||
if (num == eff.get_long(EFF_NPROGTR))
|
if (num == eff.get_long(EFF_NPROGTR))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -400,22 +399,21 @@ int TVariazione_distinte::write(const TMask& m)
|
|||||||
// relativi.
|
// relativi.
|
||||||
bool TVariazione_distinte::remove()
|
bool TVariazione_distinte::remove()
|
||||||
{
|
{
|
||||||
TMask* m = _msk;
|
TMask& m = *_msk;
|
||||||
char tipodist = m->get(F_TIPODIST)[0];
|
char tipodist = m.get(F_TIPODIST)[0];
|
||||||
long ndist = m->get_long(F_NUMBER);
|
long ndist = m.get_long(F_NUMBER);
|
||||||
bool err = _distinta->remove(tipodist, ndist) == NOERR;
|
return _distinta->remove(tipodist, ndist) == NOERR;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// creo la relap
|
// creo la relap
|
||||||
bool TVariazione_distinte::user_create()
|
bool TVariazione_distinte::user_create()
|
||||||
{
|
{
|
||||||
open_files(LF_TAB, LF_TABCOM, LF_EFFETTI, LF_REFFETTI, LF_CESS, NULL);
|
open_files(LF_TAB, LF_TABCOM, LF_CLIFO, LF_EFFETTI, LF_REFFETTI, LF_CESS, NULL);
|
||||||
_msk = new TMask("ef0300a");
|
_msk = new TMask("ef0300a");
|
||||||
_m2 = new TMask("ef0300c");
|
_m2 = new TMask("ef0300c");
|
||||||
_rel = new TRelation(LF_EFFETTI);
|
_rel = new TRelation(LF_EFFETTI);
|
||||||
if (_rel->last() == NOERR)
|
if (_rel->last() == NOERR)
|
||||||
_msk->set(F_TIPODIST, _rel->curr().get("TIPODIST"));
|
_msk->set(F_TIPODIST, _rel->curr().get(EFF_TIPODIST));
|
||||||
|
|
||||||
_distinta = new TDistinta;
|
_distinta = new TDistinta;
|
||||||
set_search_field(F_NUMBER);//setto il campo di ricerca della distinta
|
set_search_field(F_NUMBER);//setto il campo di ricerca della distinta
|
||||||
@ -423,8 +421,11 @@ bool TVariazione_distinte::user_create()
|
|||||||
_msk->set_handler(F_TIPODIST, tipodist_handler);
|
_msk->set_handler(F_TIPODIST, tipodist_handler);
|
||||||
_msk->set_handler(F_IMPBUTTON, importo_handler);
|
_msk->set_handler(F_IMPBUTTON, importo_handler);
|
||||||
_msk->set_handler(F_UNCONTABIL, uncontabilize_handler);
|
_msk->set_handler(F_UNCONTABIL, uncontabilize_handler);
|
||||||
righe_sheet().set_notify(impdist_notify);
|
|
||||||
righe_sheet().sheet_mask().set_handler(FIRST_FIELD, dist_check_handler);
|
TSheet_field& rs = righe_sheet();
|
||||||
|
rs.set_notify(impdist_notify);
|
||||||
|
rs.set_handler(impdist_handler);
|
||||||
|
rs.sheet_mask().set_handler(FIRST_FIELD, dist_check_handler);
|
||||||
|
|
||||||
_m2->set_handler(F_IMPSEL, imp_sel_handler);
|
_m2->set_handler(F_IMPSEL, imp_sel_handler);
|
||||||
_m2->set_handler(DLG_OK, conferma_handler);
|
_m2->set_handler(DLG_OK, conferma_handler);
|
||||||
@ -432,8 +433,11 @@ bool TVariazione_distinte::user_create()
|
|||||||
_m2->set_handler(F_DADATA, data_handler);
|
_m2->set_handler(F_DADATA, data_handler);
|
||||||
_m2->set_handler(F_ADATA, data_handler);
|
_m2->set_handler(F_ADATA, data_handler);
|
||||||
_m2->set_handler(F_TIPORD, ordina_handler);
|
_m2->set_handler(F_TIPORD, ordina_handler);
|
||||||
righe_sel_sheet().set_notify(imp_notify);
|
|
||||||
righe_sel_sheet().sheet_mask().set_handler(FIRST_FIELD, check_handler);
|
TSheet_field& rss = righe_sel_sheet();
|
||||||
|
rss.set_notify(imp_notify);
|
||||||
|
rss.sheet_mask().set_handler(FIRST_FIELD, check_handler);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,10 +486,10 @@ void TVariazione_distinte::carica_riba(int tipopag, const bool reset)
|
|||||||
TLocalisamfile f(LF_EFFETTI);
|
TLocalisamfile f(LF_EFFETTI);
|
||||||
// per prendere la ragione sociale del cliente di cui ho il codice
|
// per prendere la ragione sociale del cliente di cui ho il codice
|
||||||
TToken_string riga(80);
|
TToken_string riga(80);
|
||||||
TMask* m2 = app()._m2;
|
TMask& m2 = *app()._m2;
|
||||||
if (reset)
|
if (reset)
|
||||||
m2->reset();
|
m2.reset();
|
||||||
TSheet_field& sf = m2->sfield(F_SHEET);
|
TSheet_field& sf = m2.sfield(F_SHEET);
|
||||||
if (reset)
|
if (reset)
|
||||||
sf.reset();
|
sf.reset();
|
||||||
|
|
||||||
@ -495,7 +499,8 @@ void TVariazione_distinte::carica_riba(int tipopag, const bool reset)
|
|||||||
int err, i = 0;
|
int err, i = 0;
|
||||||
err = eff.read(f, tipodist, ndist, nrigadist);
|
err = eff.read(f, tipodist, ndist, nrigadist);
|
||||||
int tipop = eff.get_int(EFF_TIPOPAG);
|
int tipop = eff.get_int(EFF_TIPOPAG);
|
||||||
int tipod = app()._msk->get(F_TIPOCF)[0];
|
const char tipo_cf = app()._msk->get(F_TIPOCF)[0]; // 'C'liente o 'F'ornitore
|
||||||
|
char tipo_a = ' '; // 'F'isica o 'G'iuridica
|
||||||
|
|
||||||
while ( (err == NOERR) && (tipodist == 0))
|
while ( (err == NOERR) && (tipodist == 0))
|
||||||
{
|
{
|
||||||
@ -505,14 +510,15 @@ void TVariazione_distinte::carica_riba(int tipopag, const bool reset)
|
|||||||
const bool to_select = (tipopag == 0) || (tipopag == tipop) ||
|
const bool to_select = (tipopag == 0) || (tipopag == tipop) ||
|
||||||
((tipopag == 2 || tipopag == 5 || tipopag == 7) &&
|
((tipopag == 2 || tipopag == 5 || tipopag == 7) &&
|
||||||
(tipop == 2 || tipop == 5 || tipop == 7));
|
(tipop == 2 || tipop == 5 || tipop == 7));
|
||||||
const char tipo = eff.get_tipo();
|
const char tipo = eff.get_tipo(); // C o F
|
||||||
|
|
||||||
const TString4 valuta = eff.get(EFF_CODVAL);
|
const TString4 valuta = eff.get(EFF_CODVAL);
|
||||||
|
|
||||||
const bool valuta_ok = ::same_values(valuta, codval);
|
const bool valuta_ok = ::same_values(valuta, codval);
|
||||||
const long numero = eff.get_long(EFF_NPROGTR);
|
const long numero = eff.get_long(EFF_NPROGTR);
|
||||||
|
|
||||||
if (to_select && valuta_ok && !effetto_aggiunto(numero) && tipo == tipod)
|
const bool is_good = to_select && valuta_ok && !effetto_aggiunto(numero) && tipo == tipo_cf;
|
||||||
|
if (is_good)
|
||||||
{
|
{
|
||||||
riga = " "; // Campo selezione
|
riga = " "; // Campo selezione
|
||||||
|
|
||||||
@ -549,8 +555,7 @@ void TVariazione_distinte::carica_riba(int tipopag, const bool reset)
|
|||||||
if (!soldival.is_zero())
|
if (!soldival.is_zero())
|
||||||
riga.add(soldival.string());
|
riga.add(soldival.string());
|
||||||
|
|
||||||
sf.row(i) = riga;
|
sf.row(i++) = riga;
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
f.setkey(4);
|
f.setkey(4);
|
||||||
err = eff.next(f);//leggo l'effetto successivo
|
err = eff.next(f);//leggo l'effetto successivo
|
||||||
@ -576,8 +581,7 @@ bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Handler per gestire il caricamento degli effetti nella distinta
|
// Handler per gestire il caricamento degli effetti nella distinta
|
||||||
// in automatico relativamente ad un importo fissato (per la maschera
|
// in automatico relativamente ad un importo fissato (per la maschera principale)
|
||||||
// princiapale)
|
|
||||||
bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
// se importo distinta maggiore importo presentato si devono andare a
|
// se importo distinta maggiore importo presentato si devono andare a
|
||||||
@ -905,7 +909,7 @@ bool TVariazione_distinte::check_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
TSheet_field& s = app().righe_sel_sheet();
|
TSheet_field& s = app().righe_sel_sheet();
|
||||||
TToken_string& row = s.row(s.selected());
|
TToken_string& row = s.row(s.selected());
|
||||||
const bool checked = f.get().not_empty();
|
const bool checked = f.get().full();
|
||||||
row.add(checked ? "X" : "", 0);
|
row.add(checked ? "X" : "", 0);
|
||||||
app().calcola();
|
app().calcola();
|
||||||
}
|
}
|
||||||
@ -941,6 +945,39 @@ bool TVariazione_distinte::impdist_notify(TSheet_field& s, int r, KEY key)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TVariazione_distinte::impdist_handler(TMask_field& f, KEY key)
|
||||||
|
{
|
||||||
|
bool ok = true;
|
||||||
|
if (key == K_ENTER && f.mask().get_int(F_TIPOPAG) == 8) // RID
|
||||||
|
{
|
||||||
|
TSheet_field& sf = (TSheet_field&)f;
|
||||||
|
if (sf.items() > 1)
|
||||||
|
{
|
||||||
|
char tipoa = ' ';
|
||||||
|
TString8 key;
|
||||||
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
|
FOR_EACH_SHEET_ROW(sf, r, riga) if (riga->get_char(0) != 'X') // riga valida (NON da eliminare)
|
||||||
|
{
|
||||||
|
eff.put(EFF_NPROGTR, riga->get(1));
|
||||||
|
if (eff.read() == NOERR)
|
||||||
|
{
|
||||||
|
const char tipocf = eff.get_char(EFF_TIPOCF);
|
||||||
|
const long codcf = eff.get_long(EFF_CODCF);
|
||||||
|
key.format("%c|%ld", tipocf, codcf);
|
||||||
|
char ta = cache().get(LF_CLIFO, key, CLI_TIPOAPER)[0];
|
||||||
|
if (ta != 'G') ta = 'F'; // Fisica o giuridica
|
||||||
|
if (tipoa < 'F') tipoa = ta;
|
||||||
|
if (tipoa != ta)
|
||||||
|
ok = error_box(FR("Tipo anagrafica non valido alla riga %d:\n"
|
||||||
|
"Non possono coesistere RID relativi a persone Fisiche e Giuridiche"),
|
||||||
|
r+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
bool TVariazione_distinte::imp_notify(TSheet_field& s, int r, KEY key)
|
bool TVariazione_distinte::imp_notify(TSheet_field& s, int r, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_DEL || key == K_INS)
|
if (key == K_DEL || key == K_INS)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <printer.h>
|
#include <printer.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
|
#include <tabmod.h>
|
||||||
|
|
||||||
#include "ef0.h"
|
#include "ef0.h"
|
||||||
#include "ef0301.h"
|
#include "ef0301.h"
|
||||||
@ -142,6 +143,7 @@ class TRiba_file: public TFile_text
|
|||||||
protected:
|
protected:
|
||||||
char tipo_incasso(const TRectype& eff) const; // U o V
|
char tipo_incasso(const TRectype& eff) const; // U o V
|
||||||
const char* tipo_sequenza(const TRectype& eff) const; // FRST,RCUR,FNAL,OOFF
|
const char* tipo_sequenza(const TRectype& eff) const; // FRST,RCUR,FNAL,OOFF
|
||||||
|
TDate data_mandato(const TRectype& eff) const;
|
||||||
|
|
||||||
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
|
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
|
||||||
|
|
||||||
@ -151,7 +153,7 @@ public:
|
|||||||
const real tot_importi() const { return _tot_importi; }
|
const real tot_importi() const { return _tot_importi; }
|
||||||
|
|
||||||
bool tracciato_setif() const { return _tracciato_setif; }
|
bool tracciato_setif() const { return _tracciato_setif; }
|
||||||
void set_tracciato_setif(bool tracciato_setif=TRUE) { _tracciato_setif = tracciato_setif; }
|
void set_tracciato_setif(bool tracciato_setif=true) { _tracciato_setif = tracciato_setif; }
|
||||||
|
|
||||||
const TString& my_iban() const { return _my_iban; }
|
const TString& my_iban() const { return _my_iban; }
|
||||||
void set_my_iban(const char* ib) { _my_iban = ib; }
|
void set_my_iban(const char* ib) { _my_iban = ib; }
|
||||||
@ -295,7 +297,8 @@ void TEmissione::floppy()
|
|||||||
{
|
{
|
||||||
const TRecnotype n_eff = _cur->items();
|
const TRecnotype n_eff = _cur->items();
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format(FR("Emissione di %d effetti su file %s\ncon tracciato %s"), n_eff, RIBAFILENAME, (const char*)ribaini);
|
msg.format(FR("Emissione di %d effetti su file %s\ncon tracciato %s"),
|
||||||
|
n_eff, RIBAFILENAME, (const char*)ribaini);
|
||||||
if (n_eff > 0)
|
if (n_eff > 0)
|
||||||
{
|
{
|
||||||
TString_array keys ;
|
TString_array keys ;
|
||||||
@ -317,6 +320,36 @@ void TEmissione::floppy()
|
|||||||
}
|
}
|
||||||
footer_ef(); //chiusura flusso effetti
|
footer_ef(); //chiusura flusso effetti
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (n_eff > 0 && tipocf == 'C' && tipopag == '8')
|
||||||
|
{
|
||||||
|
// Cambia stato ai mandati di tipo FRST in RCUR e lascia stare tutti gli altri
|
||||||
|
TProgress_monitor pi(n_eff, TR("Aggiornamento sequenza mandati"));
|
||||||
|
|
||||||
|
// Aggiorna gli eventuali mandati da FRST a RCUR
|
||||||
|
TModule_table man("MAN");
|
||||||
|
for (cur = 0; cur.pos() < n_eff; ++cur)
|
||||||
|
{
|
||||||
|
const TString& mandato = eff.get(EFF_MANDATO);
|
||||||
|
if (mandato.full())
|
||||||
|
{
|
||||||
|
man.put("CODTAB", mandato);
|
||||||
|
if (man.read() == NOERR)
|
||||||
|
{
|
||||||
|
const TString& seq = man.get("S6");
|
||||||
|
if (seq == "FRST")
|
||||||
|
{
|
||||||
|
man.put("S6", "RCUR");
|
||||||
|
man.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pi.add_status(1))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message_box(msg);
|
message_box(msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -427,9 +460,9 @@ bool TEmissione::test_record_type(const TString& key) const
|
|||||||
const TRectype& eff = _cur->curr();
|
const TRectype& eff = _cur->curr();
|
||||||
|
|
||||||
if (key == "16")
|
if (key == "16")
|
||||||
ok = _trasfile->my_iban().not_empty();
|
ok = _trasfile->my_iban().full();
|
||||||
else
|
else
|
||||||
ok = eff.get(EFF_IBAN).not_empty();
|
ok = eff.get(EFF_IBAN).full();
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
@ -488,8 +521,7 @@ void TEmissione::aggiorna_rb(TCursor* cur)
|
|||||||
effetto.put(EFF_NUMEMISS, numero);
|
effetto.put(EFF_NUMEMISS, numero);
|
||||||
TDate data = _msk->get_date(F_DATAEMIS);
|
TDate data = _msk->get_date(F_DATAEMIS);
|
||||||
effetto.put(EFF_DATAEMISS, data);
|
effetto.put(EFF_DATAEMISS, data);
|
||||||
bool cond = TRUE;
|
effetto.put(EFF_EFFSTAMP, true);
|
||||||
effetto.put(EFF_EFFSTAMP, cond);
|
|
||||||
effetto.rewrite(eff);
|
effetto.rewrite(eff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -502,8 +534,7 @@ void TEmissione::aggiorna_dist(TCursor* cur)
|
|||||||
for (*cur = 0; cur->pos() < cur->items(); ++(*cur))
|
for (*cur = 0; cur->pos() < cur->items(); ++(*cur))
|
||||||
{
|
{
|
||||||
TEffetto effetto = eff.curr();
|
TEffetto effetto = eff.curr();
|
||||||
bool cond = TRUE;
|
effetto.put(EFF_DISTSTAM, true);
|
||||||
effetto.put(EFF_DISTSTAM, cond);
|
|
||||||
effetto.rewrite(eff);
|
effetto.rewrite(eff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -512,7 +543,6 @@ void TEmissione::aggiorna_dist(TCursor* cur)
|
|||||||
void TEmissione::print_rb(char tipost, int ndist, char tipodist, const bool is_vis)
|
void TEmissione::print_rb(char tipost, int ndist, char tipodist, const bool is_vis)
|
||||||
{
|
{
|
||||||
TCursor* fcur = _formrb->cursor();
|
TCursor* fcur = _formrb->cursor();
|
||||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
|
||||||
|
|
||||||
TString filter;
|
TString filter;
|
||||||
if (tipost == 'D' && !_msk->get_bool(F_RIST)) // se stampa definitiva effetti e se non deve ristampare le riba
|
if (tipost == 'D' && !_msk->get_bool(F_RIST)) // se stampa definitiva effetti e se non deve ristampare le riba
|
||||||
@ -522,7 +552,7 @@ void TEmissione::print_rb(char tipost, int ndist, char tipodist, const bool is_v
|
|||||||
fcur->setkey(4);
|
fcur->setkey(4);
|
||||||
if (ndist > 0)
|
if (ndist > 0)
|
||||||
{
|
{
|
||||||
TRectype darec(eff.curr());// fissa i dati per la scelta degli ...
|
TRectype darec(LF_EFFETTI);// fissa i dati per la scelta degli ...
|
||||||
darec.zero(); //... effetti nel primo e nell'ultimo record del cursore
|
darec.zero(); //... effetti nel primo e nell'ultimo record del cursore
|
||||||
darec.put(EFF_TIPODIST, tipodist);
|
darec.put(EFF_TIPODIST, tipodist);
|
||||||
darec.put(EFF_NDIST, ndist);
|
darec.put(EFF_NDIST, ndist);
|
||||||
@ -999,32 +1029,29 @@ char TRiba_file::tipo_incasso(const TRectype& eff) const
|
|||||||
{
|
{
|
||||||
const char tipopag = eff.get_char(EFF_TIPOPAG);
|
const char tipopag = eff.get_char(EFF_TIPOPAG);
|
||||||
const char tipocf = eff.get_char(EFF_TIPOCF);
|
const char tipocf = eff.get_char(EFF_TIPOCF);
|
||||||
const long codcf = eff.get_char(EFF_CODCF);
|
const long codcf = eff.get_long(EFF_CODCF);
|
||||||
|
|
||||||
if (tipopag != '8' || tipocf != 'C' || codcf <= 0L)
|
if (tipopag != '8' || tipocf != 'C' || codcf <= 0L) // 8 = Rapporti Interbancari Diretti (alias RID)
|
||||||
return ' ';
|
return ' '; // RID ONLY
|
||||||
TString8 key; key.format("C|%ld", codcf);
|
TString8 key; key.format("C|%ld", codcf);
|
||||||
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
||||||
if (clifo.get_char(CLI_TIPOAPER) == 'G')
|
return clifo.get_char(CLI_TIPOAPER) == 'G' ? 'V' : 'U';
|
||||||
return 'V';
|
|
||||||
return 'U';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TRiba_file::tipo_sequenza(const TRectype& eff) const
|
const char* TRiba_file::tipo_sequenza(const TRectype& eff) const
|
||||||
{
|
{
|
||||||
const char* seq = "OOFF";
|
const char* seq = "RCUR";
|
||||||
TEffetto e(eff);
|
const TRectype& mandato = cache().get("&MAN", eff.get(EFF_MANDATO));
|
||||||
if (e.fatt())
|
if (!mandato.empty())
|
||||||
{
|
seq = mandato.get("S6");
|
||||||
const int nrata = e.row_r(0).get_int(REFF_NRATA);
|
|
||||||
if (eff.get_bool(EFF_ULTRATA))
|
|
||||||
seq = nrata <= 1 ? "OOFF" : "FNAL";
|
|
||||||
else
|
|
||||||
seq = nrata <= 1 ? "FRST" : "RCUR";
|
|
||||||
}
|
|
||||||
return seq;
|
return seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TDate TRiba_file::data_mandato(const TRectype& eff) const
|
||||||
|
{
|
||||||
|
TDate dm = cache().get("&MAN", eff.get(EFF_MANDATO), "D0");
|
||||||
|
return dm;
|
||||||
|
}
|
||||||
|
|
||||||
// gestione dei messaggi estesi nei campi
|
// gestione dei messaggi estesi nei campi
|
||||||
void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
|
void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
|
||||||
@ -1036,11 +1063,10 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
|
|||||||
// gestione dei campi fissi per i record delle riba
|
// gestione dei campi fissi per i record delle riba
|
||||||
// sintassi: _FISSO,!<valore>
|
// sintassi: _FISSO,!<valore>
|
||||||
// dove: <valore> è la stringa fissa da emettere
|
// dove: <valore> è la stringa fissa da emettere
|
||||||
TString in(s.get());
|
const TFixed_string in(s.get());
|
||||||
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
|
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
|
||||||
in.ltrim(1);
|
valore = in.mid(1);
|
||||||
in.trim();
|
valore.trim();
|
||||||
valore = in;
|
|
||||||
}
|
}
|
||||||
else if (code == "_DATA")
|
else if (code == "_DATA")
|
||||||
{
|
{
|
||||||
@ -1337,11 +1363,14 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
|
|||||||
{
|
{
|
||||||
valore = ini_get_string(CONFIG_DITTA, "ef", "CODSIA");
|
valore = ini_get_string(CONFIG_DITTA, "ef", "CODSIA");
|
||||||
}
|
}
|
||||||
|
else if (code == "_CUC")
|
||||||
|
{
|
||||||
|
valore = ini_get_string(CONFIG_DITTA, "ef", "CUC");
|
||||||
|
}
|
||||||
else if (code == "_CREDITORID")
|
else if (code == "_CREDITORID")
|
||||||
{
|
{
|
||||||
valore = ini_get_string(CONFIG_DITTA, "ef", "CREDITORID");
|
valore = cur.curr(-403).get("S4");
|
||||||
}
|
} else if (code == "_CODMON")
|
||||||
else if (code == "_CODMON")
|
|
||||||
{
|
{
|
||||||
valore.format("%c", _codice_moneta); // Fisso 'E'
|
valore.format("%c", _codice_moneta); // Fisso 'E'
|
||||||
}
|
}
|
||||||
@ -1355,7 +1384,8 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
|
|||||||
}
|
}
|
||||||
else if (code == "_DATAMANDATO")
|
else if (code == "_DATAMANDATO")
|
||||||
{
|
{
|
||||||
valore = "000000";
|
const TDate d = data_mandato(cur.curr());
|
||||||
|
valore = d.string(brief, '\0');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
NFCHECK("Macro non definita: %s", (const char *)code);
|
NFCHECK("Macro non definita: %s", (const char *)code);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#define F_DESCCAUINC 106
|
#define F_DESCCAUINC 106
|
||||||
#define F_DESCCAUPAG 107
|
#define F_DESCCAUPAG 107
|
||||||
#define F_CONTSEP 108
|
#define F_CONTSEP 108
|
||||||
#define F_CREDITORID 109
|
#define F_CUC 109
|
||||||
|
|
||||||
#define F_TRANS_G 111
|
#define F_TRANS_G 111
|
||||||
#define F_TRANS_C 112
|
#define F_TRANS_C 112
|
||||||
|
@ -153,10 +153,10 @@ BEGIN
|
|||||||
FIELD CODSIA
|
FIELD CODSIA
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CREDITORID 25
|
STRING F_CUC 35
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Creditor Identifier "
|
PROMPT 2 15 "Codice Univoco CBI (C.U.C.) "
|
||||||
FIELD CREDITORID
|
FIELD CUC
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -11,4 +11,5 @@ Item_05 = "Contabilizzazione effetti", "ef0 -7", "F"
|
|||||||
Item_06 = "Stampe di controllo", "ef0 -5", "F"
|
Item_06 = "Stampe di controllo", "ef0 -5", "F"
|
||||||
Item_07 = "Configurazione modulo", "ef0 -8", "F"
|
Item_07 = "Configurazione modulo", "ef0 -8", "F"
|
||||||
Item_08 = "Disposizioni incassi/pagamenti", "ef0 -9", "F"
|
Item_08 = "Disposizioni incassi/pagamenti", "ef0 -9", "F"
|
||||||
|
Item_09 = "Mandati RID", "ef0 -1 &MAN", "F"
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
31
|
31
|
||||||
0
|
0
|
||||||
$effetti|0|0|248|0|Effetti|||
|
$effetti|0|0|283|0|Effetti|||
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
31
|
31
|
||||||
36
|
37
|
||||||
NPROGTR|3|7|0|Numero progressivo effetto
|
NPROGTR|3|7|0|Numero progressivo effetto
|
||||||
DATASCAD|5|8|0|Data di scadenza
|
DATASCAD|5|8|0|Data di scadenza
|
||||||
TIPOPAG|2|1|0|Tipo pagamento
|
TIPOPAG|2|1|0|Tipo pagamento
|
||||||
@ -35,7 +35,8 @@ IBAN|1|34|0|Codice IBAN di appoggio
|
|||||||
DSCVAL|8|1|0|Data di scadenza intesa come data valuta beneficiario
|
DSCVAL|8|1|0|Data di scadenza intesa come data valuta beneficiario
|
||||||
CUP|1|15|0|Codice Unico di Progetto
|
CUP|1|15|0|Codice Unico di Progetto
|
||||||
CIG|1|10|0|Codice Identificativo gara
|
CIG|1|10|0|Codice Identificativo gara
|
||||||
CONTSEP|1|6|0|Contabilita' separata
|
CONTSEP|1|6|0|Contabilità separata
|
||||||
|
MANDATO|1|35|0|Codice mandato per RID
|
||||||
4
|
4
|
||||||
NPROGTR|
|
NPROGTR|
|
||||||
TIPOCF+CODCF+NPROGTR|
|
TIPOCF+CODCF+NPROGTR|
|
||||||
|
@ -65,7 +65,7 @@ POSITION(2)=3
|
|||||||
LENGTH(2)=5
|
LENGTH(2)=5
|
||||||
MESSAGE(2)=_CODSIA
|
MESSAGE(2)=_CODSIA
|
||||||
|
|
||||||
NAME(3)=CODICE DESTINATARIO
|
NAME(3)=CODICE RICEVENTE
|
||||||
FIELD(3)=31->CODABIP
|
FIELD(3)=31->CODABIP
|
||||||
POSITION(3)=8
|
POSITION(3)=8
|
||||||
LENGTH(3)=5
|
LENGTH(3)=5
|
||||||
@ -86,7 +86,7 @@ MESSAGE(5)=_DITTA,!RAGSOC,1
|
|||||||
NAME(6)=FILLER
|
NAME(6)=FILLER
|
||||||
TYPE(6)=FISSO
|
TYPE(6)=FISSO
|
||||||
POSITION(6)=45
|
POSITION(6)=45
|
||||||
LENGTH(6)=68
|
LENGTH(6)=67
|
||||||
|
|
||||||
NAME(7)=CODICE MONETA
|
NAME(7)=CODICE MONETA
|
||||||
TYPE(7)=STRINGA
|
TYPE(7)=STRINGA
|
||||||
@ -94,10 +94,11 @@ POSITION(7)=113
|
|||||||
LENGTH(7)=1
|
LENGTH(7)=1
|
||||||
MESSAGE(7) = _CODMON
|
MESSAGE(7) = _CODMON
|
||||||
|
|
||||||
NAME(8)=FILLER
|
NAME(8) = TIPO INCASSO RID (FACOLTATIVO)
|
||||||
TYPE(8)=FISSO
|
TYPE(8) = STRINGA
|
||||||
POSITION(8)=114
|
POSITION(8) = 112
|
||||||
LENGTH(8)=6
|
LENGTH(8) = 1
|
||||||
|
MESSAGE(8) = _TIPOINC
|
||||||
|
|
||||||
NAME(9)=TIPO RECORD FINTO
|
NAME(9)=TIPO RECORD FINTO
|
||||||
POSITION(9)=1
|
POSITION(9)=1
|
||||||
@ -190,6 +191,7 @@ POSITION(14) = 79
|
|||||||
LENGTH(14) = 12
|
LENGTH(14) = 12
|
||||||
|
|
||||||
NAME(15) = CODICE AZIENDA
|
NAME(15) = CODICE AZIENDA
|
||||||
|
TYPE(15) = STRINGA
|
||||||
POSITION(15) = 91
|
POSITION(15) = 91
|
||||||
LENGTH(15) = 5
|
LENGTH(15) = 5
|
||||||
MESSAGE(15) = _CODSIA
|
MESSAGE(15) = _CODSIA
|
||||||
@ -201,20 +203,20 @@ LENGTH(16) = 1
|
|||||||
MESSAGE(16) = _FISSO,!9
|
MESSAGE(16) = _FISSO,!9
|
||||||
|
|
||||||
NAME(17) = CODICE CLIENTE DEBITORE (FACOLTATIVO)
|
NAME(17) = CODICE CLIENTE DEBITORE (FACOLTATIVO)
|
||||||
TYPE(17) = FISSO
|
TYPE(17) = STRINGA
|
||||||
POSITION(17) = 97
|
POSITION(17) = 97
|
||||||
LENGTH(17) = 16
|
LENGTH(17) = 15
|
||||||
FIELD(17) = 20->PAIV
|
FIELD(17) = 20->PAIV
|
||||||
|
|
||||||
NAME(18) = TIPO INCASSO (FACOLTATIVO)
|
NAME(18) = TIPO INCASSO (FACOLTATIVO)
|
||||||
TYPE(18) = STRINGA
|
TYPE(18) = STRINGA
|
||||||
POSITION(18) = 112
|
POSITION(18) = 118
|
||||||
LENGTH(18) = 1
|
LENGTH(18) = 1
|
||||||
MESSAGE(18) = _TIPOINC
|
MESSAGE(18) = _TIPOINC
|
||||||
|
|
||||||
NAME(19) = CODICE MONETA
|
NAME(19) = CODICE MONETA
|
||||||
TYPE(19) = STRINGA
|
TYPE(19) = STRINGA
|
||||||
POSITION(19) = 113
|
POSITION(19) = 119
|
||||||
LENGTH(19) = 1
|
LENGTH(19) = 1
|
||||||
MESSAGE(19) = _CODMON
|
MESSAGE(19) = _CODMON
|
||||||
|
|
||||||
@ -567,13 +569,15 @@ TYPE(10)=FISSO
|
|||||||
POSITION(10)=89
|
POSITION(10)=89
|
||||||
LENGTH(10)=24
|
LENGTH(10)=24
|
||||||
|
|
||||||
NAME(11)=CODICE MONETA
|
NAME(11) = TIPO INCASSO (FACOLTATIVO)
|
||||||
TYPE(11) = STRINGA
|
TYPE(11) = STRINGA
|
||||||
POSITION(11)=113
|
POSITION(11) = 112
|
||||||
LENGTH(11) = 1
|
LENGTH(11) = 1
|
||||||
MESSAGE(11) = _CODMON
|
MESSAGE(11) = _TIPOINC
|
||||||
|
|
||||||
|
NAME(12)=CODICE MONETA
|
||||||
|
TYPE(12)=STRINGA
|
||||||
|
POSITION(12)=113
|
||||||
|
LENGTH(12)=1
|
||||||
|
MESSAGE(12) = _CODMON
|
||||||
|
|
||||||
NAME(12)=FILLER
|
|
||||||
TYPE(12)=FISSO
|
|
||||||
POSITION(12)=114
|
|
||||||
LENGTH(12)=6
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user