Errori da aga009 a aga023

git-svn-id: svn://10.65.10.50/trunk@4327 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-05-12 15:31:33 +00:00
parent 7affcbf253
commit 368454c533
9 changed files with 360 additions and 442 deletions

View File

@ -311,7 +311,7 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k) bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
{ {
TMask &m = f.mask(); TMask &m = f.mask();
if (f.to_check(k, TRUE)) if (k == K_TAB && f.to_check(k, TRUE))
{ {
const TString & val = f.get(); const TString & val = f.get();
// se non c'e valuta o se è lire disabilito i campi collegati // se non c'e valuta o se è lire disabilito i campi collegati
@ -331,7 +331,8 @@ bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
} }
sf.enable_column(F_IMPFATTVAL, valuta); sf.enable_column(F_IMPFATTVAL, valuta);
sf.enable_column(F_IMPEFFVAL, valuta); sf.enable_column(F_IMPEFFVAL, valuta);
sf.force_update(); if (f.focusdirty())
sf.force_update();
} }
return TRUE; return TRUE;
} }
@ -354,7 +355,8 @@ bool TVariazione_effetti::contab_handler(TMask_field& f, KEY k)
} }
sf.enable_column(F_ANNO, da_contab); sf.enable_column(F_ANNO, da_contab);
sf.enable_column(F_NUMPART, da_contab); sf.enable_column(F_NUMPART, da_contab);
sf.force_update(); if (f.focusdirty())
sf.force_update();
} }
return TRUE; return TRUE;
} }

View File

@ -29,10 +29,6 @@ BEGIN
DISPLAY "Nr. distinta" NDIST DISPLAY "Nr. distinta" NDIST
DISPLAY "Ragione Sociale Cliente@50" LF_CLIFO->RAGSOC DISPLAY "Ragione Sociale Cliente@50" LF_CLIFO->RAGSOC
OUTPUT F_NPROGTR NPROGTR OUTPUT F_NPROGTR NPROGTR
// OUTPUT F_CODCF CODCF
// OUTPUT F_DATASCAD DATASCAD
// OUTPUT F_TIPOPAG TIPOPAG
// OUTPUT F_CFRAGSOC LF_CLIFO->RAGSOC
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,10@ MESSAGE COPY,10@
END END
@ -337,7 +333,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
NUMBER F_NDIST 8 NUMBER F_NDIST 5
BEGIN BEGIN
PROMPT 42 13 "Nr. distinta " PROMPT 42 13 "Nr. distinta "
FIELD NDIST FIELD NDIST
@ -353,7 +349,7 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
NUMBER F_NRIGADIST 6 NUMBER F_NRIGADIST 4
BEGIN BEGIN
PROMPT 42 14 "Nr. di riga " PROMPT 42 14 "Nr. di riga "
FIELD NRIGADIST FIELD NRIGADIST

View File

