From ffc9b4f8a5764260c10b0598d5841b0ce89bfb57 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 24 Jan 1995 15:47:46 +0000 Subject: [PATCH] Correzioni al libro unico git-svn-id: svn://10.65.10.50/trunk@904 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba3600.cpp | 301 +++++++++++++++++++++++++++++++++++++++++-------- ba/ba3600.h | 5 +- ba/ba3600a.uml | 56 +++++---- 3 files changed, 292 insertions(+), 70 deletions(-) diff --git a/ba/ba3600.cpp b/ba/ba3600.cpp index 537e74df8..e4febdc27 100755 --- a/ba/ba3600.cpp +++ b/ba/ba3600.cpp @@ -7,6 +7,8 @@ #include #include +#include +#include #include "ba3.h" #include "ba3600.h" @@ -41,18 +43,22 @@ class BA3600_application : public TPrintapp TTable* _tab_lbu; TTable* _tab_reg; TLocalisamfile* _nditte; + TLocalisamfile* _anag; + TLocalisamfile* _comuni; TSort* _sort; TProgind* _prog; ind_lib* _lib; const char* _buff; TDate _datastampa; - int _tipo_stampa, _meseda, _mesea; + int _tipo_stampa, _meseda, _mesea, _mese, _meseprec; long _anno, _numini_paglib, _numfin_paglib, _numini_pagut, _numfin_pagut; - long _codditta, _pag_fin, _num_riga, _nfin_plib_prec; - TString _cod_lib, _rag_soc, _cod_reg, _descrizione, _cod_vidimaz; - TString _cod_lib_stampa, _stamp_bollato_str; - bool _stamp_bollato, _pag_ann, _pag_fuori_sequenza; + long _codditta, _pag_fin, _num_riga, _nfin_plib_prec,_codana_intesta,_codana_ditta; + TString _cod_lib, _cod_lib_su, _rag_soc, _cod_reg, _descrizione, _cod_vidimaz; + TString _cod_lib_stampa, _stamp_bollato_str, _desc_cod_lib,_desc_cod_lib_su; + char _tipo_intesta,_tipoa_ditta; + bool _stamp_bollato, _pag_ann, _pag_fuori_sequenza,_stampa_intesta,_stampa_ind; + TString _ind_dta,_civ_dta,_cap_dta,_com_dta,_prov_dta; public: @@ -71,12 +77,18 @@ public: void crea_sort(); bool preprocess_prova(int); bool preprocess_bollato(); - void crea_intestazione(); + void crea_intestazione_prova(); + void crea_intestazione_bollato(); const char* ragsoc_ditta(long); const char* descrizione_codreg(TString&); void setta_righe_prova(); void setta_righe_bollato(); - + void dati_libro_unico(); + void intestatario(TString&,TString&,TString&,TString&,TString&,TString&,TString&,TString&); + void compatta_ragsoc(TString&); + void descrizione(); + void dati_anagrafici_ditta(TString&,TString&,TString&,TString&,TString&); + BA3600_application() {} }; @@ -194,6 +206,82 @@ void BA3600_application::crea_sort() } //di quel mese sono gia stati stampati } //su bollato (flag = TRUE). +void BA3600_application::dati_libro_unico() +{ + TTable lbu ("%LBU"); + TString dep; + + lbu.zero(); + dep = format ("%4d", _anno); + dep << format ("%-3s", (const char*) _cod_lib); + lbu.put("CODTAB", (const char*) dep); + + if (lbu.read(_isequal) == NOERR) + { + _stampa_intesta = lbu.get_bool("B0"); + _stampa_ind = lbu.get_bool("B1"); + _tipo_intesta = lbu.get_char("S2"); + _codana_intesta = lbu.get_long("I4"); + _desc_cod_lib = lbu.get ("S2"); + } +} + +void BA3600_application::descrizione() +{ + TTable lbu ("%LBU"); + TString dep; + + lbu.zero(); + dep = format ("%4d", _anno); + dep << format ("%-3s", (const char*) _cod_lib_su); + lbu.put("CODTAB", (const char*) dep); + + if (lbu.read(_isequal) == NOERR) + _desc_cod_lib_su = lbu.get ("S2"); +} + +void BA3600_application::intestatario(TString& cofi,TString& paiv,TString& ragsoc,TString& ind, + TString& civ,TString& cap,TString& com,TString& prov) +{ + TString codcom; + + _anag->setkey(1); + _anag->zero(); + _anag->put(ANA_TIPOA, _tipo_intesta); + _anag->put(ANA_CODANAGR, _codana_intesta); + + if (_anag->read(_isequal) == NOERR) + { + cofi = _anag->get(ANA_COFI); + paiv = _anag->get(ANA_PAIV); + codcom = _anag->get(ANA_COMRF); + ragsoc = _anag->get(ANA_RAGSOC); + + if (codcom != "") + { + ind = _anag->get(ANA_INDRF); + civ = _anag->get(ANA_CIVRF); + cap = _anag->get(ANA_CAPRF); + } + else + { + codcom = _anag->get(ANA_COMRES); + ind = _anag->get(ANA_INDRES); + civ = _anag->get(ANA_CIVRES); + cap = _anag->get(ANA_CAPRES); + } + } + + _comuni->setkey(1); + _comuni->zero(); + _comuni->put(COM_COM, codcom); + if (_comuni->read(_isequal) == NOERR) + { + com = _comuni->get(COM_DENCOM); + prov = _comuni->get(COM_PROVCOM); + } +} + bool BA3600_application::set_print(int) { KEY tasto; @@ -215,17 +303,24 @@ bool BA3600_application::set_print(int) else if (_tipo_stampa == 2) { _cod_lib = _msk->get(F_LIBRO_UNICO2); + _cod_lib_su = _msk->get(F_CODLIB_STAMPA); _mesea = _msk->get_int(F_STAMPA_MESE); _anno = _msk->get_long(F_STAMPA_ANNO); _cod_lib_stampa = _msk->get(F_CODLIB_STAMPA); _pag_fin = _msk->get_long(F_PAGFINALE); } + _meseprec = 0; + _pag_fuori_sequenza = FALSE; + + dati_libro_unico(); crea_sort(); - - crea_intestazione(); + + + if (_tipo_stampa == 2) + crea_intestazione_bollato(); return TRUE; } @@ -266,11 +361,13 @@ bool BA3600_application::preprocess_page(int file, int counter) if (_buff != NULL) { lib = (struct ind_lib*) _buff; - + + _mese = atoi(lib->mese); _numini_paglib = atoi(lib->nini_plib); _numfin_paglib = lib->nfin_plib; _codditta = lib->codditta; _rag_soc = ragsoc_ditta(_codditta); + dati_anagrafici_ditta(_ind_dta,_civ_dta,_cap_dta,_com_dta,_prov_dta); _cod_reg = lib->cod_reg; _descrizione = descrizione_codreg(_cod_reg); _cod_vidimaz = lib->cod_vid; @@ -287,12 +384,18 @@ bool BA3600_application::preprocess_page(int file, int counter) if (counter) { nini_plib = _numini_paglib - 1; + if (_nfin_plib_prec != nini_plib) _pag_fuori_sequenza = TRUE; else _pag_fuori_sequenza = FALSE; + + if (_mese != _meseprec) + printer().formfeed(); } - + + _meseprec = _mese; + _nfin_plib_prec = _numfin_paglib; return TRUE; @@ -327,18 +430,20 @@ void BA3600_application::setta_righe_prova() if (_pag_fuori_sequenza) set_row (i++,"@10gPAGINE FUORI SEQUENZA"); - set_row (i,"@1g#t", &_cod_lib); - set_row (i,"@6g#5d", &_numini_paglib); - set_row (i,"@13g#5d", &_numfin_paglib); - set_row (i,"@21g#5d", &_codditta); - set_row (i,"@27g#.41t", &_rag_soc); - set_row (i,"@69g#t", &_cod_reg); - set_row (i,"@73g#.31t", &_descrizione); - set_row (i,"@105g#t", &_cod_vidimaz); - set_row (i,"@111g#5d", &_numini_pagut); - set_row (i,"@117g#5d", &_numfin_pagut); - set_row (i,"@124g#5d", &_num_riga); - set_row (i,"@130g#t", &_stamp_bollato_str); + set_row (i, "@1g#t", &_cod_lib); + set_row (i, "@6g#5d", &_numini_paglib); + set_row (i, "@13g#5d", &_numfin_paglib); + set_row (i, "@21g#5d", &_codditta); + set_row (i, "@27g#.41t", &_rag_soc); + set_row (i, "@69g#t", &_cod_reg); + set_row (i, "@73g#.31t", &_descrizione); + set_row (i, "@105g#t", &_cod_vidimaz); + set_row (i, "@111g#5d", &_numini_pagut); + set_row (i, "@117g#5d", &_numfin_pagut); + set_row (i, "@124g#5d", &_num_riga); + set_row (i++,"@130g#t", &_stamp_bollato_str); + if (_stampa_ind) + set_row (i ,"@27g#t #t #t #t #t", &_ind_dta, &_civ_dta, &_cap_dta, &_com_dta, &_prov_dta); } void BA3600_application::setta_righe_bollato() @@ -371,11 +476,13 @@ void BA3600_application::setta_righe_bollato() set_row (i,"@111g#5d", &_numini_pagut); set_row (i,"@117g#5d", &_numfin_pagut); set_row (i,"@124g#5d", &_num_riga); - set_row (i,"@130g#t", &_stamp_bollato_str); + set_row (i++,"@130g#t", &_stamp_bollato_str); + if (_stampa_ind) + set_row (i ,"@27g#t #t #t #t #t", &_ind_dta, &_civ_dta, &_cap_dta, &_com_dta, &_prov_dta); } print_action BA3600_application::postprocess_page(int file, int counter) -{ +{ if (_buff == NULL) return NEXT_PAGE; @@ -389,12 +496,55 @@ const char* BA3600_application::ragsoc_ditta(long codditta) nditte.zero(); nditte.put(NDT_CODDITTA, codditta); nditte.read(); - if (nditte.bad()) + if (nditte.bad()) nditte.zero(); tmp = nditte.get(NDT_RAGSOC); + _tipoa_ditta = nditte.get_char(NDT_TIPOA); + _codana_ditta = nditte.get_long(NDT_CODANAGR); + return tmp; } +void BA3600_application::dati_anagrafici_ditta(TString& ind,TString& civ,TString& cap, + TString& com,TString& prov) +{ + TLocalisamfile anag (LF_ANAG); + TLocalisamfile comuni (LF_COMUNI); + TString codcom; + + anag.setkey(1); + anag.zero(); + anag.put(ANA_TIPOA, _tipoa_ditta); + anag.put(ANA_CODANAGR, _codana_ditta); + if (anag.read(_isequal) == NOERR) + { + codcom = anag.get(ANA_COMRF); + + if (codcom != "") + { + ind = anag.get(ANA_INDRF); + civ = anag.get(ANA_CIVRF); + cap = anag.get(ANA_CAPRF); + } + else + { + codcom = anag.get(ANA_COMRES); + ind = anag.get(ANA_INDRES); + civ = anag.get(ANA_CIVRES); + cap = anag.get(ANA_CAPRES); + } + } + + comuni.setkey(1); + comuni.zero(); + comuni.put(COM_COM, codcom); + if (comuni.read(_isequal) == NOERR) + { + com = comuni.get(COM_DENCOM); + prov = comuni.get(COM_PROVCOM); + } +} + const char* BA3600_application::descrizione_codreg(TString& codreg) { TString16 dep; @@ -410,18 +560,39 @@ const char* BA3600_application::descrizione_codreg(TString& codreg) return tmp; } -void BA3600_application::preprocess_header() -{ +void BA3600_application::compatta_ragsoc(TString& ragsoc) +{ + TString app; + + if (_tipo_intesta == 'F') + { + app = ragsoc.mid(29,20); + app.trim(); + ragsoc = ragsoc.mid(0,30); + ragsoc.trim(); + ragsoc << ' ' << app; + } } -void BA3600_application::crea_intestazione() +void BA3600_application::preprocess_header() +{ + if (_tipo_stampa ==1) + crea_intestazione_prova(); +} + +void BA3600_application::crea_intestazione_prova() { TString datastampastr; TString sep(132); - + TString cofi,paiv,ind,civ,cap,com,prov,ragsoc; + + intestatario(cofi,paiv,ragsoc,ind,civ,cap,com,prov); + compatta_ragsoc(ragsoc); + reset_header(); - set_header (1,"Studio"); + set_header (1,"Studio %s %s %s %s %s %s", (const char*) ragsoc,(const char*) ind,(const char*) civ, + (const char*) cap,(const char*) com,(const char*) prov); sep << "Pag. @#"; sep.right_just(132); @@ -429,22 +600,55 @@ void BA3600_application::crea_intestazione() datastampastr = _datastampa.string(); - set_header (2,"@0gPartita iva"); - set_header (2,"@30gCodice fiscale"); - if (_tipo_stampa == 1) - { - set_header (2,"@75gLIBRO UNICO DI PROVA"); - set_header (2,"@105gData@110g%s",(const char*) datastampastr); - } - else - if (_tipo_stampa == 2) - { - TString mese = itom(_mesea); - set_header (2,"@75gmese di ", (const char*) mese); - set_header (2,"@92g%4d", _anno); - } + set_header (2,"@0gPartita iva %11s", (const char*) paiv); + set_header (2,"@30gCodice fiscale %16s", (const char*) cofi); + set_header (2,"@75gLIBRO UNICO DI PROVA"); + set_header (2,"@105gData@110g%s",(const char*) datastampastr); + + set_header (3,"@0gLibro unico : %s %s", (const char*) _cod_lib,(const char*) _desc_cod_lib); + TString mese = itom(_mese); + set_header (3,"@75gmese di %s", (const char*) mese); + set_header (3,"@92g%4d", _anno); + + sep.fill('-'); //Stampa 132 - (sep(132)) + set_header (4, (const char *) sep); + set_header (5,"@0gCod.@6gNumero@13gpagine@21gCodice@69gCod.@104gCodice@111gN.pag.@118gutente@126gNum.@131gF"); + set_header (6,"@0gLibro@8gda@16ga@21gditta@28gDenominazione@69greg.@74gDescrizione@104gvidim.@112gutilizzate@126greg.@131g8"); + set_header (7, (const char *) sep); +} + +void BA3600_application::crea_intestazione_bollato() +{ + TString datastampastr; + TString sep(132); + TString cofi,paiv,ind,civ,cap,com,prov,ragsoc; + + descrizione(); + + reset_header(); + + sep << "Pag. @#"; + sep.right_just(132); + set_header (2,(const char*) sep); + + datastampastr = _datastampa.string(); + + if (_stampa_intesta) + { + intestatario(cofi,paiv,ragsoc,ind,civ,cap,com,prov); + compatta_ragsoc(ragsoc); + + set_header (1,"Studio %s %s %s %s %s %s", (const char*) ragsoc,(const char*) ind,(const char*) civ, + (const char*) cap,(const char*) com,(const char*) prov); + set_header (2,"@0gPartita iva %11s", (const char*) paiv); + set_header (2,"@30gCodice fiscale %16s", (const char*) cofi); + } + + set_header (3,"@0gLibro unico : %s %s", (const char*) _cod_lib_su,(const char*) _desc_cod_lib_su); + TString mese = itom(_mesea); + set_header (3,"@75gmese di %s", (const char*) mese); + set_header (3,"@92g%4d", _anno); - set_header (3,"@0gLibro unico :"); sep.fill('-'); //Stampa 132 - (sep(132)) set_header (4, (const char *) sep); set_header (5,"@0gCod.@6gNumero@13gpagine@21gCodice@69gCod.@104gCodice@111gN.pag.@118gutente@126gNum.@131gF"); @@ -455,6 +659,8 @@ void BA3600_application::crea_intestazione() bool BA3600_application::user_create() { _nditte = new TLocalisamfile (LF_NDITTE); + _anag = new TLocalisamfile (LF_ANAG); + _comuni = new TLocalisamfile (LF_COMUNI); _tab_inl = new TTable (TAB_INL); _tab_lbu = new TTable (TAB_LBU); @@ -472,6 +678,9 @@ bool BA3600_application::user_destroy() delete _tab_lbu; delete _tab_reg; delete _nditte; + delete _anag; + delete _comuni; + return TRUE; } diff --git a/ba/ba3600.h b/ba/ba3600.h index 424516608..7d037fdf8 100755 --- a/ba/ba3600.h +++ b/ba/ba3600.h @@ -20,7 +20,8 @@ #define F_TITOLO_BOLLATO 113 #define F_LIBRO_UNICO2 114 #define F_GRUPPO 115 -#define F_STAMPA_MESEG 116 +#define F_STAMPA_MESEG 116 +#define F_ANNO 117 -#endif // __BA3600_H +#endif // __BA3600_H diff --git a/ba/ba3600a.uml b/ba/ba3600a.uml index 82c7632f3..3bc9899c9 100755 --- a/ba/ba3600a.uml +++ b/ba/ba3600a.uml @@ -15,14 +15,15 @@ BEGIN MESSAGE HIDE,F_TITOLO_BOLLATO|RESET,F_TITOLO_BOLLATO MESSAGE SHOW,F_DATA_STAMPA|SHOW,F_MESEDA|SHOW,F_ANNODA|SHOW,F_MESEA MESSAGE SHOW,F_ANNOA|SHOW,F_TITOLO_PROVA - MESSAGE SHOW,F_LIBRO_UNICO1|SHOW,F_GRUPPO + MESSAGE SHOW,F_LIBRO_UNICO1|SHOW,F_GRUPPO|SHOW,F_ANNO ITEM "2|Stampa su libro bollato" MESSAGE HIDE,F_LIBRO_UNICO1|RESET,F_LIBRO_UNICO1 MESSAGE HIDE,F_DATA_STAMPA|RESET,F_DATA_STAMPA MESSAGE HIDE,F_MESEDA|RESET,F_MESEDA|HIDE,F_ANNODA|RESET,F_ANNODA MESSAGE HIDE,F_MESEA|RESET,F_MESEA|HIDE,F_ANNOA|RESET,F_ANNOA MESSAGE HIDE,F_TITOLO_PROVA|RESET,F_TITOLO_PROVA - MESSAGE HIDE,F_GRUPPO|RESET,F_GRUPPO + MESSAGE HIDE,F_GRUPPO|RESET,F_GRUPPO + MESSAGE HIDE,F_ANNO|RESET,F_ANNO MESSAGE SHOW,F_STAMPA_MESE|SHOW,F_STAMPA_ANNO|SHOW,F_CODLIB_STAMPA MESSAGE SHOW,F_PAGFINALE|SHOW,F_TITOLO_BOLLATO|SHOW,F_LIBRO_UNICO2 END @@ -44,18 +45,26 @@ BEGIN FLAGS "A" END +NUMBER F_ANNO 4 +BEGIN + PROMPT 4 10 "Anno " + USE %LBU + INPUT CODTAB[1,4] F_ANNO + INPUT CODTAB[5,7] F_LIBRO_UNICO1 + DISPLAY "Anno riferimento" CODTAB[1,4] + DISPLAY "Codice libro unico" CODTAB[5,7] + OUTPUT F_ANNO CODTAB[1,4] + OUTPUT F_LIBRO_UNICO1 CODTAB[5,7] + OUTPUT F_ANNODA CODTAB[1,4] + OUTPUT F_ANNOA CODTAB[1,4] + CHECKTYPE REQUIRED +END + STRING F_LIBRO_UNICO1 3 BEGIN PROMPT 4 11 "Codice libro unico " HELP "Codice del libro da stampare" - USE %LBU - INPUT CODTAB[1,4] F_ANNODA - INPUT CODTAB[5,7] F_LIBRO_UNICO1 - DISPLAY "Anno riferimento" CODTAB[1,4] - DISPLAY "Codice libro unico" CODTAB[5,7] - OUTPUT F_LIBRO_UNICO1 CODTAB[5,7] - OUTPUT F_ANNODA CODTAB[1,4] - OUTPUT F_ANNOA CODTAB[1,4] + COPY ALL F_ANNO CHECKTYPE REQUIRED END @@ -91,12 +100,12 @@ BEGIN FLAGS "D" END -STRING F_LIBRO_UNICO2 3 +NUMBER F_STAMPA_ANNO 4 BEGIN - PROMPT 4 9 "Codice libro unico di studio " - HELP "Codice del libro da stampare" + PROMPT 4 8 "Anno " + FLAGS "R" USE %LBU - INPUT CODTAB[1,4] F_STAMPA_ANNO + INPUT CODTAB[1,4] F_STAMPA_ANNO INPUT CODTAB[5,7] F_LIBRO_UNICO2 DISPLAY "Codice libro" CODTAB[5,7] DISPLAY "Anno" CODTAB[1,4] @@ -109,6 +118,14 @@ BEGIN CHECKTYPE REQUIRED END +STRING F_LIBRO_UNICO2 3 +BEGIN + PROMPT 4 9 "Codice libro unico di studio " + HELP "Codice del libro da stampare" + COPY ALL F_STAMPA_ANNO + CHECKTYPE REQUIRED +END + NUMBER F_STAMPA_MESEG 2 BEGIN @@ -120,13 +137,8 @@ NUMBER F_STAMPA_MESE 2 BEGIN PROMPT 4 11 "Stampa mese " HELP "Mese di cui effettuare la stampa" - NUM_EXPR {(#THIS_FIELD >= #F_STAMPA_MESEG) && (#THIS_FIELD <= 12)} -END - -NUMBER F_STAMPA_ANNO 4 -BEGIN - PROMPT 37 11 "Anno " - FLAGS "D" + NUM_EXPR {(#THIS_FIELD > #F_STAMPA_MESEG) && (#THIS_FIELD <= 12)} + CHECKTYPE REQUIRED END STRING F_CODLIB_STAMPA 3 @@ -139,7 +151,7 @@ BEGIN DISPLAY "Codice libro unico" CODTAB[5,7] DISPLAY "Anno riferimento" CODTAB[1,4] OUTPUT F_CODLIB_STAMPA CODTAB[5,7] - CHECKTYPE NORMAL + //CHECKTYPE NORMAL END NUMBER F_PAGFINALE 5