aggiunta programma eliminazione effetti
git-svn-id: svn://10.65.10.50/trunk@3933 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
55799cf79a
commit
3b8ba72aa3
@ -18,7 +18,10 @@ int main(int argc, char** argv)
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
res = ef0300(argc,argv);
|
res = ef0300(argc,argv);
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
res = ef0400(argc,argv);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
error_box(usage, argv[0]);
|
error_box(usage, argv[0]);
|
||||||
break;
|
break;
|
||||||
|
1
ef/ef0.h
1
ef/ef0.h
@ -4,6 +4,7 @@
|
|||||||
int ef0100(int argc, char* argv[]);
|
int ef0100(int argc, char* argv[]);
|
||||||
int ef0200(int argc, char* argv[]);
|
int ef0200(int argc, char* argv[]);
|
||||||
int ef0300(int argc, char* argv[]);
|
int ef0300(int argc, char* argv[]);
|
||||||
|
int ef0400(int argc, char* argv[]);
|
||||||
|
|
||||||
#endif // __EF0_H
|
#endif // __EF0_H
|
||||||
|
|
||||||
|
@ -14,4 +14,10 @@ MENU MENU_BAR(1)
|
|||||||
MENUBAR MENU_BAR(2)
|
MENUBAR MENU_BAR(2)
|
||||||
|
|
||||||
MENU MENU_BAR(2)
|
MENU MENU_BAR(2)
|
||||||
SUBMENU MENU_FILE "~File"
|
SUBMENU MENU_FILE "~File"
|
||||||
|
|
||||||
|
/* ef0 -3 */
|
||||||
|
MENUBAR MENU_BAR(3)
|
||||||
|
|
||||||
|
MENU MENU_BAR(3)
|
||||||
|
SUBMENU MENU_FILE "~File"
|
@ -46,13 +46,15 @@ public:
|
|||||||
|
|
||||||
// restituisce un riferimento all' applicazione
|
// restituisce un riferimento all' applicazione
|
||||||
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
||||||
|
|
||||||
// quando si va in query mode resetta i due campi della maschera
|
// quando si va in query mode resetta i due campi della maschera
|
||||||
void TVariazione_effetti::init_query_mode(TMask&)
|
void TVariazione_effetti::init_query_mode(TMask&)
|
||||||
{
|
{
|
||||||
_msk->reset(F_TOTIMP);
|
_msk->reset(F_TOTIMP);
|
||||||
_msk->reset(F_TOTIMPVAL);
|
_msk->reset(F_TOTIMPVAL);
|
||||||
}
|
}
|
||||||
// quando si va in insert mode resetta i due campi della maschera,
|
|
||||||
|
// quando si va in insert mode resetta i due campi della maschera relativi ai totali,
|
||||||
// inserisce una riga vuota nello sheet e setta il flag dirty dello sheet
|
// inserisce una riga vuota nello sheet e setta il flag dirty dello sheet
|
||||||
// per forzare l'utente all'inserimento di una riga
|
// per forzare l'utente all'inserimento di una riga
|
||||||
void TVariazione_effetti::init_insert_mode(TMask&)
|
void TVariazione_effetti::init_insert_mode(TMask&)
|
||||||
@ -62,7 +64,8 @@ void TVariazione_effetti::init_insert_mode(TMask&)
|
|||||||
TToken_string riga("|||||||||");
|
TToken_string riga("|||||||||");
|
||||||
righe_sheet().row(0)=riga;
|
righe_sheet().row(0)=riga;
|
||||||
righe_sheet().set_dirty();
|
righe_sheet().set_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna il prossimo numero valido di chiave
|
// ritorna il prossimo numero valido di chiave
|
||||||
const char* TVariazione_effetti::get_next_key()
|
const char* TVariazione_effetti::get_next_key()
|
||||||
{
|
{
|
||||||
@ -78,18 +81,21 @@ const char* TVariazione_effetti::get_next_key()
|
|||||||
}
|
}
|
||||||
return format("%d|%ld",F_NPROGTR,nprogtr);
|
return format("%d|%ld",F_NPROGTR,nprogtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna un riferimento allo sheet dei cessionari
|
// ritorna un riferimento allo sheet dei cessionari
|
||||||
TSheet_field& TVariazione_effetti::cess_sheet() const
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna un riferimento allo sheet delle righe
|
// ritorna un riferimento allo sheet delle righe
|
||||||
TSheet_field& TVariazione_effetti::righe_sheet() const
|
TSheet_field& TVariazione_effetti::righe_sheet() const
|
||||||
{
|
{
|
||||||
TSheet_field& r_sheet = (TSheet_field&)_msk->field(F_SHEET_RIGHE);
|
TSheet_field& r_sheet = (TSheet_field&)_msk->field(F_SHEET_RIGHE);
|
||||||
return r_sheet;
|
return r_sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
// metodo che permette di scivere su file i dati inseriti nella maschera;
|
// metodo che permette di scivere su file i dati inseriti nella maschera;
|
||||||
// comune alla write e alla rewrite
|
// comune alla write e alla rewrite
|
||||||
void TVariazione_effetti::common_f(const TMask& m)
|
void TVariazione_effetti::common_f(const TMask& m)
|
||||||
@ -144,6 +150,7 @@ void TVariazione_effetti::common_f(const TMask& m)
|
|||||||
}
|
}
|
||||||
_effetto->renum(_effetto->numero());
|
_effetto->renum(_effetto->numero());
|
||||||
}
|
}
|
||||||
|
|
||||||
// carica nella maschera i dati dai files
|
// carica nella maschera i dati dai files
|
||||||
int TVariazione_effetti::read(TMask& m)
|
int TVariazione_effetti::read(TMask& m)
|
||||||
{
|
{
|
||||||
@ -169,11 +176,13 @@ int TVariazione_effetti::read(TMask& m)
|
|||||||
riga.add(rec.get(CES_RAGSOC));
|
riga.add(rec.get(CES_RAGSOC));
|
||||||
riga.add(rec.get(CES_LOCALITA));
|
riga.add(rec.get(CES_LOCALITA));
|
||||||
riga.add(rec.get(CES_STATO));
|
riga.add(rec.get(CES_STATO));
|
||||||
codcom = rec.get(CES_COM);
|
|
||||||
riga.add(codcom);
|
codcom = rec.get(CES_COM);//per caricare nello sheet dei cessionari la denominazione
|
||||||
|
riga.add(codcom); //del comune di cui si conosce il codice
|
||||||
_com->zero();
|
_com->zero();
|
||||||
_com->put("COM", codcom);
|
_com->put("COM", codcom);
|
||||||
if (_com->read() == NOERR) riga.add(_com->get(COM_DENCOM));
|
if (_com->read() == NOERR) riga.add(_com->get(COM_DENCOM));
|
||||||
|
|
||||||
shcess.row(i-1)=riga;
|
shcess.row(i-1)=riga;
|
||||||
}
|
}
|
||||||
items = _effetto->rows_r();
|
items = _effetto->rows_r();
|
||||||
@ -197,6 +206,7 @@ int TVariazione_effetti::read(TMask& m)
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// riscrive i dati su file
|
// riscrive i dati su file
|
||||||
int TVariazione_effetti::rewrite(const TMask& m)
|
int TVariazione_effetti::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
@ -204,6 +214,7 @@ int TVariazione_effetti::rewrite(const TMask& m)
|
|||||||
TLocalisamfile f(LF_EFFETTI);
|
TLocalisamfile f(LF_EFFETTI);
|
||||||
return _effetto->rewrite(f);
|
return _effetto->rewrite(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// scrive i dati su file
|
// scrive i dati su file
|
||||||
int TVariazione_effetti::write(const TMask& m)
|
int TVariazione_effetti::write(const TMask& m)
|
||||||
{
|
{
|
||||||
@ -214,6 +225,7 @@ int TVariazione_effetti::write(const TMask& m)
|
|||||||
_rel->read();// rilegge per posizionare correttamente la relazione
|
_rel->read();// rilegge per posizionare correttamente la relazione
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// rimuove i dati dell'effetto
|
// rimuove i dati dell'effetto
|
||||||
bool TVariazione_effetti::remove()
|
bool TVariazione_effetti::remove()
|
||||||
{
|
{
|
||||||
@ -235,6 +247,7 @@ bool TVariazione_effetti::user_create()
|
|||||||
righe_sheet().set_notify(impeff_notify);
|
righe_sheet().set_notify(impeff_notify);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TVariazione_effetti::user_destroy()
|
bool TVariazione_effetti::user_destroy()
|
||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
@ -245,6 +258,7 @@ bool TVariazione_effetti::user_destroy()
|
|||||||
delete _com;
|
delete _com;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler che permette di effettuare il controllo sul fatto che venga inserita
|
// handler che permette di effettuare il controllo sul fatto che venga inserita
|
||||||
// almeno una riga per un effetto
|
// almeno una riga per un effetto
|
||||||
bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
||||||
@ -264,12 +278,13 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
|||||||
}
|
}
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
error_box("L'effetto deve contenere almeno una riga!");
|
error_box("L'effetto non può contenere righe con importo nullo!");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handler che permette il controllo sulla abilitazione dei campi collegati
|
// handler che permette il controllo sulla abilitazione dei campi collegati
|
||||||
// al codice valuta
|
// al codice valuta
|
||||||
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||||
@ -299,6 +314,7 @@ bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli importi totali
|
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli importi totali
|
||||||
// (in lire ed in valuta) dell'effetto
|
// (in lire ed in valuta) dell'effetto
|
||||||
void TVariazione_effetti::calcola_totali()
|
void TVariazione_effetti::calcola_totali()
|
||||||
@ -318,6 +334,7 @@ void TVariazione_effetti::calcola_totali()
|
|||||||
m->set(F_TOTIMP, impeff);
|
m->set(F_TOTIMP, impeff);
|
||||||
m->set(F_TOTIMPVAL, impeffval);
|
m->set(F_TOTIMPVAL, impeffval);
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify per il calcolo dei totali dell'effetto e per il controllo che non vengano eliminate
|
// notify per il calcolo dei totali dell'effetto e per il controllo che non vengano eliminate
|
||||||
// tutte le righe dell'effetto, almeno una deve rimanere
|
// tutte le righe dell'effetto, almeno una deve rimanere
|
||||||
bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
||||||
|
97
ef/ef0100.h
97
ef/ef0100.h
@ -1,55 +1,54 @@
|
|||||||
#ifndef __EF0100_H
|
#ifndef __EF0100_H
|
||||||
#define __EF0100_H
|
#define __EF0100_H
|
||||||
|
|
||||||
// campi maschera ef0100a.msk
|
// campi maschera ef0100a.uml
|
||||||
|
|
||||||
#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_DATASCAD 104
|
#define F_DATASCAD 104
|
||||||
#define F_TIPOPAG 105
|
#define F_TIPOPAG 105
|
||||||
#define F_ULTCLASS 106
|
#define F_ULTCLASS 106
|
||||||
#define F_CODVAL 107
|
#define F_CODVAL 107
|
||||||
#define F_DATACAM 108
|
#define F_DATACAM 108
|
||||||
#define F_CAMBIO 109
|
#define F_CAMBIO 109
|
||||||
#define F_ULTRATA 110
|
#define F_ULTRATA 110
|
||||||
#define F_SHEET_RIGHE 111
|
#define F_SHEET_RIGHE 111
|
||||||
#define F_TOTIMP 112
|
#define F_TOTIMP 112
|
||||||
#define F_TOTIMPVAL 113
|
#define F_TOTIMPVAL 113
|
||||||
#define F_CODABI 114
|
#define F_CODABI 114
|
||||||
#define F_CODCAB 115
|
#define F_CODCAB 115
|
||||||
#define F_CODABIP 116
|
#define F_CODABIP 116
|
||||||
#define F_CODCABP 117
|
#define F_CODCABP 117
|
||||||
#define F_DATAEMISS 118
|
#define F_DATAEMISS 118
|
||||||
#define F_NUMEMISS 119
|
#define F_NUMEMISS 119
|
||||||
#define F_EFFSTAMP 120
|
#define F_EFFSTAMP 120
|
||||||
#define F_TIPODIST 121
|
#define F_TIPODIST 121
|
||||||
#define F_NDIST 122
|
#define F_NDIST 122
|
||||||
#define F_DATADIST 123
|
#define F_DATADIST 123
|
||||||
#define F_DISTSTAM 124
|
#define F_DISTSTAM 124
|
||||||
#define F_NRIGADIST 125
|
#define F_NRIGADIST 125
|
||||||
#define F_DATARIBA 126
|
#define F_DATARIBA 126
|
||||||
#define F_DISRIBAEST 127
|
#define F_DISRIBAEST 127
|
||||||
#define F_EFFCONT 128
|
#define F_EFFCONT 128
|
||||||
#define F_EFFCOMP 129
|
#define F_EFFCOMP 129
|
||||||
#define F_SHEET_EFF 130
|
#define F_SHEET_EFF 130
|
||||||
// Identificatori campi per lo spreadsheet "Obbligati principali"
|
// campi maschera ef0100b.uml
|
||||||
#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
|
||||||
|
// campi maschera ef0100c.uml
|
||||||
// Identificatori campi per lo spreadsheet "Righe Effetto"
|
#define F_IMPFATT 101
|
||||||
#define F_IMPFATT 101
|
#define F_IMPEFF 102
|
||||||
#define F_IMPEFF 102
|
#define F_IMPFATTVAL 103
|
||||||
#define F_IMPFATTVAL 103
|
#define F_IMPEFFVAL 104
|
||||||
#define F_IMPEFFVAL 104
|
#define F_ANNO 105
|
||||||
#define F_ANNO 105
|
#define F_NUMPART 106
|
||||||
#define F_NUMPART 106
|
#define F_NUMRIGA 107
|
||||||
#define F_NUMRIGA 107
|
#define F_NUMRATA 108
|
||||||
#define F_NUMRATA 108
|
#define F_NUMFATT 109
|
||||||
#define F_NUMFATT 109
|
#define F_DATAFATT 110
|
||||||
#define F_DATAFATT 110
|
|
||||||
|
|
||||||
#endif // __EF0100_H
|
#endif // __EF0100_H
|
||||||
|
@ -2,11 +2,13 @@
|
|||||||
#include "reffetti.h"
|
#include "reffetti.h"
|
||||||
#include "cession.h"
|
#include "cession.h"
|
||||||
#include "ef0101.h"
|
#include "ef0101.h"
|
||||||
|
|
||||||
// costruttore di default
|
// costruttore di default
|
||||||
TEffetto::TEffetto()
|
TEffetto::TEffetto()
|
||||||
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// costuisce l'effetto con il record passato
|
// costuisce l'effetto con il record passato
|
||||||
TEffetto::TEffetto(TRectype& rec)
|
TEffetto::TEffetto(TRectype& rec)
|
||||||
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
: TRectype(LF_EFFETTI), _righe(LF_REFFETTI, "NRIGATR"), _cess(LF_CESS, "NRIGA")
|
||||||
@ -14,12 +16,14 @@ TEffetto::TEffetto(TRectype& rec)
|
|||||||
TLocalisamfile f(LF_EFFETTI);
|
TLocalisamfile f(LF_EFFETTI);
|
||||||
read(f,rec);
|
read(f,rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
//setta i campi per la prima chiave (nprogtr) del file
|
//setta i campi per la prima chiave (nprogtr) del file
|
||||||
void TEffetto::put_key(TRectype& rec, long numeff) const
|
void TEffetto::put_key(TRectype& rec, long numeff) const
|
||||||
{
|
{
|
||||||
CHECKD(numeff >= 0, "Numero effetto non valido ", numeff);
|
CHECKD(numeff >= 0, "Numero effetto non valido ", numeff);
|
||||||
rec.put("NPROGTR",numeff);
|
rec.put("NPROGTR",numeff);
|
||||||
}
|
}
|
||||||
|
|
||||||
//setta i campi per la quarta chiave (tipodist+ndist+nrigadist) del file
|
//setta i campi per la quarta chiave (tipodist+ndist+nrigadist) del file
|
||||||
void TEffetto::put_key(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
void TEffetto::put_key(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
||||||
{
|
{
|
||||||
@ -30,6 +34,7 @@ void TEffetto::put_key(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
|||||||
rec.put("NDIST", ndist);
|
rec.put("NDIST", ndist);
|
||||||
rec.put("NRIGADIST", nrigadist);
|
rec.put("NRIGADIST", nrigadist);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ritorna la prossima chiave utilizzabile (il prossimo numero progressivo)
|
// ritorna la prossima chiave utilizzabile (il prossimo numero progressivo)
|
||||||
long TEffetto::get_next_key(const long codcf) const
|
long TEffetto::get_next_key(const long codcf) const
|
||||||
{
|
{
|
||||||
@ -51,6 +56,7 @@ long TEffetto::get_next_key(const long codcf) const
|
|||||||
n++;
|
n++;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
// rinumera la chiave 1
|
// rinumera la chiave 1
|
||||||
long TEffetto::renum(long numeff)
|
long TEffetto::renum(long numeff)
|
||||||
{
|
{
|
||||||
@ -60,9 +66,9 @@ long TEffetto::renum(long numeff)
|
|||||||
numeff = get_next_key(codcf);
|
numeff = get_next_key(codcf);
|
||||||
}
|
}
|
||||||
char num[7]; sprintf(num, "%ld", numeff);
|
char num[7]; sprintf(num, "%ld", numeff);
|
||||||
renum_key("NPROGTR", num); // aggiorna testata
|
renum_key("NPROGTR", num); // aggiorna testata
|
||||||
_righe.renum_key("NPROGTR", num); // aggiorna righe ok
|
_righe.renum_key("NPROGTR", num); // aggiorna righe ok
|
||||||
_cess.renum_key("NPROGTR", num); // aggiorna cessionari ok
|
_cess.renum_key("NPROGTR", num); // aggiorna cessionari ok
|
||||||
return numeff;
|
return numeff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,15 +80,14 @@ int TEffetto::next(TBaseisamfile& f)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// permette di leggere il record passato nel file passato, comune alla lettura
|
// permette di leggere il record passato nel file passato, comune alla lettura
|
||||||
// per chiave 1 e per chiave 4
|
// per chiave 1 e per chiave 4
|
||||||
int TEffetto::leggi(TLocalisamfile &f, const TRectype& r)
|
int TEffetto::leggi(TLocalisamfile &f, const TRectype& r)
|
||||||
{
|
{
|
||||||
int err = TRectype::read(f);
|
int err = TRectype::read(f);
|
||||||
const long nu = numero();
|
const long nu = numero();
|
||||||
TRectype *k_reff = new TRectype(LF_REFFETTI),
|
TRectype *k_reff = new TRectype(LF_REFFETTI),//necessari per poter andare a leggere i due record array
|
||||||
*k_cess = new TRectype(LF_CESS);
|
*k_cess = new TRectype(LF_CESS); //cessionari e righe effetto
|
||||||
put_key(*k_reff, nu);
|
put_key(*k_reff, nu);
|
||||||
put_key(*k_cess, nu);
|
put_key(*k_cess, nu);
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
@ -106,12 +111,14 @@ int TEffetto::leggi(TLocalisamfile &f, const TRectype& r)
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// legge il record passato, con chiave 1
|
// legge il record passato, con chiave 1
|
||||||
int TEffetto::read(TLocalisamfile& f, const TRectype& rec)
|
int TEffetto::read(TLocalisamfile& f, const TRectype& rec)
|
||||||
{
|
{
|
||||||
head() = rec;
|
head() = rec;
|
||||||
return leggi(f, rec);
|
return leggi(f, rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
// legge l'effetto usando la chiave 4
|
// legge l'effetto usando la chiave 4
|
||||||
int TEffetto::read(TLocalisamfile& f, char tipodist, long ndist, long nrigadist)
|
int TEffetto::read(TLocalisamfile& f, char tipodist, long ndist, long nrigadist)
|
||||||
{
|
{
|
||||||
@ -120,11 +127,10 @@ int TEffetto::read(TLocalisamfile& f, char tipodist, long ndist, long nrigadist)
|
|||||||
put_key(rec, tipodist, ndist, nrigadist);
|
put_key(rec, tipodist, ndist, nrigadist);
|
||||||
head() = rec;
|
head() = rec;
|
||||||
int err = leggi(f, rec);
|
int err = leggi(f, rec);
|
||||||
/*if (err == _iskeynotfound)
|
|
||||||
err = f.next();*/
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
// scrive l'effetto, sempre usando la chiave 1
|
|
||||||
|
// scrive l'effetto, usando la chiave 1
|
||||||
int TEffetto::write(TLocalisamfile& f, bool force)
|
int TEffetto::write(TLocalisamfile& f, bool force)
|
||||||
{
|
{
|
||||||
const bool nuovo = numero() <= 0; // E' nuovo!
|
const bool nuovo = numero() <= 0; // E' nuovo!
|
||||||
@ -167,6 +173,7 @@ int TEffetto::write(TLocalisamfile& f, bool force)
|
|||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// rimuove l'effetto
|
// rimuove l'effetto
|
||||||
int TEffetto::remove(TLocalisamfile& f)const
|
int TEffetto::remove(TLocalisamfile& f)const
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef __RELATION_H
|
#ifndef __RELATION_H
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class TEffetto:public TRectype
|
class TEffetto:public TRectype
|
||||||
{
|
{
|
||||||
TRecord_array _righe,// righe dell'effetto
|
TRecord_array _righe,// righe dell'effetto
|
||||||
|
@ -22,17 +22,13 @@ protected:
|
|||||||
virtual void init_query_mode(TMask&);
|
virtual void init_query_mode(TMask&);
|
||||||
virtual void init_insert_mode(TMask&);
|
virtual void init_insert_mode(TMask&);
|
||||||
virtual void init_modify_mode(TMask&);
|
virtual void init_modify_mode(TMask&);
|
||||||
|
|
||||||
virtual const char* get_next_key();
|
virtual const char* get_next_key();
|
||||||
|
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
virtual bool remove();
|
virtual bool remove();
|
||||||
|
|
||||||
virtual TMask* get_mask(int mode) {return _msk;}
|
virtual 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 codval_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);
|
||||||
@ -43,25 +39,19 @@ protected:
|
|||||||
static bool from_data_handler(TMask_field& f, KEY k);
|
static bool from_data_handler(TMask_field& f, KEY k);
|
||||||
static bool to_data_handler(TMask_field& f, KEY k);
|
static bool to_data_handler(TMask_field& f, KEY k);
|
||||||
static bool ordina_handler(TMask_field& f, KEY k);
|
static bool ordina_handler(TMask_field& f, KEY k);
|
||||||
|
|
||||||
static void calcola_totale();
|
static void calcola_totale();
|
||||||
static void calcola();
|
static void calcola();
|
||||||
static void aggiungi();
|
static void aggiungi();
|
||||||
static void carica_riba();
|
static void carica_riba();
|
||||||
static void ord_data();
|
static void ord_data();
|
||||||
static void ord_fatt();
|
static void ord_fatt();
|
||||||
|
|
||||||
TSheet_field& righe_sheet() const;
|
TSheet_field& righe_sheet() const;
|
||||||
TSheet_field& righe_sel_sheet() const;
|
TSheet_field& righe_sel_sheet() const;
|
||||||
|
|
||||||
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();
|
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;}
|
||||||
@ -86,10 +76,8 @@ void TVariazione_distinte::init_insert_mode(TMask&)
|
|||||||
{
|
{
|
||||||
_msk->reset(F_TOTIMP);
|
_msk->reset(F_TOTIMP);
|
||||||
_msk->reset(F_TOTIMPVAL);
|
_msk->reset(F_TOTIMPVAL);
|
||||||
|
|
||||||
_msk->enable(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);
|
||||||
}
|
}
|
||||||
@ -109,13 +97,11 @@ const char* TVariazione_distinte::get_next_key()
|
|||||||
effetti.put("NDIST",ndist);
|
effetti.put("NDIST",ndist);
|
||||||
effetti.setkey(4);
|
effetti.setkey(4);
|
||||||
int err = effetti.read(_isgteq);
|
int err = effetti.read(_isgteq);
|
||||||
|
|
||||||
if ( (err == _iskeynotfound) || (err == _iseof) ) //se non esiste alcuna distinta:
|
if ( (err == _iskeynotfound) || (err == _iseof) ) //se non esiste alcuna distinta:
|
||||||
{ // il numero sarà 1
|
{ // il numero sarà 1
|
||||||
err == NOERR;
|
err == NOERR;
|
||||||
return format("%d|%ld", F_NUMBER, ndist);
|
return format("%d|%ld", F_NUMBER, ndist);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (err == NOERR) //se esitono già delle distinte:
|
while (err == NOERR) //se esitono già delle distinte:
|
||||||
{ // le leggo tutte e ne prendo il
|
{ // le leggo tutte e ne prendo il
|
||||||
effetti.setkey(4); // numero, al verificarsi della fine file
|
effetti.setkey(4); // numero, al verificarsi della fine file
|
||||||
@ -147,7 +133,6 @@ bool TVariazione_distinte::cerca(long num)
|
|||||||
bool trovato = FALSE;
|
bool trovato = FALSE;
|
||||||
int items = _distinta->items();
|
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 = 0; i < items; i++)//ciclo sugli elementi dell'array
|
||||||
{ //se l'array è vuoto non trova nulla ed esce subito
|
{ //se l'array è vuoto non trova nulla ed esce subito
|
||||||
TEffetto& eff = (TEffetto&)righedist[i];
|
TEffetto& eff = (TEffetto&)righedist[i];
|
||||||
@ -155,18 +140,17 @@ bool TVariazione_distinte::cerca(long num)
|
|||||||
if (num_eff == num)
|
if (num_eff == num)
|
||||||
{
|
{
|
||||||
trovato = TRUE;
|
trovato = TRUE;
|
||||||
break;
|
break;// esco quando ho già trovato l'effetto che cercavo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return trovato;
|
return trovato;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Metodo che permette di scivere sull'array gli effetti presenti nello sheet
|
//Metodo che permette di scivere sull'array (in memoria) gli effetti presenti nello sheet
|
||||||
void TVariazione_distinte::aggiorna()
|
void TVariazione_distinte::aggiorna()
|
||||||
{
|
{
|
||||||
TSheet_field& shrighe = righe_sheet();
|
TSheet_field& shrighe = righe_sheet();
|
||||||
int items = shrighe.items();
|
int items = shrighe.items();
|
||||||
|
|
||||||
for (int i = 0; i < items; i++)
|
for (int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
TToken_string& row = shrighe.row(i);
|
TToken_string& row = shrighe.row(i);
|
||||||
@ -196,9 +180,7 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m)
|
|||||||
TDate datadist = (TDate)m.get(F_DATA);
|
TDate datadist = (TDate)m.get(F_DATA);
|
||||||
long codabi = m.get_long(F_CODABIP);
|
long codabi = m.get_long(F_CODABIP);
|
||||||
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;
|
TToken_string* datidist= new TToken_string;
|
||||||
datidist->cut(0);
|
datidist->cut(0);
|
||||||
datidist->add(tipodist);
|
datidist->add(tipodist);
|
||||||
@ -209,12 +191,10 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m)
|
|||||||
return datidist;
|
return datidist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int TVariazione_distinte::read(TMask& m)
|
int TVariazione_distinte::read(TMask& m)
|
||||||
{
|
{
|
||||||
m.autoload(*_rel);
|
m.autoload(*_rel);
|
||||||
int err = _rel->status();
|
int err = _rel->status();
|
||||||
|
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
||||||
@ -226,7 +206,6 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
shrighe.reset();
|
shrighe.reset();
|
||||||
int items = _distinta->items();
|
int items = _distinta->items();
|
||||||
TArray& righedist = _distinta->righe();
|
TArray& righedist = _distinta->righe();
|
||||||
|
|
||||||
for (int i = 0; i < items; i++) // carico tutti gli effetti della distinta nello sheet
|
for (int i = 0; i < items; i++) // carico tutti gli effetti della distinta nello sheet
|
||||||
{
|
{
|
||||||
TEffetto& eff = (TEffetto&)righedist[i];
|
TEffetto& eff = (TEffetto&)righedist[i];
|
||||||
@ -234,13 +213,11 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
riga.add(' ');
|
riga.add(' ');
|
||||||
riga.add(eff.get(EFF_NPROGTR));
|
riga.add(eff.get(EFF_NPROGTR));
|
||||||
riga.add(eff.get(EFF_DATASCAD));
|
riga.add(eff.get(EFF_DATASCAD));
|
||||||
|
|
||||||
long codcf = eff.get_long(EFF_CODCF); //prendo la ragione sociale del cliente
|
long codcf = eff.get_long(EFF_CODCF); //prendo la ragione sociale del cliente
|
||||||
_clifo->zero(); //conoscendone il codice
|
_clifo->zero(); //conoscendone il codice
|
||||||
_clifo->put("TIPOCF", 'C');
|
_clifo->put("TIPOCF", 'C');
|
||||||
_clifo->put("CODCF", codcf);
|
_clifo->put("CODCF", codcf);
|
||||||
if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC"));
|
if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC"));
|
||||||
|
|
||||||
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
||||||
{ //riferimenti al documento ed al numero di rata
|
{ //riferimenti al documento ed al numero di rata
|
||||||
const TRectype& rec_r = eff.row_r(1);
|
const TRectype& rec_r = eff.row_r(1);
|
||||||
@ -254,7 +231,6 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
riga.add(("Varie"));
|
riga.add(("Varie"));
|
||||||
riga.add(("Varie"));
|
riga.add(("Varie"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta
|
TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta
|
||||||
codval = eff.get(EFF_CODVAL);
|
codval = eff.get(EFF_CODVAL);
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
@ -266,10 +242,8 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
m.set(F_CODVAL, codval);
|
m.set(F_CODVAL, codval);
|
||||||
}
|
}
|
||||||
riga.add(codval);
|
riga.add(codval);
|
||||||
|
|
||||||
riga.add(eff.get(EFF_IMPORTO));
|
riga.add(eff.get(EFF_IMPORTO));
|
||||||
riga.add(eff.get(EFF_IMPORTOVAL));
|
riga.add(eff.get(EFF_IMPORTOVAL));
|
||||||
|
|
||||||
shrighe.row(i) = riga;
|
shrighe.row(i) = riga;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -279,7 +253,7 @@ int TVariazione_distinte::read(TMask& m)
|
|||||||
|
|
||||||
//Si prendono tutte le righe dello sheet e si controlla il primo campo se e' a true si distrugge
|
//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.
|
// la riga e si aggiorna il file.
|
||||||
// GLI EFFETTI PRESENTI NELLO SHEET DEVONO GIA ESSERE STATI REGISTRATI.
|
// GLI EFFETTI PRESENTI NELLO SHEET DEVONO GIA ESSERE STATI REGISTRATI NEL FILE.
|
||||||
void TVariazione_distinte::elimina()
|
void TVariazione_distinte::elimina()
|
||||||
{
|
{
|
||||||
TEffetto eff;
|
TEffetto eff;
|
||||||
@ -290,24 +264,19 @@ void TVariazione_distinte::elimina()
|
|||||||
TSheet_field& sf = (TSheet_field&)_msk->field(F_SHEET_RIBA);
|
TSheet_field& sf = (TSheet_field&)_msk->field(F_SHEET_RIBA);
|
||||||
bool condition = FALSE, deleted = FALSE;
|
bool condition = FALSE, deleted = FALSE;
|
||||||
TArray& righedist = distinta->righe();
|
TArray& righedist = distinta->righe();
|
||||||
|
|
||||||
for (int i = 0, k = i+1; i < sf.items(); i++, k++)//ciclo sugli elementi dello sheet
|
for (int i = 0, k = i+1; i < sf.items(); i++, k++)//ciclo sugli elementi dello sheet
|
||||||
{
|
{
|
||||||
if (deleted) i--; //per posizionarsi correttamente sulla prima riga dello sheet
|
if (deleted) i--; //per posizionarsi correttamente sulla prima riga dello sheet
|
||||||
|
|
||||||
if (sf.items() == 1)
|
if (sf.items() == 1)
|
||||||
{
|
{
|
||||||
error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
|
error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TToken_string& row = sf.row(i);
|
TToken_string& row = sf.row(i);
|
||||||
condition = *row.get(0) == 'X';
|
condition = *row.get(0) == 'X';
|
||||||
|
|
||||||
if (condition)
|
if (condition)
|
||||||
{
|
{
|
||||||
long num = row.get_long(1);
|
long num = row.get_long(1);
|
||||||
|
|
||||||
for (int j = 0; j < distinta->items(); j++)//ciclo sugli elementi dell'array
|
for (int j = 0; j < distinta->items(); j++)//ciclo sugli elementi dell'array
|
||||||
{
|
{
|
||||||
TEffetto& eff = (TEffetto&)righedist[j];
|
TEffetto& eff = (TEffetto&)righedist[j];
|
||||||
@ -318,7 +287,6 @@ void TVariazione_distinte::elimina()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf.destroy(i); deleted = TRUE;
|
sf.destroy(i); deleted = TRUE;
|
||||||
eff.read(file, tipodist, ndist, k);
|
eff.read(file, tipodist, ndist, k);
|
||||||
eff.zero("TIPODIST");
|
eff.zero("TIPODIST");
|
||||||
@ -337,23 +305,18 @@ int TVariazione_distinte::rewrite(const TMask& m)
|
|||||||
{
|
{
|
||||||
TSheet_field& sf = righe_sheet();
|
TSheet_field& sf = righe_sheet();
|
||||||
bool condition = FALSE;
|
bool condition = FALSE;
|
||||||
|
|
||||||
for (int i = 0; i < sf.items(); i++)
|
for (int i = 0; i < sf.items(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& row = sf.row(i);
|
TToken_string& row = sf.row(i);
|
||||||
if (condition = *row.get(0) == 'X') break;
|
if (condition = *row.get(0) == 'X') break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (condition)
|
if (condition)
|
||||||
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
||||||
elimina(); //elimino gli effetti nello sheet che sono selezionati con la "X"
|
elimina(); //elimino gli effetti nello sheet che sono selezionati con la "X"
|
||||||
|
|
||||||
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
||||||
char tipodist = m.get(F_TIPODIST)[0];
|
char tipodist = m.get(F_TIPODIST)[0];
|
||||||
long ndist = m.get_long(F_NUMBER);
|
long ndist = m.get_long(F_NUMBER);
|
||||||
|
|
||||||
aggiorna();
|
aggiorna();
|
||||||
|
|
||||||
err = _distinta->rewrite(common_f(m));
|
err = _distinta->rewrite(common_f(m));
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{ //riposiziono la relazione
|
{ //riposiziono la relazione
|
||||||
@ -372,11 +335,8 @@ int TVariazione_distinte::write(const TMask& m)
|
|||||||
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
||||||
char tipodist = m.get(F_TIPODIST)[0];
|
char tipodist = m.get(F_TIPODIST)[0];
|
||||||
long ndist = m.get_long(F_NUMBER);
|
long ndist = m.get_long(F_NUMBER);
|
||||||
|
|
||||||
aggiorna();
|
aggiorna();
|
||||||
|
|
||||||
err = _distinta->write(TRUE, common_f(m));
|
err = _distinta->write(TRUE, common_f(m));
|
||||||
|
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
{ //riposiziono la relazione
|
{ //riposiziono la relazione
|
||||||
_rel->lfile().setkey(4);
|
_rel->lfile().setkey(4);
|
||||||
@ -390,13 +350,12 @@ int TVariazione_distinte::write(const TMask& m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Metodo che permette di eliminare una distinta, l'eliminazione consiste nell'andare a togliere
|
//Metodo che permette di eliminare una distinta, l'eliminazione consiste nell'andare a togliere
|
||||||
// dagli effetti presenti i dati ad essa relativi.
|
// dagli effetti i dati ad essa relativi.
|
||||||
bool TVariazione_distinte::remove()
|
bool TVariazione_distinte::remove()
|
||||||
{
|
{
|
||||||
TMask* m = app()._msk;
|
TMask* m = app()._msk;
|
||||||
char tipodist = m->get(F_TIPODIST)[0];
|
char tipodist = m->get(F_TIPODIST)[0];
|
||||||
long ndist = m->get_long(F_NUMBER);
|
long ndist = m->get_long(F_NUMBER);
|
||||||
|
|
||||||
int err = _distinta->remove(tipodist, ndist) == NOERR;
|
int err = _distinta->remove(tipodist, ndist) == NOERR;
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -410,9 +369,7 @@ bool TVariazione_distinte::user_create()
|
|||||||
_cession = new TLocalisamfile(LF_CESS);
|
_cession = new TLocalisamfile(LF_CESS);
|
||||||
_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_CODVAL, codval_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);
|
||||||
@ -421,10 +378,8 @@ bool TVariazione_distinte::user_create()
|
|||||||
_m2->set_handler(F_DADATA, from_data_handler);
|
_m2->set_handler(F_DADATA, from_data_handler);
|
||||||
_m2->set_handler(F_ADATA, to_data_handler);
|
_m2->set_handler(F_ADATA, to_data_handler);
|
||||||
_m2->set_handler(F_TIPORD, ordina_handler);
|
_m2->set_handler(F_TIPORD, ordina_handler);
|
||||||
|
|
||||||
righe_sheet().set_notify(impdist_notify);
|
righe_sheet().set_notify(impdist_notify);
|
||||||
righe_sel_sheet().set_notify(imp_notify);
|
righe_sel_sheet().set_notify(imp_notify);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,7 +392,6 @@ bool TVariazione_distinte::user_destroy()
|
|||||||
delete _cession;
|
delete _cession;
|
||||||
delete _clifo;
|
delete _clifo;
|
||||||
delete _distinta;
|
delete _distinta;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,21 +412,18 @@ void TVariazione_distinte::carica_riba()
|
|||||||
TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET);
|
TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET);
|
||||||
sf.reset();
|
sf.reset();
|
||||||
int err, i = 0;
|
int err, i = 0;
|
||||||
|
|
||||||
err = eff.read(f, tipodist, ndist, nrigadist);
|
err = eff.read(f, tipodist, ndist, nrigadist);
|
||||||
while ( (err == NOERR) && (tipodist == 0) )
|
while ( (err == NOERR) && (tipodist == 0) )
|
||||||
{ //carico tutti gli effetti che soddisfano alla condizio nello sheet
|
{ //carico tutti gli effetti che soddisfano alla condizione nello sheet
|
||||||
riga.cut(0);
|
riga.cut(0);
|
||||||
riga.add(' ');
|
riga.add(' ');
|
||||||
riga.add(eff.get(EFF_NPROGTR));
|
riga.add(eff.get(EFF_NPROGTR));
|
||||||
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("TIPOCF", 'C');
|
clifo->put("TIPOCF", 'C');
|
||||||
clifo->put("CODCF", codcf);
|
clifo->put("CODCF", codcf);
|
||||||
if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC"));
|
if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC"));
|
||||||
|
|
||||||
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
||||||
{ //riferimenti al documento ed al numero di rata
|
{ //riferimenti al documento ed al numero di rata
|
||||||
const TRectype& rec_r = eff.row_r(1);
|
const TRectype& rec_r = eff.row_r(1);
|
||||||
@ -486,13 +437,10 @@ void TVariazione_distinte::carica_riba()
|
|||||||
riga.add(("Varie"));
|
riga.add(("Varie"));
|
||||||
riga.add(("Varie"));
|
riga.add(("Varie"));
|
||||||
}
|
}
|
||||||
|
|
||||||
riga.add(eff.get(EFF_CODVAL));
|
riga.add(eff.get(EFF_CODVAL));
|
||||||
riga.add(eff.get(EFF_IMPORTO));
|
riga.add(eff.get(EFF_IMPORTO));
|
||||||
riga.add(eff.get(EFF_IMPORTOVAL));
|
riga.add(eff.get(EFF_IMPORTOVAL));
|
||||||
|
|
||||||
sf.row(i) = riga;
|
sf.row(i) = riga;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
f.setkey(4);
|
f.setkey(4);
|
||||||
err = eff.next(f);
|
err = eff.next(f);
|
||||||
@ -506,7 +454,6 @@ bool TVariazione_distinte::codval_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
TMask &m = f.mask();
|
TMask &m = f.mask();
|
||||||
TString val(f.get());
|
TString val(f.get());
|
||||||
|
|
||||||
if (f.to_check(k, TRUE))
|
if (f.to_check(k, TRUE))
|
||||||
{
|
{
|
||||||
const bool condition = (val == "LIT" || val.empty());
|
const bool condition = (val == "LIT" || val.empty());
|
||||||
@ -523,7 +470,6 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
TSheet_field& sf_riba = (TSheet_field&)m.field(F_SHEET_RIBA);
|
TSheet_field& sf_riba = (TSheet_field&)m.field(F_SHEET_RIBA);
|
||||||
|
|
||||||
if (f.to_check(k, TRUE))
|
if (f.to_check(k, TRUE))
|
||||||
{
|
{
|
||||||
const int mode = m.mode();
|
const int mode = m.mode();
|
||||||
@ -533,7 +479,6 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
|||||||
long imp_pres = m.get_long(F_TOTIMP);
|
long imp_pres = m.get_long(F_TOTIMP);
|
||||||
long imp = m.get_long(F_IMP);
|
long imp = m.get_long(F_IMP);
|
||||||
long impdist = imp - imp_pres;
|
long impdist = imp - imp_pres;
|
||||||
|
|
||||||
if (impdist > 0)
|
if (impdist > 0)
|
||||||
{
|
{
|
||||||
app().begin_wait();
|
app().begin_wait();
|
||||||
@ -544,7 +489,6 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
|||||||
m2->set(F_TOTIMPDIST, impdist);
|
m2->set(F_TOTIMPDIST, impdist);
|
||||||
m2->run();
|
m2->run();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (impdist < 0)
|
if (impdist < 0)
|
||||||
error_box("Il valore di presentazione non può superare l'importo della distinta");
|
error_box("Il valore di presentazione non può superare l'importo della distinta");
|
||||||
}
|
}
|
||||||
@ -559,7 +503,6 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
|||||||
bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
TMask& m2 = f.mask();
|
TMask& m2 = f.mask();
|
||||||
|
|
||||||
if (f.to_check(k, TRUE))
|
if (f.to_check(k, TRUE))
|
||||||
{
|
{
|
||||||
TMask* m = app()._msk;
|
TMask* m = app()._msk;
|
||||||
@ -567,22 +510,17 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
|||||||
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);
|
long impdist = m->get_long(F_IMP) - m->get_long(F_TOTIMP);
|
||||||
long tot_imp_dist = m2.get_long(F_TOTIMPDIST), impsel = 0;
|
long tot_imp_dist = m2.get_long(F_TOTIMPDIST), impsel = 0;
|
||||||
|
|
||||||
if (tot_imp_dist != 0 && impdist != 0)
|
if (tot_imp_dist != 0 && impdist != 0)
|
||||||
{
|
{
|
||||||
TString val = m->get(F_CODVAL);
|
TString val = m->get(F_CODVAL);
|
||||||
int items = sf.items();
|
int items = sf.items();
|
||||||
|
|
||||||
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);
|
||||||
TString codval = row.get(7);
|
TString codval = row.get(7);
|
||||||
|
|
||||||
if (codval == " " || codval == "LIT")//se la valuta non appare o è lire
|
if (codval == " " || codval == "LIT")//se la valuta non appare o è lire
|
||||||
codval.trim(); //faccio in modo che vengano presi gli effetti con valuta inesistente
|
codval.trim(); //faccio in modo che vengano presi gli effetti con valuta inesistente
|
||||||
|
|
||||||
long imp = row.get_long(8);
|
long imp = row.get_long(8);
|
||||||
|
|
||||||
if ((imp <= tot_imp_dist) && ((impsel+imp) <= tot_imp_dist))
|
if ((imp <= tot_imp_dist) && ((impsel+imp) <= tot_imp_dist))
|
||||||
{
|
{
|
||||||
if ((sf_riba.items() == 0) && (val.empty()|| val == "LIT"))//se non è stata specificata una valuta si prende quella del
|
if ((sf_riba.items() == 0) && (val.empty()|| val == "LIT"))//se non è stata specificata una valuta si prende quella del
|
||||||
@ -590,14 +528,12 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
|||||||
m->set(F_CODVAL, codval);
|
m->set(F_CODVAL, codval);
|
||||||
val = m->get(F_CODVAL);
|
val = m->get(F_CODVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (codval == val)
|
if (codval == val)
|
||||||
{
|
{
|
||||||
row.add('X',0);//seleziono l'effetto poichè soddisfa alle condizione richieste
|
row.add('X',0);//seleziono l'effetto poichè soddisfa alle condizione richieste
|
||||||
impsel += imp;
|
impsel += imp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (impsel <= tot_imp_dist) continue;
|
if (impsel <= tot_imp_dist) continue;
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
@ -608,14 +544,12 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Handler per gestire la pressione del bottone conferma della maschera per l'aggiunta delle
|
//Handler per gestire la pressione del bottone conferma della maschera per l'aggiunta delle
|
||||||
// riba (ef0300c)
|
// 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;
|
TMask* msk = app()._msk;
|
||||||
TSheet_field& sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
|
TSheet_field& sf_riba = (TSheet_field&)msk->field(F_SHEET_RIBA);
|
||||||
|
|
||||||
if (k==K_ENTER)
|
if (k==K_ENTER)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
@ -623,12 +557,10 @@ bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
|
|||||||
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;
|
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';
|
condition = *row.get(0)== 'X';
|
||||||
|
|
||||||
if (condition)
|
if (condition)
|
||||||
{
|
{
|
||||||
row[0] = ' ';
|
row[0] = ' ';
|
||||||
@ -661,7 +593,6 @@ bool TVariazione_distinte::from_data_handler(TMask_field& f, KEY k)
|
|||||||
bool deleted = FALSE;
|
bool deleted = FALSE;
|
||||||
TDate data = m.get_date(F_DADATA);
|
TDate data = m.get_date(F_DADATA);
|
||||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||||
|
|
||||||
for(int i = 0; i < sf.items(); i++)
|
for(int i = 0; i < sf.items(); i++)
|
||||||
{
|
{
|
||||||
if (deleted) i--;
|
if (deleted) i--;
|
||||||
@ -690,7 +621,6 @@ bool TVariazione_distinte::to_data_handler(TMask_field& f, KEY k)
|
|||||||
bool deleted = FALSE;
|
bool deleted = FALSE;
|
||||||
TDate data = m.get_date(F_ADATA);
|
TDate data = m.get_date(F_ADATA);
|
||||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||||
|
|
||||||
for(int i = 0; i < sf.items(); i++)
|
for(int i = 0; i < sf.items(); i++)
|
||||||
{
|
{
|
||||||
if (deleted) i--;
|
if (deleted) i--;
|
||||||
|
@ -3,16 +3,19 @@
|
|||||||
#include "cession.h"
|
#include "cession.h"
|
||||||
#include "ef0301.h"
|
#include "ef0301.h"
|
||||||
|
|
||||||
|
// costruttore di default
|
||||||
TDistinta::TDistinta(const TRectype& rec)
|
TDistinta::TDistinta(const TRectype& rec)
|
||||||
{
|
{
|
||||||
read(rec);
|
read(rec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// costruisce la distinta del tipo e numero passati
|
||||||
TDistinta::TDistinta(const char tipo, const long numero)
|
TDistinta::TDistinta(const char tipo, const long numero)
|
||||||
{
|
{
|
||||||
read(tipo,numero);
|
read(tipo,numero);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// permette di leggere la distinta del tipo e numero passati
|
||||||
int TDistinta::read(const char tipo, const long numero)
|
int TDistinta::read(const char tipo, const long numero)
|
||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
@ -21,27 +24,29 @@ int TDistinta::read(const char tipo, const long numero)
|
|||||||
for (int i=0; err == NOERR ; i++)
|
for (int i=0; err == NOERR ; i++)
|
||||||
{
|
{
|
||||||
TEffetto* effetto = new TEffetto;
|
TEffetto* effetto = new TEffetto;
|
||||||
err = effetto->read(f, tipo, numero, i+1);
|
err = effetto->read(f, tipo, numero, i+1);//legge un effetto per chiave 4
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
_righe_dist.add(effetto);
|
_righe_dist.add(effetto);
|
||||||
}
|
}
|
||||||
if ((_righe_dist.items()>0)||(err == _iseof) )
|
if ((_righe_dist.items()>0)||(err == _iseof) )//se ho letto degli effetti della distinta ed ho
|
||||||
err = NOERR;
|
err = NOERR; //trovato la fine file elimino l'errore
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// permette di leggere il record passato
|
||||||
int TDistinta::read(const TRectype& rec)
|
int TDistinta::read(const TRectype& rec)
|
||||||
{
|
{
|
||||||
CHECK(rec.num() == LF_EFFETTI,"Can't read distinta from a different record type");
|
CHECK(rec.num() == LF_EFFETTI,"Can't read distinta from a different record type");
|
||||||
const char tipo = rec.get_char(EFF_TIPODIST);
|
const char tipo = rec.get_char(EFF_TIPODIST);
|
||||||
const long numero = rec.get_long(EFF_NDIST);
|
const long numero = rec.get_long(EFF_NDIST);
|
||||||
return read(tipo,numero);
|
return read(tipo,numero);//legge la distinta
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// scrive la distinta
|
||||||
int TDistinta::write(bool force, TToken_string* dati_dist)
|
int TDistinta::write(bool force, TToken_string* dati_dist)
|
||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
const int elem = items();
|
const int elem = items(); //quanti effetti sono nella distinta (nell'array in memoria)
|
||||||
TLocalisamfile f(LF_EFFETTI);
|
TLocalisamfile f(LF_EFFETTI);
|
||||||
for (int i=0; i<elem && err==NOERR; i++)
|
for (int i=0; i<elem && err==NOERR; i++)
|
||||||
{
|
{
|
||||||
@ -53,16 +58,16 @@ int TDistinta::write(bool force, TToken_string* dati_dist)
|
|||||||
effetto.put("CODABIP", dati_dist->get_long());
|
effetto.put("CODABIP", dati_dist->get_long());
|
||||||
effetto.put("CODCABP", dati_dist->get_long());
|
effetto.put("CODCABP", dati_dist->get_long());
|
||||||
effetto.put("NRIGADIST", i+1);
|
effetto.put("NRIGADIST", i+1);
|
||||||
|
err = effetto.rewrite(f);//riscrivo l'effetto con i dati della distinta a cui appartiene
|
||||||
err = effetto.rewrite(f);
|
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// rimuove la distinta
|
||||||
int TDistinta::remove(char tipodist, long ndist)
|
int TDistinta::remove(char tipodist, long ndist)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
//elimino dal file
|
//elimino dal file il collegamento tra gli effetti e la distinta
|
||||||
TLocalisamfile file(LF_EFFETTI);
|
TLocalisamfile file(LF_EFFETTI);
|
||||||
for (int i = 0; i < items(); i++)
|
for (int i = 0; i < items(); i++)
|
||||||
{
|
{
|
||||||
@ -76,6 +81,6 @@ int TDistinta::remove(char tipodist, long ndist)
|
|||||||
effetto.zero("CODCABP");
|
effetto.zero("CODCABP");
|
||||||
err = effetto.rewrite(file);
|
err = effetto.rewrite(file);
|
||||||
}
|
}
|
||||||
reset();
|
reset();//elimino gli effetti dalla memoria
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
229
ef/ef0400.cpp
Executable file
229
ef/ef0400.cpp
Executable file
@ -0,0 +1,229 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <urldefid.h>//per definizione BAR_ITEM
|
||||||
|
#include <msksheet.h>
|
||||||
|
#include <sheet.h>
|
||||||
|
#include <utility.h>
|
||||||
|
#include <lffiles.h>
|
||||||
|
#include <effetti.h>
|
||||||
|
#include <reffetti.h>
|
||||||
|
#include <cession.h>
|
||||||
|
#include "ef0.h"
|
||||||
|
#include "ef0101.h"
|
||||||
|
#include "ef0400.h"
|
||||||
|
|
||||||
|
//Classe per l'eliminazione di effetti di effetti con selezione per gruppi
|
||||||
|
class TEliminazione_effetti: public TApplication
|
||||||
|
{
|
||||||
|
TMask *_msk;
|
||||||
|
TRelation *_rel;
|
||||||
|
TLocalisamfile *_reff, *_cession;
|
||||||
|
TRectype *_from, *_to;
|
||||||
|
virtual bool create() ;
|
||||||
|
virtual bool destroy() ;
|
||||||
|
virtual bool menu(MENU_TAG);
|
||||||
|
protected:
|
||||||
|
static bool from_numero_handler(TMask_field& f, KEY k);
|
||||||
|
static bool to_numero_handler(TMask_field& f, KEY k);
|
||||||
|
static bool from_data_handler(TMask_field& f, KEY k);
|
||||||
|
static bool to_data_handler(TMask_field& f, KEY k);
|
||||||
|
static bool conferma_handler(TMask_field& f, KEY k);
|
||||||
|
static bool annulla_handler(TMask_field& f, KEY k);
|
||||||
|
static void elimina();
|
||||||
|
public:
|
||||||
|
TEliminazione_effetti() {};
|
||||||
|
virtual ~TEliminazione_effetti() {};
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TEliminazione_effetti& app()
|
||||||
|
{
|
||||||
|
return (TEliminazione_effetti&)main_app();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEliminazione_effetti::create()
|
||||||
|
{
|
||||||
|
_msk = new TMask("ef0400a");
|
||||||
|
_rel = new TRelation(LF_EFFETTI);
|
||||||
|
_reff = new TLocalisamfile(LF_REFFETTI);
|
||||||
|
_cession = new TLocalisamfile(LF_CESS);
|
||||||
|
_rel->first();
|
||||||
|
_from = new TRectype(_rel->lfile().curr());
|
||||||
|
_rel->last();
|
||||||
|
_to = new TRectype(_rel->lfile().curr());
|
||||||
|
_msk->set_handler(F_DA_RIBA, from_numero_handler);
|
||||||
|
_msk->set_handler(F_A_RIBA, to_numero_handler);
|
||||||
|
_msk->set_handler(F_DA_DATA, from_data_handler);
|
||||||
|
_msk->set_handler(F_A_DATA, to_data_handler);
|
||||||
|
_msk->set_handler(DLG_OK, conferma_handler);
|
||||||
|
_msk->set_handler(DLG_CANCEL, annulla_handler);
|
||||||
|
dispatch_e_menu(BAR_ITEM(1));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TEliminazione_effetti::destroy()
|
||||||
|
{
|
||||||
|
delete _msk;
|
||||||
|
delete _rel;
|
||||||
|
delete _reff;
|
||||||
|
delete _cession;
|
||||||
|
delete _from;
|
||||||
|
delete _to;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Carica maschera eliminazione effetti
|
||||||
|
bool TEliminazione_effetti::menu(MENU_TAG)
|
||||||
|
{
|
||||||
|
KEY key = K_ENTER;
|
||||||
|
while (key != K_QUIT)//finchè non si chiude la maschera
|
||||||
|
{
|
||||||
|
key = _msk->run();
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per la gestione della prima chiave (from) del cursore per numero
|
||||||
|
bool TEliminazione_effetti::from_numero_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_TAB)
|
||||||
|
{
|
||||||
|
if (!f.get().empty())
|
||||||
|
{
|
||||||
|
TRectype* from = app()._from;
|
||||||
|
long num = m.get_long(F_DA_RIBA);
|
||||||
|
from->put("NPROGTR", num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per la gestione della seconda chiave (to) del cursore per numero
|
||||||
|
bool TEliminazione_effetti::to_numero_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_TAB)
|
||||||
|
{
|
||||||
|
if (!f.get().empty())
|
||||||
|
{
|
||||||
|
TRectype* to = app()._to;
|
||||||
|
long num = m.get_long(F_A_RIBA);
|
||||||
|
to->put("NPROGTR", num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per la gestione della prima chiave (from) del cursore per data
|
||||||
|
bool TEliminazione_effetti::from_data_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_TAB)
|
||||||
|
{
|
||||||
|
if (!f.get().empty())
|
||||||
|
{
|
||||||
|
TRectype* from = app()._from;
|
||||||
|
TDate data = m.get(F_DA_DATA);
|
||||||
|
long num = m.get_long(F_DA_RIBA);
|
||||||
|
from->put("NPROGTR", num);
|
||||||
|
from->put("DATASCAD", data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per la gestione della seconda chiave (to) del cursore per numero
|
||||||
|
bool TEliminazione_effetti::to_data_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_TAB)
|
||||||
|
{
|
||||||
|
if (!f.get().empty())
|
||||||
|
{
|
||||||
|
TRectype* to = app()._to;
|
||||||
|
TDate data = m.get(F_A_DATA);
|
||||||
|
long num = m.get_long(F_A_RIBA);
|
||||||
|
to->put("NPROGTR", num);
|
||||||
|
to->put("DATASCAD", data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Si effettua l'istanziazione del cursore e si eliminano gli effetti che vi appartengono
|
||||||
|
void TEliminazione_effetti::elimina()
|
||||||
|
{
|
||||||
|
const TRectype *from = app()._from;
|
||||||
|
const TRectype *to = app()._to;
|
||||||
|
TMask *m = app()._msk;
|
||||||
|
TRelation *rel = app()._rel;
|
||||||
|
const char* filter;
|
||||||
|
int key;
|
||||||
|
char op1 = m->get(F_TIPOSEL)[0];
|
||||||
|
char op2 = m->get(F_TIPOCANC)[0];
|
||||||
|
|
||||||
|
switch (op1) //scelgo la chiave per il cursore
|
||||||
|
{
|
||||||
|
case 'N': //selezione effetti per numero
|
||||||
|
key = 1;
|
||||||
|
break;
|
||||||
|
case 'D': //selezione effetti per data
|
||||||
|
key = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (op2) //scelgo il filtro per il cursore
|
||||||
|
{
|
||||||
|
case 'S': //cancello effetti stampati
|
||||||
|
filter = "EFFSTAMP=\"X\"";
|
||||||
|
break;
|
||||||
|
case 'C': //cancello effetti contabilizzati
|
||||||
|
filter = "EFFCONT=\"X\"";
|
||||||
|
break;
|
||||||
|
default : //cancello tutti gli effetti
|
||||||
|
filter = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCursor cur(rel,filter,key,from,to);
|
||||||
|
TLocalisamfile& delfile = cur.file();
|
||||||
|
|
||||||
|
long n = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
|
for (cur=0; cur.pos() < n; ++cur)
|
||||||
|
{
|
||||||
|
TEffetto eff(delfile.curr());
|
||||||
|
eff.remove(delfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per gestire la conferma della cancellazione degli effetti
|
||||||
|
bool TEliminazione_effetti::conferma_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_SPACE)
|
||||||
|
{
|
||||||
|
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
||||||
|
elimina();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Handler per gestire la conferma dell'annullamento dei dati inseriti nella maschera
|
||||||
|
bool TEliminazione_effetti::annulla_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask &m = f.mask();
|
||||||
|
if (k == K_SPACE)
|
||||||
|
{
|
||||||
|
if (yesno_box("Vuoi veramete annullare i dati inseriti"))
|
||||||
|
m.reset();
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ef0400(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TEliminazione_effetti a ;
|
||||||
|
a.run(argc, argv, "Eliminazione Effetti");
|
||||||
|
return 0;
|
||||||
|
}
|
13
ef/ef0400.h
Executable file
13
ef/ef0400.h
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef __EF0400_H
|
||||||
|
#define __EF0400_H
|
||||||
|
|
||||||
|
// campi maschera ef0400a.msk
|
||||||
|
|
||||||
|
#define F_TIPOSEL 101
|
||||||
|
#define F_TIPOCANC 102
|
||||||
|
#define F_DA_RIBA 103
|
||||||
|
#define F_A_RIBA 104
|
||||||
|
#define F_DA_DATA 105
|
||||||
|
#define F_A_DATA 106
|
||||||
|
|
||||||
|
#endif // __EF0400_H
|
108
ef/ef0400a.uml
Executable file
108
ef/ef0400a.uml
Executable file
@ -0,0 +1,108 @@
|
|||||||
|
#include "ef0400.h"
|
||||||
|
|
||||||
|
PAGE "Eliminazione Effetti" -1 -1 65 14
|
||||||
|
|
||||||
|
LIST F_TIPOSEL 24
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Tipo Selezione "
|
||||||
|
ITEM "N|Numero progressivo"
|
||||||
|
MESSAGE DISABLE,2@
|
||||||
|
MESSAGE ENABLE,1@
|
||||||
|
ITEM "D|Data scadenza"
|
||||||
|
MESSAGE DISABLE,1@
|
||||||
|
MESSAGE ENABLE,2@
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCANC 24
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Tipo Cancellazione "
|
||||||
|
ITEM "T|Tutti"
|
||||||
|
ITEM "S|Quelli stampati"
|
||||||
|
ITEM "C|Quelli contabilizzati"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 55 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Selezione effetti per numero progressivo"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_DA_RIBA 7 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Dalla Riba "
|
||||||
|
GROUP 1
|
||||||
|
FIELD LF_EFFETTI->NPROGTR
|
||||||
|
USE LF_EFFETTI KEY 1
|
||||||
|
INPUT NPROGTR F_DA_RIBA
|
||||||
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
|
OUTPUT F_DA_RIBA NPROGTR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_A_RIBA 7 0
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 6 "Alla Riba "
|
||||||
|
GROUP 1
|
||||||
|
FIELD LF_EFFETTI->NPROGTR
|
||||||
|
USE LF_EFFETTI KEY 1
|
||||||
|
INPUT NPROGTR F_A_RIBA
|
||||||
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
|
OUTPUT F_A_RIBA NPROGTR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 55 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Selezione effetti per data scadenza"
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA F_DA_DATA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Dalla Data "
|
||||||
|
GROUP 2
|
||||||
|
FIELD LF_EFFETTI->DATASCAD
|
||||||
|
USE LF_EFFETTI KEY 3
|
||||||
|
INPUT DATASCAD F_DA_DATA
|
||||||
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
|
OUTPUT F_DA_DATA DATASCAD
|
||||||
|
OUTPUT F_DA_RIBA NPROGTR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA F_A_DATA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 30 10 "Alla Data "
|
||||||
|
GROUP 2
|
||||||
|
FIELD LF_EFFETTI->DATASCAD
|
||||||
|
USE LF_EFFETTI KEY 3
|
||||||
|
INPUT DATASCAD F_A_DATA
|
||||||
|
DISPLAY "Data scadenza" DATASCAD
|
||||||
|
DISPLAY "Nr. progressivo" NPROGTR
|
||||||
|
OUTPUT F_A_DATA DATASCAD
|
||||||
|
OUTPUT F_A_RIBA NPROGTR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 9 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user