@ -1,4 +1,4 @@
#include <relapp.h> #include <relapp.h>
#include <msksheet.h> #include <msksheet.h>
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
@ -29,7 +29,6 @@ protected:
virtual bool remove(); virtual bool remove();
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;}
static bool codval_handler(TMask_field& f, KEY k);
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_aut_handler(TMask_field& f, KEY k); static bool imp_aut_handler(TMask_field& f, KEY k);
@ -46,13 +45,15 @@ protected:
static void carica_riba(int tipopag); static void carica_riba(int tipopag);
static void ord_data(); static void ord_data();
static void ord_fatt(); static void ord_fatt();
TSheet_field& righe_sheet() const; // ritorna un riferimento allo sheet degli effetti (righe) nella
TSheet_field& righe_sel_sheet() const; // distinta
TSheet_field& righe_sheet() const { return (TSheet_field&)_msk->field(F_SHEET_RIBA); }
// ritorna un riferimento allo sheet delle righe
TSheet_field& righe_sel_sheet() const { return (TSheet_field&)_m2->field(F_SHEET); }
bool cerca(long num); bool cerca(long num);
bool user_create(); bool user_create();
bool user_destroy(); bool user_destroy();
void aggiorna(); void aggiorna();
void elimina();
TToken_string* common_f(const TMask& m); TToken_string* common_f(const TMask& m);
public: public:
virtual TRelation* get_relation() const {return _rel;} virtual TRelation* get_relation() const {return _rel;}
@ -70,7 +71,7 @@ void TVariazione_distinte::init_query_mode(TMask&)
_msk->enable(F_NUMBER); _msk->enable(F_NUMBER);
_msk->enable(F_TIPODIST); _msk->enable(F_TIPODIST);
_msk->reset(F_TOTIMP); _msk->reset(F_TOTIMP);
_msk->reset(F_TOTIMPVAL); _msk->enable(F_TIPOPAG);
} }
// quando si va in insert mode resetta i campi della maschera relativi // quando si va in insert mode resetta i campi della maschera relativi
@ -79,11 +80,9 @@ void TVariazione_distinte::init_query_mode(TMask&)
void TVariazione_distinte::init_insert_mode(TMask&) void TVariazione_distinte::init_insert_mode(TMask&)
{ {
_msk->reset(F_TOTIMP); _msk->reset(F_TOTIMP);
_msk->reset(F_TOTIMPVAL);
_msk->enable(F_TOTIMPVAL);
_msk->enable(F_CODVAL); _msk->enable(F_CODVAL);
_msk->disable(F_NUMBER); _msk->disable(F_NUMBER);
_msk->disable(F_TIPODIST); _msk->disable(F_TIPODIST);
} }
// quando si va in modify mode disabilta i campi relativi alla chiave // quando si va in modify mode disabilta i campi relativi alla chiave
@ -92,70 +91,40 @@ void TVariazione_distinte::init_modify_mode(TMask&)
{ {
_msk->disable(F_NUMBER); _msk->disable(F_NUMBER);
_msk->disable(F_TIPODIST); _msk->disable(F_TIPODIST);
_msk->disable(F_TIPOPAG);
} }
// ritorna il prossimo numero di distanta valido // ritorna il prossimo numero di distinta valido
const char* TVariazione_distinte::get_next_key() const char* TVariazione_distinte::get_next_key()
{ {
long ndist = 1L; long ndist = 99999L;
char tipodist = 'B'; const TString16 tipodist = get_mask(MODE_INS)->get(F_TIPODIST);
TLocalisamfile& effetti = _rel->lfile(); TLocalisamfile& effetti = _rel->lfile();
effetti.first();// mi posiziono all'inizio del file
effetti.put(EFF_TIPODIST,tipodist); effetti.put(EFF_TIPODIST,tipodist);
effetti.put(EFF_NDIST,ndist); effetti.put(EFF_NDIST,ndist);
effetti.setkey(4); effetti.setkey(4);
int err = effetti.read(_isgteq); effetti.read(_isgteq);
if ( (err == _iskeynotfound) || (err == _iseof) ) if (!effetti.empty() && tipodist == effetti.get(EFF_TIPODIST))
{ //se non esiste alcuna distinta: il numero sarà 1 ndist = effetti.get_long(EFF_NDIST) + 1;
err == NOERR; else
return format("%d|%ld", F_NUMBER, ndist); ndist = 1;
} return format("%d|%ld",F_NUMBER,ndist);
while (err == NOERR)
{ // se esitono già delle distinte:
// le leggo tutte e ne prendo il numero
long n = effetti.get_long(EFF_NDIST);
// lo confronto con i numero maggiore che ho letto
if (n > ndist)
ndist = n;
effetti.setkey(4);
err = effetti.next();
}
return format("%d|%ld",F_NUMBER,++ndist);
} }
// ritorna un riferimento allo sheet degli effetti (righe) nella
// distinta
TSheet_field& TVariazione_distinte::righe_sheet() const
{
TSheet_field& r_sheet = (TSheet_field&)_msk->field(F_SHEET_RIBA);
return r_sheet;
}
// ritorna un riferimento allo sheet delle righe
TSheet_field& TVariazione_distinte::righe_sel_sheet() const
{
TSheet_field& r_sheet = (TSheet_field&)_m2->field(F_SHEET);
return r_sheet;
}
// ritorna TRUE se trovo nell'array delle righe distinta l'effetto // ritorna TRUE se trovo nell'array delle righe distinta l'effetto
// passato // passato
bool TVariazione_distinte::cerca(long num) bool TVariazione_distinte::cerca(long num)
{ {
bool trovato = FALSE;
int items = _distinta->items();
TArray& righedist = _distinta->righe(); TArray& righedist = _distinta->righe();
for (int i = 0; i < items; 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];
long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num) if (num == eff.get_long(EFF_NPROGTR))
{ return TRUE;
trovato = TRUE;
break;// esco quando ho già trovato l'effetto che cercavo
}
} }
return trovato; return FALSE;
} }
// metodo che permette di scivere sull'array (in memoria) gli // metodo che permette di scivere sull'array (in memoria) gli
@ -168,17 +137,19 @@ void TVariazione_distinte::aggiorna()
{ {
TToken_string& row = shrighe.row(i); TToken_string& row = shrighe.row(i);
row.restart(); row.restart();
long num = row.get_long(1); long num = row.get_long(shrighe.cid2index(F_NRIBA));
if (!cerca(num))// se non è già presente in memoria if (!cerca(num))// se non è già presente in memoria
{ // carico l'effetto nell'array { // carico l'effetto nell'array
TLocalisamfile eff(LF_EFFETTI); TLocalisamfile eff(LF_EFFETTI);
TRectype rec = eff.curr(); TRectype & rec = eff.curr();
eff.setkey(1); eff.setkey(1);
rec.zero(); rec.zero();
rec.put(EFF_NPROGTR, num); rec.put(EFF_NPROGTR, num);
int err = eff.read(); eff.read();
TEffetto* effetto= new TEffetto(rec);
TEffetto* effetto = new TEffetto(rec);
TArray& righedist = _distinta->righe(); TArray& righedist = _distinta->righe();
righedist.add(effetto); righedist.add(effetto);
} }
} }
@ -194,8 +165,7 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m)
long codabi = m.get_long(F_CODABIP); // dalla maschera long codabi = m.get_long(F_CODABIP); // dalla maschera
long codcab = m.get_long(F_CODCABP); long codcab = m.get_long(F_CODCABP);
m.autosave(*_rel); m.autosave(*_rel);
TToken_string* datidist= new TToken_string; // creo la token string TToken_string * datidist= new TToken_string; // creo la token string
datidist->cut(0);
datidist->add(tipodist); // inserisco i dati nella datidist->add(tipodist); // inserisco i dati nella
datidist->add(ndist); // token string datidist->add(ndist); // token string
datidist->add(datadist); datidist->add(datadist);
@ -224,132 +194,126 @@ int TVariazione_distinte::read(TMask& m)
int items = _distinta->items(); int items = _distinta->items();
TArray& righedist = _distinta->righe(); TArray& righedist = _distinta->righe();
// carico tutti gli effetti della distinta nello sheet // carico tutti gli effetti della distinta nello sheet
for (int i = 0; i < items; i++) if (items > 0)
{ {
TEffetto& eff = (TEffetto&)righedist[i]; TEffetto& e = (TEffetto&)righedist[0];
riga.cut(0); m.set(F_DATA, e.get("DATADIST"));// distinta
riga.add(' '); m.set(F_CODABIP, e.get("CODABIP")); // dalla maschera
const long numero = eff.get_long(EFF_NPROGTR); m.set(F_CODCABP, e.get("CODCABP"));
riga.add(numero); for (int i = 0; i < items; i++)
riga.add(eff.get(EFF_DATASCAD)); {
//prendo la ragione sociale del cliente conoscendone il codice TEffetto& eff = (TEffetto&)righedist[i];
long codcf = eff.get_long(EFF_CODCF); riga.cut(0);
_clifo->zero(); riga.add(' ');
_clifo->put(CLI_TIPOCF , 'C'); const long numero = eff.get_long(EFF_NPROGTR);
_clifo->put(CLI_CODCF, codcf); riga.add(numero);
if (_clifo->read() == NOERR) riga.add(_clifo->get(CLI_RAGSOC)); riga.add(eff.get(EFF_DATASCAD));
if (eff.fatt(numero))// se l'effetto contiene solo una fattura //prendo la ragione sociale del cliente conoscendone il codice
{ // metto i riferimenti al documento ed al numero di rata const long codcf = eff.get_long(EFF_CODCF);
const TRectype& rec_r = eff.row_r(1); _clifo->zero();
riga.add(rec_r.get(REFF_NFATT)); _clifo->put(CLI_TIPOCF , 'C');
riga.add(rec_r.get(REFF_DATAFATT)); _clifo->put(CLI_CODCF, codcf);
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA)); if (_clifo->read() == NOERR)
else riga.add(("Varie")); riga.add(_clifo->get(CLI_RAGSOC));
} else
else// se l'effetto contiene più di una fattura riga.add("");
{ // non metto i riferimenti al documento ed al numero di rata if (eff.fatt(numero))// se l'effetto contiene solo una fattura
riga.add(("Varie")); { // metto i riferimenti al documento ed al numero di rata
riga.add(("Varie")); const TRectype& rec_r = eff.row_r(1);
riga.add(("Varie")); riga.add(rec_r.get(REFF_NFATT));
} riga.add(rec_r.get(REFF_DATAFATT));
//gestisco il controllo sulla presenza o meno di una valuta if (eff.rows_r() == 1)
TString codval(3); riga.add(rec_r.get(REFF_NRATA));
codval = eff.get(EFF_CODVAL); else
if (i == 0) riga.add("Varie");
{ }
const bool condition = (codval.empty() || codval == "LIT"); else// se l'effetto contiene più di una fattura
m.enable(F_CODVAL, !condition); { // non metto i riferimenti al documento ed al numero di rata
m.enable(F_TOTIMPVAL, !condition); riga.add("Varie");
if (!condition) riga.add("Varie");
riga.add("Varie");
}
//gestisco il controllo sulla presenza o meno di una valuta
const TString16 codval(eff.get(EFF_CODVAL));
if (i == 0)
{
const bool valuta = (codval.not_empty() && codval != "LIT");
m.set(F_CODVAL, codval); m.set(F_CODVAL, codval);
m.enable(F_CODVAL, valuta);
}
riga.add(codval);
riga.add(eff.get(EFF_IMPORTO));
riga.add(eff.get(EFF_IMPORTOVAL));
shrighe.row(i) = riga;
} }
riga.add(codval);
riga.add(eff.get(EFF_IMPORTO));
riga.add(eff.get(EFF_IMPORTOVAL));
shrighe.row(i) = riga;
} }
} }
} }
return err; return err;
} }
// Si prendono tutte le righe dello sheet e si controlla il primo campo
// se e' a true si distrugge la riga e si aggiorna il file.
// GLI EFFETTI PRESENTI NELLO SHEET DEVONO GIA ESSERE STATI REGISTRATI
// NEL FILE.
void TVariazione_distinte::elimina()
{
TEffetto eff;
TLocalisamfile file(LF_EFFETTI);
char tipodist = _msk->get(F_TIPODIST)[0];
long ndist = _msk->get_long(F_NUMBER);
TDistinta* distinta = app()._distinta;
TSheet_field& sf = (TSheet_field&)_msk->field(F_SHEET_RIBA);
bool condition = FALSE, deleted = FALSE;
TArray& righedist = distinta->righe();
//ciclo sugli elementi dello sheet
for (int i = 0, k = i+1; i < sf.items(); i++, k++)
{
// per posizionarsi correttamente sulla prima riga dello sheet
// se ci sono state già delle cancellazioni
if (deleted) i--;
if (sf.items() == 1)
{ // non posso cancellare l'effetto se è l'unico della distinta
error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
break;
}
TToken_string& row = sf.row(i);
condition = *row.get(0) == 'X';
if (condition)
{
long num = row.get_long(1);
//ciclo sugli elementi dell'array
for (int j = 0; j < distinta->items(); j++)
{
TEffetto& eff = (TEffetto&)righedist[j];
long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num)
{
// tolgo l'effetto dall'array
righedist.destroy(j,TRUE);
break;
}
}
// tolgo l'effetto dallo sheet
sf.destroy(i); deleted = TRUE;
eff.read(file, tipodist, ndist, k);
eff.zero(EFF_TIPODIST);
eff.zero(EFF_NDIST);
eff.zero(EFF_DATADIST);
eff.zero(EFF_NRIGADIST);
eff.zero(EFF_CODABIP);
eff.zero(EFF_CODCABP);
eff.rewrite(file);
}
else deleted = FALSE;
}
}
// riscrive distinta // riscrive distinta
int TVariazione_distinte::rewrite(const TMask& m) int TVariazione_distinte::rewrite(const TMask& m)
{ {
// prima di riscrive controllo se ci sono effetti nello sheet // prima di riscrive controllo se ci sono effetti nello sheet
// selezionati per l'eliminazione // selezionati per l'eliminazione
TEffetto eff;
TLocalisamfile file(LF_EFFETTI);
const char tipodist = _msk->get(F_TIPODIST)[0];
const long ndist = _msk->get_long(F_NUMBER);
TDistinta * distinta = app()._distinta;
TSheet_field& sf = righe_sheet(); TSheet_field& sf = righe_sheet();
bool condition = FALSE; int items = sf.items();
for (int i = 0; i < sf.items(); i++) int to_delete = 0;
for (int i = items - 1; i >= 0 ; i--)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
// se trovo un effetto selezionato esco dal ciclo if (*row.get(0) == 'X') // to delete
if (condition = *row.get(0) == 'X') break; to_delete++;
} }
if (condition) if (items <= to_delete)
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati")) { // non posso cancellare tutti gli effetti di una distinta
elimina(); error_box("Impossibile escludere tutti gli effetti dalla distinta.\n Utilizzare elimina per cancellarla.");
return NOERR;
}
if (to_delete > 0)
{
TArray& righedist = distinta->righe();
//ciclo sugli elementi dello sheet
for (int i = items - 1; i >= 0; i--)
{
TToken_string& row = sf.row(i);
if (*row.get(0) == 'X') // to delete
{
const long num = row.get_long(1);
//ciclo sugli elementi dell'array
for (int j = 0; j < distinta->items(); j++)
{
TEffetto& eff = (TEffetto&)righedist[j];
if (num == eff.get_long(EFF_NPROGTR))
{
// tolgo l'effetto dall'array
righedist.destroy(j,TRUE);
break;
}
}
// tolgo l'effetto dallo sheet
sf.destroy(i);
eff.read(file, tipodist, ndist, i + 1);
eff.zero(EFF_TIPODIST);
eff.zero(EFF_NDIST);
eff.zero(EFF_DATADIST);
eff.zero(EFF_NRIGADIST);
eff.zero(EFF_CODABIP);
eff.zero(EFF_CODCABP);
eff.rewrite(file);
}
}
}
//resetto l'array che contiene gli effetti nella distinta //resetto l'array che contiene gli effetti nella distinta
int err = _distinta->reset(); int err = _distinta->reset();
char tipodist = m.get(F_TIPODIST)[0];
long ndist = m.get_long(F_NUMBER);
aggiorna(); aggiorna();
err = _distinta->rewrite(common_f(m)); err = _distinta->rewrite(common_f(m));
if (err == NOERR) if (err == NOERR)
@ -408,7 +372,6 @@ bool TVariazione_distinte::user_create()
_clifo = new TLocalisamfile(LF_CLIFO); _clifo = new TLocalisamfile(LF_CLIFO);
_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
_msk->set_handler(F_CODVAL, codval_handler);
_msk->set_handler(F_TIPODIST, tipodist_handler); _msk->set_handler(F_TIPODIST, tipodist_handler);
_msk->set_handler(F_IMP, importo_handler); _msk->set_handler(F_IMP, importo_handler);
_m2->set_handler(F_TOTIMPDIST, imp_aut_handler); _m2->set_handler(F_TOTIMPDIST, imp_aut_handler);
@ -446,7 +409,7 @@ void TVariazione_distinte::carica_riba(int tipopag)
// distinta quindi setta i campi ad essa relativi a zero // distinta quindi setta i campi ad essa relativi a zero
char tipodist = 0; char tipodist = 0;
long ndist = 0; long ndist = 0;
long nrigadist = 0; int nrigadist = 0;
TEffetto eff; TEffetto eff;
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
@ -461,80 +424,68 @@ void TVariazione_distinte::carica_riba(int tipopag)
int tipop = eff.get_int(EFF_TIPOPAG); int tipop = eff.get_int(EFF_TIPOPAG);
while ( (err == NOERR) && (tipodist == 0)) while ( (err == NOERR) && (tipodist == 0))
{ {
bool condition = (tipopag == tipop);
// se effetti di tipo cambiario (pagherò, tratta, tratta accettata) // se effetti di tipo cambiario (pagherò, tratta, tratta accettata)
if (tipopag == 2 || tipopag ==5 || tipopag == 7)
condition = (tipop == 2 || tipop ==5 || tipop == 7);
// se non indico un tipo di effetto prendo il tipo del primo che // se non indico un tipo di effetto prendo il tipo del primo che
// seleziono // seleziono
if (tipopag == 0) condition =TRUE; const bool to_select = (tipopag == 0) || (tipopag == tipop) ||
if (condition) ((tipopag == 2 || tipopag ==5 || tipopag == 7) &&
(tipop == 2 || tipop ==5 || tipop == 7));
if (to_select)
{ {
riga.cut(0); riga.cut(0);
riga.add(' '); riga.add(' ');
const long numero = eff.get_long(EFF_NPROGTR); const long numero = eff.get_long(EFF_NPROGTR);
riga.add(numero); riga.add(numero);
riga.add(eff.get(EFF_DATASCAD)); riga.add(eff.get(EFF_DATASCAD));
long codcf = eff.get_long(EFF_CODCF); long codcf = eff.get_long(EFF_CODCF);
clifo->zero(); clifo->zero();
clifo->put(CLI_TIPOCF, 'C'); clifo->put(CLI_TIPOCF, 'C');
clifo->put(CLI_CODCF, codcf); clifo->put(CLI_CODCF, codcf);
if (clifo->read() == NOERR) riga.add(clifo->get(CLI_RAGSOC)); if (clifo->read() == NOERR)
if (eff.fatt(numero))// se l'effetto contiene solo una fattura riga.add(clifo->get(CLI_RAGSOC));
{ // metto i riferimenti al documento ed al numero di rata else
const TRectype& rec_r = eff.row_r(1); riga.add("");
riga.add(rec_r.get(REFF_NFATT)); if (eff.fatt(numero))// se l'effetto contiene solo una fattura
riga.add(rec_r.get(REFF_DATAFATT)); { // metto i riferimenti al documento ed al numero di rata
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA)); const TRectype& rec_r = eff.row_r(1);
else riga.add(("Varie")); riga.add(rec_r.get(REFF_NFATT));
} riga.add(rec_r.get(REFF_DATAFATT));
else// se l'effetto contiene più di una fattura if (eff.rows_r() == 1)
{ // non metto i riferimenti al documento ed al numero di rata riga.add(rec_r.get(REFF_NRATA));
riga.add(("Varie")); else
riga.add(("Varie")); riga.add(("Varie"));
riga.add(("Varie")); }
} else// se l'effetto contiene più di una fattura
riga.add(eff.get(EFF_CODVAL)); { // non metto i riferimenti al documento ed al numero di rata
riga.add(eff.get(EFF_IMPORTO)); riga.add(("Varie"));
riga.add(eff.get(EFF_IMPORTOVAL)); riga.add(("Varie"));
sf.row(i) = riga; riga.add(("Varie"));
i++; }
riga.add(eff.get(EFF_CODVAL));
riga.add(eff.get(EFF_IMPORTO));
riga.add(eff.get(EFF_IMPORTOVAL));
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
tipodist = eff.get(EFF_TIPODIST)[0];// e ne prendo il tipo distinta tipodist = eff.get(EFF_TIPODIST)[0];// e ne prendo il tipo distinta
if (tipopag == 0)
tipopag = tipop;
tipop = eff.get_int(EFF_TIPOPAG); tipop = eff.get_int(EFF_TIPOPAG);
} }
} }
// Handler che permette il controllo sulla abilitazione dei campi
// collegati al codice valuta
bool TVariazione_distinte::codval_handler(TMask_field& f, KEY k)
{
TMask &m = f.mask();
TString val(f.get());
if (f.to_check(k, TRUE))
{
const bool condition = (val == "LIT" || val.empty());
m.enable(F_TOTIMPVAL,!condition);
if (condition)
m.reset(F_TOTIMPVAL);
}
return TRUE;
}
// Handler per gestire il fatto che una distinta allo sconto può // Handler per gestire il fatto che una distinta allo sconto può
// contenere solo effetti cambiari // contenere solo effetti cambiari
bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k) bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k)
{ {
TMask &m = f.mask(); if (k == K_SPACE)
char tipo(f.get()[0]); {
if(k == K_SPACE) TMask &m = f.mask();
{ const bool allo_sconto = f.get()[0] == 'S';
if(tipo == 'S')
m.set(F_TIPOPAG,2); m.enable(F_TIPOPAG, !allo_sconto);
if (allo_sconto)
m.set(F_TIPOPAG,2);
} }
return TRUE; return TRUE;
} }
@ -544,22 +495,22 @@ bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k)
// princiapale) // princiapale)
bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k) bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
{ {
TMask& m = f.mask(); if (k == K_TAB && f.to_check(k, TRUE))
TSheet_field& sf_riba = (TSheet_field&)m.field(F_SHEET_RIBA);
if (f.to_check(k, TRUE))
{ {
TMask& m = f.mask();
const TString16 codval = m.get(F_CODVAL);
const bool valuta = codval.not_empty() && codval != "LIT";
TSheet_field& sf_riba = (TSheet_field&)m.field(F_SHEET_RIBA);
const int mode = m.mode(); const int mode = m.mode();
if( mode == MODE_INS || mode == MODE_MOD ) if( mode == MODE_INS || mode == MODE_MOD)
{ {
TMask* m2 = app()._m2; TMask* m2 = app()._m2;
long imp_pres = m.get_long(F_TOTIMP);// importo presentato real impdist = m.get_real(F_IMP) - m.get_real(F_TOTIMP);
long imp = m.get_long(F_IMP);// importo distinta const int tipopag = m.get_int(F_TIPOPAG);
long impdist = imp - imp_pres;
int tipopag = m.get_int(F_TIPOPAG);
// se importo distinta maggiore importo presentato si devono andare a // se importo distinta maggiore importo presentato si devono andare a
// caricare effetti in automatico per un valore minore uguale alla // caricare effetti in automatico per un valore minore uguale alla
// differenza dei suddetti importi // differenza dei suddetti importi
if (impdist > 0) if (impdist > ZERO)
{ {
app().begin_wait(); app().begin_wait();
carica_riba(tipopag); carica_riba(tipopag);
@ -568,12 +519,15 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
m2->reset(F_IMPSEL); m2->reset(F_IMPSEL);
m2->set(F_TOTIMPDIST, impdist); m2->set(F_TOTIMPDIST, impdist);
m2->run(); m2->run();
} calcola_totale();
if (impdist < 0) }
error_box("Il valore di presentazione non può superare l'importo della distinta"); else
if (impdist < ZERO)
error_box("Il valore di presentazione non può superare l'importo della distinta");
} }
if (f.focusdirty())
sf_riba.force_update();
} }
sf_riba.force_update();
return TRUE; return TRUE;
} }
@ -586,71 +540,57 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
// se quando si entra nell maschera il campo contiene un valore // se quando si entra nell maschera il campo contiene un valore
// significa che si deve procedere con il caricamento automatico // significa che si deve procedere con il caricamento automatico
// di effetti per l'importo iscritto nel campo // di effetti per l'importo iscritto nel campo
if (f.to_check(k, TRUE)) if (k == K_TAB && f.to_check(k, TRUE))
{ {
TMask* m = app()._msk; TMask* m = app()._msk;
TSheet_field& sf = (TSheet_field&)m2.field(F_SHEET); TSheet_field& sf = (TSheet_field&)m2.field(F_SHEET);
TSheet_field& sf_riba = (TSheet_field&)m->field(F_SHEET_RIBA); TSheet_field& sf_riba = (TSheet_field&)m->field(F_SHEET_RIBA);
long impdist = m->get_long(F_IMP) - m->get_long(F_TOTIMP); const real impdist = m->get_real(F_IMP) - m->get_real(F_TOTIMP);
long tot_imp_dist = m2.get_long(F_TOTIMPDIST), real res = m2.get_real(F_TOTIMPDIST);
impsel = 0; if (res > ZERO && impdist > ZERO)
if (tot_imp_dist != 0 && impdist != 0)
{ // se i due importi sono diversi da zero { // se i due importi sono diversi da zero
TString val = m->get(F_CODVAL); TString val = m->get(F_CODVAL);
if (val == "LIT")
val.cut(0);
int items = sf.items(); int items = sf.items();
// cerca se esiste un effetto con importo uguale a quello // cerca se esiste un effetto con importo uguale a quello
// da caricare // da caricare
bool caricato = FALSE; for (int i = 0; i < items; i++)
for(int i = 0; i < items && !caricato; i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
TString codval = row.get(7); TString16 codval = row.get(sf.cid2index(F_VALUTA));
// se la valuta non appare o è lire faccio in modo che vengano // se la valuta non appare o è lire faccio in modo che vengano
// presi gli effetti con valuta inesistente // presi gli effetti con valuta inesistente
if (codval == " " || codval == "LIT") if (codval == " " || codval == "LIT")
codval.trim(); codval.cut(0);
long imp = row.get_long(8); const bool valuta = codval.not_empty();
if (imp == tot_imp_dist && codval == val) const real imp(row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
{ if (imp == res && codval == val)
row.add('X',0); {
impsel += imp; row.add('X', 0);
caricato = TRUE; res = ZERO;
} }
} }
// se non esiste un effetto con importo uguale a quello // se non esiste un effetto con importo uguale a quello
// da caricare carico l'importo sommando più effetti // da caricare carico l'importo sommando più effetti
if (!caricato) for (i = 0; res > ZERO && i < items; i++)
{ {
for(int i = 0; i < items; i++) TToken_string& row = sf.row(i);
{ TString16 codval = row.get(sf.cid2index(F_VALUTA));
TToken_string& row = sf.row(i); if (codval == " " || codval == "LIT")
TString codval = row.get(7); codval.cut(0);
// se la valuta non appare o è lire faccio in modo che const bool valuta = codval.not_empty();
// vengano presi gli effetti con valuta inesistente const real imp = (row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
if (codval == " " || codval == "LIT") // se l'importo, della riga corrente dello sheet, è minore
codval.trim(); // dell 'importo che si deve caricare e se lo rimane anche
long imp = row.get_long(8); // sommato all'importo già selezionato, si procede a rendere
// se l'importo, della riga corrente dello sheet, è minore // la riga selezionata per il caricamento
// dell 'importo che si deve caricare e se lo rimane anche if (codval == val && imp <= res)
// sommato all'importo già selezionato, si procede a rendere {
// la riga selezionata per il caricamento row.add('X',0);
if ((imp <= tot_imp_dist) && ((impsel+imp) <= tot_imp_dist)) res -= imp;
{ }
if ((sf_riba.items() == 0) && (val.empty()|| val == "LIT"))//se non è stata specificata una valuta si prende quella del }
{ //primo effetto che si carica nella distinta
m->set(F_CODVAL, codval);
val = m->get(F_CODVAL);
}
if (codval == val)
{
row.add('X',0);
impsel += imp;
}
}
if (impsel <= tot_imp_dist) continue;
else break;
}
}
sf.force_update(); sf.force_update();
calcola(); calcola();
} }
@ -662,30 +602,27 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
// per l'aggiunta delle riba (ef0300c) // per l'aggiunta delle riba (ef0300c)
bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k) bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
{ {
TMask* msk = app()._msk; if (k == K_ENTER)
TSheet_field& sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
if (k==K_ENTER)
{ {
TMask * msk = app()._msk;
TSheet_field & sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
TMask& m = f.mask(); TMask& m = f.mask();
m.close(); // chiudo la maschera secondaria m.close(); // chiudo la maschera secondaria
// scarico tutte le righe, selezionate, dello sheet della maschera // scarico tutte le righe, selezionate, dello sheet della maschera
// secondaria nello sheet della maschera primaria della relap (ef0300a) // secondaria nello sheet della maschera primaria della relap (ef0300a)
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET); TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
int items = sf.items(); int items = sf.items();
bool condition = FALSE;
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
condition = *row.get(0)== 'X'; if (*row.get(0) == 'X') // selected
if (condition)
{ {
row[0] = ' '; row.add(" ", 0);
sf_riba.row(-1) = row; sf_riba.row(-1) = row;
} }
} }
} }
sf_riba.force_update();// obbligo all'aggiornamento dello sheet
calcola_totale(); // obbligo al ricalcolo del totale
return TRUE; return TRUE;
} }
@ -856,30 +793,23 @@ void TVariazione_distinte::calcola_totale()
{ {
TMask* m = app()._msk; TMask* m = app()._msk;
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET_RIBA); TSheet_field& sf = (TSheet_field&)m->field(F_SHEET_RIBA);
int items = sf.items(); const int items = sf.items();
real imp, impval, impdist, impdistval; real impdist;
const TString16 codval = m->get(F_CODVAL);
const bool valuta = codval.not_empty() && codval != "LIT";
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
// se l'effetto è selezionato per l'eliminazione tolgo il suo importo // se l'effetto è selezionato per l'eliminazione tolgo il suo importo
// dal totale presentazione della distinta // dal totale presentazione della distinta
bool condition = *row.get(0) == 'X';
if (condition) if (*row.get(0) != 'X') // valido (not to delete)
{ {
imp = row.get(8); const real imp = row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO));
impdist -= imp; impdist += imp;
impval = row.get(9); }
impdistval -= impval;
}
// se l'effetto no è selzionato aggiungo il suo importo al totale
// presentazione della distinta
imp = row.get(8);
impdist += imp;
impval = row.get(9);
impdistval += impval;
} }
m->set(F_TOTIMP, impdist); m->set(F_TOTIMP, impdist);
m->set(F_TOTIMPVAL, impdistval);
m->set(F_IMP, impdist); m->set(F_IMP, impdist);
} }
@ -890,29 +820,32 @@ void TVariazione_distinte::calcola()
TMask* m2 = app()._m2; TMask* m2 = app()._m2;
TMask* m = app()._msk; TMask* m = app()._msk;
TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET); TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET);
int items = sf.items(); const int items = sf.items();
real imp, impsel; real impsel;
long imp_pres = m->get_long(F_TOTIMP); const real imp_pres = m->get_long(F_TOTIMP);
long importo = m->get_long(F_IMP); const real importo = m->get_long(F_IMP);
long impdist = importo - imp_pres; const real impdist = importo - imp_pres;
if (impdist == 0) const TString16 codval = m->get(F_CODVAL);
m2->set(F_TOTIMPDIST, importo); const bool valuta = codval.not_empty() && codval != "LIT";
m2->set(F_IMPSEL, impsel);
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
// se l'effetto è selezionato aggiungo il suo importo al totale importo // se l'effetto è selezionato aggiungo il suo importo al totale importo
// selezionato // selezionato
bool condition = *row.get(0) == 'X'; if (*row.get(0) == 'X')
if (condition)
{ {
imp = row.get(8); const real imp(row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
impsel += imp; impsel += imp;
m2->set(F_IMPSEL, impsel);
if (impdist == 0 && imp_pres == 0)
m2->set(F_TOTIMPDIST, impsel);
} }
} }
m2->set(F_IMPSEL, impsel);
if (impdist == ZERO)
{
if (imp_pres == ZERO)
m2->set(F_TOTIMPDIST, impsel);
else
m2->set(F_TOTIMPDIST, importo);
}
} }
// Notify per il calcolo dei totali relativi alla selezione effetti // Notify per il calcolo dei totali relativi alla selezione effetti
@ -937,7 +870,8 @@ void TVariazione_distinte::aggiungi()
app().end_wait(); app().end_wait();
m2->reset(F_TOTIMPDIST); m2->reset(F_TOTIMPDIST);
m2->reset(F_IMPSEL); m2->reset(F_IMPSEL);
m2->run(); m2->run();
calcola_totale();
} }
// Notify per il calcolo dei totali relativi alla distinta // Notify per il calcolo dei totali relativi alla distinta
@ -954,6 +888,6 @@ bool TVariazione_distinte::impdist_notify(TSheet_field& s, int r, KEY key)
int ef0300(int argc, char* argv[]) int ef0300(int argc, char* argv[])
{ {
TVariazione_distinte a ; TVariazione_distinte a ;
a.run(argc, argv, "Variazione Distinte"); a.run(argc, argv, "Distinte di presentazione");
return 0; return 0;
} }

