registrazione modifiche programma di stampa e delle distinte

git-svn-id: svn://10.65.10.50/trunk@4080 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
paola 1997-01-15 16:00:56 +00:00
parent bba6d28579
commit ab75919061
11 changed files with 826 additions and 464 deletions

View File

@ -11,10 +11,10 @@
#include "ef0100.h"
#include "ef0101.h"
//////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
// Classe per la gestione di effetti con metodi standard di: //
// inserimento, modifica, cancellazione. //
//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
class TVariazione_effetti: public TRelation_application
{

View File

@ -3,7 +3,7 @@
#endif
#ifndef __RECARRAY_H
#include <recarray.h>
#include <relation.h>
#endif
/////////////////////////////////////////////////////////////

View File

@ -10,10 +10,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. //
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class TVariazione_distinte: public TRelation_application
{
TMask *_msk, *_m2;
@ -44,7 +44,7 @@ protected:
static void calcola_totale();
static void calcola();
static void aggiungi();
static void carica_riba();
static void carica_riba(int tipopag);
static void ord_data();
static void ord_fatt();
TSheet_field& righe_sheet() const;
@ -96,10 +96,12 @@ void TVariazione_distinte::init_modify_mode(TMask&)
// ritorna il prossimo numero di distanta valido
const char* TVariazione_distinte::get_next_key()
{
long ndist = 1L;
long ndist = 1L; // per posizionarmi
char tipodist = 'B'; // all'inizo del file con chiave 4
TLocalisamfile& effetti = _rel->lfile();
effetti.first(); // mi posiziono all'inizio del file
effetti.put("NDIST",ndist);
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:
@ -107,13 +109,11 @@ const char* TVariazione_distinte::get_next_key()
err == NOERR;
return format("%d|%ld", F_NUMBER, ndist);
}
effetti.setkey(1); // mi posiziono all'inizio del file
effetti.first(); // utilizzando la chiave 1
while (err == NOERR) //se esitono già delle distinte:
{ // le leggo tutte e ne prendo il
effetti.setkey(4); // numero, al verificarsi della fine file
err = effetti.next(); // ho l'ultimo numero utilizzato
long n = effetti.get_long("NDIST"); // incrementandolo avrò il numero che cercavo.
long n = effetti.get_long(EFF_NDIST);// incrementandolo avrò il numero che cercavo.
if (n > ndist)
ndist = n;
}
@ -143,7 +143,7 @@ bool TVariazione_distinte::cerca(long num)
for (int i = 0; i < items; i++) // ciclo sugli elementi dell'array
{ // se l'array è vuoto non trova nulla ed esce subito
TEffetto& eff = (TEffetto&)righedist[i];
long num_eff = eff.get_long("NPROGTR");
long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num)
{
trovato = TRUE;
@ -163,7 +163,7 @@ void TVariazione_distinte::aggiorna()
TToken_string& row = shrighe.row(i);
row.restart();
long num = row.get_long(1);
if (!cerca(num)) // se non sia già presente in memoria
if (!cerca(num)) // se non è già presente in memoria
{ // carico l'effetto nell'array
TLocalisamfile eff(LF_EFFETTI);
TRectype rec = eff.curr();
@ -297,7 +297,7 @@ void TVariazione_distinte::elimina()
for (int j = 0; j < distinta->items(); j++) //ciclo sugli elementi dell'array
{
TEffetto& eff = (TEffetto&)righedist[j];
long num_eff = eff.get_long("NPROGTR");
long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num)
{
righedist.destroy(j,TRUE); // tolgo l'effetto dall'array
@ -306,12 +306,12 @@ void TVariazione_distinte::elimina()
}
sf.destroy(i); deleted = TRUE; // tolgo l'effetto dallo sheet
eff.read(file, tipodist, ndist, k);
eff.zero("TIPODIST");
eff.zero("NDIST");
eff.zero("DATADIST");
eff.zero("NRIGADIST");
eff.zero("CODABIP");
eff.zero("CODCABP");
eff.zero(EFF_TIPODIST);
eff.zero(EFF_NDIST);
eff.zero(EFF_DATADIST);
eff.zero(EFF_NRIGADIST);
eff.zero(EFF_CODABIP);
eff.zero(EFF_CODCABP);
eff.rewrite(file);
}
else deleted = FALSE;
@ -321,32 +321,29 @@ void TVariazione_distinte::elimina()
// riscrive distinta
int TVariazione_distinte::rewrite(const TMask& m)
{
// prima di riscrive controllo se ci sono effetti nello sheet selezionati per l'eliminazione
TSheet_field& sf = righe_sheet();
TSheet_field& sf = righe_sheet(); // prima di riscrive controllo se ci sono effetti nello sheet selezionati per l'eliminazione
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
}
// solo se ho trovato effetti selezionati
if (condition)
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
// procedo con la riscrittura
char tipodist = m.get(F_TIPODIST)[0];
char tipodist = m.get(F_TIPODIST)[0]; // procedo con la riscrittura
long ndist = m.get_long(F_NUMBER);
aggiorna(); // aggiorno l'array
err = _distinta->rewrite(common_f(m));
// riposiziono la relazione
if (err == NOERR)
if (err == NOERR) // riposiziono la relazione
{
_rel->lfile().setkey(4);
TRectype& curr = _rel->curr();
curr.put("TIPODIST", tipodist);
curr. put("NDIST", ndist);
curr. put("NRIGADIST", 1);
curr.put(EFF_TIPODIST, tipodist);
curr. put(EFF_NDIST, ndist);
curr. put(EFF_NRIGADIST, 1);
_rel->read();
}
return err;
@ -365,9 +362,9 @@ int TVariazione_distinte::write(const TMask& m)
{
_rel->lfile().setkey(4);
TRectype& curr = _rel->curr();
curr.put("TIPODIST", tipodist);
curr. put("NDIST", ndist);
curr. put("NRIGADIST", 1);
curr.put(EFF_TIPODIST, tipodist);
curr. put(EFF_NDIST, ndist);
curr. put(EFF_NRIGADIST, 1);
_rel->read();
}
return err;
@ -423,8 +420,8 @@ bool TVariazione_distinte::user_destroy()
//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
void TVariazione_distinte::carica_riba()
// una distinta; inoltre è possibile inserire nella distinta effettiaventi 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
@ -441,8 +438,17 @@ void TVariazione_distinte::carica_riba()
sf.reset();
int err, i = 0;
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
if (tipopag == 0) condition =TRUE;
if (condition)
{
riga.cut(0);
riga.add(' ');
const long numero = eff.get_long(EFF_NPROGTR);
@ -467,15 +473,17 @@ void TVariazione_distinte::carica_riba()
riga.add(("Varie"));
riga.add(("Varie"));
}
riga.add(eff.get(EFF_CODVAL));
riga.add(eff.get(EFF_IMPORTO));
riga.add(eff.get(EFF_IMPORTOVAL));
sf.row(i) = riga;
i++;
}
f.setkey(4);
err = eff.next(f); //leggo l'effetto successivo e ne prendo il tipodistinta per il controllo
tipodist = eff.get("TIPODIST")[0];// della condizione del ciclo di caricamento
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
tipop = eff.get_int(EFF_TIPOPAG);
}
}
@ -510,12 +518,13 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
long imp_pres = m.get_long(F_TOTIMP);// importo presentato
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
if (impdist > 0)
{
app().begin_wait();
carica_riba();
carica_riba(tipopag);
app().end_wait();
m2->reset(F_TOTIMPDIST);
m2->reset(F_IMPSEL);
@ -861,9 +870,11 @@ bool TVariazione_distinte::imp_notify(TSheet_field& s, int r, KEY key)
//non ancora assegnati, chiamato quando si aggiunge una riga allo sheet degli effetti della distinta
void TVariazione_distinte::aggiungi()
{
TMask* m = app()._msk;
TMask* m2 = app()._m2;
int tipopag = m->get_int(F_TIPOPAG);
app().begin_wait();
carica_riba();
carica_riba(tipopag);
app().end_wait();
m2->reset(F_TOTIMPDIST);
m2->reset(F_IMPSEL);

View File

@ -15,7 +15,8 @@
#define F_IMP 109
#define F_TOTIMPVAL 110
#define F_CODVAL 111
#define F_SHEET_RIBA 112
#define F_TIPOPAG 112
#define F_SHEET_RIBA 113

View File

@ -6,12 +6,12 @@ ENDPAGE
PAGE "Gestione Distinte" 0 -1 0 19
GROUPBOX DLG_NULL 78 10
GROUPBOX DLG_NULL 78 11
BEGIN
PROMPT 1 0 ""
END
LIST F_TIPODIST 19
LIST F_TIPODIST 17
BEGIN
PROMPT 2 1 "Tipo Distinta "
KEY 4
@ -21,7 +21,7 @@ BEGIN
ITEM "S|Allo sconto"
END
LIST F_NUMBERRIGA 10
LIST F_NUMBERRIGA 12
BEGIN
PROMPT 1 60 "Numero Riga Distinta "
KEY 4
@ -135,9 +135,24 @@ BEGIN
OUTPUT F_CODVAL CODTAB
END
LIST F_TIPOPAG 24
BEGIN
PROMPT 2 9 "Tipo Effetto "
FIELD LF_EFFETTI->TIPOPAG
ITEM "0| "
ITEM "2|Effetto cambiario"
ITEM "3|Ricevuta Bancaria"
ITEM "4|Cessione"
ITEM "5|Effetto cambiario"
ITEM "6|Lettera di credito"
ITEM "7|Effetto cambiario"
ITEM "8|Rapporti interb.diretti"
ITEM "9|Bonifici"
END
SPREADSHEET F_SHEET_RIBA 78 10
BEGIN
PROMPT 1 10 "RIGHE DISTINTA"
PROMPT 1 12 "RIGHE DISTINTA"
ITEM ""
ITEM "Nr. Ri.Ba."
ITEM "Scadenza"

View File

@ -11,9 +11,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;

View File

@ -51,6 +51,8 @@ BEGIN
DISPLAY "Data scadenza" DATASCAD
OUTPUT F_A_RIBA NPROGTR
CHECKTYPE NORMAL
/*NUM_EXPR {#THIS_FIELD>=#F_DA_RIBA}
WARNING "Limite superiore non valido"*/
END
GROUPBOX DLG_NULL 55 3
@ -85,6 +87,8 @@ BEGIN
OUTPUT F_A_DATA DATASCAD
OUTPUT F_A_RIBA NPROGTR
CHECKTYPE NORMAL
/*VALIDATE DATE_CMP_FUNC >= F_DA_DATA
WARNING "Data limite superiore non valida" */
END
BUTTON DLG_OK 9 2

View File

@ -16,9 +16,9 @@
class TRiba_form;
class TDistinta_form;
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
// Classe per l'emissione di effetti e distinte su carta o su floppy //
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
class TEmissione: public TApplication
{
TMask* _msk;
@ -49,9 +49,9 @@ public:
// restituisce un riferimento all' applicazione
inline TEmissione& app() { return (TEmissione&) main_app();}
////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Classe TRiba_form customizzata dalla Form per le Ri.Ba.//
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
class TRiba_form: public TForm
{
protected:
@ -61,9 +61,9 @@ public:
virtual ~TRiba_form(){};
};
////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
// Classe TDistinta_form customizzata dalla Form per le Distinte //
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
class TDistinta_form: public TForm
{

File diff suppressed because it is too large Load Diff

View File

@ -18,5 +18,9 @@
#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

View File

@ -4,19 +4,21 @@ PAGE "Stampe di Controllo Effetti" -1 -1 60 13
DATE F_DATA_STAMPA
BEGIN
PROMPT 30 1 "Data di stampa "
PROMPT 30 0 "Data di stampa "
FLAGS "A"
END
RADIOBUTTON RDB_TIPOST 24
BEGIN
PROMPT 2 1 "Stampa per "
ITEM "1|Scadenza"
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@
ITEM "2|Banca"
MESSAGE SHOW,2@|HIDE,1@|HIDE,3@
PROMPT 2 0 "Stampa per "
ITEM "1|Banca"
MESSAGE SHOW,2@|HIDE,1@|HIDE,3@|HIDE,4@
ITEM "2|Cliente"
MESSAGE SHOW,4@|HIDE,1@|HIDE,2@|HIDE,3@
ITEM "3|Distinta"
MESSAGE SHOW,3@|HIDE,1@|HIDE,2@
MESSAGE SHOW,3@|HIDE,1@|HIDE,2@|HIDE,4@
ITEM "4|Scadenza"
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@|HIDE,4@
END
GROUPBOX DLG_NULL 55 3
@ -186,6 +188,54 @@ BEGIN
WARNING "Data limite superiore non valida"
END
GROUPBOX DLG_NULL 55 4
BEGIN
PROMPT 1 6 "Stampa effetti per Cliente"
GROUP 4
END
NUMBER F_DACLI 6
BEGIN
PROMPT 2 7 "Dal Cliente "
FLAGS "RZ"
GROUP 4
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_DACLI
DISPLAY "Ragione sociale@60" RAGSOC
DISPLAY "Codice" CODCF
OUTPUT F_DACLI CODCF
CHECKTYPE NORMAL
END
NUMBER F_ACLI 6
BEGIN
PROMPT 30 7 "Al Cliente "
FLAGS "RZ"
GROUP 4
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_ACLI
DISPLAY "Ragione sociale@60" RAGSOC
DISPLAY "Codice" CODCF
OUTPUT F_ACLI CODCF
CHECKTYPE NORMAL
END
DATA F_DA_DATA4
BEGIN
PROMPT 2 8 "Dalla Data "
GROUP 4
END
DATA F_A_DATA4
BEGIN
PROMPT 30 8 "Alla Data "
GROUP 4
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
WARNING "Data limite superiore non valida"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""