diff --git a/ef/ef0100.cpp b/ef/ef0100.cpp index 2d309a263..0cf8a4368 100755 --- a/ef/ef0100.cpp +++ b/ef/ef0100.cpp @@ -4,9 +4,6 @@ #include #include #include -#include -#include -#include #include "ef0.h" #include "ef0100.h" #include "ef0101.h" diff --git a/ef/ef0100a.uml b/ef/ef0100a.uml index 765329b16..d8663dc71 100755 --- a/ef/ef0100a.uml +++ b/ef/ef0100a.uml @@ -170,7 +170,8 @@ END NUMBER F_TOTIMP 18 2 BEGIN PROMPT 2 18 "Totale importi " - FIELD LF_EFFETTI->IMPORTO + FIELD LF_EFFETTI->IMPORTO + PICTURE "###.###.###.###,@@" FLAG "D" END @@ -178,6 +179,7 @@ NUMBER F_TOTIMPVAL 18 3 BEGIN PROMPT 2 19 "Totale importi in valuta " FIELD LF_EFFETTI->IMPORTOVAL + PICTURE "###.###.###.###,@@@" FLAG "D" //GROUP 1 END diff --git a/ef/ef0101.cpp b/ef/ef0101.cpp index 50283bad8..9bd85ab88 100755 --- a/ef/ef0101.cpp +++ b/ef/ef0101.cpp @@ -1,10 +1,7 @@ -#include "effetti.h" -#include "reffetti.h" -#include "cession.h" #include "ef0101.h" ///////////////////////////////////////////////////////////////////// -// definizione dei metodi della classe TEffetto // +// Definizione dei metodi della classe TEffetto // //////////////////////////////////////////////////////////////////// // costruttore di default @@ -70,9 +67,9 @@ long TEffetto::renum(long numeff) numeff = get_next_key(codcf); } char num[7]; sprintf(num, "%ld", numeff); - renum_key("NPROGTR", num); // aggiorna testata - _righe.renum_key("NPROGTR", num); // aggiorna righe ok - _cess.renum_key("NPROGTR", num); // aggiorna cessionari ok + renum_key(EFF_NPROGTR, num); // aggiorna testata + _righe.renum_key(EFF_NPROGTR, num); // aggiorna righe ok + _cess.renum_key(EFF_NPROGTR, num); // aggiorna cessionari ok return numeff; } diff --git a/ef/ef0101.h b/ef/ef0101.h index 980319ebf..0b3f6a542 100755 --- a/ef/ef0101.h +++ b/ef/ef0101.h @@ -1,13 +1,17 @@ #ifndef __RELATION_H #include #endif - -#ifndef __RECARRAY_H -#include +#ifndef __RECTYPES_H +#include #endif +#include +#include +#include -// definizione dell'oggetto Effetto con la classe TEffetto +////////////////////////////////////////////////////////////////////////////////// +// Definizione dell'oggetto Effetto con la classe TEffetto// +///////////////////////////////////////////////////////////////////////////////// class TEffetto:public TRectype { TRecord_array _righe,// righe dell'effetto @@ -57,19 +61,19 @@ public: // rimuove l'effetto int remove(TLocalisamfile& f)const; // 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 - 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 - 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 - 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 - 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 - long nrgdist() const { return get_long("NRIGADIST"); } + long nrgdist() const { return get_long(EFF_NRIGADIST); } // 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 void put_key(TRectype& rec,char tipodist, long ndist, long nrigadist = 0); // setta i campi per la prima chiave del file diff --git a/ef/ef0300.cpp b/ef/ef0300.cpp index c24c8f614..0327689fa 100755 --- a/ef/ef0300.cpp +++ b/ef/ef0300.cpp @@ -3,9 +3,7 @@ #include #include #include -#include -#include -#include +#include #include "ef0.h" #include "ef0300.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 _clifo->zero(); //conoscendone il codice - _clifo->put("TIPOCF", 'C'); - _clifo->put("CODCF", codcf); - if (_clifo->read() == NOERR) riga.add(_clifo->get("RAGSOC")); + _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 @@ -457,9 +455,9 @@ void TVariazione_distinte::carica_riba(int tipopag) riga.add(eff.get(EFF_DATASCAD)); long codcf = eff.get_long(EFF_CODCF); clifo->zero(); - clifo->put("TIPOCF", 'C'); - clifo->put("CODCF", codcf); - if (clifo->read() == NOERR) riga.add(clifo->get("RAGSOC")); + 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 const TRectype& rec_r = eff.row_r(1); @@ -841,7 +839,8 @@ void TVariazione_distinte::calcola() long importo = m->get_long(F_IMP); long impdist = importo - imp_pres; 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++) { TToken_string& row = sf.row(i); @@ -854,7 +853,7 @@ void TVariazione_distinte::calcola() m2->set(F_IMPSEL, impsel); if (impdist == 0 && imp_pres == 0) m2->set(F_TOTIMPDIST, impsel); - } + } } } diff --git a/ef/ef0300a.uml b/ef/ef0300a.uml index e90e58f4d..50ae14a31 100755 --- a/ef/ef0300a.uml +++ b/ef/ef0300a.uml @@ -110,11 +110,13 @@ END NUMBER F_TOTIMP 18 2 BEGIN PROMPT 2 6 "Valore di presentazione " + PICTURE "###.###.###.###,@@" END NUMBER F_IMP 18 2 BEGIN PROMPT 2 7 "Importo Distinta " + PICTURE "###.###.###.###,@@" NUM_EXPR #F_IMP>=#F_TOTIMP WARNING "Il valore di presentazione non puo' superare l'importo della distinta" END @@ -122,6 +124,7 @@ END NUMBER F_TOTIMPVAL 18 3 BEGIN PROMPT 2 8 "Valore di pres. in val. " + PICTURE "###.###.###.###,@@@" END STRING F_CODVAL 3 diff --git a/ef/ef0300b.uml b/ef/ef0300b.uml index a4c536b5a..89fbb4e4f 100755 --- a/ef/ef0300b.uml +++ b/ef/ef0300b.uml @@ -1,6 +1,6 @@ #include "ef0300.h" -PAGE "Righe Distinta" -1 -1 76 13 +PAGE "Righe Distinta" 16 7 78 13 LISTBOX F_CHECK 5 BEGIN @@ -61,6 +61,7 @@ NUMBER F_IMPORTO 18 2 BEGIN PROMPT 2 9 "Importo " FIELD LF_EFFETTI->IMPORTO + PICTURE "###.###.###.###,@@" FLAGS "D" END @@ -68,6 +69,7 @@ NUMBER F_IMPORTOVAL 18 3 BEGIN PROMPT 2 9 "Importo Val. " FIELD LF_EFFETTI->IMPORTOVAL + PICTURE "###.###.###.###,@@@" FLAGS "D" END diff --git a/ef/ef0300c.uml b/ef/ef0300c.uml index 18721dd1e..6ba15c99c 100755 --- a/ef/ef0300c.uml +++ b/ef/ef0300c.uml @@ -1,6 +1,6 @@ #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 BEGIN @@ -43,11 +43,13 @@ END NUMBER F_TOTIMPDIST 18 2 BEGIN PROMPT 2 18 "Importo " + PICTURE "###.###.###.###,@@" END NUMBER F_IMPSEL 18 2 BEGIN - PROMPT 37 18 "Importo Selezionato " + PROMPT 37 18 "Importo Selezionato " + PICTURE "###.###.###.###,@@" END BUTTON DLG_OK 9 2 diff --git a/ef/ef0301.cpp b/ef/ef0301.cpp index bb2e50cb0..2c6a8fd48 100755 --- a/ef/ef0301.cpp +++ b/ef/ef0301.cpp @@ -1,11 +1,8 @@ -#include "effetti.h" -#include "reffetti.h" -#include "cession.h" #include "ef0301.h" -/////////////////////////////////////////////////// -// definizione dei metodi della classe TDistinta // -/////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////// +// Definizione dei metodi della classe TDistinta // +///////////////////////////////////////////////////////////////////// // costruttore distinta utilizzando il record passato TDistinta::TDistinta(const TRectype& rec) @@ -56,12 +53,12 @@ int TDistinta::write(bool force, TToken_string* dati_dist) { TEffetto& effetto = (TEffetto&)_righe_dist[i]; dati_dist->restart();// token string che contiene i dati da registrare sull'effetto - effetto.put("TIPODIST", dati_dist->get()); - effetto.put("NDIST", dati_dist->get_long()); - effetto.put("DATADIST", dati_dist->get()); - effetto.put("CODABIP", dati_dist->get_long()); - effetto.put("CODCABP", dati_dist->get_long()); - effetto.put("NRIGADIST", i+1); + 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 } return err; @@ -79,12 +76,12 @@ int TDistinta::remove(char tipodist, long ndist) { TEffetto& effetto = (TEffetto&)_righe_dist[i]; err = effetto.read(file, tipodist,ndist,i+1); - effetto.zero("TIPODIST"); - effetto.zero("NDIST"); - effetto.zero("DATADIST"); - effetto.zero("NRIGADIST"); - effetto.zero("CODABIP"); - effetto.zero("CODCABP"); + effetto.zero(EFF_TIPODIST); + effetto.zero(EFF_NDIST); + effetto.zero(EFF_DATADIST); + effetto.zero(EFF_NRIGADIST); + effetto.zero(EFF_CODABIP); + effetto.zero(EFF_CODCABP); err = effetto.rewrite(file); } reset();//elimino gli effetti dalla memoria resettando l'array diff --git a/ef/ef0301.h b/ef/ef0301.h index 3926da163..21b14e630 100755 --- a/ef/ef0301.h +++ b/ef/ef0301.h @@ -1,6 +1,3 @@ -#ifndef __RELATION_H -#include -#endif #include "ef0101.h" /////////////////////////////////////////////////////////////// @@ -28,9 +25,9 @@ public: // rimuove la distinta del tipo e numero passati int remove(char tipodist, long ndist); // 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 - 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 TDistinta() {}; // costruttore distinta del tipo e numero passato diff --git a/ef/ef0400.cpp b/ef/ef0400.cpp index cbbfa0d0c..cefadc295 100755 --- a/ef/ef0400.cpp +++ b/ef/ef0400.cpp @@ -4,9 +4,6 @@ #include #include #include -#include -#include -#include #include "ef0.h" #include "ef0101.h" #include "ef0400.h" @@ -93,7 +90,7 @@ bool TEliminazione_effetti::from_numero_handler(TMask_field& f, KEY k) { TRectype* from = app()._from; long num = m.get_long(F_DA_RIBA); - from->put("NPROGTR", num); + from->put(EFF_NPROGTR, num); } } return TRUE; @@ -109,7 +106,7 @@ bool TEliminazione_effetti::to_numero_handler(TMask_field& f, KEY k) { TRectype* to = app()._to; long num = m.get_long(F_A_RIBA); - to->put("NPROGTR", num); + to->put(EFF_NPROGTR, num); } } return TRUE; @@ -126,8 +123,8 @@ bool TEliminazione_effetti::from_data_handler(TMask_field& f, KEY k) TRectype* from = app()._from; TDate data = m.get(F_DA_DATA); long num = m.get_long(F_DA_RIBA); - from->put("NPROGTR", num); - from->put("DATASCAD", data); + from->put(EFF_NPROGTR, num); + from->put(EFF_DATASCAD, data); } } return TRUE; @@ -144,8 +141,8 @@ bool TEliminazione_effetti::to_data_handler(TMask_field& f, KEY k) TRectype* to = app()._to; TDate data = m.get(F_A_DATA); long num = m.get_long(F_A_RIBA); - to->put("NPROGTR", num); - to->put("DATASCAD", data); + to->put(EFF_NPROGTR, num); + to->put(EFF_DATASCAD, data); } } return TRUE; diff --git a/ef/ef0500.cpp b/ef/ef0500.cpp index ec99292bb..014f5a604 100755 --- a/ef/ef0500.cpp +++ b/ef/ef0500.cpp @@ -16,24 +16,21 @@ 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 // /////////////////////////////////////////////////////////////////////////////////////////////// - -enum fo{kb360 = 1, kb720 = 2, kb1200 = 3, kb1440 = 4}; - class TEmissione: public TApplication { fo _foutput; TMask* _msk; - TRelation* _firmrel; // relazione di gestione dei dati della ditta corrente + TRelation* _firmrel; TRelation* _rel; TCursor* _cur; TRiba_form* _formrb; TDistinta_form* _formdse; TRiba_file* _trasfile; - int _base_page_no; // numero della pagina base per la stampa del numero di pagina + int _base_page_no; protected: virtual bool create(void); virtual bool destroy(void) ; @@ -56,6 +53,7 @@ protected: static bool annulla_handler(TMask_field& f, KEY k); public: int base_no() { return _base_page_no;} + const TMask& msk() const {return *_msk;} TEmissione() {}; virtual ~TEmissione() {}; }; @@ -78,16 +76,15 @@ public: ///////////////////////////////////////////////////////////////////////////////////////////////// // Classe TDistinta_form customizzata dalla Form per le Distinte // //////////////////////////////////////////////////////////////////////////////////////////////// - class TDistinta_form: public TForm { - TRelation *_firmrel; // relazione di gestione dei dati della ditta corrente - TSorted_cursor *_cursor; // curosore che permette l'ordinamento degli effetti nella distinta -protected: // per data scadenza o per dati fattura + TRelation *_firmrel; + TSorted_cursor *_cursor;// curosore che permette l'ordinamento degli effetti nella distinta +protected: // per data scadenza o per dati fattura virtual bool validate(TForm_item &, TToken_string &); public: - void set_order(const char tipo); // setta l'ordinamento del cursore - virtual TCursor* cursor() const { return (TCursor*)_cursor;} // restituisce il cursore + void set_order(const char tipo); + virtual TCursor* cursor() const { return (TCursor*)_cursor;} TDistinta_form(const char*, TRelation *); virtual ~TDistinta_form(); }; @@ -115,12 +112,12 @@ public: bool TEmissione::create() { TApplication::create(); - _formrb = NULL; // l'inizializzazione avviene nel metodo print() - _formdse = NULL; // a seconda che si stampino le riba o la distinta + _formrb = NULL; + _formdse = NULL; _msk = new TMask("ef0500a"); _firmrel= new TRelation(LF_NDITTE); _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->add(LF_REFFETTI, "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(LF_COMUNI, "STATO=STATOCF|COM=COMCF",1,LF_CLIFO); _cur = NULL; - _trasfile = new TRiba_file("riba_el", "riba.ini"); + _trasfile = new TRiba_file("ribael.dat", "riba.ini"); _trasfile->set_ditta(get_firm()); _msk->set_handler(DLG_CANCEL, annulla_handler); dispatch_e_menu(BAR_ITEM(1)); @@ -165,10 +162,10 @@ void TEmissione::on_firm_change() bool TEmissione::menu(MENU_TAG) { KEY key = K_ENTER; - while (key != K_QUIT) // rimane in esecuzione finchè non si chiude la maschera + while (key != K_QUIT) { key = _msk->run(); - if (key == K_ENTER) // se si confermano i dati inseriti + if (key == K_ENTER) conferma(); } return FALSE; @@ -178,10 +175,10 @@ bool TEmissione::menu(MENU_TAG) void TEmissione::conferma() { int tipoemis = _msk->get_int(F_TIPOEMIS); - if (tipoemis == 1) // emissione su floppy + if (tipoemis == 1) floppy(); else - print(); // emissione su carta + print(); } // gestione emissione su floppy @@ -190,43 +187,47 @@ void TEmissione::floppy() inizializza_cur(); inizializza_file(); long n_eff = _cur->items(); - bool condition = !ok_write(); - if (condition) + bool condition = ok_write(); + if (!condition) error_box("Impossibile continuare discetto pieno"); else { TProgind* pi; pi = new TProgind(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE,10); TAssoc_array& tracciati = _trasfile->tracciati(); - header_rb(); - for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur)) + header_rb();//intestazione flusso effetti + for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))//scandisco tutti gli effetti della distinta selezionata { pi->addstatus(1L); save_data_emis(); 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(); } } - footer_ef(); + footer_ef(); //chiusura flusso effetti delete pi; } } +// registro la data ed il numero di emissione dell'effetto corrente void TEmissione::save_data_emis() { const TDate data_emis = _msk->get_date(F_DATAEMIS); - TLocalisamfile& effetti = _cur->file(); + TLocalisamfile& effetti = _rel->lfile(); TEffetto effetto = effetti.curr(); long numero = effetto.numero(); - effetto.put("NUMEMISS", numero); - effetto.put("DATAEMISS", data_emis); - effetti.rewrite(); - _cur->relation()->rewrite(); + effetto.put(EFF_NUMEMISS, numero); + effetto.put(EFF_DATAEMISS, data_emis); + effetto.put(EFF_DATARIBA, data_emis); + bool cond = TRUE; + effetto.put(EFF_DISRIBAEST, cond); + effetto.rewrite(effetti); } +//emetto il record d'intestazione del flusso di effetti void TEmissione::header_rb() { TRecord_text rec; @@ -236,6 +237,7 @@ void TEmissione::header_rb() _trasfile->write(rec); } +//emetto il record di chiusura del flusso di effetti void TEmissione::footer_ef() { TRecord_text rec; @@ -246,6 +248,7 @@ void TEmissione::footer_ef() _trasfile->write_file()->seekp(0, ios::end); } +//inizializza il cursore per la gestione dei dati da caricare negli effetti void TEmissione::inizializza_cur() { const int ndist = _msk->get_int(F_NUMBER); @@ -253,23 +256,25 @@ void TEmissione::inizializza_cur() TRectype from(_rel->lfile().curr()), to(_rel->lfile().curr()); from.zero(); - from.put("TIPODIST", tipodist); - from.put("NDIST", ndist); + from.put(EFF_TIPODIST, tipodist); + from.put(EFF_NDIST, ndist); to = from; _cur = new TCursor(_rel,"",4,&from,&to); _cur->freeze(); } +//inizializza il file di testo su cui emettere gli effetti void TEmissione::inizializza_file() { TString unita = _msk->get(F_UNITA); - unita << ":\\ribael.dat"; + unita << ":\\" << _trasfile->name(); TFilename file(unita); _trasfile->open(file,'w'); _trasfile->set_tot_importi(0.0); _foutput = (fo)_msk->get_int(F_FOR_OUT); } +//emetto un record del flusso di effetti void TEmissione::record(THash_object& lavoro) { TString chiave = lavoro.key(); @@ -278,11 +283,13 @@ 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); - _trasfile->write(rec); + _trasfile->autoload(rec, *_cur, &tipo);//carico il record da emettere + _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() { long elem = _cur->items(); @@ -300,7 +307,8 @@ bool TEmissione::ok_write() drive = 2; 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 sectors_per_cluster = (unsigned long) diskspace.sectors_per_cluster; unsigned long bytes_per_sector = (unsigned long) diskspace.bytes_per_sector; @@ -323,7 +331,7 @@ bool TEmissione::ok_write() 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 void TEmissione::aggiorna_rb(TCursor* cur) { @@ -332,16 +340,16 @@ void TEmissione::aggiorna_rb(TCursor* cur) { TEffetto effetto = eff.curr(); long numero = effetto.numero(); - effetto.put("NUMEMISS", numero); + effetto.put(EFF_NUMEMISS, numero); TDate data = _msk->get_date(F_DATAEMIS); - effetto.put("DATAEMISS", data); + effetto.put(EFF_DATAEMISS, data); bool cond = TRUE; - effetto.put("EFFSTAMP", cond); + effetto.put(EFF_EFFSTAMP, cond); 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 void TEmissione::aggiorna_dist(TCursor* cur) { @@ -350,37 +358,37 @@ void TEmissione::aggiorna_dist(TCursor* cur) { TEffetto effetto = eff.curr(); bool cond = TRUE; - effetto.put("DISTSTAM", cond); + effetto.put(EFF_DISTSTAM, cond); 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) { TCursor* fcur = _formrb->cursor(); TLocalisamfile &eff = fcur->file(LF_EFFETTI); TString16 filter; - 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 + 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 // 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.put("NDIST", ndist); - darec.put("TIPODIST", tipodist); + TRectype darec(eff.curr());// fissa i dati per la scelta degli ... + 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(); // congela lo stato del cursore + fcur->freeze(); // 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/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 { 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 } -// 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) { TCursor* fcur = _formdse->cursor(); @@ -401,20 +409,20 @@ void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, co TString16 filter; fcur->setfilter(filter,TRUE); 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.put("NDIST", ndist); - darec.put("TIPODIST", tipodist); + darec.put(EFF_NDIST, ndist); + darec.put(EFF_TIPODIST, tipodist); TRectype arec(darec); fcur->setregion(darec, arec); 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 for (int j=0; j < ncopie; j++) { TProgind* pi; 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; if (!is_vis) 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 } -// gestione emissione su carta +// gestione emissione effetti/distinte su moduli cartacei void TEmissione::print() { int ncopie = _msk->get_int(F_NCOPIE); @@ -435,26 +443,26 @@ void TEmissione::print() int emis = _msk->get_int(F_EMIS); int ndist = _msk->get_int(F_NUMBER); char tipodist = _msk->get(F_TIPODIST)[0]; - _rel->lfile().put("TIPODIST",tipodist); - _rel->lfile().put("NDIST",ndist); - _rel->lfile().put("NRIGADIST",1); + _rel->lfile().put(EFF_TIPODIST,tipodist); + _rel->lfile().put(EFF_NDIST,ndist); + _rel->lfile().put(EFF_NRIGADIST,1); _rel->lfile().setkey(4); _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 tipord = _msk->get(F_TIPORD)[0]; // se emetto riba istanzio il form per le riba // se emetto distinta istanzio il form per le distinte - if (emis == 1) // emetto riba + if (emis == 1) { 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 + nomeform = "rb.frm"; // se non esiste utilizzo il form generico _formrb = new TRiba_form(nomeform); print_rb(tipost,ndist,tipodist,ncopie,is_vis); } - else // emetto distinta + else { TString16 nomeform; 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 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; if (code == "_BANCAP") - { + { + // gestione dei campi relativi alla banca di presentazione dell'effetto + // sintassi: _BANCAP TCursor* cur = cursor(); TRectype & ban = cur->curr(-204); valore.cut(0); @@ -574,10 +584,11 @@ void TDistinta_form::set_order(const char tipo) { TString ordine; // 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 - 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); } @@ -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 TString valore; if (code == "_BANCAP") - { + { + // gestione dei campi relativi alla banca di presentazione della distinta + // sintassi: _BANCAP TCursor* cur = cursor(); TRectype & ban = cur->curr(-204); valore.cut(0); @@ -714,7 +727,6 @@ bool TDistinta_form::validate(TForm_item &cf, TToken_string &s) return TForm::validate(cf, s); } - // gestione dei messaggi estesi nei campi 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; if (code == "_FISSO") { + // gestione dei campi fissi per i record delle riba + // sintassi: _FISSO,! + // dove: è la stringa fissa da emettere TString in(s.get()); if (in[0]=='!') { @@ -729,9 +744,22 @@ 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) + // sintassi: _NRIBA, + // dove: è 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(); TString in(s.get()); if (in[0]=='!') @@ -754,9 +782,19 @@ 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 + // sintassi: _DITTA,, + // dove: è uno delle macro seguenti: + // "!RAGSOC" ragione sociale + // dove: è 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); ditte.put("CODDITTA",ditta()); ditte.read(); @@ -789,9 +827,18 @@ void TRiba_file:: validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TSt } } } - } + }// fine _DITTA if (code == "_DEBITORE") - { + { + // gestione di campi della ditta corrente + // sintassi: _DEBITORE,, + // dove: è uno delle macro seguenti: + // "!RAGSOC" ragione sociale + // "!INDIRIZZO" indirizzo + // "!PIAZZA" comune + sigla provincia + // dove: è 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& comuni = cur.curr(LF_COMUNI); TString in(s.get()); @@ -827,9 +874,11 @@ 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 + // sintassi: _BANCA TRectype & ban = cur.curr(-401); valore.cut(0); 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); 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, + // dove: è 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(); TEffetto effetto = eff.curr(); 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); } } - } + }// fine _FATT if (code == "_IMPORTO") - { + { + // gestione di campi degli importi degli effetti nel flusso + // sintassi: _IMPORTO, + // dove: è uno delle macro seguenti: + // "!ADD" aggiunge l'importo dell'effetto corrente al totale + // "!TOT" emette il totale TString in(s.get()); 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); } } - } + }// fine _IMPORTO str = valore; } diff --git a/ef/ef0600.cpp b/ef/ef0600.cpp index de27e9ea4..634f3bb05 100755 --- a/ef/ef0600.cpp +++ b/ef/ef0600.cpp @@ -6,8 +6,6 @@ #include #include #include -#include -#include #include #include "ef0101.h" #include "ef0600.h" @@ -186,8 +184,14 @@ void TPrint_effetti_app::preprocess_header() ditte.put("CODDITTA", firm); ditte.read(); if (ditte.bad()) ditte.zero(); - TString s(ditte.get("RAGSOC")); - set_header(j, "Ditta: %ld %s@125gPag @#", firm, (const char*) s); + TString 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); switch(_pr_type) @@ -212,7 +216,7 @@ void TPrint_effetti_app::preprocess_header() // setta l'header per la stampa per data di 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++, (const char *)(TString(132).fill('-'))); 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 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++, (const char *)(TString(132).fill('-'))); 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 void TPrint_effetti_app::header_distinta() { - int j = 1; + int j = 2; set_header(j, "@55gSTAMPA RI.BA. PER DISTINTE"); j++; set_header(j++, (const char *)(TString(132).fill('-'))); set_header(j++, " Distinta "); @@ -243,7 +247,7 @@ void TPrint_effetti_app::header_distinta() // setta l'header per la stampa per 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++, (const char *)(TString(132).fill('-'))); set_header(j++, " Cliente Scadenza Banca N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N."); diff --git a/ef/riba.ini b/ef/riba.ini index fc6f42240..1074baef7 100755 --- a/ef/riba.ini +++ b/ef/riba.ini @@ -56,10 +56,11 @@ POSITION(3)=8 LENGTH(3)=5 NAME(4)=DATA EMISSIONE -TYPE(4)=DATA +TYPE(4)=DATA FIELD(4)=31->DATAEMISS POSITION(4)=13 LENGTH(4)=6 +MESSAGE(4) = _DATA NAME(5)=RAGIONE SOCIALE MITTENTE TYPE(5)=STRINGA @@ -421,11 +422,12 @@ POSITION(3)=8 LENGTH(3)=5 NAME(4)=DATA EMISSIONE -TYPE(4)=DATA +TYPE(4)=DATA FIELD(4)=31->DATAEMISS POSITION(4)=13 LENGTH(4)=6 - +MESSAGE(4)=_DATA + NAME(5)=RAGIONE SOCIALE MITTENTE TYPE(5)=STRINGA POSITION(5)=19