View File

@ -13,7 +13,6 @@
#define F_CODCABP 107 #define F_CODCABP 107
#define F_TOTIMP 108 #define F_TOTIMP 108
#define F_IMP 109 #define F_IMP 109
#define F_TOTIMPVAL 110
#define F_CODVAL 111 #define F_CODVAL 111
#define F_TIPOPAG 112 #define F_TIPOPAG 112
#define F_SHEET_RIBA 113 #define F_SHEET_RIBA 113

View File

@ -13,78 +13,59 @@ BEGIN
END END
LIST F_TIPODIST 17 LIST F_TIPODIST 17
BEGIN BEGIN
PROMPT 2 1 "Tipo Distinta " PROMPT 2 1 "Tipo Distinta "
KEY 4 KEY 4
FIELD LF_EFFETTI->TIPODIST FIELD LF_EFFETTI->TIPODIST
ITEM "I|All'incasso" ITEM "I|All'incasso"
ITEM "B|Salvo buon fine" ITEM "B|Salvo buon fine"
ITEM "S|Allo sconto" ITEM "S|Allo sconto"
END END
LIST F_NUMBERRIGA 12 LIST F_NUMBERRIGA 12
BEGIN BEGIN
PROMPT 1 60 "Numero Riga Distinta " PROMPT 1 60 "Numero Riga Distinta "
KEY 4 KEY 4
FIELD LF_EFFETTI->NRIGADIST FIELD LF_EFFETTI->NRIGADIST
ITEM "1|PRIMA RIGA" ITEM "1|PRIMA RIGA"
FLAGS "D" FLAGS "D"
END END
NUMBER F_NUMBER 7 NUMBER F_NUMBER 5
BEGIN BEGIN
PROMPT 48 1 "Numero Distinta " PROMPT 48 1 "Numero Distinta "
FIELD LF_EFFETTI->NDIST FIELD LF_EFFETTI->NDIST
FLAGS "R" FLAGS "R"
KEY 4 KEY 4
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1 USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
INPUT NDIST F_NUMBER INPUT NDIST F_NUMBER
INPUT TIPODIST F_TIPODIST INPUT TIPODIST F_TIPODIST
INPUT NRIGADIST F_NUMBERRIGA INPUT NRIGADIST F_NUMBERRIGA
DISPLAY "Nr. distinta" NDIST DISPLAY "Nr. distinta" NDIST
DISPLAY "Tipo distinta" TIPODIST DISPLAY "Tipo distinta" TIPODIST
OUTPUT F_NUMBER NDIST OUTPUT F_NUMBER NDIST
OUTPUT F_TIPODIST TIPODIST OUTPUT F_TIPODIST TIPODIST
OUTPUT F_NUMBERRIGA NRIGADIST OUTPUT F_NUMBERRIGA NRIGADIST
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
DATE F_DATA DATE F_DATA
BEGIN BEGIN
PROMPT 2 2 "Data Distinta " PROMPT 2 2 "Data Distinta "
FIELD LF_EFFETTI->DATADIST FIELD LF_EFFETTI->DATADIST
END END
TEXT DLG_NULL
BEGIN
PROMPT 2 3 "Banca di Presentazione "
END
STRING F_DENBANP 50
BEGIN
PROMPT 26 3 ""
FLAGS "U"
USE %BAN KEY 2
INPUT S0 F_DENBANP
DISPLAY "Denominazione@50" S0
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Codice CAB" CODTAB[6,10]
OUTPUT F_DENBANP S0
OUTPUT F_CODABIP CODTAB[1,5]
OUTPUT F_CODCABP CODTAB[6,10]
END
NUMBER F_CODABIP 5 0 NUMBER F_CODABIP 5 0
BEGIN BEGIN
PROMPT 15 4 "Codice ABI " PROMPT 15 3 "Codice ABI "
FIELD LF_EFFETTI->CODABIP FIELD LF_EFFETTI->CODABIP
FLAGS "RZ" FLAGS "RZ"
USE %BAN KEY 1 SELECT CODTAB ?= "?????" USE %BAN KEY 1 SELECT CODTAB ?= "?????"
INPUT CODTAB F_CODABIP INPUT CODTAB F_CODABIP
DISPLAY "Codice ABI" CODTAB[1,5] DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
OUTPUT F_CODABIP CODTAB[1,5] OUTPUT F_CODABIP CODTAB[1,5]
OUTPUT F_CODCABP CODTAB[6,10] OUTPUT F_CODCABP CODTAB[6,10]
OUTPUT F_DENBANP S0 OUTPUT F_DENBANP S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "Codice ABI assente" WARNING "Codice ABI assente"
@ -92,45 +73,53 @@ END
NUMBER F_CODCABP 5 0 NUMBER F_CODCABP 5 0
BEGIN BEGIN
PROMPT 15 5 "Codice CAB " PROMPT 15 4 "Codice CAB "
FIELD LF_EFFETTI->CODCABP FIELD LF_EFFETTI->CODCABP
FLAGS "RZ" FLAGS "RZ"
USE %BAN KEY 1 SELECT CODTAB ?= "??????????" USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
INPUT CODTAB[1,5] F_CODABIP INPUT CODTAB[1,5] F_CODABIP
INPUT CODTAB[6,10] F_CODCABP INPUT CODTAB[6,10] F_CODCABP
DISPLAY "Codice ABI" CODTAB[1,5] DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Codice CAB" CODTAB[6,10] DISPLAY "Codice CAB" CODTAB[6,10]
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
OUTPUT F_CODABIP CODTAB[1,5] OUTPUT F_CODABIP CODTAB[1,5]
OUTPUT F_CODCABP CODTAB[6,10] OUTPUT F_CODCABP CODTAB[6,10]
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_CODCABP VALIDATE REQIF_FUNC 1 F_CODCABP
WARNING "Banca assente" WARNING "Banca assente"
END END
NUMBER F_TOTIMP 18 2 STRING F_DENBANP 50
BEGIN BEGIN
PROMPT 2 6 "Valore di presentazione " PROMPT 2 5 "Banca di Presentazione "
PICTURE "###.###.###.###,@@" FLAGS "U"
USE %BAN KEY 2
INPUT S0 F_DENBANP
DISPLAY "Denominazione@50" S0
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Codice CAB" CODTAB[6,10]
OUTPUT F_DENBANP S0
OUTPUT F_CODABIP CODTAB[1,5]
OUTPUT F_CODCABP CODTAB[6,10]
END END
NUMBER F_IMP 18 2 LIST F_TIPOPAG 24
BEGIN BEGIN
PROMPT 2 7 "Importo Distinta " PROMPT 2 6 "Tipo Effetti "
PICTURE "###.###.###.###,@@" FIELD LF_EFFETTI->TIPOPAG
NUM_EXPR #F_IMP>=#F_TOTIMP ITEM "2|Tratta"
WARNING "Il valore di presentazione non puo' superare l'importo della distinta" ITEM "3|Ricevuta Bancaria"
ITEM "4|Cessione"
ITEM "5|Paghero'"
ITEM "6|Lettera di credito"
ITEM "7|Tratta accettata"
ITEM "8|Rapporti interb. diretti"
ITEM "9|Bonifico"
END END
NUMBER F_TOTIMPVAL 18 3
BEGIN
PROMPT 2 8 "Valore di pres. in val. "
PICTURE "###.###.###.###,@@@"
END
STRING F_CODVAL 3 STRING F_CODVAL 3
BEGIN BEGIN
PROMPT 48 8 "Codice Valuta " PROMPT 2 7 "Codice Valuta "
FLAGS "UZ" FLAGS "UZ"
USE %VAL USE %VAL
INPUT CODTAB F_CODVAL INPUT CODTAB F_CODVAL
@ -139,33 +128,33 @@ BEGIN
OUTPUT F_CODVAL CODTAB OUTPUT F_CODVAL CODTAB
END END
LIST F_TIPOPAG 24 NUMBER F_IMP 18 2
BEGIN BEGIN
PROMPT 2 9 "Tipo Effetto " PROMPT 2 8 "Importo Distinta "
FIELD LF_EFFETTI->TIPOPAG PICTURE "###.###.###.###,@@"
ITEM "0| " NUM_EXPR #F_IMP>=#F_TOTIMP
ITEM "2|Effetto cambiario" WARNING "Il valore di presentazione non puo' superare l'importo della distinta"
ITEM "3|Ricevuta Bancaria" END
ITEM "4|Cessione"
ITEM "5|Effetto cambiario" NUMBER F_TOTIMP 18 2
ITEM "6|Lettera di credito" BEGIN
ITEM "7|Effetto cambiario" PROMPT 2 9 "Valore di presentazione "
ITEM "8|Rapporti interb.diretti" FLAGS "D"
ITEM "9|Bonifici" PICTURE "###.###.###.###,@@"
END END
SPREADSHEET F_SHEET_RIBA 78 6 SPREADSHEET F_SHEET_RIBA 78 6
BEGIN BEGIN
PROMPT 1 12 "RIGHE DISTINTA" PROMPT 1 12 "RIGHE DISTINTA"
ITEM "" ITEM "Da elim."
ITEM "Nr. Ri.Ba." ITEM "Nr. Ri.Ba."
ITEM "Scadenza" ITEM "Scadenza"
ITEM "Cliente@50" ITEM "Cliente@50"
ITEM "Nr. Fattura" ITEM "Nr. Fattura"
ITEM "Data Fattura" ITEM "Data Fattura"
ITEM "Nr. Rata" ITEM "Nr. Rata"
ITEM "Valuta" ITEM "Valuta"
ITEM "Importo" ITEM "Importo"
ITEM "Importo Val." ITEM "Importo Val."
END END

