aggiunti file per la gestione delle distinte(ef03*.*)
git-svn-id: svn://10.65.10.50/trunk@3899 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4a5b550d9b
commit
98aaa44159
442
ef/ef0300.cpp
Executable file
442
ef/ef0300.cpp
Executable file
@ -0,0 +1,442 @@
|
||||
#include <relapp.h>
|
||||
#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 "ef0300.h"
|
||||
#include "ef0301.h"
|
||||
|
||||
//Classe per la gestione di distinte (inserimento, modifica, cancellazione)
|
||||
// e per la creazione automatica di distinte per importi.
|
||||
class TVariazione_distinte: public TRelation_application
|
||||
{
|
||||
TMask *_msk, *_m2;
|
||||
TDistinta *_distinta;
|
||||
TRelation *_rel;
|
||||
TLocalisamfile *_reff, *_cession;
|
||||
protected:
|
||||
virtual void init_query_mode(TMask&);
|
||||
virtual void init_insert_mode(TMask&);
|
||||
virtual const char* get_next_key();
|
||||
virtual int read(TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual bool remove(char tipodist, long ndist);
|
||||
virtual TMask* get_mask(int mode) {return _msk;}
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
static bool aggiungi_handler(TMask_field& f, KEY k);
|
||||
static bool elimina_handler(TMask_field& f, KEY k);
|
||||
static bool impdist_notify(TSheet_field& s, int r, KEY key);
|
||||
static bool m2_handler(TMask& m, KEY key);
|
||||
static bool conferma_handler(TMask_field& f, KEY k);
|
||||
static bool annulla_handler(TMask_field& f, KEY k);
|
||||
static void calcola_totale();
|
||||
static void carica_riba();
|
||||
TSheet_field& righe_sheet() const;
|
||||
TSheet_field& righe_sel_sheet() const;
|
||||
bool cerca(long num);
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
void aggiorna();
|
||||
void elimina(TString16 tipodist, long ndist) ;
|
||||
TToken_string* common_f(const TMask& m);
|
||||
public:
|
||||
virtual TRelation* get_relation() const {return _rel;}
|
||||
TVariazione_distinte() {};
|
||||
virtual ~TVariazione_distinte() {};
|
||||
};
|
||||
|
||||
inline TVariazione_distinte& app()
|
||||
{
|
||||
return (TVariazione_distinte&)main_app();
|
||||
}
|
||||
|
||||
void TVariazione_distinte::init_query_mode(TMask&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
}
|
||||
|
||||
void TVariazione_distinte::init_insert_mode(TMask&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
TToken_string riga("|||||||||||");
|
||||
righe_sheet().row(0)= riga;
|
||||
righe_sheet().set_dirty();
|
||||
righe_sel_sheet().row(0)= riga;
|
||||
righe_sel_sheet().set_dirty();
|
||||
}
|
||||
|
||||
//Ritorna il prossimo numero valido di chiave
|
||||
const char* TVariazione_distinte::get_next_key()
|
||||
{
|
||||
TLocalisamfile& effetti = _rel->lfile();;
|
||||
long ndist=1L;
|
||||
if ( !effetti.empty() )
|
||||
{
|
||||
effetti.zero();
|
||||
effetti.setkey(4);
|
||||
effetti.last();
|
||||
if ( effetti.good() )
|
||||
ndist+=effetti.get_long(EFF_NDIST);
|
||||
}
|
||||
return format("%d|%ld",F_NUMBER,ndist);
|
||||
}
|
||||
|
||||
//Ritorna un riferimento allo sheet degli effetti (righe) nella distinta
|
||||
TSheet_field& TVariazione_distinte::righe_sheet() const
|
||||
{
|
||||
TSheet_field& r_sheet = (TSheet_field&)_msk->field(F_SHEET_RIBA);
|
||||
return r_sheet;
|
||||
}
|
||||
|
||||
//Ritorna un riferimento allo sheet delle righe
|
||||
TSheet_field& TVariazione_distinte::righe_sel_sheet() const
|
||||
{
|
||||
TSheet_field& r_sheet = (TSheet_field&)_m2->field(F_SHEET);
|
||||
return r_sheet;
|
||||
}
|
||||
|
||||
//Ritorna TRUE se trovo nel'array delle righe distinta l'effetto passato
|
||||
bool TVariazione_distinte::cerca(long num)
|
||||
{
|
||||
bool trovato = FALSE;
|
||||
int items = _distinta->items();
|
||||
TArray& righedist = _distinta->righe();
|
||||
for (int i = 0; i < items; i++)//ciclo sugli elementi dell'array
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
long num_eff = eff.get_long("NPROGTR");
|
||||
if (num_eff == num)
|
||||
{
|
||||
trovato = TRUE;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return trovato;
|
||||
}
|
||||
|
||||
//Metodo che permette di scivere sull'array gli effetti presenti nello sheet
|
||||
// comune a write e rewrite
|
||||
void TVariazione_distinte::aggiorna()
|
||||
{
|
||||
TSheet_field& shrighe = righe_sheet();
|
||||
int items = shrighe.items();
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = shrighe.row(i);
|
||||
row.restart();
|
||||
long num = row.get_long(1);
|
||||
if (!cerca(num))
|
||||
{
|
||||
TLocalisamfile eff(LF_EFFETTI);
|
||||
TRectype rec = eff.curr();
|
||||
eff.setkey(1);
|
||||
rec.zero();
|
||||
rec.put(EFF_NPROGTR, num);
|
||||
int err = eff.read();
|
||||
TEffetto* effetto= new TEffetto(rec);
|
||||
TArray& righedist = _distinta->righe();
|
||||
righedist.add(effetto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Metodo che permette di eliminare il collegamento tra effetto e distinta per gli
|
||||
//effetti che non fanno parte dell'array
|
||||
void TVariazione_distinte::elimina(TString16 tipodist, long ndist)
|
||||
{
|
||||
TLocalisamfile eff(LF_EFFETTI);
|
||||
eff.put("TIPODIST",tipodist);
|
||||
eff.put("NDIST",ndist);
|
||||
eff.read(_isgteq);
|
||||
TString16 t = eff.get("TIPODIST");
|
||||
long n = eff.get_long("NDIST");
|
||||
long num =eff.get_long("NPROGTR");
|
||||
while ((t==tipodist)&&(n==ndist))
|
||||
{
|
||||
if (!cerca(num))
|
||||
{
|
||||
eff.zero("TIPODIST");
|
||||
eff.zero("NDIST");
|
||||
eff.zero("DATADIST");
|
||||
eff.zero("NRIGADIST");
|
||||
eff.zero("CODABIP");
|
||||
eff.zero("CODCABP");
|
||||
eff.rewrite();
|
||||
}
|
||||
eff.next();
|
||||
t = eff.get_char("TIPODIST");
|
||||
n = eff.get_long("NDIST");
|
||||
}
|
||||
}
|
||||
|
||||
//Metodo che permette di scivere su file i dati inseriti nella maschera;
|
||||
// comune a write e rewrite
|
||||
TToken_string* TVariazione_distinte::common_f(const TMask& m)
|
||||
{
|
||||
TString16 tipodist = m.get(F_TIPODIST);
|
||||
long ndist = m.get_long(F_NUMBER);
|
||||
TDate datadist = (TDate)m.get(F_DATA);
|
||||
long codabi = m.get_long(F_CODABIP);
|
||||
long codcab = m.get_long(F_CODCABP);
|
||||
elimina(tipodist, ndist);
|
||||
m.autosave(*_rel);
|
||||
TToken_string* datidist= new TToken_string;
|
||||
datidist->cut(0);
|
||||
datidist->add(tipodist);
|
||||
datidist->add(ndist);
|
||||
datidist->add(datadist);
|
||||
datidist->add(codabi);
|
||||
datidist->add(codcab);
|
||||
return datidist;
|
||||
}
|
||||
|
||||
int TVariazione_distinte::read(TMask& m)
|
||||
{
|
||||
m.autoload(*_rel);
|
||||
int err = _rel->status();
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = _distinta->reset();
|
||||
err = _distinta->read(_rel->curr());
|
||||
if (err == NOERR)
|
||||
{
|
||||
TToken_string riga(80);
|
||||
TSheet_field& shrighe = righe_sheet();
|
||||
shrighe.reset();
|
||||
int items = _distinta->items();
|
||||
TArray& righedist = _distinta->righe();
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
riga.cut(0);
|
||||
riga.add(FALSE);
|
||||
riga.add(eff.get(EFF_NPROGTR));
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
riga.add(eff.get(EFF_CODCF));
|
||||
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
riga.add(rec_r.get(REFF_NRATA));
|
||||
}
|
||||
else //se l'effetto contiene più di una riga non metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta
|
||||
codval = eff.get(EFF_CODVAL);
|
||||
const bool condition = (codval.empty());
|
||||
m.enable(F_CODVAL, !condition);
|
||||
m.enable(F_TOTIMPVAL, !condition);
|
||||
if (!condition)
|
||||
m.set(F_CODVAL, codval);
|
||||
riga.add(codval);
|
||||
riga.add(eff.get(EFF_IMPORTO));
|
||||
riga.add(eff.get(EFF_IMPORTOVAL));
|
||||
shrighe.row(i) = riga;
|
||||
}
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int TVariazione_distinte::rewrite(const TMask& m)
|
||||
{
|
||||
aggiorna();
|
||||
return _distinta->rewrite(common_f(m));
|
||||
}
|
||||
|
||||
int TVariazione_distinte::write(const TMask& m)
|
||||
{
|
||||
aggiorna();
|
||||
return _distinta->write(TRUE, common_f(m));
|
||||
}
|
||||
|
||||
bool TVariazione_distinte::remove(char tipodist, long ndist)
|
||||
{
|
||||
return _distinta->remove(tipodist, ndist) == NOERR;
|
||||
}
|
||||
|
||||
|
||||
bool TVariazione_distinte::user_create()
|
||||
{
|
||||
_msk = new TMask("ef0300a");
|
||||
_m2 = new TMask("ef0300c");
|
||||
_rel = new TRelation(LF_EFFETTI);
|
||||
_reff = new TLocalisamfile(LF_REFFETTI);
|
||||
_cession = new TLocalisamfile(LF_CESS);
|
||||
_distinta = new TDistinta;
|
||||
set_search_field(F_NUMBER);
|
||||
_msk->set_handler(B_AGGIUNGI, aggiungi_handler);
|
||||
_msk->set_handler(B_ELIMINA, elimina_handler);
|
||||
_m2->set_handler(DLG_OK, conferma_handler);
|
||||
_m2->set_handler(DLG_CANCEL, annulla_handler);
|
||||
_m2->set_handler(m2_handler);
|
||||
righe_sheet().set_notify(impdist_notify);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TVariazione_distinte::user_destroy()
|
||||
{
|
||||
delete _msk;
|
||||
delete _m2;
|
||||
delete _rel;
|
||||
delete _reff;
|
||||
delete _cession;
|
||||
delete _distinta;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Permette di gestire lo sheet per la selezione delle riba da aggiungere alla distinta
|
||||
void TVariazione_distinte::carica_riba()
|
||||
{
|
||||
TLocalisamfile f(LF_EFFETTI);
|
||||
TRectype rec = f.curr();
|
||||
f.setkey(4);
|
||||
f.put("TIPODIST","");
|
||||
f.put("NDIST",0);
|
||||
f.put("NRIGADIST",0);
|
||||
f.read(_isgteq);
|
||||
TString16 t = rec.get("TIPODIST");
|
||||
long n = rec.get_long("NDIST");
|
||||
|
||||
int i = 0;
|
||||
while ((t.empty())&&(n==0))
|
||||
{
|
||||
TToken_string riga(80);
|
||||
TMask* m2 = app()._m2;
|
||||
TSheet_field& sf = (TSheet_field&)m2->field(F_SHEET);
|
||||
sf.reset();
|
||||
riga.cut(0);
|
||||
riga.add(FALSE);
|
||||
riga.add(rec.get(EFF_NPROGTR));
|
||||
riga.add(rec.get(EFF_DATASCAD));
|
||||
riga.add(rec.get(EFF_CODCF));
|
||||
TEffetto eff(rec);
|
||||
if (eff.rows_r() == 1) //se l'effetto contiene solo una riga metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
riga.add(rec_r.get(REFF_NRATA));
|
||||
}
|
||||
else //se l'effetto contiene più di una riga non metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
riga.add(rec.get(EFF_CODVAL));
|
||||
riga.add(rec.get(EFF_IMPORTO));
|
||||
riga.add(rec.get(EFF_IMPORTOVAL));
|
||||
sf.row(i) = riga;
|
||||
|
||||
f.next();
|
||||
t = rec.get("TIPODIST");
|
||||
n = rec.get_long("NDIST");
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
//handler per gestire la pressione del bottone aggiungi della maschera principale(ef0300a)
|
||||
bool TVariazione_distinte::aggiungi_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k==K_SPACE)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
m.close();
|
||||
TMask* m2 = app()._m2;
|
||||
m2->open();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//handler per gestire la pressione del bottone elimina della maschera principale(ef0300a)
|
||||
bool TVariazione_distinte::elimina_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k==K_SPACE)
|
||||
f.yesno_box("Vuoi veramente eliminare gli effetti");
|
||||
// SE SI ELIMINARE DALLO SHEET GLI EFFETTI SELEZIONATI (LA RIMOZIONE FISICA SARA' FATTA AL
|
||||
// MOMENTO DELLA REGISTRAZIONE, SE NO NON FACCIO NULLA
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//handler per gestire la pressione del bottone conferma della maschera per l'aggiunta delle riba(ef0300c)
|
||||
bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k==K_ENTER)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
TMask* m2 = app()._msk;
|
||||
m.close();
|
||||
m2->open();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//handler della maschera per l'aggiunta delle riba(ef0300c)
|
||||
bool TVariazione_distinte::m2_handler(TMask& m, KEY k)
|
||||
{
|
||||
if (k==K_ENTER)
|
||||
carica_riba();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//handler per gestire la pressione del bottone annulla della maschera per l'aggiunta delle riba(ef0300c)
|
||||
bool TVariazione_distinte::annulla_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
TMask* m2 = app()._msk;
|
||||
m.close();
|
||||
m2->open();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Calcola i totali relativi alla distinta (totale in lire e totale in valuta(se presente))
|
||||
void TVariazione_distinte::calcola_totale()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET_RIBA);
|
||||
int items = sf.items();
|
||||
real imp, impval, impdist, impdistval;
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
imp = row.get(8);
|
||||
impdist += imp;
|
||||
impval = row.get(9);
|
||||
impdistval += impval;
|
||||
}
|
||||
m->set(F_TOTIMP, impdist);
|
||||
m->set(F_TOTIMPVAL, impdistval);
|
||||
}
|
||||
|
||||
//Notify per il calcolo dei totali relativi alla distinta
|
||||
bool TVariazione_distinte::impdist_notify(TSheet_field& s, int r, KEY key)
|
||||
{
|
||||
if (s.to_check(key, TRUE))
|
||||
calcola_totale();
|
||||
if (key == K_DEL && s.items()==1)
|
||||
{
|
||||
error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ef0300(int argc, char* argv[])
|
||||
{
|
||||
TVariazione_distinte a ;
|
||||
a.run(argc, argv, "Gestione Distinte");
|
||||
return 0;
|
||||
}
|
42
ef/ef0300.h
Executable file
42
ef/ef0300.h
Executable file
@ -0,0 +1,42 @@
|
||||
#ifndef __EF0300_H
|
||||
#define __EF0300_H
|
||||
|
||||
// campi maschera EF0300a.msk
|
||||
|
||||
|
||||
#define F_TIPODIST 101
|
||||
#define F_NUMBER 102
|
||||
#define F_NUMBERRIGA 103
|
||||
#define F_DATA 104
|
||||
#define F_DENBANP 105
|
||||
#define F_CODABIP 106
|
||||
#define F_CODCABP 107
|
||||
#define F_TOTIMP 108
|
||||
#define F_TOTIMPVAL 109
|
||||
#define F_CODVAL 110
|
||||
#define F_SHEET_RIBA 111
|
||||
#define B_AGGIUNGI 112
|
||||
#define B_ELIMINA 113
|
||||
|
||||
|
||||
// Identificatori campi per lo spreadsheet Righe Distinta
|
||||
#define F_CHECK 101
|
||||
#define F_NRIBA 102
|
||||
#define F_SCAD 103
|
||||
#define F_CLIENTE 104
|
||||
#define F_NFATT 105
|
||||
#define F_DATAFATT 106
|
||||
#define F_NRATA 107
|
||||
#define F_VALUTA 108
|
||||
#define F_IMPORTO 109
|
||||
#define F_IMPORTOVAL 110
|
||||
|
||||
// campi maschera EF0300C.msk
|
||||
|
||||
|
||||
#define F_DADATA 101
|
||||
#define F_ADATA 102
|
||||
#define F_TIPORD 103
|
||||
#define F_SHEET 104
|
||||
|
||||
#endif // __EF0300.H
|
161
ef/ef0300a.uml
Executable file
161
ef/ef0300a.uml
Executable file
@ -0,0 +1,161 @@
|
||||
#include "ef0300.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Distinte" 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
LIST F_TIPODIST 19
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo Distinta "
|
||||
KEY 4
|
||||
FIELD LF_EFFETTI->TIPODIST
|
||||
ITEM "I|All'incasso"
|
||||
ITEM "B|Salvo buon fine"
|
||||
ITEM "S|Allo sconto"
|
||||
END
|
||||
|
||||
LIST F_NUMBERRIGA 10
|
||||
BEGIN
|
||||
PROMPT 1 60 "Numero Riga Distinta"
|
||||
KEY 4
|
||||
FIELD LF_EFFETTI->NRIGADIST
|
||||
ITEM "1|PRIMA RIGA"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NUMBER 7
|
||||
BEGIN
|
||||
PROMPT 48 1 "Numero Distinta "
|
||||
FIELD LF_EFFETTI->NDIST
|
||||
FLAGS "R"
|
||||
KEY 4
|
||||
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
|
||||
INPUT TIPODIST F_TIPODIST
|
||||
INPUT NDIST F_NUMBER
|
||||
INPUT NRIGADIST F_NUMBERRIGA
|
||||
DISPLAY "Tipo distinta" TIPODIST
|
||||
DISPLAY "Nr. distinta" NDIST
|
||||
//DISPLAY "Nr. riga distinta" NRIGADIST
|
||||
OUTPUT F_TIPODIST TIPODIST
|
||||
OUTPUT F_NUMBER NDIST
|
||||
OUTPUT F_NUMBERRIGA NRIGADIST
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
PROMPT 2 2 "Data Distinta "
|
||||
FIELD LF_EFFETTI->DATADIST
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 3 "Banca di Presentazione "
|
||||
END
|
||||
|
||||
STRING F_DENBANP 50
|
||||
BEGIN
|
||||
PROMPT 25 3 ""
|
||||
FLAGS "U"
|
||||
USE %BAN KEY 2
|
||||
INPUT S0 F_DENBANP
|
||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT F_DENBANP S0
|
||||
OUTPUT F_CODABIP CODTAB[1,5]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
END
|
||||
|
||||
NUMBER F_CODABIP 5 0
|
||||
BEGIN
|
||||
PROMPT 14 4 "Codice ABI "
|
||||
FIELD LF_EFFETTI->CODABIP
|
||||
FLAGS "RZ"
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||
INPUT CODTAB F_CODABIP
|
||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT F_CODABIP CODTAB[1,5]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
OUTPUT F_DENBANP S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice ABI assente"
|
||||
END
|
||||
|
||||
NUMBER F_CODCABP 5 0
|
||||
BEGIN
|
||||
PROMPT 14 5 "Codice CAB "
|
||||
FIELD LF_EFFETTI->CODCABP
|
||||
FLAGS "RZ"
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||
INPUT CODTAB[1,5] F_CODABIP
|
||||
INPUT CODTAB[6,10] F_CODCABP
|
||||
DISPLAY "Codice ABI" CODTAB[1,5]
|
||||
DISPLAY "Codice CAB" CODTAB[6,10]
|
||||
DISPLAY "Denominazione@50" S0
|
||||
OUTPUT F_CODABIP CODTAB[1,5]
|
||||
OUTPUT F_CODCABP CODTAB[6,10]
|
||||
OUTPUT F_DENBANP S0
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 1 F_CODCABP
|
||||
WARNING "Banca assente"
|
||||
END
|
||||
|
||||
NUMBER F_TOTIMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Valore Distinta "
|
||||
END
|
||||
|
||||
NUMBER F_TOTIMPVAL 18 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Valore Distinta Val. "
|
||||
END
|
||||
|
||||
STTING F_CODVAL 8
|
||||
BEGIN
|
||||
PROMPT 48 7 "Codice Valuta "
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_RIBA 78 8
|
||||
BEGIN
|
||||
PROMPT 1 10 "RIGHE DISTINTA"
|
||||
ITEM " "
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Scadenza"
|
||||
ITEM "Cliente@50"
|
||||
ITEM "Nr. Fattura"
|
||||
ITEM "Data Fattura"
|
||||
ITEM "Nr. Rata"
|
||||
ITEM "Valuta"
|
||||
ITEM "Importo"
|
||||
ITEM "Importo Val."
|
||||
END
|
||||
|
||||
BUTTON B_AGGIUNGI 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -2 "~AGGIUNGI"
|
||||
PICTURE BMP_NEWREC
|
||||
PICTURE BMP_NEWRECDN
|
||||
END
|
||||
|
||||
BUTTON B_ELIMINA 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -2 "~ELIMINA"
|
||||
PICTURE BMP_DELREC
|
||||
PICTURE BMP_DELRECDN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
#include "EF0300B.UML"
|
||||
|
91
ef/ef0300b.uml
Executable file
91
ef/ef0300b.uml
Executable file
@ -0,0 +1,91 @@
|
||||
#include "ef0300.h"
|
||||
|
||||
PAGE "Righe Distinta" -1 -1 76 13
|
||||
|
||||
LISTBOX F_CHECK 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Selezionato "
|
||||
ITEM " |FALSE"
|
||||
ITEM "X|TRUE"
|
||||
END
|
||||
|
||||
NUMBER F_NRIBA 7
|
||||
BEGIN
|
||||
PROMPT 2 2 "Numero RiBa "
|
||||
FIELD LF_EFFETTI->NPROGTR
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATA F_SCAD
|
||||
BEGIN
|
||||
PROMPT 2 3 "Scadenza "
|
||||
FIELD LF_EFFETTI->DATASCAD
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_CLIENTE 50 40
|
||||
BEGIN
|
||||
PROMPT 2 4 "Cliente "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_NFATT 7
|
||||
BEGIN
|
||||
PROMPT 2 5 "Numero Fatt. "
|
||||
FIELD LF_REFFETTI->NFATT
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATA F_DATAFATT
|
||||
BEGIN
|
||||
PROMPT 2 6 "Data Fattura "
|
||||
FIELD LF_REFFETTI->DATAFATT
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NRATA 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Numero Rata "
|
||||
FIELD LF_REFFETTI->NRATA
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_VALUTA 3
|
||||
BEGIN
|
||||
PROMPT 2 8 "Valuta "
|
||||
FIELD LF_EFFETTI->CODVAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IMPORTO 18 2
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo "
|
||||
FIELD LF_EFFETTI->IMPORTO
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IMPORTOVAL 18 3
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo Val. "
|
||||
FIELD LF_EFFETTI->IMPORTOVAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 "Elimina"
|
||||
MESSAGE EXIT, K_DEL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
59
ef/ef0300c.uml
Executable file
59
ef/ef0300c.uml
Executable file
@ -0,0 +1,59 @@
|
||||
#include "ef0300.h"
|
||||
|
||||
PAGE "Aggiungi Effetti alla Distinta" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 60 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Selezione effetti per data"
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 2 2 "Dalla Data "
|
||||
FIELD LF_EFFETTI->DATASCAD
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 30 2 "Alla Data "
|
||||
FIELD LF_EFFETTI->DATASCAD
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST F_TIPORD 14
|
||||
BEGIN
|
||||
PROMPT 2 4 "Tipo Ordinamento "
|
||||
ITEM " |** Nessuno **"
|
||||
ITEM "S|Scadenza "
|
||||
ITEM "F|Fattura "
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET 74 8
|
||||
BEGIN
|
||||
PROMPT 2 6 "EFFETTI SELEZIONABILI"
|
||||
ITEM " "
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Scadenza"
|
||||
ITEM "Cliente@50"
|
||||
ITEM "Nr. Fattura"
|
||||
ITEM "Data Fattura"
|
||||
ITEM "Nr. Rata"
|
||||
ITEM "Valuta"
|
||||
ITEM "Importo"
|
||||
ITEM "Importo Val."
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
#include "EF0300B.UML"
|
86
ef/ef0301.cpp
Executable file
86
ef/ef0301.cpp
Executable file
@ -0,0 +1,86 @@
|
||||
#include "effetti.h"
|
||||
#include "reffetti.h"
|
||||
#include "cession.h"
|
||||
#include "ef0301.h"
|
||||
|
||||
TDistinta::TDistinta(const TRectype& rec)
|
||||
{
|
||||
read(rec);
|
||||
}
|
||||
|
||||
TDistinta::TDistinta(const char tipo, const long numero)
|
||||
{
|
||||
read(tipo,numero);
|
||||
}
|
||||
|
||||
int TDistinta::read(const char tipo, const long numero)
|
||||
{
|
||||
int err = NOERR;
|
||||
CHECK(tipo!='\0' && numero>0,"Can't read distinta from NULL elements");
|
||||
|
||||
for (int i=0; err == NOERR ; i++)
|
||||
{
|
||||
TEffetto* effetto = new TEffetto;
|
||||
err = effetto->read(tipo, numero, i+1);
|
||||
if (err == NOERR)
|
||||
_righe_dist.add(effetto);
|
||||
}
|
||||
if ((_righe_dist.items()>0)||(err == _iseof))
|
||||
err = NOERR;
|
||||
return err;
|
||||
}
|
||||
|
||||
int TDistinta::read(const TRectype& rec)
|
||||
{
|
||||
CHECK(rec.num() == LF_EFFETTI,"Can't read distinta from a different record type");
|
||||
const char tipo = rec.get_char(EFF_TIPODIST);
|
||||
const long numero = rec.get_long(EFF_NDIST);
|
||||
return read(tipo,numero);
|
||||
}
|
||||
|
||||
int TDistinta::write(bool force, TToken_string* dati_dist)
|
||||
{
|
||||
int err = NOERR;
|
||||
const int elem = items();
|
||||
for (int i=0; i<elem && err==NOERR; i++)
|
||||
{
|
||||
TEffetto& effetto = (TEffetto&)_righe_dist[i];
|
||||
dati_dist->restart();
|
||||
effetto.put("TIPODIST", dati_dist->get());
|
||||
effetto.put("NDIST", dati_dist->get_long());
|
||||
effetto.put("DATADIST", dati_dist->get());
|
||||
effetto.put("CODABIP", dati_dist->get_long());
|
||||
effetto.put("CODCABP", dati_dist->get_long());
|
||||
effetto.put("NRIGADIST", i+1);
|
||||
|
||||
err = effetto.rewrite();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int TDistinta::remove(char tipodist, long ndist)
|
||||
{
|
||||
int err= NOERR;
|
||||
err = reset() == NOERR;
|
||||
//rimuovo dal file effetti
|
||||
TLocalisamfile eff(LF_EFFETTI);
|
||||
eff.put("TIPODIST",tipodist);
|
||||
eff.put("NDIST",ndist);
|
||||
eff.read(_isgteq);
|
||||
char t = eff.get_char("TIPODIST");
|
||||
long n = eff.get_long("NDIST");
|
||||
while ((t==tipodist)&&(n==ndist))
|
||||
{
|
||||
eff.zero("TIPODIST");
|
||||
eff.zero("NDIST");
|
||||
eff.zero("DATADIST");
|
||||
eff.zero("NRIGADIST");
|
||||
eff.zero("CODABIP");
|
||||
eff.zero("CODCABP");
|
||||
eff.rewrite();
|
||||
eff.next();
|
||||
t = eff.get_char("TIPODIST");
|
||||
n = eff.get_long("NDIST");
|
||||
}
|
||||
return err;
|
||||
}
|
30
ef/ef0301.h
Executable file
30
ef/ef0301.h
Executable file
@ -0,0 +1,30 @@
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
#include "ef0101.h"
|
||||
|
||||
class TDistinta:public TObject
|
||||
{
|
||||
TArray _righe_dist;
|
||||
public:
|
||||
TArray& righe()
|
||||
{ return _righe_dist;}
|
||||
//ritorna il numero degli effetti nella distinta (nell'array)
|
||||
const int items() const
|
||||
{ return _righe_dist.items(); }
|
||||
//elimina tutti gli effetti nella distinta (appartenti all'array)
|
||||
int reset()
|
||||
{ return _righe_dist.destroy() == NOERR; }
|
||||
int read(const char tipo, const long numero);
|
||||
int read(const TRectype& rec);
|
||||
int write(bool force = FALSE, TToken_string* dati_dist = NULL);
|
||||
int rewrite(TToken_string* dati_dist)
|
||||
{ return write(TRUE, dati_dist); }
|
||||
int remove(char tipodist, long ndist);
|
||||
const char tipodist() const { return ((TRectype&)_righe_dist[0]).get_char(EFF_TIPODIST); }
|
||||
const long ndist() const { return ((TRectype&)_righe_dist[0]).get_long(EFF_NDIST); }
|
||||
TDistinta() {};
|
||||
TDistinta(const char tipo, const long numero);
|
||||
TDistinta(const TRectype& rec);
|
||||
virtual ~TDistinta() {}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user