From 03532d4a9315084b26cbcd587c9852d844a2c837 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 1 Sep 1994 16:26:29 +0000 Subject: [PATCH] Aggiunta la gestione del saldo DARE e AVERE e dei totali IMPONIBILI. Aggiuta la ricerca per descrizione dei conti e dei clienti nelle maschere. git-svn-id: svn://10.65.10.50/trunk@129 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100.h | 172 +++---- cg/cg2100b.uml | 16 +- cg/cg2100c.uml | 1179 +++++++++++++++++++++++++----------------------- cg/cg2101.cpp | 446 +++++++++--------- cg/cg2102.cpp | 142 ++++-- cg/cg2102.h | 160 +++---- cg/cg21cg.uml | 607 ++++++++++++++----------- cg/cg21iva.uml | 64 ++- cg/cg3.cpp | 53 +-- cg/cg3.h | 38 +- 10 files changed, 1553 insertions(+), 1324 deletions(-) diff --git a/cg/cg2100.h b/cg/cg2100.h index 3d85e7caf..c8372899f 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -1,84 +1,88 @@ -#ifndef __CG2100_H -#define __CG2100_H - -#define F_CODDITTA 101 -#define F_RAGSOC 102 -#define F_DATAREG 103 -#define F_NUMREG 104 -#define F_CODCAUS 105 -#define F_DESCRCAUS 106 -#define F_DOCUMENTO 107 -#define F_TIPODOC 108 -#define F_CODREG 109 -#define F_PROTIVA 110 -#define F_RIEPILOGO 111 -#define F_DESCR 112 -#define F_DATADOC 113 -#define F_NUMDOC 114 -#define F_ANNOES 115 -#define F_DATACOMP 116 -#define F_ANNOIVA 117 -#define F_CLIFO 150 -#define F_CLIENTE 151 -#define F_RAGSOCCLIENTE 152 -#define F_STATOPAIV 153 -#define F_PIVACLIENTE 154 -#define F_FORNITORE 161 -#define F_RAGSOCFORNITORE 162 -#define F_PIVAFORNITORE 164 -#define F_GRUPPOCLIFO 172 -#define F_CONTOCLIFO 173 -#define F_GRUPPORIC 174 -#define F_CONTORIC 175 -#define F_SOTTOCONTORIC 176 -#define F_TOTALE 118 -#define F_CODIVA 119 -#define F_RITFIS 120 -#define F_RITSOC 121 -#define F_CODPAG 122 -#define F_ANNORIF 123 -#define F_NUMRIF 124 -#define F_VALUTA 126 -#define F_CAMBIO 127 -#define F_VISVAL 128 -#define F_PROVVISORIO 129 -#define F_OCCASIONALE 130 -#define F_OCCASEDIT 131 -#define F_SOLAIVA 132 -#define F_CORRLIRE 133 -#define F_CORRVALUTA 134 -#define F_DATA74TER 135 -#define F_DESCAGG 136 -#define F_SHEETCG 300 -#define F_SHEETIVA 301 - -// Campi ripetuti sulla seconda pagina -#define H_DATAREG 201 -#define H_NUMREG 202 -#define H_CODCAUS 203 -#define H_DESCRCAUS 204 -#define H_ANNOES 205 - -// Campi ripetuti sulla terza pagina -#define H_DATAREG1 211 -#define H_NUMREG1 212 -#define H_CODCAUS1 213 -#define H_DESCRCAUS1 214 -#define H_ANNOES1 215 - -// Maschera clienti/fornitori occasionali -#define O_CODICE 100 -#define O_RAGSOC 101 -#define O_STATO 102 -#define O_COMUNE 103 -#define O_DENCOM 104 -#define O_CAP 105 -#define O_INDIRIZZO 106 -#define O_NUMERO 107 -#define O_SESSO 110 -#define O_DATANAS 111 -#define O_STATONAS 112 -#define O_COMUNENAS 113 -#define O_DENCOMNAS 114 - -#endif +#ifndef __CG2100_H +#define __CG2100_H + +#define F_CODDITTA 101 +#define F_RAGSOC 102 +#define F_DATAREG 103 +#define F_NUMREG 104 +#define F_CODCAUS 105 +#define F_DESCRCAUS 106 +#define F_DOCUMENTO 107 +#define F_TIPODOC 108 +#define F_CODREG 109 +#define F_PROTIVA 110 +#define F_RIEPILOGO 111 +#define F_DESCR 112 +#define F_DATADOC 113 +#define F_NUMDOC 114 +#define F_ANNOES 115 +#define F_DATACOMP 116 +#define F_ANNOIVA 117 +#define F_CLIFO 150 +#define F_CLIENTE 151 +#define F_RAGSOCCLIENTE 152 +#define F_STATOPAIV 153 +#define F_PIVACLIENTE 154 +#define F_FORNITORE 161 +#define F_RAGSOCFORNITORE 162 +#define F_PIVAFORNITORE 164 +#define F_GRUPPOCLIFO 172 +#define F_CONTOCLIFO 173 +#define F_GRUPPORIC 174 +#define F_CONTORIC 175 +#define F_SOTTOCONTORIC 176 +#define F_TOTALE 118 +#define F_CODIVA 119 +#define F_RITFIS 120 +#define F_RITSOC 121 +#define F_CODPAG 122 +#define F_ANNORIF 123 +#define F_NUMRIF 124 +#define F_VALUTA 126 +#define F_CAMBIO 127 +#define F_VISVAL 128 +#define F_PROVVISORIO 129 +#define F_OCCASIONALE 130 +#define F_OCCASEDIT 131 +#define F_SOLAIVA 132 +#define F_CORRLIRE 133 +#define F_CORRVALUTA 134 +#define F_DATA74TER 135 +#define F_DESCAGG 136 +#define F_DARE 137 +#define F_AVERE 138 +#define F_IMPONIBILI 139 +#define F_IMPOSTE 140 +#define F_SHEETCG 300 +#define F_SHEETIVA 301 + +// Campi ripetuti sulla seconda pagina +#define H_DATAREG 201 +#define H_NUMREG 202 +#define H_CODCAUS 203 +#define H_DESCRCAUS 204 +#define H_ANNOES 205 + +// Campi ripetuti sulla terza pagina +#define H_DATAREG1 211 +#define H_NUMREG1 212 +#define H_CODCAUS1 213 +#define H_DESCRCAUS1 214 +#define H_ANNOES1 215 + +// Maschera clienti/fornitori occasionali +#define O_CODICE 100 +#define O_RAGSOC 101 +#define O_STATO 102 +#define O_COMUNE 103 +#define O_DENCOM 104 +#define O_CAP 105 +#define O_INDIRIZZO 106 +#define O_NUMERO 107 +#define O_SESSO 110 +#define O_DATANAS 111 +#define O_STATONAS 112 +#define O_COMUNENAS 113 +#define O_DENCOMNAS 114 + +#endif diff --git a/cg/cg2100b.uml b/cg/cg2100b.uml index 0faa7ca81..45ff3318c 100755 --- a/cg/cg2100b.uml +++ b/cg/cg2100b.uml @@ -168,7 +168,7 @@ END SPREADSHEET F_SHEETCG BEGIN - PROMPT 1 10 "" + PROMPT 0 9 "" ITEM "Dare@17" ITEM "Avere@17" ITEM " @1" @@ -186,6 +186,20 @@ BEGIN ITEM " @1" END +NUMBER F_DARE 17 +BEGIN + PROMPT 1 -1 "Saldo Dare " + FLAGS "DRV" + PICTURE "." +END + +NUMBER F_AVERE 17 +BEGIN + PROMPT 40 -1 "Saldo Avere " + FLAGS "DRV" + PICTURE "." +END + ENDPAGE ENDMASK diff --git a/cg/cg2100c.uml b/cg/cg2100c.uml index e1fc9e6b9..1cc039d5b 100755 --- a/cg/cg2100c.uml +++ b/cg/cg2100c.uml @@ -1,576 +1,603 @@ -#include "cg2100.h" - -TOOLBAR "" 0 20 0 2 - -#include - -ENDPAGE - -PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20 - -NUMBER F_GRUPPOCLIFO 3 -BEGIN - FLAGS "H" -END - -NUMBER F_CONTOCLIFO 3 -BEGIN - FLAGS "H" -END - -NUMBER F_GRUPPORIC 3 -BEGIN - FLAGS "H" -END - -NUMBER F_CONTORIC 3 -BEGIN - FLAGS "H" -END - -NUMBER F_SOTTOCONTORIC 6 -BEGIN - FLAGS "H" -END - -GROUPBOX DLG_NULL 78 3 -BEGIN - PROMPT 1 0 "@BMovimento IVA" -END - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 3 1 "Ditta " - FLAGS "FGRD" - USE LF_NDITTE KEY 1 - INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - OUTPUT F_RAGSOC RAGSOC - CHECKTYPE REQUIRED -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 17 1 "Ragione " - FLAGS "DG" -END - -DATE F_DATAREG -BEGIN - PROMPT 1 3 "Data operazione " - FIELD LF_MOV->DATAREG - MESSAGE COPY,H_DATAREG|COPY,F_DATA74TER -END - -DATE F_DATACOMP -BEGIN - PROMPT 1 4 "Data competenza " - FIELD LF_MOV->DATACOMP -END - -DATE F_DATADOC -BEGIN - PROMPT 1 5 "Data documento " - FIELD LF_MOV->DATADOC - HELP "Specificare la data del documento (non superiore alla data dell'operazione)" - WARNING "Inserire una data documento non superiore alla data dell'operazione" - VALIDATE DATE_CMP_FUNC <= F_DATAREG -END - -NUMBER F_ANNOIVA 4 -BEGIN - PROMPT 32 3 "Anno IVA " - FIELD LF_MOV->ANNOIVA - FLAGS "D" -END - -NUMBER F_ANNOES 4 -BEGIN - PROMPT 32 4 "Anno esercizio " - FIELD LF_MOV->ANNOES - FLAGS "DG" - MESSAGE COPY,H_ANNOES -END - -STRING F_TIPODOC 2 -BEGIN - PROMPT 32 5 "Tipo documento " - FIELD LF_MOV->TIPODOC - FLAGS "D" -END - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 57 3 "Operazione n. " - FIELD LF_MOV->NUMREG - FLAGS "DG" - KEY 1 - MESSAGE COPY,H_NUMREG -END - -STRING F_NUMDOC 7 -BEGIN - PROMPT 57 5 "Documento n. " - FIELD LF_MOV->NUMDOC - WARNING "La causale impone di specificare il numero documento" -END - -STRING F_DESCAGG 5 -BEGIN - PROMPT 1 6 "Descrizione " - FLAGS "U" - USE %DPN - INPUT CODTAB F_DESCAGG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_DESCAGG CODTAB - OUTPUT F_DESCR S0 - CHECKTYPE NORMAL -END - -STRING F_DESCR 50 -BEGIN - PROMPT 25 6 "" - FIELD LF_MOV->DESCR - USE %DPN KEY 2 - INPUT S0 F_DESCR - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_DESCAGG -END - -LIST F_PROVVISORIO 1 25 -BEGIN - PROMPT 1 7 "Movimento provvisorio " - FIELD PROVVIS - ITEM " |No (movimento normale)" - ITEM "P|Si (cancellabile)" - ITEM "N|Si (non cancellabile)" -END - -BOOLEAN F_SOLAIVA -BEGIN - PROMPT 54 7 "Movimento di sola IVA" -END - -STRING F_CODCAUS 3 -BEGIN - PROMPT 1 8 "Causale " - FLAGS "U" - FIELD LF_MOV->CODCAUS - USE LF_CAUSALI KEY 1 - INPUT CODCAUS F_CODCAUS - DISPLAY "Codice" CODCAUS - DISPLAY "Descrizione@50" DESCR - DISPLAY "Registro" REG - DISPLAY "Tipo" TIPODOC - OUTPUT F_CODCAUS CODCAUS - OUTPUT F_DESCRCAUS DESCR - OUTPUT F_CODREG REG - OUTPUT F_TIPODOC TIPODOC - MESSAGE COPY,H_CODCAUS - CHECKTYPE REQUIRED - ADD RUN cg0 -4 -END - -STRING F_DESCRCAUS 50 -BEGIN - PROMPT 25 8 "" - USE LF_CAUSALI KEY 2 - INPUT DESCR F_DESCRCAUS - DISPLAY "Descrizione@50" DESCR - DISPLAY "Codice" CODCAUS - COPY OUTPUT F_CODCAUS - MESSAGE COPY,H_DESCRCAUS - CHECKTYPE REQUIRED - ADD RUN cg0 -4 -END - -STRING F_CODREG 3 -BEGIN - PROMPT 1 9 "Registro IVA " - FLAGS "DG" - FIELD LF_MOV->REG -/* - USE REG SELECT I0 < 3 - INPUT CODTAB[1,4] F_ANNOIVA SELECT - INPUT CODTAB[5,7] F_CODREG - DISPLAY "Anno" CODTAB[1,4] - DISPLAY "Codice" CODTAB[5,7] - DISPLAY "Tipo" I0 - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODREG CODTAB[5,7] - CHECKTYPE NORMAL - */ -END - -NUMBER F_PROTIVA 5 -BEGIN - PROMPT 27 9 "Protocollo IVA " - FIELD LF_MOV->PROTIVA -END - -NUMBER F_RIEPILOGO 5 -BEGIN - PROMPT 51 9 "Riepilogo fino al n. " - FIELD LF_MOV->UPROTIVA - NUM_EXPR (#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA) - WARNING "Il riepilogo non puo' essere inferiore al protocollo IVA" -END - -STRING F_CLIFO 1 -BEGIN - PROMPT 0 10 "" - FIELD LF_MOV->TIPO - FLAGS "H" -END - -NUMBER F_CLIENTE 6 -BEGIN - PROMPT 1 10 "Cliente " - FIELD LF_MOV->CODCF - GROUP 1 - USE LF_CLIFO KEY 1 - INPUT TIPOCF "C" - INPUT CODCF F_CLIENTE - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - OUTPUT F_CLIFO TIPOCF - OUTPUT F_CLIENTE CODCF - OUTPUT F_RAGSOCCLIENTE RAGSOC - OUTPUT F_GRUPPOCLIFO GRUPPO - OUTPUT F_CONTOCLIFO CONTO - OUTPUT F_GRUPPORIC GRUPPORIC - OUTPUT F_CONTORIC CONTORIC - OUTPUT F_SOTTOCONTORIC SOTTOCRIC - OUTPUT F_CODPAG CODPAG - OUTPUT F_STATOPAIV STATOPAIV - OUTPUT F_PIVACLIENTE PAIV - OUTPUT F_OCCASIONALE OCCAS - MESSAGE COPY,F_FORNITORE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 - END - -NUMBER F_FORNITORE 6 -BEGIN - PROMPT 1 10 "Fornitore " - FIELD LF_MOV->CODCF - GROUP 2 - USE LF_CLIFO KEY 1 - INPUT TIPOCF "F" - INPUT CODCF F_FORNITORE - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - OUTPUT F_CLIFO TIPOCF - OUTPUT F_FORNITORE CODCF - OUTPUT F_RAGSOCFORNITORE RAGSOC - OUTPUT F_GRUPPOCLIFO GRUPPO - OUTPUT F_CONTOCLIFO CONTO - OUTPUT F_GRUPPORIC GRUPPORIC - OUTPUT F_CONTORIC CONTORIC - OUTPUT F_SOTTOCONTORIC SOTTOCRIC - OUTPUT F_OCCASIONALE OCCAS - OUTPUT F_CODPAG CODPAG - OUTPUT F_STATOPAIV STATOPAIV - OUTPUT F_PIVAFORNITORE PAIV - MESSAGE COPY,F_CLIENTE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 -END - -STRING F_RAGSOCFORNITORE 50 -BEGIN - PROMPT 25 10 "" - GROUP 2 - USE LF_CLIFO KEY 2 - INPUT TIPOCF "F" - INPUT RAGSOC F_RAGSOCFORNITORE - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice" CODCF - COPY OUTPUT F_FORNITORE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 -END - -STRING F_RAGSOCCLIENTE 50 -BEGIN - PROMPT 25 10 "" - GROUP 1 - USE LF_CLIFO KEY 2 - INPUT TIPOCF "C" - INPUT RAGSOC F_RAGSOCCLIENTE - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice" CODCF - COPY OUTPUT F_CLIENTE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 -END - -STRING F_PIVACLIENTE 14 -BEGIN - PROMPT 1 11 "Partita IVA " - GROUP 1 - USE LF_CLIFO KEY 3 - INPUT TIPOCF "C" - INPUT STATOPAIV F_STATOPAIV - INPUT PAIV F_PIVACLIENTE - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - COPY OUTPUT F_CLIENTE - CHECKTYPE NORMAL - ADD RUN cg0 -1 -END - -STRING F_PIVAFORNITORE 14 -BEGIN - PROMPT 1 11 "Partita IVA " - GROUP 2 - USE LF_CLIFO KEY 3 - INPUT TIPOCF "F" - INPUT STATOPAIV F_STATOPAIV - INPUT PAIV F_PIVAFORNITORE - COPY DISPLAY F_PIVACLIENTE - COPY OUTPUT F_FORNITORE - CHECKTYPE NORMAL - ADD RUN cg0 -1 -END - -LIST F_STATOPAIV 18 -BEGIN - PROMPT 32 11 "Stato " - HELP "Codice ISO dello stato per la partita IVA" - ITEM " |Italia o extra CEE" - ITEM "BE|Belgio" - ITEM "DE|Germania" - ITEM "DK|Danimarca" - ITEM "EL|Grecia" - ITEM "ES|Spagna" - ITEM "FR|Francia" - ITEM "GB|Gran Bretagna" - ITEM "IE|Irlanda" - ITEM "IT|Italia" - ITEM "LU|Lussemburgo" - ITEM "NL|Olanda" - ITEM "PT|Portogallo" -END - -BUTTON F_OCCASEDIT 18 -BEGIN - PROMPT 32 11 "Dati anagrafici" - FLAGS "H" -END - -BOOLEAN F_OCCASIONALE -BEGIN - MESSAGE FALSE HIDE,F_OCCASEDIT|ENABLE,F_PIVACLIENTE|ENABLE,F_PIVAFORNITORE|SHOW,F_STATOPAIV - MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV|PUSH,F_OCCASEDIT - FLAGS "GH" -END - -STRING F_CODPAG 4 -BEGIN - PROMPT 61 11 "Pagamento " - USE %CPG - INPUT CODTAB F_CODPAG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODPAG CODTAB - CHECKTYPE NORMAL -END - -STRING F_CODIVA 4 -BEGIN - PROMPT 1 12 "Codice IVA " - FLAGS "U" - USE %IVA - INPUT CODTAB F_CODIVA - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - DISPLAY "%@6" R0 - DISPLAY "Tipo" S1 - OUTPUT F_CODIVA CODTAB - CHECKTYPE NORMAL -END - -NUMBER F_TOTALE 15 -BEGIN - PROMPT 45 12 "Totale documento " - FIELD TOTDOC - FLAGS "RV" - PICTURE "." -END - -NUMBER F_RITFIS 15 -BEGIN - PROMPT 45 13 "Ritenute fiscali " - FIELD RITFIS - FLAGS "RV" - PICTURE "." -END - -NUMBER F_RITSOC 15 -BEGIN - PROMPT 45 14 "Ritenute sociali " - FIELD LF_MOV->RITSOC - FLAGS "RV" - PICTURE "." -END - -DATE F_DATA74TER -BEGIN - PROMPT 1 13 "Data 74/ter " - CHECKTYPE REQUIRED - FIELD DATA74TER -END - - -NUMBER F_ANNORIF 4 -BEGIN - PROMPT 1 14 "Rif.partita " - FLAGS "A" - HELP "Anno di riferimento partita" -END - -NUMBER F_NUMRIF 7 -BEGIN - PROMPT 20 14 "/" - HELP "Numero documento (o protocollo IVA) di riferimento" -END - -NUMBER F_CORRLIRE 15 -BEGIN - PROMPT 1 15 "Corrispettivo Lire " - FIELD LF_MOV->CORRLIRE - FLAGS "R" - PICTURE "." - END - - NUMBER F_CORRVALUTA 15 - BEGIN - PROMPT 45 15 "Corrisp. valuta " - FIELD LF_MOV->CORRVALUTA - FLAGS "R" - PICTURE "." -END - - - -STRING F_VALUTA 3 -BEGIN - PROMPT 1 16 "Valuta " - FIELD LF_MOV->CODVAL - FLAGS "U" - GROUP 3 - USE %VAL - INPUT CODTAB F_VALUTA - DISPLAY "Codice" CODTAB - DISPLAY "Nome@50" S0 - DISPLAY "Cambio@15" R10 - DISPLAY "Ultimo aggiornamento" D0 - OUTPUT F_VALUTA CODTAB - OUTPUT F_CAMBIO R10 - CHECKTYPE NORMAL -END - -NUMBER F_CAMBIO 15 5 -BEGIN - PROMPT 20 16 "Cambio " - FIELD LF_MOV->CAMBIO - FLAGS "RU" - GROUP 3 - PICTURE ".5" -END - -BOOLEAN F_VISVAL -BEGIN - PROMPT 47 16 "Visualizza importi in valuta" - GROUP 3 -END - -ENDPAGE - -PAGE "IVA" -1 -1 77 20 - -GROUPBOX DLG_NULL 78 4 -BEGIN - PROMPT 1 0 "@BMovimento IVA - Sezione IVA" -END - -NUMBER H_NUMREG 6 -BEGIN - PROMPT 2 1 "Operazione n. " - FLAGS "D" -END - -DATE H_DATAREG -BEGIN - PROMPT 32 1 "Data " - FLAGS "D" -END - -NUMBER H_ANNOES 4 -BEGIN - PROMPT 61 1 "Esercizio " - FLAGS "D" -END - -STRING H_CODCAUS 3 -BEGIN - PROMPT 2 2 "Causale " - FLAGS "D" -END - -STRING H_DESCRCAUS 50 -BEGIN - PROMPT 25 2 "" - FLAGS "D" -END - -SPREADSHEET F_SHEETIVA 0 7 -BEGIN - PROMPT 3 4 "" - ITEM "Imponibile@14" - ITEM "Iva@4" - ITEM "Det@1" - ITEM "Imposta@14" - ITEM "C/R@1" - ITEM " @1" - ITEM "Gr." - ITEM "Co." - ITEM "Sottoc." - ITEM "Descrizione Conto@50" -END - - -SPREADSHEET F_SHEETCG -BEGIN - PROMPT 3 11 "" - ITEM "Dare@17" - ITEM "Avere@17" - ITEM " @1" - ITEM "Gr." - ITEM "Co." - ITEM "Sottoc." - ITEM "Descrizione conto@50" - ITEM "Codice" - ITEM "Descrizione riga@50" - ITEM " @1" - ITEM "Gr./c" - ITEM "Co./c" - ITEM "Sottoc./c" - ITEM "Descrizione contropartita@50" - ITEM " @1" -END - -ENDPAGE - -ENDMASK - -#include "cg21iva.uml" -#include "cg21cg.uml" +#include "cg2100.h" + +TOOLBAR "" 0 20 0 2 + +#include + +ENDPAGE + +PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20 + +NUMBER F_GRUPPOCLIFO 3 +BEGIN + FLAGS "H" +END + +NUMBER F_CONTOCLIFO 3 +BEGIN + FLAGS "H" +END + +NUMBER F_GRUPPORIC 3 +BEGIN + FLAGS "H" +END + +NUMBER F_CONTORIC 3 +BEGIN + FLAGS "H" +END + +NUMBER F_SOTTOCONTORIC 6 +BEGIN + FLAGS "H" +END + +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 0 "@BMovimento IVA" +END + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 3 1 "Ditta " + FLAGS "FGRD" + USE LF_NDITTE KEY 1 + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 17 1 "Ragione " + FLAGS "DG" +END + +DATE F_DATAREG +BEGIN + PROMPT 1 3 "Data operazione " + FIELD LF_MOV->DATAREG + MESSAGE COPY,H_DATAREG|COPY,F_DATA74TER +END + +DATE F_DATACOMP +BEGIN + PROMPT 1 4 "Data competenza " + FIELD LF_MOV->DATACOMP +END + +DATE F_DATADOC +BEGIN + PROMPT 1 5 "Data documento " + FIELD LF_MOV->DATADOC + HELP "Specificare la data del documento (non superiore alla data dell'operazione)" + WARNING "Inserire una data documento non superiore alla data dell'operazione" + VALIDATE DATE_CMP_FUNC <= F_DATAREG +END + +NUMBER F_ANNOIVA 4 +BEGIN + PROMPT 32 3 "Anno IVA " + FIELD LF_MOV->ANNOIVA + FLAGS "D" +END + +NUMBER F_ANNOES 4 +BEGIN + PROMPT 32 4 "Anno esercizio " + FIELD LF_MOV->ANNOES + FLAGS "DG" + MESSAGE COPY,H_ANNOES +END + +STRING F_TIPODOC 2 +BEGIN + PROMPT 32 5 "Tipo documento " + FIELD LF_MOV->TIPODOC + FLAGS "D" +END + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 57 3 "Operazione n. " + FIELD LF_MOV->NUMREG + FLAGS "DG" + KEY 1 + MESSAGE COPY,H_NUMREG +END + +STRING F_NUMDOC 7 +BEGIN + PROMPT 57 5 "Documento n. " + FIELD LF_MOV->NUMDOC + WARNING "La causale impone di specificare il numero documento" +END + +STRING F_DESCAGG 5 +BEGIN + PROMPT 1 6 "Descrizione " + FLAGS "U" + USE %DPN + INPUT CODTAB F_DESCAGG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_DESCAGG CODTAB + OUTPUT F_DESCR S0 + CHECKTYPE NORMAL +END + +STRING F_DESCR 50 +BEGIN + PROMPT 25 6 "" + FIELD LF_MOV->DESCR + USE %DPN KEY 2 + INPUT S0 F_DESCR + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_DESCAGG +END + +LIST F_PROVVISORIO 1 25 +BEGIN + PROMPT 1 7 "Movimento provvisorio " + FIELD PROVVIS + ITEM " |No (movimento normale)" + ITEM "P|Si (cancellabile)" + ITEM "N|Si (non cancellabile)" +END + +BOOLEAN F_SOLAIVA +BEGIN + PROMPT 54 7 "Movimento di sola IVA" +END + +STRING F_CODCAUS 3 +BEGIN + PROMPT 1 8 "Causale " + FLAGS "U" + FIELD LF_MOV->CODCAUS + USE LF_CAUSALI KEY 1 + INPUT CODCAUS F_CODCAUS + DISPLAY "Codice" CODCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Registro" REG + DISPLAY "Tipo" TIPODOC + OUTPUT F_CODCAUS CODCAUS + OUTPUT F_DESCRCAUS DESCR + OUTPUT F_CODREG REG + OUTPUT F_TIPODOC TIPODOC + MESSAGE COPY,H_CODCAUS + CHECKTYPE REQUIRED + ADD RUN cg0 -4 +END + +STRING F_DESCRCAUS 50 +BEGIN + PROMPT 25 8 "" + USE LF_CAUSALI KEY 2 + INPUT DESCR F_DESCRCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice" CODCAUS + COPY OUTPUT F_CODCAUS + MESSAGE COPY,H_DESCRCAUS + CHECKTYPE REQUIRED + ADD RUN cg0 -4 +END + +STRING F_CODREG 3 +BEGIN + PROMPT 1 9 "Registro IVA " + FLAGS "DG" + FIELD LF_MOV->REG +/* + USE REG SELECT I0 < 3 + INPUT CODTAB[1,4] F_ANNOIVA SELECT + INPUT CODTAB[5,7] F_CODREG + DISPLAY "Anno" CODTAB[1,4] + DISPLAY "Codice" CODTAB[5,7] + DISPLAY "Tipo" I0 + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODREG CODTAB[5,7] + CHECKTYPE NORMAL + */ +END + +NUMBER F_PROTIVA 5 +BEGIN + PROMPT 27 9 "Protocollo IVA " + FIELD LF_MOV->PROTIVA +END + +NUMBER F_RIEPILOGO 5 +BEGIN + PROMPT 51 9 "Riepilogo fino al n. " + FIELD LF_MOV->UPROTIVA + NUM_EXPR (#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA) + WARNING "Il riepilogo non puo' essere inferiore al protocollo IVA" +END + +STRING F_CLIFO 1 +BEGIN + PROMPT 0 10 "" + FIELD LF_MOV->TIPO + FLAGS "H" +END + +NUMBER F_CLIENTE 6 +BEGIN + PROMPT 1 10 "Cliente " + FIELD LF_MOV->CODCF + GROUP 1 + USE LF_CLIFO KEY 1 + INPUT TIPOCF "C" + INPUT CODCF F_CLIENTE + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + OUTPUT F_CLIFO TIPOCF + OUTPUT F_CLIENTE CODCF + OUTPUT F_RAGSOCCLIENTE RAGSOC + OUTPUT F_GRUPPOCLIFO GRUPPO + OUTPUT F_CONTOCLIFO CONTO + OUTPUT F_GRUPPORIC GRUPPORIC + OUTPUT F_CONTORIC CONTORIC + OUTPUT F_SOTTOCONTORIC SOTTOCRIC + OUTPUT F_CODPAG CODPAG + OUTPUT F_STATOPAIV STATOPAIV + OUTPUT F_PIVACLIENTE PAIV + OUTPUT F_OCCASIONALE OCCAS + MESSAGE COPY,F_FORNITORE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 + END + +NUMBER F_FORNITORE 6 +BEGIN + PROMPT 1 10 "Fornitore " + FIELD LF_MOV->CODCF + GROUP 2 + USE LF_CLIFO KEY 1 + INPUT TIPOCF "F" + INPUT CODCF F_FORNITORE + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + OUTPUT F_CLIFO TIPOCF + OUTPUT F_FORNITORE CODCF + OUTPUT F_RAGSOCFORNITORE RAGSOC + OUTPUT F_GRUPPOCLIFO GRUPPO + OUTPUT F_CONTOCLIFO CONTO + OUTPUT F_GRUPPORIC GRUPPORIC + OUTPUT F_CONTORIC CONTORIC + OUTPUT F_SOTTOCONTORIC SOTTOCRIC + OUTPUT F_OCCASIONALE OCCAS + OUTPUT F_CODPAG CODPAG + OUTPUT F_STATOPAIV STATOPAIV + OUTPUT F_PIVAFORNITORE PAIV + MESSAGE COPY,F_CLIENTE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 +END + +STRING F_RAGSOCFORNITORE 50 +BEGIN + PROMPT 25 10 "" + GROUP 2 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC F_RAGSOCFORNITORE + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice" CODCF + COPY OUTPUT F_FORNITORE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 +END + +STRING F_RAGSOCCLIENTE 50 +BEGIN + PROMPT 25 10 "" + GROUP 1 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC F_RAGSOCCLIENTE + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice" CODCF + COPY OUTPUT F_CLIENTE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 +END + +STRING F_PIVACLIENTE 14 +BEGIN + PROMPT 1 11 "Partita IVA " + GROUP 1 + USE LF_CLIFO KEY 5 + INPUT TIPOCF "C" + INPUT STATOPAIV F_STATOPAIV + INPUT PAIV F_PIVACLIENTE + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + COPY OUTPUT F_CLIENTE + CHECKTYPE NORMAL + ADD RUN cg0 -1 +END + +STRING F_PIVAFORNITORE 14 +BEGIN + PROMPT 1 11 "Partita IVA " + GROUP 2 + USE LF_CLIFO KEY 5 + INPUT TIPOCF "F" + INPUT STATOPAIV F_STATOPAIV + INPUT PAIV F_PIVAFORNITORE + COPY DISPLAY F_PIVACLIENTE + COPY OUTPUT F_FORNITORE + CHECKTYPE NORMAL + ADD RUN cg0 -1 +END + +LIST F_STATOPAIV 18 +BEGIN + PROMPT 32 11 "Stato " + HELP "Codice ISO dello stato per la partita IVA" + ITEM " |Italia o extra CEE" + ITEM "BE|Belgio" + ITEM "DE|Germania" + ITEM "DK|Danimarca" + ITEM "EL|Grecia" + ITEM "ES|Spagna" + ITEM "FR|Francia" + ITEM "GB|Gran Bretagna" + ITEM "IE|Irlanda" + ITEM "IT|Italia" + ITEM "LU|Lussemburgo" + ITEM "NL|Olanda" + ITEM "PT|Portogallo" +END + +BUTTON F_OCCASEDIT 18 +BEGIN + PROMPT 32 11 "Dati anagrafici" + FLAGS "H" +END + +BOOLEAN F_OCCASIONALE +BEGIN + MESSAGE FALSE HIDE,F_OCCASEDIT|ENABLE,F_PIVACLIENTE|ENABLE,F_PIVAFORNITORE|SHOW,F_STATOPAIV + MESSAGE TRUE SHOW,F_OCCASEDIT|DISABLE,F_PIVACLIENTE|DISABLE,F_PIVAFORNITORE|HIDE,F_STATOPAIV|PUSH,F_OCCASEDIT + FLAGS "GH" +END + +STRING F_CODPAG 4 +BEGIN + PROMPT 61 11 "Pagamento " + USE %CPG + INPUT CODTAB F_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODPAG CODTAB + CHECKTYPE NORMAL +END + +STRING F_CODIVA 4 +BEGIN + PROMPT 1 12 "Codice IVA " + FLAGS "U" + USE %IVA + INPUT CODTAB F_CODIVA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "%@6" R0 + DISPLAY "Tipo" S1 + OUTPUT F_CODIVA CODTAB + CHECKTYPE NORMAL +END + +NUMBER F_TOTALE 15 +BEGIN + PROMPT 45 12 "Totale documento " + FIELD TOTDOC + FLAGS "RV" + PICTURE "." +END + +NUMBER F_RITFIS 15 +BEGIN + PROMPT 45 13 "Ritenute fiscali " + FIELD RITFIS + FLAGS "RV" + PICTURE "." +END + +NUMBER F_RITSOC 15 +BEGIN + PROMPT 45 14 "Ritenute sociali " + FIELD LF_MOV->RITSOC + FLAGS "RV" + PICTURE "." +END + +DATE F_DATA74TER +BEGIN + PROMPT 1 13 "Data 74/ter " + CHECKTYPE REQUIRED + FIELD DATA74TER +END + + +NUMBER F_ANNORIF 4 +BEGIN + PROMPT 1 14 "Rif.partita " + FLAGS "A" + HELP "Anno di riferimento partita" +END + +NUMBER F_NUMRIF 7 +BEGIN + PROMPT 20 14 "/" + HELP "Numero documento (o protocollo IVA) di riferimento" +END + +NUMBER F_CORRLIRE 15 +BEGIN + PROMPT 1 15 "Corrispettivo Lire " + FIELD LF_MOV->CORRLIRE + FLAGS "R" + PICTURE "." + END + + NUMBER F_CORRVALUTA 15 + BEGIN + PROMPT 45 15 "Corrisp. valuta " + FIELD LF_MOV->CORRVALUTA + FLAGS "R" + PICTURE "." +END + + + +STRING F_VALUTA 3 +BEGIN + PROMPT 1 16 "Valuta " + FIELD LF_MOV->CODVAL + FLAGS "U" + GROUP 3 + USE %VAL + INPUT CODTAB F_VALUTA + DISPLAY "Codice" CODTAB + DISPLAY "Nome@50" S0 + DISPLAY "Cambio@15" R10 + DISPLAY "Ultimo aggiornamento" D0 + OUTPUT F_VALUTA CODTAB + OUTPUT F_CAMBIO R10 + CHECKTYPE NORMAL +END + +NUMBER F_CAMBIO 15 5 +BEGIN + PROMPT 20 16 "Cambio " + FIELD LF_MOV->CAMBIO + FLAGS "RU" + GROUP 3 + PICTURE ".5" +END + +BOOLEAN F_VISVAL +BEGIN + PROMPT 47 16 "Visualizza importi in valuta" + GROUP 3 +END + +ENDPAGE + +PAGE "IVA" -1 -1 77 20 + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 0 "@BMovimento IVA - Sezione IVA" +END + +NUMBER H_NUMREG 6 +BEGIN + PROMPT 2 1 "Operazione n. " + FLAGS "D" +END + +DATE H_DATAREG +BEGIN + PROMPT 32 1 "Data " + FLAGS "D" +END + +NUMBER H_ANNOES 4 +BEGIN + PROMPT 61 1 "Esercizio " + FLAGS "D" +END + +STRING H_CODCAUS 3 +BEGIN + PROMPT 2 2 "Causale " + FLAGS "D" +END + +STRING H_DESCRCAUS 50 +BEGIN + PROMPT 25 2 "" + FLAGS "D" +END + +SPREADSHEET F_SHEETIVA 0 7 +BEGIN + PROMPT 0 4 "" + ITEM "Imponibile@14" + ITEM "Iva@4" + ITEM "Det@1" + ITEM "Imposta@14" + ITEM "C/R@1" + ITEM " @1" + ITEM "Gr." + ITEM "Co." + ITEM "Sottoc." + ITEM "Descrizione Conto@50" +END + +NUMBER F_IMPONIBILI 17 +BEGIN + PROMPT 1 11 "Totale imponibili " + FLAGS "DRV" + PICTURE "." +END + +NUMBER F_IMPOSTE 17 +BEGIN + PROMPT 40 11 "Totale imposte " + FLAGS "DRV" + PICTURE "." +END + +SPREADSHEET F_SHEETCG +BEGIN + PROMPT 0 12 "" + ITEM "Dare@17" + ITEM "Avere@17" + ITEM " @1" + ITEM "Gr." + ITEM "Co." + ITEM "Sottoc." + ITEM "Descrizione conto@50" + ITEM "Codice" + ITEM "Descrizione riga@50" + ITEM " @1" + ITEM "Gr./c" + ITEM "Co./c" + ITEM "Sottoc./c" + ITEM "Descrizione contropartita@50" + ITEM " @1" +END + +NUMBER F_DARE 17 +BEGIN + PROMPT 1 -1 "Saldo Dare " + FLAGS "DRV" + PICTURE "." +END + +NUMBER F_AVERE 17 +BEGIN + PROMPT 40 -1 "Saldo Avere " + FLAGS "DRV" + PICTURE "." +END + +ENDPAGE + +ENDMASK + +#include "cg21iva.uml" +#include "cg21cg.uml" diff --git a/cg/cg2101.cpp b/cg/cg2101.cpp index ef69d2a52..23986a7dc 100755 --- a/cg/cg2101.cpp +++ b/cg/cg2101.cpp @@ -1,221 +1,225 @@ -#include - -#include "cg2101.h" -#include "cg2103.h" - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////// -// Movimento di prima nota -/////////////////////////////////////////////////////////// - -TMovimentoPN::TMovimentoPN() - : TRelation(LF_MOV), _oldcg(0), _oldiva(0) -{ - add(LF_RMOV, "NUMREG=NUMREG"); - add(LF_RMOVIVA, "NUMREG=NUMREG"); -} - -void TMovimentoPN::destroy_rows() -{ - _cg.destroy(); - _iva.destroy(); -} - - -TRectype& TMovimentoPN::cg(int i) -{ - TRectype* r = (TRectype*)_cg.objptr(i); - if (r == NULL) - { - r = new TRectype(LF_RMOV); - _cg.add(r, i); - } - return *r; -} - -TRectype& TMovimentoPN::iva(int i) -{ - TRectype* r = (TRectype*)_iva.objptr(i); - if (r == NULL) - { - r = new TRectype(LF_RMOVIVA); - _iva.add(r, i); - } - return *r; -} - - -int TMovimentoPN::read_mov_rows() -{ - const TLocalisamfile* rm = lfile(LF_RMOV); - const TLocalisamfile* ri = lfile(LF_RMOVIVA); - position_rels(); - - destroy_rows(); - for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV)) - { - const int row = rm->get_int(RMV_NUMRIG) - 1; - cg(row) = rm->curr(); - } - _oldcg = cg_items(); - - for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA)) - { - const int row = ri->get_int(RMI_NUMRIG) - 1; - iva(row) = ri->curr(); - } - _oldiva = iva_items(); - - return NOERR; -} - - -int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate) -{ - int err = file()->read(op, lockop, atdate); - if (err == NOERR) err = read_mov_rows(); - return err; -} - - -int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f) -{ - if (re) - { - const bool scrivi = f->rewrite(rec) != NOERR; - if (scrivi) f->write(rec); - } - else - { - f->write(rec); - } - - return f->status(); -} - - -int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a) -{ - const long numreg = lfile()->get_long("NUMREG"); - for (int i = da; i <= a; i++) - { - f->zero(); - f->put("NUMREG", numreg); - f->put("NUMRIG", i); - if (f->read(_isequal, _lock) == NOERR) - f->remove(); - } - return f->status(); -} - - -int TMovimentoPN::registra(bool re, bool force) -{ - TLocalisamfile* m = lfile(); - - const int err = write_rec(re, m->curr(), m); - if (err != NOERR) return err; - - TLocalisamfile* rm = lfile(LF_RMOV); - TLocalisamfile* ri = lfile(LF_RMOVIVA); - - const long numreg = m->get_long("NUMREG"); - - for (int i = 0 ; i < cg_items(); i++) - { - if (!re) cg(i).put("NUMREG", numreg); - const int err = write_rec(re, cg(i), rm); - if (!force && err != NOERR) return err; - } - if (i < _oldcg) - cancella(rm, i+1, _oldcg); - _oldcg = cg_items(); - - for (i = 0 ; i < iva_items(); i++) - { - if (!re) iva(i).put("NUMREG", numreg); - const int err = write_rec(re, iva(i), ri); - if (!force && err != NOERR) return err; - } - if (i < _oldiva) - cancella(ri, i+1, _oldiva); - _oldiva = iva_items(); - - - return err; -} - - -int TMovimentoPN::write(bool force, TDate&) -{ - const TLocalisamfile& r = *lfile(); - const int annoiva = r.get_int("ANNOIVA"); - const TString16 reg(r.get("REG")); - TRegistro registro(reg, annoiva); - - if (reg.not_empty() && registro.tipo_attivita() == "M") - { - for (int i = 0; i < iva_items(); i++) - { - const int riga = iva(i).get_int("RIGAIMP"); - int tipoatt = 0; - if (riga) - { - const TRectype& r = cg(riga-1); - const char tipo = r.get_char("TIPOC"); - if (tipo == ' ') - { - TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO")); - TRectype conto(LF_PCON); c.read(conto); - const TIndbil ib = (TIndbil)conto.get_int("INDBIL"); - if (ib == ib_passivita || ib == ib_ricavi) - { - int ricser = conto.get_int("RICSER"); - tipoatt = (ricser <= 0) ? 2 : 1; - } - } - } - iva(i).put("TIPOATT", tipoatt); - } - } - - _oldcg = _oldiva = 0; - int err = registra(FALSE, force); - - if (err == NOERR) - { - if (reg.not_empty()) - { - const long protiva = r.get_long("PROTIVA"); - const long uprotiva = r.get_long("UPROTIVA"); - const TDate datareg = r.get_date("DATAREG"); - registro.update(max(protiva, uprotiva), datareg); - } - } - return err; -} - - -int TMovimentoPN::rewrite(bool force, TDate&) -{ - return registra(TRUE, force); -} - - -int TMovimentoPN::remove(TDate&) -{ - TLocalisamfile* m = lfile(); - TLocalisamfile* rm = lfile(LF_RMOV); - TLocalisamfile* ri = lfile(LF_RMOVIVA); - - cancella(rm, 1, _oldcg); - cancella(ri, 1, _oldiva); - m->remove(); - _oldcg = _oldiva = 0; - return m->status(); -} - +#include + +#include "cg2101.h" +#include "cg2103.h" + +#include +#include +#include +#include + +/////////////////////////////////////////////////////////// +// Movimento di prima nota +/////////////////////////////////////////////////////////// + +TMovimentoPN::TMovimentoPN() +: TRelation(LF_MOV), _oldcg(0), _oldiva(0) +{ + add(LF_RMOV, "NUMREG=NUMREG"); + add(LF_RMOVIVA, "NUMREG=NUMREG"); +} + +void TMovimentoPN::destroy_rows() +{ + _cg.destroy(); + _iva.destroy(); +} + + +TRectype& TMovimentoPN::cg(int i) +{ + TRectype* r = (TRectype*)_cg.objptr(i); + if (r == NULL) + { + r = new TRectype(LF_RMOV); + _cg.add(r, i); + } + return *r; +} + +TRectype& TMovimentoPN::iva(int i) +{ + TRectype* r = (TRectype*)_iva.objptr(i); + if (r == NULL) + { + r = new TRectype(LF_RMOVIVA); + _iva.add(r, i); + } + return *r; +} + + +int TMovimentoPN::read_mov_rows() +{ + const TLocalisamfile* rm = lfile(LF_RMOV); + const TLocalisamfile* ri = lfile(LF_RMOVIVA); + position_rels(); + + destroy_rows(); + for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV)) + { + const int row = rm->get_int(RMV_NUMRIG) - 1; + cg(row) = rm->curr(); + } + _oldcg = cg_items(); + + for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA)) + { + const int row = ri->get_int(RMI_NUMRIG) - 1; + iva(row) = ri->curr(); + } + _oldiva = iva_items(); + + return NOERR; +} + + +int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate) +{ + int err = file()->read(op, lockop, atdate); + if (err == NOERR) err = read_mov_rows(); + return err; +} + + +int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f) +{ + if (re) + { + const bool scrivi = f->rewrite(rec) != NOERR; + if (scrivi) f->write(rec); + } + else + { + f->write(rec); + } + + return f->status(); +} + + +int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a) +{ + const long numreg = lfile()->get_long("NUMREG"); + for (int i = da; i <= a; i++) + { + f->zero(); + f->put("NUMREG", numreg); + f->put("NUMRIG", i); + if (f->read(_isequal, _lock) == NOERR) + f->remove(); + } + return f->status(); +} + + +int TMovimentoPN::registra(bool re, bool force) +{ + TLocalisamfile* m = lfile(); + + const int err = write_rec(re, m->curr(), m); + if (err != NOERR) return err; + + TLocalisamfile* rm = lfile(LF_RMOV); + TLocalisamfile* ri = lfile(LF_RMOVIVA); + + const long numreg = m->get_long("NUMREG"); + + for (int i = 0 ; i < cg_items(); i++) + { + if (!re) cg(i).put("NUMREG", numreg); + const int err = write_rec(re, cg(i), rm); + if (!force && err != NOERR) return err; + } + if (i < _oldcg) + cancella(rm, i+1, _oldcg); + _oldcg = cg_items(); + + for (i = 0 ; i < iva_items(); i++) + { + if (!re) iva(i).put("NUMREG", numreg); + const int err = write_rec(re, iva(i), ri); + if (!force && err != NOERR) return err; + } + if (i < _oldiva) + cancella(ri, i+1, _oldiva); + _oldiva = iva_items(); + + + return err; +} + + +int TMovimentoPN::write(bool force, TDate&) +{ + const TLocalisamfile& r = *lfile(); + const int annoiva = r.get_int("ANNOIVA"); + const TString16 reg(r.get("REG")); + TRegistro registro(reg, annoiva); + + if (registro.iva() != nessuna_iva) + { + const bool mista = registro.tipo_attivita() == "M"; + for (int i = 0; i < iva_items(); i++) + { + int tipoatt = 1; + if (mista) + { + const int riga = iva(i).get_int("RIGAIMP"); + if (riga) + { + const TRectype& r = cg(riga-1); + const char tipo = r.get_char("TIPOC"); + if (tipo == ' ') + { + TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO")); + TRectype conto(LF_PCON); c.read(conto); + const TIndbil ib = (TIndbil)conto.get_int("INDBIL"); + if (ib == ib_passivita || ib == ib_ricavi) + { + int ricser = conto.get_int("RICSER"); + tipoatt = (ricser == 0) ? 2 : 1; + } + } + } + } + iva(i).put("TIPOATT", tipoatt); + } + } + + _oldcg = _oldiva = 0; + int err = registra(FALSE, force); + + if (err == NOERR) + { + if (reg.not_empty()) + { + const long protiva = r.get_long("PROTIVA"); + const long uprotiva = r.get_long("UPROTIVA"); + const TDate datareg = r.get_date("DATAREG"); + registro.update(max(protiva, uprotiva), datareg); + } + } + return err; +} + + +int TMovimentoPN::rewrite(bool force, TDate&) +{ + return registra(TRUE, force); +} + + +int TMovimentoPN::remove(TDate&) +{ + TLocalisamfile* m = lfile(); + TLocalisamfile* rm = lfile(LF_RMOV); + TLocalisamfile* ri = lfile(LF_RMOVIVA); + + cancella(rm, 1, _oldcg); + cancella(ri, 1, _oldiva); + m->remove(); + _oldcg = _oldiva = 0; + return m->status(); +} + diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index edb071a58..248ccb40e 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -266,11 +266,17 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo) case 'F': // Ritenute Fiscali case 'S': // Ritenute Sociali case 'D': // IVA Detraibile - case 'N':last = 3; break; // IVA Non detraibile - case 'T': // Totale documento - case 'I':last = 6; break; // Imponibile - default :last = 0; break; // Solo contabile - } + case 'N': + last = 3; // IVA Non detraibile + break; + case 'T': // Totale documento + case 'I': + last = 7; // Imponibile + break; + default : + last = 0; // Solo contabile + break; + } TSheet_field& cg = cgs(); for (int i = 0; i < last; i++) @@ -343,14 +349,7 @@ void TPrimanota_application::cgs_pack() { const real imp = get_cgs_imp(i); if (imp == 0.0) - { del = TRUE; - /* - const TConto c(r, 6, 0x0); // Remove if import=0 and Bill not used - del = !bill_used(c); - */ - } - } if (del) rows.destroy(i, FALSE); @@ -360,6 +359,44 @@ void TPrimanota_application::cgs_pack() } +real TPrimanota_application::calcola_saldo() const +{ + TArray& rows = cgs().rows_array(); + const int max = rows.items(); + + real tdare, tavere; + for (int i = 0; i < max; i++) + { + TToken_string& r = (TToken_string&)rows[i]; + const real dare(r.get(0)); + const real avere(r.get()); + + tdare += dare; + tavere += avere; + } + + real saldo = tdare-tavere; + switch (saldo.sign()) + { + case 1: + mask().set(F_DARE, saldo.string()); + mask().reset(F_AVERE); + break; + case -1: + mask().reset(F_DARE); + saldo = -saldo; + mask().set(F_AVERE, saldo.string()); + break; + default: + mask().reset(F_DARE); + mask().reset(F_AVERE); + break; + } + + return saldo; +} + + // Handler dello sheet di contabilita' // Certified 90% bool TPrimanota_application::cg_handler(TMask_field& f, KEY k) @@ -367,22 +404,15 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k) if (k == K_ENTER) { TSheet_field& cg = app().cgs(); - bool empty = TRUE; - real saldo; - for (int i = 0; i < cg.items(); i++) - { - const real imp = app().get_cgs_imp(i); - if (empty) empty = imp == 0.0; - saldo += imp; - } - if (saldo != 0.0) + real saldo = app().calcola_saldo(); + if (saldo != ZERO) { const char* ss = saldo.string("."); return f.error_box("Il movimento e' sbilanciato di %s lire.", ss); } else - if (empty) - return f.error_box("Il movimento non contiene nessuna riga contabile!"); + if (app().get_cgs_imp(0) == ZERO) + return f.error_box("Il movimento non ha una prima riga contabile valida!"); } return TRUE; } @@ -393,17 +423,22 @@ bool TPrimanota_application::cg_notify(int r, KEY k) TSheet_field& cg = app().cgs(); TToken_string& row = cg.row(r); const char tipo = row.empty() ? ' ' : row.right(1)[0]; - - if (k == K_SPACE) - { - TMask& m = cg.sheet_mask(); - m.enable(DLG_DELREC, tipo == ' '); - } else - if (k == K_DEL) - { - if (tipo != ' ') - return error_box("La riga %d non puo' essere cancellata", r+1); - } + + switch(k) + { + case K_SPACE: + cg.sheet_mask().enable(DLG_DELREC, tipo == ' '); + break; + case K_ENTER: + app().calcola_saldo(); + break; + case K_DEL: + if (tipo != ' ') + return error_box("La riga %d non puo' essere cancellata", r+1); + break; + default: + break; + } return TRUE; } @@ -497,7 +532,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key) const real& percent = cod2IVA(f.mask().get(102)); real imposta = abs(imponibile) * percent / 100.0; imposta.ceil(); - if (imponibile.sign() < 0) imposta = -imposta; + if (imponibile < ZERO) imposta = -imposta; const real val(f.get()); if (val != imposta) @@ -506,8 +541,8 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key) { const TString16 wrong(val.string(".")); const TString16 right(imposta.string(".")); - if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'", - (const char*)wrong, (const char*)right)); + f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'", + (const char*)wrong, (const char*)right); } } } else @@ -524,6 +559,26 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key) } +real TPrimanota_application::calcola_imp() const +{ + TArray& rows = ivas().rows_array(); + const int max = rows.items(); + + real imponibili, imposte; + for (int r = 0; r < max; r++) + { + TToken_string& row = (TToken_string&)rows[r]; + imponibili += real(row.get(0)); + imposte += real(row.get(3)); + } + + mask().set(F_IMPONIBILI, imponibili.string()); + mask().set(F_IMPOSTE, imposte.string()); + + return imponibili+imposte; +} + + // Certified 50% bool TPrimanota_application::iva_notify(int r, KEY k) { @@ -589,7 +644,10 @@ bool TPrimanota_application::iva_notify(int r, KEY k) } else app().add_cgs_imp(oldposiva, imp-oldiva); - oldiva = imp; + oldiva = imp; + + app().calcola_imp(); + app().calcola_saldo(); } return TRUE; } @@ -601,13 +659,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k) { if (k != K_ENTER) return TRUE; - real imp; - for (int r = 0; r < app().ivas().items(); r++) - { - TToken_string& row = app().ivas().row(r); - imp += real(row.get(0)); // imponibile - imp += real(row.get(3)); // imposta - } + const real imp = app().calcola_imp(); const TMask& m = f.mask(); real tot(m.get(F_TOTALE)); diff --git a/cg/cg2102.h b/cg/cg2102.h index 3838fad6d..4859c6a58 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -23,119 +23,121 @@ class TPrimanota_application : public TRelation_application { - TMovimentoPN* _rel; - TLocalisamfile* _tabcom; - TLocalisamfile* _tab; - TLocalisamfile* _caus; - TLocalisamfile* _rcaus; - TLocalisamfile* _clifo; - TLocalisamfile* _pcon; - TLocalisamfile* _attiv; - TLocalisamfile* _saldo; - TLocalisamfile* _comuni; - TLocalisamfile* _occas; - TLocalisamfile* _nditte; + TMovimentoPN* _rel; + TLocalisamfile* _tabcom; + TLocalisamfile* _tab; + TLocalisamfile* _caus; + TLocalisamfile* _rcaus; + TLocalisamfile* _clifo; + TLocalisamfile* _pcon; + TLocalisamfile* _attiv; + TLocalisamfile* _saldo; + TLocalisamfile* _comuni; + TLocalisamfile* _occas; + TLocalisamfile* _nditte; - TCausale _causale; // Causale corrente - TLibro_giornale _giornale; // Libro giornale corrente - TipoIVA _iva; // Tipo di IVA corrente - - TSaldo_agg _saldi; // Saldi da aggiornare + TCausale _causale; // Causale corrente + TLibro_giornale _giornale; // Libro giornale corrente + TipoIVA _iva; // Tipo di IVA corrente + + TSaldo_agg _saldi; // Saldi da aggiornare - TMask* _msk[4]; // Maschere di query, cg, iva - long _lastreg; // Numero ultima registrazione - int _mode; // Modo maschera corrente + TMask* _msk[4]; // Maschere di query, cg, iva + long _lastreg; // Numero ultima registrazione + int _mode; // Modo maschera corrente static bool suspended_handler(TMask_field& f, KEY k); - static bool num_handler(TMask_field& f, KEY key); - static bool caus_query_handler(TMask_field& f, KEY key); - static bool caus_modify_handler(TMask_field& f, KEY key); + static bool num_handler(TMask_field& f, KEY key); + static bool caus_query_handler(TMask_field& f, KEY key); + static bool caus_modify_handler(TMask_field& f, KEY key); static bool datareg_handler(TMask_field& f, KEY key); static bool datacomp_handler(TMask_field& f, KEY key); static bool data74ter_handler(TMask_field& f, KEY key); - static bool reg_handler(TMask_field& f, KEY key); - static bool clifo_handler(TMask_field& f, KEY key); - static bool totale_handler(TMask_field& f, KEY key); - static bool ritfis_handler(TMask_field& f, KEY key); - static bool ritsoc_handler(TMask_field& f, KEY key); - static bool visval_handler(TMask_field& f, KEY key); + static bool reg_handler(TMask_field& f, KEY key); + static bool clifo_handler(TMask_field& f, KEY key); + static bool totale_handler(TMask_field& f, KEY key); + static bool ritfis_handler(TMask_field& f, KEY key); + static bool ritsoc_handler(TMask_field& f, KEY key); + static bool visval_handler(TMask_field& f, KEY key); static bool occas_code_handler(TMask_field& f, KEY key); - static bool occas_handler(TMask_field& f, KEY key); - static bool solaiva_handler(TMask_field& f, KEY key); + static bool occas_handler(TMask_field& f, KEY key); + static bool solaiva_handler(TMask_field& f, KEY key); static bool descr_handler(TMask_field& f, KEY k); static bool imponibile_handler(TMask_field& f, KEY key); - static bool codiva_handler(TMask_field& f, KEY key); - static bool imposta_handler(TMask_field& f, KEY key); + static bool codiva_handler(TMask_field& f, KEY key); + static bool imposta_handler(TMask_field& f, KEY key); static bool dareavere_handler(TMask_field& f, KEY k); static bool conto_handler(TMask_field& f, KEY key); - static bool iva_notify(int r, KEY key); - static bool iva_handler(TMask_field& f, KEY key); - static bool cg_notify(int r, KEY key); - static bool cg_handler(TMask_field& f, KEY key); + static bool iva_notify(int r, KEY key); + static bool iva_handler(TMask_field& f, KEY key); + static bool cg_notify(int r, KEY key); + static bool cg_handler(TMask_field& f, KEY key); protected: - virtual bool user_create(); - virtual bool user_destroy(); - virtual bool changing_mask(int mode); - virtual TMask* get_mask(int mode); - virtual TRelation* get_relation() const { return _rel; } - virtual void init_query_mode(TMask& m); - virtual void init_insert_mode(TMask& m); - virtual void init_modify_mode(TMask& m); - virtual const char* get_next_key(); - virtual int read(TMask& m); - virtual int write(const TMask& m); - virtual int rewrite(const TMask& m); - virtual bool remove(); + virtual bool user_create(); + virtual bool user_destroy(); + virtual bool changing_mask(int mode); + virtual TMask* get_mask(int mode); + virtual TRelation* get_relation() const { return _rel; } + virtual void init_query_mode(TMask& m); + virtual void init_insert_mode(TMask& m); + virtual void init_modify_mode(TMask& m); + virtual const char* get_next_key(); + virtual int read(TMask& m); + virtual int write(const TMask& m); + virtual int rewrite(const TMask& m); + virtual bool remove(); void genera_incasso(const char* causimm); TMask* load_mask(int n); TMask& occas_mask() { return *load_mask(3); } - - bool get_conto(int r, TConto& c) const; - void mask2rel(const TMask& m); + + bool get_conto(int r, TConto& c) const; + void mask2rel(const TMask& m); - TipoIVA iva() const { return _iva; } + TipoIVA iva() const { return _iva; } TMask& TPrimanota_application::mask() const; - void fill_sheet(TMask& m) const; - void init_mask(TMask& m); + void fill_sheet(TMask& m) const; + void init_mask(TMask& m); - TSheet_field& cgs() const; - TSheet_field& ivas() const; + TSheet_field& cgs() const; + TSheet_field& ivas() const; - static real imp2sez(const real& importo); - static int bill2pos(const TConto& conto, char tipo); - static TipoIVA reg2IVA(const char* registro, int anno); - static TipoIVA cau2IVA(const char* causale, int anno); - static int type2pos(char tipo); - static const real& cod2IVA(const char* codiva); + static real imp2sez(const real& importo); + static int bill2pos(const TConto& conto, char tipo); + static TipoIVA reg2IVA(const char* registro, int anno); + static TipoIVA cau2IVA(const char* causale, int anno); + static int type2pos(char tipo); + static const real& cod2IVA(const char* codiva); static real scorpora(real& imponibile, const real& percentuale); - static int date2esc(const TDate& d, int* prev = NULL); - static bool detraibile(int tipodet); + static int date2esc(const TDate& d, int* prev = NULL); + static bool detraibile(int tipodet); - bool bill_used(const TConto& conto) const; - int bill2contr(const TConto& c, char sezione) const; - - bool read_caus(const char* cod, int year); + bool bill_used(const TConto& conto) const; + int bill2contr(const TConto& c, char sezione) const; + + bool read_caus(const char* cod, int year); TCausale& causale() { return _causale; } TLibro_giornale& giornale() { return _giornale; } - void set_cgs_imp(int n, const real& importo); - real get_cgs_imp(int n); - void add_cgs_imp(int n, const real& importo); - void cgs_pack(); + void set_cgs_imp(int n, const real& importo); + real get_cgs_imp(int n); + void add_cgs_imp(int n, const real& importo); + void cgs_pack(); + real calcola_saldo() const; + real calcola_imp() const; - void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc); - int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo); - void disable_cgs_cells(int n, char tipo); + void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc); + int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo); + void disable_cgs_cells(int n, char tipo); void add_cgs_tot(TMask& m); - void add_cgs_rit(bool fisc); + void add_cgs_rit(bool fisc); public: - TPrimanota_application(); + TPrimanota_application(); }; #endif diff --git a/cg/cg21cg.uml b/cg/cg21cg.uml index ec41c33cd..d83a7cf7a 100755 --- a/cg/cg21cg.uml +++ b/cg/cg21cg.uml @@ -1,265 +1,342 @@ -PAGE "RIGA PRIMA NOTA" -1 -1 67 17 - -GROUPBOX DLG_NULL 66 3 -BEGIN - PROMPT 1 1 "Descrizione" -END - -STRING 108 5 -BEGIN - PROMPT 2 2 "" - FLAGS "U" - USE %DPN - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT 108 CODTAB - OUTPUT 109 S0 - CHECKTYPE NORMAL -END - -STRING 109 50 -BEGIN - PROMPT 14 2 "" - FIELD DESCR -END - -GROUPBOX DLG_NULL 66 5 -BEGIN - PROMPT 1 4 "Conto principale" -END - -NUMBER 101 14 -BEGIN - PROMPT 2 5 "Dare " - FLAGS "RUV" - PICTURE "." -END - -NUMBER 102 14 -BEGIN - PROMPT 44 5 "Avere " - FLAGS "RUV" - PICTURE "." -END - -LIST 103 1 12 -BEGIN - PROMPT 2 6 "Tipo " - FLAGS "U" - ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306 - ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306 - ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206 -END - -NUMBER 104 3 -BEGIN - PROMPT 20 6 "Gruppo " -END - -NUMBER 105 3 -BEGIN - PROMPT 32 6 "Conto " - FIELD LF_PCON->CONTO - USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") - INPUT GRUPPO 104 - INPUT CONTO 105 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Descrizione@50" DESCR - OUTPUT 103 TMCF - OUTPUT 104 GRUPPO - OUTPUT 105 CONTO - OUTPUT 107 DESCR - ADD RUN CG0 -0 - CHECKTYPE NORMAL - WARNING "Conto inesistente o mancante sulla riga contabile" -END - -NUMBER 106 6 -BEGIN - PROMPT 45 6 "Sottoconto " - FIELD LF_PCON->SOTTOCONTO - USE LF_PCON SELECT SOTTOCONTO!="" - INPUT GRUPPO 104 - INPUT CONTO 105 - INPUT SOTTOCONTO 106 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - COPY OUTPUT 105 - OUTPUT 106 SOTTOCONTO - ADD RUN cg0 -0 - CHECKTYPE NORMAL - VALIDATE REQIF_FUNC 2 101 102 - WARNING "Sottoconto inesistente o mancante sulla riga contabile" -END - -NUMBER 206 6 -BEGIN - PROMPT 45 6 "Cliente " - FIELD LF_PCON->SOTTOCONTO - USE LF_CLIFO - INPUT TIPOCF "C" - INPUT CODCF 206 - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale Cliente@50" RAGSOC - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - OUTPUT 206 CODCF - OUTPUT 107 RAGSOC - MESSAGE COPY,106 - ADD RUN cg0 -1 - FLAGS "G" - CHECKTYPE NORMAL - WARNING "Cliente inesistente sulla riga contabile" -END - -NUMBER 306 6 -BEGIN - PROMPT 45 6 "Fornitore " - FIELD LF_PCON->SOTTOCONTO - USE LF_CLIFO - INPUT TIPOCF "F" - INPUT CODCF 306 - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale Fornitore@50" RAGSOC - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - OUTPUT 306 CODCF - OUTPUT 107 RAGSOC - MESSAGE COPY,106 - ADD RUN cg0 -1 - MESSAGE COPY,106 - FLAGS "G" - CHECKTYPE NORMAL - WARNING "Fornitore inesistente sulla riga contabile" -END - - -STRING 107 50 -BEGIN - PROMPT 2 7 "Descrizione " - FIELD LF_PCON->SOTTOCONTO - FLAGS "D" -END - -GROUPBOX DLG_NULL 66 4 -BEGIN - PROMPT 1 9 "Contropartita" -END - -LIST 110 1 12 -BEGIN - PROMPT 2 10 "Tipo " - FLAGS "U" - ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313 - ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313 - ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213 -END - -NUMBER 111 3 -BEGIN - PROMPT 20 10 "Gruppo " -END - -NUMBER 112 3 -BEGIN - PROMPT 32 10 "Conto " - FIELD LF_PCON->CONTO - USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") - INPUT GRUPPO 111 - INPUT CONTO 112 - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Descrizione@50" DESCR - OUTPUT 110 TMCF - OUTPUT 111 GRUPPO - OUTPUT 112 CONTO - OUTPUT 114 DESCR - ADD RUN CG0 -0 - CHECKTYPE NORMAL -END - -NUMBER 113 6 -BEGIN - PROMPT 45 10 "Sottoconto " - FIELD LF_PCON->SOTTOCONTO - COPY USE 106 - COPY INPUT 112 - INPUT SOTTOCONTO 113 - COPY DISPLAY 106 - COPY OUTPUT 112 - OUTPUT 113 SOTTOCONTO - CHECKTYPE NORMAL -END - -NUMBER 213 6 -BEGIN - PROMPT 45 10 "Cliente " - FIELD LF_PCON->SOTTOCONTO - USE LF_CLIFO - INPUT TIPOCF "C" - INPUT CODCF 213 - COPY DISPLAY 206 - OUTPUT 213 CODCF - OUTPUT 114 RAGSOC - MESSAGE COPY,113 - CHECKTYPE NORMAL -END - -NUMBER 313 6 -BEGIN - PROMPT 45 10 "Fornitore " - FIELD LF_PCON->SOTTOCONTO - USE LF_CLIFO - INPUT TIPOCF "F" - INPUT CODCF 313 - COPY DISPLAY 306 - COPY OUTPUT 213 - OUTPUT 313 CODCF - MESSAGE COPY,113 - CHECKTYPE NORMAL -END - -STRING 114 50 -BEGIN - FIELD LF_PCON->DESCR - PROMPT 2 11 "Descrizione " - FLAGS "D" -END - -LIST 115 20 -BEGIN - PROMPT 2 13 "Tipo riga " - ITEM " |Sola contabilita'" - ITEM "C|Gestione saldaconto" - ITEM "D|IVA detraibile" - ITEM "F|Ritenute fiscali" - ITEM "I|Riga di IVA" - ITEM "N|IVA non detraibile" - ITEM "S|Ritenute sociali" - ITEM "T|Totale documento" - FLAGS "D" -END - - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -13 -1 "" -END - -BUTTON DLG_CANCEL 9 2 -BEGIN - PROMPT -23 -1 "" -END - -BUTTON DLG_DELREC 9 2 -BEGIN - PROMPT -33 -1 "Elimina" -END - -ENDPAGE - -ENDMASK - +PAGE "RIGA PRIMA NOTA" -1 -1 67 16 + +GROUPBOX DLG_NULL 66 3 +BEGIN + PROMPT 1 1 "Descrizione" +END + +STRING 108 5 +BEGIN + PROMPT 2 2 "" + FLAGS "U" + USE %DPN + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT 108 CODTAB + OUTPUT 109 S0 + CHECKTYPE NORMAL +END + +STRING 109 50 +BEGIN + PROMPT 14 2 "" + FIELD DESCR +END + +GROUPBOX DLG_NULL 66 5 +BEGIN + PROMPT 1 4 "Conto principale" +END + +NUMBER 101 14 +BEGIN + PROMPT 2 5 "Dare " + FLAGS "RUV" + PICTURE "." +END + +NUMBER 102 14 +BEGIN + PROMPT 44 5 "Avere " + FLAGS "RUV" + PICTURE "." +END + +LIST 103 1 12 +BEGIN + PROMPT 2 6 "Tipo " + FLAGS "U" + ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307 + ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307 + ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207 +END + +NUMBER 104 3 +BEGIN + PROMPT 20 6 "Gruppo " +END + +NUMBER 105 3 +BEGIN + PROMPT 32 6 "Conto " + FIELD LF_PCON->CONTO + USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") + INPUT GRUPPO 104 + INPUT CONTO 105 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT 103 TMCF + OUTPUT 104 GRUPPO + OUTPUT 105 CONTO + OUTPUT 107 DESCR + ADD RUN CG0 -0 + CHECKTYPE NORMAL + WARNING "Conto inesistente o mancante sulla riga contabile" +END + +NUMBER 106 6 +BEGIN + PROMPT 45 6 "Sottoconto " + FIELD LF_PCON->SOTTOCONTO + USE LF_PCON SELECT SOTTOCONTO!="" + INPUT GRUPPO 104 + INPUT CONTO 105 + INPUT SOTTOCONTO 106 + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT 106 SOTTOCONTO + OUTPUT 104 GRUPPO + OUTPUT 105 CONTO + OUTPUT 107 DESCR + ADD RUN cg0 -0 + CHECKTYPE NORMAL + VALIDATE REQIF_FUNC 2 101 102 + WARNING "Sottoconto inesistente o mancante sulla riga contabile" +END + +NUMBER 206 6 +BEGIN + PROMPT 45 6 "Cliente " + FIELD LF_PCON->SOTTOCONTO + USE LF_CLIFO + INPUT TIPOCF "C" + INPUT CODCF 206 + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale Cliente@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + OUTPUT 206 CODCF + OUTPUT 307 RAGSOC + MESSAGE COPY,106 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Cliente inesistente sulla riga contabile" +END + +NUMBER 306 6 +BEGIN + PROMPT 45 6 "Fornitore " + FIELD LF_PCON->SOTTOCONTO + USE LF_CLIFO + INPUT TIPOCF "F" + INPUT CODCF 306 + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale Fornitore@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + OUTPUT 306 CODCF + OUTPUT 307 RAGSOC + MESSAGE COPY,106 + ADD RUN cg0 -1 + MESSAGE COPY,106 + CHECKTYPE NORMAL + WARNING "Fornitore inesistente sulla riga contabile" +END + +STRING 107 50 +BEGIN + PROMPT 2 7 "Descriz. " + FIELD LF_PCON->DESCR + USE LF_PCON KEY 2 + INPUT DESCR 107 + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT 106 + CHECKTYPE NORMAL + WARNING "Sottoconto inesistente o mancante sulla riga contabile" + ADD RUN cg0 -0 +END + +STRING 207 50 +BEGIN + PROMPT 2 7 "Cliente " + FIELD LF_CLIFO->RAGSOC + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC 207 + DISPLAY "Ragione Sociale Cliente@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Codice" CODCF + COPY OUTPUT 206 + MESSAGE COPY,107 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Cliente inesistente sulla riga contabile" +END + +STRING 307 50 +BEGIN + PROMPT 2 7 "Fornitore " + FIELD LF_PCON->SOTTOCONTO + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC 307 + DISPLAY "Ragione Sociale Fornitore@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Codice" CODCF + COPY OUTPUT 306 + MESSAGE COPY,107 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Fornitore inesistente sulla riga contabile" +END + +GROUPBOX DLG_NULL 66 4 +BEGIN + PROMPT 1 9 "Contropartita" +END + +LIST 110 1 12 +BEGIN + PROMPT 2 10 "Tipo " + FLAGS "U" + ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314 + ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314 + ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214 +END + +NUMBER 111 3 +BEGIN + PROMPT 20 10 "Gruppo " +END + +NUMBER 112 3 +BEGIN + PROMPT 32 10 "Conto " + FIELD LF_PCON->CONTO + COPY USE 105 + INPUT GRUPPO 111 + INPUT CONTO 112 + COPY DISPLAY 105 + OUTPUT 110 TMCF + OUTPUT 111 GRUPPO + OUTPUT 112 CONTO + OUTPUT 114 DESCR + ADD RUN CG0 -0 + CHECKTYPE NORMAL +END + +NUMBER 113 6 +BEGIN + PROMPT 45 10 "Sottoconto " + FIELD LF_PCON->SOTTOCONTO + COPY USE 106 + COPY INPUT 112 + INPUT SOTTOCONTO 113 + COPY DISPLAY 106 + OUTPUT 113 SOTTOCONTO + OUTPUT 111 GRUPPO + OUTPUT 112 CONTO + OUTPUT 114 DESCR + CHECKTYPE NORMAL +END + +NUMBER 213 6 +BEGIN + PROMPT 45 10 "Cliente " + FIELD LF_CLIFO->CODCF + COPY USE 206 + INPUT TIPOCF "C" + INPUT CODCF 213 + COPY DISPLAY 206 + OUTPUT 213 CODCF + OUTPUT 214 RAGSOC + MESSAGE COPY,113 + CHECKTYPE NORMAL +END + +NUMBER 313 6 +BEGIN + PROMPT 45 10 "Fornitore " + FIELD LF_CLIFO->CODCF + COPY USE 306 + INPUT TIPOCF "F" + INPUT CODCF 313 + COPY DISPLAY 306 + OUTPUT 313 CODCF + OUTPUT 314 RAGSOC + MESSAGE COPY,113 + CHECKTYPE NORMAL +END + +STRING 114 50 +BEGIN + PROMPT 2 11 "Descriz. " + FIELD LF_PCON->DESCR + COPY USE 107 + INPUT DESCR 114 + COPY DISPLAY 107 + COPY OUTPUT 113 + ADD RUN cg0 -0 + WARNING "Conto inesistente sulla riga contabile" +END + +STRING 214 50 +BEGIN + PROMPT 2 11 "Cliente " + FIELD LF_CLIFO->RAGSOC + COPY USE 207 + INPUT TIPOCF "C" + INPUT RAGSOC 214 + COPY DISPLAY 207 + COPY OUTPUT 213 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Cliente inesistente sulla riga contabile" +END + +STRING 314 50 +BEGIN + PROMPT 2 11 "Fornitore " + FIELD LF_CLIFO->RAGSOC + COPY USE 307 + INPUT TIPOCF "F" + INPUT RAGSOC 314 + COPY DISPLAY 307 + COPY OUTPUT 313 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Fornitore inesistente sulla riga contabile" +END + +LIST 115 20 +BEGIN + PROMPT 2 13 "Tipo riga " + ITEM " |Sola contabilita'" + ITEM "C|Gestione saldaconto" + ITEM "D|IVA detraibile" + ITEM "F|Ritenute fiscali" + ITEM "I|Riga di IVA" + ITEM "N|IVA non detraibile" + ITEM "S|Ritenute sociali" + ITEM "T|Totale documento" + FLAGS "D" +END + + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_CANCEL 9 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_DELREC 9 2 +BEGIN + PROMPT -33 -1 "Elimina" +END + +ENDPAGE + +ENDMASK + diff --git a/cg/cg21iva.uml b/cg/cg21iva.uml index a90f8caf3..7d6960b8b 100755 --- a/cg/cg21iva.uml +++ b/cg/cg21iva.uml @@ -10,11 +10,11 @@ BEGIN PROMPT 2 2 "Tipo " FIELD TMCF ITEM " |Conto" - MESSAGE SHOW,109|HIDE,209|HIDE,309 + MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310 ITEM "C|Cliente" - MESSAGE SHOW,209|HIDE,109|HIDE,309 + MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310 ITEM "F|Fornitore" - MESSAGE SHOW,309|HIDE,109|HIDE,209 + MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210 FLAGS "U" END @@ -58,10 +58,10 @@ BEGIN DISPLAY "Conto" CONTO DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Descrizione@50" DESCR + OUTPUT 109 SOTTOCONTO OUTPUT 105 TIPOSPRIC OUTPUT 107 GRUPPO OUTPUT 108 CONTO - OUTPUT 109 SOTTOCONTO OUTPUT 110 DESCR ADD RUN cg0 -0 CHECKTYPE NORMAL @@ -80,7 +80,7 @@ BEGIN DISPLAY "Gruppo" GRUPPO DISPLAY "Conto" CONTO OUTPUT 209 CODCF - OUTPUT 110 RAGSOC + OUTPUT 210 RAGSOC CHECKTYPE NORMAL ADD RUN cg0 -1 FLAGS "G" @@ -98,7 +98,7 @@ BEGIN OUTPUT 107 GRUPPO OUTPUT 108 CONTO OUTPUT 309 CODCF - OUTPUT 110 RAGSOC + OUTPUT 310 RAGSOC CHECKTYPE NORMAL ADD RUN cg0 -1 FLAGS "G" @@ -107,10 +107,58 @@ END STRING 110 50 BEGIN - PROMPT 2 3 "Descrizione " - FLAGS "D" + PROMPT 2 3 "Descriz. " + FIELD LF_PCON->DESCR + USE LF_PCON KEY 2 + INPUT DESCR 107 + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT 109 + CHECKTYPE NORMAL + WARNING "Sottoconto inesistente o mancante sulla riga IVA" + ADD RUN cg0 -0 END +STRING 210 50 +BEGIN + PROMPT 2 3 "Cliente " + FIELD LF_CLIFO->RAGSOC + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC 210 + DISPLAY "Ragione Sociale Cliente@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Codice" CODCF + COPY OUTPUT 209 + MESSAGE COPY,110 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Cliente inesistente sulla riga IVA" +END + +STRING 310 50 +BEGIN + PROMPT 2 3 "Fornitore " + FIELD LF_PCON->SOTTOCONTO + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC 310 + DISPLAY "Ragione Sociale Fornitore@50" RAGSOC + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Codice" CODCF + COPY OUTPUT 309 + MESSAGE COPY,110 + ADD RUN cg0 -1 + CHECKTYPE NORMAL + WARNING "Fornitore inesistente sulla riga IVA" +END + + + GROUPBOX DLG_NULL 67 5 BEGIN PROMPT 1 5 "Imposta" diff --git a/cg/cg3.cpp b/cg/cg3.cpp index ae0364ff7..445f7c893 100755 --- a/cg/cg3.cpp +++ b/cg/cg3.cpp @@ -1,26 +1,27 @@ -#include -#include - -#include "cg3.h" - -#define usage "Error - usage : %s -{0|1|2|3|4|5}" - -int main(int argc,char** argv) -{ - int rt = 0 ; - int s = atoi(argv[1]+1) ; - - switch (s) - { - case 0: rt = cg3100(argc,argv) ; break; - case 1: rt = cg3200(argc,argv) ; break; - // case 2: rt = cg3400(argc,argv) ; break; - case 3: rt = cg3500(argc,argv) ; break; - default: error_box(usage, argv[0]) ; break; - } - return rt; -} - - - - +#include +#include + +#include "cg3.h" + +#define usage "Error - usage : %s -{0|1|2|3|4|5}" + +int main(int argc,char** argv) +{ + int rt = 0 ; + int s = atoi(argv[1]+1) ; + + switch (s) + { + case 0: rt = cg3100(argc,argv) ; break; + case 1: rt = cg3200(argc,argv) ; break; + case 2: rt = cg3300(argc,argv) ; break; + case 3: rt = cg3400(argc,argv) ; break; + case 4: rt = cg3500(argc,argv) ; break; + default: error_box(usage, argv[0]) ; break; + } + return rt; +} + + + + diff --git a/cg/cg3.h b/cg/cg3.h index 703e572c8..83322e80b 100755 --- a/cg/cg3.h +++ b/cg/cg3.h @@ -1,19 +1,19 @@ -#ifndef __CG3_H -#define __CG3_H - -#ifdef MAIN -#define extern -#endif - -#ifdef MAIN -#undef extern -#endif - -int cg3100(int argc, char* argv[]); -int cg3200(int argc, char* argv[]); -int cg3300(int argc, char* argv[]); -//int cg3400(int argc, char* argv[]); -int cg3500(int argc, char* argv[]); - -#endif // __CG3_H - +#ifndef __CG3_H +#define __CG3_H + +#ifdef MAIN +#define extern +#endif + +#ifdef MAIN +#undef extern +#endif + +int cg3100(int argc, char* argv[]); +int cg3200(int argc, char* argv[]); +int cg3300(int argc, char* argv[]); +int cg3400(int argc, char* argv[]); +int cg3500(int argc, char* argv[]); + +#endif // __CG3_H +