modifiche varie ai programmi del modulo
git-svn-id: svn://10.65.10.50/trunk@4137 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
356e0b6f12
commit
0b6a298ced
@ -1,8 +1,14 @@
|
||||
// DEFINIZIONE CAMPI MASCHERA PER STAMPA TABELLA BANCHE DI PRESENTAZIONE
|
||||
|
||||
#ifndef __BASTBNP_H
|
||||
#define __BASTBNP_H
|
||||
|
||||
#define F_INIZIO1 101
|
||||
#define F_INIZIO2 102
|
||||
#define F_FINE1 201
|
||||
#define F_FINE2 202
|
||||
|
||||
#endif //__BASTBNP_H
|
||||
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
//DEFINIZIONE MASCHERA PER STAMPA TABELLA BANCHE DI PRESENTAZIONE
|
||||
#include "bastbnp.h"
|
||||
|
||||
PAGE "Stampa banche presentazione" -1 -1 56 8
|
||||
PAGE "Stampa Tabella Banche Presentazione" -1 -1 56 8
|
||||
|
||||
STRING F_INIZIO1 5
|
||||
BEGIN
|
||||
|
@ -1,3 +1,7 @@
|
||||
//DEFINIZIONE CAMPI MASCHERA GESTIONE TABELLA BANCHE DI PRESENTAZIONE
|
||||
#ifndef __BATBBNP_H
|
||||
#define __BATBBNP_H
|
||||
|
||||
#define F_CODICEABI 101
|
||||
#define F_CODICECAB 102
|
||||
#define F_ABI 103
|
||||
@ -14,3 +18,5 @@
|
||||
#define F_FIDO_SCN 114
|
||||
#define F_CC_CONT_SCN 115
|
||||
#define B_PRINT 116
|
||||
|
||||
#endif//__BATBBNP_H
|
@ -1,19 +1,20 @@
|
||||
//DEFINIZIONE MASCHERA GESTIONE TABELLA BANCHE DI PRESENTAZIONE
|
||||
#include "batbbnp.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
TOOLBAR "" 0 19 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tabella banche di presentazione" -1 -1 77 20
|
||||
PAGE "Gestione Tabella Banche di Presentazione" 0 -1 77 19
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 1 " "
|
||||
PROMPT 1 0 " "
|
||||
END
|
||||
|
||||
NUMBER F_CODICEABI 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice ABI "
|
||||
PROMPT 2 1 "Codice ABI "
|
||||
FIELD BNP->CODTAB[1,5]
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
@ -28,7 +29,7 @@ END
|
||||
|
||||
NUMBER F_CODICECAB 5
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice CAB "
|
||||
PROMPT 2 2 "Codice CAB "
|
||||
FIELD BNP->CODTAB[6,10]
|
||||
FLAGS "Z"
|
||||
KEY 1
|
||||
@ -46,7 +47,7 @@ END
|
||||
|
||||
NUMBER F_ABI 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice ABI "
|
||||
PROMPT 2 1 "Codice ABI "
|
||||
FLAGS "Z"
|
||||
FIELD BNP->CODTAB[1,5]
|
||||
KEY 1
|
||||
@ -63,7 +64,7 @@ END
|
||||
|
||||
NUMBER F_CAB 5
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice CAB "
|
||||
PROMPT 2 2 "Codice CAB "
|
||||
FLAGS "Z"
|
||||
FIELD BNP->CODTAB[6,10]
|
||||
KEY 1
|
||||
@ -83,99 +84,94 @@ END
|
||||
|
||||
STRING F_ISTIT 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
PROMPT 26 1 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_DENOM 50
|
||||
BEGIN
|
||||
PROMPT 26 3 ""
|
||||
PROMPT 26 2 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "Portafoglio effetti all' incasso"
|
||||
PROMPT 1 4 "Portafoglio effetti all' incasso"
|
||||
END
|
||||
|
||||
STRING F_CC_INC 20
|
||||
BEGIN
|
||||
PROMPT 2 7 "C/C "
|
||||
PROMPT 2 5 "C/C "
|
||||
FIELD BNP->S0
|
||||
END
|
||||
|
||||
NUMBER F_FIDO_INC 20 2
|
||||
BEGIN
|
||||
PROMPT 45 7 "Fido "
|
||||
PROMPT 45 5 "Fido "
|
||||
FIELD BNP->R0
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
STRING F_CC_CONT_INC 20
|
||||
BEGIN
|
||||
PROMPT 2 8 "C/Contabile "
|
||||
PROMPT 2 6 "C/Contabile "
|
||||
FIELD BNP->S3
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "Portafoglio effetti salvo buon fine"
|
||||
PROMPT 1 8 "Portafoglio effetti salvo buon fine"
|
||||
END
|
||||
|
||||
STRING F_CC_SBF 20
|
||||
BEGIN
|
||||
PROMPT 2 11 "C/C "
|
||||
PROMPT 2 9 "C/C "
|
||||
FIELD BNP->S1
|
||||
END
|
||||
|
||||
NUMBER F_FIDO_SBF 20 2
|
||||
BEGIN
|
||||
PROMPT 45 11 "Fido "
|
||||
PROMPT 45 9 "Fido "
|
||||
FIELD BNP->R1
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
STRING F_CC_CONT_SBF 20
|
||||
BEGIN
|
||||
PROMPT 2 12 "C/Contabile "
|
||||
PROMPT 2 10 "C/Contabile "
|
||||
FIELD BNP->S4
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 14 "Portafoglio effetti allo sconto"
|
||||
PROMPT 1 12 "Portafoglio effetti allo sconto"
|
||||
END
|
||||
|
||||
STRING F_CC_SCN 20
|
||||
BEGIN
|
||||
PROMPT 2 15 "C/C "
|
||||
PROMPT 2 13 "C/C "
|
||||
FIELD BNP->S2
|
||||
END
|
||||
|
||||
NUMBER F_FIDO_SCN 20 2
|
||||
BEGIN
|
||||
PROMPT 45 15 "Fido "
|
||||
PROMPT 45 13 "Fido "
|
||||
FIELD BNP->R2
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
STRING F_CC_CONT_SCN 20
|
||||
BEGIN
|
||||
PROMPT 2 16 "C/Contabile "
|
||||
PROMPT 2 14 "C/Contabile "
|
||||
FIELD BNP->S5
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 15 4
|
||||
BEGIN
|
||||
PROMPT 1 18 " "
|
||||
GROUP 1
|
||||
FLAG "H"
|
||||
END
|
||||
|
||||
BUTTON B_PRINT 10 2
|
||||
BEGIN
|
||||
PROMPT 2 19 "~Stampa"
|
||||
PROMPT -11 -1 "~Stampa"
|
||||
MESSAGE EXIT,K_SPACE
|
||||
PICTURE BMP_PRINT
|
||||
PICTURE BMP_PRINT
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,3 +1,4 @@
|
||||
//PROGRAMMA PRINCIPALE APPLICAZIONE "GESTIONE EFFETTI"
|
||||
#include <xvt.h>
|
||||
#include <checks.h>
|
||||
#include "ef0.h"
|
||||
|
@ -8,10 +8,10 @@
|
||||
#include "ef0100.h"
|
||||
#include "ef0101.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Classe per la gestione di effetti con metodi standard di: //
|
||||
// inserimento, modifica, cancellazione. //
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
// inserimento, modifica, cancellazione. //
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
class TVariazione_effetti: public TRelation_application
|
||||
{
|
||||
@ -47,16 +47,17 @@ public:
|
||||
// restituisce un riferimento all' applicazione
|
||||
inline TVariazione_effetti& app() {return (TVariazione_effetti&)main_app();}
|
||||
|
||||
// quando si va in query mode resetta i due campi della maschera relativi ai totali
|
||||
// quando si va in query mode resetta i due campi della maschera
|
||||
// relativi ai totali
|
||||
void TVariazione_effetti::init_query_mode(TMask&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
}
|
||||
|
||||
// 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
|
||||
// per forzare l'utente all'inserimento di una riga
|
||||
// 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 per forzare l'utente all'inserimento di una riga
|
||||
void TVariazione_effetti::init_insert_mode(TMask&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
@ -161,7 +162,8 @@ int TVariazione_effetti::read(TMask& m)
|
||||
int err = _rel->status();
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = _effetto->read(f, _rel->curr()); // legge l'effetto dal record corrente della relazione
|
||||
// legge l'effetto dal record corrente della relazione
|
||||
err = _effetto->read(f, _rel->curr());
|
||||
if (err == NOERR)
|
||||
{
|
||||
TString16 codcom(3);
|
||||
@ -179,13 +181,14 @@ int TVariazione_effetti::read(TMask& m)
|
||||
riga.add(rec.get(CES_RAGSOC));
|
||||
riga.add(rec.get(CES_LOCALITA));
|
||||
riga.add(rec.get(CES_STATO));
|
||||
|
||||
codcom = rec.get(CES_COM);//per caricare nello sheet dei cessionari la denominazione
|
||||
riga.add(codcom); //del comune di cui si conosce il codice
|
||||
// per caricare nello sheet dei cessionari la denominazione
|
||||
// del comune di cui si conosce il codice
|
||||
codcom = rec.get(CES_COM);
|
||||
riga.add(codcom);
|
||||
_com->zero();
|
||||
_com->put(COM_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;
|
||||
}
|
||||
items = _effetto->rows_r();
|
||||
@ -265,14 +268,15 @@ bool TVariazione_effetti::user_destroy()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// handler che permette di effettuare il controllo sul fatto che venga inserita
|
||||
// almeno una riga per un effetto
|
||||
// handler che 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)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const int mode = m.mode();
|
||||
if ( k == K_ENTER && (mode == MODE_INS || mode == MODE_MOD) ) // se si vuole salvare e si è in uno dei due modi di funzionamento
|
||||
{ // si controllano le righe del effetto nello sheet
|
||||
// se si vuole salvare e si è in uno dei due modi di funzionamento
|
||||
if ( k == K_ENTER && (mode == MODE_INS || mode == MODE_MOD) )
|
||||
{ // si controllano le righe del effetto nello sheet
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_RIGHE);
|
||||
int items = sf.items();
|
||||
bool found = FALSE;
|
||||
@ -280,10 +284,13 @@ bool TVariazione_effetti::handle_sheet(TMask_field &f, KEY k)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
real imp_eff(row.get(1));
|
||||
if (imp_eff != 0.0) found = TRUE;// controlla che le righe abbiano un importo
|
||||
// controlla che le righe abbiano un importo
|
||||
if (imp_eff != 0.0) found = TRUE;
|
||||
}
|
||||
if (!found)// se non ha trovato righe nello sheet oppure se quelle che ci sono non hanno importo
|
||||
{ // non permetto di salvare l'effetto
|
||||
// se non ha trovato righe nello sheet oppure se quelle che ci sono non
|
||||
// hanno importo
|
||||
if (!found)
|
||||
{ // non permetto di salvare l'effetto
|
||||
error_box("L'effetto non può contenere righe con importo nullo!");
|
||||
return FALSE;
|
||||
}
|
||||
@ -299,8 +306,9 @@ bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||
TString val(f.get());
|
||||
if (f.to_check(k, TRUE))
|
||||
{
|
||||
const bool condition = (val == "LIT" || val.empty());// se non c'e valuta o se è lire
|
||||
m.enable(-1,!condition); // disabilito i campi collegati
|
||||
// se non c'e valuta o se è lire disabilito i campi collegati
|
||||
const bool condition = (val == "LIT" || val.empty());
|
||||
m.enable(-1,!condition);
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET_RIGHE);
|
||||
if (condition)
|
||||
{
|
||||
@ -321,16 +329,18 @@ bool TVariazione_effetti::codval_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli importi totali
|
||||
// (in lire ed in valuta) dell'effetto
|
||||
// funzione chiamata dal notify dello sheet per effettuare il calcolo degli
|
||||
// importi totali (in lire ed in valuta) dell'effetto
|
||||
void TVariazione_effetti::calcola_totali()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
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++)// scandisco tutte le righe dello sheet e ne prendo gli importi
|
||||
{ // (in lire ed in valuta) e li sommo al totale
|
||||
// scandisco tutte le righe dello sheet e ne prendo gli importi
|
||||
// (in lire ed in valuta) e li sommo al totale
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
imp = row.get(1);
|
||||
impeff += imp;
|
||||
@ -341,12 +351,13 @@ void TVariazione_effetti::calcola_totali()
|
||||
m->set(F_TOTIMPVAL, impeffval);
|
||||
}
|
||||
|
||||
// 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
|
||||
// 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
|
||||
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)//se rimane una sola riga nello sheet non la si può cancellare
|
||||
//se rimane una sola riga nello sheet non la si può cancellare
|
||||
if (key == K_DEL && s.items() == 1)
|
||||
{
|
||||
error_box("IMPOSSIBILE CANCELLARE: L'effetto deve contenere almeno una riga!");
|
||||
return FALSE;
|
||||
@ -357,6 +368,6 @@ bool TVariazione_effetti::impeff_notify(TSheet_field& s, int r, KEY key)
|
||||
int ef0100(int argc, char* argv[])
|
||||
{
|
||||
TVariazione_effetti a ;
|
||||
a.run(argc, argv, "Gestione Effetti");
|
||||
a.run(argc, argv, "Variazione Effetti");
|
||||
return 0;
|
||||
}
|
||||
|
11
ef/ef0100.h
11
ef/ef0100.h
@ -1,6 +1,7 @@
|
||||
#ifndef __EF0100_H
|
||||
#define __EF0100_H
|
||||
|
||||
#define __EF0100_H
|
||||
|
||||
// DEFINIZIONE CAMPI MASCHERE PER LA GESTIONE EFFETTI
|
||||
// campi maschera ef0100a.uml
|
||||
|
||||
#define F_NPROGTR 101
|
||||
@ -33,13 +34,15 @@
|
||||
#define F_EFFCONT 128
|
||||
#define F_EFFCOMP 129
|
||||
#define F_SHEET_EFF 130
|
||||
// campi maschera ef0100b.uml
|
||||
|
||||
// Identificatori campi per lo spreadsheet dei Cessionari
|
||||
#define F_RAGSOC 101
|
||||
#define F_LOCALITA 102
|
||||
#define F_STATO 103
|
||||
#define F_COM 104
|
||||
#define F_DENCOM 105
|
||||
// campi maschera ef0100c.uml
|
||||
|
||||
// Identificatori campi per lo spreadsheet delle Righe Effetto
|
||||
#define F_IMPFATT 101
|
||||
#define F_IMPEFF 102
|
||||
#define F_IMPFATTVAL 103
|
||||
|
@ -1,21 +1,22 @@
|
||||
// DEFINIZIONE CAMPI MASCHERA PRINCIPALE PER LA GESTIONE EFFETTI
|
||||
#include "ef0100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
TOOLBAR "" 0 19 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Effetti 1/3" 0 -1 0 19
|
||||
PAGE "Testata/Righe" 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
NUMBER F_NPROGTR 7
|
||||
BEGIN
|
||||
PROMPT 2 2 "Numero "
|
||||
BEGIN
|
||||
PROMPT 2 1 "Numero "
|
||||
FIELD LF_EFFETTI->NPROGTR
|
||||
FLAGS "R"
|
||||
KEY 1
|
||||
@ -37,7 +38,7 @@ END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cliente "
|
||||
PROMPT 2 2 "Cliente "
|
||||
FIELD LF_EFFETTI->CODCF
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
@ -51,7 +52,7 @@ END
|
||||
|
||||
STRING F_CFRAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 3 ""
|
||||
PROMPT 26 2 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC F_CFRAGSOC
|
||||
@ -63,7 +64,7 @@ END
|
||||
|
||||
DATE F_DATASCAD
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data scadenza "
|
||||
PROMPT 2 3 "Data scadenza "
|
||||
FIELD LF_EFFETTI->DATASCAD
|
||||
KEY 3
|
||||
USE LF_EFFETTI KEY 3
|
||||
@ -81,7 +82,7 @@ END
|
||||
|
||||
LIST F_TIPOPAG 24
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo pagamento "
|
||||
PROMPT 2 5 "Tipo pagamento "
|
||||
FIELD LF_EFFETTI->TIPOPAG
|
||||
ITEM "2|Tratta"
|
||||
ITEM "3|Ricevuta Bancaria"
|
||||
@ -95,7 +96,7 @@ END
|
||||
|
||||
STRING F_ULTCLASS 1
|
||||
BEGIN
|
||||
PROMPT 46 6 "Ulteriore classificazione "
|
||||
PROMPT 46 5 "Ulteriore classificazione "
|
||||
FIELD LF_EFFETTI->ULTCLASS
|
||||
USE %CLR
|
||||
INPUT CODTAB[1,1] F_TIPOPAG SELECT
|
||||
@ -107,7 +108,7 @@ END
|
||||
|
||||
STRING F_CODVAL 3
|
||||
BEGIN
|
||||
PROMPT 2 7 "Codice valuta "
|
||||
PROMPT 2 6 "Codice valuta "
|
||||
FIELD LF_EFFETTI->CODVAL
|
||||
FLAGS "UZ"
|
||||
USE %VAL
|
||||
@ -120,7 +121,7 @@ END
|
||||
|
||||
DATA F_DATACAM
|
||||
BEGIN
|
||||
PROMPT 46 7 "Data cambio "
|
||||
PROMPT 46 6 "Data cambio "
|
||||
FIELD LF_EFFETTI->DATACAMBIO
|
||||
FLAGS "R"
|
||||
USE CAM
|
||||
@ -137,7 +138,7 @@ END
|
||||
|
||||
NUMBER F_CAMBIO 15 5
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cambio "
|
||||
PROMPT 2 7 "Cambio "
|
||||
FIELD LF_EFFETTI->CAMBIO
|
||||
FLAGS "RU"
|
||||
PICTURE ".5"
|
||||
@ -148,13 +149,13 @@ END
|
||||
|
||||
BOOLEAN F_ULTRATA
|
||||
BEGIN
|
||||
PROMPT 46 8 "Ultima rata"
|
||||
PROMPT 46 7 "Ultima rata"
|
||||
FIELD LF_EFFETTI->ULTRATA
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_RIGHE 76 7
|
||||
BEGIN
|
||||
PROMPT 2 10 "RIGHE EFFETTO"
|
||||
PROMPT 2 9 "RIGHE EFFETTO"
|
||||
ITEM "Importo fatt.@20"
|
||||
ITEM "Importo effet.@14"
|
||||
ITEM "Imp.fatt.val.@20"
|
||||
@ -169,7 +170,7 @@ END
|
||||
|
||||
NUMBER F_TOTIMP 18 2
|
||||
BEGIN
|
||||
PROMPT 2 18 "Totale importi "
|
||||
PROMPT 2 17 "Totale importi "
|
||||
FIELD LF_EFFETTI->IMPORTO
|
||||
PICTURE "###.###.###.###,@@"
|
||||
FLAG "D"
|
||||
@ -177,7 +178,7 @@ END
|
||||
|
||||
NUMBER F_TOTIMPVAL 18 3
|
||||
BEGIN
|
||||
PROMPT 2 19 "Totale importi in valuta "
|
||||
PROMPT 2 18 "Totale importi in valuta "
|
||||
FIELD LF_EFFETTI->IMPORTOVAL
|
||||
PICTURE "###.###.###.###,@@@"
|
||||
FLAG "D"
|
||||
@ -186,7 +187,7 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Effetti 2/3" 0 -1 0 19
|
||||
PAGE "Parametri" 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 38 4
|
||||
BEGIN
|
||||
@ -371,12 +372,7 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Effetti 3/3" 0 -1 0 19
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 3 1 "OBBLIGATI PRINCIPALI"
|
||||
END
|
||||
PAGE "Cessionari" 0 -1 0 19
|
||||
|
||||
SPREADSHEET F_SHEET_EFF 76 8
|
||||
BEGIN
|
||||
|
@ -1,3 +1,4 @@
|
||||
// DEFINIZIONE MASCHERA, DELLO SHEET DEI CESSIONARI, PER LA GESTIONE EFFETTI
|
||||
#include "ef0100.h"
|
||||
|
||||
PAGE "Obbligati principali" -1 -1 76 12
|
||||
@ -16,7 +17,7 @@ END
|
||||
|
||||
NUMBER F_STATO 3
|
||||
BEGIN
|
||||
PROMPT 60 4 "Stato "
|
||||
PROMPT 63 4 "Stato "
|
||||
FLAGS "RZ"
|
||||
USE %STA
|
||||
INPUT CODTAB F_STATO
|
||||
@ -28,7 +29,7 @@ BEGIN
|
||||
HELP "Inserire lo stato in cui risiede l'obbligato"
|
||||
END
|
||||
|
||||
STRING F_COM 4
|
||||
STRING F_COM 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Comune "
|
||||
FLAGS "U"
|
||||
|
@ -1,3 +1,4 @@
|
||||
// DEFINIZIONE MASCHERA, DELLO SHEET DELLE RIGHE EFFETTO, PER LA GESTIONE EFFETTI
|
||||
#include "ef0100.h"
|
||||
|
||||
PAGE "Righe Effetto" -1 -1 76 13
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include "ef0101.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////
|
||||
// Definizione dei metodi della classe TEffetto //
|
||||
////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
// costruttore di default
|
||||
TEffetto::TEffetto()
|
||||
@ -18,14 +18,14 @@ TEffetto::TEffetto(TRectype& rec)
|
||||
read(f,rec);
|
||||
}
|
||||
|
||||
// setta i campi per la prima chiave (nprogtr) del file degli effetti
|
||||
// setta i campi per la prima chiave (nprogtr)
|
||||
void TEffetto::put_key(TRectype& rec, long numeff) const
|
||||
{
|
||||
CHECKD(numeff >= 0, "Numero effetto non valido ", numeff);
|
||||
rec.put(EFF_NPROGTR, numeff);
|
||||
}
|
||||
|
||||
// setta i campi per la quarta chiave (tipodist+ndist+nrigadist) del file degli effetti
|
||||
// setta i campi per la quarta chiave (tipodist+ndist+nrigadist)
|
||||
void TEffetto::put_key(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
||||
{
|
||||
CHECK(tipodist == 'I' || tipodist == 'S' || tipodist == 'B' || tipodist == 0, "Tipo distinta");
|
||||
@ -36,7 +36,7 @@ void TEffetto::put_key(TRectype& rec,char tipodist, long ndist, long nrigadist)
|
||||
rec.put(EFF_NRIGADIST, nrigadist);
|
||||
}
|
||||
|
||||
// ritorna la prossima chiave utilizzabile (il prossimo numero progressivo)
|
||||
// ritorna la prossima chiave utilizzabile
|
||||
long TEffetto::get_next_key(const long codcf) const
|
||||
{
|
||||
static long n = 0;
|
||||
@ -81,17 +81,21 @@ int TEffetto::next(TBaseisamfile& f)
|
||||
return err;
|
||||
}
|
||||
|
||||
// permette di leggere il record passato nel file passato, comune alla lettura per chiave 1 e per chiave 4
|
||||
// permette di leggere il record passato nel file passato, comune alla
|
||||
// lettura per chiave 1 e per chiave 4
|
||||
int TEffetto::leggi(TLocalisamfile &f, const TRectype& r)
|
||||
{
|
||||
int err = TRectype::read(f);
|
||||
const long nu = numero();
|
||||
TRectype *k_reff = new TRectype(LF_REFFETTI),// necessari per poter andare a leggere i due record array
|
||||
*k_cess = new TRectype(LF_CESS); // cessionari e righe effetto
|
||||
put_key(*k_reff, nu); // setto la chiave per poter leggere dai due
|
||||
put_key(*k_cess, nu); // record array
|
||||
// necessari per poter andare a leggere i due record array
|
||||
// cessionari e righe effetto
|
||||
TRectype *k_reff = new TRectype(LF_REFFETTI),
|
||||
*k_cess = new TRectype(LF_CESS);
|
||||
// setto la chiave per poter leggere dai due record array
|
||||
put_key(*k_reff, nu);
|
||||
put_key(*k_cess, nu);
|
||||
if (err == NOERR)
|
||||
{ // leggo dai record array
|
||||
{ // leggo dai record array
|
||||
_righe.read(k_reff);
|
||||
_cess.read(k_cess);
|
||||
}
|
||||
@ -132,10 +136,10 @@ int TEffetto::read(TLocalisamfile& f, char tipodist, long ndist, long nrigadist)
|
||||
// scrive l'effetto, usando la chiave 1
|
||||
int TEffetto::write(TLocalisamfile& f, bool force)
|
||||
{
|
||||
const bool nuovo = numero() <= 0; // E' nuovo!
|
||||
if (nuovo && force) // quindi ...
|
||||
force = FALSE; // ... non fare la rewrite
|
||||
f.setkey(1); // per evitare problemi in quanto la chiave 4 e' duplicabile
|
||||
const bool nuovo = numero() <= 0; // E' nuovo!
|
||||
if (nuovo && force) // quindi ...
|
||||
force = FALSE; // ... non fare la rewrite
|
||||
f.setkey(1);
|
||||
int err = NOERR;
|
||||
if (force)
|
||||
{
|
||||
@ -190,10 +194,10 @@ bool TEffetto::fatt(long num)
|
||||
TLocalisamfile righe_eff(LF_REFFETTI);
|
||||
righe_eff.put(REFF_NPROGTR, num);
|
||||
righe_eff.read();
|
||||
TString16 n = righe_eff.get(REFF_NFATT);// prende il numero fattura della prima riga
|
||||
int items = rows_r(); // prende il numero delle righe dell'effetto
|
||||
bool condition = (items == 1); // se la fattura ha una sola riga farà riferimento ad una sola fattura
|
||||
// se invece ha più righe sarà raggruppato
|
||||
// prende il numero delle righe dell'effetto
|
||||
// ovvero di fatture a cui fa riferimento
|
||||
int items = rows_r();
|
||||
bool condition = (items == 1);
|
||||
return condition;
|
||||
}
|
||||
|
||||
@ -214,7 +218,7 @@ TToken_string* TEffetto::dati_fatt(long num)
|
||||
dati->add(righe_eff.get(REFF_NFATT));//prende il numero
|
||||
dati->add(righe_eff.get(REFF_DATAFATT));//prende la data
|
||||
dati->add(righe_eff.get(REFF_IMPFATT));//prende l' importo
|
||||
righe_eff.next(); // passa alla riga successiva
|
||||
righe_eff.next();// passa alla riga successiva
|
||||
}
|
||||
return dati;
|
||||
}
|
||||
|
10
ef/ef0101.h
10
ef/ef0101.h
@ -1,3 +1,6 @@
|
||||
#ifndef __EF0101_H
|
||||
#define __EF0101_H
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
@ -11,10 +14,9 @@
|
||||
#include <reffetti.h>
|
||||
#include <cession.h>
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
// Definizione dell'oggetto Effetto con la classe TEffetto//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
class TEffetto:public TRectype
|
||||
{
|
||||
TRecord_array _righe;// righe dell'effetto
|
||||
@ -92,3 +94,5 @@ public:
|
||||
// distruttore di default
|
||||
virtual ~TEffetto() {}
|
||||
};
|
||||
|
||||
#endif//__EF0101_H
|
46
ef/ef0200.h
46
ef/ef0200.h
@ -1,31 +1,31 @@
|
||||
#ifndef __EF0200_H
|
||||
#define __EF0200_H
|
||||
|
||||
// campi maschera ef0200a.msk
|
||||
// campi maschera ef0200a
|
||||
|
||||
#define F_CODCF 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_INDIRIZZO 103
|
||||
#define F_COMUNE 104
|
||||
#define F_PROV 105
|
||||
#define F_CODABI 106
|
||||
#define F_CODCAB 107
|
||||
#define F_TIPOEFF 108
|
||||
#define F_ADDEBITO 109
|
||||
#define F_ADDSPINC 110
|
||||
#define F_ADDBOLLITR 111
|
||||
#define F_ADDBOLLIRB 112
|
||||
#define F_ADDBNS1500 113
|
||||
#define F_RESIDUO 114
|
||||
#define F_SHEET_EFF 115
|
||||
#define F_CODCF 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_INDIRIZZO 103
|
||||
#define F_COMUNE 104
|
||||
#define F_PROV 105
|
||||
#define F_CODABI 106
|
||||
#define F_CODCAB 107
|
||||
#define F_TIPOEFF 108
|
||||
#define F_ADDEBITO 109
|
||||
#define F_ADDSPINC 110
|
||||
#define F_ADDBOLLITR 111
|
||||
#define F_ADDBOLLIRB 112
|
||||
#define F_ADDBNS1500 113
|
||||
#define F_RESIDUO 114
|
||||
#define F_SHEET_EFF 115
|
||||
|
||||
#define DLG_PARTITE 201
|
||||
#define DLG_PARTITE 201
|
||||
|
||||
// campi per maschera ef0200b
|
||||
#define F_DATASCAD 101
|
||||
#define F_RATA 102
|
||||
#define F_SPESE 103
|
||||
#define F_BOLLI 104
|
||||
#define F_IMPEFF 105
|
||||
// campi per maschera ef0200b
|
||||
#define F_DATASCAD 101
|
||||
#define F_RATA 102
|
||||
#define F_SPESE 103
|
||||
#define F_BOLLI 104
|
||||
#define F_IMPEFF 105
|
||||
|
||||
#endif // __EF0200_H
|
||||
|
362
ef/ef0300.cpp
362
ef/ef0300.cpp
@ -8,10 +8,10 @@
|
||||
#include "ef0300.h"
|
||||
#include "ef0301.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//Classe per la gestione di distinte (inserimento, modifica, cancellazione) //
|
||||
// e per la creazione automatica di distinte per importi. //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// e per la creazione automatica di distinte per importi. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
class TVariazione_distinte: public TRelation_application
|
||||
{
|
||||
TMask *_msk, *_m2;
|
||||
@ -62,8 +62,8 @@ public:
|
||||
// restituisce un riferimento all' applicazione
|
||||
inline TVariazione_distinte& app(){ return (TVariazione_distinte&)main_app(); }
|
||||
|
||||
// quando si va in query mode abilita i campi relativi alla chiave di ricerca e resetta i campi
|
||||
// relativi ai totali
|
||||
// quando si va in query mode abilita i campi relativi alla chiave
|
||||
// di ricerca e resetta i campi relativi ai totali
|
||||
void TVariazione_distinte::init_query_mode(TMask&)
|
||||
{
|
||||
_msk->enable(F_NUMBER);
|
||||
@ -72,8 +72,9 @@ void TVariazione_distinte::init_query_mode(TMask&)
|
||||
_msk->reset(F_TOTIMPVAL);
|
||||
}
|
||||
|
||||
// quando si va in insert mode resetta i campi della maschera relativi ai totali,
|
||||
// abilita i campi relativi alla valuta e disabilta i campi relativi alla chiave di ricerca
|
||||
// quando si va in insert mode resetta i campi della maschera relativi
|
||||
// ai totali, abilita i campi relativi alla valuta e disabilta i campi
|
||||
// relativi alla chiave di ricerca
|
||||
void TVariazione_distinte::init_insert_mode(TMask&)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
@ -84,7 +85,8 @@ void TVariazione_distinte::init_insert_mode(TMask&)
|
||||
_msk->disable(F_TIPODIST);
|
||||
}
|
||||
|
||||
// quando si va in modify mode disabilta i campi relativi alla chiave di ricerca
|
||||
// quando si va in modify mode disabilta i campi relativi alla chiave
|
||||
// di ricerca
|
||||
void TVariazione_distinte::init_modify_mode(TMask&)
|
||||
{
|
||||
_msk->disable(F_NUMBER);
|
||||
@ -94,32 +96,35 @@ void TVariazione_distinte::init_modify_mode(TMask&)
|
||||
// ritorna il prossimo numero di distanta valido
|
||||
const char* TVariazione_distinte::get_next_key()
|
||||
{
|
||||
long ndist = 1L; // per posizionarmi
|
||||
char tipodist = 'B'; // all'inizo del file con chiave 4
|
||||
long ndist = 1L;
|
||||
char tipodist = 'B';
|
||||
TLocalisamfile& effetti = _rel->lfile();
|
||||
effetti.first(); // mi posiziono all'inizio del file
|
||||
effetti.first();// mi posiziono all'inizio del file
|
||||
effetti.put(EFF_TIPODIST,tipodist);
|
||||
effetti.put(EFF_NDIST,ndist);
|
||||
effetti.setkey(4);
|
||||
int err = effetti.read(_isgteq);
|
||||
if ( (err == _iskeynotfound) || (err == _iseof) ) //se non esiste alcuna distinta:
|
||||
{ // il numero sarà 1
|
||||
|
||||
if ( (err == _iskeynotfound) || (err == _iseof) )
|
||||
{ //se non esiste alcuna distinta: il numero sarà 1
|
||||
err == NOERR;
|
||||
return format("%d|%ld", F_NUMBER, ndist);
|
||||
}
|
||||
while (err == NOERR) //se esitono già delle distinte:
|
||||
{ // le leggo tutte e ne prendo il
|
||||
long n = effetti.get_long(EFF_NDIST);// numero, al verificarsi della fine file
|
||||
// ho l'ultimo numero utilizzato
|
||||
if (n > ndist) // incrementandolo avrò il numero che cercavo.
|
||||
while (err == NOERR)
|
||||
{ // se esitono già delle distinte:
|
||||
// le leggo tutte e ne prendo il numero
|
||||
long n = effetti.get_long(EFF_NDIST);
|
||||
// lo confronto con i numero maggiore che ho letto
|
||||
if (n > ndist)
|
||||
ndist = n;
|
||||
effetti.setkey(4);
|
||||
err = effetti.next();
|
||||
}
|
||||
return format("%d|%ld",F_NUMBER,++ndist); // ritorna una stringa costruita utilizzando il numero della distinta
|
||||
return format("%d|%ld",F_NUMBER,++ndist);
|
||||
}
|
||||
|
||||
// ritorna un riferimento allo sheet degli effetti (righe) nella distinta
|
||||
// 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);
|
||||
@ -133,52 +138,54 @@ TSheet_field& TVariazione_distinte::righe_sel_sheet() const
|
||||
return r_sheet;
|
||||
}
|
||||
|
||||
// ritorna TRUE se trovo nell'array delle righe distinta l'effetto passato
|
||||
// ritorna TRUE se trovo nell'array delle righe distinta l'effetto
|
||||
// passato
|
||||
bool TVariazione_distinte::cerca(long num)
|
||||
{
|
||||
bool trovato = FALSE;
|
||||
int items = _distinta->items();
|
||||
TArray& righedist = _distinta->righe();
|
||||
for (int i = 0; i < items; i++) // ciclo sugli elementi dell'array
|
||||
{ // se l'array è vuoto non trova nulla ed esce subito
|
||||
for (int i = 0; i < items; i++)// ciclo sugli elementi dell'array
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
long num_eff = eff.get_long(EFF_NPROGTR);
|
||||
if (num_eff == num)
|
||||
{
|
||||
trovato = TRUE;
|
||||
break; // esco quando ho già trovato l'effetto che cercavo
|
||||
break;// esco quando ho già trovato l'effetto che cercavo
|
||||
}
|
||||
}
|
||||
return trovato;
|
||||
}
|
||||
|
||||
// metodo che permette di scivere sull'array (in memoria) gli effetti presenti nello sheet
|
||||
// metodo che permette di scivere sull'array (in memoria) gli
|
||||
// effetti presenti nello sheet
|
||||
void TVariazione_distinte::aggiorna()
|
||||
{
|
||||
TSheet_field& shrighe = righe_sheet();
|
||||
int items = shrighe.items();
|
||||
for (int i = 0; i < items; i++) // prendo tutte le righe dello sheet
|
||||
for (int i = 0; i < items; i++)// prendo tutte le righe dello sheet
|
||||
{
|
||||
TToken_string& row = shrighe.row(i);
|
||||
row.restart();
|
||||
long num = row.get_long(1);
|
||||
if (!cerca(num)) // se non è già presente in memoria
|
||||
{ // carico l'effetto nell'array
|
||||
if (!cerca(num))// se non è già presente in memoria
|
||||
{ // carico l'effetto nell'array
|
||||
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);// istanzio un puntatore all'effetto utilizzando il record corrente del file
|
||||
TEffetto* effetto= new TEffetto(rec);
|
||||
TArray& righedist = _distinta->righe();
|
||||
righedist.add(effetto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Metodo che permette di prendere i dati dalla maschera e metterli in una TToken_string
|
||||
//che servirà per passarli alla write della distinta
|
||||
// Metodo che permette di prendere i dati dalla maschera e metterli in
|
||||
// una TToken_string che servirà per passarli alla write della distinta
|
||||
TToken_string* TVariazione_distinte::common_f(const TMask& m)
|
||||
{
|
||||
char tipodist = m.get(F_TIPODIST)[0];// prendo i dati
|
||||
@ -191,8 +198,8 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m)
|
||||
|
||||
TToken_string* datidist= new TToken_string; // creo la token string
|
||||
datidist->cut(0);
|
||||
datidist->add(tipodist); // inserisco i dati nella
|
||||
datidist->add(ndist); // token string
|
||||
datidist->add(tipodist); // inserisco i dati nella
|
||||
datidist->add(ndist); // token string
|
||||
datidist->add(datadist);
|
||||
datidist->add(codabi);
|
||||
datidist->add(codcab);
|
||||
@ -206,47 +213,49 @@ int TVariazione_distinte::read(TMask& m)
|
||||
int err = _rel->status();
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
||||
err = _distinta->read(_rel->curr()); // legge la distinta dal record corrente della relazione
|
||||
//resetto l'array che contiene gli effetti nella distinta
|
||||
err = _distinta->reset();
|
||||
// legge la distinta dal record corrente della relazione
|
||||
err = _distinta->read(_rel->curr());
|
||||
if (err == NOERR)
|
||||
{
|
||||
TToken_string riga(80);
|
||||
TSheet_field& shrighe = righe_sheet();
|
||||
shrighe.reset();
|
||||
int items = _distinta->items(); // prendo il numero di effetti nella distinta
|
||||
// prendo il numero di effetti nella distinta
|
||||
int items = _distinta->items();
|
||||
TArray& righedist = _distinta->righe();
|
||||
// carico tutti gli effetti della distinta nello sheet
|
||||
// carico tutti gli effetti della distinta nello sheet
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];// prendo l'effetto dall'array
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[i];
|
||||
riga.cut(0);
|
||||
riga.add(' ');
|
||||
const long numero = eff.get_long(EFF_NPROGTR);
|
||||
riga.add(numero);
|
||||
riga.add(eff.get(EFF_DATASCAD));
|
||||
|
||||
long codcf = eff.get_long(EFF_CODCF); //prendo la ragione sociale del cliente
|
||||
_clifo->zero(); //conoscendone il codice
|
||||
//prendo la ragione sociale del cliente conoscendone il codice
|
||||
long codcf = eff.get_long(EFF_CODCF);
|
||||
_clifo->zero();
|
||||
_clifo->put(CLI_TIPOCF , 'C');
|
||||
_clifo->put(CLI_CODCF, codcf);
|
||||
if (_clifo->read() == NOERR) riga.add(_clifo->get(CLI_RAGSOC));
|
||||
|
||||
if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
|
||||
else riga.add(("Varie"));
|
||||
}
|
||||
else //se l'effetto contiene più di una fattura non metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
}
|
||||
|
||||
TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta
|
||||
//gestisco il controllo sulla presenza o meno di una valuta
|
||||
TString codval(3);
|
||||
codval = eff.get(EFF_CODVAL);
|
||||
if (i == 0)
|
||||
{
|
||||
@ -257,7 +266,6 @@ int TVariazione_distinte::read(TMask& m)
|
||||
m.set(F_CODVAL, codval);
|
||||
}
|
||||
riga.add(codval);
|
||||
|
||||
riga.add(eff.get(EFF_IMPORTO));
|
||||
riga.add(eff.get(EFF_IMPORTOVAL));
|
||||
shrighe.row(i) = riga;
|
||||
@ -267,9 +275,10 @@ int TVariazione_distinte::read(TMask& m)
|
||||
return err;
|
||||
}
|
||||
|
||||
//Si prendono tutte le righe dello sheet e si controlla il primo campo se e' a true si distrugge
|
||||
// la riga e si aggiorna il file.
|
||||
// GLI EFFETTI PRESENTI NELLO SHEET DEVONO GIA ESSERE STATI REGISTRATI NEL FILE.
|
||||
// Si prendono tutte le righe dello sheet e si controlla il primo campo
|
||||
// se e' a true si distrugge la riga e si aggiorna il file.
|
||||
// GLI EFFETTI PRESENTI NELLO SHEET DEVONO GIA ESSERE STATI REGISTRATI
|
||||
// NEL FILE.
|
||||
void TVariazione_distinte::elimina()
|
||||
{
|
||||
TEffetto eff;
|
||||
@ -280,11 +289,14 @@ void TVariazione_distinte::elimina()
|
||||
TSheet_field& sf = (TSheet_field&)_msk->field(F_SHEET_RIBA);
|
||||
bool condition = FALSE, deleted = FALSE;
|
||||
TArray& righedist = distinta->righe();
|
||||
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 (sf.items() == 1) // non posso cancellare l'effetto se è l'unico della distinta
|
||||
{
|
||||
//ciclo sugli elementi dello sheet
|
||||
for (int i = 0, k = i+1; i < sf.items(); i++, k++)
|
||||
{
|
||||
// per posizionarsi correttamente sulla prima riga dello sheet
|
||||
// se ci sono state già delle cancellazioni
|
||||
if (deleted) i--;
|
||||
if (sf.items() == 1)
|
||||
{ // non posso cancellare l'effetto se è l'unico della distinta
|
||||
error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
|
||||
break;
|
||||
}
|
||||
@ -293,17 +305,20 @@ void TVariazione_distinte::elimina()
|
||||
if (condition)
|
||||
{
|
||||
long num = row.get_long(1);
|
||||
for (int j = 0; j < distinta->items(); j++) //ciclo sugli elementi dell'array
|
||||
//ciclo sugli elementi dell'array
|
||||
for (int j = 0; j < distinta->items(); j++)
|
||||
{
|
||||
TEffetto& eff = (TEffetto&)righedist[j];
|
||||
long num_eff = eff.get_long(EFF_NPROGTR);
|
||||
if (num_eff == num)
|
||||
{
|
||||
righedist.destroy(j,TRUE); // tolgo l'effetto dall'array
|
||||
// tolgo l'effetto dall'array
|
||||
righedist.destroy(j,TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sf.destroy(i); deleted = TRUE; // tolgo l'effetto dallo sheet
|
||||
// tolgo l'effetto dallo sheet
|
||||
sf.destroy(i); deleted = TRUE;
|
||||
eff.read(file, tipodist, ndist, k);
|
||||
eff.zero(EFF_TIPODIST);
|
||||
eff.zero(EFF_NDIST);
|
||||
@ -320,24 +335,27 @@ void TVariazione_distinte::elimina()
|
||||
// riscrive distinta
|
||||
int TVariazione_distinte::rewrite(const TMask& m)
|
||||
{
|
||||
TSheet_field& sf = righe_sheet(); // prima di riscrive controllo se ci sono effetti nello sheet selezionati per l'eliminazione
|
||||
bool condition = FALSE;
|
||||
// prima di riscrive controllo se ci sono effetti nello sheet
|
||||
// selezionati per l'eliminazione
|
||||
TSheet_field& sf = righe_sheet();
|
||||
bool condition = FALSE;
|
||||
for (int i = 0; i < sf.items(); i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
if (condition = *row.get(0) == 'X') break; // se trovo un effetto selezionato esco dal ciclo
|
||||
// se trovo un effetto selezionato esco dal ciclo
|
||||
if (condition = *row.get(0) == 'X') break;
|
||||
}
|
||||
if (condition) // solo se ho trovato effetti selezionati
|
||||
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
||||
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
|
||||
char tipodist = m.get(F_TIPODIST)[0]; // procedo con la riscrittura
|
||||
if (condition)
|
||||
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
|
||||
elimina();
|
||||
//resetto l'array che contiene gli effetti nella distinta
|
||||
int err = _distinta->reset();
|
||||
char tipodist = m.get(F_TIPODIST)[0];
|
||||
long ndist = m.get_long(F_NUMBER);
|
||||
aggiorna(); // aggiorno l'array
|
||||
aggiorna();
|
||||
err = _distinta->rewrite(common_f(m));
|
||||
|
||||
if (err == NOERR) // riposiziono la relazione
|
||||
{
|
||||
if (err == NOERR)
|
||||
{ // riposiziono la relazione
|
||||
_rel->lfile().setkey(4);
|
||||
TRectype& curr = _rel->curr();
|
||||
curr.put(EFF_TIPODIST, tipodist);
|
||||
@ -351,14 +369,14 @@ int TVariazione_distinte::rewrite(const TMask& m)
|
||||
// scrive distinta
|
||||
int TVariazione_distinte::write(const TMask& m)
|
||||
{
|
||||
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
|
||||
//resetto l'array che contiene gli effetti nella distinta
|
||||
int err = _distinta->reset();
|
||||
char tipodist = m.get(F_TIPODIST)[0];
|
||||
long ndist = m.get_long(F_NUMBER);
|
||||
aggiorna(); // aggiorno l'array
|
||||
aggiorna();
|
||||
err = _distinta->write(TRUE, common_f(m));
|
||||
//riposiziono la relazione
|
||||
if (err == NOERR)
|
||||
{
|
||||
{ //riposiziono la relazione
|
||||
_rel->lfile().setkey(4);
|
||||
TRectype& curr = _rel->curr();
|
||||
curr.put(EFF_TIPODIST, tipodist);
|
||||
@ -369,8 +387,9 @@ int TVariazione_distinte::write(const TMask& m)
|
||||
return err;
|
||||
}
|
||||
|
||||
//Metodo che permette di eliminare una distinta, l'eliminazione consiste nell'andare a togliere
|
||||
// dagli effetti i dati ad essa relativi.
|
||||
// Metodo che permette di eliminare una distinta, l'eliminazione
|
||||
// consiste nell'andare a togliere dagli effetti i dati ad essa
|
||||
// relativi.
|
||||
bool TVariazione_distinte::remove()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
@ -390,7 +409,7 @@ bool TVariazione_distinte::user_create()
|
||||
_cession = new TLocalisamfile(LF_CESS);
|
||||
_clifo = new TLocalisamfile(LF_CLIFO);
|
||||
_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_IMP, importo_handler);
|
||||
_m2->set_handler(F_TOTIMPDIST, imp_aut_handler);
|
||||
@ -417,19 +436,22 @@ bool TVariazione_distinte::user_destroy()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Permette di caricare lo sheet per la selezione delle riba da aggiungere alla distinta:
|
||||
// vengono presi tutti gli effetti sul file LF_EFFETTI che non hanno ancora un riferimento ad
|
||||
// una distinta; inoltre è possibile inserire nella distinta effetti aventi lo stesso tipo di pagamento.
|
||||
// Permette di caricare lo sheet per la selezione delle riba da
|
||||
// aggiungere alla distinta: vengono presi tutti gli effetti sul file
|
||||
// LF_EFFETTI che non hanno ancora un riferimento ad una distinta;
|
||||
// inoltre è possibile inserire nella distinta effetti aventi lo stesso
|
||||
// tipo di pagamento.
|
||||
void TVariazione_distinte::carica_riba(int tipopag)
|
||||
{
|
||||
// deve caricare solo quegli effetti che non hanno riferimento alla distinta
|
||||
// quindi setta i campi ad essa relativi a zero
|
||||
// deve caricare solo quegli effetti che non hanno riferimento alla
|
||||
// distinta quindi setta i campi ad essa relativi a zero
|
||||
char tipodist = 0;
|
||||
long ndist = 0;
|
||||
long nrigadist = 0;
|
||||
TEffetto eff;
|
||||
TLocalisamfile f(LF_EFFETTI);
|
||||
TLocalisamfile * clifo = app()._clifo;// per prendere la ragione sociale del cliente di cui ho il codice
|
||||
// per prendere la ragione sociale del cliente di cui ho il codice
|
||||
TLocalisamfile * clifo = app()._clifo;
|
||||
TToken_string riga(80);
|
||||
TMask* m2 = app()._m2;
|
||||
m2->reset();
|
||||
@ -439,12 +461,13 @@ void TVariazione_distinte::carica_riba(int tipopag)
|
||||
err = eff.read(f, tipodist, ndist, nrigadist);
|
||||
int tipop = eff.get_int(EFF_TIPOPAG);
|
||||
while ( (err == NOERR) && (tipodist == 0))
|
||||
{ //carico tutti gli effetti, che soddisfano alla condizione, nello sheet
|
||||
{
|
||||
bool condition = (tipopag == tipop);
|
||||
// se effetti di tipo cambiario (pagherò, tratta, tratta accettata)
|
||||
if (tipopag == 2 || tipopag ==5 || tipopag == 7)
|
||||
condition = (tipop == 2 || tipop ==5 || tipop == 7);
|
||||
// se non indico un tipo di effetto prendo il tipo del primo che seleziono
|
||||
// se non indico un tipo di effetto prendo il tipo del primo che
|
||||
// seleziono
|
||||
if (tipopag == 0) condition =TRUE;
|
||||
if (condition)
|
||||
{
|
||||
@ -458,16 +481,16 @@ void TVariazione_distinte::carica_riba(int tipopag)
|
||||
clifo->put(CLI_TIPOCF, 'C');
|
||||
clifo->put(CLI_CODCF, codcf);
|
||||
if (clifo->read() == NOERR) riga.add(clifo->get(CLI_RAGSOC));
|
||||
if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
if (eff.fatt(numero))// se l'effetto contiene solo una fattura
|
||||
{ // metto i riferimenti al documento ed al numero di rata
|
||||
const TRectype& rec_r = eff.row_r(1);
|
||||
riga.add(rec_r.get(REFF_NFATT));
|
||||
riga.add(rec_r.get(REFF_DATAFATT));
|
||||
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
|
||||
else riga.add(("Varie"));
|
||||
}
|
||||
else //se l'effetto contiene più di una fattura non metto i
|
||||
{ //riferimenti al documento ed al numero di rata
|
||||
else// se l'effetto contiene più di una fattura
|
||||
{ // non metto i riferimenti al documento ed al numero di rata
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
riga.add(("Varie"));
|
||||
@ -479,15 +502,16 @@ void TVariazione_distinte::carica_riba(int tipopag)
|
||||
i++;
|
||||
}
|
||||
f.setkey(4);
|
||||
err = eff.next(f); //leggo l'effetto successivo e ne prendo il tipodistinta per il controllo
|
||||
tipodist = eff.get(EFF_TIPODIST)[0];// della condizione del ciclo di caricamento
|
||||
if (tipopag == 0) tipopag = tipop; // non avendo indicato un tipo di effetto prendo quello del primo
|
||||
err = eff.next(f);//leggo l'effetto successivo
|
||||
tipodist = eff.get(EFF_TIPODIST)[0];// e ne prendo il tipo distinta
|
||||
if (tipopag == 0)
|
||||
tipopag = tipop;
|
||||
tipop = eff.get_int(EFF_TIPOPAG);
|
||||
}
|
||||
}
|
||||
|
||||
//Handler che permette il controllo sulla abilitazione dei campi collegati
|
||||
// al codice valuta
|
||||
// Handler che permette il controllo sulla abilitazione dei campi
|
||||
// collegati al codice valuta
|
||||
bool TVariazione_distinte::codval_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
@ -502,8 +526,9 @@ bool TVariazione_distinte::codval_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire il caricamento degli effetti nella distinta in automatico
|
||||
// relativamente ad un importo fissato (per la maschera princiapale)
|
||||
// Handler per gestire il caricamento degli effetti nella distinta
|
||||
// in automatico relativamente ad un importo fissato (per la maschera
|
||||
// princiapale)
|
||||
bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
@ -518,8 +543,9 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||
long imp = m.get_long(F_IMP);// importo distinta
|
||||
long impdist = imp - imp_pres;
|
||||
int tipopag = m.get_int(F_TIPOPAG);
|
||||
// se importo distinta maggiore importo presentato si devono andare a caricare effetti in ...
|
||||
// ... automatico per un valore minore uguale alla differenza dei suddetti importi
|
||||
// se importo distinta maggiore importo presentato si devono andare a
|
||||
// caricare effetti in automatico per un valore minore uguale alla
|
||||
// differenza dei suddetti importi
|
||||
if (impdist > 0)
|
||||
{
|
||||
app().begin_wait();
|
||||
@ -538,64 +564,73 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire il caricamento degli effetti nella distinta in automatico
|
||||
// relativamente ad un importo fissato (per la maschera secondaria)
|
||||
// Handler per gestire il caricamento degli effetti nella distinta in
|
||||
// automatico relativamente ad un importo fissato (per la maschera
|
||||
// secondaria)
|
||||
bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m2 = f.mask();
|
||||
// se quando si entra nell maschera il campo contiene un valore significa che si deve procedere
|
||||
// con il caricamento automatico di effetti per l'importo iscritto nel campo
|
||||
// se quando si entra nell maschera il campo contiene un valore
|
||||
// significa che si deve procedere con il caricamento automatico
|
||||
// di effetti per l'importo iscritto nel campo
|
||||
if (f.to_check(k, TRUE))
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
TSheet_field& sf = (TSheet_field&)m2.field(F_SHEET);
|
||||
TSheet_field& sf_riba = (TSheet_field&)m->field(F_SHEET_RIBA);
|
||||
long impdist = m->get_long(F_IMP) - m->get_long(F_TOTIMP);// prendo l'importo da caricare
|
||||
long tot_imp_dist = m2.get_long(F_TOTIMPDIST), // prendo l'importo iscritto nel campo
|
||||
long impdist = m->get_long(F_IMP) - m->get_long(F_TOTIMP);
|
||||
long tot_imp_dist = m2.get_long(F_TOTIMPDIST),
|
||||
impsel = 0;
|
||||
if (tot_imp_dist != 0 && impdist != 0)// se i due importi sono diversi da zero
|
||||
{
|
||||
if (tot_imp_dist != 0 && impdist != 0)
|
||||
{ // se i due importi sono diversi da zero
|
||||
TString val = m->get(F_CODVAL);
|
||||
int items = sf.items();
|
||||
// cerca se esiste un effetto con importo uguale a quello da caricare
|
||||
// cerca se esiste un effetto con importo uguale a quello
|
||||
// da caricare
|
||||
bool caricato = FALSE;
|
||||
for(int i = 0; i < items && !caricato; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
TString codval = row.get(7);
|
||||
if (codval == " " || codval == "LIT")//se la valuta non appare o è lire
|
||||
codval.trim(); //faccio in modo che vengano presi gli effetti con valuta inesistente
|
||||
// se la valuta non appare o è lire faccio in modo che vengano
|
||||
// presi gli effetti con valuta inesistente
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.trim();
|
||||
long imp = row.get_long(8);
|
||||
if (imp == tot_imp_dist && codval == val)
|
||||
{
|
||||
row.add('X',0);//seleziono l'effetto poichè soddisfa alle condizione richieste
|
||||
row.add('X',0);
|
||||
impsel += imp;
|
||||
caricato = TRUE;
|
||||
}
|
||||
}
|
||||
// se non esiste carico l'importo sommando più effetti
|
||||
// se non esiste un effetto con importo uguale a quello
|
||||
// da caricare carico l'importo sommando più effetti
|
||||
if (!caricato)
|
||||
{
|
||||
for(int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
TString codval = row.get(7);
|
||||
if (codval == " " || codval == "LIT")//se la valuta non appare o è lire
|
||||
codval.trim(); //faccio in modo che vengano presi gli effetti con valuta inesistente
|
||||
// se la valuta non appare o è lire faccio in modo che
|
||||
// vengano presi gli effetti con valuta inesistente
|
||||
if (codval == " " || codval == "LIT")
|
||||
codval.trim();
|
||||
long imp = row.get_long(8);
|
||||
// se l'importo, della riga corrente dello sheet, è minore dell 'importo che si deve caricare e
|
||||
// se lo rimane anche sommato all'importo già selezionato, si procede a rendere la riga selezionata
|
||||
// per il caricamento
|
||||
// se l'importo, della riga corrente dello sheet, è minore
|
||||
// dell 'importo che si deve caricare e se lo rimane anche
|
||||
// sommato all'importo già selezionato, si procede a rendere
|
||||
// la riga selezionata per il caricamento
|
||||
if ((imp <= tot_imp_dist) && ((impsel+imp) <= tot_imp_dist))
|
||||
{
|
||||
if ((sf_riba.items() == 0) && (val.empty()|| val == "LIT"))//se non è stata specificata una valuta si prende quella del
|
||||
{ //primo effetto che si carica nella distinta
|
||||
{ //primo effetto che si carica nella distinta
|
||||
m->set(F_CODVAL, codval);
|
||||
val = m->get(F_CODVAL);
|
||||
}
|
||||
if (codval == val)
|
||||
{
|
||||
row.add('X',0);//seleziono l'effetto poichè soddisfa alle condizione richieste
|
||||
row.add('X',0);
|
||||
impsel += imp;
|
||||
}
|
||||
}
|
||||
@ -610,8 +645,8 @@ bool TVariazione_distinte::imp_aut_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire la pressione del bottone conferma della maschera per l'aggiunta delle
|
||||
// riba (ef0300c)
|
||||
// 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)
|
||||
{
|
||||
TMask* msk = app()._msk;
|
||||
@ -620,8 +655,8 @@ bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
m.close(); // chiudo la maschera secondaria
|
||||
// scarico tutte le righe, selezionate, dello sheet della maschera secondaria nello sheet della
|
||||
// maschera primaria della relap (ef0300a)
|
||||
// scarico tutte le righe, selezionate, dello sheet della maschera
|
||||
// secondaria nello sheet della maschera primaria della relap (ef0300a)
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||
int items = sf.items();
|
||||
bool condition = FALSE;
|
||||
@ -641,8 +676,8 @@ bool TVariazione_distinte::conferma_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire la pressione del bottone annulla della maschera per l'aggiunta delle riba
|
||||
// (ef0300c)
|
||||
// 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();
|
||||
@ -650,7 +685,8 @@ bool TVariazione_distinte::annulla_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire la scelta per data ,nella maschera di scelta delle riba (ef0300c)
|
||||
// Handler per gestire la scelta per data, nella maschera di scelta
|
||||
// delle riba (ef0300c)
|
||||
bool TVariazione_distinte::from_data_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
@ -661,7 +697,8 @@ bool TVariazione_distinte::from_data_handler(TMask_field& f, KEY k)
|
||||
bool deleted = FALSE;
|
||||
TDate data = m.get_date(F_DADATA);
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||
// tolgo dallo sheet gli effetti che hanno una data minore a quella indicata nel campo della maschera
|
||||
// tolgo dallo sheet gli effetti che hanno una data minore a quella
|
||||
// indicata nel campo della maschera
|
||||
for(int i = 0; i < sf.items(); i++)
|
||||
{
|
||||
if (deleted) i--;
|
||||
@ -679,7 +716,8 @@ bool TVariazione_distinte::from_data_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire la scelta per data, nella maschera di scelta delle riba (ef0300c)
|
||||
// Handler per gestire la scelta per data, nella maschera di scelta
|
||||
// delle riba (ef0300c)
|
||||
bool TVariazione_distinte::to_data_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB)
|
||||
@ -690,7 +728,8 @@ bool TVariazione_distinte::to_data_handler(TMask_field& f, KEY k)
|
||||
bool deleted = FALSE;
|
||||
TDate data = m.get_date(F_ADATA);
|
||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||
// tolgo dallo sheet gli effetti che hanno una data maggiore a quella indicata nel campo della maschera
|
||||
// tolgo dallo sheet gli effetti che hanno una data maggiore a quella
|
||||
// indicata nel campo della maschera
|
||||
for(int i = 0; i < sf.items(); i++)
|
||||
{
|
||||
if (deleted) i--;
|
||||
@ -708,8 +747,8 @@ bool TVariazione_distinte::to_data_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//COMPARE FUNCTION per l'ordinamento per data degli effetti presenti nello sheet,
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// COMPARE FUNCTION per l'ordinamento per data degli effetti presenti
|
||||
// nello sheet, nella maschera di scelta delle riba (ef0300c)
|
||||
HIDDEN int confronta_data(const TObject** o1, const TObject** o2)
|
||||
{
|
||||
int val;
|
||||
@ -724,21 +763,23 @@ HIDDEN int confronta_data(const TObject** o1, const TObject** o2)
|
||||
return val;
|
||||
}
|
||||
|
||||
//Handler per gestire l'ordinamento per data degli effetti presenti nello sheet,
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// Handler per gestire l'ordinamento per data degli effetti presenti
|
||||
// nello sheet, nella maschera di scelta delle riba (ef0300c)
|
||||
void TVariazione_distinte::ord_data()
|
||||
{
|
||||
TMask* m = app()._m2;
|
||||
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET);
|
||||
TArray& effetti = sf.rows_array();// scarico tutte le righe dello sheet in un array
|
||||
// scarico tutte le righe dello sheet in un array
|
||||
TArray& effetti = sf.rows_array();
|
||||
app().begin_wait();
|
||||
effetti.sort(confronta_data);// faccio l'ordinamento degli elementi dell'array
|
||||
// faccio l'ordinamento degli elementi dell'array
|
||||
effetti.sort(confronta_data);
|
||||
app().end_wait();
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
//COMPARE FUNCTION per l'ordinamento per numero e data fattura degli effetti presenti nello sheet,
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// COMPARE FUNCTION per l'ordinamento per numero e data fattura degli
|
||||
// effetti presenti nello sheet, nella maschera di scelta delle riba
|
||||
HIDDEN int confronta_fatt(const TObject** o1, const TObject** o2)
|
||||
{
|
||||
int val;
|
||||
@ -767,20 +808,22 @@ HIDDEN int confronta_fatt(const TObject** o1, const TObject** o2)
|
||||
}
|
||||
}
|
||||
|
||||
//Handler per gestire l'ordinamento per numero e data fattura degli effetti presenti nello sheet,
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// Handler per gestire l'ordinamento per numero e data fattura degli
|
||||
// effetti presenti nello sheet, nella maschera di scelta delle riba
|
||||
void TVariazione_distinte::ord_fatt()
|
||||
{
|
||||
TMask* m = app()._m2;
|
||||
TSheet_field& sf = (TSheet_field&)m->field(F_SHEET);
|
||||
TArray& effetti = sf.rows_array();// scarico le righe dello sheet in un array
|
||||
// scarico le righe dello sheet in un array
|
||||
TArray& effetti = sf.rows_array();
|
||||
app().begin_wait();
|
||||
effetti.sort(confronta_fatt);// ordino gli elementi dell'array
|
||||
app().end_wait();
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
//Handler per gestire i diversi ordinamenti, nella maschera di scelta delle riba (ef0300c)
|
||||
// Handler per gestire i diversi ordinamenti, nella maschera di scelta
|
||||
// delle riba (ef0300c)
|
||||
bool TVariazione_distinte::ordina_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k, TRUE))
|
||||
@ -794,8 +837,8 @@ bool TVariazione_distinte::ordina_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Metodo che calcola i totali relativi alla distinta (totale in lire e totale in valuta(se presente))
|
||||
// nella maschera principale (ef0300a)
|
||||
// Metodo che calcola i totali relativi alla distinta (totale in
|
||||
// lire e totale in valuta(se presente)) nella maschera principale
|
||||
void TVariazione_distinte::calcola_totale()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
@ -805,8 +848,8 @@ void TVariazione_distinte::calcola_totale()
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
// se l'effetto è selezionato per l'eliminazione tolgo il suo importo dal totale
|
||||
// presentazione della distinta
|
||||
// se l'effetto è selezionato per l'eliminazione tolgo il suo importo
|
||||
// dal totale presentazione della distinta
|
||||
bool condition = *row.get(0) == 'X';
|
||||
if (condition)
|
||||
{
|
||||
@ -815,7 +858,8 @@ void TVariazione_distinte::calcola_totale()
|
||||
impval = row.get(9);
|
||||
impdistval -= impval;
|
||||
}
|
||||
// se l'effetto no è selzionato aggiungo il suo importo al totale presentazione della distinta
|
||||
// se l'effetto no è selzionato aggiungo il suo importo al totale
|
||||
// presentazione della distinta
|
||||
imp = row.get(8);
|
||||
impdist += imp;
|
||||
impval = row.get(9);
|
||||
@ -826,8 +870,8 @@ void TVariazione_distinte::calcola_totale()
|
||||
m->set(F_IMP, impdist);
|
||||
}
|
||||
|
||||
//Metodo che calcola i totali relativi alla selezione effetti per la distinta
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// Metodo che calcola i totali relativi alla selezione effetti per la
|
||||
// distinta nella maschera di scelta delle riba (ef0300c)
|
||||
void TVariazione_distinte::calcola()
|
||||
{
|
||||
TMask* m2 = app()._m2;
|
||||
@ -844,7 +888,8 @@ void TVariazione_distinte::calcola()
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TToken_string& row = sf.row(i);
|
||||
// se l'effetto è selezionato aggiungo il suo importo al totale importo selezionato
|
||||
// se l'effetto è selezionato aggiungo il suo importo al totale importo
|
||||
// selezionato
|
||||
bool condition = *row.get(0) == 'X';
|
||||
if (condition)
|
||||
{
|
||||
@ -857,8 +902,8 @@ void TVariazione_distinte::calcola()
|
||||
}
|
||||
}
|
||||
|
||||
//Notify per il calcolo dei totali relativi alla selezione effetti per la distinta
|
||||
// nella maschera di scelta delle riba (ef0300c)
|
||||
// Notify per il calcolo dei totali relativi alla selezione effetti
|
||||
// per la distinta nella maschera di scelta delle riba (ef0300c)
|
||||
bool TVariazione_distinte::imp_notify(TSheet_field& s, int r, KEY key)
|
||||
{
|
||||
if (s.to_check(key, TRUE))
|
||||
@ -866,8 +911,9 @@ bool TVariazione_distinte::imp_notify(TSheet_field& s, int r, KEY key)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Metodo che permette di aggiungere effetti alla distinta caricandoli tra quelli
|
||||
//non ancora assegnati, chiamato quando si aggiunge una riga allo sheet degli effetti della distinta
|
||||
// Metodo che permette di aggiungere effetti alla distinta caricandoli
|
||||
// tra quelli non ancora assegnati, chiamato quando si aggiunge una
|
||||
// riga allo sheet degli effetti della distinta
|
||||
void TVariazione_distinte::aggiungi()
|
||||
{
|
||||
TMask* m = app()._msk;
|
||||
@ -881,13 +927,13 @@ void TVariazione_distinte::aggiungi()
|
||||
m2->run();
|
||||
}
|
||||
|
||||
//Notify per il calcolo dei totali relativi alla distinta
|
||||
// Notify per il calcolo dei totali relativi alla distinta
|
||||
// nella maschera della relap (ef0300a)
|
||||
bool TVariazione_distinte::impdist_notify(TSheet_field& s, int r, KEY key)
|
||||
{
|
||||
if (s.to_check(key, TRUE))
|
||||
calcola_totale();
|
||||
if (key == K_CTRL + K_INS) // se si vuole aggiungere una riga alla sheet degli effetti nella distinta
|
||||
if (key == K_CTRL + K_INS)
|
||||
aggiungi();
|
||||
return TRUE;
|
||||
}
|
||||
@ -895,6 +941,6 @@ bool TVariazione_distinte::impdist_notify(TSheet_field& s, int r, KEY key)
|
||||
int ef0300(int argc, char* argv[])
|
||||
{
|
||||
TVariazione_distinte a ;
|
||||
a.run(argc, argv, "Gestione Distinte");
|
||||
a.run(argc, argv, "Variazione Distinte");
|
||||
return 0;
|
||||
}
|
73
ef/ef0300.h
73
ef/ef0300.h
@ -1,45 +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_IMP 109
|
||||
#define F_TOTIMPVAL 110
|
||||
#define F_CODVAL 111
|
||||
#define F_TIPOPAG 112
|
||||
#define F_SHEET_RIBA 113
|
||||
|
||||
|
||||
// DEFINIZIONE CAMPI MASCHERE PER LA GESTIONE DISTINTE
|
||||
// campi maschera ef0300a.uml
|
||||
|
||||
#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_IMP 109
|
||||
#define F_TOTIMPVAL 110
|
||||
#define F_CODVAL 111
|
||||
#define F_TIPOPAG 112
|
||||
#define F_SHEET_RIBA 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
|
||||
#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
|
||||
// Identificatori campi per lo spreadsheet di selezione RiBa da aggiungere
|
||||
// alla distinta
|
||||
#define F_DADATA 101
|
||||
#define F_ADATA 102
|
||||
#define F_TIPORD 103
|
||||
#define F_SHEET 104
|
||||
#define F_TOTIMPDIST 105
|
||||
#define F_IMPSEL 106
|
||||
|
||||
|
||||
#define F_DADATA 101
|
||||
#define F_ADATA 102
|
||||
#define F_TIPORD 103
|
||||
#define F_SHEET 104
|
||||
#define F_TOTIMPDIST 105
|
||||
#define F_IMPSEL 106
|
||||
|
||||
#endif // __EF0300.H
|
||||
#endif // __EF0300_H
|
||||
|
@ -1,10 +1,11 @@
|
||||
// DEFINIZIONE MASCHERA PRINCIPALE PER LA GESTIONE DISTINTE
|
||||
#include "ef0300.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
TOOLBAR "" 0 19 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Gestione Distinte" 0 -1 0 19
|
||||
PAGE "Distinta" 0 -1 0 19
|
||||
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
@ -153,7 +154,7 @@ BEGIN
|
||||
ITEM "9|Bonifici"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_RIBA 78 10
|
||||
SPREADSHEET F_SHEET_RIBA 78 6
|
||||
BEGIN
|
||||
PROMPT 1 12 "RIGHE DISTINTA"
|
||||
ITEM ""
|
||||
|
@ -1,6 +1,7 @@
|
||||
// DEFINIZIONE MASCHERE, PER RIGHE DISTINTA, PER LA GESTIONE DISTINTE
|
||||
#include "ef0300.h"
|
||||
|
||||
PAGE "Righe Distinta" 16 7 78 13
|
||||
PAGE "Righe Distinta" -1 -1 63 13
|
||||
|
||||
LISTBOX F_CHECK 5
|
||||
BEGIN
|
||||
@ -67,7 +68,7 @@ END
|
||||
|
||||
NUMBER F_IMPORTOVAL 18 3
|
||||
BEGIN
|
||||
PROMPT 2 9 "Importo Val. "
|
||||
PROMPT 2 10 "Importo Val. "
|
||||
FIELD LF_EFFETTI->IMPORTOVAL
|
||||
PICTURE "###.###.###.###,@@@"
|
||||
FLAGS "D"
|
||||
|
@ -1,6 +1,7 @@
|
||||
// DEFINIZIONE MASCHERA, DI AGGIUNTA EFFETTI, PER LA GESTIONE DISTINTE
|
||||
#include "ef0300.h"
|
||||
|
||||
PAGE "Aggiungi Effetti alla Distinta" 16 2 78 20
|
||||
PAGE "Aggiungi Effetti alla Distinta" -1 -1 78 20
|
||||
|
||||
GROUPBOX DLG_NULL 60 3
|
||||
BEGIN
|
||||
@ -25,9 +26,9 @@ BEGIN
|
||||
ITEM "F|Fattura "
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET 74 12
|
||||
SPREADSHEET F_SHEET 74 9
|
||||
BEGIN
|
||||
PROMPT 2 5 "EFFETTI SELEZIONABILI"
|
||||
PROMPT 2 6 "EFFETTI SELEZIONABILI"
|
||||
ITEM ""
|
||||
ITEM "Nr. Ri.Ba."
|
||||
ITEM "Scadenza"
|
||||
@ -42,13 +43,13 @@ END
|
||||
|
||||
NUMBER F_TOTIMPDIST 18 2
|
||||
BEGIN
|
||||
PROMPT 2 18 "Importo "
|
||||
PROMPT 2 17 "Importo "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
NUMBER F_IMPSEL 18 2
|
||||
BEGIN
|
||||
PROMPT 37 18 "Importo Selezionato "
|
||||
PROMPT 37 17 "Importo Selezionato "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include "ef0301.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
// Definizione dei metodi della classe TDistinta //
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
// costruttore distinta utilizzando il record passato
|
||||
TDistinta::TDistinta(const TRectype& rec)
|
||||
@ -29,8 +29,10 @@ int TDistinta::read(const char tipo, const long numero)
|
||||
if (err == NOERR)
|
||||
_righe_dist.add(effetto);
|
||||
}
|
||||
if ((_righe_dist.items()>0)||(err == _iseof) )//se ho letto degli effetti della distinta ed ho
|
||||
err = NOERR; //trovato la fine file elimino l'errore
|
||||
// se ho letto degli effetti della distinta ed ho
|
||||
// trovato la fine file elimino l'errore
|
||||
if ((_righe_dist.items()>0)||(err == _iseof) )
|
||||
err = NOERR;
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -47,25 +49,28 @@ int TDistinta::read(const TRectype& rec)
|
||||
int TDistinta::write(bool force, TToken_string* dati_dist)
|
||||
{
|
||||
int err = NOERR;
|
||||
const int elem = items(); //quanti effetti sono nella distinta (nell'array in memoria)
|
||||
//quanti effetti sono nella distinta (nell'array in memoria)
|
||||
const int elem = items();
|
||||
TLocalisamfile f(LF_EFFETTI);
|
||||
for (int i=0; i<elem && err==NOERR; i++)
|
||||
{
|
||||
TEffetto& effetto = (TEffetto&)_righe_dist[i];
|
||||
dati_dist->restart();// token string che contiene i dati da registrare sull'effetto
|
||||
// token string che contiene i dati da registrare sull'effetto
|
||||
dati_dist->restart();
|
||||
effetto.put(EFF_TIPODIST, dati_dist->get());
|
||||
effetto.put(EFF_NDIST, dati_dist->get_long());
|
||||
effetto.put(EFF_DATADIST, dati_dist->get());
|
||||
effetto.put(EFF_CODABIP, dati_dist->get_long());
|
||||
effetto.put(EFF_CODCABP, dati_dist->get_long());
|
||||
effetto.put(EFF_NRIGADIST, i+1);
|
||||
err = effetto.rewrite(f);//riscrivo l'effetto con i dati della distinta a cui appartiene
|
||||
//riscrivo l'effetto con i dati della distinta a cui appartiene
|
||||
err = effetto.rewrite(f);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
// rimuove la distinta (non si effettua la rimozione del record su file ma si elimina dal file il
|
||||
// collegamento tra gli effetti e la distinta)
|
||||
// rimuove la distinta (non si effettua la rimozione del record su file ma si
|
||||
// elimina dal file il collegamento tra gli effetti e la distinta)
|
||||
int TDistinta::remove(char tipodist, long ndist)
|
||||
{
|
||||
int err;
|
||||
|
36
ef/ef0301.h
36
ef/ef0301.h
@ -1,12 +1,18 @@
|
||||
#ifndef __EF0301_H
|
||||
#define __EF0301_H
|
||||
|
||||
#ifndef __EF0101_H
|
||||
#include "ef0101.h"
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// definizione dell'oggetto Distinta con la classe TDistinta //
|
||||
// Definizione dell'oggetto Distinta con la classe TDistinta //
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
class TDistinta:public TObject
|
||||
{
|
||||
TArray _righe_dist; // array che contiene puntatori agli effetti nella distinta
|
||||
//array che contiene puntatori agli effetti nella distinta
|
||||
TArray _righe_dist;
|
||||
public:
|
||||
//ritorna un riferimento all'array degli effetti nella distinta
|
||||
TArray& righe(){ return _righe_dist;}
|
||||
@ -14,26 +20,28 @@ public:
|
||||
const int items() const{ return _righe_dist.items(); }
|
||||
//elimina tutti gli effetti nella distinta (appartenti all'array)
|
||||
int reset(){ return _righe_dist.destroy() == NOERR; }
|
||||
// legge la distinta del tipo e numero passati
|
||||
//legge la distinta del tipo e numero passati
|
||||
int read(const char tipo, const long numero);
|
||||
// legge il record passato
|
||||
//legge il record passato
|
||||
int read(const TRectype& rec);
|
||||
// scrive la distinta utilizzando la rewrite degli effetti
|
||||
//scrive la distinta utilizzando la rewrite degli effetti
|
||||
int write(bool force = FALSE, TToken_string* dati_dist = NULL);
|
||||
// riscrive la distinta
|
||||
//riscrive la distinta
|
||||
int rewrite(TToken_string* dati_dist){ return write(TRUE, dati_dist); }
|
||||
// rimuove la distinta del tipo e numero passati
|
||||
//rimuove la distinta del tipo e numero passati
|
||||
int remove(char tipodist, long ndist);
|
||||
// restituisce il tipo di distinta
|
||||
//restituisce il tipo di distinta
|
||||
const char tipodist() const { return ((TRectype&)_righe_dist[0]).get_char(EFF_TIPODIST); }
|
||||
// restituisce il numero di distinta
|
||||
//restituisce il numero di distinta
|
||||
const long ndist() const { return ((TRectype&)_righe_dist[0]).get_long(EFF_NDIST); }
|
||||
// costruttore di default
|
||||
//costruttore di default
|
||||
TDistinta() {};
|
||||
// costruttore distinta del tipo e numero passato
|
||||
//costruttore distinta del tipo e numero passato
|
||||
TDistinta(const char tipo, const long numero);
|
||||
// costruttore distinta utilizzando il record passato
|
||||
//costruttore distinta utilizzando il record passato
|
||||
TDistinta(const TRectype& rec);
|
||||
// distruttore di default
|
||||
//distruttore di default
|
||||
virtual ~TDistinta() {}
|
||||
};
|
||||
};
|
||||
|
||||
#endif//__EF0301_H
|
@ -8,9 +8,9 @@
|
||||
#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;
|
||||
@ -148,7 +148,8 @@ bool TEliminazione_effetti::to_data_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Si effettua l'istanziazione del cursore e si eliminano gli effetti che vi appartengono
|
||||
// Si effettua l'istanziazione del cursore e si eliminano gli effetti che vi
|
||||
// appartengono
|
||||
void TEliminazione_effetti::elimina()
|
||||
{
|
||||
const TRectype *from = app()._from;
|
||||
@ -181,12 +182,12 @@ void TEliminazione_effetti::elimina()
|
||||
break;
|
||||
}
|
||||
TCursor cur(rel,filter,key,from,to); // istanzio il cursore
|
||||
TLocalisamfile& delfile = cur.file();// prendo un riferimento al file del cursore
|
||||
TLocalisamfile& delfile = cur.file();// prendo un riferimento al file
|
||||
long n = cur.items();// prendo il numero di elementi del cursore
|
||||
cur.freeze();// congelo lo stato del cursore
|
||||
for (cur=0; cur.pos() < n; ++cur)// scandisco tutti gli elementi del cursore
|
||||
{
|
||||
TEffetto eff(delfile.curr());// istanzio un effetto con il file corrente del cursore
|
||||
TEffetto eff(delfile.curr());// istanzio un effetto
|
||||
eff.remove(delfile); // e lo cancello
|
||||
}
|
||||
}
|
||||
@ -203,7 +204,8 @@ bool TEliminazione_effetti::conferma_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//Handler per gestire la conferma dell'annullamento dei dati inseriti nella maschera
|
||||
// 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();
|
||||
|
@ -1,7 +1,8 @@
|
||||
#ifndef __EF0400_H
|
||||
#define __EF0400_H
|
||||
|
||||
// campi maschera ef0400a.msk
|
||||
// DEFINIZIONE CAMPI MASCHERA PER LA ELIMINAZIONE DEGLI EFFETTI
|
||||
// campi maschera ef0400a
|
||||
|
||||
#define F_TIPOSEL 101
|
||||
#define F_TIPOCANC 102
|
||||
@ -10,4 +11,4 @@
|
||||
#define F_DA_DATA 105
|
||||
#define F_A_DATA 106
|
||||
|
||||
#endif // __EF0400_H
|
||||
#endif// __EF0400_H
|
||||
|
@ -1,6 +1,7 @@
|
||||
// DEFINIZIONE MASCHERA PER LA ELIMINAZIONE DEGLI EFFETTI
|
||||
#include "ef0400.h"
|
||||
|
||||
PAGE "Eliminazione Effetti" -1 -1 65 14
|
||||
PAGE "Eliminazione Effetti" -1 -1 57 14
|
||||
|
||||
LIST F_TIPOSEL 24
|
||||
BEGIN
|
||||
|
137
ef/ef0500.cpp
137
ef/ef0500.cpp
@ -17,9 +17,9 @@ class TRiba_form;
|
||||
class TDistinta_form;
|
||||
class TRiba_file;
|
||||
enum fo{kb360 = 1, kb720 = 2, kb1200 = 3, kb1440 = 4};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Classe per l'emissione di effetti e distinte su carta o su floppy //
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// Classe per l'emissione di effetti e distinte su carta o su floppy //
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
class TEmissione: public TApplication
|
||||
{
|
||||
fo _foutput;
|
||||
@ -61,9 +61,9 @@ public:
|
||||
// restituisce un riferimento all' applicazione
|
||||
inline TEmissione& app() { return (TEmissione&) main_app();}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Classe TRiba_form customizzata dalla Form per le Ri.Ba.//
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Classe TRiba_form customizzata dalla Form per le Ri.Ba. //
|
||||
/////////////////////////////////////////////////////////////
|
||||
class TRiba_form: public TForm
|
||||
{
|
||||
protected:
|
||||
@ -73,14 +73,14 @@ public:
|
||||
virtual ~TRiba_form(){};
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Classe TDistinta_form customizzata dalla Form per le Distinte //
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Classe TDistinta_form customizzata dalla Form per le Distinte //
|
||||
///////////////////////////////////////////////////////////////////
|
||||
class TDistinta_form: public TForm
|
||||
{
|
||||
TRelation *_firmrel;
|
||||
TSorted_cursor *_cursor;// curosore che permette l'ordinamento degli effetti nella distinta
|
||||
protected: // per data scadenza o per dati fattura
|
||||
TSorted_cursor *_cursor;// cursore che permette l'ordinamento degli effetti
|
||||
protected: // nella distinta per data scadenza o per dati fattura
|
||||
virtual bool validate(TForm_item &, TToken_string &);
|
||||
public:
|
||||
void set_order(const char tipo);
|
||||
@ -89,9 +89,9 @@ public:
|
||||
virtual ~TDistinta_form();
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Classe TRiba_file customizzata dalla TFile_text //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
// Classe TRiba_file customizzata dalla TFile_text //
|
||||
/////////////////////////////////////////////////////
|
||||
class TRiba_file: public TFile_text
|
||||
{
|
||||
long _nditta;
|
||||
@ -196,12 +196,14 @@ void TEmissione::floppy()
|
||||
pi = new TProgind(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE,10);
|
||||
TAssoc_array& tracciati = _trasfile->tracciati();
|
||||
header_rb();//intestazione flusso effetti
|
||||
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))//scandisco tutti gli effetti della distinta selezionata
|
||||
//scandisco tutti gli effetti della distinta selezionata
|
||||
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))
|
||||
{
|
||||
pi->addstatus(1L);
|
||||
save_data_emis();
|
||||
THash_object* lavoro = tracciati.get_hashobj();
|
||||
for (int i = 0; lavoro != NULL; i++)//scandisco tutti i record di un effetto
|
||||
//scandisco tutti i record di un effetto
|
||||
for (int i = 0; lavoro != NULL; i++)
|
||||
{
|
||||
record(*lavoro);//emetto il record
|
||||
lavoro = tracciati.get_hashobj();
|
||||
@ -283,13 +285,14 @@ void TEmissione::record(THash_object& lavoro)
|
||||
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
|
||||
const TString& tipo = oggetto.type();
|
||||
TRecord_text rec(tipo);
|
||||
_trasfile->autoload(rec, *_cur, &tipo);//carico il record da emettere
|
||||
//carico il record da emettere
|
||||
_trasfile->autoload(rec, *_cur, &tipo);
|
||||
_trasfile->write(rec);//emetto i dati su file
|
||||
}
|
||||
}
|
||||
|
||||
//controllo che ci sia spazio a sufficenza per emettere il flusso sull'unità scelta dall'utente,
|
||||
//ritorna TRUE se è possibile farlo
|
||||
//controllo che ci sia spazio a sufficenza per emettere il flusso
|
||||
//sull'unità scelta dall'utente,ritorna TRUE se è possibile farlo
|
||||
bool TEmissione::ok_write()
|
||||
{
|
||||
long elem = _cur->items();
|
||||
@ -307,8 +310,9 @@ bool TEmissione::ok_write()
|
||||
drive = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
_dos_getdiskfree(drive, &diskspace);// routine uses system call 0x36 to obtain information on the disk drive specified by drive
|
||||
// routine uses system call 0x36 to obtain information on the disk drive
|
||||
// specified by drive
|
||||
_dos_getdiskfree(drive, &diskspace);
|
||||
unsigned long available_clusters = (unsigned long) diskspace.avail_clusters;
|
||||
unsigned long sectors_per_cluster = (unsigned long) diskspace.sectors_per_cluster;
|
||||
unsigned long bytes_per_sector = (unsigned long) diskspace.bytes_per_sector;
|
||||
@ -372,32 +376,34 @@ void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, con
|
||||
if (tipost == 'D')// se stampa definitiva effetti
|
||||
if (!_msk->get_bool(F_RIST))// se non deve ristampare le riba
|
||||
filter = "EFFSTAMP=\" \"";// setta il filtro del cursore per ...
|
||||
fcur->setfilter(filter,TRUE); // ... stampare solo gli effetti non ancora stampati
|
||||
fcur->setfilter(filter,TRUE);// ... stampare solo gli effetti non ancora stampati
|
||||
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti della distinta
|
||||
fcur->setkey(4);
|
||||
TRectype darec(eff.curr());// fissa i dati per la scelta degli ...
|
||||
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.zero();// ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.put(EFF_NDIST, ndist);
|
||||
darec.put(EFF_TIPODIST, tipodist);
|
||||
TRectype arec(darec);
|
||||
fcur->setregion(darec, arec);
|
||||
long n = fcur->items();
|
||||
fcur->freeze();
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione della barra di attesa
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione
|
||||
// della barra di attesa
|
||||
for (int j=0; j < ncopie; j++)
|
||||
{
|
||||
TProgind* pi;
|
||||
if (!is_vis)
|
||||
pi = new TProgind(n,"Stampa Effetti...",FALSE,TRUE,10);
|
||||
for (*fcur = 0; fcur->pos() < n; ++(*fcur)) // ciclo sugli elementi del cursore di stampa
|
||||
// ciclo sugli elementi del cursore di stampa
|
||||
for (*fcur = 0; fcur->pos() < n; ++(*fcur))
|
||||
{
|
||||
if (!is_vis)
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formrb->print(); // stampa il form
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formrb->print(); // stampa il form
|
||||
}
|
||||
}
|
||||
if (tipost == 'D') // se emetto riba in definitiva ...
|
||||
aggiorna_rb(fcur); // ... devo aggiornare data, numero emissione e flag di stampa effetto
|
||||
if (tipost == 'D') // se emetto riba in definitiva devo aggiornare
|
||||
aggiorna_rb(fcur);// data, numero emissione e flag di stampa effetto
|
||||
}
|
||||
|
||||
// gestione emissione su moduli cartacei delle distinte
|
||||
@ -405,19 +411,21 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co
|
||||
{
|
||||
TCursor* fcur = _formdse->cursor();
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti della distinta
|
||||
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti
|
||||
// della distinta
|
||||
TString16 filter;
|
||||
fcur->setfilter(filter,TRUE);
|
||||
fcur->setkey(4);
|
||||
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ...
|
||||
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.put(EFF_NDIST, ndist);
|
||||
darec.put(EFF_TIPODIST, tipodist);
|
||||
TRectype arec(darec);
|
||||
fcur->setregion(darec, arec);
|
||||
long n = fcur->items();
|
||||
fcur->freeze();
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione della barra di attesa
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione
|
||||
// della barra di attesa
|
||||
for (int j=0; j < ncopie; j++)
|
||||
{
|
||||
TProgind* pi;
|
||||
@ -425,12 +433,13 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co
|
||||
pi = new TProgind(n,"Stampa Distinta...",FALSE,TRUE,10);
|
||||
_base_page_no = 0;
|
||||
if (!is_vis)
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formdse->print(); // stampa il form
|
||||
_base_page_no = printer().getcurrentpage() -1; // stampa numero di pagina (solo nella distinta)
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formdse->print(); // stampa il form
|
||||
// stampa numero di pagina (solo nella distinta)
|
||||
_base_page_no = printer().getcurrentpage() -1;
|
||||
}
|
||||
if (tipost == 'D') // se emetto distinta in definitiva ...
|
||||
aggiorna_dist(fcur); // ... devo aggiornare flag di stampa distinta
|
||||
if (tipost == 'D') // se emetto distinta in definitiva ...
|
||||
aggiorna_dist(fcur);// ... devo aggiornare flag di stampa distinta
|
||||
}
|
||||
|
||||
// gestione emissione effetti/distinte su moduli cartacei
|
||||
@ -438,8 +447,9 @@ void TEmissione::print()
|
||||
{
|
||||
int ncopie = _msk->get_int(F_NCOPIE);
|
||||
if (ncopie == 0) ncopie = 1;
|
||||
printer().open(); // apre la stampante
|
||||
const bool is_vis = printer().printtype() == screenvis; // TRUE se si stampa a video
|
||||
printer().open();
|
||||
// TRUE se si stampa a video
|
||||
const bool is_vis = printer().printtype() == screenvis;
|
||||
int emis = _msk->get_int(F_EMIS);
|
||||
int ndist = _msk->get_int(F_NUMBER);
|
||||
char tipodist = _msk->get(F_TIPODIST)[0];
|
||||
@ -457,8 +467,8 @@ void TEmissione::print()
|
||||
{
|
||||
TString16 nomeform;
|
||||
nomeform.format("rb%05ld.frm",codabi);// compongo il nome del form
|
||||
if (!fexist(nomeform)) // ne controllo l'esistenza
|
||||
nomeform = "rb.frm"; // se non esiste utilizzo il form generico
|
||||
if (!fexist(nomeform)) // ne controllo l'esistenza se non
|
||||
nomeform = "rb.frm"; // esiste utilizzo quello generico
|
||||
_formrb = new TRiba_form(nomeform);
|
||||
print_rb(tipost,ndist,tipodist,ncopie,is_vis);
|
||||
}
|
||||
@ -467,15 +477,16 @@ void TEmissione::print()
|
||||
TString16 nomeform;
|
||||
nomeform.format("dse%05ld.frm",codabi);// compongo il nome del form
|
||||
if (!fexist(nomeform)) // ne controllo l'esistenza
|
||||
nomeform = "dse.frm"; // se non esiste utilizzo il form generico
|
||||
nomeform = "dse.frm"; // se non esiste utilizzo quello generico
|
||||
_formdse = new TDistinta_form(nomeform, _firmrel);
|
||||
_formdse->set_order(tipord);
|
||||
print_dse(tipost,ndist,tipodist,ncopie,is_vis);
|
||||
}
|
||||
printer().close(); // chiude la stampante
|
||||
printer().close();
|
||||
}
|
||||
|
||||
// handler per gestire la conferma dell'annullamento dei dati inseriti nella maschera
|
||||
// handler per gestire la conferma dell'annullamento dei dati inseriti
|
||||
// nella maschera
|
||||
bool TEmissione::annulla_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
@ -568,7 +579,7 @@ bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _FATT
|
||||
}
|
||||
return TForm::validate(cf, s);
|
||||
}
|
||||
|
||||
@ -601,7 +612,7 @@ TDistinta_form::~TDistinta_form()
|
||||
// gestione dei messaggi estesi nei campi
|
||||
bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
{
|
||||
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
const TString code(s.get(0));
|
||||
TString valore;
|
||||
if (code == "_BANCAP")
|
||||
{
|
||||
@ -646,7 +657,7 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _DITTA
|
||||
}
|
||||
if (code == "_FATT")
|
||||
{
|
||||
// gestione dei campi relativi alle fatture a cui si riferisce un effetto
|
||||
@ -681,7 +692,7 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
cf.put_paragraph(valore);
|
||||
cf.set(""); // resetta il campo per la prossima stampa di questo item
|
||||
return (TRUE);
|
||||
} // fine _FATT
|
||||
}
|
||||
if (code == "_FOOTER")
|
||||
{
|
||||
// gestione dei campi del fondo pagina della distinta
|
||||
@ -689,16 +700,18 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
// dove: <macro> è uno delle macro seguenti:
|
||||
// "!NDOC" numero riba nella distinta
|
||||
// "!TOTALE" totale presentato
|
||||
TString in(s.get()); // prende il primo parametro, il codice del messaggio
|
||||
TString in(s.get());
|
||||
if (in[0]=='!')
|
||||
{
|
||||
in.ltrim(1);
|
||||
TCursor* fcur = cursor();
|
||||
long i = fcur->items();
|
||||
//"!NDOC" prende il numero riba nella distinta guardando quanti elementi ha il cursore di stampa
|
||||
//"!NDOC" prende il numero riba nella distinta guardando quanti
|
||||
// elementi ha il cursore di stampa
|
||||
if (in == "NDOC")
|
||||
cf.set(format("%ld",i));
|
||||
//"!TOTALE" calcola il totale presentato prendendo i totale degli effetti nel cursore di stampa
|
||||
//"!TOTALE" calcola il totale presentato prendendo i totale degli
|
||||
// effetti nel cursore di stampa
|
||||
if (in == "TOTALE")
|
||||
{
|
||||
real totale = 0.0;
|
||||
@ -716,7 +729,7 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _FOOTER
|
||||
}
|
||||
if (code== "_PAGENO")
|
||||
{
|
||||
// messaggio per stampare il numero di pagina corrente
|
||||
@ -744,14 +757,14 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
in.trim();
|
||||
valore = in;
|
||||
}
|
||||
}// fine _FISSO
|
||||
}
|
||||
if (code == "_DATA")
|
||||
{
|
||||
// gestione della data di emissione delle riba
|
||||
// sintassi: _DATA
|
||||
const TDate data_emis = app().msk().get_date(F_DATAEMIS);
|
||||
valore = data_emis.string();
|
||||
}// fine _DATA
|
||||
}
|
||||
if (code == "_NRIBA")
|
||||
{
|
||||
// gestione dei campi relativi al flusso di effetti (riba)
|
||||
@ -782,7 +795,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
valore << rec;
|
||||
}
|
||||
}
|
||||
}// fine _NRIBA
|
||||
}
|
||||
if (code == "_DITTA")
|
||||
{
|
||||
// gestione di campi della ditta corrente
|
||||
@ -827,7 +840,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
}
|
||||
}
|
||||
}
|
||||
}// fine _DITTA
|
||||
}
|
||||
if (code == "_DEBITORE")
|
||||
{
|
||||
// gestione di campi della ditta corrente
|
||||
@ -874,7 +887,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
valore.trim();
|
||||
}
|
||||
}
|
||||
}// fine _DEBITORE
|
||||
}
|
||||
if (code == "_BANCA")
|
||||
{
|
||||
// gestione dei campi relativi alla banca d'appoggio dell'effetto
|
||||
@ -886,14 +899,14 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
ban = cur.curr(-402);
|
||||
valore << " " << ban.get("S0");
|
||||
valore.trim();
|
||||
}// fine _BANCA
|
||||
}
|
||||
if (code == "_FATT")
|
||||
{
|
||||
// gestione dei campi relativi alle/a fatture/a a cui si riferisce un effetto
|
||||
// sintassi: _FATT,<opzione>
|
||||
// dove: <opzione> è uno delle opzioni seguenti:
|
||||
// "1" i dati della fattura andranno ad occupare più campi, primo segmento
|
||||
// "2" i dati della fattura andranno ad occupare più campi, secondo segmento
|
||||
// "1" i dati della fattura andranno ad occupare più campi, primo segmento
|
||||
// "2" i dati della fattura andranno ad occupare più campi, secondo segmento
|
||||
TLocalisamfile &eff = cur.file();
|
||||
TEffetto effetto = eff.curr();
|
||||
long num = effetto.numero();
|
||||
@ -922,7 +935,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
valore = descfatt.mid(40, l);
|
||||
}
|
||||
}
|
||||
}// fine _FATT
|
||||
}
|
||||
if (code == "_IMPORTO")
|
||||
{
|
||||
// gestione di campi degli importi degli effetti nel flusso
|
||||
@ -949,7 +962,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
|
||||
set_tot_importi(0.0);
|
||||
}
|
||||
}
|
||||
}// fine _IMPORTO
|
||||
}
|
||||
str = valore;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
#ifndef __EF0500_H
|
||||
#define __EF0500_H
|
||||
|
||||
// DEFINIZIONE CAMPI MASCHERA PER LA EMISSIONE DEGLI EFFETTI
|
||||
// campi maschera ef0500a.uml
|
||||
|
||||
#define F_TIPODIST 101
|
||||
#define F_NUMBER 102
|
||||
#define F_NUMBERRIGA 103
|
||||
|
@ -1,6 +1,7 @@
|
||||
// DEFINIZIONE CAMPI MASCHERA PER LA EMISSIONE DEGLI EFFETTI
|
||||
#include "ef0500.h"
|
||||
|
||||
PAGE "Emissione Effetti" -1 -1 77 19
|
||||
PAGE "Emissione Effetti e Distinte" -1 -1 77 19
|
||||
|
||||
RADIOBUTTON F_TIPOEMIS 76
|
||||
BEGIN
|
||||
|
905
ef/ef0600.cpp
905
ef/ef0600.cpp
File diff suppressed because it is too large
Load Diff
41
ef/ef0600.h
41
ef/ef0600.h
@ -1,26 +1,27 @@
|
||||
#ifndef __EF0600_H
|
||||
#define __EF0600_H
|
||||
|
||||
// DEFINIZIONE CAMPI MASCHERA PER LE STAMPE DI CONTROLLO DEGLI EFFETTI
|
||||
// campi maschera ef0600a.uml
|
||||
|
||||
#define F_DATA_STAMPA 101
|
||||
#define RDB_TIPOST 102
|
||||
#define F_DA_DATA 103
|
||||
#define F_A_DATA 104
|
||||
#define F_DABAN 105
|
||||
#define F_ABAN 106
|
||||
#define F_DA_DATA2 107
|
||||
#define F_A_DATA2 108
|
||||
#define F_NUMBERRIGA 109
|
||||
#define F_DATIPODIST 110
|
||||
#define F_DADIST 111
|
||||
#define F_ATIPODIST 112
|
||||
#define F_ADIST 113
|
||||
#define F_DA_DATA3 114
|
||||
#define F_A_DATA3 115
|
||||
#define F_DACLI 116
|
||||
#define F_ACLI 117
|
||||
#define F_DA_DATA4 118
|
||||
#define F_A_DATA4 119
|
||||
#define F_DATA_STAMPA 101
|
||||
#define RDB_TIPOST 102
|
||||
#define F_DA_DATA 103
|
||||
#define F_A_DATA 104
|
||||
#define F_DABAN 105
|
||||
#define F_ABAN 106
|
||||
#define F_DA_DATA2 107
|
||||
#define F_A_DATA2 108
|
||||
#define F_NUMBERRIGA 109
|
||||
#define F_DATIPODIST 110
|
||||
#define F_DADIST 111
|
||||
#define F_ATIPODIST 112
|
||||
#define F_ADIST 113
|
||||
#define F_DA_DATA3 114
|
||||
#define F_A_DATA3 115
|
||||
#define F_DACLI 116
|
||||
#define F_ACLI 117
|
||||
#define F_DA_DATA4 118
|
||||
#define F_A_DATA4 119
|
||||
|
||||
#endif
|
||||
#endif//__EF0600_H
|
||||
|
@ -1,6 +1,8 @@
|
||||
// DEFINIZIONE MASCHERA PER LE STAMPE DI CONTROLLO DEGLI EFFETTI
|
||||
|
||||
#include "ef0600.h"
|
||||
|
||||
PAGE "Stampe di Controllo Effetti" -1 -1 60 13
|
||||
PAGE "Stampe di Controllo Effetti" -1 -1 58 16
|
||||
|
||||
DATE F_DATA_STAMPA
|
||||
BEGIN
|
||||
@ -23,19 +25,19 @@ END
|
||||
|
||||
GROUPBOX DLG_NULL 55 3
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stampa effetti per Data di scadenza"
|
||||
PROMPT 1 7 "Stampa effetti per Data di scadenza"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
DATA F_DA_DATA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Dalla Data "
|
||||
PROMPT 2 8 "Dalla Data "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
DATA F_A_DATA
|
||||
BEGIN
|
||||
PROMPT 30 7 "Alla Data "
|
||||
PROMPT 30 8 "Alla Data "
|
||||
GROUP 1
|
||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA
|
||||
WARNING "Data limite superiore non valida"
|
||||
@ -43,13 +45,13 @@ END
|
||||
|
||||
GROUPBOX DLG_NULL 55 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stampa effetti per Banca di presentazione"
|
||||
PROMPT 1 7 "Stampa effetti per Banca di presentazione"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
NUMBER F_DABAN 5
|
||||
BEGIN
|
||||
PROMPT 2 7 "Dalla Banca "
|
||||
PROMPT 2 8 "Dalla Banca "
|
||||
FLAGS "RZ"
|
||||
GROUP 2
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||
@ -62,7 +64,7 @@ END
|
||||
|
||||
NUMBER F_ABAN 5
|
||||
BEGIN
|
||||
PROMPT 30 7 "Alla Banca "
|
||||
PROMPT 30 8 "Alla Banca "
|
||||
FLAGS "RZ"
|
||||
GROUP 2
|
||||
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
|
||||
@ -75,21 +77,21 @@ END
|
||||
|
||||
DATA F_DA_DATA2
|
||||
BEGIN
|
||||
PROMPT 2 8 "Dalla Data "
|
||||
PROMPT 2 9 "Dalla Data "
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
DATA F_A_DATA2
|
||||
BEGIN
|
||||
PROMPT 30 8 "Alla Data "
|
||||
PROMPT 30 9 "Alla Data "
|
||||
GROUP 2
|
||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
|
||||
WARNING "Data limite superiore non valida"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 55 6
|
||||
GROUPBOX DLG_NULL 55 7
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stampa effetti per Distinta"
|
||||
PROMPT 1 7 "Stampa effetti per Distinta"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
@ -104,13 +106,13 @@ END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 7 "Dalla Distinta "
|
||||
PROMPT 2 8 "Dalla Distinta "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
LIST F_DATIPODIST 19
|
||||
BEGIN
|
||||
PROMPT 4 8 " "
|
||||
PROMPT 4 9 " "
|
||||
KEY 4
|
||||
GROUP 3
|
||||
ITEM " |** Nessuno **"
|
||||
@ -121,7 +123,7 @@ END
|
||||
|
||||
NUMBER F_DADIST 7
|
||||
BEGIN
|
||||
PROMPT 4 9 " "
|
||||
PROMPT 4 10 " "
|
||||
FLAGS "R"
|
||||
GROUP 3
|
||||
KEY 4
|
||||
@ -139,13 +141,13 @@ END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 30 7 "Alla Distinta "
|
||||
PROMPT 30 8 "Alla Distinta "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
LIST F_ATIPODIST 19
|
||||
BEGIN
|
||||
PROMPT 31 8 " "
|
||||
PROMPT 31 9 " "
|
||||
GROUP 3
|
||||
KEY 4
|
||||
ITEM " |** Nessuno **"
|
||||
@ -156,7 +158,7 @@ END
|
||||
|
||||
NUMBER F_ADIST 7
|
||||
BEGIN
|
||||
PROMPT 31 9 " "
|
||||
PROMPT 31 10 " "
|
||||
FLAGS "R"
|
||||
KEY 4
|
||||
GROUP 3
|
||||
@ -174,15 +176,27 @@ BEGIN
|
||||
//WARNING "Limite superiore non valido"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 11 "Dalla Data "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
DATA F_DA_DATA3
|
||||
BEGIN
|
||||
PROMPT 2 10 "Dalla Data "
|
||||
PROMPT 4 12 " "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 30 11 "Alla Data "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
DATA F_A_DATA3
|
||||
BEGIN
|
||||
PROMPT 30 10 "Alla Data "
|
||||
PROMPT 31 12 " "
|
||||
GROUP 3
|
||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA3
|
||||
WARNING "Data limite superiore non valida"
|
||||
@ -190,13 +204,13 @@ END
|
||||
|
||||
GROUPBOX DLG_NULL 55 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stampa effetti per Cliente"
|
||||
PROMPT 1 7 "Stampa effetti per Cliente"
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_DACLI 6
|
||||
BEGIN
|
||||
PROMPT 2 7 "Dal Cliente "
|
||||
PROMPT 2 8 "Dal Cliente "
|
||||
FLAGS "RZ"
|
||||
GROUP 4
|
||||
USE LF_CLIFO
|
||||
@ -210,7 +224,7 @@ END
|
||||
|
||||
NUMBER F_ACLI 6
|
||||
BEGIN
|
||||
PROMPT 30 7 "Al Cliente "
|
||||
PROMPT 30 8 "Al Cliente "
|
||||
FLAGS "RZ"
|
||||
GROUP 4
|
||||
USE LF_CLIFO
|
||||
@ -224,13 +238,13 @@ END
|
||||
|
||||
DATA F_DA_DATA4
|
||||
BEGIN
|
||||
PROMPT 2 8 "Dalla Data "
|
||||
PROMPT 2 9 "Dalla Data "
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
DATA F_A_DATA4
|
||||
BEGIN
|
||||
PROMPT 30 8 "Alla Data "
|
||||
PROMPT 30 9 "Alla Data "
|
||||
GROUP 4
|
||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
|
||||
WARNING "Data limite superiore non valida"
|
||||
|
@ -2,6 +2,10 @@
|
||||
#include <tabutil.h>
|
||||
#include "batbbnp.h"
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
// Classe per la gestione della Tabella di Ditta //
|
||||
// "Banche di presentazione" //
|
||||
////////////////////////////////////////////////////
|
||||
class TBnp_table_app : public Tab_application
|
||||
{
|
||||
protected:
|
||||
@ -27,7 +31,6 @@ void TBnp_table_app::init_query_insert_mode(TMask& m)
|
||||
m.show(F_CODICECAB);
|
||||
m.field(F_CODICEABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
|
||||
|
||||
m.hide(F_ABI);
|
||||
m.hide(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_NONE);
|
||||
@ -40,7 +43,6 @@ void TBnp_table_app::init_insert_mode(TMask& m)
|
||||
m.show(F_CODICECAB);
|
||||
m.field(F_CODICEABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CODICECAB).check_type(CHECK_REQUIRED);
|
||||
|
||||
m.hide(F_ABI);
|
||||
m.hide(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_NONE);
|
||||
@ -50,12 +52,10 @@ void TBnp_table_app::init_insert_mode(TMask& m)
|
||||
void TBnp_table_app::init_query_mode(TMask& m)
|
||||
{
|
||||
Tab_application::init_query_mode(m);
|
||||
|
||||
m.show(F_ABI);
|
||||
m.show(F_CAB);
|
||||
m.field(F_ABI).check_type(CHECK_REQUIRED);
|
||||
m.field(F_CAB).check_type(CHECK_REQUIRED);
|
||||
|
||||
m.hide(F_CODICEABI);
|
||||
m.hide(F_CODICECAB);
|
||||
m.field(F_CODICEABI).check_type(CHECK_NONE);
|
||||
@ -90,15 +90,13 @@ bool TBnp_table_app::stampa_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().print();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ef0700(int argc, char* argv[])
|
||||
{
|
||||
TBnp_table_app a ;
|
||||
a.run(argc, argv, "Tabella Banche di Presentazione");
|
||||
a.run(argc, argv, "Gestione Tabella");
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,24 +1,28 @@
|
||||
#ifndef __FILETEXT_H
|
||||
#define __FILETEXT_H
|
||||
|
||||
#ifndef __ARRAY_H
|
||||
#include <array.h>
|
||||
#endif //__ARRAY_H
|
||||
#endif
|
||||
#ifndef __CONFIG_H
|
||||
#include <config.h>
|
||||
#endif //__CONFIG_H
|
||||
#endif
|
||||
#ifndef __CHECS_H
|
||||
#include <checks.h>
|
||||
#endif //__CHECS_H
|
||||
#endif
|
||||
#ifndef __ASSOC_H
|
||||
#include <assoc.h>
|
||||
#endif //__ASSOC_H
|
||||
#endif
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif //__RELATION_H
|
||||
#endif
|
||||
#include <utility.h>
|
||||
#include <fstream.h>
|
||||
/////////////////////////////////////////// TTracciato_Campo /////////////////////////////////////////
|
||||
// Classe per la definizione delle specifiche riguardanti un campo di un record //
|
||||
// di un file di testo //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////TTracciato_Campo////////////////////////////////
|
||||
// Classe per la definizione delle specifiche riguardanti un campo di un //
|
||||
// record di un file di testo //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
class TTracciato_campo : public TObject
|
||||
{
|
||||
TString _name;//descrizione del contenuto
|
||||
@ -60,9 +64,10 @@ public:
|
||||
void set_picture(const TString& picture ) {_picture = picture;}
|
||||
void set_message(const TString& message ) {_message = message;}
|
||||
};
|
||||
///////////////////////////////////////////////////// TTracciato_record ////////////////////////////////////////////////////
|
||||
// Classe per la definizione delle specifiche riguardanti un record come insieme di più campi //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////// TTracciato_record /////////////////////////
|
||||
// Classe per la definizione delle specifiche riguardanti un record //
|
||||
// come insieme di più campi //
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
class TTracciato_record : public TObject
|
||||
{
|
||||
TString _type;//tipo del record
|
||||
@ -82,10 +87,11 @@ public:
|
||||
//ritorna il puntatore al tracciato campo n dell'array (NULL se non esiste)
|
||||
TTracciato_campo* ptr(int n) {return (TTracciato_campo*)_tracciati_campo.objptr(n);}
|
||||
};
|
||||
////////////////////////////////////////// TRecord_text //////////////////////////////////////////
|
||||
// Classe per la definizione di un record di un File_text, consiste di un //
|
||||
// array che contiene tutti i valori dei campi risultanti dal tracciato record//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////// TRecord_text /////////////////////////////////
|
||||
// Classe per la definizione di un record di un File_text, consiste di un //
|
||||
// array che contiene tutti i valori dei campi risultanti dal tracciato //
|
||||
// record //
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
class TRecord_text : public TObject
|
||||
{
|
||||
TString _type;//tipo del record
|
||||
@ -101,11 +107,11 @@ public:
|
||||
const int items() const {return _array.items();}//ritorna il numero di elementi dell'array
|
||||
virtual bool destroy(int index = -1, bool pack = FALSE) {return _array.destroy(index, pack);}
|
||||
};
|
||||
//////////////////////////////////////////////// TFile_text /////////////////////////////////////////////
|
||||
// Classe per la definizione di un file di testo capace di leggersi e scriversi, //
|
||||
///////////////////////////////// TFile_text //////////////////////////////////////
|
||||
// Classe per la definizione di un file di testo capace di leggersi e scriversi,//
|
||||
// in base ai tracciati record e campo risultanti; utilizzabile per trasferimenti//
|
||||
// (ricezioni ed invii) di file o di relazioni //
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// (ricezioni ed invii) di file o di relazioni //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
class TFile_text : public TObject
|
||||
{
|
||||
ifstream* _read_file;//stream per lettura da file di testo
|
||||
@ -177,4 +183,6 @@ public:
|
||||
const TString& get_field(TRecord_text& rec, int ncampo);
|
||||
void format_date(const TDate& data, const TString& form, TString& data_str);//formatta la data
|
||||
TString& format_field(TTracciato_campo& tc, TString& campo);//formatta il campo secondo il suo tracciato
|
||||
};
|
||||
};
|
||||
|
||||
#endif //__FILETEXT_H
|
Loading…
x
Reference in New Issue
Block a user