aggiunto oggetto TEffetto ed integrato nella variazione effetti
git-svn-id: svn://10.65.10.50/trunk@3867 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c0267f0832
commit
e37b4da06e
386
ef/ef0100.cpp
386
ef/ef0100.cpp
@ -4,209 +4,343 @@
|
|||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <lffiles.h>
|
#include <lffiles.h>
|
||||||
#include <clifo.h>
|
#include <clifo.h>
|
||||||
#include "effetti.h"
|
#include <comuni.h>
|
||||||
#include "cession.h"
|
#include <effetti.h>
|
||||||
|
#include <reffetti.h>
|
||||||
|
#include <cession.h>
|
||||||
#include "ef0.h"
|
#include "ef0.h"
|
||||||
#include "ef0100.h"
|
#include "ef0100.h"
|
||||||
#include "ef0101.h"
|
#include "ef0101.h"
|
||||||
|
|
||||||
class Variazione_Effetti: public TRelation_application
|
//Classe per la gestione di effetti con metodi
|
||||||
|
// standard di: inserimento, modifica, cancellazione.
|
||||||
|
class TVariazione_effetti: public TRelation_application
|
||||||
{
|
{
|
||||||
TMask* _msk;
|
TMask *_msk;
|
||||||
TEffObb *_rel;
|
TEffetto *_effetto;
|
||||||
|
TRelation *_rel;
|
||||||
|
TLocalisamfile *_reff, *_cess, *_com;
|
||||||
|
protected:
|
||||||
|
virtual void init_query_mode(TMask&);
|
||||||
|
virtual void init_insert_mode(TMask&);
|
||||||
|
static bool handle_sheet(TMask_field& f, KEY);
|
||||||
|
static bool codval_handler(TMask_field& f, KEY k);
|
||||||
|
static bool impeff_notify(TSheet_field& s, int r, KEY key);
|
||||||
virtual const char* get_next_key();
|
virtual const char* get_next_key();
|
||||||
TSheet_field& obb_sheet() const;
|
TSheet_field& cess_sheet() const;
|
||||||
void obb_pack();
|
TSheet_field& righe_sheet() const;
|
||||||
void common_f(const TMask& m);
|
void common_f(const TMask& m);
|
||||||
|
static void calcola_totali();
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
|
virtual bool remove();
|
||||||
bool user_create();
|
bool user_create();
|
||||||
bool user_destroy();
|
bool user_destroy();
|
||||||
virtual TMask* get_mask(int mode) {return _msk;}
|
virtual TMask* get_mask(int mode) {return _msk;}
|
||||||
virtual bool changing_mask(int mode) {return FALSE;}
|
virtual bool changing_mask(int mode) {return FALSE;}
|
||||||
public:
|
public:
|
||||||
static bool codcf_handler(TMask_field& f, KEY k);
|
|
||||||
static bool effcomp_handler(TMask_field& f, KEY k);
|
|
||||||
virtual TRelation* get_relation() const {return _rel;}
|
virtual TRelation* get_relation() const {return _rel;}
|
||||||
Variazione_Effetti() {}
|
TVariazione_effetti() {};
|
||||||
|
virtual ~TVariazione_effetti() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
||||||
|
|
||||||
const char* Variazione_Effetti::get_next_key()
|
void TVariazione_effetti::init_query_mode(TMask&)
|
||||||
|
{
|
||||||
|
_msk->reset(F_TOTIMP);
|
||||||
|
_msk->reset(F_TOTIMPVAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TVariazione_effetti::init_insert_mode(TMask&)
|
||||||
|
{
|
||||||
|
_msk->reset(F_TOTIMP);
|
||||||
|
_msk->reset(F_TOTIMPVAL);
|
||||||
|
TToken_string riga("|||||||||");
|
||||||
|
righe_sheet().row(0)=riga;
|
||||||
|
righe_sheet().set_dirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Ritorna il prossimo numero valido di chiave
|
||||||
|
const char* TVariazione_effetti::get_next_key()
|
||||||
{
|
{
|
||||||
TLocalisamfile& effetti=_rel->lfile();
|
TLocalisamfile& effetti=_rel->lfile();
|
||||||
long nprogtr=1L;
|
long nprogtr=1L;
|
||||||
|
if ( !effetti.empty() )
|
||||||
if (!effetti.empty())
|
|
||||||
{
|
{
|
||||||
effetti.zero();
|
effetti.zero();
|
||||||
effetti.setkey(1);
|
effetti.setkey(1);
|
||||||
effetti.last();
|
effetti.last();
|
||||||
if (effetti.good())
|
if ( effetti.good() )
|
||||||
nprogtr+=effetti.get_long(EFF_NPROGTR);
|
nprogtr+=effetti.get_long(EFF_NPROGTR);
|
||||||
}
|
}
|
||||||
return format("%d|%ld",F_NPROGTR,nprogtr);
|
return format("%d|%ld",F_NPROGTR,nprogtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
TSheet_field& Variazione_Effetti::obb_sheet() const
|
//Ritorna un riferimento allo sheet dei cessionari
|
||||||
|
TSheet_field& TVariazione_effetti::cess_sheet() const
|
||||||
{
|
{
|
||||||
TSheet_field& o_sheet=(TSheet_field&) _msk->field(F_SHEET_EFF);
|
TSheet_field& o_sheet = (TSheet_field&)_msk->field(F_SHEET_EFF);
|
||||||
return o_sheet;
|
return o_sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Variazione_Effetti::obb_pack()
|
//Ritorna un riferimento allo sheet delle righe
|
||||||
|
TSheet_field& TVariazione_effetti::righe_sheet() const
|
||||||
{
|
{
|
||||||
TArray& rows=obb_sheet().rows_array();
|
TSheet_field& r_sheet = (TSheet_field&)_msk->field(F_SHEET_RIGHE);
|
||||||
int nr=rows.items();
|
return r_sheet;
|
||||||
|
|
||||||
for (int i=0;i<nr;i++)
|
|
||||||
{
|
|
||||||
TToken_string& riga=(TToken_string&)rows[i];
|
|
||||||
if (riga.empty_items())
|
|
||||||
rows.destroy(i,FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Variazione_Effetti::common_f(const TMask& m)
|
//Metodo che permette di scivere su file i dati inseriti nella maschera;
|
||||||
|
// comune a write e rewrite
|
||||||
|
void TVariazione_effetti::common_f(const TMask& m)
|
||||||
{
|
{
|
||||||
long nprogtr=m.get_long(F_NPROGTR);
|
long nprogtr = m.get_long(F_NPROGTR);
|
||||||
|
|
||||||
_rel->lfile().zero();
|
|
||||||
m.autosave(*_rel);
|
m.autosave(*_rel);
|
||||||
// LF_CESS SAVER!
|
_effetto->head() = _rel->curr();
|
||||||
_rel->destroy_rows();
|
|
||||||
obb_pack();
|
TSheet_field& shcess = cess_sheet();
|
||||||
TArray& rows=obb_sheet().rows_array();
|
TSheet_field& shrighe = righe_sheet();
|
||||||
for (int i=0; i<rows.items();i++)
|
|
||||||
{
|
int items = shcess.items();
|
||||||
TToken_string& row=(TToken_string&)rows[i];
|
_effetto->destroy_rows_c();
|
||||||
TRectype& rec=_rel->obbligato(i);
|
int ii = 0;
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string& row = shcess.row(i);
|
||||||
|
if ( row.items()!= 0 )
|
||||||
|
{
|
||||||
|
TRectype& rec = _effetto->row_c(ii+1, TRUE);
|
||||||
|
row.restart();
|
||||||
|
rec.zero();
|
||||||
|
rec.put(CES_NPROGTR, nprogtr);
|
||||||
|
rec.put(CES_NRIGA, ii+1);
|
||||||
|
rec.put(CES_RAGSOC, row.get());
|
||||||
|
rec.put(CES_LOCALITA, row.get());
|
||||||
|
rec.put(CES_STATO, row.get_int());
|
||||||
|
rec.put(CES_COM, row.get());
|
||||||
|
ii++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
items = shrighe.items();
|
||||||
|
_effetto->destroy_rows_r();
|
||||||
|
ii = 0;
|
||||||
|
for (i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string& row = shrighe.row(i);
|
||||||
|
real imp_eff(row.get(1));
|
||||||
|
if (imp_eff == 0.0) continue;
|
||||||
row.restart();
|
row.restart();
|
||||||
|
TRectype& rec = _effetto->row_r(ii+1, TRUE);
|
||||||
rec.zero();
|
rec.zero();
|
||||||
rec.put(CES_NPROGTR,nprogtr);
|
rec.put(REFF_NPROGTR, nprogtr);
|
||||||
rec.put(CES_NRIGA,i+1);
|
rec.put(REFF_NRIGATR, ii+1);
|
||||||
rec.put(CES_RAGSOC,row.get());
|
rec.put(REFF_IMPFATT, row.get());
|
||||||
rec.put(CES_LOCALITA,row.get());
|
rec.put(REFF_IMPORTO, row.get());
|
||||||
rec.put(CES_STATO,row.get_int());
|
rec.put(REFF_IMPFATTVAL, row.get());
|
||||||
rec.put(CES_COM,row.get());
|
rec.put(REFF_IMPORTOVAL, row.get());
|
||||||
|
rec.put(REFF_ANNO, row.get_int());
|
||||||
|
rec.put(REFF_NUMPART, row.get());
|
||||||
|
rec.put(REFF_NRIGA, row.get_int());
|
||||||
|
rec.put(REFF_NRATA, row.get_int());
|
||||||
|
rec.put(REFF_NFATT, row.get());
|
||||||
|
rec.put(REFF_DATAFATT, row.get());
|
||||||
|
ii++;
|
||||||
}
|
}
|
||||||
|
_effetto->renum(_effetto->numero());
|
||||||
}
|
}
|
||||||
|
|
||||||
int Variazione_Effetti::read(TMask& m)
|
int TVariazione_effetti::read(TMask& m)
|
||||||
{
|
{
|
||||||
m.autoload(*_rel);
|
m.autoload(*_rel);
|
||||||
// LF_CESS loader!
|
int err = _rel->status();
|
||||||
TToken_string riga(80);
|
if (err == NOERR)
|
||||||
obb_sheet().reset();
|
|
||||||
for (int i=0; i<_rel->obbligati_items();i++)
|
|
||||||
{
|
{
|
||||||
TRectype& rec=_rel->obbligato(i);
|
err = _effetto->read(_rel->curr());
|
||||||
riga.cut(0);
|
if (err == NOERR)
|
||||||
riga.add(rec.get(CES_RAGSOC));
|
{
|
||||||
riga.add(rec.get(CES_LOCALITA));
|
TString16 codcom(3);
|
||||||
riga.add(rec.get(CES_STATO));
|
TToken_string riga(80);
|
||||||
riga.add(rec.get(CES_COM));
|
|
||||||
obb_sheet().row(i)=riga;
|
TSheet_field& shcess = cess_sheet();
|
||||||
|
shcess.reset();
|
||||||
|
TSheet_field& shrighe = righe_sheet();
|
||||||
|
shrighe.reset();
|
||||||
|
|
||||||
|
int items = _effetto->rows_c();
|
||||||
|
for (int i = 1; i <= items; i++)
|
||||||
|
{
|
||||||
|
const TRectype& rec = _effetto->row_c(i);
|
||||||
|
riga.cut(0);
|
||||||
|
riga.add(rec.get(CES_RAGSOC));
|
||||||
|
riga.add(rec.get(CES_LOCALITA));
|
||||||
|
riga.add(rec.get(CES_STATO));
|
||||||
|
codcom = rec.get(CES_COM);
|
||||||
|
riga.add(codcom);
|
||||||
|
_com->zero();
|
||||||
|
_com->put("COM", codcom);
|
||||||
|
if (_com->read() == NOERR) riga.add(_com->get(COM_DENCOM));
|
||||||
|
shcess.row(i-1)=riga;
|
||||||
|
}
|
||||||
|
|
||||||
|
items = _effetto->rows_r();
|
||||||
|
for (i = 1; i <= items; i++)
|
||||||
|
{
|
||||||
|
const TRectype& rec = _effetto->row_r(i);
|
||||||
|
riga.cut(0);
|
||||||
|
riga.add(rec.get(REFF_IMPFATT));
|
||||||
|
riga.add(rec.get(REFF_IMPORTO));
|
||||||
|
riga.add(rec.get(REFF_IMPFATTVAL));
|
||||||
|
riga.add(rec.get(REFF_IMPORTOVAL));
|
||||||
|
riga.add(rec.get(REFF_ANNO));
|
||||||
|
riga.add(rec.get(REFF_NUMPART));
|
||||||
|
riga.add(rec.get(REFF_NRIGA));
|
||||||
|
riga.add(rec.get(REFF_NRATA));
|
||||||
|
riga.add(rec.get(REFF_NFATT));
|
||||||
|
riga.add(rec.get(REFF_DATAFATT));
|
||||||
|
shrighe.row(i-1) = riga;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return _rel->status();
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Variazione_Effetti::rewrite(const TMask& m)
|
int TVariazione_effetti::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
common_f(m);
|
common_f(m);
|
||||||
return _rel->rewrite(TRUE);
|
return _effetto->rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Variazione_Effetti::write(const TMask& m)
|
int TVariazione_effetti::write(const TMask& m)
|
||||||
{
|
{
|
||||||
common_f(m);
|
common_f(m);
|
||||||
return _rel->write(TRUE);
|
int err = _effetto->write();
|
||||||
|
if (err == NOERR)
|
||||||
|
_rel->read(); // per posizionare correttamente la relazione
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TVariazione_effetti::remove()
|
||||||
|
{
|
||||||
|
return _effetto->remove() == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TVariazione_effetti::user_create()
|
||||||
bool Variazione_Effetti::user_create()
|
|
||||||
{
|
{
|
||||||
_msk = new TMask("ef0100a") ;
|
_msk = new TMask("ef0100a") ;
|
||||||
_rel = new TEffObb;
|
_rel = new TRelation(LF_EFFETTI);
|
||||||
|
_reff = new TLocalisamfile(LF_REFFETTI);
|
||||||
_msk->set_handler(F_CODCF,codcf_handler);
|
_cess = new TLocalisamfile(LF_CESS);
|
||||||
_msk->set_handler(F_EFFCOMP,effcomp_handler);
|
_com = new TLocalisamfile(LF_COMUNI);
|
||||||
|
_effetto = new TEffetto;
|
||||||
|
_msk->set_handler(F_CODVAL, codval_handler);
|
||||||
|
_msk->set_handler(F_SHEET_RIGHE, handle_sheet);
|
||||||
|
righe_sheet().set_append(FALSE);
|
||||||
|
righe_sheet().set_notify(impeff_notify);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Variazione_Effetti::user_destroy()
|
bool TVariazione_effetti::user_destroy()
|
||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
|
delete _effetto;
|
||||||
|
delete _reff;
|
||||||
|
delete _cess;
|
||||||
|
delete _com;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Variazione_Effetti::codcf_handler(TMask_field& f, KEY k)
|
//Permette di effettuare il controllo sul fatto che venga inserita almeno una
|
||||||
|
// riga per un effetto
|
||||||
|
bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
||||||
{
|
{
|
||||||
long codcf = atol(f.get()), n = 0;
|
TMask& m = f.mask();
|
||||||
TString ragsoc(50);
|
const int mode = m.mode();
|
||||||
TToken_string line;
|
if ( k==K_ENTER && (mode== MODE_INS || mode== MODE_MOD) )
|
||||||
TLocalisamfile clifo(LF_CLIFO);
|
{
|
||||||
TArray_sheet cli(-1,-1,59,20,"Clienti","Codice|Ragione sociale@50|Sospeso|Codice fiscale@18");
|
|
||||||
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_RIGHE);
|
||||||
switch (k)
|
int items = sf.items();
|
||||||
|
bool found=FALSE;
|
||||||
|
for (int i=0; i< items && !found; i++)
|
||||||
|
{
|
||||||
|
TToken_string& row=sf.row(i);
|
||||||
|
real imp_eff(row.get(1));
|
||||||
|
if (imp_eff != 0.0) found=TRUE;
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
error_box("L'effetto deve contenere almeno una riga!");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Permette il controllo sulla abilitazione dei campi collegati al codice
|
||||||
|
// valuta
|
||||||
|
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
TString val(f.get());
|
||||||
|
if (f.to_check(k, TRUE))
|
||||||
{
|
{
|
||||||
case K_TAB:
|
const bool condition = (val == "LIT" || val.empty());
|
||||||
if (f.focusdirty()) // When changing focus put customer's name
|
m.enable(-1,!condition);
|
||||||
{
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_RIGHE);
|
||||||
clifo.zero();
|
if (condition){
|
||||||
clifo.setkey(1);
|
m.reset(-1);
|
||||||
clifo.put(CLI_TIPOCF,"C");
|
m.reset(F_TOTIMPVAL);
|
||||||
clifo.put(CLI_CODCF,codcf);
|
int items = sf.items();
|
||||||
clifo.read();
|
for (int i= 0; i < items; i++){
|
||||||
if (clifo.good())
|
TToken_string& row = sf.row(i);
|
||||||
{
|
row.add(" ", 2);
|
||||||
ragsoc=clifo.get(CLI_RAGSOC);
|
row.add(" ", 3);
|
||||||
f.mask().set(F_CFRAGSOC,(const char*)ragsoc);
|
}
|
||||||
} else
|
}
|
||||||
return FALSE;
|
sf.enable_column(F_IMPFATTVAL, !condition);
|
||||||
}
|
sf.enable_column(F_IMPEFFVAL, !condition);
|
||||||
break;
|
sf.force_update();
|
||||||
case K_F8: // If F8 was pressed perform customer's search
|
}
|
||||||
clifo.setkey(1);
|
|
||||||
clifo.first();
|
|
||||||
while (clifo.good() && clifo.get(CLI_TIPOCF)=="C")
|
|
||||||
{
|
|
||||||
line.cut(0);
|
|
||||||
if (codcf == clifo.get_long(CLI_CODCF)) n=cli.items();
|
|
||||||
line.add(clifo.get(CLI_CODCF));
|
|
||||||
line.add(clifo.get(CLI_RAGSOC));
|
|
||||||
line.add(clifo.get(CLI_SOSPESO));
|
|
||||||
line.add(clifo.get(CLI_COFI));
|
|
||||||
cli.add(line);
|
|
||||||
clifo.next();
|
|
||||||
}
|
|
||||||
cli.select(n);
|
|
||||||
if (cli.run()==K_ENTER)
|
|
||||||
{
|
|
||||||
line=cli.row(-1);
|
|
||||||
f.set(line.get(0));
|
|
||||||
f.mask().set(F_CFRAGSOC,line.get(1));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Variazione_Effetti::effcomp_handler(TMask_field& f, KEY k)
|
void TVariazione_effetti::calcola_totali()
|
||||||
{
|
{
|
||||||
if (!f.mask().get(F_NRATA).empty())
|
TMask* m = app()._msk;
|
||||||
f.set("X");
|
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET_RIGHE);
|
||||||
|
int items = sf.items();
|
||||||
|
real imp, impval, impeff, impeffval;
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string& row = sf.row(i);
|
||||||
|
imp = row.get(1);
|
||||||
|
impeff += imp;
|
||||||
|
impval = row.get(3);
|
||||||
|
impeffval += impval;
|
||||||
|
}
|
||||||
|
m->set(F_TOTIMP, impeff);
|
||||||
|
m->set(F_TOTIMPVAL, impeffval);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
||||||
|
{
|
||||||
|
if (s.to_check(key, TRUE)) calcola_totali();
|
||||||
|
if (key == K_DEL && s.items()==1)
|
||||||
|
{
|
||||||
|
error_box("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ef0100(int argc, char* argv[])
|
int ef0100(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
Variazione_Effetti a ;
|
TVariazione_effetti a ;
|
||||||
a.run(argc, argv, "Gestione effetti");
|
a.run(argc, argv, "Gestione Effetti");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
75
ef/ef0100.h
75
ef/ef0100.h
@ -3,44 +3,53 @@
|
|||||||
|
|
||||||
// campi maschera ef0100a.msk
|
// campi maschera ef0100a.msk
|
||||||
|
|
||||||
#define F_NPROGTR 101
|
#define F_NPROGTR 101
|
||||||
#define F_CODCF 102
|
#define F_CODCF 102
|
||||||
#define F_CFRAGSOC 103
|
#define F_CFRAGSOC 103
|
||||||
#define F_TIPOPAG 104
|
#define F_DATASCAD 104
|
||||||
#define F_DATASCAD 105
|
#define F_TIPOPAG 105
|
||||||
#define F_IMPORTO 106
|
#define F_ULTCLASS 106
|
||||||
#define F_NFATT 107
|
#define F_CODVAL 107
|
||||||
#define F_DATAFATT 108
|
#define F_DATACAM 108
|
||||||
#define F_IMPFATT 109
|
#define F_CAMBIO 109
|
||||||
#define F_NRATA 110
|
#define F_ULTRATA 110
|
||||||
#define F_ULTRATA 111
|
#define F_SHEET_RIGHE 111
|
||||||
#define F_CODABI 112
|
#define F_TOTIMP 112
|
||||||
#define F_CODCAB 113
|
#define F_TOTIMPVAL 113
|
||||||
#define F_DATAEMISS 114
|
#define F_CODABI 114
|
||||||
#define F_NUMEMISS 115
|
#define F_CODCAB 115
|
||||||
#define F_IMPBOLLO 116
|
#define F_CODABIP 116
|
||||||
#define F_EFFSTAMP 117
|
#define F_CODCABP 117
|
||||||
#define F_SHEET_EFF 118
|
#define F_DATAEMISS 118
|
||||||
#define F_TIPODIST 119
|
#define F_NUMEMISS 119
|
||||||
#define F_DATADIST 121
|
#define F_EFFSTAMP 120
|
||||||
#define F_NDIST 122
|
#define F_TIPODIST 121
|
||||||
#define F_NRIGADIST 123
|
#define F_NDIST 122
|
||||||
|
#define F_DATADIST 123
|
||||||
#define F_DISTSTAM 124
|
#define F_DISTSTAM 124
|
||||||
#define F_CODABIP 125
|
#define F_NRIGADIST 125
|
||||||
#define F_CODCABP 126
|
#define F_DATARIBA 126
|
||||||
#define F_EFFCONT 127
|
#define F_DISRIBAEST 127
|
||||||
#define F_CODFOR 128
|
#define F_EFFCONT 128
|
||||||
#define F_ULTCLASS 129
|
#define F_EFFCOMP 129
|
||||||
#define F_DATARIBA 130
|
#define F_SHEET_EFF 130
|
||||||
#define F_DISRIBAEST 131
|
|
||||||
#define F_EFFCOMP 132
|
|
||||||
|
|
||||||
|
|
||||||
// Identificatori campi per lo spreadsheet "Obbligati principali"
|
// Identificatori campi per lo spreadsheet "Obbligati principali"
|
||||||
#define F_RAGSOC 101
|
#define F_RAGSOC 101
|
||||||
#define F_LOCALITA 102
|
#define F_LOCALITA 102
|
||||||
#define F_STATO 103
|
#define F_STATO 103
|
||||||
#define F_COM 104
|
#define F_COM 104
|
||||||
#define F_DENCOM 105
|
#define F_DENCOM 105
|
||||||
|
|
||||||
|
// Identificatori campi per lo spreadsheet "Righe Effetto"
|
||||||
|
#define F_IMPFATT 101
|
||||||
|
#define F_IMPEFF 102
|
||||||
|
#define F_IMPFATTVAL 103
|
||||||
|
#define F_IMPEFFVAL 104
|
||||||
|
#define F_ANNO 105
|
||||||
|
#define F_NUMPART 106
|
||||||
|
#define F_NUMRIGA 107
|
||||||
|
#define F_NUMRATA 108
|
||||||
|
#define F_NUMFATT 109
|
||||||
|
#define F_DATAFATT 110
|
||||||
|
|
||||||
#endif // __EF0100_H
|
#endif // __EF0100_H
|
||||||
|
376
ef/ef0100a.uml
376
ef/ef0100a.uml
@ -6,108 +6,77 @@ TOOLBAR "" 0 20 0 2
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Gestione Effetti" 0 -1 0 19
|
PAGE "Gestione Effetti 1/3" 0 -1 0 19
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "Dati effetto"
|
PROMPT 1 1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NPROGTR 7
|
NUMBER F_NPROGTR 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Numero "
|
PROMPT 2 2 "Numero "
|
||||||
FIELD LF_EFFETTI->NPROGTR
|
FIELD LF_EFFETTI->NPROGTR
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_EFFETTI KEY 1
|
USE LF_EFFETTI KEY 1
|
||||||
JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
||||||
INPUT NPROGTR F_NPROGTR
|
INPUT NPROGTR F_NPROGTR
|
||||||
DISPLAY "Nr. Progressivo" NPROGTR
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
DISPLAY "Codice cliente" CODCF
|
DISPLAY "Codice cliente" CODCF
|
||||||
DISPLAY "Data scadenza" DATASCAD
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
DISPLAY "Data fattura" DATAFATT
|
|
||||||
DISPLAY "Numero fattura" NFATT
|
|
||||||
DISPLAY "Importo fattura @R" IMPFATT
|
|
||||||
DISPLAY "Importo effetto @R" IMPORTO
|
|
||||||
DISPLAY "Tipo" TIPOPAG
|
|
||||||
DISPLAY "Nr distinta" NDIST
|
|
||||||
DISPLAY "Tipo distinta" TIPODIST
|
DISPLAY "Tipo distinta" TIPODIST
|
||||||
|
DISPLAY "Nr. distinta" NDIST
|
||||||
OUTPUT F_NPROGTR NPROGTR
|
OUTPUT F_NPROGTR NPROGTR
|
||||||
OUTPUT F_CODCF CODCF
|
OUTPUT F_CODCF CODCF
|
||||||
OUTPUT F_DATASCAD DATASCAD
|
OUTPUT F_DATASCAD DATASCAD
|
||||||
|
OUTPUT F_TIPOPAG TIPOPAG
|
||||||
OUTPUT F_CFRAGSOC LF_CLIFO->RAGSOC
|
OUTPUT F_CFRAGSOC LF_CLIFO->RAGSOC
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Inserire il numero progressivo dell'effetto"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCF 6
|
NUMBER F_CODCF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Cod. cliente "
|
PROMPT 2 3 "Cod. cliente "
|
||||||
FIELD LF_EFFETTI->CODCF
|
FIELD LF_EFFETTI->CODCF
|
||||||
KEY 2
|
USE LF_CLIFO
|
||||||
USE LF_EFFETTI KEY 2
|
INPUT TIPOCF "C"
|
||||||
JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF="C"
|
|
||||||
INPUT CODCF F_CODCF
|
INPUT CODCF F_CODCF
|
||||||
INPUT NPROGTR F_NPROGTR
|
DISPLAY "Ragione sociale@60" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
/*
|
||||||
DISPLAY "Codice cliente" CODCF
|
DISPLAY "Codice cliente" CODCF
|
||||||
DISPLAY "Nr. progressivo" NPROGTR
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
DISPLAY "Data scadenza" DATASCAD
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
DISPLAY "Data fattura" DATAFATT
|
|
||||||
DISPLAY "Numero fattura" NFATT
|
|
||||||
DISPLAY "Importo fattura @R" IMPFATT
|
|
||||||
DISPLAY "Importo effetto @R" IMPORTO
|
|
||||||
DISPLAY "Tipo" TIPOPAG
|
|
||||||
DISPLAY "Nr distinta" NDIST
|
|
||||||
DISPLAY "Tipo distinta" TIPODIST
|
DISPLAY "Tipo distinta" TIPODIST
|
||||||
|
DISPLAY "Nr. distinta" NDIST
|
||||||
COPY OUTPUT F_NPROGTR
|
COPY OUTPUT F_NPROGTR
|
||||||
CHECKTYPE REQUIRED
|
*/
|
||||||
HELP "Inserire il codice del cliente. F8 ricerca cliente."
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_CFRAGSOC 50
|
|
||||||
BEGIN
|
|
||||||
PROMPT 25 2 ""
|
|
||||||
USE LF_CLIFO KEY 2
|
|
||||||
INPUT TIPOCF "C"
|
|
||||||
INPUT RAGSOC F_CFRAGSOC
|
|
||||||
DISPLAY "Ragione sociale@50" RAGSOC
|
|
||||||
DISPLAY "Codice" CODCF
|
|
||||||
OUTPUT F_CODCF CODCF
|
OUTPUT F_CODCF CODCF
|
||||||
OUTPUT F_CFRAGSOC RAGSOC
|
OUTPUT F_CFRAGSOC RAGSOC
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOPAG 18
|
STRING F_CFRAGSOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Tipo effetto "
|
PROMPT 25 3 ""
|
||||||
FIELD LF_EFFETTI->TIPOPAG
|
USE LF_CLIFO KEY 2
|
||||||
ITEM "2|Tratta"
|
//JOIN LF_EFFETTI TO LF_CLIFO KEY 2 INTO CODCF==CODCF
|
||||||
MESSAGE DISABLE,F_CODFOR|RESET,F_CODFOR
|
INPUT TIPOCF "C"
|
||||||
ITEM "3|Ricevuta bancaria"
|
INPUT RAGSOC F_CFRAGSOC
|
||||||
MESSAGE DISABLE,F_CODFOR|UNDO,F_CODFOR
|
DISPLAY "Ragione sociale@60" RAGSOC
|
||||||
ITEM "4|Cessione"
|
DISPLAY "Codice" CODCF
|
||||||
MESSAGE ENABLE,F_CODFOR|UNDO,F_CODFOR
|
/*DISPLAY "Nr. progressivo" LF_EFFETTI->NPROGTR
|
||||||
ITEM "5|Paghero'"
|
DISPLAY "Data scadenza" LF_EFFETTI->DATASCAD
|
||||||
MESSAGE DISABLE,F_CODFOR|UNDO,F_CODFOR
|
DISPLAY "Tipo distinta" LF_EFFETTI->TIPODIST
|
||||||
HELP "Inserire il tipo dell'effetto"
|
DISPLAY "Nr. distinta" LF_EFFETTI->NDIST*/
|
||||||
END
|
COPY OUTPUT F_CODCF
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
STRING F_ULTCLASS 1
|
|
||||||
BEGIN
|
|
||||||
PROMPT 42 4 "Ulteriore classificazione "
|
|
||||||
FIELD LF_EFFETTI->ULTCLASS
|
|
||||||
USE %CLR
|
|
||||||
INPUT CODTAB[1,1] F_TIPOPAG SELECT
|
|
||||||
INPUT CODTAB[2,2] F_ULTCLASS
|
|
||||||
DISPLAY "Classificazione" CODTAB[2,2]
|
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
OUTPUT F_ULTCLASS CODTAB[2,2]
|
|
||||||
HELP "Inserire l'ulteriore classificazione dell'effetto"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATASCAD
|
DATE F_DATASCAD
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Data scadenza "
|
PROMPT 2 4 "Data scadenza "
|
||||||
FIELD LF_EFFETTI->DATASCAD
|
FIELD LF_EFFETTI->DATASCAD
|
||||||
KEY 3
|
KEY 3
|
||||||
USE LF_EFFETTI KEY 3
|
USE LF_EFFETTI KEY 3
|
||||||
@ -115,281 +84,308 @@ BEGIN
|
|||||||
INPUT DATASCAD F_DATASCAD
|
INPUT DATASCAD F_DATASCAD
|
||||||
INPUT NPROGTR F_NPROGTR
|
INPUT NPROGTR F_NPROGTR
|
||||||
DISPLAY "Data scadenza" DATASCAD
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
DISPLAY "Nr progressivo" NPROGTR
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
DISPLAY "Codice cliente" CODCF
|
DISPLAY "Codice cliente" CODCF
|
||||||
DISPLAY "Data fattura" DATAFATT
|
DISPLAY "Tipo pag." TIPOPAG
|
||||||
DISPLAY "Numero fattura" NFATT
|
DISPLAY "Nr. distinta" NDIST
|
||||||
DISPLAY "Importo fattura @R" IMPFATT
|
|
||||||
DISPLAY "Importo effetto @R" IMPORTO
|
|
||||||
DISPLAY "Tipo" TIPOPAG
|
|
||||||
DISPLAY "Nr distinta" NDIST
|
|
||||||
DISPLAY "Tipo distinta" TIPODIST
|
DISPLAY "Tipo distinta" TIPODIST
|
||||||
COPY OUTPUT F_NPROGTR
|
COPY OUTPUT F_NPROGTR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Inserire la data di scadenza dell'effetto"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_IMPORTO 15
|
LIST F_TIPOPAG 24
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 5 "Importo effetto "
|
PROMPT 2 6 "Tipo pagamento "
|
||||||
FIELD LF_EFFETTI->IMPORTO
|
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|Bonifici"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_ULTCLASS 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 6 "Ulteriore classificazione "
|
||||||
|
FIELD LF_EFFETTI->ULTCLASS
|
||||||
|
USE %CLR
|
||||||
|
INPUT CODTAB[1,1] F_TIPOPAG SELECT
|
||||||
|
INPUT CODTAB[2,2] F_ULTCLASS
|
||||||
|
DISPLAY "Classificazione" CODTAB[2,2]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_ULTCLASS CODTAB[2,2]
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODVAL 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Codice valuta "
|
||||||
|
FIELD LF_EFFETTI->CODVAL
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE %VAL
|
||||||
|
INPUT CODTAB F_CODVAL
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Nome@50" S0
|
||||||
|
OUTPUT F_CODVAL CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA F_DATACAM
|
||||||
|
BEGIN
|
||||||
|
PROMPT 46 7 "Data cambio "
|
||||||
|
FIELD LF_EFFETTI->DATACAMBIO
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
PICTURE "."
|
USE CAM
|
||||||
HELP "Inserire l'importo dell'effetto"
|
INPUT CODTAB[1,3] F_CODVAL SELECT
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
INPUT CODTAB[4,11] F_DATACAM
|
||||||
WARNING "Manca l'importo dell'effetto"
|
DISPLAY "Valuta@9" CODTAB[1,3]
|
||||||
|
DISPLAY "Data@12" D0
|
||||||
|
DISPLAY "Cambio@19" R10
|
||||||
|
OUTPUT F_DATACAM D0
|
||||||
|
OUTPUT F_CAMBIO R10
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_NFATT 7
|
NUMBER F_CAMBIO 15 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Nr. fattura "
|
PROMPT 2 8 "Cambio "
|
||||||
FIELD LF_EFFETTI->NFATT
|
FIELD LF_EFFETTI->CAMBIO
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
FLAGS "RU"
|
||||||
HELP "Inserire il numero della fattura"
|
PICTURE ".5"
|
||||||
WARNING "Manca il numero della fattura"
|
CHECKTYPE REQUIRED
|
||||||
END
|
WARNING "E' stata specificata una valuta senza il cambio relativo"
|
||||||
|
GROUP 1
|
||||||
DATE F_DATAFATT
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 8 "Data fattura "
|
|
||||||
FIELD LF_EFFETTI->DATAFATT
|
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
|
||||||
HELP "Inserire la data della fattura"
|
|
||||||
WARNING "Manca la data della fattura"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_IMPFATT 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 42 8 "Importo fattura "
|
|
||||||
FIELD LF_EFFETTI->IMPFATT
|
|
||||||
FLAGS "R"
|
|
||||||
PICTURE "."
|
|
||||||
NUM_EXPR {#THIS_FIELD>=#F_IMPORTO}
|
|
||||||
HELP "Inserire l'importo della fattura"
|
|
||||||
WARNING "L'importo dell'effetto deve essere contenuto nell'importo di fattura"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_NRATA 3
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 9 "Nr. rata "
|
|
||||||
FIELD LF_EFFETTI->NRATA
|
|
||||||
HELP "Inserire il numero della rata"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_ULTRATA
|
BOOLEAN F_ULTRATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 9 "Ultima rata"
|
PROMPT 46 8 "Ultima rata"
|
||||||
FIELD LF_EFFETTI->ULTRATA
|
FIELD LF_EFFETTI->ULTRATA
|
||||||
HELP "Inserire se e' l'ultima rata relativa alla fattura"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 38 4
|
SPREADSHEET F_SHEET_RIGHE 76 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 10 "Banca d'appoggio"
|
PROMPT 2 10 "RIGHE EFFETTO"
|
||||||
|
ITEM "Importo fatt.@18"
|
||||||
|
ITEM "Importo effet.@18"
|
||||||
|
ITEM "Imp.fatt.val.@18"
|
||||||
|
ITEM "Imp.effet.val.@18"
|
||||||
|
ITEM "Anno partita"
|
||||||
|
ITEM "Nr. partita"
|
||||||
|
ITEM "Nr. riga"
|
||||||
|
ITEM "Nr. rata"
|
||||||
|
ITEM "Nr. fattura"
|
||||||
|
ITEM "Data fattura"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_TOTIMP 18 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "Totale importi "
|
||||||
|
FLAG "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_TOTIMPVAL 18 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 19 "Totale importi in valuta "
|
||||||
|
FLAG "D"
|
||||||
|
//GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Gestione Effetti 2/3" 0 -1 0 19
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 38 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "BANCA D'APPOGGIO"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODABI 5
|
NUMBER F_CODABI 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "Codice ABI "
|
PROMPT 2 2 "Codice ABI "
|
||||||
FIELD LF_EFFETTI->CODABI
|
FIELD LF_EFFETTI->CODABI
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
USE %BAN KEY 1 SELECT CODTAB ?="?????"
|
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||||
INPUT CODTAB F_CODABI
|
INPUT CODTAB F_CODABI
|
||||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||||
DISPLAY "Codice CAB" CODTAB[6,10]
|
|
||||||
DISPLAY "Denominazione@50" S0
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_CODABI CODTAB[1,5]
|
OUTPUT F_CODABI CODTAB[1,5]
|
||||||
OUTPUT F_CODCAB CODTAB[6,10]
|
OUTPUT F_CODCAB CODTAB[6,10]
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Inserire il codice ABI della banca d'appoggio"
|
WARNING "Codice ABI assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCAB 5
|
NUMBER F_CODCAB 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Codice CAB "
|
PROMPT 2 3 "Codice CAB "
|
||||||
FIELD LF_EFFETTI->CODCAB
|
FIELD LF_EFFETTI->CODCAB
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
USE %BAN
|
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||||
INPUT CODTAB[1,5] F_CODABI
|
INPUT CODTAB[1,5] F_CODABI
|
||||||
INPUT CODTAB[6,10] F_CODCAB
|
INPUT CODTAB[6,10] F_CODCAB
|
||||||
COPY DISPLAY F_CODABI
|
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||||
|
DISPLAY "Codice CAB" CODTAB[6,10]
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_CODABI CODTAB[1,5]
|
OUTPUT F_CODABI CODTAB[1,5]
|
||||||
OUTPUT F_CODCAB CODTAB[6,10]
|
OUTPUT F_CODCAB CODTAB[6,10]
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
HELP "Inserire il codice CAB della banca d'appoggio"
|
VALIDATE REQIF_FUNC 1 F_CODCABP
|
||||||
|
WARNING "Banca assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 38 4
|
GROUPBOX DLG_NULL 38 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 41 10 "Banca di presentazione"
|
PROMPT 41 1 "BANCA DI PRESENTAZIONE"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODABIP 5
|
NUMBER F_CODABIP 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 11 "Codice ABI "
|
PROMPT 42 2 "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 "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 NORMAL
|
CHECKTYPE NORMAL
|
||||||
HELP "Inserire il codice ABI della banca di presentazione effetti"
|
WARNING "Codice ABI assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCABP 5
|
NUMBER F_CODCABP 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 12 "Codice CAB "
|
PROMPT 42 3 "Codice CAB "
|
||||||
FIELD LF_EFFETTI->CODCABP
|
FIELD LF_EFFETTI->CODCABP
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
USE %BAN
|
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
|
||||||
COPY DISPLAY F_CODABIP
|
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||||
|
DISPLAY "Codice CAB" CODTAB[6,10]
|
||||||
|
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 NORMAL
|
CHECKTYPE NORMAL
|
||||||
HELP "Inserire il codice CAB della banca di presentazione effetti"
|
VALIDATE REQIF_FUNC 1 F_CODCABP
|
||||||
|
WARNING "Banca assente"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 "Dati stampa"
|
PROMPT 1 5 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATAEMISS
|
DATE F_DATAEMISS
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "Data di emissione "
|
PROMPT 2 6 "Data di emissione "
|
||||||
FIELD LF_EFFETTI->DATAEMISS
|
FIELD LF_EFFETTI->DATAEMISS
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NUMEMISS 8
|
NUMBER F_NUMEMISS 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 48 15 "Nr. di emissione "
|
PROMPT 42 6 "Nr. di emissione "
|
||||||
FIELD LF_EFFETTI->NUMEMISS
|
FIELD LF_EFFETTI->NUMEMISS
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_IMPBOLLO 15
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 16 "Importo bollo "
|
|
||||||
FIELD LF_EFFETTI->IMPBOLLO
|
|
||||||
FLAGS "R"
|
|
||||||
PICTURE "."
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_EFFSTAMP
|
BOOLEAN F_EFFSTAMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 48 16 "Effetto stampato"
|
PROMPT 2 7 "Effetto stampato"
|
||||||
FIELD LF_EFFETTI->EFFSTAMP
|
FIELD LF_EFFETTI->EFFSTAMP
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
|
||||||
PAGE "Pag. 2" 0 -1 0 19
|
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "Dati distinta"
|
PROMPT 1 9 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPODIST 15
|
LIST F_TIPODIST 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 1 "Tipo distinta "
|
PROMPT 2 10 "Tipo distinta "
|
||||||
FIELD LF_EFFETTI->TIPODIST
|
FIELD LF_EFFETTI->TIPODIST
|
||||||
ITEM " |** Nessuno **"
|
ITEM " |** Nessuno **"
|
||||||
MESSAGE DISABLE,2@|RESET,2@
|
MESSAGE DISABLE,2@|RESET,2@
|
||||||
ITEM "I|All'incasso"
|
ITEM "I|All'incasso"
|
||||||
MESSAGE ENABLE,2@|UNDO,2@
|
MESSAGE ENABLE,2@
|
||||||
ITEM "B|Salvo buon fine"
|
ITEM "B|Salvo buon fine"
|
||||||
MESSAGE ENABLE,2@|UNDO,2@
|
MESSAGE ENABLE,2@
|
||||||
ITEM "S|Allo sconto"
|
ITEM "S|Allo sconto"
|
||||||
MESSAGE ENABLE,2@|UNDO,2@
|
MESSAGE ENABLE,2@
|
||||||
HELP "Inserire il tipo di distinta"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NDIST 8
|
NUMBER F_NDIST 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 53 1 "Nr Distinta "
|
PROMPT 52 10 "Nr. distinta "
|
||||||
FIELD LF_EFFETTI->NDIST
|
FIELD LF_EFFETTI->NDIST
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
HELP "Inserire il numero della distinta"
|
|
||||||
WARNING "Numero di distinta obbligatorio se si e' inserito il tipo di distinta"
|
WARNING "Numero di distinta obbligatorio se si e' inserito il tipo di distinta"
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATADIST
|
DATE F_DATADIST
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Data distinta "
|
PROMPT 2 11 "Data distinta "
|
||||||
FIELD LF_EFFETTI->DATADIST
|
FIELD LF_EFFETTI->DATADIST
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
HELP "Inserire la data della distinta"
|
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_DISTSTAM
|
BOOLEAN F_DISTSTAM
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 2 "Stampata"
|
PROMPT 2 12 "Distinta stampata"
|
||||||
FIELD LF_EFFETTI->DISTSTAM
|
FIELD LF_EFFETTI->DISTSTAM
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
HELP "Inserire se la distinta e' stato stampata"
|
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NRIGADIST 6
|
NUMBER F_NRIGADIST 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 53 2 "Nr di riga "
|
PROMPT 52 12 "Nr. di riga "
|
||||||
FIELD LF_EFFETTI->NRIGADIST
|
FIELD LF_EFFETTI->NRIGADIST
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
HELP "Inserire il numero di riga della distinta"
|
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 3
|
GROUPBOX DLG_NULL 78 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Dati Ri.Ba."
|
PROMPT 1 14 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATARIBA
|
DATE F_DATARIBA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Data Ri.Ba. "
|
PROMPT 2 15 "Data Ri.Ba. "
|
||||||
FIELD LF_EFFETTI->DATARIBA
|
FIELD LF_EFFETTI->DATARIBA
|
||||||
HELP "Inserire la data della Ricevuta Bancaria"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_DISRIBAEST
|
BOOLEAN F_DISRIBAEST
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 49 5 "Distinta Ri.Ba. estratta"
|
PROMPT 52 15 "Distinta Ri.Ba. estratta"
|
||||||
FIELD LF_EFFETTI->DISRIBAEST
|
FIELD LF_EFFETTI->DISRIBAEST
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODFOR 6
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 7 "Cod. fornitore "
|
|
||||||
FIELD LF_EFFETTI->CODFOR
|
|
||||||
USE LF_CLIFO KEY 1
|
|
||||||
INPUT TIPOCF "F"
|
|
||||||
INPUT CODCF F_CODFOR
|
|
||||||
DISPLAY "Codice" CODCF
|
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
|
||||||
DISPLAY "Sospeso" SOSPESO
|
|
||||||
OUTPUT F_CODFOR CODCF
|
|
||||||
CHECKTYPE NORMAL
|
|
||||||
HELP "Inserire il codice del fornitore relativo alla cessione"
|
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_EFFCONT
|
BOOLEAN F_EFFCONT
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 49 7 "Effetto contabilizzato"
|
PROMPT 2 17 "Effetto contabilizzato"
|
||||||
FIELD LF_EFFETTI->EFFCONT
|
FIELD LF_EFFETTI->EFFCONT
|
||||||
HELP "Inserire se l'effetto e' contabilizzato"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_SHEET_EFF 76 4
|
BOOLEAN F_EFFCOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Obbligati principali"
|
PROMPT 52 17 "Effetto completato"
|
||||||
|
FIELD LF_EFFETTI->EFFCOMP
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Gestione Effetti 3/3" 0 -1 0 19
|
||||||
|
|
||||||
|
SPREADSHEET F_SHEET_EFF 76 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "OBBLIGATI PRINCIPALI"
|
||||||
ITEM "Ragione Sociale@50"
|
ITEM "Ragione Sociale@50"
|
||||||
ITEM "Localita'@35"
|
ITEM "Localita'@35"
|
||||||
ITEM "Stato"
|
ITEM "Stato"
|
||||||
@ -397,14 +393,10 @@ BEGIN
|
|||||||
ITEM "Comune@50"
|
ITEM "Comune@50"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_EFFCOMP
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 15 "Effetto compilato"
|
|
||||||
FIELD LF_EFFETTI->EFFCOMP
|
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
#include "ef0100c.uml"
|
||||||
#include "ef0100b.uml"
|
#include "ef0100b.uml"
|
||||||
|
|
||||||
|
@ -4,76 +4,76 @@ PAGE "Obbligati principali" -1 -1 76 12
|
|||||||
|
|
||||||
STRING F_RAGSOC 50
|
STRING F_RAGSOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Rag. sociale "
|
PROMPT 2 2 "Rag. sociale "
|
||||||
HELP "Inserire la ragione sociale dell'obbligato"
|
HELP "Inserire la ragione sociale dell'obbligato"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_LOCALITA 35
|
STRING F_LOCALITA 35
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Localita "
|
PROMPT 2 4 "Localita' "
|
||||||
HELP "Inserire la localita dell'obbligato"
|
HELP "Inserire la localita dell'obbligato"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_STATO 3
|
NUMBER F_STATO 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 60 4 "Stato "
|
PROMPT 60 4 "Stato "
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
USE %STA
|
USE %STA
|
||||||
INPUT CODTAB F_STATO
|
INPUT CODTAB F_STATO
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Stato@50" S0
|
DISPLAY "Stato@50" S0
|
||||||
OUTPUT F_STATO CODTAB
|
OUTPUT F_STATO CODTAB
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Stato assente"
|
WARNING "Stato assente"
|
||||||
HELP "Inserire lo stato in cui risiede l'obbligato"
|
HELP "Inserire lo stato in cui risiede l'obbligato"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_COM 4
|
STRING F_COM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Comune "
|
PROMPT 2 6 "Comune "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE LF_COMUNI
|
USE LF_COMUNI
|
||||||
INPUT STATO F_STATO
|
INPUT STATO F_STATO
|
||||||
INPUT COM F_COM
|
INPUT COM F_COM
|
||||||
DISPLAY "Stato" STATO
|
DISPLAY "Stato" STATO
|
||||||
DISPLAY "Codice" COM
|
DISPLAY "Codice" COM
|
||||||
DISPLAY "Comune@50" DENCOM
|
DISPLAY "Comune@50" DENCOM
|
||||||
OUTPUT F_STATO STATO
|
OUTPUT F_STATO STATO
|
||||||
OUTPUT F_COM COM
|
OUTPUT F_COM COM
|
||||||
OUTPUT F_DENCOM DENCOM
|
OUTPUT F_DENCOM DENCOM
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Comune assente"
|
WARNING "Comune assente"
|
||||||
HELP "Inserire il comune in cui risiede l'obbligato"
|
HELP "Inserire il comune in cui risiede l'obbligato"
|
||||||
ADD MASK ba4100a
|
ADD MASK ba4100a
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DENCOM 50
|
STRING F_DENCOM 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 6 ""
|
PROMPT 24 6 ""
|
||||||
USE LF_COMUNI KEY 2
|
USE LF_COMUNI KEY 2
|
||||||
INPUT DENCOM F_DENCOM
|
INPUT DENCOM F_DENCOM
|
||||||
DISPLAY "Comune @50" DENCOM
|
DISPLAY "Comune @50" DENCOM
|
||||||
DISPLAY "Stato" STATO
|
DISPLAY "Stato" STATO
|
||||||
DISPLAY "Codice" COM
|
DISPLAY "Codice" COM
|
||||||
COPY OUTPUT F_COM
|
COPY OUTPUT F_COM
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
ADD MASK ba4100a
|
ADD MASK ba4100a
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
BUTTON DLG_OK 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -13 -1 ""
|
PROMPT -13 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 9 2
|
BUTTON DLG_CANCEL 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -23 -1 ""
|
PROMPT -23 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_DELREC 9 2
|
BUTTON DLG_DELREC 9 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -33 -1 "Elimina"
|
PROMPT -33 -1 "Elimina"
|
||||||
MESSAGE EXIT, K_DEL
|
MESSAGE EXIT, K_DEL
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
237
ef/ef0101.cpp
237
ef/ef0101.cpp
@ -1,121 +1,186 @@
|
|||||||
#include "effetti.h"
|
#include "effetti.h"
|
||||||
|
#include "reffetti.h"
|
||||||
#include "cession.h"
|
#include "cession.h"
|
||||||
#include "ef0101.h"
|
#include "ef0101.h"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
//////// Riga Effetto
|
||||||
|
/////////////////////////////////////////////////////////////
|
||||||
TEffObb::TEffObb():TRelation(LF_EFFETTI), _oldobbligati(0)
|
TRiga_effetto::TRiga_effetto(TEffetto* eff)
|
||||||
|
: TRectype(LF_REFFETTI), _eff(eff)
|
||||||
{
|
{
|
||||||
add(LF_CESS,"NPROGTR=NPROGTR");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEffObb::destroy_rows()
|
TRiga_effetto::TRiga_effetto(const TRiga_effetto& rec, TEffetto* eff)
|
||||||
|
: TRectype(rec), _eff(eff)
|
||||||
{
|
{
|
||||||
_obbligati.destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype& TEffObb::obbligato(int i)
|
/////////////////////////////////////////////////////////////
|
||||||
{
|
////////// Effetto
|
||||||
TRectype *r=(TRectype*)_obbligati.objptr(i);
|
/////////////////////////////////////////////////////////////
|
||||||
|
TEffetto::TEffetto()
|
||||||
|
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
if (r == NULL)
|
TEffetto::TEffetto(TRectype& rec)
|
||||||
|
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
||||||
|
{
|
||||||
|
read(rec);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEffetto::set_key(TRectype& rec, long numeff) const
|
||||||
|
{
|
||||||
|
CHECKD(numeff >= 0, "Numero effetto non valido ", numeff);
|
||||||
|
rec.put("NPROGTR",numeff);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEffetto::set_key4(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
||||||
|
{
|
||||||
|
CHECK(tipodist == 'I' || tipodist == 'S' || tipodist == 'B', "Tipo distinta");
|
||||||
|
CHECKD(ndist >= 0, "Numero distinta non valido ", ndist);
|
||||||
|
CHECKD(nrigadist >= 0, "Numero riga distinta non valido ", nrigadist);
|
||||||
|
|
||||||
|
rec.put("TIPODIST", tipodist);
|
||||||
|
rec.put("NDIST", ndist);
|
||||||
|
rec.put("NRIGADIST", nrigadist);
|
||||||
|
}
|
||||||
|
|
||||||
|
long TEffetto::get_next_key(const long codcf) const
|
||||||
|
{
|
||||||
|
static long n = 0;
|
||||||
|
if (n == 0)
|
||||||
{
|
{
|
||||||
r = new TRectype(LF_CESS);
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
_obbligati.add(r,i);
|
TRectype& curr = eff.curr();
|
||||||
}
|
set_key(curr, 9999999L);
|
||||||
return *r;
|
|
||||||
|
const int err = eff.read(_isgreat);
|
||||||
|
|
||||||
|
if (err != _isemptyfile)
|
||||||
|
{
|
||||||
|
if (err == NOERR)
|
||||||
|
eff.prev();
|
||||||
|
if (curr.get_long("CODCF")==codcf)
|
||||||
|
n = curr.get_long("NPROGTR");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n++;
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TEffObb::read_obbligati()
|
long TEffetto::renum(long numeff)
|
||||||
{
|
{
|
||||||
const TLocalisamfile& robb = lfile(LF_CESS);
|
if (numeff <= 0)
|
||||||
|
{
|
||||||
|
long codcf = codicec();
|
||||||
|
numeff = get_next_key(codcf);
|
||||||
|
}
|
||||||
|
char num[7]; sprintf(num, "%ld", numeff);
|
||||||
|
renum_key("NPROGTR", num); // aggiorna testata
|
||||||
|
_righe.renum_key("NPROGTR", num); // aggiorna righe ok
|
||||||
|
_cess.renum_key("NPROGTR", num); // aggiorna cessionari ok
|
||||||
|
return numeff;
|
||||||
|
}
|
||||||
|
|
||||||
position_rels();
|
int TEffetto::read(const TRectype& rec)
|
||||||
destroy_rows();
|
{
|
||||||
for (bool ok=is_first_match(LF_CESS);ok;ok=next_match(LF_CESS))
|
head() = rec;
|
||||||
|
TRectype *k_reff = new TRectype(LF_REFFETTI), *k_cess= new TRectype(LF_CESS);
|
||||||
|
const long nu = numero();
|
||||||
|
CHECK(nu > 0, "Numero effetto nullo.");
|
||||||
|
set_key(*k_reff, nu);
|
||||||
|
set_key(*k_cess, nu);
|
||||||
|
|
||||||
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
|
int err = TRectype::read(eff);
|
||||||
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
const int nriga=robb.get_int(CES_NRIGA) -1;
|
_righe.read(k_reff);
|
||||||
obbligato(nriga)=robb.curr();
|
_cess.read(k_cess);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
head() = rec;
|
||||||
|
destroy_rows_r();
|
||||||
|
destroy_rows_c();
|
||||||
|
_cess.set_key(k_cess);
|
||||||
|
_righe.set_key(k_reff);
|
||||||
}
|
}
|
||||||
_oldobbligati=obbligati_items();
|
|
||||||
return NOERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
int TEffObb::read(TIsamop op, TReclock lockop, TDate& atdate)
|
|
||||||
{
|
|
||||||
int err=file().read(op,lockop,atdate);
|
|
||||||
if (err==NOERR) read_obbligati();
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TEffObb::write_rec(bool re, const TRectype& rec, TLocalisamfile& f)
|
int TEffetto::read(char tipodist, long ndist, long nrigadist)
|
||||||
{
|
{
|
||||||
if (re)
|
TRectype rec(LF_EFFETTI);
|
||||||
{
|
set_key4(rec, tipodist,ndist, nrigadist);
|
||||||
const bool scrivi= (f.rewrite(rec)!=NOERR);
|
return read(rec);
|
||||||
if (scrivi) f.write(rec);
|
|
||||||
} else
|
|
||||||
f.write(rec);
|
|
||||||
return f.status();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TEffObb::cancella(TLocalisamfile& f, int da, int a)
|
int TEffetto::write(bool force)
|
||||||
{
|
{
|
||||||
const long nprogtr=lfile().get_long(EFF_NPROGTR);
|
const bool nuovo = numero() <= 0; // E' nuovo di zecca!
|
||||||
|
if (nuovo && force) // quindi ...
|
||||||
|
force = FALSE; // ... non fare la rewrite
|
||||||
|
|
||||||
for (int i=da; i<=a;i++)
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
|
int err = NOERR;
|
||||||
|
if (force)
|
||||||
{
|
{
|
||||||
f.zero();
|
if ((err=_righe.write(force)) == NOERR) err = _cess.write(force);
|
||||||
f.put(CES_NPROGTR,nprogtr);
|
if (err == NOERR)
|
||||||
f.put(CES_NRIGA,i);
|
{
|
||||||
if (f.read(_isequal,_lock)==NOERR)
|
err = TRectype::rewrite(eff);
|
||||||
f.remove();
|
if (err != NOERR)
|
||||||
|
err = TRectype::write(eff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (nuovo)
|
||||||
|
{
|
||||||
|
TEffetto& myself = *(TEffetto*)this;
|
||||||
|
if (numero() <= 0)
|
||||||
|
myself.renum();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
err = TRectype::write(eff);
|
||||||
|
if (err == _isreinsert)
|
||||||
|
myself.renum();
|
||||||
|
} while (err == _isreinsert);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err = TRectype::write(eff);
|
||||||
|
if (err != NOERR)
|
||||||
|
err = TRectype::rewrite(eff);
|
||||||
|
}
|
||||||
|
if (err == NOERR)
|
||||||
|
if ((err=_righe.write(force)) == NOERR) err= _cess.write(force);
|
||||||
}
|
}
|
||||||
return f.status();
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TEffObb::registra(bool re, bool force)
|
int TEffetto::remove()const
|
||||||
{
|
{
|
||||||
TLocalisamfile& c=lfile(LF_EFFETTI);
|
TLocalisamfile eff(LF_EFFETTI);
|
||||||
int err=write_rec(re,c.curr(),c);
|
int err;
|
||||||
if (err!=NOERR) return err;
|
if ((err=_righe.remove()) == NOERR) err= _cess.remove();
|
||||||
|
if (err == NOERR)
|
||||||
TLocalisamfile& robb=lfile(LF_CESS);
|
err = TRectype::remove(eff);
|
||||||
const long nprogtr=c.get_long(CES_NPROGTR);
|
return err;
|
||||||
|
|
||||||
for (int i=0; i<obbligati_items(); i++)
|
|
||||||
{
|
|
||||||
if (!re)
|
|
||||||
obbligato(i).put(CES_NPROGTR,nprogtr);
|
|
||||||
err=write_rec(TRUE,obbligato(i),robb);
|
|
||||||
}
|
|
||||||
if (i<_oldobbligati)
|
|
||||||
cancella(robb,i+1,_oldobbligati);
|
|
||||||
_oldobbligati=obbligati_items();
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TEffObb::write(bool force, TDate&)
|
|
||||||
{
|
|
||||||
_oldobbligati=0;
|
|
||||||
return registra(FALSE,force);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TEffObb::rewrite(bool force, TDate&)
|
|
||||||
{
|
|
||||||
return registra(TRUE,force);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TEffObb::remove(TDate&)
|
|
||||||
{
|
|
||||||
TLocalisamfile& c=lfile(LF_EFFETTI);
|
|
||||||
|
|
||||||
c.remove();
|
|
||||||
|
|
||||||
TLocalisamfile& robb=lfile(LF_CESS);
|
|
||||||
cancella(robb,1,_oldobbligati);
|
|
||||||
_oldobbligati=0;
|
|
||||||
|
|
||||||
return c.status();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
112
ef/ef0101.h
112
ef/ef0101.h
@ -2,37 +2,91 @@
|
|||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class TEffetto;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////
|
||||||
|
// classe per gestire le righe di un effetto
|
||||||
////////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
class TRiga_effetto : public TRectype
|
||||||
class TEffObb:public TRelation
|
|
||||||
{
|
{
|
||||||
// @DPRIV
|
TEffetto * _eff;
|
||||||
TArray _obbligati;
|
|
||||||
int _oldobbligati;
|
|
||||||
// @END
|
|
||||||
protected:
|
protected:
|
||||||
// @FPROT
|
TObject* dup() const // duplica l'oggetto corrente
|
||||||
int write_rec(bool re, const TRectype& r, TLocalisamfile& f);
|
{ return new TRiga_effetto(*this); }
|
||||||
int cancella(TLocalisamfile& f, int da, int a);
|
public:
|
||||||
int registra(bool re, bool force);
|
int numeror() const // restituisce il numero della riga
|
||||||
int read_obbligati();
|
{ return get_int("NRIGATR");}
|
||||||
// @END
|
void set_numeror(int numero) // setta il valore del numero di riga con quello passato
|
||||||
public:
|
{ put("NRIGATR", numero);}
|
||||||
virtual int next(TReclock lockop=_nolock) {return (lfile().next(lockop) || read_obbligati());}
|
void set_eff(TEffetto * eff) // setta l'effetto con quello passato
|
||||||
virtual int prev(TReclock lockop=_nolock) {return (lfile().prev(lockop) || read_obbligati());}
|
{ _eff = eff; }
|
||||||
virtual int first(TReclock lockop=_nolock) {return (lfile().first(lockop) || read_obbligati());}
|
const TEffetto & eff() const
|
||||||
virtual int last(TReclock lockop=_nolock) {return (lfile().last(lockop) || read_obbligati());}
|
{ CHECK(_eff, "Effetto nullo"); return *_eff;}
|
||||||
virtual int skip(TReclock lockop=_nolock) {return (lfile().skip(lockop) || read_obbligati());}
|
TRiga_effetto(TEffetto* eff);
|
||||||
virtual int read(TIsamop = _isgteq, TReclock lockop = _nolock, TDate& atdate = (TDate&) botime);
|
TRiga_effetto(const TRiga_effetto& rec, TEffetto* eff);
|
||||||
virtual int write(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
virtual ~TRiga_effetto() {}
|
||||||
virtual int rewrite(bool force=TRUE, TDate& atdate = (TDate&) botime);
|
};
|
||||||
virtual int remove(TDate& atdate = (TDate&) botime);
|
|
||||||
|
/////////////////////////////////////////////////
|
||||||
TRectype& obbligato(int i);
|
// classe per gestire gli effetti
|
||||||
int obbligati_items() const {return _obbligati.items();}
|
////////////////////////////////////////////////
|
||||||
void destroy_rows();
|
class TEffetto:public TRectype
|
||||||
|
{
|
||||||
TEffObb();
|
TRecord_array _righe,_cess;
|
||||||
virtual ~TEffObb() {}
|
protected:
|
||||||
|
|
||||||
|
long get_next_key(const long codcf) const; // ritorna la prossima chiave
|
||||||
|
|
||||||
|
public:
|
||||||
|
long renum(long numeff = 0); // rinumera le chiavi
|
||||||
|
|
||||||
|
const TRectype& head() const
|
||||||
|
{ return *this; } // Ritorna la testata dell'effetto
|
||||||
|
TRectype& head()
|
||||||
|
{ return *this; }
|
||||||
|
|
||||||
|
TRecord_array& righe() {return _righe;}
|
||||||
|
TRecord_array& cess() {return _cess;}
|
||||||
|
TRectype& row_c(int i, bool create=FALSE)
|
||||||
|
{ return _cess.row(i,create); } // ritorna la riga i dei cessionari
|
||||||
|
TRectype& row_r(int i, bool create=FALSE)
|
||||||
|
{ return _righe.row(i,create); } // ritorna la riga i delle righe
|
||||||
|
|
||||||
|
int rows_r() const // ritorna il numero delle righe presenti
|
||||||
|
{ return _righe.rows(); } // nelle righe effetto
|
||||||
|
int rows_c() const // ritorna il numero delle righe presenti
|
||||||
|
{ return _cess.rows(); } // nei cessionari
|
||||||
|
|
||||||
|
bool destroy_row_r(int n, bool pack = FALSE) // elimina l'elemento riga nella posizione n
|
||||||
|
{ return _righe.destroy_row(n, pack); } // nelle righe effetto
|
||||||
|
void destroy_rows_r() // elimina tutti gli elementi riga
|
||||||
|
{ _righe.destroy_rows(); } // nelle righe effetto
|
||||||
|
|
||||||
|
bool destroy_row_c(int n, bool pack = FALSE) // elimina l'elemento riga nella posizione n
|
||||||
|
{ return _cess.destroy_row(n, pack); } // nei cessionari
|
||||||
|
void destroy_rows_c() // elimina tutti gli elementi riga
|
||||||
|
{ _cess.destroy_rows(); } // nei cessionari
|
||||||
|
int read(const TRectype& rec);
|
||||||
|
int read(char tipodist, long ndist, long nrigadist);
|
||||||
|
int write(bool force=FALSE);
|
||||||
|
int rewrite()
|
||||||
|
{ return write(TRUE); }
|
||||||
|
int remove()const;
|
||||||
|
long numero() const // metodi per ritornare i campi chiave
|
||||||
|
{ return get_long("NPROGTR"); } // del file EFFETTI
|
||||||
|
long codicec() const
|
||||||
|
{ return get_long("CODCF"); }
|
||||||
|
TDate datasc() const
|
||||||
|
{ return get_date("DATASCAD"); }
|
||||||
|
char tipodist() const
|
||||||
|
{ return get_char("TIPODIST"); }
|
||||||
|
long ndist() const
|
||||||
|
{ return get_long("NDIST"); }
|
||||||
|
long nrgdist() const
|
||||||
|
{ return get_long("NRIGADIST"); }
|
||||||
|
void set_key4(TRectype& rec,char tipodist, long ndist, long nrigadist); //setta i campi per la quarta chiave del file
|
||||||
|
void set_key(TRectype& rec,long numeff) const; //setta i campi per la chiave
|
||||||
|
TEffetto();
|
||||||
|
TEffetto(TRectype& rec);
|
||||||
|
virtual ~TEffetto() {}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user