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 "ef0100.h"
#include "ef0101.h" #include "ef0101.h"
////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////
// Classe per la gestione di effetti con metodi standard di:// // Classe per la gestione di effetti con metodi standard di: //
// inserimento, modifica, cancellazione. // // inserimento, modifica, cancellazione. //
////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
class TVariazione_effetti: public TRelation_application class TVariazione_effetti: public TRelation_application
{ {

View File

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

View File

@ -10,10 +10,10 @@
#include "ef0300.h" #include "ef0300.h"
#include "ef0301.h" #include "ef0301.h"
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////
//Classe per la gestione di distinte (inserimento, modifica, cancellazione) // //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 class TVariazione_distinte: public TRelation_application
{ {
TMask *_msk, *_m2; TMask *_msk, *_m2;
@ -44,7 +44,7 @@ protected:
static void calcola_totale(); static void calcola_totale();
static void calcola(); static void calcola();
static void aggiungi(); static void aggiungi();
static void carica_riba(); static void carica_riba(int tipopag);
static void ord_data(); static void ord_data();
static void ord_fatt(); static void ord_fatt();
TSheet_field& righe_sheet() const; TSheet_field& righe_sheet() const;
@ -95,29 +95,29 @@ void TVariazione_distinte::init_modify_mode(TMask&)
// ritorna il prossimo numero di distanta valido // ritorna il prossimo numero di distanta valido
const char* TVariazione_distinte::get_next_key() 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(); TLocalisamfile& effetti = _rel->lfile();
effetti.first(); // mi posiziono all'inizio del file 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); effetti.setkey(4);
int err = effetti.read(_isgteq); int err = effetti.read(_isgteq);
if ( (err == _iskeynotfound) || (err == _iseof) ) //se non esiste alcuna distinta: if ( (err == _iskeynotfound) || (err == _iseof) ) //se non esiste alcuna distinta:
{ // il numero sarà 1 { // il numero sarà 1
err == NOERR; err == NOERR;
return format("%d|%ld", F_NUMBER, ndist); return format("%d|%ld", F_NUMBER, ndist);
} }
effetti.setkey(1); // mi posiziono all'inizio del file while (err == NOERR) //se esitono già delle distinte:
effetti.first(); // utilizzando la chiave 1 { // le leggo tutte e ne prendo il
while (err == NOERR) //se esitono già delle distinte: effetti.setkey(4); // numero, al verificarsi della fine file
{ // le leggo tutte e ne prendo il err = effetti.next(); // ho l'ultimo numero utilizzato
effetti.setkey(4); // numero, al verificarsi della fine file long n = effetti.get_long(EFF_NDIST);// incrementandolo avrò il numero che cercavo.
err = effetti.next(); // ho l'ultimo numero utilizzato
long n = effetti.get_long("NDIST"); // incrementandolo avrò il numero che cercavo.
if (n > ndist) if (n > ndist)
ndist = n; ndist = n;
} }
return format("%d|%ld",F_NUMBER,++ndist); // ritorna una stringa costruita utilizzando il numero della distinta return format("%d|%ld",F_NUMBER,++ndist); // ritorna una stringa costruita utilizzando il numero della distinta
} }
// ritorna un riferimento allo sheet degli effetti (righe) nella distinta // ritorna un riferimento allo sheet degli effetti (righe) nella distinta
@ -139,15 +139,15 @@ bool TVariazione_distinte::cerca(long num)
{ {
bool trovato = FALSE; bool trovato = FALSE;
int items = _distinta->items(); int items = _distinta->items();
TArray& righedist = _distinta->righe(); TArray& righedist = _distinta->righe();
for (int i = 0; i < items; i++)// ciclo sugli elementi dell'array for (int i = 0; i < items; i++) // ciclo sugli elementi dell'array
{ // se l'array è vuoto non trova nulla ed esce subito { // se l'array è vuoto non trova nulla ed esce subito
TEffetto& eff = (TEffetto&)righedist[i]; TEffetto& eff = (TEffetto&)righedist[i];
long num_eff = eff.get_long("NPROGTR"); long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num) if (num_eff == num)
{ {
trovato = TRUE; trovato = TRUE;
break;// esco quando ho già trovato l'effetto che cercavo break; // esco quando ho già trovato l'effetto che cercavo
} }
} }
return trovato; return trovato;
@ -157,14 +157,14 @@ bool TVariazione_distinte::cerca(long num)
void TVariazione_distinte::aggiorna() void TVariazione_distinte::aggiorna()
{ {
TSheet_field& shrighe = righe_sheet(); TSheet_field& shrighe = righe_sheet();
int items = shrighe.items(); int items = shrighe.items();
for (int i = 0; i < items; i++) // 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); TToken_string& row = shrighe.row(i);
row.restart(); row.restart();
long num = row.get_long(1); 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 { // carico l'effetto nell'array
TLocalisamfile eff(LF_EFFETTI); TLocalisamfile eff(LF_EFFETTI);
TRectype rec = eff.curr(); TRectype rec = eff.curr();
eff.setkey(1); eff.setkey(1);
@ -182,8 +182,8 @@ void TVariazione_distinte::aggiorna()
//che servirà per passarli alla write della distinta //che servirà per passarli alla write della distinta
TToken_string* TVariazione_distinte::common_f(const TMask& m) TToken_string* TVariazione_distinte::common_f(const TMask& m)
{ {
char tipodist = m.get(F_TIPODIST)[0]; // prendo i dati char tipodist = m.get(F_TIPODIST)[0];// prendo i dati
long ndist = m.get_long(F_NUMBER); // identificatvi della long ndist = m.get_long(F_NUMBER); // identificatvi della
TDate datadist = (TDate)m.get(F_DATA);// distinta TDate datadist = (TDate)m.get(F_DATA);// distinta
long codabi = m.get_long(F_CODABIP); // dalla maschera long codabi = m.get_long(F_CODABIP); // dalla maschera
long codcab = m.get_long(F_CODCABP); long codcab = m.get_long(F_CODCABP);
@ -192,8 +192,8 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m)
TToken_string* datidist= new TToken_string; // creo la token string TToken_string* datidist= new TToken_string; // creo la token string
datidist->cut(0); datidist->cut(0);
datidist->add(tipodist); // inserisco i dati nella datidist->add(tipodist); // inserisco i dati nella
datidist->add(ndist); // token string datidist->add(ndist); // token string
datidist->add(datadist); datidist->add(datadist);
datidist->add(codabi); datidist->add(codabi);
datidist->add(codcab); datidist->add(codcab);
@ -206,17 +206,17 @@ int TVariazione_distinte::read(TMask& m)
m.autoload(*_rel); m.autoload(*_rel);
int err = _rel->status(); int err = _rel->status();
if (err == NOERR) if (err == NOERR)
{ {
err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
err = _distinta->read(_rel->curr()); // legge la distinta dal record corrente della relazione err = _distinta->read(_rel->curr()); // legge la distinta dal record corrente della relazione
if (err == NOERR) if (err == NOERR)
{ {
TToken_string riga(80); TToken_string riga(80);
TSheet_field& shrighe = righe_sheet(); TSheet_field& shrighe = righe_sheet();
shrighe.reset(); shrighe.reset();
int items = _distinta->items();// prendo il numero di effetti nella distinta int items = _distinta->items(); // prendo il numero di effetti nella distinta
TArray& righedist = _distinta->righe(); 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++) for (int i = 0; i < items; i++)
{ {
TEffetto& eff = (TEffetto&)righedist[i];// prendo l'effetto dall'array TEffetto& eff = (TEffetto&)righedist[i];// prendo l'effetto dall'array
@ -227,27 +227,27 @@ int TVariazione_distinte::read(TMask& m)
riga.add(eff.get(EFF_DATASCAD)); riga.add(eff.get(EFF_DATASCAD));
long codcf = eff.get_long(EFF_CODCF); //prendo la ragione sociale del cliente long codcf = eff.get_long(EFF_CODCF); //prendo la ragione sociale del cliente
_clifo->zero(); //conoscendone il codice _clifo->zero(); //conoscendone il codice
_clifo->put("TIPOCF", 'C'); _clifo->put("TIPOCF", 'C');
_clifo->put("CODCF", codcf); _clifo->put("CODCF", codcf);
if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC")); if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC"));
if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i
{ //riferimenti al documento ed al numero di rata { //riferimenti al documento ed al numero di rata
const TRectype& rec_r = eff.row_r(1); const TRectype& rec_r = eff.row_r(1);
riga.add(rec_r.get(REFF_NFATT)); riga.add(rec_r.get(REFF_NFATT));
riga.add(rec_r.get(REFF_DATAFATT)); riga.add(rec_r.get(REFF_DATAFATT));
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA)); if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
else riga.add(("Varie")); else riga.add(("Varie"));
} }
else //se l'effetto contiene più di una fattura non metto i else //se l'effetto contiene più di una fattura non metto i
{ //riferimenti al documento ed al numero di rata { //riferimenti al documento ed al numero di rata
riga.add(("Varie")); riga.add(("Varie"));
riga.add(("Varie")); riga.add(("Varie"));
riga.add(("Varie")); riga.add(("Varie"));
} }
TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta TString codval(3); //gestisco il controllo sulla presenza o meno di una valuta
codval = eff.get(EFF_CODVAL); codval = eff.get(EFF_CODVAL);
if (i == 0) if (i == 0)
{ {
@ -283,8 +283,8 @@ void TVariazione_distinte::elimina()
TArray& righedist = distinta->righe(); TArray& righedist = distinta->righe();
for (int i = 0, k = i+1; i < sf.items(); i++, k++)//ciclo sugli elementi dello sheet for (int i = 0, k = i+1; i < sf.items(); i++, k++)//ciclo sugli elementi dello sheet
{ {
if (deleted) i--; // per posizionarsi correttamente sulla prima riga dello sheet if (deleted) i--; // per posizionarsi correttamente sulla prima riga dello sheet
if (sf.items() == 1)// non posso cancellare l'effetto se è l'unico della distinta 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!"); error_box("IMPOSSIBILE CANCELLARE: La distinta deve contenere almeno un effetto!");
break; break;
@ -294,24 +294,24 @@ void TVariazione_distinte::elimina()
if (condition) if (condition)
{ {
long num = row.get_long(1); long num = row.get_long(1);
for (int j = 0; j < distinta->items(); j++)//ciclo sugli elementi dell'array for (int j = 0; j < distinta->items(); j++) //ciclo sugli elementi dell'array
{ {
TEffetto& eff = (TEffetto&)righedist[j]; TEffetto& eff = (TEffetto&)righedist[j];
long num_eff = eff.get_long("NPROGTR"); long num_eff = eff.get_long(EFF_NPROGTR);
if (num_eff == num) if (num_eff == num)
{ {
righedist.destroy(j,TRUE);// tolgo l'effetto dall'array righedist.destroy(j,TRUE); // tolgo l'effetto dall'array
break; break;
} }
} }
sf.destroy(i); deleted = TRUE;// tolgo l'effetto dallo sheet sf.destroy(i); deleted = TRUE; // tolgo l'effetto dallo sheet
eff.read(file, tipodist, ndist, k); eff.read(file, tipodist, ndist, k);
eff.zero("TIPODIST"); eff.zero(EFF_TIPODIST);
eff.zero("NDIST"); eff.zero(EFF_NDIST);
eff.zero("DATADIST"); eff.zero(EFF_DATADIST);
eff.zero("NRIGADIST"); eff.zero(EFF_NRIGADIST);
eff.zero("CODABIP"); eff.zero(EFF_CODABIP);
eff.zero("CODCABP"); eff.zero(EFF_CODCABP);
eff.rewrite(file); eff.rewrite(file);
} }
else deleted = FALSE; else deleted = FALSE;
@ -321,32 +321,29 @@ void TVariazione_distinte::elimina()
// riscrive distinta // riscrive distinta
int TVariazione_distinte::rewrite(const TMask& m) 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(); // prima di riscrive controllo se ci sono effetti nello sheet selezionati per l'eliminazione
TSheet_field& sf = righe_sheet(); bool condition = FALSE;
bool condition = FALSE;
for (int i = 0; i < sf.items(); i++) for (int i = 0; i < sf.items(); i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
if (condition = *row.get(0) == 'X') break;// se trovo un effetto selezionato esco dal ciclo if (condition = *row.get(0) == 'X') break; // se trovo un effetto selezionato esco dal ciclo
} }
// solo se ho trovato effetti selezionati if (condition) // solo se ho trovato effetti selezionati
if (condition) if (yesno_box("Vuoi veramete eliminare gli effetti selezionati"))
if (yesno_box("Vuoi veramete eliminare gli effetti selezionati")) elimina(); //elimino gli effetti nello sheet che sono selezionati con la "X"
elimina(); //elimino gli effetti nello sheet che sono selezionati con la "X" int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta char tipodist = m.get(F_TIPODIST)[0]; // procedo con la riscrittura
// procedo con la riscrittura
char tipodist = m.get(F_TIPODIST)[0];
long ndist = m.get_long(F_NUMBER); long ndist = m.get_long(F_NUMBER);
aggiorna(); // aggiorno l'array aggiorna(); // aggiorno l'array
err = _distinta->rewrite(common_f(m)); err = _distinta->rewrite(common_f(m));
// riposiziono la relazione
if (err == NOERR) if (err == NOERR) // riposiziono la relazione
{ {
_rel->lfile().setkey(4); _rel->lfile().setkey(4);
TRectype& curr = _rel->curr(); TRectype& curr = _rel->curr();
curr.put("TIPODIST", tipodist); curr.put(EFF_TIPODIST, tipodist);
curr. put("NDIST", ndist); curr. put(EFF_NDIST, ndist);
curr. put("NRIGADIST", 1); curr. put(EFF_NRIGADIST, 1);
_rel->read(); _rel->read();
} }
return err; return err;
@ -354,20 +351,20 @@ int TVariazione_distinte::rewrite(const TMask& m)
// scrive distinta // scrive distinta
int TVariazione_distinte::write(const TMask& m) int TVariazione_distinte::write(const TMask& m)
{ {
int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta int err = _distinta->reset(); //resetto l'array che contiene gli effetti nella distinta
char tipodist = m.get(F_TIPODIST)[0]; char tipodist = m.get(F_TIPODIST)[0];
long ndist = m.get_long(F_NUMBER); long ndist = m.get_long(F_NUMBER);
aggiorna(); // aggiorno l'array aggiorna(); // aggiorno l'array
err = _distinta->write(TRUE, common_f(m)); err = _distinta->write(TRUE, common_f(m));
//riposiziono la relazione //riposiziono la relazione
if (err == NOERR) if (err == NOERR)
{ {
_rel->lfile().setkey(4); _rel->lfile().setkey(4);
TRectype& curr = _rel->curr(); TRectype& curr = _rel->curr();
curr.put("TIPODIST", tipodist); curr.put(EFF_TIPODIST, tipodist);
curr. put("NDIST", ndist); curr. put(EFF_NDIST, ndist);
curr. put("NRIGADIST", 1); curr. put(EFF_NRIGADIST, 1);
_rel->read(); _rel->read();
} }
return err; 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: //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 // vengono presi tutti gli effetti sul file LF_EFFETTI che non hanno ancora un riferimento ad
// una distinta // una distinta; inoltre è possibile inserire nella distinta effettiaventi lo stesso tipo di pagamento.
void TVariazione_distinte::carica_riba() void TVariazione_distinte::carica_riba(int tipopag)
{ {
// deve caricare solo quegli effetti che non hanno riferimento alla distinta // deve caricare solo quegli effetti che non hanno riferimento alla distinta
// quindi setta i campi ad essa relativi a zero // quindi setta i campi ad essa relativi a zero
@ -441,41 +438,52 @@ void TVariazione_distinte::carica_riba()
sf.reset(); sf.reset();
int err, i = 0; int err, i = 0;
err = eff.read(f, tipodist, ndist, nrigadist); err = eff.read(f, tipodist, ndist, nrigadist);
while ( (err == NOERR) && (tipodist == 0) ) int tipop = eff.get_int(EFF_TIPOPAG);
while ( (err == NOERR) && (tipodist == 0))
{ //carico tutti gli effetti, che soddisfano alla condizione, nello sheet { //carico tutti gli effetti, che soddisfano alla condizione, nello sheet
riga.cut(0); bool condition = (tipopag == tipop);
riga.add(' '); // se effetti di tipo cambiario (pagherò, tratta, tratta accettata)
const long numero = eff.get_long(EFF_NPROGTR); if (tipopag == 2 || tipopag ==5 || tipopag == 7)
riga.add(numero); condition = (tipop == 2 || tipop ==5 || tipop == 7);
riga.add(eff.get(EFF_DATASCAD)); // se non indico un tipo di effetto prendo il tipo del primo che seleziono
long codcf = eff.get_long(EFF_CODCF); if (tipopag == 0) condition =TRUE;
clifo->zero(); if (condition)
clifo->put("TIPOCF", 'C'); {
clifo->put("CODCF", codcf); riga.cut(0);
if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC")); riga.add(' ');
if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i const long numero = eff.get_long(EFF_NPROGTR);
{ //riferimenti al documento ed al numero di rata riga.add(numero);
const TRectype& rec_r = eff.row_r(1); riga.add(eff.get(EFF_DATASCAD));
riga.add(rec_r.get(REFF_NFATT)); long codcf = eff.get_long(EFF_CODCF);
riga.add(rec_r.get(REFF_DATAFATT)); clifo->zero();
if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA)); clifo->put("TIPOCF", 'C');
else riga.add(("Varie")); clifo->put("CODCF", codcf);
} if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC"));
else //se l'effetto contiene più di una fattura non metto i if (eff.fatt(numero)) //se l'effetto contiene solo una fattura metto i
{ //riferimenti al documento ed al numero di rata { //riferimenti al documento ed al numero di rata
riga.add(("Varie")); const TRectype& rec_r = eff.row_r(1);
riga.add(("Varie")); riga.add(rec_r.get(REFF_NFATT));
riga.add(("Varie")); riga.add(rec_r.get(REFF_DATAFATT));
} if (eff.rows_r() == 1) riga.add(rec_r.get(REFF_NRATA));
else riga.add(("Varie"));
riga.add(eff.get(EFF_CODVAL)); }
riga.add(eff.get(EFF_IMPORTO)); else //se l'effetto contiene più di una fattura non metto i
riga.add(eff.get(EFF_IMPORTOVAL)); { //riferimenti al documento ed al numero di rata
sf.row(i) = riga; riga.add(("Varie"));
i++; 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); f.setkey(4);
err = eff.next(f); // leggo l'effetto successivo e ne prendo il tipodistinta per il controllo 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);
} }
} }
@ -509,13 +517,14 @@ bool TVariazione_distinte::importo_handler(TMask_field& f, KEY k)
TMask* m2 = app()._m2; TMask* m2 = app()._m2;
long imp_pres = m.get_long(F_TOTIMP);// importo presentato long imp_pres = m.get_long(F_TOTIMP);// importo presentato
long imp = m.get_long(F_IMP);// importo distinta long imp = m.get_long(F_IMP);// importo distinta
long impdist = imp - imp_pres; 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 ... // se importo distinta maggiore importo presentato si devono andare a caricare effetti in ...
// ... automatico per un valore minore uguale alla differenza dei suddetti importi // ... automatico per un valore minore uguale alla differenza dei suddetti importi
if (impdist > 0) if (impdist > 0)
{ {
app().begin_wait(); app().begin_wait();
carica_riba(); carica_riba(tipopag);
app().end_wait(); app().end_wait();
m2->reset(F_TOTIMPDIST); m2->reset(F_TOTIMPDIST);
m2->reset(F_IMPSEL); 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 //non ancora assegnati, chiamato quando si aggiunge una riga allo sheet degli effetti della distinta
void TVariazione_distinte::aggiungi() void TVariazione_distinte::aggiungi()
{ {
TMask* m = app()._msk;
TMask* m2 = app()._m2; TMask* m2 = app()._m2;
int tipopag = m->get_int(F_TIPOPAG);
app().begin_wait(); app().begin_wait();
carica_riba(); carica_riba(tipopag);
app().end_wait(); app().end_wait();
m2->reset(F_TOTIMPDIST); m2->reset(F_TOTIMPDIST);
m2->reset(F_IMPSEL); m2->reset(F_IMPSEL);

View File

@ -4,18 +4,19 @@
// campi maschera EF0300a.msk // campi maschera EF0300a.msk
#define F_TIPODIST 101 #define F_TIPODIST 101
#define F_NUMBER 102 #define F_NUMBER 102
#define F_NUMBERRIGA 103 #define F_NUMBERRIGA 103
#define F_DATA 104 #define F_DATA 104
#define F_DENBANP 105 #define F_DENBANP 105
#define F_CODABIP 106 #define F_CODABIP 106
#define F_CODCABP 107 #define F_CODCABP 107
#define F_TOTIMP 108 #define F_TOTIMP 108
#define F_IMP 109 #define F_IMP 109
#define F_TOTIMPVAL 110 #define F_TOTIMPVAL 110
#define F_CODVAL 111 #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 PAGE "Gestione Distinte" 0 -1 0 19
GROUPBOX DLG_NULL 78 10 GROUPBOX DLG_NULL 78 11
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
END END
LIST F_TIPODIST 19 LIST F_TIPODIST 17
BEGIN BEGIN
PROMPT 2 1 "Tipo Distinta " PROMPT 2 1 "Tipo Distinta "
KEY 4 KEY 4
@ -21,7 +21,7 @@ BEGIN
ITEM "S|Allo sconto" ITEM "S|Allo sconto"
END END
LIST F_NUMBERRIGA 10 LIST F_NUMBERRIGA 12
BEGIN BEGIN
PROMPT 1 60 "Numero Riga Distinta " PROMPT 1 60 "Numero Riga Distinta "
KEY 4 KEY 4
@ -51,7 +51,7 @@ END
DATE F_DATA DATE F_DATA
BEGIN BEGIN
PROMPT 2 2 "Data Distinta " PROMPT 2 2 "Data Distinta "
FIELD LF_EFFETTI->DATADIST FIELD LF_EFFETTI->DATADIST
END END
TEXT DLG_NULL TEXT DLG_NULL
@ -135,9 +135,24 @@ BEGIN
OUTPUT F_CODVAL CODTAB OUTPUT F_CODVAL CODTAB
END 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 SPREADSHEET F_SHEET_RIBA 78 10
BEGIN BEGIN
PROMPT 1 10 "RIGHE DISTINTA" PROMPT 1 12 "RIGHE DISTINTA"
ITEM "" ITEM ""
ITEM "Nr. Ri.Ba." ITEM "Nr. Ri.Ba."
ITEM "Scadenza" ITEM "Scadenza"

View File

@ -11,9 +11,9 @@
#include "ef0101.h" #include "ef0101.h"
#include "ef0400.h" #include "ef0400.h"
///////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////
//Classe per l'eliminazione di effetti di effetti con selezione per gruppi // //Classe per l'eliminazione di effetti di effetti con selezione per gruppi //
///////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////
class TEliminazione_effetti: public TApplication class TEliminazione_effetti: public TApplication
{ {
TMask *_msk; TMask *_msk;

View File

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

View File

@ -16,9 +16,9 @@
class TRiba_form; class TRiba_form;
class TDistinta_form; class TDistinta_form;
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////
// 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 class TEmissione: public TApplication
{ {
TMask* _msk; TMask* _msk;
@ -49,9 +49,9 @@ public:
// restituisce un riferimento all' applicazione // restituisce un riferimento all' applicazione
inline TEmissione& app() { return (TEmissione&) main_app();} 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 class TRiba_form: public TForm
{ {
protected: protected:
@ -61,9 +61,9 @@ public:
virtual ~TRiba_form(){}; 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 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_ADIST 113
#define F_DA_DATA3 114 #define F_DA_DATA3 114
#define F_A_DATA3 115 #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

View File

@ -4,19 +4,21 @@ PAGE "Stampe di Controllo Effetti" -1 -1 60 13
DATE F_DATA_STAMPA DATE F_DATA_STAMPA
BEGIN BEGIN
PROMPT 30 1 "Data di stampa " PROMPT 30 0 "Data di stampa "
FLAGS "A" FLAGS "A"
END END
RADIOBUTTON RDB_TIPOST 24 RADIOBUTTON RDB_TIPOST 24
BEGIN BEGIN
PROMPT 2 1 "Stampa per " PROMPT 2 0 "Stampa per "
ITEM "1|Scadenza" ITEM "1|Banca"
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ MESSAGE SHOW,2@|HIDE,1@|HIDE,3@|HIDE,4@
ITEM "2|Banca" ITEM "2|Cliente"
MESSAGE SHOW,2@|HIDE,1@|HIDE,3@ MESSAGE SHOW,4@|HIDE,1@|HIDE,2@|HIDE,3@
ITEM "3|Distinta" 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 END
GROUPBOX DLG_NULL 55 3 GROUPBOX DLG_NULL 55 3
@ -67,7 +69,7 @@ BEGIN
INPUT CODTAB F_ABAN INPUT CODTAB F_ABAN
DISPLAY "Codice ABI" CODTAB[1,5] DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Denominazione@50" S0 DISPLAY "Denominazione@50" S0
OUTPUT F_ABAN CODTAB[1,5] OUTPUT F_ABAN CODTAB[1,5]
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -186,6 +188,54 @@ BEGIN
WARNING "Data limite superiore non valida" WARNING "Data limite superiore non valida"
END 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 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""