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:
parent
7affcbf253
commit
368454c533
@ -311,7 +311,7 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
||||
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
if (f.to_check(k, TRUE))
|
||||
if (k == K_TAB && f.to_check(k, TRUE))
|
||||
{
|
||||
const TString & val = f.get();
|
||||
// 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_IMPEFFVAL, valuta);
|
||||
sf.force_update();
|
||||
if (f.focusdirty())
|
||||
sf.force_update();
|
||||
}
|
||||
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_NUMPART, da_contab);
|
||||
sf.force_update();
|
||||
if (f.focusdirty())
|
||||
sf.force_update();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -29,10 +29,6 @@ BEGIN
|
||||
DISPLAY "Nr. distinta" NDIST
|
||||
DISPLAY "Ragione Sociale Cliente@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_NPROGTR NPROGTR
|
||||
// OUTPUT F_CODCF CODCF
|
||||
// OUTPUT F_DATASCAD DATASCAD
|
||||
// OUTPUT F_TIPOPAG TIPOPAG
|
||||
// OUTPUT F_CFRAGSOC LF_CLIFO->RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,10@
|
||||
END
|
||||
@ -337,7 +333,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NDIST 8
|
||||
NUMBER F_NDIST 5
|
||||
BEGIN
|
||||
PROMPT 42 13 "Nr. distinta "
|
||||
FIELD NDIST
|
||||
@ -353,7 +349,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NRIGADIST 6
|
||||
NUMBER F_NRIGADIST 4
|
||||
BEGIN
|
||||
PROMPT 42 14 "Nr. di riga "
|
||||
FIELD NRIGADIST
|
||||
|
608
ef/ef0300.cpp
608
ef/ef0300.cpp
@ -1,4 +1,4 @@
|
||||
#include <relapp.h>
|
||||
#include <relapp.h>
|
||||
#include <msksheet.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
@ -29,7 +29,6 @@ protected:
|
||||
virtual bool remove();
|
||||
virtual TMask* get_mask(int mode) {return _msk;}
|
||||
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 importo_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 ord_data();
|
||||
static void ord_fatt();
|
||||
TSheet_field& righe_sheet() const;
|
||||
TSheet_field& righe_sel_sheet() const;
|
||||
// ritorna un riferimento allo sheet degli effetti (righe) nella
|
||||
// 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 user_create();
|
||||
bool user_destroy();
|
||||
void aggiorna();
|
||||
void elimina();
|
||||
TToken_string* common_f(const TMask& m);
|
||||
public:
|
||||
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_TIPODIST);
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
_msk->enable(F_TIPOPAG);
|
||||
}
|
||||
|
||||
// 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&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
_msk->enable(F_TOTIMPVAL);
|
||||
_msk->enable(F_CODVAL);
|
||||
_msk->disable(F_NUMBER);
|
||||
_msk->disable(F_TIPODIST);
|
||||
_msk->disable(F_TIPODIST);
|
||||
}
|
||||
|
||||
// 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_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()
|
||||
{
|
||||
long ndist = 1L;
|
||||
char tipodist = 'B';
|
||||
long ndist = 99999L;
|
||||
const TString16 tipodist = get_mask(MODE_INS)->get(F_TIPODIST);
|
||||
TLocalisamfile& effetti = _rel->lfile();
|
||||
effetti.first();// mi posiziono all'inizio del file
|
||||
effetti.put(EFF_TIPODIST,tipodist);
|
||||
effetti.put(EFF_NDIST,ndist);
|
||||
effetti.setkey(4);
|
||||
int err = effetti.read(_isgteq);
|
||||
if ( (err == _iskeynotfound) || (err == _iseof) )
|
||||
{ //se non esiste alcuna distinta: il numero sarà 1
|
||||
err == NOERR;
|
||||
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);
|
||||
effetti.read(_isgteq);
|
||||
if (!effetti.empty() && tipodist == effetti.get(EFF_TIPODIST))
|
||||
ndist = effetti.get_long(EFF_NDIST) + 1;
|
||||
else
|
||||
ndist = 1;
|
||||
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
|
||||
// passato
|
||||
bool TVariazione_distinte::cerca(long num)
|
||||
{
|
||||
bool trovato = FALSE;
|
||||
int items = _distinta->items();
|
||||
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];
|
||||
long num_eff = eff.get_long(EFF_NPROGTR);
|
||||
if (num_eff == num)
|
||||
{
|
||||
trovato = TRUE;
|
||||
break;// esco quando ho già trovato l'effetto che cercavo
|
||||
}
|
||||
|
||||
if (num == eff.get_long(EFF_NPROGTR))
|
||||
return TRUE;
|
||||
}
|
||||
return trovato;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// metodo che permette di scivere sull'array (in memoria) gli
|
||||
@ -168,17 +137,19 @@ void TVariazione_distinte::aggiorna()
|
||||
{
|
||||
TToken_string& row = shrighe.row(i);
|
||||
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
|
||||
{ // carico l'effetto nell'array
|
||||
TLocalisamfile eff(LF_EFFETTI);
|
||||
TRectype rec = eff.curr();
|
||||
TRectype & rec = eff.curr();
|
||||
eff.setkey(1);
|
||||
rec.zero();
|
||||
rec.put(EFF_NPROGTR, num);
|
||||
int err = eff.read();
|
||||
TEffetto* effetto= new TEffetto(rec);
|
||||
eff.read();
|
||||
|
||||
TEffetto* effetto = new TEffetto(rec);
|
||||
TArray& righedist = _distinta->righe();
|
||||
|
||||
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 codcab = m.get_long(F_CODCABP);
|
||||
m.autosave(*_rel);
|
||||
TToken_string* datidist= new TToken_string; // creo la token string
|
||||
datidist->cut(0);
|
||||
TToken_string * datidist= new TToken_string; // creo la token string
|
||||
datidist->add(tipodist); // inserisco i dati nella
|
||||
datidist->add(ndist); // token string
|
||||
datidist->add(datadist);
|
||||
@ -224,132 +194,126 @@ int TVariazione_distinte::read(TMask& m)
|
||||
int items = _distinta->items();
|
||||
TArray& righedist = _distinta->righe();
|
||||
// carico tutti gli effetti della distinta nello sheet
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
riga.cut(0);
|
||||
riga.add(' ');
|
||||
const long numero = eff.get_long(EFF_NPROGTR);
|
||||
riga.add(numero);
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
//prendo la ragione sociale del cliente conoscendone il codice
|
||||
long codcf = eff.get_long(EFF_CODCF);
|
||||
_clifo->zero();
|
||||
_clifo->put(CLI_TIPOCF , 'C');
|
||||
_clifo->put(CLI_CODCF, codcf);
|
||||
if (_clifo->read() == NOERR) riga.add(_clifo->get(CLI_RAGSOC));
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
|
||||
else riga.add(("Varie"));
|
||||
}
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
//gestisco il controllo sulla presenza o meno di una valuta
|
||||
TString codval(3);
|
||||
codval = eff.get(EFF_CODVAL);
|
||||
if (i == 0)
|
||||
{
|
||||
const bool condition = (codval.empty() || codval == "LIT");
|
||||
m.enable(F_CODVAL, !condition);
|
||||
m.enable(F_TOTIMPVAL, !condition);
|
||||
if (!condition)
|
||||
if (items > 0)
|
||||
{
|
||||
TEffetto& e = (TEffetto&)righedist[0];
|
||||
m.set(F_DATA, e.get("DATADIST"));// distinta
|
||||
m.set(F_CODABIP, e.get("CODABIP")); // dalla maschera
|
||||
m.set(F_CODCABP, e.get("CODCABP"));
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
riga.cut(0);
|
||||
riga.add(' ');
|
||||
const long numero = eff.get_long(EFF_NPROGTR);
|
||||
riga.add(numero);
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
//prendo la ragione sociale del cliente conoscendone il codice
|
||||
const long codcf = eff.get_long(EFF_CODCF);
|
||||
_clifo->zero();
|
||||
_clifo->put(CLI_TIPOCF , 'C');
|
||||
_clifo->put(CLI_CODCF, codcf);
|
||||
if (_clifo->read() == NOERR)
|
||||
riga.add(_clifo->get(CLI_RAGSOC));
|
||||
else
|
||||
riga.add("");
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1)
|
||||
riga.add(rec_r.get(REFF_NRATA));
|
||||
else
|
||||
riga.add("Varie");
|
||||
}
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add("Varie");
|
||||
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.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;
|
||||
}
|
||||
|
||||
// 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
|
||||
int TVariazione_distinte::rewrite(const TMask& m)
|
||||
{
|
||||
// prima di riscrive controllo se ci sono effetti nello sheet
|
||||
// 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();
|
||||
bool condition = FALSE;
|
||||
for (int i = 0; i < sf.items(); i++)
|
||||
int items = sf.items();
|
||||
int to_delete = 0;
|
||||
for (int i = items - 1; i >= 0 ; i--)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
// se trovo un effetto selezionato esco dal ciclo
|
||||
if (condition = *row.get(0) == 'X') break;
|
||||
}
|
||||
if (condition)
|
||||
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
||||
elimina();
|
||||
TToken_string& row = sf.row(i);
|
||||
if (*row.get(0) == 'X') // to delete
|
||||
to_delete++;
|
||||
}
|
||||
if (items <= to_delete)
|
||||
{ // non posso cancellare tutti gli effetti di una distinta
|
||||
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
|
||||
int err = _distinta->reset();
|
||||
char tipodist = m.get(F_TIPODIST)[0];
|
||||
long ndist = m.get_long(F_NUMBER);
|
||||
aggiorna();
|
||||
err = _distinta->rewrite(common_f(m));
|
||||
if (err == NOERR)
|
||||
@ -408,7 +372,6 @@ bool TVariazione_distinte::user_create()
|
||||
_clifo = new TLocalisamfile(LF_CLIFO);
|
||||
_distinta = new TDistinta;
|
||||
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_IMP, importo_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
|
||||
char tipodist = 0;
|
||||
long ndist = 0;
|
||||
long nrigadist = 0;
|
||||
int nrigadist = 0;
|
||||
TEffetto eff;
|
||||
TLocalisamfile f(LF_EFFETTI);
|
||||
// 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);
|
||||
while ( (err == NOERR) && (tipodist == 0))
|
||||
{
|
||||
bool condition = (tipopag == tipop);
|
||||
// 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
|
||||
// seleziono
|
||||
if (tipopag == 0) condition =TRUE;
|
||||
if (condition)
|
||||
const bool to_select = (tipopag == 0) || (tipopag == tipop) ||
|
||||
((tipopag == 2 || tipopag ==5 || tipopag == 7) &&
|
||||
(tipop == 2 || tipop ==5 || tipop == 7));
|
||||
if (to_select)
|
||||
{
|
||||
riga.cut(0);
|
||||
riga.add(' ');
|
||||
const long numero = eff.get_long(EFF_NPROGTR);
|
||||
riga.add(numero);
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
long codcf = eff.get_long(EFF_CODCF);
|
||||
clifo->zero();
|
||||
clifo->put(CLI_TIPOCF, 'C');
|
||||
clifo->put(CLI_CODCF, codcf);
|
||||
if (clifo->read() == NOERR) riga.add(clifo->get(CLI_RAGSOC));
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
|
||||
else riga.add(("Varie"));
|
||||
}
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
riga.add(eff.get(EFF_CODVAL));
|
||||
riga.add(eff.get(EFF_IMPORTO));
|
||||
riga.add(eff.get(EFF_IMPORTOVAL));
|
||||
sf.row(i) = riga;
|
||||
i++;
|
||||
riga.cut(0);
|
||||
riga.add(' ');
|
||||
const long numero = eff.get_long(EFF_NPROGTR);
|
||||
riga.add(numero);
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
long codcf = eff.get_long(EFF_CODCF);
|
||||
clifo->zero();
|
||||
clifo->put(CLI_TIPOCF, 'C');
|
||||
clifo->put(CLI_CODCF, codcf);
|
||||
if (clifo->read() == NOERR)
|
||||
riga.add(clifo->get(CLI_RAGSOC));
|
||||
else
|
||||
riga.add("");
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1)
|
||||
riga.add(rec_r.get(REFF_NRATA));
|
||||
else
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
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);
|
||||
err = eff.next(f);//leggo l'effetto successivo
|
||||
tipodist = eff.get(EFF_TIPODIST)[0];// e ne prendo il tipo distinta
|
||||
if (tipopag == 0)
|
||||
tipopag = tipop;
|
||||
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ò
|
||||
// contenere solo effetti cambiari
|
||||
bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
char tipo(f.get()[0]);
|
||||
if(k == K_SPACE)
|
||||
{
|
||||
if(tipo == 'S')
|
||||
m.set(F_TIPOPAG,2);
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
const bool allo_sconto = f.get()[0] == 'S';
|
||||
|
||||
m.enable(F_TIPOPAG, !allo_sconto);
|
||||
if (allo_sconto)
|
||||
m.set(F_TIPOPAG,2);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -544,22 +495,22 @@ bool TVariazione_distinte::tipodist_handler(TMask_field& f, KEY k)
|
||||
// princiapale)
|
||||
bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
TSheet_field& sf_riba = (TSheet_field&)m.field(F_SHEET_RIBA);
|
||||
if (f.to_check(k, TRUE))
|
||||
if (k == K_TAB && 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();
|
||||
if( mode == MODE_INS || mode == MODE_MOD )
|
||||
if( mode == MODE_INS || mode == MODE_MOD)
|
||||
{
|
||||
TMask* m2 = app()._m2;
|
||||
long imp_pres = m.get_long(F_TOTIMP);// importo presentato
|
||||
long imp = m.get_long(F_IMP);// importo distinta
|
||||
long impdist = imp - imp_pres;
|
||||
int tipopag = m.get_int(F_TIPOPAG);
|
||||
real impdist = m.get_real(F_IMP) - m.get_real(F_TOTIMP);
|
||||
const int tipopag = m.get_int(F_TIPOPAG);
|
||||
// se importo distinta maggiore importo presentato si devono andare a
|
||||
// caricare effetti in automatico per un valore minore uguale alla
|
||||
// differenza dei suddetti importi
|
||||
if (impdist > 0)
|
||||
if (impdist > ZERO)
|
||||
{
|
||||
app().begin_wait();
|
||||
carica_riba(tipopag);
|
||||
@ -568,12 +519,15 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||
m2->reset(F_IMPSEL);
|
||||
m2->set(F_TOTIMPDIST, impdist);
|
||||
m2->run();
|
||||
}
|
||||
if (impdist < 0)
|
||||
error_box("Il valore di presentazione non può superare l'importo della distinta");
|
||||
calcola_totale();
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
// significa che si deve procedere con il caricamento automatico
|
||||
// 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;
|
||||
TSheet_field& sf = (TSheet_field&)m2.field(F_SHEET);
|
||||
TSheet_field& sf_riba = (TSheet_field&)m->field(F_SHEET_RIBA);
|
||||
long impdist = m->get_long(F_IMP) - m->get_long(F_TOTIMP);
|
||||
long tot_imp_dist = m2.get_long(F_TOTIMPDIST),
|
||||
impsel = 0;
|
||||
if (tot_imp_dist != 0 && impdist != 0)
|
||||
const real impdist = m->get_real(F_IMP) - m->get_real(F_TOTIMP);
|
||||
real res = m2.get_real(F_TOTIMPDIST);
|
||||
if (res > ZERO && impdist > ZERO)
|
||||
{ // se i due importi sono diversi da zero
|
||||
TString val = m->get(F_CODVAL);
|
||||
if (val == "LIT")
|
||||
val.cut(0);
|
||||
int items = sf.items();
|
||||
// cerca se esiste un effetto con importo uguale a quello
|
||||
// da caricare
|
||||
bool caricato = FALSE;
|
||||
for(int i = 0; i < items && !caricato; i++)
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
TString codval = row.get(7);
|
||||
// se la valuta non appare o è lire faccio in modo che vengano
|
||||
// presi gli effetti con valuta inesistente
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.trim();
|
||||
long imp = row.get_long(8);
|
||||
if (imp == tot_imp_dist && codval == val)
|
||||
{
|
||||
row.add('X',0);
|
||||
impsel += imp;
|
||||
caricato = TRUE;
|
||||
}
|
||||
TToken_string& row = sf.row(i);
|
||||
TString16 codval = row.get(sf.cid2index(F_VALUTA));
|
||||
// se la valuta non appare o è lire faccio in modo che vengano
|
||||
// presi gli effetti con valuta inesistente
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.cut(0);
|
||||
const bool valuta = codval.not_empty();
|
||||
const real imp(row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
|
||||
if (imp == res && codval == val)
|
||||
{
|
||||
row.add('X', 0);
|
||||
res = ZERO;
|
||||
}
|
||||
}
|
||||
// se non esiste un effetto con importo uguale a quello
|
||||
// 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);
|
||||
TString codval = row.get(7);
|
||||
// se la valuta non appare o è lire faccio in modo che
|
||||
// vengano presi gli effetti con valuta inesistente
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.trim();
|
||||
long imp = row.get_long(8);
|
||||
// se l'importo, della riga corrente dello sheet, è minore
|
||||
// dell 'importo che si deve caricare e se lo rimane anche
|
||||
// sommato all'importo già selezionato, si procede a rendere
|
||||
// la riga selezionata per il caricamento
|
||||
if ((imp <= tot_imp_dist) && ((impsel+imp) <= tot_imp_dist))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
TToken_string& row = sf.row(i);
|
||||
TString16 codval = row.get(sf.cid2index(F_VALUTA));
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.cut(0);
|
||||
const bool valuta = codval.not_empty();
|
||||
const real imp = (row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
|
||||
// se l'importo, della riga corrente dello sheet, è minore
|
||||
// dell 'importo che si deve caricare e se lo rimane anche
|
||||
// sommato all'importo già selezionato, si procede a rendere
|
||||
// la riga selezionata per il caricamento
|
||||
if (codval == val && imp <= res)
|
||||
{
|
||||
row.add('X',0);
|
||||
res -= imp;
|
||||
}
|
||||
}
|
||||
sf.force_update();
|
||||
calcola();
|
||||
}
|
||||
@ -662,30 +602,27 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
||||
// per l'aggiunta delle riba (ef0300c)
|
||||
bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask* msk = app()._msk;
|
||||
TSheet_field& sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
|
||||
if (k==K_ENTER)
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
TMask * msk = app()._msk;
|
||||
TSheet_field & sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
|
||||
TMask& m = f.mask();
|
||||
|
||||
m.close(); // chiudo la maschera secondaria
|
||||
// scarico tutte le righe, selezionate, dello sheet della maschera
|
||||
// secondaria nello sheet della maschera primaria della relap (ef0300a)
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||
int items = sf.items();
|
||||
bool condition = FALSE;
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
condition = *row.get(0)== 'X';
|
||||
if (condition)
|
||||
if (*row.get(0) == 'X') // selected
|
||||
{
|
||||
row[0] = ' ';
|
||||
row.add(" ", 0);
|
||||
sf_riba.row(-1) = row;
|
||||
}
|
||||
}
|
||||
}
|
||||
sf_riba.force_update();// obbligo all'aggiornamento dello sheet
|
||||
calcola_totale(); // obbligo al ricalcolo del totale
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -856,30 +793,23 @@ void TVariazione_distinte::calcola_totale()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET_RIBA);
|
||||
int items = sf.items();
|
||||
real imp, impval, impdist, impdistval;
|
||||
const int items = sf.items();
|
||||
real impdist;
|
||||
const TString16 codval = m->get(F_CODVAL);
|
||||
const bool valuta = codval.not_empty() && codval != "LIT";
|
||||
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
|
||||
// dal totale presentazione della distinta
|
||||
bool condition = *row.get(0) == 'X';
|
||||
if (condition)
|
||||
{
|
||||
imp = row.get(8);
|
||||
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;
|
||||
|
||||
if (*row.get(0) != 'X') // valido (not to delete)
|
||||
{
|
||||
const real imp = row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO));
|
||||
impdist += imp;
|
||||
}
|
||||
}
|
||||
m->set(F_TOTIMP, impdist);
|
||||
m->set(F_TOTIMPVAL, impdistval);
|
||||
m->set(F_IMP, impdist);
|
||||
}
|
||||
|
||||
@ -890,29 +820,32 @@ void TVariazione_distinte::calcola()
|
||||
TMask* m2 = app()._m2;
|
||||
TMask* m = app()._msk;
|
||||
TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET);
|
||||
int items = sf.items();
|
||||
real imp, impsel;
|
||||
long imp_pres = m->get_long(F_TOTIMP);
|
||||
long importo = m->get_long(F_IMP);
|
||||
long impdist = importo - imp_pres;
|
||||
if (impdist == 0)
|
||||
m2->set(F_TOTIMPDIST, importo);
|
||||
m2->set(F_IMPSEL, impsel);
|
||||
const int items = sf.items();
|
||||
real impsel;
|
||||
const real imp_pres = m->get_long(F_TOTIMP);
|
||||
const real importo = m->get_long(F_IMP);
|
||||
const real impdist = importo - imp_pres;
|
||||
const TString16 codval = m->get(F_CODVAL);
|
||||
const bool valuta = codval.not_empty() && codval != "LIT";
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
// se l'effetto è selezionato aggiungo il suo importo al totale importo
|
||||
// selezionato
|
||||
bool condition = *row.get(0) == 'X';
|
||||
if (condition)
|
||||
if (*row.get(0) == 'X')
|
||||
{
|
||||
imp = row.get(8);
|
||||
const real imp(row.get(sf.cid2index(valuta ? F_IMPORTOVAL : F_IMPORTO)));
|
||||
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
|
||||
@ -937,7 +870,8 @@ void TVariazione_distinte::aggiungi()
|
||||
app().end_wait();
|
||||
m2->reset(F_TOTIMPDIST);
|
||||
m2->reset(F_IMPSEL);
|
||||
m2->run();
|
||||
m2->run();
|
||||
calcola_totale();
|
||||
}
|
||||
|
||||
// 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[])
|
||||
{
|
||||
TVariazione_distinte a ;
|
||||
a.run(argc, argv, "Variazione Distinte");
|
||||
a.run(argc, argv, "Distinte di presentazione");
|
||||
return 0;
|
||||
}
|
@ -13,7 +13,6 @@
|
||||
#define F_CODCABP 107
|
||||
#define F_TOTIMP 108
|
||||
#define F_IMP 109
|
||||
#define F_TOTIMPVAL 110
|
||||
#define F_CODVAL 111
|
||||
#define F_TIPOPAG 112
|
||||
#define F_SHEET_RIBA 113
|
||||
|
155
ef/ef0300a.uml
155
ef/ef0300a.uml
@ -13,78 +13,59 @@ BEGIN
|
||||
END
|
||||
|
||||
LIST F_TIPODIST 17
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo Distinta "
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo Distinta "
|
||||
KEY 4
|
||||
FIELD LF_EFFETTI->TIPODIST
|
||||
ITEM "I|All'incasso"
|
||||
ITEM "B|Salvo buon fine"
|
||||
ITEM "S|Allo sconto"
|
||||
ITEM "S|Allo sconto"
|
||||
END
|
||||
|
||||
LIST F_NUMBERRIGA 12
|
||||
BEGIN
|
||||
BEGIN
|
||||
PROMPT 1 60 "Numero Riga Distinta "
|
||||
KEY 4
|
||||
FIELD LF_EFFETTI->NRIGADIST
|
||||
ITEM "1|PRIMA RIGA"
|
||||
FLAGS "D"
|
||||
FIELD LF_EFFETTI->NRIGADIST
|
||||
ITEM "1|PRIMA RIGA"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NUMBER 7
|
||||
BEGIN
|
||||
NUMBER F_NUMBER 5
|
||||
BEGIN
|
||||
PROMPT 48 1 "Numero Distinta "
|
||||
FIELD LF_EFFETTI->NDIST
|
||||
FLAGS "R"
|
||||
FIELD LF_EFFETTI->NDIST
|
||||
FLAGS "R"
|
||||
KEY 4
|
||||
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
|
||||
INPUT NDIST F_NUMBER
|
||||
INPUT NDIST F_NUMBER
|
||||
INPUT TIPODIST F_TIPODIST
|
||||
INPUT NRIGADIST F_NUMBERRIGA
|
||||
DISPLAY "Nr. distinta" NDIST
|
||||
DISPLAY "Tipo distinta" TIPODIST
|
||||
OUTPUT F_NUMBER NDIST
|
||||
OUTPUT F_TIPODIST TIPODIST
|
||||
OUTPUT F_TIPODIST TIPODIST
|
||||
OUTPUT F_NUMBERRIGA NRIGADIST
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
PROMPT 2 2 "Data Distinta "
|
||||
FIELD LF_EFFETTI->DATADIST
|
||||
FIELD LF_EFFETTI->DATADIST
|
||||
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
|
||||
BEGIN
|
||||
PROMPT 15 4 "Codice ABI "
|
||||
BEGIN
|
||||
PROMPT 15 3 "Codice ABI "
|
||||
FIELD LF_EFFETTI->CODABIP
|
||||
FLAGS "RZ"
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||
INPUT CODTAB F_CODABIP
|
||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT F_CODABIP CODTAB[1,5]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
OUTPUT F_DENBANP S0
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Codice ABI assente"
|
||||
@ -92,45 +73,53 @@ END
|
||||
|
||||
NUMBER F_CODCABP 5 0
|
||||
BEGIN
|
||||
PROMPT 15 5 "Codice CAB "
|
||||
PROMPT 15 4 "Codice CAB "
|
||||
FIELD LF_EFFETTI->CODCABP
|
||||
FLAGS "RZ"
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||
INPUT CODTAB[1,5] F_CODABIP
|
||||
INPUT CODTAB[6,10] F_CODCABP
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||
INPUT CODTAB[1,5] F_CODABIP
|
||||
INPUT CODTAB[6,10] F_CODCABP
|
||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||
DISPLAY "Codice CAB" CODTAB[6,10]
|
||||
DISPLAY "Denominazione@50" S0
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT F_CODABIP CODTAB[1,5]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE REQUIRED
|
||||
VALIDATE REQIF_FUNC 1 F_CODCABP
|
||||
WARNING "Banca assente"
|
||||
END
|
||||
|
||||
NUMBER F_TOTIMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Valore di presentazione "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
STRING F_DENBANP 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Banca di Presentazione "
|
||||
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_IMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 7 "Importo Distinta "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
NUM_EXPR #F_IMP>=#F_TOTIMP
|
||||
WARNING "Il valore di presentazione non puo' superare l'importo della distinta"
|
||||
LIST F_TIPOPAG 24
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo Effetti "
|
||||
FIELD LF_EFFETTI->TIPOPAG
|
||||
ITEM "2|Tratta"
|
||||
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
|
||||
|
||||
NUMBER F_TOTIMPVAL 18 3
|
||||
BEGIN
|
||||
PROMPT 2 8 "Valore di pres. in val. "
|
||||
PICTURE "###.###.###.###,@@@"
|
||||
END
|
||||
|
||||
STRING F_CODVAL 3
|
||||
BEGIN
|
||||
PROMPT 48 8 "Codice Valuta "
|
||||
BEGIN
|
||||
PROMPT 2 7 "Codice Valuta "
|
||||
FLAGS "UZ"
|
||||
USE %VAL
|
||||
INPUT CODTAB F_CODVAL
|
||||
@ -139,33 +128,33 @@ BEGIN
|
||||
OUTPUT F_CODVAL CODTAB
|
||||
END
|
||||
|
||||
LIST F_TIPOPAG 24
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tipo Effetto "
|
||||
FIELD LF_EFFETTI->TIPOPAG
|
||||
ITEM "0| "
|
||||
ITEM "2|Effetto cambiario"
|
||||
ITEM "3|Ricevuta Bancaria"
|
||||
ITEM "4|Cessione"
|
||||
ITEM "5|Effetto cambiario"
|
||||
ITEM "6|Lettera di credito"
|
||||
ITEM "7|Effetto cambiario"
|
||||
ITEM "8|Rapporti interb.diretti"
|
||||
ITEM "9|Bonifici"
|
||||
NUMBER F_IMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Importo Distinta "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
NUM_EXPR #F_IMP>=#F_TOTIMP
|
||||
WARNING "Il valore di presentazione non puo' superare l'importo della distinta"
|
||||
END
|
||||
|
||||
NUMBER F_TOTIMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 9 "Valore di presentazione "
|
||||
FLAGS "D"
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_RIBA 78 6
|
||||
BEGIN
|
||||
BEGIN
|
||||
PROMPT 1 12 "RIGHE DISTINTA"
|
||||
ITEM ""
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Da elim."
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Scadenza"
|
||||
ITEM "Cliente@50"
|
||||
ITEM "Nr. Fattura"
|
||||
ITEM "Cliente@50"
|
||||
ITEM "Nr. Fattura"
|
||||
ITEM "Data Fattura"
|
||||
ITEM "Nr. Rata"
|
||||
ITEM "Nr. Rata"
|
||||
ITEM "Valuta"
|
||||
ITEM "Importo"
|
||||
ITEM "Importo"
|
||||
ITEM "Importo Val."
|
||||
END
|
||||
|
||||
|
@ -3,11 +3,9 @@
|
||||
|
||||
PAGE "Righe Distinta" -1 -1 63 13
|
||||
|
||||
LISTBOX F_CHECK 5
|
||||
BOOLEAN F_CHECK
|
||||
BEGIN
|
||||
PROMPT 2 1 "Selezionato "
|
||||
ITEM " |FALSE"
|
||||
ITEM "X|TRUE"
|
||||
PROMPT 2 1 "Da eliminare "
|
||||
END
|
||||
|
||||
NUMBER F_NRIBA 7
|
||||
|
@ -21,7 +21,7 @@ END
|
||||
LIST F_TIPORD 14
|
||||
BEGIN
|
||||
PROMPT 2 4 "Tipo Ordinamento "
|
||||
ITEM " |** Nessuno **"
|
||||
ITEM " | "
|
||||
ITEM "S|Scadenza "
|
||||
ITEM "F|Fattura "
|
||||
END
|
||||
@ -29,7 +29,7 @@ END
|
||||
SPREADSHEET F_SHEET 74 9
|
||||
BEGIN
|
||||
PROMPT 2 6 "EFFETTI SELEZIONABILI"
|
||||
ITEM ""
|
||||
ITEM "Sel."
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Scadenza"
|
||||
ITEM "Cliente@50"
|
||||
@ -65,4 +65,4 @@ END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
#include "EF0300B.UML"
|
||||
#include "ef0300d.uml"
|
@ -28,7 +28,7 @@ BEGIN
|
||||
ITEM "S| Allo sconto"
|
||||
END
|
||||
|
||||
NUMBER F_NUMBER 7
|
||||
NUMBER F_NUMBER 5
|
||||
BEGIN
|
||||
PROMPT 43 5 "Numero Distinta "
|
||||
FLAGS "R"
|
||||
|
@ -115,13 +115,13 @@ BEGIN
|
||||
PROMPT 4 9 " "
|
||||
KEY 4
|
||||
GROUP 3
|
||||
ITEM " |** Nessuno **"
|
||||
ITEM " | "
|
||||
ITEM "I|All'incasso"
|
||||
ITEM "B|Salvo buon fine"
|
||||
ITEM "S|Allo sconto"
|
||||
END
|
||||
|
||||
NUMBER F_DADIST 7
|
||||
NUMBER F_DADIST 5
|
||||
BEGIN
|
||||
PROMPT 4 10 " "
|
||||
FLAGS "R"
|
||||
@ -150,13 +150,13 @@ BEGIN
|
||||
PROMPT 31 9 " "
|
||||
GROUP 3
|
||||
KEY 4
|
||||
ITEM " |** Nessuno **"
|
||||
ITEM " | "
|
||||
ITEM "I|All'incasso"
|
||||
ITEM "B|Salvo buon fine"
|
||||
ITEM "S|Allo sconto"
|
||||
END
|
||||
|
||||
NUMBER F_ADIST 7
|
||||
NUMBER F_ADIST 5
|
||||
BEGIN
|
||||
PROMPT 31 10 " "
|
||||
FLAGS "R"
|
||||
|
Loading…
x
Reference in New Issue
Block a user