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