View File

@ -3,11 +3,9 @@
PAGE "Righe Distinta" -1 -1 63 13 PAGE "Righe Distinta" -1 -1 63 13
LISTBOX F_CHECK 5 BOOLEAN F_CHECK
BEGIN BEGIN
PROMPT 2 1 "Selezionato " PROMPT 2 1 "Da eliminare "
ITEM " |FALSE"
ITEM "X|TRUE"
END END
NUMBER F_NRIBA 7 NUMBER F_NRIBA 7

View File

@ -21,7 +21,7 @@ END
LIST F_TIPORD 14 LIST F_TIPORD 14
BEGIN BEGIN
PROMPT 2 4 "Tipo Ordinamento " PROMPT 2 4 "Tipo Ordinamento "
ITEM " |** Nessuno **" ITEM " | "
ITEM "S|Scadenza " ITEM "S|Scadenza "
ITEM "F|Fattura " ITEM "F|Fattura "
END END
@ -29,7 +29,7 @@ END
SPREADSHEET F_SHEET 74 9 SPREADSHEET F_SHEET 74 9
BEGIN BEGIN
PROMPT 2 6 "EFFETTI SELEZIONABILI" PROMPT 2 6 "EFFETTI SELEZIONABILI"
ITEM "" ITEM "Sel."
ITEM "Nr. Ri.Ba." ITEM "Nr. Ri.Ba."
ITEM "Scadenza" ITEM "Scadenza"
ITEM "Cliente@50" ITEM "Cliente@50"
@ -65,4 +65,4 @@ END
ENDPAGE ENDPAGE
ENDMASK ENDMASK
#include "EF0300B.UML" #include "ef0300d.uml"

