From c4c3f7bae3a85118e5ea651f262c42c9bad48dd3 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 8 Sep 1994 10:11:19 +0000 Subject: [PATCH] Correzioni al programma causali (cg05*) stampa registri (cg44*) e chiusura conti (cg46*). git-svn-id: svn://10.65.10.50/trunk@185 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0500.cpp | 55 +-- cg/cg0500a.uml | 582 +++++++++++------------ cg/cg0500b.uml | 422 +++++++++-------- cg/cg0501.cpp | 97 ++-- cg/cg0501.h | 25 +- cg/cg4400.cpp | 590 +++++++++++++---------- cg/cg4400.h | 24 +- cg/cg4400a.uml | 709 ++++++++++------------------ cg/cg4401.cpp | 21 +- cg/cg4600.cpp | 1224 ++++++++++++++++++++++++------------------------ cg/cg4600a.uml | 625 ++++++++++++------------ 11 files changed, 2147 insertions(+), 2227 deletions(-) diff --git a/cg/cg0500.cpp b/cg/cg0500.cpp index 62d2e0aa2..7dd472a82 100755 --- a/cg/cg0500.cpp +++ b/cg/cg0500.cpp @@ -185,6 +185,8 @@ typedef enum { acquisto, vendita, incasso_pagamento, int _mode; // Modo maschera corrente int _items; + // Bitarray delle righe lette da file all'inizio. + // Quando leggo dal file la riga n setto il bit n. TBit_array _righe_gia_presenti; void togli_dal_file(const TString&); @@ -833,23 +835,23 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler) void CG0500_application::togli_dal_file(const TString& cau) { + long i; TLocalisamfile *rcaus = _rel->lfile(LF_RCAUSALI); - const long start = _righe_gia_presenti.first_one(); - const long last = _righe_gia_presenti.last_one(); - - if (start > 0L) - for (long i=start; i<=last; i++) + long last = _righe_gia_presenti.last_one(); + long start = _righe_gia_presenti.first_one(); + + for (i=start; i<=last; i++) + { + if (_righe_gia_presenti[i]) { - if (_righe_gia_presenti[i]) - { - rcaus->zero(); - rcaus->put(RCA_CODCAUS,cau); - rcaus->put(RCA_NRIGA, i); - if (rcaus->read() == NOERR) - rcaus->remove(); - _righe_gia_presenti.reset(i); - } + rcaus->zero(); + rcaus->put(RCA_CODCAUS,cau); + rcaus->put(RCA_NRIGA, i); + // if (rcaus->read() == NOERR) + rcaus->remove(); + _righe_gia_presenti.reset(i); } + } } int CG0500_application::write(const TMask& m) @@ -867,6 +869,7 @@ int CG0500_application::re_write(const TMask& m,bool rewrite) const TString16 cau(m.get(F_COD_CAUS)); TString80 desc; TString16 coddesc; + TLocalisamfile *caus = _rel->lfile(LF_CAUSALI); TLocalisamfile *rcaus = _rel->lfile(LF_RCAUSALI); m.autosave(_rel); @@ -878,8 +881,7 @@ int CG0500_application::re_write(const TMask& m,bool rewrite) for (int i = 0; i < _items; i++) { TToken_string &riga = cs.row(i); - if (riga.empty_items()) - continue; + if (riga.empty_items()) continue; desc = riga.get(0); const char tipo_cf = riga.get_char(); @@ -895,7 +897,7 @@ int CG0500_application::re_write(const TMask& m,bool rewrite) { rcaus->zero(); rcaus->put (RCA_CODCAUS, (const char *)cau); - rcaus->put (RCA_NRIGA, i+1); // Numerare da uno! + rcaus->put (RCA_NRIGA, i+1); // Numerare da uno! rcaus->put (RCA_GRUPPO , g); rcaus->put (RCA_CONTO , c); rcaus->put (RCA_SOTTOCONTO, s); @@ -903,28 +905,27 @@ int CG0500_application::re_write(const TMask& m,bool rewrite) rcaus->put (RCA_DESC , (const char *)desc); rcaus->put (RCA_CODDESC, (const char *)coddesc); rcaus->put (RCA_TIPOCF, tipo_cf); - if (rewrite) - { - if (_righe_gia_presenti[i+1]) // bitarray delle righe lette da file all'inizio - { + if (rewrite) { + if (_righe_gia_presenti[i+1]) { rcaus->rewrite(); _righe_gia_presenti.reset(i+1); } -else - rcaus->write(); + else + rcaus->write(); } -else - rcaus->write(); + else + rcaus->write(); } } if (rewrite) { togli_dal_file(cau); // Elimina dal file le righe rimaste nel bitarray - return _rel->rewrite(); + // return _rel->rewrite(); + return caus->rewrite(); } else - return _rel->write(); + return caus->write(); } diff --git a/cg/cg0500a.uml b/cg/cg0500a.uml index f589072a6..af05277ff 100755 --- a/cg/cg0500a.uml +++ b/cg/cg0500a.uml @@ -1,291 +1,291 @@ -#include "cg0500.h" - -TOOLBAR "" 0 20 0 2 - -#include - -ENDPAGE - -PAGE "" -1 -1 77 20 - -GROUPBOX DLG_NULL -1 3 -BEGIN - PROMPT 1 0 "" -END - -STRING F_COD_CAUS 3 -BEGIN - PROMPT 3 1 "Codice " - FIELD LF_CAUSALI->CODCAUS - KEY 1 - FLAGS "U" - USE LF_CAUSALI - INPUT CODCAUS F_COD_CAUS - DISPLAY "Cod. causale" CODCAUS - DISPLAY "Descrizione @50" DESCR - DISPLAY "Tipo documento" TIPODOC - DISPLAY "Codice registro" REG - DISPLAY "Tipo movimento" TIPOMOV - OUTPUT F_COD_CAUS CODCAUS - OUTPUT F_DESCR DESCR - HELP "Codice causale" - CHECKTYPE REQUIRED -END - -STRING F_DESCR 40 -BEGIN - PROMPT 17 1 "Descrizione " - FIELD LF_CAUSALI->DESCR - COPY USE F_COD_CAUS - INPUT CODCAUS F_COD_CAUS - INPUT DESCR F_DESCR - DISPLAY "Cod. causale" CODCAUS - DISPLAY "Descrizione @50" DESCR - DISPLAY "Tipo documento" TIPODOC - DISPLAY "Codice registro" REG - DISPLAY "Tipo movimento" TIPOMOV - OUTPUT F_COD_CAUS CODCAUS - OUTPUT F_DESCR DESCR - HELP "Descrizione della causale" -END - -STRING F_TIPO_DOC 2 -BEGIN - PROMPT 2 4 "Tipo doc. " - FIELD LF_CAUSALI->TIPODOC - USE %TPD - INPUT CODTAB F_TIPO_DOC - DISPLAY "Tipo " CODTAB - DISPLAY "Descrizione @50 " S0 - OUTPUT F_TIPO_DOC CODTAB - HELP "Tipo documento" - CHECKTYPE NORMAL -// MESSAGE SHOW, 2@ -// MESSAGE EMPTY HIDE, 2@ - FLAGS "U" -END - -STRING F_COD_REG 3 -BEGIN - PROMPT 23 4 "Cod. reg. " - FIELD LF_CAUSALI->REG - USE REG - INPUT CODTAB[1,4] F_ANNOES - INPUT CODTAB[5,7] F_COD_REG - DISPLAY "Anno" CODTAB[1,4] - DISPLAY "Codice registro " CODTAB[5,7] - DISPLAY "Tipo" I0 - DISPLAY "Registro corrispettivi" B0 - DISPLAY "Descrizione @50" S0 - OUTPUT F_ANNOES CODTAB[1,4] - OUTPUT F_COD_REG CODTAB[5,7] - OUTPUT F_TIPO_REG I0 - OUTPUT F_CORRISP B0 - HELP "Codice registro" - CHECKTYPE NORMAL - FLAGS "D" -END - -// Questo rimane sempre nascosto -STRING F_TIPO_MOV 2 -BEGIN - PROMPT 68 4 "" - FIELD LF_CAUSALI->TIPOMOV - FLAGS "H" -END - -// Viene mostrato questo se TPD non vuoto e diverso da IN AN PG -LISTBOX F_TIPO_MOV_1 1 20 -BEGIN - PROMPT 44 4 "Tipo mov. " - FIELD LF_CAUSALI->TIPOMOV - HELP "Tipo movimento" - ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV - ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV - ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV -// GROUP 2 -END - -// Viene mostrato questo se TPD vuoto o uguale a IN AN PG -LISTBOX F_TIPO_MOV_2 1 20 -BEGIN - PROMPT 44 4 "Tipo mov. " - FIELD LF_CAUSALI->TIPOMOV - HELP "Inserire il tipo movimento" - ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV - ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV - ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV - ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV - FLAGS "H" -END - -STRING F_ANNOES 4 -BEGIN - PROMPT 2 6 "" - FLAGS "H" -END - -STRING F_TIPO_REG 4 -BEGIN - PROMPT 23 5 "" - FLAGS "H" -END - -BOOLEAN F_CORRISP -BEGIN - PROMPT 33 5 "" - FLAGS "H" -END - -SPREADSHEET F_SHEET_GCS -BEGIN - PROMPT 2 7 "" - ITEM "Tipo conto@21" - ITEM "C/F" - ITEM "Gr." - ITEM "Co." - ITEM "Sottoc." - ITEM "D/A" - ITEM "Descrizione@50" - ITEM "Descr. agg." - ITEM "Iva" - ITEM "Cod.Iva" -END - -ENDPAGE - -PAGE "" -1 -1 77 20 - -GROUPBOX DLG_NULL -1 3 -BEGIN - PROMPT 1 0 "@BCampi obbligatori in caricamento documenti" -END - -BOOLEAN F_DATA_DOC -BEGIN - PROMPT 2 1 "Data documento" - FIELD LF_CAUSALI->DATADOC - HELP "" - CHECKTYPE NORMAL -END - -BOOLEAN F_NUM_DOC -BEGIN - PROMPT 34 1 "Numero documento" - FIELD LF_CAUSALI->NUMDOC - CHECKTYPE NORMAL -END - -BOOLEAN F_AUTO_FAT -BEGIN - PROMPT 2 4 "Autofattura art.34" - FIELD LF_CAUSALI->AUTOFATT - CHECKTYPE NORMAL - GROUP 2 -END - -BOOLEAN F_ALLEGAT -BEGIN - PROMPT 34 4 "Doc. non va in allegati fine anno" - FIELD LF_CAUSALI->ALLEG - GROUP 2 -END - -BOOLEAN F_FAT_RITARDO -BEGIN - PROMPT 2 6 "Fattura in ritardo" - FIELD LF_CAUSALI->RITFATT - GROUP 2 -END - -STRING F_COD_CAUS_IM 3 -BEGIN - PROMPT 34 6 "Codice causale per l'incasso immediato " - FIELD LF_CAUSALI->CODCAUSIM - COPY USE F_COD_CAUS - INPUT CODCAUS F_COD_CAUS_IM - COPY DISPLAY F_COD_CAUS - OUTPUT F_COD_CAUS_IM CODCAUS - CHECKTYPE NORMAL -// MESSAGE CLEAR, F_M_770 - GROUP 2 -END - -BOOLEAN F_OP_INTRACOM -BEGIN - PROMPT 2 8 "Operazione intracomunitaria" - FIELD LF_CAUSALI->INTRACOM -// MESSAGE TRUE "X", F_MOV_VALU | DISABLE, F_MOV_VALU -// MESSAGE FALSE "", F_MOV_VALU | ENABLE, F_MOV_VALU - GROUP 2 -END - -BOOLEAN F_VALINTRA -BEGIN - PROMPT 34 8 "Gestione valuta per operazioni intrac." - FIELD LF_CAUSALI->VALINTRA - GROUP 2 -END - -BOOLEAN F_MOV_VALU -BEGIN - PROMPT 2 10 "Movimento in valuta" - FIELD LF_CAUSALI->MOVVAL - GROUP 2 -END - -BOOLEAN F_MOV_SEZ -BEGIN - PROMPT 34 10 "Movimento solo sezionale" - FIELD LF_CAUSALI->MOVSEZ - FLAGS "H" -END - -LISTBOX F_OP_FINE_ANNO 1 10 -BEGIN - PROMPT 2 12 "Operazioni di fine anno " - ITEM " | " - ITEM "C|Chiusura" - ITEM "A|Apertura" - FIELD LF_CAUSALI->MOVAP - FLAGS "H" -END - - -LISTBOX F_COLL_CESP 1 40 -BEGIN - PROMPT 2 14 "Collegamento cespiti " - FIELD LF_CAUSALI->COLLCESP - HELP "Inserire il tipo di collegamento cespiti" - ITEM " |Nessuno" - ITEM "A|Acquisto cespite" - ITEM "B|Rettifica acquisto" - ITEM "C|Sostenimento costi" - ITEM "E|Eliminazione dal processo produttivo" - ITEM "M|Rivalutazione monetaria" - ITEM "P|Reinvestimento plusvalenze" - ITEM "R|Rivalutazione economica" - ITEM "T|Trasferimento" - ITEM "V|Vendita cespite" - ITEM "Z|Rettifica vendita" -END - -LISTBOX F_M_770 1 40 -BEGIN - PROMPT 2 16 "Collegamento Mod.770 " - FIELD LF_CAUSALI->M770 - HELP "Inserire il tipo di collegamento Mod.770" - ITEM " |Nessuno" // MESSAGE ENABLE,F_COD_CAUS_IM - ITEM "1|Ricevuta e/o pagamento fattura percip." // MESSAGE CLEAR,F_COD_CAUS_IM - ITEM "2|Versamento ritenute percip." // MESSAGE CLEAR,F_COD_CAUS_IM - ITEM "3|Versamento ritenute dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM - ITEM "4|Versamento contributi dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM - ITEM "5|Compensi non soggetti" // MESSAGE CLEAR,F_COD_CAUS_IM - ITEM "6|Ritenute per operazioni occasionali" // MESSAGE CLEAR,F_COD_CAUS_IM -END - -ENDPAGE - -ENDMASK - -#include "cg0500b.uml" +#include "cg0500.h" + +TOOLBAR "" 0 20 0 2 + +#include + +ENDPAGE + +PAGE "" -1 -1 77 20 + +GROUPBOX DLG_NULL -1 3 +BEGIN + PROMPT 1 0 "" +END + +STRING F_COD_CAUS 3 +BEGIN + PROMPT 3 1 "Codice " + FIELD LF_CAUSALI->CODCAUS + KEY 1 + FLAGS "U" + USE LF_CAUSALI + INPUT CODCAUS F_COD_CAUS + DISPLAY "Cod. causale" CODCAUS + DISPLAY "Descrizione @50" DESCR + DISPLAY "Tipo documento" TIPODOC + DISPLAY "Codice registro" REG + DISPLAY "Tipo movimento" TIPOMOV + OUTPUT F_COD_CAUS CODCAUS + OUTPUT F_DESCR DESCR + HELP "Codice causale" + CHECKTYPE REQUIRED +END + +STRING F_DESCR 40 +BEGIN + PROMPT 17 1 "Descrizione " + FIELD LF_CAUSALI->DESCR + COPY USE F_COD_CAUS + INPUT CODCAUS F_COD_CAUS + INPUT DESCR F_DESCR + DISPLAY "Cod. causale" CODCAUS + DISPLAY "Descrizione @50" DESCR + DISPLAY "Tipo documento" TIPODOC + DISPLAY "Codice registro" REG + DISPLAY "Tipo movimento" TIPOMOV + OUTPUT F_COD_CAUS CODCAUS + OUTPUT F_DESCR DESCR + HELP "Descrizione della causale" +END + +STRING F_TIPO_DOC 2 +BEGIN + PROMPT 2 4 "Tipo doc. " + FIELD LF_CAUSALI->TIPODOC + USE %TPD + INPUT CODTAB F_TIPO_DOC + DISPLAY "Tipo " CODTAB + DISPLAY "Descrizione @50 " S0 + OUTPUT F_TIPO_DOC CODTAB + HELP "Tipo documento" + CHECKTYPE NORMAL +// MESSAGE SHOW, 2@ +// MESSAGE EMPTY HIDE, 2@ + FLAGS "U" +END + +STRING F_COD_REG 3 +BEGIN + PROMPT 23 4 "Cod. reg. " + FIELD LF_CAUSALI->REG + USE REG + INPUT CODTAB[1,4] F_ANNOES + INPUT CODTAB[5,7] F_COD_REG + DISPLAY "Anno" CODTAB[1,4] + DISPLAY "Codice registro " CODTAB[5,7] + DISPLAY "Tipo" I0 + DISPLAY "Registro corrispettivi" B0 + DISPLAY "Descrizione @50" S0 + OUTPUT F_ANNOES CODTAB[1,4] + OUTPUT F_COD_REG CODTAB[5,7] + OUTPUT F_TIPO_REG I0 + OUTPUT F_CORRISP B0 + HELP "Codice registro" + CHECKTYPE NORMAL + FLAGS "D" +END + +// Questo rimane sempre nascosto +STRING F_TIPO_MOV 2 +BEGIN + PROMPT 68 4 "" + FIELD LF_CAUSALI->TIPOMOV + FLAGS "H" +END + +// Viene mostrato questo se TPD non vuoto e diverso da IN AN PG +LISTBOX F_TIPO_MOV_1 1 20 +BEGIN + PROMPT 44 4 "Tipo mov. " + FIELD LF_CAUSALI->TIPOMOV + HELP "Tipo movimento" + ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV + ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV + ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV +// GROUP 2 +END + +// Viene mostrato questo se TPD vuoto o uguale a IN AN PG +LISTBOX F_TIPO_MOV_2 1 20 +BEGIN + PROMPT 44 4 "Tipo mov. " + FIELD LF_CAUSALI->TIPOMOV + HELP "Inserire il tipo movimento" + ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV + ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV + ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV + ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV + FLAGS "H" +END + +STRING F_ANNOES 4 +BEGIN + PROMPT 2 6 "" + FLAGS "H" +END + +STRING F_TIPO_REG 4 +BEGIN + PROMPT 23 5 "" + FLAGS "H" +END + +BOOLEAN F_CORRISP +BEGIN + PROMPT 33 5 "" + FLAGS "H" +END + +SPREADSHEET F_SHEET_GCS +BEGIN + PROMPT 2 7 "" + ITEM "Tipo conto@21" + ITEM "C/F" + ITEM "Gr." + ITEM "Co." + ITEM "Sottoc." + ITEM "D/A" + ITEM "Descrizione@50" + ITEM "Descr. agg." + ITEM "Iva" + ITEM "Cod.Iva" +END + +ENDPAGE + +PAGE "" -1 -1 77 20 + +GROUPBOX DLG_NULL -1 3 +BEGIN + PROMPT 1 0 "@BCampi obbligatori in caricamento documenti" +END + +BOOLEAN F_DATA_DOC +BEGIN + PROMPT 2 1 "Data documento" + FIELD LF_CAUSALI->DATADOC + HELP "" + CHECKTYPE NORMAL +END + +BOOLEAN F_NUM_DOC +BEGIN + PROMPT 34 1 "Numero documento" + FIELD LF_CAUSALI->NUMDOC + CHECKTYPE NORMAL +END + +BOOLEAN F_AUTO_FAT +BEGIN + PROMPT 2 4 "Autofattura art.34" + FIELD LF_CAUSALI->AUTOFATT + CHECKTYPE NORMAL + GROUP 2 +END + +BOOLEAN F_ALLEGAT +BEGIN + PROMPT 34 4 "Doc. non va in allegati fine anno" + FIELD LF_CAUSALI->ALLEG + GROUP 2 +END + +BOOLEAN F_FAT_RITARDO +BEGIN + PROMPT 2 6 "Fattura in ritardo" + FIELD LF_CAUSALI->RITFATT + GROUP 2 +END + +STRING F_COD_CAUS_IM 3 +BEGIN + PROMPT 34 6 "Codice causale per l'incasso immediato " + FIELD LF_CAUSALI->CODCAUSIM + COPY USE F_COD_CAUS + INPUT CODCAUS F_COD_CAUS_IM + COPY DISPLAY F_COD_CAUS + OUTPUT F_COD_CAUS_IM CODCAUS + CHECKTYPE NORMAL +// MESSAGE CLEAR, F_M_770 + GROUP 2 +END + +BOOLEAN F_OP_INTRACOM +BEGIN + PROMPT 2 8 "Operazione intracomunitaria" + FIELD LF_CAUSALI->INTRACOM +// MESSAGE TRUE "X", F_MOV_VALU | DISABLE, F_MOV_VALU +// MESSAGE FALSE "", F_MOV_VALU | ENABLE, F_MOV_VALU + GROUP 2 +END + +BOOLEAN F_VALINTRA +BEGIN + PROMPT 34 8 "Gestione valuta per operazioni intrac." + FIELD LF_CAUSALI->VALINTRA + GROUP 2 +END + +BOOLEAN F_MOV_VALU +BEGIN + PROMPT 2 10 "Movimento in valuta" + FIELD LF_CAUSALI->MOVVAL + GROUP 2 +END + +BOOLEAN F_MOV_SEZ +BEGIN + PROMPT 34 10 "Movimento solo sezionale" + FIELD LF_CAUSALI->MOVSEZ + FLAGS "H" +END + +LISTBOX F_OP_FINE_ANNO 1 10 +BEGIN + PROMPT 2 12 "Operazioni di fine anno " + ITEM " | " + ITEM "C|Chiusura" + ITEM "A|Apertura" + FIELD LF_CAUSALI->MOVAP + FLAGS "H" +END + + +LISTBOX F_COLL_CESP 1 40 +BEGIN + PROMPT 2 14 "Collegamento cespiti " + FIELD LF_CAUSALI->COLLCESP + HELP "Inserire il tipo di collegamento cespiti" + ITEM " |Nessuno" + ITEM "A|Acquisto cespite" + ITEM "B|Rettifica acquisto" + ITEM "C|Sostenimento costi" + ITEM "E|Eliminazione dal processo produttivo" + ITEM "M|Rivalutazione monetaria" + ITEM "P|Reinvestimento plusvalenze" + ITEM "R|Rivalutazione economica" + ITEM "T|Trasferimento" + ITEM "V|Vendita cespite" + ITEM "Z|Rettifica vendita" +END + +LISTBOX F_M_770 1 40 +BEGIN + PROMPT 2 16 "Collegamento Mod.770 " + FIELD LF_CAUSALI->M770 + HELP "Inserire il tipo di collegamento Mod.770" + ITEM " |Nessuno" // MESSAGE ENABLE,F_COD_CAUS_IM + ITEM "1|Ricevuta e/o pagamento fattura percip." // MESSAGE CLEAR,F_COD_CAUS_IM + ITEM "2|Versamento ritenute percip." // MESSAGE CLEAR,F_COD_CAUS_IM + ITEM "3|Versamento ritenute dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM + ITEM "4|Versamento contributi dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM + ITEM "5|Compensi non soggetti" // MESSAGE CLEAR,F_COD_CAUS_IM + ITEM "6|Ritenute per operazioni occasionali" // MESSAGE CLEAR,F_COD_CAUS_IM +END + +ENDPAGE + +ENDMASK + +#include "cg0500b.uml" diff --git a/cg/cg0500b.uml b/cg/cg0500b.uml index bf5410eec..9ae38810c 100755 --- a/cg/cg0500b.uml +++ b/cg/cg0500b.uml @@ -1,203 +1,223 @@ - -#include "cg0500.h" - -PAGE "" -1 -1 68 11 - -STRING 101 22 -BEGIN - PROMPT 1 1 "Tipo " - FLAGS "D" -END - -LISTBOX 102 1 11 -BEGIN - PROMPT 33 1 "C/F " - ITEM " |Conto" - MESSAGE SHOW,105|HIDE,205|HIDE,305 - ITEM "C|Cliente" - MESSAGE SHOW,205|HIDE,105|HIDE,305 - ITEM "F|Fornitore" - MESSAGE SHOW,305|HIDE,105|HIDE,205 - FLAGS "DG" - GROUP 1 -// FLAGS "U" -END - -NUMBER 103 3 -BEGIN - PROMPT 1 3 "Gruppo " - FIELD LF_RCAUSALI->GRUPPO - USE LF_PCON KEY 1 SELECT (CONTO="") && (SOTTOCONTO="") - INPUT GRUPPO 103 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Descrizione@50" DESCR - DISPLAY "Tipo C/F" TMCF - CHECKTYPE NORMAL - OUTPUT 103 GRUPPO - OUTPUT 107 DESCR -// OUTPUT 102 TMCF - WARNING "Gruppo inesistente o mancante" -// CHECKTYPE REQUIRED - CHECKTYPE NORMAL - GROUP 1 - ADD RUN CG0 -0 -END - -NUMBER 104 3 -BEGIN - PROMPT 15 3 "Conto " - FIELD LF_RCAUSALI->CONTO - USE LF_PCON KEY 1 SELECT (CONTO!="") && (SOTTOCONTO="") - INPUT GRUPPO 103 - INPUT CONTO 104 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Descrizione@50" DESCR - DISPLAY "Tipo C/F" TMCF - CHECKTYPE NORMAL - OUTPUT 102 TMCF - OUTPUT 104 CONTO - OUTPUT 103 GRUPPO - OUTPUT 107 DESCR - WARNING "Conto inesistente o mancante" - ADD RUN CG0 -0 - GROUP 1 -END - -// Sottoconto NORMALE -NUMBER 105 6 -BEGIN - PROMPT 29 3 "Sottoconto " - FIELD LF_RCAUSALI->SOTTOCONTO - USE LF_PCON SELECT SOTTOCONTO!="" - INPUT GRUPPO 103 - INPUT CONTO 104 - INPUT SOTTOCONTO 105 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - OUTPUT 103 GRUPPO - OUTPUT 104 CONTO - OUTPUT 105 SOTTOCONTO - OUTPUT 107 DESCR - ADD RUN CG0 -0 - CHECKTYPE NORMAL - GROUP 1 -END - - -// Sottoconto CLIENTI -NUMBER 205 6 -BEGIN - PROMPT 29 3 "Cliente " - FIELD LF_RCAUSALI->SOTTOCONTO - USE LF_CLIFO KEY 1 SELECT (TIPOCF=="C") - INPUT TIPOCF "C" - INPUT CODCF 205 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" CODCF - DISPLAY "Ragione sociale@50" RAGSOC - DISPLAY "Tipo C/F" TIPOCF - OUTPUT 205 CODCF - OUTPUT 107 RAGSOC - CHECKTYPE NORMAL + +#include "cg0500.h" + +PAGE "" -1 -1 68 11 + +STRING 101 22 +BEGIN + PROMPT 1 1 "Tipo " + FLAGS "D" +END + +LISTBOX 102 1 11 +BEGIN + PROMPT 33 1 "C/F " + ITEM " |Conto" + MESSAGE SHOW,105|HIDE,205|HIDE,305 + ITEM "C|Cliente" + MESSAGE SHOW,205|HIDE,105|HIDE,305 + ITEM "F|Fornitore" + MESSAGE SHOW,305|HIDE,105|HIDE,205 + FLAGS "DG" + GROUP 1 +// FLAGS "U" +END + +NUMBER 103 3 +BEGIN + PROMPT 1 3 "Gruppo " + FIELD LF_RCAUSALI->GRUPPO + USE LF_PCON KEY 1 SELECT (CONTO="") && (SOTTOCONTO="") + INPUT GRUPPO 103 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Tipo C/F" TMCF + CHECKTYPE NORMAL + OUTPUT 103 GRUPPO + OUTPUT 107 DESCR +// OUTPUT 102 TMCF + WARNING "Gruppo inesistente o mancante" +// CHECKTYPE REQUIRED + CHECKTYPE NORMAL + GROUP 1 + ADD RUN CG0 -0 +END + +NUMBER 104 3 +BEGIN + PROMPT 15 3 "Conto " + FIELD LF_RCAUSALI->CONTO + USE LF_PCON KEY 1 SELECT (CONTO!="") && (SOTTOCONTO="") + INPUT GRUPPO 103 + INPUT CONTO 104 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Tipo C/F" TMCF + CHECKTYPE NORMAL + OUTPUT 102 TMCF + OUTPUT 104 CONTO + OUTPUT 103 GRUPPO + OUTPUT 107 DESCR + WARNING "Conto inesistente o mancante" + ADD RUN CG0 -0 + GROUP 1 +END + +// Sottoconto NORMALE +NUMBER 105 6 +BEGIN + PROMPT 29 3 "Sottoconto " + FIELD LF_RCAUSALI->SOTTOCONTO + USE LF_PCON SELECT SOTTOCONTO!="" + INPUT GRUPPO 103 + INPUT CONTO 104 + INPUT SOTTOCONTO 105 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT 103 GRUPPO + OUTPUT 104 CONTO + OUTPUT 105 SOTTOCONTO + OUTPUT 107 DESCR + ADD RUN CG0 -0 + CHECKTYPE NORMAL + GROUP 1 +END + + +// Sottoconto CLIENTI +NUMBER 205 6 +BEGIN + PROMPT 29 3 "Cliente " + FIELD LF_RCAUSALI->SOTTOCONTO + USE LF_CLIFO KEY 1 SELECT (TIPOCF=="C") + INPUT TIPOCF "C" + INPUT CODCF 205 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Tipo C/F" TIPOCF + OUTPUT 205 CODCF + OUTPUT 107 RAGSOC + CHECKTYPE NORMAL + FLAGS "H" + MESSAGE COPY,105 + ADD RUN CG0 -1 + GROUP 1 +END + +// Sottoconto FORNITORI +NUMBER 305 6 +BEGIN + PROMPT 29 3 "Fornitore " + FIELD LF_RCAUSALI->SOTTOCONTO + USE LF_CLIFO KEY 1 SELECT (TIPOCF=="F") + INPUT TIPOCF "F" + INPUT CODCF 305 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Tipo C/F" TIPOCF + OUTPUT 305 CODCF + OUTPUT 107 RAGSOC + CHECKTYPE NORMAL + FLAGS "H" + MESSAGE COPY,105 + ADD RUN CG0 -1 + GROUP 1 +END + +LISTBOX 106 5 +BEGIN + PROMPT 51 3 "Sezione " + ITEM "D|Dare" + ITEM "A|Avere" + FIELD LF_RCAUSALI->SEZIONE + CHECKTYPE REQUIRED + FLAGS "U" +END + +// Descrizione normale +STRING 107 50 +BEGIN + PROMPT 1 5 "Descrizione " + USE LF_PCON KEY 2 + FIELD LF_RCAUSALI->DESC + GROUP 1 +END + +// Descrizione CLIENTE +STRING 207 50 +BEGIN + PROMPT 1 5 "Descrizione " + FIELD LF_RCAUSALI->DESC + GROUP 1 FLAGS "H" - MESSAGE COPY,105 - ADD RUN CG0 -1 - GROUP 1 -END - -// Sottoconto FORNITORI -NUMBER 305 6 -BEGIN - PROMPT 29 3 "Fornitore " - FIELD LF_RCAUSALI->SOTTOCONTO - USE LF_CLIFO KEY 1 SELECT (TIPOCF=="F") - INPUT TIPOCF "F" - INPUT CODCF 305 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" CODCF - DISPLAY "Ragione sociale@50" RAGSOC - DISPLAY "Tipo C/F" TIPOCF - OUTPUT 305 CODCF - OUTPUT 107 RAGSOC - CHECKTYPE NORMAL +END + +// Descrizione FORNITORE +STRING 307 50 +BEGIN + PROMPT 1 5 "Descrizione " + FIELD LF_RCAUSALI->DESC + GROUP 1 FLAGS "H" - MESSAGE COPY,105 - ADD RUN CG0 -1 - GROUP 1 -END - -LISTBOX 106 5 -BEGIN - PROMPT 51 3 "Sezione " - ITEM "D|Dare" - ITEM "A|Avere" - FIELD LF_RCAUSALI->SEZIONE - CHECKTYPE REQUIRED - FLAGS "U" -END - -STRING 107 50 -BEGIN - PROMPT 1 5 "Descrizione " - FIELD LF_RCAUSALI->DESC - GROUP 1 -END - -STRING 108 3 -BEGIN - PROMPT 1 7 "Descrizione aggiuntiva " - FIELD LF_RCAUSALI->CODDESC - USE %DPN - INPUT CODTAB 108 - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT 108 CODTAB - FLAGS "R" - CHECKTYPE NORMAL - GROUP 1 -END - -BOOLEAN 109 -BEGIN - PROMPT 34 7 "Riga iva " - FIELD LF_RCAUSALI->RIGAIVA - FLAGS "D" -END - -STRING 110 4 -BEGIN - USE %IVA - PROMPT 48 7 "Codice iva " - INPUT CODTAB 110 - FIELD LF_RCAUSALI->CODIVA - DISPLAY "Codice " CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT 110 CODTAB - FLAGS "D" - GROUP 1 -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -13 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -23 -1 "" -END - -BUTTON DLG_NULL 9 2 -BEGIN - PROMPT -33 -1 "Azzera" - MESSAGE RESET,1@ -END - -ENDPAGE - -ENDMASK +END + +STRING 108 3 +BEGIN + PROMPT 1 7 "Descrizione aggiuntiva " + FIELD LF_RCAUSALI->CODDESC + USE %DPN + INPUT CODTAB 108 + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT 108 CODTAB + FLAGS "R" + CHECKTYPE NORMAL + GROUP 1 +END + +BOOLEAN 109 +BEGIN + PROMPT 34 7 "Riga iva " + FIELD LF_RCAUSALI->RIGAIVA + FLAGS "D" +END + +STRING 110 4 +BEGIN + USE %IVA + PROMPT 48 7 "Codice iva " + INPUT CODTAB 110 + FIELD LF_RCAUSALI->CODIVA + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT 110 CODTAB + FLAGS "D" + GROUP 1 +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_CANCEL 9 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_NULL 9 2 +BEGIN + PROMPT -33 -1 "Azzera" + MESSAGE RESET,1@ +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg0501.cpp b/cg/cg0501.cpp index 28b7f5fa2..e4bf360c1 100755 --- a/cg/cg0501.cpp +++ b/cg/cg0501.cpp @@ -2,7 +2,6 @@ #include #include "cg0501.h" -#include "cg0500.h" #include @@ -15,6 +14,7 @@ const char* iva2name(TipoIVA iva) case nessuna_iva : i = "Nessuna IVA"; break; case iva_acquisti: i = "IVA Acquisti"; break; case iva_vendite : i = "IVA Vendite"; break; + case iva_generica: i = "IVA Generica"; break; default : i = "IVA ERRATA!"; break; } @@ -41,23 +41,27 @@ bool TRegistro::read(const char* cod, int year) int err = ~NOERR; + TTable reg("REG"); if (cod && *cod > ' ') { - TTable reg("REG"); TString16 chiave; chiave << year << cod; reg.put("CODTAB", chiave); err = reg.read(); - if (err == NOERR) - _rec = reg.curr(); } + _rec = reg.curr(); if (_att.ok()) _att.zero(); - if (err != NOERR && _rec.ok()) + if (err != NOERR) _rec.zero(); return err == NOERR; -} +} + + +int TRegistro::year() const +{ return ok() ? atoi(_rec.get("CODTAB")) : 0; } + TRegistro& TRegistro::operator =(const TRegistro& r) @@ -68,16 +72,17 @@ TRegistro& TRegistro::operator =(const TRegistro& r) } -bool TRegistro::corrisp() const +int TRegistro::tipo() const { - const bool t = _rec.ok() ? _rec.get_bool("B0") : FALSE; + const int t = ok() ? _rec.get_int("I0") : 0; return t; } -int TRegistro::tipo() const + +bool TRegistro::corrispettivi() const { - const int t = _rec.ok() ? _rec.get_int("I0") : 0; - return t; + const bool c = ok() ? _rec.get_bool("B0") : FALSE; + return c; } @@ -86,8 +91,8 @@ TipoIVA TRegistro::iva() const TipoIVA i = (TipoIVA)tipo(); if (i != nessuna_iva && i != iva_vendite && i != iva_acquisti) { - error_box("Il registro '%s' non e' un registro iva, tipo: %d", - (const char*)_rec.get("CODTAB"), i); + error_box("Il registro '%s' non e' un registro IVA o contabile: tipo %d", + (const char*)name(), i); i = nessuna_iva; } return i; @@ -98,12 +103,11 @@ bool TRegistro::read_att() if (!_att.empty()) return TRUE; - TLocalisamfile attivita(LF_ATTIV); - attivita.put("CODDITTA", MainApp()->get_firm()); - const char* a = _rec.get("S8"); - attivita.put("CODATT", a); - const int err = attivita.read(); - _att = attivita.curr(); + TLocalisamfile attiv(LF_ATTIV); + attiv.put("CODDITTA", MainApp()->get_firm()); + attiv.put("CODATT", attivita()); + const int err = attiv.read(); + _att = attiv.curr(); if (err != NOERR) _att.zero(); @@ -143,7 +147,6 @@ bool TRegistro::update(long protiva, const TDate& datareg) _rec.put("D2", datareg); updated = FALSE; } - if (!updated) { TTable reg("REG"); @@ -166,12 +169,12 @@ bool TLibro_giornale::read(int y) y = oggi.year(); } - if (ok() && y == year()) return TRUE; // Gia' letto! - TTable reg("REG"); bool found = FALSE; - char anno[8]; sprintf(anno, "%4d", y); + TString16 anno; anno.format("%-4d", y); + + reg.setkey(1); reg.put("CODTAB", anno); // Cerca il primo registro dell'anno y for (int err = reg.read(_isgteq); err == NOERR; err = reg.next()) @@ -205,6 +208,7 @@ TCausale::TCausale(const char* cod, int year) if (*cod) read(cod, year); } + // Legge le righe della causale attualmente selezionata sulla maschera bool TCausale::read(const char* cod, int year) { @@ -242,8 +246,11 @@ bool TCausale::read(const char* cod, int year) for (int riga = 1; riga < size(); riga++) // Fill gaps if (objptr(riga) == NULL) add(rcaus.curr(), riga); - if (year > 0) - _reg.read(caus.get("REG"), year); // Read register + TString16 codreg(caus.get("REG")); + const bool ok = _reg.read(codreg, year); // Read register + if (!ok && codreg.not_empty()) + return error_box("Non esiste il registro '%s' per l'anno %d", + (const char*)codreg, year); } else { @@ -251,12 +258,9 @@ bool TCausale::read(const char* cod, int year) _reg.read("", year); } - - return TRUE; } - const TRectype& TCausale::row(int num) const { const TRectype* rec = (const TRectype*)objptr(num); @@ -294,6 +298,11 @@ bool TCausale::intra() const bool TCausale::corrval() const { return _rec.ok() ? _rec.get_bool("VALINTRA") : FALSE; } +int TCausale::tipo_mov() const +{ return _rec.ok() ? _rec.get_int("TIPOMOV") : -1; } + +const char* TCausale::cod_reg() const +{ return _rec.ok() ? _rec.get("REG") : ""; } const char* TCausale::causale_inc_imm() const { return _rec.ok() ? _rec.get("CODCAUSIM") : ""; } @@ -302,6 +311,12 @@ const char* TCausale::tipo_doc() const { return _rec.ok() ? _rec.get("TIPODOC") : ""; } +bool TCausale::puramentecontabile() const +{ + const char * codreg = cod_reg(); + return ((codreg == NULL || *codreg == '\0') && tipo_mov() == 0); +} + TipoIVA TCausale::iva() const { if (_iva == iva_errata) @@ -318,7 +333,7 @@ TipoIVA TCausale::iva() const if (tpd.read() == NOERR) { i = (TipoIVA)tpd.get_int("I0"); // IVA acquisti, vendite, generica - if (i != iva_vendite && i != iva_acquisti) + if (i == iva_generica) i = _reg.iva(); } } @@ -336,3 +351,27 @@ bool TCausale::similar(const TCausale& c) const valuta() == c.valuta() && intra() == c.intra(); } + +/////////////////////////////////////////////////////////// +// Codice IVA +/////////////////////////////////////////////////////////// + +TCodiceIVA::TCodiceIVA(const char* cod) : TRectype(LF_TABCOM) +{ + read(cod); +} + +bool TCodiceIVA::read(const char* cod) +{ + int err = ~NOERR; + TTable iva("%IVA"); + if (cod && *cod) + { + iva.setkey(1); + iva.put("CODTAB", cod); + err = iva.read(); + } + TRectype::operator=(iva.curr()); + if (err != NOERR) zero(); + return err == NOERR; +} diff --git a/cg/cg0501.h b/cg/cg0501.h index 92c3e97cb..cd11b25de 100755 --- a/cg/cg0501.h +++ b/cg/cg0501.h @@ -34,12 +34,15 @@ public: virtual bool ok() const { return !_rec.empty(); } - bool corrisp() const; int tipo() const; TipoIVA iva() const; - const char* name() const { return _rec.get("CODTAB").mid(4); } - int year() const { return _rec.get_int("CODTAB"); } + bool corrispettivi() const; + const TString& name() const { return _rec.get("CODTAB").mid(4); } + int year() const; + TDate last_reg() const { return _rec.get_date("D2"); } TDate last_print() const { return _rec.get_date("D3"); } + long protocol() const { return _rec.get_long("I5"); } + const TString& attivita() const { return _rec.get("S8"); } bool agenzia_viaggi(); const TString& tipo_attivita(); @@ -79,8 +82,11 @@ public: bool valuta() const; bool intra() const; bool corrval() const; + bool puramentecontabile() const; const char* causale_inc_imm() const; const char* tipo_doc() const; + const char* cod_reg() const; + int tipo_mov() const; TRegistro& reg() { return _reg; } TipoIVA iva() const; @@ -88,10 +94,21 @@ public: virtual bool ok() const { return !_rec.empty(); } bool similar(const TCausale& c) const; - bool read(const char* code, int year); + bool read(const char* cod, int year); TCausale(const char* code = "", int year = 0); virtual ~TCausale() {} }; +class TCodiceIVA : public TRectype +{ +public: + TCodiceIVA(const char* codice = NULL); + bool read(const char* codice); + bool ok() const { return !empty(); } + const TString& codice() const { return get("CODTAB"); } + real percentuale() const { return get_real("R0"); } + const TString& tipo() const { return get("S1"); } +}; + #endif diff --git a/cg/cg4400.cpp b/cg/cg4400.cpp index ef2959e07..83703cb05 100755 --- a/cg/cg4400.cpp +++ b/cg/cg4400.cpp @@ -6,22 +6,21 @@ static TString256 TMP; -CG4400_application * app() { return (CG4400_application*) MainApp(); } +HIDDEN CG4400_application * app() { return (CG4400_application*) MainApp(); } bool filter_func (const TRelation * r) { TLocalisamfile * mov = r->lfile(LF_MOV); - TString codreg = mov->get(MOV_REG); - long annoes = mov->get_long(MOV_ANNOES); + TString codreg = mov->get(MOV_REG); + TDate datareg = mov->get_date(MOV_DATAREG); + int annoiva = mov->get_int(MOV_ANNOIVA); - if (codreg != app()->_codreg || annoes != app()->_annoes) + if (codreg != (app()->_codreg) || annoiva != (app()->_annoes)) return FALSE; - - //Non puo' essere che _tipo_reg sia diverso da 1 o 2, nel caso di stampa tutti i registri ! - //if (app()->_stampa_tutti_i_registri) - // if ( (app()->_tipo_reg != 1) && (app()->_tipo_reg != 2) ) - // return FALSE; + if (app()->_data_da.string() != "" && app()->_data_a.string() != "") + if ( (datareg < app()->_data_da || datareg > app()->_data_a ) || (!datareg.ok()) ) + return FALSE; return TRUE; } @@ -154,7 +153,8 @@ bool mask_cod (TMask_field& f, KEY k) TString codtab; int anno; - if ( (k == K_TAB) && f.mask().is_running() ) + //if ( (k == K_TAB) && f.mask().is_running() ) + if ( (k == K_SPACE)||(k == K_TAB) ) { TString codlib = f.mask().get(CODICE_LIB_UN); anno = f.mask().get_int(ANNO); @@ -173,74 +173,93 @@ bool mask_cod (TMask_field& f, KEY k) return TRUE; } -bool mask_fino_a_mese (TMask_field& f, KEY k) -{ - //if ( (k == K_TAB) && f.mask().is_running() ) +bool mask_data (TMask_field& f, KEY k) +{ + const short id = f.dlg(); + if (k == K_ENTER) { - TTable TabReg ("REG"); - TString16 codtab; - int giorni_del_mese; - TString codreg = f.mask().get(CODICE_LIBRO); - int tipo = f.mask().get_int(TIPO_STAMPA); - int anno = f.mask().get_int(ANNO); - - if ( (tipo == 1) || (tipo == 4) ) - { - int fino_a_mese = f.mask().get_int(FINO_A_MESE); - if (fino_a_mese == 12) - giorni_del_mese = 31; - else + int anno = f.mask().get_int(ANNO); + TDate data = f.mask().get(id); + if (data.ok()) + if (data.year() != anno) { - TDate primo = format("01/%02d/%4d", fino_a_mese+1, anno); - --primo; - giorni_del_mese = primo.day(); - } - TDate datasup = format("%02d/%02d/%4d",giorni_del_mese,fino_a_mese,anno); - if (codreg != "") - { - TabReg.zero(); - codtab << anno << codreg; - TabReg.put ("CODTAB", codtab); - TabReg.read(); - if ( TabReg.good() ) - { - TDate data = TabReg.get_date("D3"); - if (datasup < data) - { - TString16 datas = format("%02d/%4d", data.month(), data.year()); - f.warning_box ("La data specificata non deve essere inferiore al %s (ultima data di stampa specificata sul registro)", (const char*)datas); - return FALSE; - } - } - } - if (tipo == 4) - { - TabReg.zero(); - TabReg.put ("CODTAB", anno); - TRectype r (TabReg.curr()); - TabReg.read(_isgteq); - for (; !TabReg.eof(); TabReg.next()) - { - if (TabReg.curr() != r) break; - - int tiporeg = TabReg.get_int("I0"); - if (tiporeg == 5) //libro giornale - { - TDate data = TabReg.get_date("D3"); - if (datasup > data) - { - TString16 datas = format("%02d/%4d", data.month(), data.year()); - f.warning_box ("La data specificata non deve essere superiore al %s (ultima data di stampa del libro giornale)", (const char*)datas); - return FALSE; - } - } - } - } - } - } + f.warning_box("L'anno delle date limite deve essere uguale all'anno iva specificato"); + return FALSE; + } + } return TRUE; -} +} + +/* + bool mask_fino_a_mese (TMask_field& f, KEY k) + { + if (k == K_ENTER) + { + TTable TabReg ("REG"); + TString16 codtab; + int giorni_del_mese; + TString codreg = f.mask().get(CODICE_LIBRO); + int tipo = f.mask().get_int(TIPO_STAMPA); + int anno = f.mask().get_int(ANNO); + + if ( (tipo == 1) || (tipo == 4) ) + { + int fino_a_mese = f.mask().get_int(FINO_A_MESE); + if (fino_a_mese == 12) + giorni_del_mese = 31; + else + { + TDate primo = format("01/%02d/%4d", fino_a_mese+1, anno); + --primo; + giorni_del_mese = primo.day(); + } + TDate datasup = format("%02d/%02d/%4d",giorni_del_mese,fino_a_mese,anno); + if (codreg != "") + { + TabReg.zero(); + codtab << anno << codreg; + TabReg.put ("CODTAB", codtab); + TabReg.read(); + if ( TabReg.good() ) + { + TDate data = TabReg.get_date("D3"); + if (datasup < data) + { + TString16 datas = format("%02d/%4d", data.month(), data.year()); + f.warning_box ("La data specificata non deve essere inferiore al %s (ultima data di stampa specificata sul registro)", (const char*)datas); + return FALSE; + } + } + } + if (tipo == 4) + { + TabReg.zero(); + TabReg.put ("CODTAB", anno); + TRectype r (TabReg.curr()); + TabReg.read(_isgteq); + for (; !TabReg.eof(); TabReg.next()) + { + if (TabReg.curr() != r) break; + + int tiporeg = TabReg.get_int("I0"); + if (tiporeg == 5) //libro giornale + { + TDate data = TabReg.get_date("D3"); + if (datasup > data) + { + TString16 datas = format("%02d/%4d", data.month(), data.year()); + f.warning_box ("La data specificata non deve essere superiore al %s (ultima data di stampa del libro giornale)", (const char*)datas); + return FALSE; + } + } + } + } + } + } + return TRUE; + } + */ //da una SHEET non e' possibile mandare messaggi nella maschera!!! HIDDEN bool my_handler (TMask_field& f, KEY k) @@ -387,6 +406,8 @@ void CG4400_application::user_create() _tabreg = new TTable("REG"); _tablbu = new TTable("%LBU"); _tabinl = new TTable("%INL"); + _tablim = new TTable("LIM"); + _tabpim = new TTable("PIM"); _clifo = new TLocalisamfile(LF_CLIFO); _occas = new TLocalisamfile(LF_OCCAS); _rel = new TRelation (LF_MOV); @@ -518,8 +539,9 @@ bool CG4400_application::controlla_liquidazione() { TTable lim ("LIM"); TTable pim ("PIM"); - TString mesi_ric, mesi_cal; - TString chiave; + TString16 mesi_ric = ""; + TString16 mesi_cal = ""; + TString16 chiave = ""; int i; if (lim.empty()) @@ -846,50 +868,41 @@ void CG4400_application::set_page_tot_reg() } } -bool CG4400_application::compila_reg() +bool CG4400_application::compila_reg(const TMask& m) { - byte tipo; int anno; long codditta = _nditte->get_long("CODDITTA"); - _codtab = ""; + TString16 codtab = ""; + + _tipo_stampa = m.get_int(TIPO_STAMPA); + if (_tipo_stampa == 2) //stampa su libro unico di studio + _codreg = m.get(CODICE_LIBRO_IVA); + else if (_tipo_stampa == 3) //stampa di prova + _codreg = m.get(CODICE_LIBRO_PROVA); + else _codreg = m.get(CODICE_LIBRO); if (_codreg.trim().empty()) { _stampa_tutti_i_registri = TRUE; - for (_tabreg->first(); !_tabreg->eof(); _tabreg->next()) + _tabreg->first(); + if (!_tabreg->eof()) { - _codtab = _tabreg->get("CODTAB"); - tipo = _tabreg->get_int("I0"); - anno = atoi(_codtab.mid(0,4)); + codtab = _tabreg->get("CODTAB"); + anno = atoi(codtab.mid(0,4)); if (anno > _annoes) { warning_box("Non esistono registri IVA della Ditta %ld per l'anno %d", codditta, _annoes); return FALSE; - } - if (anno == _annoes) - { - if ( tipo == 1 || tipo == 2 ) //registro iva - { - _codreg = _codtab.mid(4,3); - _tipo_reg = _tabreg->get_int("I0"); - _pagine_stampate = _tabreg->get_int("I1"); - _data_da = _tabreg->get_date ("D3"); - _codatt = _tabreg->get("S8"); - _attivita = desc_attivita(_codatt); - _desc_lib = _tabreg->get ("S0"); - break; - } - else continue; } } } else // stampa un solo registro { _stampa_tutti_i_registri = FALSE; - _codtab << _annoes << _codreg; + codtab << _annoes << _codreg; _tabreg->zero(); - _tabreg->put("CODTAB", _codtab); + _tabreg->put("CODTAB", codtab); if (_tabreg->read() == NOERR) { _tipo_reg = _tabreg->get_int("I0"); @@ -899,21 +912,54 @@ bool CG4400_application::compila_reg() //_nprog_da = tab_reg.get_long ("I6"); //_tot_dare = tab_reg.get_real ("R1") //_tot_avere = tab_reg.get_real ("R2"); - _data_da = _tabreg->get_date ("D3"); + if (_tipo_stampa != 3) + _data_da = _tabreg->get_date ("D3"); + if ( _tipo_stampa == 1 || _tipo_stampa == 4 ) + if ( _data_a < _data_da) + { + TString16 datas = format("%02d/%4d", _data_da.month(), _data_da.year()); + warning_box ("La data specificata non deve essere inferiore al %s (ultima data di stampa specificata sul registro)", (const char*)datas); + return FALSE; + } //_stampa_intesta = _tabreg->get_bool ("B9"); _codatt = _tabreg->get("S8"); _attivita = desc_attivita(_codatt); _desc_lib = _tabreg->get ("S0"); - - return TRUE; } else { - warning_box("Il registro IVA specificato non esiste nella \n Ditta %ld", codditta, _annoes); + warning_box("Il registro IVA specificato non esiste nella \n Ditta %ld", codditta); return FALSE; } - } - return TRUE;; + } + + if (_tipo_stampa == 4) + { + TString app(4); + _tabreg->zero(); + app = format("%04d", _annoes); + _tabreg->put ("CODTAB", app); + TRectype r (_tabreg->curr()); + _tabreg->read(_isgteq); + for (; !_tabreg->eof(); _tabreg->next()) + { + if (_tabreg->curr() != r) break; + + int tiporeg = _tabreg->get_int("I0"); + if (tiporeg == 5) //libro giornale + { + TDate data = _tabreg->get_date("D3"); + if (_data_a > data) + { + TString16 datas = format("%02d/%4d", data.month(), data.year()); + warning_box ("La data specificata non deve essere superiore al %s (ultima data di stampa del libro giornale)", (const char*)datas); + return FALSE; + } + } + } + } + + return TRUE; } bool CG4400_application::compila_lib() @@ -943,7 +989,7 @@ bool CG4400_application::preprocess_print(int file, int counter) _doc_array.destroy(); _dataregp = ""; _mov_empty = TRUE; - _primast = get_page_number(); + //_primast = get_page_number(); set_print_zero(); } return TRUE; @@ -961,22 +1007,26 @@ bool CG4400_application::preprocess_page(int file, int counter) TLocalisamfile* mov = _cur->file(LF_MOV); TLocalisamfile* caus = _cur->file(LF_CAUSALI); - long annoes = mov->get_long(MOV_ANNOES); - TString16 codreg = mov->get(MOV_REG); + //long annoes = mov->get_long(MOV_ANNOES); + //TString16 codreg = mov->get(MOV_REG); _datareg = mov->get_date(MOV_DATAREG); - if (codreg != _codreg || annoes != _annoes) - return FALSE; + //if (codreg != _codreg || annoes != _annoes) + // return FALSE; - if (_data_da.string() != "" && _data_a.string() != "") - if ( (_datareg < _data_da || _datareg > _data_a) || (!_datareg.ok()) ) - return FALSE; + //if (_data_da.string() != "" && _data_a.string() != "") + // if ( (_datareg < _data_da || _datareg > _data_a) || (!_datareg.ok()) ) + // return FALSE; _mov_empty = FALSE; - if ( (_tipo_stampa == 1) || (_tipo_stampa == 4) ) - if ( (_datareg.month() != _dataregp.month()) && (_dataregp.ok()) ) - printer().formfeed(); + //if ( (_tipo_stampa == 1) || (_tipo_stampa == 4) ) + if ( (_datareg.month() != _dataregp.month()) && (_dataregp.ok()) ) + { + if (_tipo_stampa == 2) + ++ _u_stampata; + printer().formfeed(); + } _dataregp = _datareg; @@ -1070,7 +1120,8 @@ void CG4400_application::aggiorna_reg() TString16 codtab; TTable Tabreg ("REG"); TTable TabInl ("%INL"); - long stampate, pag; + long pag; + //long stampate; const word ultimast = get_page_number(); @@ -1079,10 +1130,10 @@ void CG4400_application::aggiorna_reg() Tabreg.put("CODTAB", codtab); if (Tabreg.read() == NOERR) { - stampate = ultimast - _primast + 1; + //stampate = ultimast + 1; if (!_mov_empty) //cioe' se e' stata stampata almeno una pagina { - pag = _pagine_stampate + stampate; + pag = _pagine_stampate + ultimast; Tabreg.put("I1", pag); } Tabreg.put("D3", _data_a); @@ -1091,7 +1142,7 @@ void CG4400_application::aggiorna_reg() if (_tipo_stampa == 2) //stampa su libro unico //sulla tabella %inl (indice libro unico) devo generare una riga per ogni registro stampato { - bool trovato = FALSE; + bool trovato = FALSE; codtab = ""; codtab << _annoes << _codlib; TabInl.zero(); @@ -1109,47 +1160,54 @@ void CG4400_application::aggiorna_reg() recprec = TabInl.curr(); } - TString16 cod; + TString cod = ""; if (trovato) { TString16 cod_inl = recprec.get("CODTAB"); - long numero_riga = atol(cod_inl.mid(7,6)); + long numero_riga = atol(cod_inl.mid(7,6)) + 1; + TString16 num_riga (format("%6d", numero_riga)); cod_inl = cod_inl.mid(0,7); nuovo = recprec; - cod << cod_inl << numero_riga + 1; + cod << cod_inl << num_riga; } else - cod << codtab << 1L; + { + TString16 num_riga ( format("%6d", 1L) ); + cod << codtab << num_riga; + } long numini = _pagine_stampate + 1; nuovo.put("CODTAB", cod); - nuovo.put("I0", _annoes); - nuovo.put("I1", _fino_a_mese); - nuovo.put("I2", _primast); - nuovo.put("I3", ultimast); + nuovo.put("I0", (long)_annoes); + nuovo.put("I1", (long)_fino_a_mese); + nuovo.put("I2", (long)_u_stampata + 1); + nuovo.put("I3", (long)(_u_stampata + ultimast)); nuovo.put("I4", get_firm()); nuovo.put("S0", _codreg); - nuovo.put("I5", numini); - nuovo.put("I6", pag); + nuovo.put("I5", (long)numini); + nuovo.put("I6", (long)(numini + ultimast)); - TabInl.write(nuovo); + if (trovato) + TabInl.rewrite(nuovo); + else + TabInl.write(nuovo); + + _u_stampata += ultimast; } } void CG4400_application::aggiorna_lib() { - TString16 cod; + TString16 cod = ""; TTable lbu ("%LBU"); - const word stampate = get_page_number(); - cod << _annoes << _codlib; lbu.zero(); lbu.put("CODTAB", cod); if (lbu.read() == NOERR) { - lbu.put("I0", _fino_a_mese); - lbu.put("I1", stampate); + lbu.put("I0", (long) _fino_a_mese); + lbu.put("I1", (long) _u_stampata - 1); lbu.rewrite(); } } @@ -1157,72 +1215,6 @@ void CG4400_application::aggiorna_lib() print_action CG4400_application::postprocess_page (int file, int counter) { if (file == LF_MOV) - { - TLocalisamfile* mov = _cur->file(LF_MOV); - _cur->save_status(); - ++(*_cur); - _dataregs = mov->get_date(MOV_DATAREG); - --(*_cur); - _cur->restore_status(); - - if (_dataregs.month() != _dataregp.month()) - { - set_page_tot_reg(); - return REPEAT_PAGE; - } - } - return NEXT_PAGE; -} - -print_action CG4400_application::postprocess_print(int file, int counter) -{ - if (file == LF_MOV) - { - //aggiorna registri solo se non e' stampa di prova - if (_tipo_stampa != 3) - aggiorna_reg(); - if (_stampa_tutti_i_registri) - { - TString16 codtab; - int anno, tipo; - //vado avanti dal punto in cui sono - _tabreg->next(); - for (; !_tabreg->eof(); _tabreg->next()) - { - tipo = _tabreg->get_int("I0"); - if ( (tipo == 1) || (tipo == 2) ) //registro iva - { - codtab = _tabreg->get("CODTAB"); - anno = atoi(codtab.mid(0,4)); - break; - } - } - if ( (_tabreg->eof()) || (anno != _annoes) ) - { - if (_tipo_stampa == 2) //stampa su libro unico - aggiorna_lib(); - return NEXT_PAGE; - } - else - { - _tipo_reg = _tabreg->get_int("I0"); - _desc_lib = _tabreg->get("S0"); - _data_da = _tabreg->get_date("D3"); - _pagine_stampate = _tabreg->get_int("I1"); - _codreg = codtab.mid(4,3); - _primast = get_page_number(); - if (!_mov_empty ) - printer().formfeed(); - _cur->set_filterfunction(NULL); - _cur->set_filterfunction(filter_func); - // (*_cur) = 0L; - _mov_empty = TRUE; - return REPEAT_PAGE; - } - } - } - - if (file == LF_RMOVIVA) if (!counter) { bool FINITO = FALSE; @@ -1236,30 +1228,81 @@ print_action CG4400_application::postprocess_print(int file, int counter) set_page_tot_reg(); return REPEAT_PAGE; } - else if ( (_tipo_stampa == 1) || (_tipo_stampa == 4) ) + else //if ( (_tipo_stampa == 1) || (_tipo_stampa == 4) ) { TLocalisamfile* mov = _cur->file(LF_MOV); - /* - TDate dataregp = mov->get_date(MOV_DATAREG); - _cur->save_status(); - ++(*_cur); - TDate datareg = mov->get_date(MOV_DATAREG); - --(*_cur); - _cur->restore_status(); - if (datareg.month() != dataregp.month()) - { - set_page_tot_reg(); - return REPEAT_PAGE; - } + _cur->save_status(); + ++(*_cur); + _dataregs = mov->get_date(MOV_DATAREG); + --(*_cur); + _cur->restore_status(); - if (_dataregp.month() != _dataregs.month()) - { - set_page_tot_reg(); - return REPEAT_PAGE; - } - */ - } + if (_dataregs.month() != _dataregp.month()) + { + set_page_tot_reg(); + return REPEAT_PAGE; + } + } } + return NEXT_PAGE; +} + +print_action CG4400_application::postprocess_print(int file, int counter) +{ + if (file == LF_MOV) + { + //aggiorna registri solo se non e' stampa di prova + if ( (_tipo_stampa != 3) && (!_stampa_tutti_i_registri) ) + aggiorna_reg(); + if (_stampa_tutti_i_registri) + if (!_mov_empty ) + { + if (_tipo_stampa == 2) + ++ _u_stampata; + printer().formfeed(); + } + /* + if (_stampa_tutti_i_registri) + { + TString16 codtab; + int anno, tipo; + //vado avanti dal punto in cui sono + _tabreg->next(); + for (; !_tabreg->eof(); _tabreg->next()) + { + tipo = _tabreg->get_int("I0"); + if ( (tipo == 1) || (tipo == 2) ) //registro iva + { + codtab = _tabreg->get("CODTAB"); + anno = atoi(codtab.mid(0,4)); + break; + } + } + if ( (_tabreg->eof()) || (anno != _annoes) ) + { + if (_tipo_stampa == 2) //stampa su libro unico + aggiorna_lib(); + return NEXT_PAGE; + } + else + { + _tipo_reg = _tabreg->get_int("I0"); + _desc_lib = _tabreg->get("S0"); + _data_da = _tabreg->get_date("D3"); + _pagine_stampate = _tabreg->get_int("I1"); + _codreg = codtab.mid(4,3); + _primast = get_page_number(); + if (!_mov_empty ) + printer().formfeed(); + _cur->set_filterfunction(NULL); + _cur->set_filterfunction(filter_func); + _mov_empty = TRUE; + return REPEAT_PAGE; + } + } + */ + } + return NEXT_PAGE; } @@ -1271,27 +1314,8 @@ bool CG4400_application::set_print(int n) if (set_ditte(m)) if (_selected.ones() > 0l) { - _tipo_stampa = m.get_int(TIPO_STAMPA); _annoes = m.get_int(ANNO); - if (_tipo_stampa == 2) //stampa su libro unico di studio - _codreg = m.get(CODICE_LIBRO_IVA); - else if (_tipo_stampa == 3) //stampa di prova - _codreg = m.get(CODICE_LIBRO_PROVA); - else _codreg = m.get(CODICE_LIBRO); - /* - if (_codreg.trim().empty()) - { - _tabreg->first(); - _codtab = _tabreg->get("CODTAB"); - _codreg = _codtab.mid(4,3); - _stampa_tutti_i_registri = TRUE; - } - else - { - _codtab << _annoes << _codreg; - _stampa_tutti_i_registri = FALSE; - } - **/ + _tipo_stampa = m.get_int(TIPO_STAMPA); //Se stampa di prova l'utente indica data_da e data_a if (_tipo_stampa == 3) { @@ -1313,7 +1337,8 @@ bool CG4400_application::set_print(int n) { _codlib = m.get(CODICE_LIB_UN); _fino_a_mese = m.get_int(MESE); - set_page_number(m.get_int(ULTIMA_PAGINA) + 1); + _u_stampata = m.get_int(ULTIMA_PAGINA); + //set_page_number(_u_stampata + 1); } if (_fino_a_mese == 12) giorni_del_mese = 31; @@ -1326,16 +1351,15 @@ bool CG4400_application::set_print(int n) _data_a=format("%02d/%02d/%4d",giorni_del_mese,_fino_a_mese,_annoes); // NB data_da viene letta nella preprocess_page } - // compila_reg(); if (_tipo_stampa == 2) - compila_lib(); - stampa_registri_IVA(); + compila_lib(); + stampa_registri_IVA(m); } else warning_box("Nessuna ditta selezionata!"); return FALSE; } -void CG4400_application::stampa_registri_IVA() +void CG4400_application::stampa_registri_IVA(const TMask& m) { long l; long firm = TApplication::get_firm(); @@ -1346,15 +1370,56 @@ void CG4400_application::stampa_registri_IVA() if (_selected[l]) { TApplication::set_firm(_nditte->get_long("CODDITTA")); - ok = compila_reg(); // cerca il primo registro valido (nel caso di stampa tutti i registri), senno' legge i dati del registro specificato + ok = compila_reg(m); // cerca il primo registro valido (nel caso di stampa tutti i registri), senno' legge i dati del registro specificato if (!ok) continue; - _cur->set_filterfunction(filter_func); + if (!_stampa_tutti_i_registri) + _cur->set_filterfunction(filter_func); _frequiva = _nditte->get("FREQVIVA")[0]; if (_tipo_stampa != 3) //stampa definitiva ok = controlla_liquidazione() && controlla_mov(); - if (ok) print(); - } + + if (!ok) continue; + + if (!_stampa_tutti_i_registri) + print(); + else + { + TString16 codtab; + int anno, tipo; + for (_tabreg->first(); !_tabreg->eof(); _tabreg->next()) + { + tipo = _tabreg->get_int("I0"); + codtab = _tabreg->get("CODTAB"); + anno = atoi(codtab.mid(0,4)); + if (anno > _annoes) + break; + if ( (tipo == 1) || (tipo == 2) ) //registro iva + { + _tipo_reg = _tabreg->get_int("I0"); + _desc_lib = _tabreg->get("S0"); + if (_tipo_stampa != 3) + _data_da = _tabreg->get_date("D3"); + _pagine_stampate = _tabreg->get_int("I1"); + _codreg = codtab.mid(4,3); + _codatt = _tabreg->get("S8"); + _attivita = desc_attivita(_codatt); + _desc_lib = _tabreg->get ("S0"); + //_primast = get_page_number(); + //if (!_mov_empty ) + // printer().formfeed(); + _cur->set_filterfunction(NULL); + _cur->set_filterfunction(filter_func); + //set_page_number(_u_stampata + 1); + print(); + if (_tipo_stampa != 3) aggiorna_reg(); + } + } + } + if (_tipo_stampa == 2) + aggiorna_lib(); + } } + TApplication::set_firm(firm); } @@ -1368,8 +1433,10 @@ bool CG4400_application::set_ditte(TMask& m) m.field(TIPO_STAMPA).set("1"); m.set_handler (TIPO_STAMPA, my_handler); - m.set_handler (MESE, mask_mese); - m.set_handler (FINO_A_MESE, mask_fino_a_mese); + m.set_handler (DA_DATA, mask_data); + m.set_handler (A_DATA, mask_data); + m.set_handler (MESE, mask_mese); + //m.set_handler (FINO_A_MESE, mask_fino_a_mese); m.set_handler (CODICE_LIB_UN, mask_cod); m.set_handler (DLG_SELECT, mask_select); m.set_handler (F_ANNULLA, mask_annulla); @@ -1423,8 +1490,15 @@ else reset_header(); - r = stampa_intestazione_ditta(); - + if (_tipo_stampa == 2) + { + if (_stampa_ind_ditta) + r = stampa_intestazione_ditta(); + long num = _u_stampata + 1; + set_header(r++, "@94gProgr.Studio %ld@114gProgr.Utente @#", num); + } + else + r = stampa_intestazione_ditta(); set_header(r, "Registro IVA: %s %s %s Attivita\' %s %s", (const char *) _codreg, (const char *) _desc_lib, (const char *) data, (const char *) _codatt, @@ -1457,12 +1531,12 @@ else { set_header(r,"@10gNum.@19gDocumento@68gT Tipo@103gCod %s@121g@124gT", (const char*) nd1); if (_tipo_stampa == 4) //stampa definitiva con rif. al libro giornale - set_header(r, "@127gNumero"); + set_header(r, "@128gNum."); r++; set_header(r, "Data reg. prot.@17gData@25gNumero Codice Ragione sociale/descrizione@68gO Doc.@76gTotale doc.@91gImponibile Iva %s@112gImposta@124g%s", (const char*) nd2, (const char*) cor); if (_tipo_stampa == 4) - set_header(r, "@127goperaz"); + set_header(r, "@128gop."); r++; } riga.fill('-'); diff --git a/cg/cg4400.h b/cg/cg4400.h index 04a53d70f..87cb687f2 100755 --- a/cg/cg4400.h +++ b/cg/cg4400.h @@ -24,12 +24,19 @@ #include "cglib03.h" +<<<<<<< cg4400.h +const int MAXSTR = 255; +static char __tmp[MAXSTR]; + +======= +>>>>>>> 1.6 //enum STAMPA { bollati=1, unici=2 }; const int TABREG = (int)TTable::name2log("REG"); bool filter_func (const TRelation*); bool my_handler (TMask_field&, KEY); bool mask_cod (TMask_field&, KEY); +bool mask_data (TMask_field&, KEY); bool mask_mese (TMask_field&, KEY); bool mask_fino_a_mese (TMask_field&, KEY); bool mask_select (TMask_field&, KEY); @@ -58,7 +65,7 @@ class CG4400_application : public TPrintapp friend bool filter_func (const TRelation *r); friend bool mask_cod (TMask_field&, KEY); friend bool mask_mese (TMask_field&, KEY); - friend bool mask_fino_a_mese (TMask_field&, KEY); + //friend bool mask_fino_a_mese (TMask_field&, KEY); friend bool my_handler (TMask_field&, KEY); friend bool mask_select (TMask_field&, KEY); friend bool mask_verifica (TMask_field&, KEY); @@ -67,7 +74,7 @@ class CG4400_application : public TPrintapp TCursor * _cur; TRelation *_rel; TLocalisamfile *_clifo, *_nditte, *_occas, *_tab, *_tabcom; - TTable *_tabreg, *_tablbu, *_tabinl; + TTable *_tabreg, *_tablbu, *_tabinl, *_tablim, *_tabpim; TRigaiva_array _iva_array, _riga_rmi; TTipodoc_array _doc_array; TRiga_array _tot_iva_array; @@ -77,13 +84,12 @@ class CG4400_application : public TPrintapp bool _mov_empty, _stampa_ind_ditta, _stampa_tutti_i_registri; char _frequiva; TDate _data_da, _data_a, _data_stampa, _dataregp, _dataregs, _datareg; - long _annoes, _n_ditte; - word _primast; - int _riepil, _tipo_reg, _fino_a_mese, _tipo_stampa, _pagine_stampate; - int _r, _stampa_width; // riga corrente di stampa + long _n_ditte, _u_stampata; + int _fino_a_mese, _tipo_reg, _tipo_stampa, _pagine_stampate; + int _annoes, _r, _stampa_width; // riga corrente di stampa real _totale_doc; TString _codreg, _desc_lib, _codatt, _attivita; - TString _codtab, _tipodoc, _descr_doc, _codlib; + TString _tipodoc, _descr_doc, _codlib; public: const char* desc_attivita (const char * codatt); @@ -95,13 +101,13 @@ public: int riga_rmoviva(); bool set_print(int); bool set_ditte(TMask&); - bool compila_reg(); + bool compila_reg(const TMask&); bool compila_lib(); bool controlla_liquidazione(); bool controlla_mov(); void cerca_reg(const TString&, byte&, TDate&); //void leggi_movimenti(const TDate&, const TString&, bool&); - void stampa_registri_IVA(); + void stampa_registri_IVA(const TMask&); void set_page_tot_reg(); void aggiorna_reg(); void aggiorna_lib(); diff --git a/cg/cg4400a.uml b/cg/cg4400a.uml index 2d8df396f..632181e30 100755 --- a/cg/cg4400a.uml +++ b/cg/cg4400a.uml @@ -1,473 +1,236 @@ -<<<<<<< cg4400a.uml -// cg4400a.uml -// Stampa tabella registri - -#include "cg4400a.h" - -PAGE "Stampa registri IVA" -1 -1 56 19 - -/* -LISTBOX TIPO_STAMPA 2 27 -BEGIN - PROMPT 2 1 "Tipo stampa " - ITEM "1|Libri bollati della ditta" - MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ - ITEM "2|Libri unici dello studio" - MESSAGE SHOW,2@|HIDE,1@|HIDE,3@ - ITEM "3|Stampa di prova" - MESSAGE SHOW,3@|HIDE,1@|HIDE,2@|SHOW,CODICE_LIBRO - ITEM "4|Stampa libri con riferimenti al libro giornale" - MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ -END -*/ - -NUMBER TIPO_STAMPA 1 -BEGIN - PROMPT 2 1 "Tipo stampa " - SHEET "Cod|Descrizione@50" - INPUT TIPO_STAMPA - OUTPUT TIPO_STAMPA - ITEM "1|Libri bollati della ditta" - ITEM "2|Libri unici dello studio" - ITEM "3|Stampa di prova" - ITEM "4|Stampa libri con riferimenti al libro giornale" -END - -GROUPBOX DLG_NULL 35 5 -BEGIN - PROMPT 20 1 "Scelta ditte" -END - -NUMBER DA_CODICE 6 -BEGIN - PROMPT 21 2 "Da codice " - HELP "Immettere codice ditta di partenza per la selezione" - USE LF_NDITTE KEY 1 - CHECKTYPE NORMAL - INPUT CODDITTA DA_CODICE - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale@50" RAGSOC - OUTPUT DA_CODICE CODDITTA -END - -NUMBER A_CODICE 6 -BEGIN - PROMPT 21 3 "A codice " - HELP "Immettere codice ditta di fine selezione" - COPY USE DA_CODICE - CHECKTYPE NORMAL - INPUT CODDITTA A_CODICE - COPY DISPLAY DA_CODICE - OUTPUT A_CODICE CODDITTA -END - -STRING F_SELECT 6 -BEGIN - PROMPT 21 4 "Scelte n. " - FLAGS "D" -END - -BUTTON DLG_SELECT 9 -BEGIN - PROMPT 42 2 "Selezione" - //MESSAGE EXIT,DLG_SELECT -END - -BUTTON F_ANNULLA 9 -BEGIN - PROMPT 42 3 "Annulla" - //MESSAGE EXIT,F_ANNULLA -END - -BUTTON F_VERIFICA 9 -BEGIN - PROMPT 42 4 "Verifica" - //MESSAGE EXIT,F_VERIFICA -END - -DATE DATA_STAMPA -BEGIN - PROMPT 2 6 "Data stampa " - FLAG "AH" - GROUP 3 -END - -NUMBER ANNO 4 -BEGIN - PROMPT 2 7 "Anno " - FLAGS "A" -END - -STRING CODICE_LIBRO 3 -BEGIN - PROMPT 20 7 "Codice libro " - HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" - USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 1 -END - -STRING CODICE_LIBRO_PROVA 3 -BEGIN - PROMPT 20 7 "Codice libro " - HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" - USE REG SELECT (I0<"3") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 1 -END - -STRING CODICE_LIB_UN 3 -BEGIN - PROMPT 20 7 "Cod.libro unico " - HELP "Specificare il codice del libro unico su cui deve essere effettuata la stampa" - USE %LBU SELECT CODTAB[1,4]==#111 - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIB_UN - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIB_UN CODTAB[5,7] - FLAGS "UR" - CHECKTYPE REQUIRED - GROUP 2 -END - -GROUPBOX DLG_NULL 52 3 -BEGIN - PROMPT 2 9 "Stampa movimenti" -END - -DATE DA_DATA -BEGIN - PROMPT 5 10 "Dalla data " - GROUP 3 -END - -DATE A_DATA -BEGIN - PROMPT 30 10 "Alla data " - GROUP 3 -END - -LISTBOX FINO_A_MESE 10 -BEGIN - PROMPT 5 10 "Fino al mese " - FLAGS "M" - GROUP 1 -END - -LISTBOX MESE 10 -BEGIN - PROMPT 5 10 "Mese " - FLAGS "M" - GROUP 2 -END - -LISTBOX TIPO_RIEPILOGATIVO 11 -BEGIN - PROMPT 2 12 "Tipo riepilogativo " - HELP "Selezionare Del periodo/Annuale a seconda che si desideri la stampa della liquidazione periodica/annuale" - ITEM "P|Del periodo" - ITEM "A|Annuale" - GROUP 1 -END - -LISTBOX ULTIMO_MESE 10 -BEGIN - PROMPT 2 13 "Ultimo mese stampa su libro unico " - FLAGS "MD" - GROUP 2 -END - -NUMBER ULTIMA_PAGINA 4 -BEGIN - PROMPT 2 14 "Ultimo numero di pagina stampata libro unico " - FLAGS "R" - GROUP 2 -END - -STRING CODICE_LIBRO_IVA 3 -BEGIN - PROMPT 2 15 "Eventuale codice libro IVA " - HELP "Se non viene indicato nessun cod. libro IVA, vengono stampati tutti i registri delle ditte selezionate" - USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO_IVA - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO_IVA CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 2 -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK - -======= -// cg4400a.uml -// Stampa tabella registri - -#include "cg4400a.h" - -PAGE "Stampa registri IVA" -1 -1 56 19 - -/* -LISTBOX TIPO_STAMPA 2 27 -BEGIN - PROMPT 2 1 "Tipo stampa " - ITEM "1|Libri bollati della ditta" - MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ - ITEM "2|Libri unici dello studio" - MESSAGE SHOW,2@|HIDE,1@|HIDE,3@ - ITEM "3|Stampa di prova" - MESSAGE SHOW,3@|HIDE,1@|HIDE,2@|SHOW,CODICE_LIBRO - ITEM "4|Stampa libri con riferimenti al libro giornale" - MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ -END -*/ - -NUMBER TIPO_STAMPA 1 -BEGIN - PROMPT 2 1 "Tipo stampa " - SHEET "Cod|Descrizione@50" - INPUT TIPO_STAMPA - OUTPUT TIPO_STAMPA - ITEM "1|Libri bollati della ditta" - ITEM "2|Libri unici dello studio" - ITEM "3|Stampa di prova" - ITEM "4|Stampa libri con riferimenti al libro giornale" -END - -GROUPBOX DLG_NULL 35 5 -BEGIN - PROMPT 20 1 "Scelta ditte" -END - -NUMBER DA_CODICE 6 -BEGIN - PROMPT 21 2 "Da codice " - HELP "Immettere codice ditta di partenza per la selezione" - USE LF_NDITTE KEY 1 - CHECKTYPE NORMAL - INPUT CODDITTA DA_CODICE - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale@50" RAGSOC - OUTPUT DA_CODICE CODDITTA -END - -NUMBER A_CODICE 6 -BEGIN - PROMPT 21 3 "A codice " - HELP "Immettere codice ditta di fine selezione" - COPY USE DA_CODICE - CHECKTYPE NORMAL - INPUT CODDITTA A_CODICE - COPY DISPLAY DA_CODICE - OUTPUT A_CODICE CODDITTA -END - -STRING F_SELECT 6 -BEGIN - PROMPT 21 4 "Scelte n. " - FLAGS "D" -END - -BUTTON DLG_SELECT 9 -BEGIN - PROMPT 42 2 "Selezione" - //MESSAGE EXIT,DLG_SELECT -END - -BUTTON F_ANNULLA 9 -BEGIN - PROMPT 42 3 "Annulla" - //MESSAGE EXIT,F_ANNULLA -END - -BUTTON F_VERIFICA 9 -BEGIN - PROMPT 42 4 "Verifica" - //MESSAGE EXIT,F_VERIFICA -END - -DATE DATA_STAMPA -BEGIN - PROMPT 2 6 "Data stampa " - FLAG "AH" - GROUP 3 -END - -NUMBER ANNO 4 -BEGIN - PROMPT 2 7 "Anno " - FLAGS "A" -END - -STRING CODICE_LIBRO 3 -BEGIN - PROMPT 20 7 "Codice libro " - HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" - USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 1 -END - -STRING CODICE_LIBRO_PROVA 3 -BEGIN - PROMPT 20 7 "Codice libro " - HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" - USE REG SELECT (I0<"3") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 1 -END - -STRING CODICE_LIB_UN 3 -BEGIN - PROMPT 20 7 "Cod.libro unico " - HELP "Specificare il codice del libro unico su cui deve essere effettuata la stampa" - USE %LBU SELECT CODTAB[1,4]==#111 - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIB_UN - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIB_UN CODTAB[5,7] - FLAGS "UR" - CHECKTYPE REQUIRED - GROUP 2 -END - -GROUPBOX DLG_NULL 52 3 -BEGIN - PROMPT 2 9 "Stampa movimenti" -END - -DATE DA_DATA -BEGIN - PROMPT 5 10 "Dalla data " - GROUP 3 -END - -DATE A_DATA -BEGIN - PROMPT 30 10 "Alla data " - GROUP 3 -END - -LISTBOX FINO_A_MESE 10 -BEGIN - PROMPT 5 10 "Fino al mese " - FLAGS "M" - GROUP 1 -END - -LISTBOX MESE 10 -BEGIN - PROMPT 5 10 "Mese " - FLAGS "M" - GROUP 2 -END - -LISTBOX TIPO_RIEPILOGATIVO 11 -BEGIN - PROMPT 2 12 "Tipo riepilogativo " - HELP "Selezionare Del periodo/Annuale a seconda che si desideri la stampa della liquidazione periodica/annuale" - ITEM "P|Del periodo" - ITEM "A|Annuale" - GROUP 1 -END - -LISTBOX ULTIMO_MESE 10 -BEGIN - PROMPT 2 13 "Ultimo mese stampa su libro unico " - FLAGS "MD" - GROUP 2 -END - -NUMBER ULTIMA_PAGINA 4 -BEGIN - PROMPT 2 14 "Ultimo numero di pagina stampata libro unico " - FLAGS "R" - GROUP 2 -END - -STRING CODICE_LIBRO_IVA 3 -BEGIN - PROMPT 2 15 "Eventuale codice libro IVA " - HELP "Se non viene indicato nessun cod. libro IVA, vengono stampati tutti i registri delle ditte selezionate" - USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) - INPUT CODTAB[1,4] ANNO - INPUT CODTAB[5,7] CODICE_LIBRO_IVA - DISPLAY "Anno " CODTAB[1,4] - DISPLAY "Codice " CODTAB[5,7] - DISPLAY "Descrizione @40" S0 - OUTPUT ANNO CODTAB[1,4] - OUTPUT CODICE_LIBRO_IVA CODTAB[5,7] - //CHECKTYPE NORMAL - FLAGS "UR" - GROUP 2 -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK - ->>>>>>> 1.3 +// cg4400a.uml +// Stampa tabella registri + +#include "cg4400a.h" + +PAGE "Stampa registri IVA" -1 -1 56 19 + +/* +LISTBOX TIPO_STAMPA 2 27 +BEGIN + PROMPT 2 1 "Tipo stampa " + ITEM "1|Libri bollati della ditta" + MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ + ITEM "2|Libri unici dello studio" + MESSAGE SHOW,2@|HIDE,1@|HIDE,3@ + ITEM "3|Stampa di prova" + MESSAGE SHOW,3@|HIDE,1@|HIDE,2@|SHOW,CODICE_LIBRO + ITEM "4|Stampa libri con riferimenti al libro giornale" + MESSAGE SHOW,1@|HIDE,2@|HIDE,3@ +END +*/ + +NUMBER TIPO_STAMPA 1 +BEGIN + PROMPT 2 1 "Tipo stampa " + SHEET "Cod|Descrizione@50" + INPUT TIPO_STAMPA + OUTPUT TIPO_STAMPA + ITEM "1|Libri bollati della ditta" + ITEM "2|Libri unici dello studio" + ITEM "3|Stampa di prova" + ITEM "4|Stampa libri con riferimenti al libro giornale" +END + +GROUPBOX DLG_NULL 35 5 +BEGIN + PROMPT 20 1 "Scelta ditte" +END + +NUMBER DA_CODICE 6 +BEGIN + PROMPT 21 2 "Da codice " + HELP "Immettere codice ditta di partenza per la selezione" + USE LF_NDITTE KEY 1 + CHECKTYPE NORMAL + INPUT CODDITTA DA_CODICE + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale@50" RAGSOC + OUTPUT DA_CODICE CODDITTA +END + +NUMBER A_CODICE 6 +BEGIN + PROMPT 21 3 "A codice " + HELP "Immettere codice ditta di fine selezione" + COPY USE DA_CODICE + CHECKTYPE NORMAL + INPUT CODDITTA A_CODICE + COPY DISPLAY DA_CODICE + OUTPUT A_CODICE CODDITTA +END + +STRING F_SELECT 6 +BEGIN + PROMPT 21 4 "Scelte n. " + FLAGS "D" +END + +BUTTON DLG_SELECT 9 +BEGIN + PROMPT 42 2 "Selezione" + //MESSAGE EXIT,DLG_SELECT +END + +BUTTON F_ANNULLA 9 +BEGIN + PROMPT 42 3 "Annulla" + //MESSAGE EXIT,F_ANNULLA +END + +BUTTON F_VERIFICA 9 +BEGIN + PROMPT 42 4 "Verifica" + //MESSAGE EXIT,F_VERIFICA +END + +DATE DATA_STAMPA +BEGIN + PROMPT 2 6 "Data stampa " + FLAG "AH" + GROUP 3 +END + +NUMBER ANNO 4 +BEGIN + PROMPT 2 7 "Anno " + FLAGS "A" + CHECKTYPE REQUIRED +END + +STRING CODICE_LIBRO 3 +BEGIN + PROMPT 20 7 "Codice libro " + HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" + USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) + INPUT CODTAB[1,4] ANNO + INPUT CODTAB[5,7] CODICE_LIBRO + DISPLAY "Anno " CODTAB[1,4] + DISPLAY "Codice " CODTAB[5,7] + DISPLAY "Descrizione @40" S0 + OUTPUT ANNO CODTAB[1,4] + OUTPUT CODICE_LIBRO CODTAB[5,7] + //CHECKTYPE NORMAL + FLAGS "UR" + GROUP 1 +END + +STRING CODICE_LIBRO_PROVA 3 +BEGIN + PROMPT 20 7 "Codice libro " + HELP "Specificare il codice libro di cui si chiede la stampa; nel caso in cui non si indichi nessun codice verranno stampati tutti i libri delle ditte selezionate" + USE REG SELECT (I0<"3") && (CODTAB[1,4]==#111) + INPUT CODTAB[1,4] ANNO + INPUT CODTAB[5,7] CODICE_LIBRO_PROVA + DISPLAY "Anno " CODTAB[1,4] + DISPLAY "Codice " CODTAB[5,7] + DISPLAY "Descrizione @40" S0 + OUTPUT ANNO CODTAB[1,4] + OUTPUT CODICE_LIBRO_PROVA CODTAB[5,7] + //CHECKTYPE NORMAL + FLAGS "UR" + GROUP 1 +END + +STRING CODICE_LIB_UN 3 +BEGIN + PROMPT 20 7 "Cod.libro unico " + HELP "Specificare il codice del libro unico su cui deve essere effettuata la stampa" + USE %LBU SELECT CODTAB[1,4]==#111 + INPUT CODTAB[1,4] ANNO + INPUT CODTAB[5,7] CODICE_LIB_UN + DISPLAY "Anno " CODTAB[1,4] + DISPLAY "Codice " CODTAB[5,7] + DISPLAY "Descrizione @40" S0 + OUTPUT ANNO CODTAB[1,4] + OUTPUT CODICE_LIB_UN CODTAB[5,7] + FLAGS "UR" + CHECKTYPE REQUIRED + GROUP 2 +END + +GROUPBOX DLG_NULL 52 3 +BEGIN + PROMPT 2 9 "Stampa movimenti" +END + +DATE DA_DATA +BEGIN + PROMPT 5 10 "Dalla data " + GROUP 3 +END + +DATE A_DATA +BEGIN + PROMPT 30 10 "Alla data " + GROUP 3 +END + +LISTBOX FINO_A_MESE 10 +BEGIN + PROMPT 5 10 "Fino al mese " + FLAGS "M" + GROUP 1 +END + +LISTBOX MESE 10 +BEGIN + PROMPT 5 10 "Mese " + FLAGS "M" + GROUP 2 +END + +LISTBOX TIPO_RIEPILOGATIVO 11 +BEGIN + PROMPT 2 12 "Tipo riepilogativo " + HELP "Selezionare Del periodo/Annuale a seconda che si desideri la stampa della liquidazione periodica/annuale" + ITEM "P|Del periodo" + ITEM "A|Annuale" + GROUP 1 +END + +LISTBOX ULTIMO_MESE 10 +BEGIN + PROMPT 2 13 "Ultimo mese stampa su libro unico " + FLAGS "MD" + GROUP 2 +END + +NUMBER ULTIMA_PAGINA 4 +BEGIN + PROMPT 2 14 "Ultimo numero di pagina stampata libro unico " + FLAGS "R" + GROUP 2 +END + +STRING CODICE_LIBRO_IVA 3 +BEGIN + PROMPT 2 15 "Eventuale codice libro IVA " + HELP "Se non viene indicato nessun cod. libro IVA, vengono stampati tutti i registri delle ditte selezionate" + USE REG SELECT (I0<"3") && (S6=="") && (CODTAB[1,4]==#111) + INPUT CODTAB[1,4] ANNO + INPUT CODTAB[5,7] CODICE_LIBRO_IVA + DISPLAY "Anno " CODTAB[1,4] + DISPLAY "Codice " CODTAB[5,7] + DISPLAY "Descrizione @40" S0 + OUTPUT ANNO CODTAB[1,4] + OUTPUT CODICE_LIBRO_IVA CODTAB[5,7] + //CHECKTYPE NORMAL + FLAGS "UR" + GROUP 2 +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK + diff --git a/cg/cg4401.cpp b/cg/cg4401.cpp index bd58d0e43..933fa9c8b 100755 --- a/cg/cg4401.cpp +++ b/cg/cg4401.cpp @@ -86,27 +86,24 @@ void TDati_ditta::get_dati_ditta () } } - const char * TDati_ditta::prima_riga() { get_dati_ditta(); - /* - tmp.format("Ditta %d %s Via %s %s %s %s", _codditta, - (const char *)_ragsoc,(const char *)_viafis, (const char *)_cap, - (const char *)_comunefis, (const char *)_provfis); - */ tmp << "Ditta " << _codditta << ' ' << _ragsoc << " Via " << _viafis << ' ' << _cap << ' ' << _comunefis << ' ' << _provfis; return tmp; } - const char * TDati_ditta::seconda_riga() { - tmp = "Data @<"; - tmp.right_just(_stampa_width-15); - tmp.overwrite (format ("Partita iva %s @26gCodice fiscale %s", - (const char*)_paiva, (const char*)_cofi)); - return tmp; + TString riga(_stampa_width); + tmp = ""; + riga = "Data @<"; + riga.right_just(_stampa_width-15); + riga.overwrite (format ("Partita iva %s @26gCodice fiscale %s", + (const char*)_paiva, (const char*)_cofi)); + tmp = riga; + return __tmp; } + diff --git a/cg/cg4600.cpp b/cg/cg4600.cpp index 747244086..e7b0c9637 100755 --- a/cg/cg4600.cpp +++ b/cg/cg4600.cpp @@ -29,8 +29,8 @@ bool mask_distinti (TMask_field&, KEY); class CG4600_application : public TApplication { -<<<<<<< cg4600.cpp - friend bool mask_datac (TMask_field&, KEY); + <<<<<<< cg4600.cpp + friend bool mask_datac (TMask_field&, KEY); friend bool mask_dataap (TMask_field&, KEY); friend bool mask_distinti (TMask_field&, KEY); @@ -51,32 +51,32 @@ class CG4600_application : public TApplication TDate _dataregap, _dataregch; TString _codcausap, _codcausch, _annoeseprec; -======= + ======= friend bool mask_datac (TMask_field&, KEY); - friend bool mask_dataap (TMask_field&, KEY); - friend bool mask_distinti (TMask_field&, KEY); - - TTable* _esc, * _reg; - TRelation* _rel; - TMovimentoPN* _pn; - TLocalisamfile* _saldi; - TRectype* _rec; - TLocalisamfile* _mov; - TCursor* _cur; - TSaldo_agg* _sld; - Saldo* _sale; - TConto _tcbilch,_tcproper,_tcbilap,_tcutilp,_tcperdp,_tcutile,_tcperde, _conto_corrente; + friend bool mask_dataap (TMask_field&, KEY); + friend bool mask_distinti (TMask_field&, KEY); + + TTable* _esc, * _reg; + TRelation* _rel; + TMovimentoPN* _pn; + TLocalisamfile* _saldi; + TRectype* _rec; + TLocalisamfile* _mov; + TCursor* _cur; + TSaldo_agg* _sld; + Saldo* _sale; + TConto _tcbilch,_tcproper,_tcbilap,_tcutilp,_tcperdp,_tcutile,_tcperde, _conto_corrente; - real _saldo, _totale_saldo; - int _annoesch, _annoesap; - long _numreg; - TDate _dataregap, _dataregch; - TString _codcausap, _codcausch; - ->>>>>>> 1.6 -public: -<<<<<<< cg4600.cpp - virtual bool create(); + real _saldo, _totale_saldo; + int _annoesch, _annoesap; + long _numreg; + TDate _dataregap, _dataregch; + TString _codcausap, _codcausch; + + >>>>>>> 1.6 + public: + <<<<<<< cg4600.cpp + virtual bool create(); virtual bool destroy(); virtual bool menu(MENU_TAG m); void costi (); @@ -93,25 +93,25 @@ public: // bool epilogo_conti(); CG4600_application() {} -======= + ======= virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - void costi (); - void ricavi(); - void attivita(); - void passivita(); - void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool); - void ultima_registrazione(); - void compila_testata(int,TDate&,TString&); - void chiusura_conto_economico(); - void chiusura_conto_patrimoniale(); - bool set(); -// bool epilogo_conti(); - - CG4600_application() {} ->>>>>>> 1.6 -}; + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + void costi (); + void ricavi(); + void attivita(); + void passivita(); + void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool); + void ultima_registrazione(); + void compila_testata(int,TDate&,TString&); + void chiusura_conto_economico(); + void chiusura_conto_patrimoniale(); + bool set(); + // bool epilogo_conti(); + + CG4600_application() {} + >>>>>>> 1.6 + }; HIDDEN CG4600_application* app() { return (CG4600_application *) MainApp(); } @@ -438,53 +438,53 @@ bool CG4600_application::set() ultima_registrazione(); // anno_ese_precedente(); -<<<<<<< cg4600.cpp - // (*_cur) = 0L; -======= - (*_cur) = 0L; ->>>>>>> 1.6 + <<<<<<< cg4600.cpp + // (*_cur) = 0L; + ======= + (*_cur) = 0L; + >>>>>>> 1.6 - _sld->set_anno_es(_annoesch); + _sld->set_anno_es(_annoesch); _sld->set_movprovv(FALSE); _sld->set_movap(FALSE); -<<<<<<< cg4600.cpp - // costi (); -======= - costi (); ->>>>>>> 1.6 + <<<<<<< cg4600.cpp + // costi (); + ======= + costi (); + >>>>>>> 1.6 -<<<<<<< cg4600.cpp - // _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg - // _pn->destroy_rows(); //Azzero l'oggetto pn. - // ultima_registrazione(); - // *_cur = 0l; + <<<<<<< cg4600.cpp + // _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg + // _pn->destroy_rows(); //Azzero l'oggetto pn. + // ultima_registrazione(); + // *_cur = 0l; - // ricavi(); - // _sld->reset(); -======= - _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg + // ricavi(); + // _sld->reset(); + ======= + _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg _pn->destroy_rows(); //Azzero l'oggetto pn. ultima_registrazione(); *_cur = 0l; ->>>>>>> 1.6 + >>>>>>> 1.6 - ricavi(); + ricavi(); _sld->reset(); -<<<<<<< cg4600.cpp - // chiusura_conto_economico(); -======= - chiusura_conto_economico(); ->>>>>>> 1.6 - _totale_saldo = ZERO; -<<<<<<< cg4600.cpp - // _sld->reset(); -======= - _sld->reset(); ->>>>>>> 1.6 + <<<<<<< cg4600.cpp + // chiusura_conto_economico(); + ======= + chiusura_conto_economico(); + >>>>>>> 1.6 + _totale_saldo = ZERO; + <<<<<<< cg4600.cpp + // _sld->reset(); + ======= + _sld->reset(); + >>>>>>> 1.6 - _pn->destroy_rows(); //Azzero l'oggetto pn. + _pn->destroy_rows(); //Azzero l'oggetto pn. ultima_registrazione(); *_cur = 0l; @@ -601,18 +601,18 @@ void CG4600_application::costi() if (_saldi->curr() > (*_rec) || _saldi->eof()) { -<<<<<<< cg4600.cpp - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; - rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); + <<<<<<< cg4600.cpp + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). - tot_saldo = ZERO; - } + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); + + tot_saldo = ZERO; + } break; } @@ -620,44 +620,44 @@ void CG4600_application::costi() s = _saldi->get_long(SLD_SOTTOCONTO); // int annoeseprec = atoi(_annoeseprec); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } - break; - } + + tot_saldo = ZERO; + } + break; + } - numrig++; - s = _saldi->get_long(SLD_SOTTOCONTO); - sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); ->>>>>>> 1.6 + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + >>>>>>> 1.6 _saldo = sale.saldo(); - if (_saldo.is_zero()) continue; + if (_saldo.is_zero()) continue; - if (_saldo > ZERO) - sezione = 'D'; - else - if (_saldo < ZERO) - { - sezione = 'A'; - _saldo = -_saldo; - } + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 - _totale_saldo += _saldo; - } // righe di movimento, genero un' altra + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra else // riga con importo di sezione opposta if (sezione == 'A') // alla somma, mandando a zero { // il saldo di quel movimento. @@ -665,59 +665,59 @@ else // riga con importo di sezione opposta tot_saldo -= _saldo; _totale_saldo -= _saldo; } - - if (j == MAX || _saldi->eof()) - { -<<<<<<< cg4600.cpp + + if (j == MAX || _saldi->eof()) + { + <<<<<<< cg4600.cpp // Aggiungo un ulteriore riga di movimento contenente la somma // di tutti i saldi aventi lo stesso sottoconto, indicandola // con una sezione opposta al risultato (della somma). // numrig++; rmov_proper (_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - -// numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } ->>>>>>> 1.6 - if (!_saldi->eof()) - { - - rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_NUMRIG, numrig); - - TConto tc(g,c,s); - _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - j++; - } - if (_saldi->eof()) break; - } //for saldi - if (j >= 1) - { - _pn->write(); - _sld->registra(); - j = 0; - _pn->destroy_rows(); //Azzero l'oggetto pn. + + tot_saldo = ZERO; } - } // if (indbil == 3) - } // for pcon + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); + + tot_saldo = ZERO; + } + >>>>>>> 1.6 + if (!_saldi->eof()) + { + + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); + + TConto tc(g,c,s); + _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg + j++; + } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + _sld->registra(); + j = 0; + _pn->destroy_rows(); //Azzero l'oggetto pn. + } +} // if (indbil == 3) +} // for pcon } void CG4600_application::ricavi() @@ -764,18 +764,18 @@ void CG4600_application::ricavi() if (_saldi->curr() > (*_rec) || _saldi->eof()) { -<<<<<<< cg4600.cpp - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; - rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); + <<<<<<< cg4600.cpp + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). - tot_saldo = ZERO; - } + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); + + tot_saldo = ZERO; + } break; } @@ -783,44 +783,44 @@ void CG4600_application::ricavi() s = _saldi->get_long(SLD_SOTTOCONTO); // int annoeseprec = atoi(_annoeseprec); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } - break; - } + + tot_saldo = ZERO; + } + break; + } - numrig++; - s = _saldi->get_long(SLD_SOTTOCONTO); - sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); ->>>>>>> 1.6 + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + >>>>>>> 1.6 _saldo = sale.saldo(); - if (_saldo.is_zero()) continue; + if (_saldo.is_zero()) continue; - if (_saldo > ZERO) - sezione = 'D'; - else - if (_saldo < ZERO) - { - sezione = 'A'; - _saldo = -_saldo; - } + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 - _totale_saldo += _saldo; - } // righe di movimento, genero un' altra + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra else // riga con importo di sezione opposta if (sezione == 'A') // alla somma, mandando a zero { // il saldo di quel movimento. @@ -828,59 +828,59 @@ else // riga con importo di sezione opposta tot_saldo -= _saldo; _totale_saldo -= _saldo; } - - if (j == MAX || _saldi->eof()) - { -<<<<<<< cg4600.cpp + + if (j == MAX || _saldi->eof()) + { + <<<<<<< cg4600.cpp // Aggiungo un ulteriore riga di movimento contenente la somma // di tutti i saldi aventi lo stesso sottoconto, indicandola // con una sezione opposta al risultato (della somma). // numrig++; rmov_proper (_annoesch,numrig,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - -// numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } ->>>>>>> 1.6 - if (!_saldi->eof()) - { - - rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_NUMRIG, numrig); - - TConto tc(g,c,s); - _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - j++; - } - if (_saldi->eof()) break; - } //for saldi - if (j >= 1) - { - _pn->write(); - _sld->registra(); - j = 0; - _pn->destroy_rows(); //Azzero l'oggetto pn. + + tot_saldo = ZERO; } - } // if (indbil == 4) - } // for pcon + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); + + tot_saldo = ZERO; + } + >>>>>>> 1.6 + if (!_saldi->eof()) + { + + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); + + TConto tc(g,c,s); + _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg + j++; + } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + _sld->registra(); + j = 0; + _pn->destroy_rows(); //Azzero l'oggetto pn. + } +} // if (indbil == 4) +} // for pcon } void CG4600_application::chiusura_conto_economico() @@ -889,15 +889,15 @@ void CG4600_application::chiusura_conto_economico() { int j; -<<<<<<< cg4600.cpp - //Compilo la testata per perdite di es. c.economico a Profitti e Perdite - //Chiusura conto economico -======= -//Compilo la testata per perdite di es. c.economico a Profitti e Perdite -//Chiusura conto economico - ->>>>>>> 1.6 - j = 0; + <<<<<<< cg4600.cpp + //Compilo la testata per perdite di es. c.economico a Profitti e Perdite + //Chiusura conto economico + ======= + //Compilo la testata per perdite di es. c.economico a Profitti e Perdite + //Chiusura conto economico + + >>>>>>> 1.6 + j = 0; ultima_registrazione(); compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 @@ -907,14 +907,14 @@ void CG4600_application::chiusura_conto_economico() numrig++; j++; TRectype& rmov2 = _pn->cg(j); -<<<<<<< cg4600.cpp - rmov_proper(_annoesch,numrig,rmov2,_tcperde,_totale_saldo,FALSE); + <<<<<<< cg4600.cpp + rmov_proper(_annoesch,numrig,rmov2,_tcperde,_totale_saldo,FALSE); -======= - rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE); - ->>>>>>> 1.6 - _pn->write(); + ======= + rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE); + + >>>>>>> 1.6 + _pn->write(); _sld->registra(); _sld->reset(); @@ -936,8 +936,8 @@ void CG4600_application::chiusura_conto_economico() rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcperdp,_totale_saldo,FALSE); _pn->write(); -<<<<<<< cg4600.cpp - _sld->registra(); + <<<<<<< cg4600.cpp + _sld->registra(); } @@ -961,12 +961,12 @@ else j++; TRectype& rmov2 = _pn->cg(j); rmov_proper(_annoesch,numrig,rmov2,_tcproper,_totale_saldo,TRUE); -======= - _sld->registra(); + ======= + _sld->registra(); _sld->reset(); - //Compilo la testata per Perdita es. c/to patrimoniale a Bilancio di apertura - //Apertura capitale netto + //Compilo la testata per Perdita es. c/to patrimoniale a Bilancio di apertura + //Apertura capitale netto _sld->set_anno_es(_annoesap); _pn->destroy_rows(); //Azzero l'oggetto pn. @@ -982,43 +982,43 @@ else j++; TRectype& rmov6 = _pn->cg(j); rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcperdp,_totale_saldo,FALSE); ->>>>>>> 1.6 + >>>>>>> 1.6 -<<<<<<< cg4600.cpp - _pn ->write(); + <<<<<<< cg4600.cpp + _pn ->write(); _sld->registra(); //Compilo la testata per Utile di es. c.economico a Utile di es. c.patrimoniale //Chiusura capitale netto -======= - _pn->write(); + ======= + _pn->write(); _sld->registra(); _sld->set_anno_es(_annoesch); } else if (_totale_saldo < ZERO) { - int j; + int j; -//Compilo la testata per Profitti e perdite a Utile di es. c.economico -//Chiusura conto economico ->>>>>>> 1.6 + //Compilo la testata per Profitti e perdite a Utile di es. c.economico + //Chiusura conto economico + >>>>>>> 1.6 -<<<<<<< cg4600.cpp - _pn->destroy_rows(); //Azzero l'oggetto pn. - j = 0; - ultima_registrazione(); - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 - - TRectype& rmov3 = _pn->cg(j); - numrig = 1; - rmov_proper(_annoesch,numrig,rmov3,_tcutilp,_totale_saldo,FALSE); - numrig++; - j++; - TRectype& rmov4 = _pn->cg(j); - rmov_proper(_annoesch,numrig,rmov4,_tcutile,_totale_saldo,TRUE); -======= - _pn->destroy_rows(); //Azzero l'oggetto pn. + <<<<<<< cg4600.cpp + _pn->destroy_rows(); //Azzero l'oggetto pn. + j = 0; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 + + TRectype& rmov3 = _pn->cg(j); + numrig = 1; + rmov_proper(_annoesch,numrig,rmov3,_tcutilp,_totale_saldo,FALSE); + numrig++; + j++; + TRectype& rmov4 = _pn->cg(j); + rmov_proper(_annoesch,numrig,rmov4,_tcutile,_totale_saldo,TRUE); + ======= + _pn->destroy_rows(); //Azzero l'oggetto pn. j = 0; ultima_registrazione(); compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 @@ -1034,15 +1034,15 @@ else _pn ->write(); _sld->registra(); _sld->reset(); - -//Compilo la testata per Utile di es. c.economico a Utile di es. c.patrimoniale -//Chiusura capitale netto + + //Compilo la testata per Utile di es. c.economico a Utile di es. c.patrimoniale + //Chiusura capitale netto _pn->destroy_rows(); //Azzero l'oggetto pn. j = 0; ultima_registrazione(); compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 - + TRectype& rmov3 = _pn->cg(j); numrig = 1; rmov_proper(_annoesch,numrig,_dataregch,rmov3,_tcutilp,_totale_saldo,FALSE); @@ -1055,36 +1055,36 @@ else _sld->registra(); _sld->reset(); - //Compilo la testata per Bilancio di apertura a Utile es. c/to patrimoniale - //Apertura capitale netto - - _sld->set_anno_es(_annoesap); - _pn->destroy_rows(); //Azzero l'oggetto pn. - j = 0; - ultima_registrazione(); - - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 - - TRectype& rmov5 = _pn->cg(j); - numrig = 1; - rmov_proper(_annoesap,numrig,_dataregap,rmov5,_tcbilap,_totale_saldo,TRUE); - numrig++; - j++; - TRectype& rmov6 = _pn->cg(j); - rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcutilp,_totale_saldo,FALSE); ->>>>>>> 1.6 - -<<<<<<< cg4600.cpp - _pn ->write(); - _sld->registra(); -======= - _pn->write(); - _sld->registra(); - _sld->set_anno_es(_annoesch); + //Compilo la testata per Bilancio di apertura a Utile es. c/to patrimoniale + //Apertura capitale netto ->>>>>>> 1.6 + _sld->set_anno_es(_annoesap); + _pn->destroy_rows(); //Azzero l'oggetto pn. + j = 0; + ultima_registrazione(); - } + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 + + TRectype& rmov5 = _pn->cg(j); + numrig = 1; + rmov_proper(_annoesap,numrig,_dataregap,rmov5,_tcbilap,_totale_saldo,TRUE); + numrig++; + j++; + TRectype& rmov6 = _pn->cg(j); + rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcutilp,_totale_saldo,FALSE); + >>>>>>> 1.6 + + <<<<<<< cg4600.cpp + _pn ->write(); + _sld->registra(); + ======= + _pn->write(); + _sld->registra(); + _sld->set_anno_es(_annoesch); + + >>>>>>> 1.6 + + } } void CG4600_application::chiusura_conto_patrimoniale() @@ -1120,8 +1120,8 @@ else //Compilo la testata per Utile di es. c.patrimon. a Bilancio di chiusura //Chiusura conto patrimoniale -<<<<<<< cg4600.cpp - _pn->destroy_rows(); //Azzero l'oggetto pn. + <<<<<<< cg4600.cpp + _pn->destroy_rows(); //Azzero l'oggetto pn. j = 0; ultima_registrazione(); compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 @@ -1133,22 +1133,22 @@ else j++; TRectype& rmov2 = _pn->cg(j); rmov_proper(_annoesch,numrig,rmov2,_tcperdp,_totale_saldo,FALSE); -======= + ======= _pn->destroy_rows(); //Azzero l'oggetto pn. - j = 0; - ultima_registrazione(); - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 - - TRectype& rmov1 = _pn->cg(j); - numrig = 1; - rmov_proper(_annoesch,numrig,_dataregch,rmov1,_tcbilch,_totale_saldo,TRUE); - numrig++; - j++; - TRectype& rmov2 = _pn->cg(j); - rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE); ->>>>>>> 1.6 + j = 0; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 + + TRectype& rmov1 = _pn->cg(j); + numrig = 1; + rmov_proper(_annoesch,numrig,_dataregch,rmov1,_tcbilch,_totale_saldo,TRUE); + numrig++; + j++; + TRectype& rmov2 = _pn->cg(j); + rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE); + >>>>>>> 1.6 - _pn ->write(); + _pn ->write(); _sld->registra(); } } @@ -1198,18 +1198,18 @@ void CG4600_application::attivita() if (_saldi->curr() > rec || _saldi->eof()) { -<<<<<<< cg4600.cpp - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; - rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + <<<<<<< cg4600.cpp + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). - tot_saldo = ZERO; - } + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + + tot_saldo = ZERO; + } break; } @@ -1217,44 +1217,44 @@ void CG4600_application::attivita() s = _saldi->get_long(SLD_SOTTOCONTO); // int annoeseprec = atoi(_annoeseprec); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura - - tot_saldo = ZERO; - } - break; - } + + tot_saldo = ZERO; + } + break; + } - numrig++; - s = _saldi->get_long(SLD_SOTTOCONTO); - sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); ->>>>>>> 1.6 + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + >>>>>>> 1.6 _saldo = sale.saldo(); - if (_saldo == ZERO) continue; + if (_saldo == ZERO) continue; - if (_saldo > ZERO) - sezione = 'D'; - else - if (_saldo < ZERO) - { - sezione = 'A'; - _saldo = -_saldo; - } + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 - _totale_saldo += _saldo; - } // righe di movimento, genero un' altra + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra else // riga con importo di sezione opposta if (sezione == 'A') // alla somma, mandando a zero { // il saldo di quel movimento. @@ -1262,106 +1262,106 @@ else // riga con importo di sezione opposta tot_saldo -= _saldo; _totale_saldo -= _saldo; } - - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). + + if (j == MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). -<<<<<<< cg4600.cpp + <<<<<<< cg4600.cpp // numrig++; rmov_proper (_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura -======= -// numrig++; + ======= + // numrig++; rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura ->>>>>>> 1.6 + >>>>>>> 1.6 tot_saldo = ZERO; - } - if (!_saldi->eof()) - { - - rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_NUMRIG, numrig); - - TConto tc(g,c,s); - _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - - j++; - } - if (_saldi->eof()) break; - } //for saldi - if (j >= 1) + } + if (!_saldi->eof()) { - _pn->write(); - _sld->registra(); - _sld->reset(); - j = 0; + + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); - long items_pn = _pn->cg_items(); - _sld->set_anno_es(_annoesap); + TConto tc(g,c,s); + _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - if (compila_mov_ap) - { - ultima_registrazione(); - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura - compila_mov_ap = FALSE; - } - - for (int i = 0; i < items_pn; i++) - { - char sez_rmov; - TRectype& rmov = _pn->cg(j); - - char sezione = rmov.get (RMV_SEZIONE)[0]; - int gruppo = rmov.get_int (RMV_GRUPPO); - int conto = rmov.get_int (RMV_CONTO); - long sottoc = rmov.get_long(RMV_SOTTOCONTO); - real importo = rmov.get_real(RMV_IMPORTO); - - if (sezione == 'D') - sez_rmov = 'A'; - else - if (sezione == 'A') - sez_rmov = 'D'; - - rmov.put(RMV_ANNOES, _annoesap); - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_DATAREG, _dataregap); - - if (i == (items_pn - 1)) //Quando incontro il conto - { - rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); - rmov.put(RMV_CONTO, _tcbilap.conto()); - rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo - rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di - _sld->aggiorna(_tcbilap,importo,sez_rmov); //apertura, non girando l'importo - } //perche' non l'avevo girato - else //precedentemente, mentre per gli altri - { //conti l'importo deve essere girato, - rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati - TConto tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura - _sld->aggiorna(tc,importo,sez_rmov); + j++; } - j++; - } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + _sld->registra(); + _sld->reset(); + j = 0; + + long items_pn = _pn->cg_items(); + _sld->set_anno_es(_annoesap); - _pn->write(); - _sld->registra(); - j = 0; - _pn->destroy_rows(); //Azzero l'oggetto pn. + if (compila_mov_ap) + { + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura + compila_mov_ap = FALSE; } - } // if (indbil == 1) - } // for pcon + + for (int i = 0; i < items_pn; i++) + { + char sez_rmov; + TRectype& rmov = _pn->cg(j); + + char sezione = rmov.get (RMV_SEZIONE)[0]; + int gruppo = rmov.get_int (RMV_GRUPPO); + int conto = rmov.get_int (RMV_CONTO); + long sottoc = rmov.get_long(RMV_SOTTOCONTO); + real importo = rmov.get_real(RMV_IMPORTO); + + if (sezione == 'D') + sez_rmov = 'A'; + else + if (sezione == 'A') + sez_rmov = 'D'; + + rmov.put(RMV_ANNOES, _annoesap); + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_DATAREG, _dataregap); + + if (i == (items_pn - 1)) //Quando incontro il conto + { + rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); + rmov.put(RMV_CONTO, _tcbilap.conto()); + rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo + rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di + _sld->aggiorna(_tcbilap,importo,sez_rmov); //apertura, non girando l'importo + } //perche' non l'avevo girato + else //precedentemente, mentre per gli altri + { //conti l'importo deve essere girato, + rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati + TConto tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura + _sld->aggiorna(tc,importo,sez_rmov); + } + j++; + } + + _pn->write(); + _sld->registra(); + j = 0; + _pn->destroy_rows(); //Azzero l'oggetto pn. + } + } // if (indbil == 1) +} // for pcon } void CG4600_application::passivita() @@ -1409,18 +1409,18 @@ void CG4600_application::passivita() if (_saldi->curr() > rec || _saldi->eof()) { -<<<<<<< cg4600.cpp - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; - rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + <<<<<<< cg4600.cpp + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). - tot_saldo = ZERO; - } + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + + tot_saldo = ZERO; + } break; } @@ -1428,44 +1428,44 @@ void CG4600_application::passivita() s = _saldi->get_long(SLD_SOTTOCONTO); // int annoeseprec = atoi(_annoeseprec); sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); -======= - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso conto, indicandola - // con una sezione opposta al risultato (della somma). - - if (j >= 1) - { - numrig++; + ======= + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura - - tot_saldo = ZERO; - } - break; - } + + tot_saldo = ZERO; + } + break; + } - numrig++; - s = _saldi->get_long(SLD_SOTTOCONTO); - sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); ->>>>>>> 1.6 + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + >>>>>>> 1.6 _saldo = sale.saldo(); - if (_saldo.is_zero()) continue; + if (_saldo.is_zero()) continue; - if (_saldo > ZERO) - sezione = 'D'; - else - if (_saldo < ZERO) - { - sezione = 'A'; - _saldo = -_saldo; - } + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 - _totale_saldo += _saldo; - } // righe di movimento, genero un' altra + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 200 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra else // riga con importo di sezione opposta if (sezione == 'A') // alla somma, mandando a zero { // il saldo di quel movimento. @@ -1473,106 +1473,106 @@ else // riga con importo di sezione opposta tot_saldo -= _saldo; _totale_saldo -= _saldo; } - - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). + + if (j == MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). -<<<<<<< cg4600.cpp + <<<<<<< cg4600.cpp // numrig++; rmov_proper (_annoesch,numrig,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura -======= -// numrig++; + ======= + // numrig++; rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura ->>>>>>> 1.6 + >>>>>>> 1.6 tot_saldo = ZERO; - } - if (!_saldi->eof()) - { - - rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_NUMRIG, numrig); - - TConto tc(g,c,s); - _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - - j++; - } - if (_saldi->eof()) break; - } //for saldi - if (j >= 1) + } + if (!_saldi->eof()) { - _pn->write(); - _sld->registra(); - _sld->reset(); - j = 0; - long items_pn = _pn->cg_items(); - _sld->set_anno_es(_annoesap); + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); + + TConto tc(g,c,s); + _sld->aggiorna(tc,_saldo,sez_rmov); //l'oggetto TSaldo_agg - if (compila_mov_ap) - { - ultima_registrazione(); - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura - compila_mov_ap = FALSE; - } - - for (int i = 0; i < items_pn; i++) - { - char sez_rmov; - TRectype& rmov = _pn->cg(j); - - char sezione = rmov.get (RMV_SEZIONE)[0]; - int gruppo = rmov.get_int (RMV_GRUPPO); - int conto = rmov.get_int (RMV_CONTO); - long sottoc = rmov.get_long(RMV_SOTTOCONTO); - real importo = rmov.get_real(RMV_IMPORTO); - - if (sezione == 'D') - sez_rmov = 'A'; - else - if (sezione == 'A') - sez_rmov = 'D'; - - rmov.put(RMV_ANNOES, _annoesap); - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_DATAREG, _dataregap); - - if (i == (items_pn - 1)) //Quando incontro il conto - { - rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); - rmov.put(RMV_CONTO, _tcbilap.conto()); - rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo - rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di - _sld->aggiorna(_tcbilap,importo,sez_rmov); //apertura, non girando l'importo - } //perche' non l'avevo girato - else //precedentemente, mentre per gli altri - { //conti l'importo deve essere girato, - rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati - TConto tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura - _sld->aggiorna(tc,importo,sez_rmov); + j++; } - j++; - } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + _sld->registra(); + _sld->reset(); + j = 0; - _pn->write(); - _sld->registra(); - j = 0; - _pn->destroy_rows(); + long items_pn = _pn->cg_items(); + _sld->set_anno_es(_annoesap); + + if (compila_mov_ap) + { + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura + compila_mov_ap = FALSE; } - } // if (indbil == 2) - } // for pcon + + for (int i = 0; i < items_pn; i++) + { + char sez_rmov; + TRectype& rmov = _pn->cg(j); + + char sezione = rmov.get (RMV_SEZIONE)[0]; + int gruppo = rmov.get_int (RMV_GRUPPO); + int conto = rmov.get_int (RMV_CONTO); + long sottoc = rmov.get_long(RMV_SOTTOCONTO); + real importo = rmov.get_real(RMV_IMPORTO); + + if (sezione == 'D') + sez_rmov = 'A'; + else + if (sezione == 'A') + sez_rmov = 'D'; + + rmov.put(RMV_ANNOES, _annoesap); + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_DATAREG, _dataregap); + + if (i == (items_pn - 1)) //Quando incontro il conto + { + rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); + rmov.put(RMV_CONTO, _tcbilap.conto()); + rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo + rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di + _sld->aggiorna(_tcbilap,importo,sez_rmov); //apertura, non girando l'importo + } //perche' non l'avevo girato + else //precedentemente, mentre per gli altri + { //conti l'importo deve essere girato, + rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati + TConto tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura + _sld->aggiorna(tc,importo,sez_rmov); + } + j++; + } + + _pn->write(); + _sld->registra(); + j = 0; + _pn->destroy_rows(); + } + } // if (indbil == 2) +} // for pcon } bool CG4600_application::menu(MENU_TAG m) diff --git a/cg/cg4600a.uml b/cg/cg4600a.uml index aa608ae69..b0cfc7d93 100755 --- a/cg/cg4600a.uml +++ b/cg/cg4600a.uml @@ -1,311 +1,314 @@ -#include "cg4600.h" - -PAGE "" -1 -1 76 20 - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 2 1 "Ditta " - FLAGS "FRD" - USE LF_NDITTE KEY 1 - CHECKTYPE REQUIRED - INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale @50" RAGSOC - OUTPUT F_CODDITTA CODDITTA - OUTPUT F_RAGSOC RAGSOC -END - - -STRING F_RAGSOC 50 -BEGIN - PROMPT 2 2 "Ragione sociale " - FLAGS "D" -END - -STRING F_CHIUSURA 3 -BEGIN - PROMPT 2 4 "Codice causale chiusura " - USE LF_CAUSALI KEY 1 - DISPLAY "Codice" CODCAUS - DISPLAY "Descrizione @50" DESCR - OUTPUT F_CHIUSURA CODCAUS - INPUT CODCAUS F_CHIUSURA - CHECKTYPE REQUIRED -END - -STRING F_APERTURA 3 -BEGIN - PROMPT 2 5 "Codice causale apertura " - COPY USE F_CHIUSURA - COPY DISPLAY F_CHIUSURA - OUTPUT F_APERTURA CODCAUS - INPUT CODCAUS F_APERTURA -END - -DATE F_DATAC -BEGIN - PROMPT 36 4 "Data/Anno chiusura " -END - -DATE F_DATAAP -BEGIN - PROMPT 36 5 "Data/Anno apertura " - WARNING "Inserire una data non inferiore alla data di chiusura" - VALIDATE DATE_CMP_FUNC >= F_DATAC -END - -NUMBER F_ANNOCH 4 -BEGIN - PROMPT 69 4 "" - FLAGS "D" -END - -NUMBER F_ANNO 4 -BEGIN - PROMPT 69 5 "" - FLAGS "D" -END - - -GROUPBOX DLG_NULL 60 10 -BEGIN - PROMPT 2 7 "Codici sottoconto" -END - -NUMBER F_BILCHG 3 -BEGIN - PROMPT 3 9 "Bilancio di chiusura " - USE LF_PCON KEY 1 SELECT SOTTOCONTO!="" - CHECKTYPE REQUIRED - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione @50" DESCR - OUTPUT F_BILCHG GRUPPO - OUTPUT F_BILCHC CONTO - OUTPUT F_BILCHS SOTTOCONTO - INPUT GRUPPO F_BILCHG - INPUT CONTO F_BILCHC - INPUT SOTTOCONTO F_BILCHS -END - -NUMBER F_BILCHC 3 -BEGIN - PROMPT 44 9 "" - COPY ALL F_BILCHG - CHECKTYPE REQUIRED -END - -NUMBER F_BILCHS 6 -BEGIN - PROMPT 51 9 "" - COPY ALL F_BILCHG - CHECKTYPE REQUIRED -END - -NUMBER F_PROPERG 3 -BEGIN - PROMPT 3 10 "Profitti e perdite " - COPY USE F_BILCHG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_PROPERG GRUPPO - OUTPUT F_PROPERC CONTO - OUTPUT F_PROPERS SOTTOCONTO - INPUT GRUPPO F_PROPERG - INPUT CONTO F_PROPERC - INPUT SOTTOCONTO F_PROPERS -END - -NUMBER F_PROPERC 3 -BEGIN - PROMPT 44 10 "" - COPY USE F_BILCHG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_PROPERG - COPY INPUT F_PROPERG -END - -NUMBER F_PROPERS 6 -BEGIN - PROMPT 51 10 "" - COPY ALL F_PROPERC - CHECKTYPE REQUIRED -END - -NUMBER F_BILAPG 3 -BEGIN - PROMPT 3 11 "Bilancio di apertura " - COPY USE F_BILCHG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_BILAPG GRUPPO - OUTPUT F_BILAPC CONTO - OUTPUT F_BILAPS SOTTOCONTO - INPUT GRUPPO F_BILAPG - INPUT CONTO F_BILAPC - INPUT SOTTOCONTO F_BILAPS -END - -NUMBER F_BILAPC 3 -BEGIN - PROMPT 44 11 "" - COPY USE F_BILCHG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_BILAPG - COPY INPUT F_BILAPG -END - -NUMBER F_BILAPS 6 -BEGIN - PROMPT 51 11 "" - COPY ALL F_BILAPC - CHECKTYPE REQUIRED -END - -NUMBER F_UTILPG 3 -BEGIN - PROMPT 3 12 "Utile d'esercizio c/to patrim. " - USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="1")||(INDBIL="2")||(INDBIL="5")) - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_UTILPG GRUPPO - OUTPUT F_UTILPC CONTO - OUTPUT F_UTILPS SOTTOCONTO - INPUT GRUPPO F_UTILPG - INPUT CONTO F_UTILPC - INPUT SOTTOCONTO F_UTILPS -END - -NUMBER F_UTILPC 3 -BEGIN - PROMPT 44 12 "" - COPY USE F_UTILPG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_UTILPG - COPY INPUT F_UTILPG -END - -NUMBER F_UTILPS 6 -BEGIN - PROMPT 51 12 "" - COPY ALL F_UTILPC - CHECKTYPE REQUIRED -END - -NUMBER F_PERDPG 3 -BEGIN - PROMPT 3 13 "Perdita d'esercizio c/to patr. " - USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="1")||(INDBIL="2")||(INDBIL="5")) - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_PERDPG GRUPPO - OUTPUT F_PERDPC CONTO - OUTPUT F_PERDPS SOTTOCONTO - INPUT GRUPPO F_PERDPG - INPUT CONTO F_PERDPC - INPUT SOTTOCONTO F_PERDPS -END - -NUMBER F_PERDPC 3 -BEGIN - PROMPT 44 13 "" - COPY USE F_PERDPG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_PERDPG - COPY INPUT F_PERDPG -END - -NUMBER F_PERDPS 6 -BEGIN - PROMPT 51 13 "" - COPY ALL F_PERDPC - CHECKTYPE REQUIRED -END - -NUMBER F_UTILEG 3 -BEGIN - PROMPT 3 14 "Utile d'esercizio c/to econom. " - USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="3")||(INDBIL="4")) - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_UTILEG GRUPPO - OUTPUT F_UTILEC CONTO - OUTPUT F_UTILES SOTTOCONTO - INPUT GRUPPO F_UTILEG - INPUT CONTO F_UTILEC - INPUT SOTTOCONTO F_UTILES -END - -NUMBER F_UTILEC 3 -BEGIN - PROMPT 44 14 "" - COPY USE F_UTILEG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_UTILEG - COPY INPUT F_UTILEG -END - -NUMBER F_UTILES 6 -BEGIN - PROMPT 51 14 "" - COPY ALL F_UTILEC - CHECKTYPE REQUIRED -END - -NUMBER F_PERDEG 3 -BEGIN - PROMPT 3 15 "Perdita d'esercizio c/to econ. " - USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ( (INDBIL="3")||(INDBIL="4") ) - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - OUTPUT F_PERDEG GRUPPO - OUTPUT F_PERDEC CONTO - OUTPUT F_PERDES SOTTOCONTO - INPUT GRUPPO F_PERDEG - INPUT CONTO F_PERDEC - INPUT SOTTOCONTO F_PERDES -END - -NUMBER F_PERDEC 3 -BEGIN - PROMPT 44 15 "" - COPY USE F_PERDEG - CHECKTYPE REQUIRED - COPY DISPLAY F_BILCHG - COPY OUTPUT F_PERDEG - COPY INPUT F_PERDEG -END - -NUMBER F_PERDES 6 -BEGIN - PROMPT 51 15 "" - COPY ALL F_PERDEC - CHECKTYPE REQUIRED -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK - - - - - - - +#include "cg4600.h" + +PAGE "" -1 -1 76 20 + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 2 1 "Ditta " + FLAGS "FRD" + USE LF_NDITTE KEY 1 + CHECKTYPE REQUIRED + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale @50" RAGSOC + OUTPUT F_CODDITTA CODDITTA + OUTPUT F_RAGSOC RAGSOC +END + + +STRING F_RAGSOC 50 +BEGIN + PROMPT 2 2 "Ragione sociale " + FLAGS "D" +END + +STRING F_CHIUSURA 3 +BEGIN + PROMPT 2 4 "Codice causale chiusura " + USE LF_CAUSALI KEY 1 + DISPLAY "Codice" CODCAUS + DISPLAY "Descrizione @50" DESCR + OUTPUT F_CHIUSURA CODCAUS + INPUT CODCAUS F_CHIUSURA + CHECKTYPE REQUIRED +END + +STRING F_APERTURA 3 +BEGIN + PROMPT 2 5 "Codice causale apertura " + COPY USE F_CHIUSURA + COPY DISPLAY F_CHIUSURA + OUTPUT F_APERTURA CODCAUS + INPUT CODCAUS F_APERTURA +END + +DATE F_DATAC +BEGIN + PROMPT 36 4 "Data/Anno chiusura " +END + +DATE F_DATAAP +BEGIN + PROMPT 36 5 "Data/Anno apertura " + WARNING "Inserire una data non inferiore alla data di chiusura" + VALIDATE DATE_CMP_FUNC >= F_DATAC +END + +NUMBER F_ANNOCH 4 +BEGIN + PROMPT 69 4 "" + FLAGS "D" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 69 5 "" + FLAGS "D" +END + + +GROUPBOX DLG_NULL 60 10 +BEGIN + PROMPT 2 7 "Codici sottoconto" +END + +NUMBER F_BILCHG 3 +BEGIN + PROMPT 3 9 "Bilancio di chiusura " + USE LF_PCON KEY 1 SELECT SOTTOCONTO!="" + CHECKTYPE REQUIRED + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione @50" DESCR + OUTPUT F_BILCHG GRUPPO + OUTPUT F_BILCHC CONTO + OUTPUT F_BILCHS SOTTOCONTO + INPUT GRUPPO F_BILCHG + INPUT CONTO F_BILCHC + INPUT SOTTOCONTO F_BILCHS +END + +NUMBER F_BILCHC 3 +BEGIN + PROMPT 44 9 "" + COPY ALL F_BILCHG + CHECKTYPE REQUIRED +END + +NUMBER F_BILCHS 6 +BEGIN + PROMPT 51 9 "" + COPY ALL F_BILCHG + CHECKTYPE REQUIRED + +END + +NUMBER F_PROPERG 3 +BEGIN + PROMPT 3 10 "Profitti e perdite " + COPY USE F_BILCHG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_PROPERG GRUPPO + OUTPUT F_PROPERC CONTO + OUTPUT F_PROPERS SOTTOCONTO + INPUT GRUPPO F_PROPERG + INPUT CONTO F_PROPERC + INPUT SOTTOCONTO F_PROPERS +END + +NUMBER F_PROPERC 3 +BEGIN + PROMPT 44 10 "" + COPY USE F_BILCHG + CHECKTYPE REQUIRED + + COPY DISPLAY F_BILCHG + COPY OUTPUT F_PROPERG + COPY INPUT F_PROPERG +END + +NUMBER F_PROPERS 6 +BEGIN + PROMPT 51 10 "" + COPY ALL F_PROPERC + CHECKTYPE REQUIRED +END + +NUMBER F_BILAPG 3 +BEGIN + PROMPT 3 11 "Bilancio di apertura " + COPY USE F_BILCHG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_BILAPG GRUPPO + OUTPUT F_BILAPC CONTO + OUTPUT F_BILAPS SOTTOCONTO + INPUT GRUPPO F_BILAPG + INPUT CONTO F_BILAPC + INPUT SOTTOCONTO F_BILAPS +END + +NUMBER F_BILAPC 3 +BEGIN + PROMPT 44 11 "" + COPY USE F_BILCHG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + COPY OUTPUT F_BILAPG + COPY INPUT F_BILAPG +END + +NUMBER F_BILAPS 6 +BEGIN + PROMPT 51 11 "" + COPY ALL F_BILAPC + CHECKTYPE REQUIRED +END + +NUMBER F_UTILPG 3 +BEGIN + PROMPT 3 12 "Utile d'esercizio c/to patrim. " + USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="1")||(INDBIL="2")||(INDBIL="5")) + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_UTILPG GRUPPO + OUTPUT F_UTILPC CONTO + OUTPUT F_UTILPS SOTTOCONTO + INPUT GRUPPO F_UTILPG + INPUT CONTO F_UTILPC + INPUT SOTTOCONTO F_UTILPS +END + +NUMBER F_UTILPC 3 +BEGIN + PROMPT 44 12 "" + COPY USE F_UTILPG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + COPY OUTPUT F_UTILPG + COPY INPUT F_UTILPG +END + +NUMBER F_UTILPS 6 +BEGIN + PROMPT 51 12 "" + COPY ALL F_UTILPC + CHECKTYPE REQUIRED +END + +NUMBER F_PERDPG 3 +BEGIN + PROMPT 3 13 "Perdita d'esercizio c/to patr. " + USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="1")||(INDBIL="2")||(INDBIL="5")) + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_PERDPG GRUPPO + OUTPUT F_PERDPC CONTO + OUTPUT F_PERDPS SOTTOCONTO + INPUT GRUPPO F_PERDPG + INPUT CONTO F_PERDPC + INPUT SOTTOCONTO F_PERDPS +END + +NUMBER F_PERDPC 3 +BEGIN + PROMPT 44 13 "" + COPY USE F_PERDPG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + COPY OUTPUT F_PERDPG + COPY INPUT F_PERDPG +END + +NUMBER F_PERDPS 6 +BEGIN + PROMPT 51 13 "" + COPY ALL F_PERDPC + CHECKTYPE REQUIRED +END + +NUMBER F_UTILEG 3 +BEGIN + PROMPT 3 14 "Utile d'esercizio c/to econom. " + USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ((INDBIL="3")||(INDBIL="4")) + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_UTILEG GRUPPO + OUTPUT F_UTILEC CONTO + OUTPUT F_UTILES SOTTOCONTO + INPUT GRUPPO F_UTILEG + INPUT CONTO F_UTILEC + INPUT SOTTOCONTO F_UTILES +END + +NUMBER F_UTILEC 3 +BEGIN + PROMPT 44 14 "" + COPY USE F_UTILEG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + COPY OUTPUT F_UTILEG + COPY INPUT F_UTILEG +END + +NUMBER F_UTILES 6 +BEGIN + PROMPT 51 14 "" + COPY ALL F_UTILEC + CHECKTYPE REQUIRED +END + +NUMBER F_PERDEG 3 +BEGIN + PROMPT 3 15 "Perdita d'esercizio c/to econ. " + USE LF_PCON KEY 1 SELECT (SOTTOCONTO!="") && ( (INDBIL="3")||(INDBIL="4") ) + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + OUTPUT F_PERDEG GRUPPO + OUTPUT F_PERDEC CONTO + OUTPUT F_PERDES SOTTOCONTO + INPUT GRUPPO F_PERDEG + INPUT CONTO F_PERDEC + INPUT SOTTOCONTO F_PERDES + +END + +NUMBER F_PERDEC 3 +BEGIN + PROMPT 44 15 "" + COPY USE F_PERDEG + CHECKTYPE REQUIRED + COPY DISPLAY F_BILCHG + COPY OUTPUT F_PERDEG + COPY INPUT F_PERDEG +END + +NUMBER F_PERDES 6 +BEGIN + PROMPT 51 15 "" + COPY ALL F_PERDEC + CHECKTYPE REQUIRED +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK + + + + + + +