modifiche di perfezionamento ai vari programmi

git-svn-id: svn://10.65.10.50/trunk@4130 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
paola 1997-02-12 09:15:50 +00:00
parent 2f49e95045
commit 36dd13ec55
14 changed files with 227 additions and 165 deletions

View File

@ -4,9 +4,6 @@
#include <utility.h> #include <utility.h>
#include <lffiles.h> #include <lffiles.h>
#include <comuni.h> #include <comuni.h>
#include <effetti.h>
#include <reffetti.h>
#include <cession.h>
#include "ef0.h" #include "ef0.h"
#include "ef0100.h" #include "ef0100.h"
#include "ef0101.h" #include "ef0101.h"

View File

@ -170,7 +170,8 @@ END
NUMBER F_TOTIMP 18 2 NUMBER F_TOTIMP 18 2
BEGIN BEGIN
PROMPT 2 18 "Totale importi " PROMPT 2 18 "Totale importi "
FIELD LF_EFFETTI->IMPORTO FIELD LF_EFFETTI->IMPORTO
PICTURE "###.###.###.###,@@"
FLAG "D" FLAG "D"
END END
@ -178,6 +179,7 @@ NUMBER F_TOTIMPVAL 18 3
BEGIN BEGIN
PROMPT 2 19 "Totale importi in valuta " PROMPT 2 19 "Totale importi in valuta "
FIELD LF_EFFETTI->IMPORTOVAL FIELD LF_EFFETTI->IMPORTOVAL
PICTURE "###.###.###.###,@@@"
FLAG "D" FLAG "D"
//GROUP 1 //GROUP 1
END END

View File

@ -1,10 +1,7 @@
#include "effetti.h"
#include "reffetti.h"
#include "cession.h"
#include "ef0101.h" #include "ef0101.h"
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// definizione dei metodi della classe TEffetto // // Definizione dei metodi della classe TEffetto //
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// costruttore di default // costruttore di default
@ -70,9 +67,9 @@ long TEffetto::renum(long numeff)
numeff = get_next_key(codcf); numeff = get_next_key(codcf);
} }
char num[7]; sprintf(num, "%ld", numeff); char num[7]; sprintf(num, "%ld", numeff);
renum_key("NPROGTR", num); // aggiorna testata renum_key(EFF_NPROGTR, num); // aggiorna testata
_righe.renum_key("NPROGTR", num); // aggiorna righe ok _righe.renum_key(EFF_NPROGTR, num); // aggiorna righe ok
_cess.renum_key("NPROGTR", num); // aggiorna cessionari ok _cess.renum_key(EFF_NPROGTR, num); // aggiorna cessionari ok
return numeff; return numeff;
} }

View File

@ -1,13 +1,17 @@
#ifndef __RELATION_H #ifndef __RELATION_H
#include <relation.h> #include <relation.h>
#endif #endif
#ifndef __RECTYPES_H
#ifndef __RECARRAY_H #include <rectypes.h>
#include <recarray.h>
#endif #endif
#include <effetti.h>
#include <reffetti.h>
#include <cession.h>
// definizione dell'oggetto Effetto con la classe TEffetto
//////////////////////////////////////////////////////////////////////////////////
// Definizione dell'oggetto Effetto con la classe TEffetto//
/////////////////////////////////////////////////////////////////////////////////
class TEffetto:public TRectype class TEffetto:public TRectype
{ {
TRecord_array _righe,// righe dell'effetto TRecord_array _righe,// righe dell'effetto
@ -57,19 +61,19 @@ public:
// rimuove l'effetto // rimuove l'effetto
int remove(TLocalisamfile& f)const; int remove(TLocalisamfile& f)const;
// restituisce il numero progressivo dell'effetto estraendolo dal record // restituisce il numero progressivo dell'effetto estraendolo dal record
long numero() const { return get_long("NPROGTR"); } long numero() const { return get_long(EFF_NPROGTR); }
// restituisce il codice del cliente intestatario dell'effetto estraendolo dal record // restituisce il codice del cliente intestatario dell'effetto estraendolo dal record
long codicec() const { return get_long("CODCF"); } long codicec() const { return get_long(EFF_CODCF); }
// restituisce la data di scadenza dell'effetto estraendola dal record // restituisce la data di scadenza dell'effetto estraendola dal record
TDate datasc() const { return get_date("DATASCAD"); } TDate datasc() const { return get_date(EFF_DATASCAD); }
// restituisce il tipo di distinta a cui appartiene l'effetto estraendolo dal record // restituisce il tipo di distinta a cui appartiene l'effetto estraendolo dal record
char tipodist() const { return get_char("TIPODIST"); } char tipodist() const { return get_char(EFF_TIPODIST); }
// restituisce il numero della distinta a cui appartiene l'effetto estraendolo dal record // restituisce il numero della distinta a cui appartiene l'effetto estraendolo dal record
long ndist() const { return get_long("NDIST"); } long ndist() const { return get_long(EFF_NDIST); }
// restituisce il numero della riga distinta a cui appartiene l'effetto estraendolo dal record // restituisce il numero della riga distinta a cui appartiene l'effetto estraendolo dal record
long nrgdist() const { return get_long("NRIGADIST"); } long nrgdist() const { return get_long(EFF_NRIGADIST); }
// restituisce l'importo dell'effetto // restituisce l'importo dell'effetto
long importo() const { return get_long("IMPORTO"); } long importo() const { return get_long(EFF_IMPORTO); }
// setta i campi per la quarta chiave del file // setta i campi per la quarta chiave del file
void put_key(TRectype& rec,char tipodist, long ndist, long nrigadist = 0); void put_key(TRectype& rec,char tipodist, long ndist, long nrigadist = 0);
// setta i campi per la prima chiave del file // setta i campi per la prima chiave del file

View File

@ -3,9 +3,7 @@
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
#include <lffiles.h> #include <lffiles.h>
#include <effetti.h> #include <clifo.h>
#include <reffetti.h>
#include <cession.h>
#include "ef0.h" #include "ef0.h"
#include "ef0300.h" #include "ef0300.h"
#include "ef0301.h" #include "ef0301.h"
@ -229,9 +227,9 @@ int TVariazione_distinte::read(TMask& m)
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(CLI_TIPOCF , 'C');
_clifo->put("CODCF", codcf); _clifo->put(CLI_CODCF, codcf);
if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC")); if (_clifo->read() == NOERR) riga.add(_clifo->get(CLI_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
@ -457,9 +455,9 @@ void TVariazione_distinte::carica_riba(int tipopag)
riga.add(eff.get(EFF_DATASCAD)); riga.add(eff.get(EFF_DATASCAD));
long codcf = eff.get_long(EFF_CODCF); long codcf = eff.get_long(EFF_CODCF);
clifo->zero(); clifo->zero();
clifo->put("TIPOCF", 'C'); clifo->put(CLI_TIPOCF, 'C');
clifo->put("CODCF", codcf); clifo->put(CLI_CODCF, codcf);
if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC")); if (clifo->read() == NOERR) riga.add(clifo->get(CLI_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);
@ -841,7 +839,8 @@ void TVariazione_distinte::calcola()
long importo = m->get_long(F_IMP); long importo = m->get_long(F_IMP);
long impdist = importo - imp_pres; long impdist = importo - imp_pres;
if (impdist == 0) if (impdist == 0)
m2->set(F_TOTIMPDIST, importo); m2->set(F_TOTIMPDIST, importo);
m2->set(F_IMPSEL, impsel);
for (int i = 0; i < items; i++) for (int i = 0; i < items; i++)
{ {
TToken_string& row = sf.row(i); TToken_string& row = sf.row(i);
@ -854,7 +853,7 @@ void TVariazione_distinte::calcola()
m2->set(F_IMPSEL, impsel); m2->set(F_IMPSEL, impsel);
if (impdist == 0 && imp_pres == 0) if (impdist == 0 && imp_pres == 0)
m2->set(F_TOTIMPDIST, impsel); m2->set(F_TOTIMPDIST, impsel);
} }
} }
} }

View File

@ -110,11 +110,13 @@ END
NUMBER F_TOTIMP 18 2 NUMBER F_TOTIMP 18 2
BEGIN BEGIN
PROMPT 2 6 "Valore di presentazione " PROMPT 2 6 "Valore di presentazione "
PICTURE "###.###.###.###,@@"
END END
NUMBER F_IMP 18 2 NUMBER F_IMP 18 2
BEGIN BEGIN
PROMPT 2 7 "Importo Distinta " PROMPT 2 7 "Importo Distinta "
PICTURE "###.###.###.###,@@"
NUM_EXPR #F_IMP>=#F_TOTIMP NUM_EXPR #F_IMP>=#F_TOTIMP
WARNING "Il valore di presentazione non puo' superare l'importo della distinta" WARNING "Il valore di presentazione non puo' superare l'importo della distinta"
END END
@ -122,6 +124,7 @@ END
NUMBER F_TOTIMPVAL 18 3 NUMBER F_TOTIMPVAL 18 3
BEGIN BEGIN
PROMPT 2 8 "Valore di pres. in val. " PROMPT 2 8 "Valore di pres. in val. "
PICTURE "###.###.###.###,@@@"
END END
STRING F_CODVAL 3 STRING F_CODVAL 3

View File

@ -1,6 +1,6 @@
#include "ef0300.h" #include "ef0300.h"
PAGE "Righe Distinta" -1 -1 76 13 PAGE "Righe Distinta" 16 7 78 13
LISTBOX F_CHECK 5 LISTBOX F_CHECK 5
BEGIN BEGIN
@ -61,6 +61,7 @@ NUMBER F_IMPORTO 18 2
BEGIN BEGIN
PROMPT 2 9 "Importo " PROMPT 2 9 "Importo "
FIELD LF_EFFETTI->IMPORTO FIELD LF_EFFETTI->IMPORTO
PICTURE "###.###.###.###,@@"
FLAGS "D" FLAGS "D"
END END
@ -68,6 +69,7 @@ NUMBER F_IMPORTOVAL 18 3
BEGIN BEGIN
PROMPT 2 9 "Importo Val. " PROMPT 2 9 "Importo Val. "
FIELD LF_EFFETTI->IMPORTOVAL FIELD LF_EFFETTI->IMPORTOVAL
PICTURE "###.###.###.###,@@@"
FLAGS "D" FLAGS "D"
END END

View File

@ -1,6 +1,6 @@
#include "ef0300.h" #include "ef0300.h"
PAGE "Aggiungi Effetti alla Distinta" -1 -1 78 20 PAGE "Aggiungi Effetti alla Distinta" 16 2 78 20
GROUPBOX DLG_NULL 60 3 GROUPBOX DLG_NULL 60 3
BEGIN BEGIN
@ -43,11 +43,13 @@ END
NUMBER F_TOTIMPDIST 18 2 NUMBER F_TOTIMPDIST 18 2
BEGIN BEGIN
PROMPT 2 18 "Importo " PROMPT 2 18 "Importo "
PICTURE "###.###.###.###,@@"
END END
NUMBER F_IMPSEL 18 2 NUMBER F_IMPSEL 18 2
BEGIN BEGIN
PROMPT 37 18 "Importo Selezionato " PROMPT 37 18 "Importo Selezionato "
PICTURE "###.###.###.###,@@"
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2

View File

@ -1,11 +1,8 @@
#include "effetti.h"
#include "reffetti.h"
#include "cession.h"
#include "ef0301.h" #include "ef0301.h"
/////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
// definizione dei metodi della classe TDistinta // // Definizione dei metodi della classe TDistinta //
/////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
// costruttore distinta utilizzando il record passato // costruttore distinta utilizzando il record passato
TDistinta::TDistinta(const TRectype& rec) TDistinta::TDistinta(const TRectype& rec)
@ -56,12 +53,12 @@ int TDistinta::write(bool force, TToken_string* dati_dist)
{ {
TEffetto& effetto = (TEffetto&)_righe_dist[i]; TEffetto& effetto = (TEffetto&)_righe_dist[i];
dati_dist->restart();// token string che contiene i dati da registrare sull'effetto dati_dist->restart();// token string che contiene i dati da registrare sull'effetto
effetto.put("TIPODIST", dati_dist->get()); effetto.put(EFF_TIPODIST, dati_dist->get());
effetto.put("NDIST", dati_dist->get_long()); effetto.put(EFF_NDIST, dati_dist->get_long());
effetto.put("DATADIST", dati_dist->get()); effetto.put(EFF_DATADIST, dati_dist->get());
effetto.put("CODABIP", dati_dist->get_long()); effetto.put(EFF_CODABIP, dati_dist->get_long());
effetto.put("CODCABP", dati_dist->get_long()); effetto.put(EFF_CODCABP, dati_dist->get_long());
effetto.put("NRIGADIST", i+1); effetto.put(EFF_NRIGADIST, i+1);
err = effetto.rewrite(f);//riscrivo l'effetto con i dati della distinta a cui appartiene err = effetto.rewrite(f);//riscrivo l'effetto con i dati della distinta a cui appartiene
} }
return err; return err;
@ -79,12 +76,12 @@ int TDistinta::remove(char tipodist, long ndist)
{ {
TEffetto& effetto = (TEffetto&)_righe_dist[i]; TEffetto& effetto = (TEffetto&)_righe_dist[i];
err = effetto.read(file, tipodist,ndist,i+1); err = effetto.read(file, tipodist,ndist,i+1);
effetto.zero("TIPODIST"); effetto.zero(EFF_TIPODIST);
effetto.zero("NDIST"); effetto.zero(EFF_NDIST);
effetto.zero("DATADIST"); effetto.zero(EFF_DATADIST);
effetto.zero("NRIGADIST"); effetto.zero(EFF_NRIGADIST);
effetto.zero("CODABIP"); effetto.zero(EFF_CODABIP);
effetto.zero("CODCABP"); effetto.zero(EFF_CODCABP);
err = effetto.rewrite(file); err = effetto.rewrite(file);
} }
reset();//elimino gli effetti dalla memoria resettando l'array reset();//elimino gli effetti dalla memoria resettando l'array

View File

@ -1,6 +1,3 @@
#ifndef __RELATION_H
#include <relation.h>
#endif
#include "ef0101.h" #include "ef0101.h"
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
@ -28,9 +25,9 @@ public:
// rimuove la distinta del tipo e numero passati // rimuove la distinta del tipo e numero passati
int remove(char tipodist, long ndist); 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("TIPODIST"); } 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("NDIST"); } const long ndist() const { return ((TRectype&)_righe_dist[0]).get_long(EFF_NDIST); }
// costruttore di default // costruttore di default
TDistinta() {}; TDistinta() {};
// costruttore distinta del tipo e numero passato // costruttore distinta del tipo e numero passato

View File

@ -4,9 +4,6 @@
#include <sheet.h> #include <sheet.h>
#include <utility.h> #include <utility.h>
#include <lffiles.h> #include <lffiles.h>
#include <effetti.h>
#include <reffetti.h>
#include <cession.h>
#include "ef0.h" #include "ef0.h"
#include "ef0101.h" #include "ef0101.h"
#include "ef0400.h" #include "ef0400.h"
@ -93,7 +90,7 @@ bool TEliminazione_effetti::from_numero_handler(TMask_field& f, KEY k)
{ {
TRectype* from = app()._from; TRectype* from = app()._from;
long num = m.get_long(F_DA_RIBA); long num = m.get_long(F_DA_RIBA);
from->put("NPROGTR", num); from->put(EFF_NPROGTR, num);
} }
} }
return TRUE; return TRUE;
@ -109,7 +106,7 @@ bool TEliminazione_effetti::to_numero_handler(TMask_field& f, KEY k)
{ {
TRectype* to = app()._to; TRectype* to = app()._to;
long num = m.get_long(F_A_RIBA); long num = m.get_long(F_A_RIBA);
to->put("NPROGTR", num); to->put(EFF_NPROGTR, num);
} }
} }
return TRUE; return TRUE;
@ -126,8 +123,8 @@ bool TEliminazione_effetti::from_data_handler(TMask_field& f, KEY k)
TRectype* from = app()._from; TRectype* from = app()._from;
TDate data = m.get(F_DA_DATA); TDate data = m.get(F_DA_DATA);
long num = m.get_long(F_DA_RIBA); long num = m.get_long(F_DA_RIBA);
from->put("NPROGTR", num); from->put(EFF_NPROGTR, num);
from->put("DATASCAD", data); from->put(EFF_DATASCAD, data);
} }
} }
return TRUE; return TRUE;
@ -144,8 +141,8 @@ bool TEliminazione_effetti::to_data_handler(TMask_field& f, KEY k)
TRectype* to = app()._to; TRectype* to = app()._to;
TDate data = m.get(F_A_DATA); TDate data = m.get(F_A_DATA);
long num = m.get_long(F_A_RIBA); long num = m.get_long(F_A_RIBA);
to->put("NPROGTR", num); to->put(EFF_NPROGTR, num);
to->put("DATASCAD", data); to->put(EFF_DATASCAD, data);
} }
} }
return TRUE; return TRUE;

View File

@ -16,24 +16,21 @@
class TRiba_form; class TRiba_form;
class TDistinta_form; class TDistinta_form;
class TRiba_file; 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 //
/////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////
enum fo{kb360 = 1, kb720 = 2, kb1200 = 3, kb1440 = 4};
class TEmissione: public TApplication class TEmissione: public TApplication
{ {
fo _foutput; fo _foutput;
TMask* _msk; TMask* _msk;
TRelation* _firmrel; // relazione di gestione dei dati della ditta corrente TRelation* _firmrel;
TRelation* _rel; TRelation* _rel;
TCursor* _cur; TCursor* _cur;
TRiba_form* _formrb; TRiba_form* _formrb;
TDistinta_form* _formdse; TDistinta_form* _formdse;
TRiba_file* _trasfile; TRiba_file* _trasfile;
int _base_page_no; // numero della pagina base per la stampa del numero di pagina int _base_page_no;
protected: protected:
virtual bool create(void); virtual bool create(void);
virtual bool destroy(void) ; virtual bool destroy(void) ;
@ -56,6 +53,7 @@ protected:
static bool annulla_handler(TMask_field& f, KEY k); static bool annulla_handler(TMask_field& f, KEY k);
public: public:
int base_no() { return _base_page_no;} int base_no() { return _base_page_no;}
const TMask& msk() const {return *_msk;}
TEmissione() {}; TEmissione() {};
virtual ~TEmissione() {}; virtual ~TEmissione() {};
}; };
@ -78,16 +76,15 @@ public:
///////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////
// 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
{ {
TRelation *_firmrel; // relazione di gestione dei dati della ditta corrente TRelation *_firmrel;
TSorted_cursor *_cursor; // curosore che permette l'ordinamento degli effetti nella distinta TSorted_cursor *_cursor;// curosore che permette l'ordinamento degli effetti nella distinta
protected: // per data scadenza o per dati fattura protected: // per data scadenza o per dati fattura
virtual bool validate(TForm_item &, TToken_string &); virtual bool validate(TForm_item &, TToken_string &);
public: public:
void set_order(const char tipo); // setta l'ordinamento del cursore void set_order(const char tipo);
virtual TCursor* cursor() const { return (TCursor*)_cursor;} // restituisce il cursore virtual TCursor* cursor() const { return (TCursor*)_cursor;}
TDistinta_form(const char*, TRelation *); TDistinta_form(const char*, TRelation *);
virtual ~TDistinta_form(); virtual ~TDistinta_form();
}; };
@ -115,12 +112,12 @@ public:
bool TEmissione::create() bool TEmissione::create()
{ {
TApplication::create(); TApplication::create();
_formrb = NULL; // l'inizializzazione avviene nel metodo print() _formrb = NULL;
_formdse = NULL; // a seconda che si stampino le riba o la distinta _formdse = NULL;
_msk = new TMask("ef0500a"); _msk = new TMask("ef0500a");
_firmrel= new TRelation(LF_NDITTE); _firmrel= new TRelation(LF_NDITTE);
_firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR"); _firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
_firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta _firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA");
_rel = new TRelation(LF_EFFETTI); _rel = new TRelation(LF_EFFETTI);
_rel->add(LF_REFFETTI, "NPROGTR=NPROGTR"); _rel->add(LF_REFFETTI, "NPROGTR=NPROGTR");
_rel->add(LF_CESS, "NPROGTR=NPROGTR"); _rel->add(LF_CESS, "NPROGTR=NPROGTR");
@ -129,7 +126,7 @@ bool TEmissione::create()
_rel->add("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402); _rel->add("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402);
_rel->add(LF_COMUNI, "STATO=STATOCF|COM=COMCF",1,LF_CLIFO); _rel->add(LF_COMUNI, "STATO=STATOCF|COM=COMCF",1,LF_CLIFO);
_cur = NULL; _cur = NULL;
_trasfile = new TRiba_file("riba_el", "riba.ini"); _trasfile = new TRiba_file("ribael.dat", "riba.ini");
_trasfile->set_ditta(get_firm()); _trasfile->set_ditta(get_firm());
_msk->set_handler(DLG_CANCEL, annulla_handler); _msk->set_handler(DLG_CANCEL, annulla_handler);
dispatch_e_menu(BAR_ITEM(1)); dispatch_e_menu(BAR_ITEM(1));
@ -165,10 +162,10 @@ void TEmissione::on_firm_change()
bool TEmissione::menu(MENU_TAG) bool TEmissione::menu(MENU_TAG)
{ {
KEY key = K_ENTER; KEY key = K_ENTER;
while (key != K_QUIT) // rimane in esecuzione finchè non si chiude la maschera while (key != K_QUIT)
{ {
key = _msk->run(); key = _msk->run();
if (key == K_ENTER) // se si confermano i dati inseriti if (key == K_ENTER)
conferma(); conferma();
} }
return FALSE; return FALSE;
@ -178,10 +175,10 @@ bool TEmissione::menu(MENU_TAG)
void TEmissione::conferma() void TEmissione::conferma()
{ {
int tipoemis = _msk->get_int(F_TIPOEMIS); int tipoemis = _msk->get_int(F_TIPOEMIS);
if (tipoemis == 1) // emissione su floppy if (tipoemis == 1)
floppy(); floppy();
else else
print(); // emissione su carta print();
} }
// gestione emissione su floppy // gestione emissione su floppy
@ -190,43 +187,47 @@ void TEmissione::floppy()
inizializza_cur(); inizializza_cur();
inizializza_file(); inizializza_file();
long n_eff = _cur->items(); long n_eff = _cur->items();
bool condition = !ok_write(); bool condition = ok_write();
if (condition) if (!condition)
error_box("Impossibile continuare discetto pieno"); error_box("Impossibile continuare discetto pieno");
else else
{ {
TProgind* pi; TProgind* pi;
pi = new TProgind(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE,10); pi = new TProgind(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE,10);
TAssoc_array& tracciati = _trasfile->tracciati(); TAssoc_array& tracciati = _trasfile->tracciati();
header_rb(); header_rb();//intestazione flusso effetti
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur)) for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))//scandisco tutti gli effetti della distinta selezionata
{ {
pi->addstatus(1L); pi->addstatus(1L);
save_data_emis(); save_data_emis();
THash_object* lavoro = tracciati.get_hashobj(); THash_object* lavoro = tracciati.get_hashobj();
for (int i = 0; lavoro != NULL; i++) for (int i = 0; lavoro != NULL; i++)//scandisco tutti i record di un effetto
{ {
record(*lavoro); record(*lavoro);//emetto il record
lavoro = tracciati.get_hashobj(); lavoro = tracciati.get_hashobj();
} }
} }
footer_ef(); footer_ef(); //chiusura flusso effetti
delete pi; delete pi;
} }
} }
// registro la data ed il numero di emissione dell'effetto corrente
void TEmissione::save_data_emis() void TEmissione::save_data_emis()
{ {
const TDate data_emis = _msk->get_date(F_DATAEMIS); const TDate data_emis = _msk->get_date(F_DATAEMIS);
TLocalisamfile& effetti = _cur->file(); TLocalisamfile& effetti = _rel->lfile();
TEffetto effetto = effetti.curr(); TEffetto effetto = effetti.curr();
long numero = effetto.numero(); long numero = effetto.numero();
effetto.put("NUMEMISS", numero); effetto.put(EFF_NUMEMISS, numero);
effetto.put("DATAEMISS", data_emis); effetto.put(EFF_DATAEMISS, data_emis);
effetti.rewrite(); effetto.put(EFF_DATARIBA, data_emis);
_cur->relation()->rewrite(); bool cond = TRUE;
effetto.put(EFF_DISRIBAEST, cond);
effetto.rewrite(effetti);
} }
//emetto il record d'intestazione del flusso di effetti
void TEmissione::header_rb() void TEmissione::header_rb()
{ {
TRecord_text rec; TRecord_text rec;
@ -236,6 +237,7 @@ void TEmissione::header_rb()
_trasfile->write(rec); _trasfile->write(rec);
} }
//emetto il record di chiusura del flusso di effetti
void TEmissione::footer_ef() void TEmissione::footer_ef()
{ {
TRecord_text rec; TRecord_text rec;
@ -246,6 +248,7 @@ void TEmissione::footer_ef()
_trasfile->write_file()->seekp(0, ios::end); _trasfile->write_file()->seekp(0, ios::end);
} }
//inizializza il cursore per la gestione dei dati da caricare negli effetti
void TEmissione::inizializza_cur() void TEmissione::inizializza_cur()
{ {
const int ndist = _msk->get_int(F_NUMBER); const int ndist = _msk->get_int(F_NUMBER);
@ -253,23 +256,25 @@ void TEmissione::inizializza_cur()
TRectype from(_rel->lfile().curr()), TRectype from(_rel->lfile().curr()),
to(_rel->lfile().curr()); to(_rel->lfile().curr());
from.zero(); from.zero();
from.put("TIPODIST", tipodist); from.put(EFF_TIPODIST, tipodist);
from.put("NDIST", ndist); from.put(EFF_NDIST, ndist);
to = from; to = from;
_cur = new TCursor(_rel,"",4,&from,&to); _cur = new TCursor(_rel,"",4,&from,&to);
_cur->freeze(); _cur->freeze();
} }
//inizializza il file di testo su cui emettere gli effetti
void TEmissione::inizializza_file() void TEmissione::inizializza_file()
{ {
TString unita = _msk->get(F_UNITA); TString unita = _msk->get(F_UNITA);
unita << ":\\ribael.dat"; unita << ":\\" << _trasfile->name();
TFilename file(unita); TFilename file(unita);
_trasfile->open(file,'w'); _trasfile->open(file,'w');
_trasfile->set_tot_importi(0.0); _trasfile->set_tot_importi(0.0);
_foutput = (fo)_msk->get_int(F_FOR_OUT); _foutput = (fo)_msk->get_int(F_FOR_OUT);
} }
//emetto un record del flusso di effetti
void TEmissione::record(THash_object& lavoro) void TEmissione::record(THash_object& lavoro)
{ {
TString chiave = lavoro.key(); TString chiave = lavoro.key();
@ -278,11 +283,13 @@ void TEmissione::record(THash_object& lavoro)
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj(); TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
const TString& tipo = oggetto.type(); const TString& tipo = oggetto.type();
TRecord_text rec(tipo); TRecord_text rec(tipo);
_trasfile->autoload(rec, *_cur, &tipo); _trasfile->autoload(rec, *_cur, &tipo);//carico il record da emettere
_trasfile->write(rec); _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
bool TEmissione::ok_write() bool TEmissione::ok_write()
{ {
long elem = _cur->items(); long elem = _cur->items();
@ -300,7 +307,8 @@ bool TEmissione::ok_write()
drive = 2; drive = 2;
break; break;
} }
_dos_getdiskfree(drive, &diskspace);
_dos_getdiskfree(drive, &diskspace);// routine uses system call 0x36 to obtain information on the disk drive specified by drive
unsigned long available_clusters = (unsigned long) diskspace.avail_clusters; unsigned long available_clusters = (unsigned long) diskspace.avail_clusters;
unsigned long sectors_per_cluster = (unsigned long) diskspace.sectors_per_cluster; unsigned long sectors_per_cluster = (unsigned long) diskspace.sectors_per_cluster;
unsigned long bytes_per_sector = (unsigned long) diskspace.bytes_per_sector; unsigned long bytes_per_sector = (unsigned long) diskspace.bytes_per_sector;
@ -323,7 +331,7 @@ bool TEmissione::ok_write()
return TRUE; return TRUE;
} }
// aggiorna, su file, numero e data di emissione ed il flag di stampa // aggiorna numero e data di emissione ed il flag di stampa
// su tutti gli effetti nel cursore // su tutti gli effetti nel cursore
void TEmissione::aggiorna_rb(TCursor* cur) void TEmissione::aggiorna_rb(TCursor* cur)
{ {
@ -332,16 +340,16 @@ void TEmissione::aggiorna_rb(TCursor* cur)
{ {
TEffetto effetto = eff.curr(); TEffetto effetto = eff.curr();
long numero = effetto.numero(); long numero = effetto.numero();
effetto.put("NUMEMISS", numero); effetto.put(EFF_NUMEMISS, numero);
TDate data = _msk->get_date(F_DATAEMIS); TDate data = _msk->get_date(F_DATAEMIS);
effetto.put("DATAEMISS", data); effetto.put(EFF_DATAEMISS, data);
bool cond = TRUE; bool cond = TRUE;
effetto.put("EFFSTAMP", cond); effetto.put(EFF_EFFSTAMP, cond);
effetto.rewrite(eff); effetto.rewrite(eff);
} }
} }
// aggiorna, su file, il flag di stampa della distinta // aggiorna il flag di stampa della distinta
// su tutti gli effetti nel cursore // su tutti gli effetti nel cursore
void TEmissione::aggiorna_dist(TCursor* cur) void TEmissione::aggiorna_dist(TCursor* cur)
{ {
@ -350,37 +358,37 @@ void TEmissione::aggiorna_dist(TCursor* cur)
{ {
TEffetto effetto = eff.curr(); TEffetto effetto = eff.curr();
bool cond = TRUE; bool cond = TRUE;
effetto.put("DISTSTAM", cond); effetto.put(EFF_DISTSTAM, cond);
effetto.rewrite(eff); effetto.rewrite(eff);
} }
} }
// gestione emissione su carta delle riba // gestione emissione su moduli cartacei delle riba
void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis) void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
{ {
TCursor* fcur = _formrb->cursor(); TCursor* fcur = _formrb->cursor();
TLocalisamfile &eff = fcur->file(LF_EFFETTI); TLocalisamfile &eff = fcur->file(LF_EFFETTI);
TString16 filter; TString16 filter;
if (tipost == 'D') // se stampa definitiva effetti if (tipost == 'D')// se stampa definitiva effetti
if (!_msk->get_bool(F_RIST)) // se non deve ristampare le riba if (!_msk->get_bool(F_RIST))// se non deve ristampare le riba
filter = "EFFSTAMP=\" \""; // setta il filtro del cursore per ... 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 // setta la chiave 4 per il cursore per poter leggere tutti gli effetti della distinta
fcur->setkey(4); fcur->setkey(4);
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ... 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("NDIST", ndist); darec.put(EFF_NDIST, ndist);
darec.put("TIPODIST", tipodist); darec.put(EFF_TIPODIST, tipodist);
TRectype arec(darec); TRectype arec(darec);
fcur->setregion(darec, arec); fcur->setregion(darec, arec);
long n = fcur->items(); long n = fcur->items();
fcur->freeze(); // congela lo stato del cursore 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++) for (int j=0; j < ncopie; j++)
{ {
TProgind* pi; TProgind* pi;
if (!is_vis) if (!is_vis)
pi = new TProgind(n,"Stampa Effetti/Distinte...",FALSE,TRUE,10); pi = new TProgind(n,"Stampa Effetti...",FALSE,TRUE,10);
for (*fcur = 0; fcur->pos() < n; ++(*fcur)) // ciclo sugli elementi del cursore di stampa for (*fcur = 0; fcur->pos() < n; ++(*fcur)) // ciclo sugli elementi del cursore di stampa
{ {
if (!is_vis) if (!is_vis)
@ -392,7 +400,7 @@ void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, con
aggiorna_rb(fcur); // ... devo aggiornare data, numero emissione e flag di stampa effetto aggiorna_rb(fcur); // ... devo aggiornare data, numero emissione e flag di stampa effetto
} }
// gestione emissione su carta delle distinte // gestione emissione su moduli cartacei delle distinte
void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis) void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
{ {
TCursor* fcur = _formdse->cursor(); TCursor* fcur = _formdse->cursor();
@ -401,20 +409,20 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co
TString16 filter; TString16 filter;
fcur->setfilter(filter,TRUE); fcur->setfilter(filter,TRUE);
fcur->setkey(4); fcur->setkey(4);
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ... 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("NDIST", ndist); darec.put(EFF_NDIST, ndist);
darec.put("TIPODIST", tipodist); darec.put(EFF_TIPODIST, tipodist);
TRectype arec(darec); TRectype arec(darec);
fcur->setregion(darec, arec); fcur->setregion(darec, arec);
long n = fcur->items(); long n = fcur->items();
fcur->freeze(); // congela lo stato del cursore 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++) for (int j=0; j < ncopie; j++)
{ {
TProgind* pi; TProgind* pi;
if (!is_vis) if (!is_vis)
pi = new TProgind(n,"Stampa Effetti/Distinte...",FALSE,TRUE,10); pi = new TProgind(n,"Stampa Distinta...",FALSE,TRUE,10);
_base_page_no = 0; _base_page_no = 0;
if (!is_vis) if (!is_vis)
pi->addstatus(1L); // aggiorna la barra d'attesa pi->addstatus(1L); // aggiorna la barra d'attesa
@ -425,7 +433,7 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co
aggiorna_dist(fcur); // ... devo aggiornare flag di stampa distinta aggiorna_dist(fcur); // ... devo aggiornare flag di stampa distinta
} }
// gestione emissione su carta // gestione emissione effetti/distinte su moduli cartacei
void TEmissione::print() void TEmissione::print()
{ {
int ncopie = _msk->get_int(F_NCOPIE); int ncopie = _msk->get_int(F_NCOPIE);
@ -435,26 +443,26 @@ void TEmissione::print()
int emis = _msk->get_int(F_EMIS); int emis = _msk->get_int(F_EMIS);
int ndist = _msk->get_int(F_NUMBER); int ndist = _msk->get_int(F_NUMBER);
char tipodist = _msk->get(F_TIPODIST)[0]; char tipodist = _msk->get(F_TIPODIST)[0];
_rel->lfile().put("TIPODIST",tipodist); _rel->lfile().put(EFF_TIPODIST,tipodist);
_rel->lfile().put("NDIST",ndist); _rel->lfile().put(EFF_NDIST,ndist);
_rel->lfile().put("NRIGADIST",1); _rel->lfile().put(EFF_NRIGADIST,1);
_rel->lfile().setkey(4); _rel->lfile().setkey(4);
_rel->read(); _rel->read();
long codabi = _rel->lfile().get_long("CODABIP"); long codabi = _rel->lfile().get_long(EFF_CODABIP);
char tipost = _msk->get(F_TIPOST)[0]; char tipost = _msk->get(F_TIPOST)[0];
char tipord = _msk->get(F_TIPORD)[0]; char tipord = _msk->get(F_TIPORD)[0];
// se emetto riba istanzio il form per le riba // se emetto riba istanzio il form per le riba
// se emetto distinta istanzio il form per le distinte // se emetto distinta istanzio il form per le distinte
if (emis == 1) // emetto riba if (emis == 1)
{ {
TString16 nomeform; TString16 nomeform;
nomeform.format("rb%05ld.frm",codabi);// compongo il nome del form nomeform.format("rb%05ld.frm",codabi);// compongo il nome del form
if (!fexist(nomeform)) // ne controllo l'esistenza if (!fexist(nomeform)) // ne controllo l'esistenza
nomeform = "rb.frm"; // se non esiste utilizzo il form generico nomeform = "rb.frm"; // se non esiste utilizzo il form generico
_formrb = new TRiba_form(nomeform); _formrb = new TRiba_form(nomeform);
print_rb(tipost,ndist,tipodist,ncopie,is_vis); print_rb(tipost,ndist,tipodist,ncopie,is_vis);
} }
else // emetto distinta else
{ {
TString16 nomeform; TString16 nomeform;
nomeform.format("dse%05ld.frm",codabi);// compongo il nome del form nomeform.format("dse%05ld.frm",codabi);// compongo il nome del form
@ -488,10 +496,12 @@ TRiba_form::TRiba_form(const char* name): TForm()
// gestione dei messaggi estesi nei campi // gestione dei messaggi estesi nei campi
bool TRiba_form::validate(TForm_item &cf, TToken_string &s) bool TRiba_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; TString valore;
if (code == "_BANCAP") if (code == "_BANCAP")
{ {
// gestione dei campi relativi alla banca di presentazione dell'effetto
// sintassi: _BANCAP
TCursor* cur = cursor(); TCursor* cur = cursor();
TRectype & ban = cur->curr(-204); TRectype & ban = cur->curr(-204);
valore.cut(0); valore.cut(0);
@ -574,10 +584,11 @@ void TDistinta_form::set_order(const char tipo)
{ {
TString ordine; TString ordine;
// ordinamento secondo la data di scadenza dell'effetto // ordinamento secondo la data di scadenza dell'effetto
if (tipo == 'S') ordine = "DATASCAD|TIPODIST|NDIST|NRIGADIST"; if (tipo == 'S')
ordine = "DATASCAD|TIPODIST|NDIST|NRIGADIST";
// ordinamento seconda il numero e la data della fattura // ordinamento seconda il numero e la data della fattura
else if (tipo == 'F') ordine = "14->NFATT|TIPODIST|NDIST|NRIGADIST"; if (tipo == 'F')
ordine = "14->NFATT|TIPODIST|NDIST|NRIGADIST";
_cursor = new TSorted_cursor(relation(),ordine); _cursor = new TSorted_cursor(relation(),ordine);
} }
@ -593,7 +604,9 @@ 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)); // prende il primo parametro, il codice del messaggio
TString valore; TString valore;
if (code == "_BANCAP") if (code == "_BANCAP")
{ {
// gestione dei campi relativi alla banca di presentazione della distinta
// sintassi: _BANCAP
TCursor* cur = cursor(); TCursor* cur = cursor();
TRectype & ban = cur->curr(-204); TRectype & ban = cur->curr(-204);
valore.cut(0); valore.cut(0);
@ -714,7 +727,6 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
return TForm::validate(cf, s); return TForm::validate(cf, s);
} }
// gestione dei messaggi estesi nei campi // gestione dei messaggi estesi nei campi
void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str) void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
{ {
@ -722,6 +734,9 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
TString valore; TString valore;
if (code == "_FISSO") if (code == "_FISSO")
{ {
// gestione dei campi fissi per i record delle riba
// sintassi: _FISSO,!<valore>
// dove: <valore> è la stringa fissa da emettere
TString in(s.get()); TString in(s.get());
if (in[0]=='!') if (in[0]=='!')
{ {
@ -729,9 +744,22 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
in.trim(); in.trim();
valore = in; 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") if (code == "_NRIBA")
{ {
// gestione dei campi relativi al flusso di effetti (riba)
// sintassi: _NRIBA,<macro>
// dove: <macro> è uno delle macro seguenti:
// "!NUM" numero progressivo riba all'interno del flusso
// "!TOT" numero di effetti nel flusso
// "!NREC" numero di records nel flusso
int items = (int)cur.items(); int items = (int)cur.items();
TString in(s.get()); TString in(s.get());
if (in[0]=='!') if (in[0]=='!')
@ -754,9 +782,19 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
valore << rec; valore << rec;
} }
} }
} }// fine _NRIBA
if (code == "_DITTA") if (code == "_DITTA")
{ {
// gestione di campi della ditta corrente
// sintassi: _DITTA,<macro>,<opzione>
// dove: <macro> è uno delle macro seguenti:
// "!RAGSOC" ragione sociale
// dove: <opzione> è uno delle opzioni seguenti:
// "0" la ragione sociale andrà ad occupare un unico campo
// "1" la ragione sociale andrà ad occupare più campi, primo segmento
// "2" la ragione sociale andrà ad occupare più campi, secondo segmento
// "3" la ragione sociale andrà ad occupare più campi, terzo segmento
// "4" la ragione sociale andrà ad occupare più campi, quarto segmento
TLocalisamfile ditte(LF_NDITTE); TLocalisamfile ditte(LF_NDITTE);
ditte.put("CODDITTA",ditta()); ditte.put("CODDITTA",ditta());
ditte.read(); ditte.read();
@ -789,9 +827,18 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
} }
} }
} }
} }// fine _DITTA
if (code == "_DEBITORE") if (code == "_DEBITORE")
{ {
// gestione di campi della ditta corrente
// sintassi: _DEBITORE,<macro>,<opzione>
// dove: <macro> è uno delle macro seguenti:
// "!RAGSOC" ragione sociale
// "!INDIRIZZO" indirizzo
// "!PIAZZA" comune + sigla provincia
// dove: <opzione> è uno delle opzioni seguenti:
// "1" la ragione sociale andrà ad occupare più campi, primo segmento
// "2" la ragione sociale andrà ad occupare più campi, secondo segmento
TRectype& clifo = cur.curr(LF_CLIFO); TRectype& clifo = cur.curr(LF_CLIFO);
TRectype& comuni = cur.curr(LF_COMUNI); TRectype& comuni = cur.curr(LF_COMUNI);
TString in(s.get()); TString in(s.get());
@ -827,9 +874,11 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
valore.trim(); valore.trim();
} }
} }
} }// fine _DEBITORE
if (code == "_BANCA") if (code == "_BANCA")
{ {
// gestione dei campi relativi alla banca d'appoggio dell'effetto
// sintassi: _BANCA
TRectype & ban = cur.curr(-401); TRectype & ban = cur.curr(-401);
valore.cut(0); valore.cut(0);
valore << ban.get("S0"); valore << ban.get("S0");
@ -837,9 +886,14 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
ban = cur.curr(-402); ban = cur.curr(-402);
valore << " " << ban.get("S0"); valore << " " << ban.get("S0");
valore.trim(); valore.trim();
} }// fine _BANCA
if (code == "_FATT") 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
TLocalisamfile &eff = cur.file(); TLocalisamfile &eff = cur.file();
TEffetto effetto = eff.curr(); TEffetto effetto = eff.curr();
long num = effetto.numero(); long num = effetto.numero();
@ -868,9 +922,14 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
valore = descfatt.mid(40, l); valore = descfatt.mid(40, l);
} }
} }
} }// fine _FATT
if (code == "_IMPORTO") if (code == "_IMPORTO")
{ {
// gestione di campi degli importi degli effetti nel flusso
// sintassi: _IMPORTO,<macro>
// dove: <macro> è uno delle macro seguenti:
// "!ADD" aggiunge l'importo dell'effetto corrente al totale
// "!TOT" emette il totale
TString in(s.get()); TString in(s.get());
if (in[0]=='!') if (in[0]=='!')
{ {
@ -890,7 +949,7 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt
set_tot_importi(0.0); set_tot_importi(0.0);
} }
} }
} }// fine _IMPORTO
str = valore; str = valore;
} }