View File

@ -28,7 +28,7 @@ BEGIN
ITEM "S| Allo sconto" ITEM "S| Allo sconto"
END END
NUMBER F_NUMBER 7 NUMBER F_NUMBER 5
BEGIN BEGIN
PROMPT 43 5 "Numero Distinta " PROMPT 43 5 "Numero Distinta "
FLAGS "R" FLAGS "R"

View File

@ -115,13 +115,13 @@ BEGIN
PROMPT 4 9 " " PROMPT 4 9 " "
KEY 4 KEY 4
GROUP 3 GROUP 3
ITEM " |** Nessuno **" ITEM " | "
ITEM "I|All'incasso" ITEM "I|All'incasso"
ITEM "B|Salvo buon fine" ITEM "B|Salvo buon fine"
ITEM "S|Allo sconto" ITEM "S|Allo sconto"
END END
NUMBER F_DADIST 7 NUMBER F_DADIST 5
BEGIN BEGIN
PROMPT 4 10 " " PROMPT 4 10 " "
FLAGS "R" FLAGS "R"
@ -150,13 +150,13 @@ BEGIN
PROMPT 31 9 " " PROMPT 31 9 " "
GROUP 3 GROUP 3
KEY 4 KEY 4
ITEM " |** Nessuno **" ITEM " | "
ITEM "I|All'incasso" ITEM "I|All'incasso"
ITEM "B|Salvo buon fine" ITEM "B|Salvo buon fine"
ITEM "S|Allo sconto" ITEM "S|Allo sconto"
END END
NUMBER F_ADIST 7 NUMBER F_ADIST 5
BEGIN BEGIN
PROMPT 31 10 " " PROMPT 31 10 " "
FLAGS "R" FLAGS "R"