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)
|
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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
608
ef/ef0300.cpp
608
ef/ef0300.cpp
@ -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;
|
||||||
}
|
}
|
@ -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
|
||||||
|
155
ef/ef0300a.uml
155
ef/ef0300a.uml
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user