View File

@ -6,8 +6,6 @@
#include <relation.h> #include <relation.h>
#include <real.h> #include <real.h>
#include <printer.h> #include <printer.h>
#include <effetti.h>
#include <reffetti.h>
#include <clifo.h> #include <clifo.h>
#include "ef0101.h" #include "ef0101.h"
#include "ef0600.h" #include "ef0600.h"
@ -186,8 +184,14 @@ void TPrint_effetti_app::preprocess_header()
ditte.put("CODDITTA", firm); ditte.put("CODDITTA", firm);
ditte.read(); ditte.read();
if (ditte.bad()) ditte.zero(); if (ditte.bad()) ditte.zero();
TString s(ditte.get("RAGSOC")); TString s,
set_header(j, "Ditta: %ld %s@125gPag @#", firm, (const char*) s); ditta(ditte.get("RAGSOC"));
s = ditta.mid(30,50);
s.trim();
ditta = ditta.mid(0,30);
ditta.trim();
ditta << " " << s;
set_header(j, "Ditta: %ld %s@125gPag @#", firm, (const char*) ditta);
set_header(j++, "@102gData %s", (const char*) _data_stampa); set_header(j++, "@102gData %s", (const char*) _data_stampa);
switch(_pr_type) switch(_pr_type)
@ -212,7 +216,7 @@ void TPrint_effetti_app::preprocess_header()
// setta l'header per la stampa per data di scadenza // setta l'header per la stampa per data di scadenza
void TPrint_effetti_app::header_scadenza() void TPrint_effetti_app::header_scadenza()
{ {
int j =1; int j =2;
set_header(j, "@52gSTAMPA RI.BA. PER SCADENZA"); j++; set_header(j, "@52gSTAMPA RI.BA. PER SCADENZA"); j++;
set_header(j++, (const char *)(TString(132).fill('-'))); set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Scadenza Banca Cliente N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N."); set_header(j++, " Scadenza Banca Cliente N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N.");
@ -222,7 +226,7 @@ void TPrint_effetti_app::header_scadenza()
// setta l'header per la stampa per banca di presentazione // setta l'header per la stampa per banca di presentazione
void TPrint_effetti_app::header_banca() void TPrint_effetti_app::header_banca()
{ {
int j = 1; int j = 2;
set_header(j, "@45gSTAMPA RI.BA. PER BANCHE DI PRESENTAZIONE"); j++; set_header(j, "@45gSTAMPA RI.BA. PER BANCHE DI PRESENTAZIONE"); j++;
set_header(j++, (const char *)(TString(132).fill('-'))); set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Banca Scadenza Cliente N.Riba N.Dist Importo Val. N.Rata St.Def. Fattura del. N."); set_header(j++, " Banca Scadenza Cliente N.Riba N.Dist Importo Val. N.Rata St.Def. Fattura del. N.");
@ -232,7 +236,7 @@ void TPrint_effetti_app::header_banca()
// setta l'header per la stampa per distinta di presentazione // setta l'header per la stampa per distinta di presentazione
void TPrint_effetti_app::header_distinta() void TPrint_effetti_app::header_distinta()
{ {
int j = 1; int j = 2;
set_header(j, "@55gSTAMPA RI.BA. PER DISTINTE"); j++; set_header(j, "@55gSTAMPA RI.BA. PER DISTINTE"); j++;
set_header(j++, (const char *)(TString(132).fill('-'))); set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Distinta "); set_header(j++, " Distinta ");
@ -243,7 +247,7 @@ void TPrint_effetti_app::header_distinta()
// setta l'header per la stampa per cliente // setta l'header per la stampa per cliente
void TPrint_effetti_app::header_cliente() void TPrint_effetti_app::header_cliente()
{ {
int j =1; int j = 2;
set_header(j, "@52gSTAMPA RI.BA. PER CLIENTE"); j++; set_header(j, "@52gSTAMPA RI.BA. PER CLIENTE"); j++;
set_header(j++, (const char *)(TString(132).fill('-'))); set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Cliente Scadenza Banca N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N."); set_header(j++, " Cliente Scadenza Banca N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N.");

View File

@ -56,10 +56,11 @@ POSITION(3)=8
LENGTH(3)=5 LENGTH(3)=5
NAME(4)=DATA EMISSIONE NAME(4)=DATA EMISSIONE
TYPE(4)=DATA TYPE(4)=DATA
FIELD(4)=31->DATAEMISS FIELD(4)=31->DATAEMISS
POSITION(4)=13 POSITION(4)=13
LENGTH(4)=6 LENGTH(4)=6
MESSAGE(4) = _DATA
NAME(5)=RAGIONE SOCIALE MITTENTE NAME(5)=RAGIONE SOCIALE MITTENTE
TYPE(5)=STRINGA TYPE(5)=STRINGA
@ -421,11 +422,12 @@ POSITION(3)=8
LENGTH(3)=5 LENGTH(3)=5
NAME(4)=DATA EMISSIONE NAME(4)=DATA EMISSIONE
TYPE(4)=DATA TYPE(4)=DATA
FIELD(4)=31->DATAEMISS FIELD(4)=31->DATAEMISS
POSITION(4)=13 POSITION(4)=13
LENGTH(4)=6 LENGTH(4)=6
MESSAGE(4)=_DATA
NAME(5)=RAGIONE SOCIALE MITTENTE NAME(5)=RAGIONE SOCIALE MITTENTE
TYPE(5)=STRINGA TYPE(5)=STRINGA
POSITION(5)=19 POSITION(5)=19