From 7e9f0d51c5531177b6ec5fd25860b6c83c2e4346 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 25 Jan 2013 08:42:54 +0000 Subject: [PATCH] Correzioni varie a nuovo saldaconto (gestione nac e pagamenti con segno inverso) Aggiunto campo NUMDOCEXT in prima nota git-svn-id: svn://10.65.10.50/branches/R_10_00@22787 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0700a.uml | 2 + cg/cg2100.cpp | 3 +- cg/cg2100.h | 1 + cg/cg2100b.uml | 20 +- cg/cg2100c.uml | 1720 ++++++++++++++++++++++++------------------------ cg/cg2100o.uml | 2 + cg/cg2101.cpp | 23 +- cg/cg2102.cpp | 2 +- cg/cg2102.h | 660 +++++++++---------- cg/cg2107.cpp | 97 ++- cg/cg2107.h | 2 + cg/cg3600.cpp | 54 +- cg/f23.dir | 2 +- cg/f23.trr | 3 +- 14 files changed, 1313 insertions(+), 1278 deletions(-) diff --git a/cg/cg0700a.uml b/cg/cg0700a.uml index 802d72d77..210237c0b 100755 --- a/cg/cg0700a.uml +++ b/cg/cg0700a.uml @@ -117,6 +117,7 @@ BEGIN OUTPUT O_DENCOM DENCOM OUTPUT O_CAP CAPCOM CHECKTYPE NORMAL + ADD RUN ba4 -0 END NUMBER O_CAP 5 @@ -136,6 +137,7 @@ BEGIN DISPLAY "Codice@10" COM COPY OUTPUT O_COMUNE CHECKTYPE NORMAL + ADD RUN ba4 -0 END GROUPBOX DLG_NULL 71 4 diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 811757a93..6c07df154 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -1381,8 +1381,7 @@ int TPrimanota_application::write(const TMask& m) causauto = causale().causale_collegata(); if (causauto.full()) { - TCausale c(causauto); - + TCausale c(causauto); if ((!gestione_saldaconto() || c.tipomov() == 0) && c.iva() == nessuna_iva) tipauto = causauto.full() ? 1 : 0; } diff --git a/cg/cg2100.h b/cg/cg2100.h index 5d39181a0..63b029eef 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -18,6 +18,7 @@ #define F_ANNOES 115 #define F_DATACOMP 116 #define F_ANNOIVA 117 +#define F_NUMDOCEXT 130 #define F_CLIFO 128 #define F_CLIENTE 151 diff --git a/cg/cg2100b.uml b/cg/cg2100b.uml index 18096e73e..855616b5c 100755 --- a/cg/cg2100b.uml +++ b/cg/cg2100b.uml @@ -47,7 +47,7 @@ END STRING F_CODCAUS 3 BEGIN - PROMPT 1 5 "Causale " + PROMPT 1 4 "Causale " FLAGS "UZ" FIELD CODCAUS USE LF_CAUSALI @@ -66,7 +66,7 @@ END STRING F_DESCRCAUS 50 BEGIN - PROMPT 25 5 "" + PROMPT 25 4 "" USE LF_CAUSALI KEY 2 INPUT DESCR F_DESCRCAUS DISPLAY "Descrizione@50" DESCR @@ -77,7 +77,7 @@ END LIST F_PROVVISORIO 1 24 BEGIN - PROMPT 1 6 "Movimento provvisorio " + PROMPT 1 5 "Movimento provvisorio " FIELD PROVVIS ITEM " |No (movimento normale)" ITEM "P|Si (cancellabile)" @@ -86,7 +86,7 @@ END STRING F_TIPODOC 2 BEGIN - PROMPT 60 6 "Tipo documento " + PROMPT 60 5 "Tipo documento " FIELD TIPODOC FLAGS "DG" MESSAGE COPY,K_TIPODOC @@ -94,7 +94,7 @@ END DATE F_DATADOC BEGIN - PROMPT 1 7 "Data del documento " + PROMPT 1 6 "Data del documento " FIELD DATADOC WARNING "Specificare una data del documento non superiore a quella dell'operazione" VALIDATE DATE_CMP_FUNC <= F_DATAREG @@ -103,7 +103,7 @@ END STRING F_NUMDOC 7 BEGIN - PROMPT 50 7 "Documento n. " + PROMPT 50 6 "Documento n. " FIELD NUMDOC FLAGS "U" WARNING "La causale impone di specificare il numero documento" @@ -112,7 +112,13 @@ END BUTTON F_LINKDOC 3 1 BEGIN - PROMPT 73 7 "Doc." + PROMPT 73 6 "Doc." +END + +STRING F_NUMDOCEXT 50 +BEGIN + PROMPT 1 7 "Numero documento esteso " + FIELD NUMDOCEXT END NUMBER F_ANNOIVA 4 diff --git a/cg/cg2100c.uml b/cg/cg2100c.uml index 6edff7bf1..44d5a6064 100755 --- a/cg/cg2100c.uml +++ b/cg/cg2100c.uml @@ -1,858 +1,864 @@ -#include "cg2100.h" -#include "cg21sld.h" - -TOOLBAR "topbar" 0 0 0 2 -#include -ENDPAGE - -PAGE "Testata" -1 -1 77 20 - -BOOLEAN F_REGST -BEGIN - FIELD REGST - FLAGS "H" -END - -BOOLEAN F_STAMPATO -BEGIN - FIELD STAMPATO - FLAGS "H" -END - -GROUPBOX DLG_NULL 78 6 -BEGIN - PROMPT 1 0 "@BMovimento IVA" -END - -NUMBER F_NUMREG 7 -BEGIN - PROMPT 56 1 "Operazione n. " - FIELD NUMREG - FLAGS "DGR" - KEY 1 - MESSAGE COPY,H_NUMREG -END - -DATE F_DATAREG -BEGIN - PROMPT 2 1 "Data operazione " - FIELD DATAREG - MESSAGE COPY,H_DATAREG|COPY,F_ANNOIVA,7,10 - CHECKTYPE REQUIRED -END - -NUMBER F_ANNOIVA 4 -BEGIN - PROMPT 31 1 "Anno IVA " - FIELD ANNOIVA - FLAGS "D" -END - -DATE F_DATACOMP -BEGIN - PROMPT 2 2 "Data competenza " - FIELD DATACOMP - FLAGS "G" -END - -NUMBER F_ANNOES 4 -BEGIN - PROMPT 31 2 "Codice esercizio " - FIELD ANNOES - FLAGS "DGZ" - MESSAGE COPY,H_ANNOES -END - -STRING F_CODREG 3 -BEGIN - PROMPT 56 2 "Registro IVA " - FLAGS "DUZ" - FIELD REG -END - -STRING F_CODCAUS 3 -BEGIN - PROMPT 2 3 "Causale " - FLAGS "UZ" - FIELD CODCAUS - USE LF_CAUSALI SELECT REG!="" - INPUT CODCAUS F_CODCAUS - DISPLAY "Codice" CODCAUS - DISPLAY "Descrizione@50" DESCR - DISPLAY "Tipo" TIPODOC - DISPLAY "Registro" REG - 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 3 "" - USE LF_CAUSALI KEY 2 SELECT REG!="" - INPUT DESCR F_DESCRCAUS - DISPLAY "Descrizione@50" DESCR - DISPLAY "Codice" CODCAUS - DISPLAY "Tipo" TIPODOC - DISPLAY "Registro" REG - COPY OUTPUT F_CODCAUS - MESSAGE COPY,H_DESCRCAUS - CHECKTYPE REQUIRED - ADD RUN cg0 -4 -END - -DATE F_DATADOC -BEGIN - PROMPT 2 4 "Data documento " - FIELD DATADOC - WARNING "Inserire una data documento non superiore alla data dell'operazione" - VALIDATE DATE_CMP_FUNC <= F_DATAREG -END - -STRING F_TIPODOC 2 -BEGIN - PROMPT 31 4 "Tipo documento " - FIELD TIPODOC - FLAGS "D" -END - -STRING F_NUMDOC 7 -BEGIN - PROMPT 50 4 "Documento n. " - FIELD NUMDOC - FLAGS "U" - WARNING "La causale o il saldaconto richiedono il numero documento" -END - -BUTTON F_LINKDOC 3 1 -BEGIN - PROMPT 73 4 "Doc." -END - -LIST F_SOLAIVA 1 3 -BEGIN - PROMPT 1 6 "Movimento di sola IVA " - ITEM " |No" - ITEM "X|Si" -END - -LIST F_PROVVISORIO 1 22 -BEGIN - PROMPT 31 6 "Movimento provvisorio " - FIELD PROVVIS - ITEM " |No (movimento normale)" - ITEM "P|Si (cancellabile)" - ITEM "N|Si (Non cancellabile)" - ITEM "C|Cespiti" - FLAGS "DG" -END - -STRING F_DESCAGG 5 6 -BEGIN - PROMPT 1 7 "Descrizione " - FLAGS "UZ" - 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 7 "" - FIELD DESCR - USE %DPN KEY 2 - INPUT S0 F_DESCR - DISPLAY "Descrizione@60" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_DESCAGG -END - -NUMBER F_PROTIVA 6 -BEGIN - PROMPT 1 8 "Protocollo IVA " - FIELD PROTIVA -END - -NUMBER F_RIEPILOGO 6 -BEGIN - PROMPT 25 8 "Riepilogo al n." - FIELD UPROTIVA - NUM_EXPR {(#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)} - WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)" -END - -LIST F_DIFFERITA 1 19 -BEGIN - PROMPT 48 8 "Liquid. " - ITEM " |periodo in corso" - ITEM "X|periodo precedente" -END - -NUMBER F_CLIENTE 6 -BEGIN - PROMPT 1 9 "Cliente " - FIELD CODCF - GROUP 1 - USE LF_CLIFO KEY 1 - INPUT TIPOCF "C" - INPUT CODCF F_CLIENTE - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice Fiscale@16" COFI - OUTPUT F_CLIENTE CODCF - OUTPUT F_RAGSOCCLIENTE RAGSOC - OUTPUT F_STATOPAIV STATOPAIV - OUTPUT F_PIVACLIENTE PAIV - OUTPUT F_COFICLIENTE COFI - OUTPUT F_RICALTCLIENTE RICALT - OUTPUT F_CLIFO TIPOCF - MESSAGE COPY,F_FORNITORE - CHECKTYPE REQUIRED - WARNING "Cliente assente" - ADD RUN cg0 -1 C -END - -NUMBER F_FORNITORE 6 -BEGIN - PROMPT 1 9 "Fornitore " - FIELD CODCF - GROUP 2 - USE LF_CLIFO KEY 1 - INPUT TIPOCF "F" - INPUT CODCF F_FORNITORE - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice Fiscale@16" COFI - OUTPUT F_FORNITORE CODCF - OUTPUT F_RAGSOCFORNITORE RAGSOC - OUTPUT F_STATOPAIV STATOPAIV - OUTPUT F_PIVAFORNITORE PAIV - OUTPUT F_COFIFORNITORE COFI - OUTPUT F_RICALTFORNITORE RICALT - OUTPUT F_CLIFO TIPOCF - MESSAGE COPY,F_CLIENTE - CHECKTYPE REQUIRED - WARNING "Fornitore assente" - ADD RUN cg0 -1 F -END - -STRING F_RAGSOCFORNITORE 50 -BEGIN - PROMPT 25 9 "" - GROUP 2 - USE LF_CLIFO KEY 2 - INPUT TIPOCF "F" - INPUT RAGSOC F_RAGSOCFORNITORE - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice Fiscale@16" COFI - COPY OUTPUT F_FORNITORE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 F -END - -STRING F_RAGSOCCLIENTE 50 -BEGIN - PROMPT 25 9 "" - GROUP 1 - USE LF_CLIFO KEY 2 - INPUT TIPOCF "C" - INPUT RAGSOC F_RAGSOCCLIENTE - COPY DISPLAY F_RAGSOCFORNITORE - COPY OUTPUT F_CLIENTE - CHECKTYPE REQUIRED - ADD RUN cg0 -1 C -END - -STRING F_COFICLIENTE 16 -BEGIN - PROMPT 1 10 "C.F. " - GROUP 1 - USE LF_CLIFO KEY 4 - INPUT TIPOCF "C" - INPUT COFI F_COFICLIENTE - DISPLAY "Codice fiscale@16" COFI - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - COPY OUTPUT F_CLIENTE - CHECKTYPE NORMAL - ADD RUN cg0 -1 C -END - -STRING F_COFIFORNITORE 16 -BEGIN - PROMPT 1 10 "C.F. " - GROUP 2 - USE LF_CLIFO KEY 4 - INPUT TIPOCF "F" - INPUT COFI F_COFIFORNITORE - COPY DISPLAY F_COFICLIENTE - COPY OUTPUT F_FORNITORE - CHECKTYPE NORMAL - ADD RUN cg0 -1 F -END - -STRING F_PIVACLIENTE 12 -BEGIN - PROMPT 26 10 "P.I. " - 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 - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Codice Fiscale@16" COFI - COPY OUTPUT F_CLIENTE - CHECKTYPE NORMAL - ADD RUN cg0 -1 C -END - -STRING F_PIVAFORNITORE 12 -BEGIN - PROMPT 26 10 "P.I. " - 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 F -END - -STRING F_STATOPAIV 2 -BEGIN - PROMPT 46 10 "" - FLAGS "U" - USE %SCE - INPUT CODTAB F_STATOPAIV - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_STATOPAIV CODTAB - CHECKTYPE NORMAL -END - -STRING F_RICALTCLIENTE 30 18 -BEGIN - PROMPT 52 10 "Alt. " - USE LF_CLIFO KEY 6 - INPUT TIPOCF "C" - INPUT RICALT F_RICALTCLIENTE - DISPLAY "Codice alternativo@30" RICALT - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice Fiscale@16" COFI - COPY OUTPUT F_CLIENTE - CHECKTYPE NORMAL - ADD RUN cg0 -1 C - GROUP 1 -END - -STRING F_RICALTFORNITORE 30 18 -BEGIN - PROMPT 52 10 "Alt. " - USE LF_CLIFO KEY 6 - INPUT TIPOCF "F" - INPUT RICALT F_RICALTFORNITORE - DISPLAY "Codice alternativo@30" RICALT - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Sospeso@C" SOSPESO - DISPLAY "Partita IVA@12" PAIV - DISPLAY "Codice Fiscale@16" COFI - COPY OUTPUT F_FORNITORE - CHECKTYPE NORMAL - ADD RUN cg0 -1 F - GROUP 2 -END - -BUTTON F_OCCASEDIT 56 -BEGIN - PROMPT 1 10 "Dati anagrafici del cliente o fornitore occasionale" - FLAGS "H" -END - -STRING F_CODPAG 4 -BEGIN - PROMPT 1 11 "Codice Pagamento " - FIELD CODPAG - FLAGS "U#" - USE %CPG - INPUT CODTAB F_CODPAG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT F_CODPAG CODTAB - OUTPUT F_DESPAG S0 - CHECKTYPE NORMAL - ADD RUN ba3 -6 - WARNING "Codice pagamento assente" -END - -STRING F_DESPAG 50 -BEGIN - PROMPT 25 11 "" - USE %CPG KEY 2 - INPUT S0 F_DESPAG - DISPLAY "Descrizione@60" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT F_CODPAG - ADD RUN ba3 -6 -END - -// Campi per Invio dati rilevanti (FE) - -LIST F_CLIFO 1 10 -BEGIN - PROMPT 1 12 "Tipo " - ITEM "|Conto" - ITEM "C|Cliente" - ITEM "F|Fornitore" - FIELD TIPO - FLAGS "H" -END - -LIST FE_MODPAG 1 16 -BEGIN - PROMPT 1 12 "Tipo " - ITEM "1|Non frazionato" - MESSAGE HIDE,FE_CONTRATTO|RESET,FE_CONTRATTO|SHOW,FE_DATARETT|SHOW,FE_NUMRETT - ITEM "2|Frazionato" - MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT - ITEM "3|Periodico" - MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT - GROUP 7 - FIELD MODPAG - MODULE fe -END - -STRING FE_CONTRATTO 18 -BEGIN - PROMPT 32 12 "Contratto di riferimento " - FLAGS "U" - FIELD CONTRATTO - USE &FECON - INPUT CODTAB[1,1] F_CLIFO SELECT - INPUT CODTAB[2,7] F_CLIENTE SELECT - INPUT CODTAB[8,25] FE_CONTRATTO - DISPLAY "Contratto" CODTAB[8,] - DISPLAY "Descrizione@50" S0 - DISPLAY "Pagamento" S6 - OUTPUT FE_CONTRATTO CODTAB[8,] - OUTPUT FE_MODPAG S6 - CHECKTYPE REQUIRED - HELP "Inserire un codice contratto di importo non inferiore a 3000 Euro" - ADD RUN fe0 -1 &CON - GROUP 7 -END - -DATE FE_DATARETT -BEGIN - PROMPT 26 12 "Variazione al documento " - USE MOV KEY 3 - INPUT TIPO F_CLIFO SELECT - INPUT CODCF F_CLIENTE SELECT - INPUT DATAREG FE_DATARETT - DISPLAY "Data reg.@10" DATAREG - DISPLAY "Numero@7" NUMDOC - DISPLAY "Num.Reg.@7" NUMREG - DISPLAY "Descrizione@50" DESCR - OUTPUT FE_DATARETT DATAREG - OUTPUT FE_NUMRETT NUMDOC - FIELD DATARETT - GROUP 7 -END - -STRING FE_NUMRETT 7 -BEGIN - PROMPT 66 12 "N." - COPY ALL FE_DATARETT - CHECKTYPE SEARCH - FIELD NUMRETT - GROUP 7 - FLAGS "U" -END - -// Campi per saldaconto in valuta - -STRING SK_VALUTA 3 -BEGIN - PROMPT 1 13 "Valuta " - FIELD CODVAL - FLAGS "UZ" - GROUP 3 - USE %VAL - INPUT CODTAB SK_VALUTA - DISPLAY "Codice" CODTAB - DISPLAY "Nome@50" S0 - OUTPUT SK_VALUTA CODTAB - CHECKTYPE NORMAL - WARNING "Codice valuta assente" -END - -DATE SK_DATACAMBIO -BEGIN - PROMPT 18 13 "Data cambio " - FIELD DATACAM - FLAGS "R" - USE CAM - JOIN %VAL ALIAS 104 INTO CODTAB[1,3]==CODTAB[1,3] - INPUT CODTAB[1,3] SK_VALUTA SELECT - INPUT CODTAB[4,11] SK_DATACAMBIO - DISPLAY "Cod" CODTAB[1,3] - DISPLAY "Data@10" D0 - DISPLAY "Cambio@18R" S4 - DISPLAY "Valuta@50" 104@->S0 - OUTPUT SK_DATACAMBIO D0 - OUTPUT SK_CAMBIO S4 - GROUP 3 - CHECKTYPE SEARCH -END - -NUMBER SK_CAMBIO 15 6 -BEGIN - PROMPT 44 13 "Cambio " - FIELD CAMBIO - FLAGS "RU" - GROUP 3 - PICTURE ".6" - CHECKTYPE REQUIRED - WARNING "Inserire il cambio o eliminare il codice valuta" -END - -CURRENCY F_TOTALE 18 -BEGIN - PROMPT 1 14 "Totale documento " - FIELD TOTDOC -END - -CURRENCY SK_TOTDOCVAL 18 -BEGIN - PROMPT 38 14 "in valuta " - FIELD TOTDOCVAL - GROUP 3 - VALIDATE REQIF_FUNC 1 F_TOTALE - DRIVENBY SK_VALUTA -END - -STRING F_CODIVA 4 -BEGIN - PROMPT 67 14 "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 - VALIDATE ZEROFILL_FUNC 2 - WARNING "Codice IVA assente" -END - -CURRENCY F_RITFIS 18 -BEGIN - PROMPT 1 15 "Ritenute fiscali " - FIELD RITFIS -END - -CURRENCY F_RITSOC 18 -BEGIN - PROMPT 1 16 "Ritenute sociali " - FIELD RITSOC -END - -DATE F_DATA74TER -BEGIN - PROMPT 52 15 "Data 74/ter " - WARNING "E' richiesta la data del 74/ter" - CHECKTYPE REQUIRED - FIELD DATA74TER -END - -BOOLEAN F_IVAXCASSA -BEGIN - PROMPT 1 17 "IVA per cassa" - FIELD IVAXCASSA - MODULE IC -END - -BOOLEAN F_LIQDIFF -BEGIN - PROMPT 25 17 "Liquidazione differita" - WARNING "Data di incasso per liquidazione differita" - FIELD LIQDIFF - MESSAGE FALSE CLEAR,F_DATAINC - MESSAGE TRUE ENABLE,F_DATAINC - FLAGS "H" -END - -DATE F_DATAINC -BEGIN - PROMPT 52 17 "Data incasso " - WARNING "Data di incasso per liquidazione differita" - FIELD DATAINC -END - -NUMBER F_ANNORIF 4 -BEGIN - PROMPT 48 16 "Rif.partita " - FIELD LF_PARTITE->ANNO - FLAGS "U" -END - -STRING F_NUMRIF 7 -BEGIN - PROMPT 66 16 "/ " - FIELD LF_PARTITE->NUMPART - FLAGS "U#" -END - -STRING F_VALUTAINTRA 3 -BEGIN - PROMPT 1 18 "Cambio intracom. " - FIELD CODVALI - FLAGS "UZ" - GROUP 4 - USE %VAL - INPUT CODTAB F_VALUTAINTRA - DISPLAY "Codice" CODTAB - DISPLAY "Nome@50" S0 - DISPLAY "Cambio@15" S4 - DISPLAY "Ultimo aggiornamento" D0 - OUTPUT F_VALUTAINTRA CODTAB - CHECKTYPE NORMAL - WARNING "Codice valuta assente" - VALIDATE REQIF_FUNC 1 F_CORRVALUTA -END - -NUMBER F_CAMBIOINTRA 15 6 -BEGIN - PROMPT 25 18 "" - FIELD CAMBIOI - FLAGS "U" - GROUP 4 - PICTURE ".6" -END - -DATE F_DATAINTRA -BEGIN - PROMPT 43 18 "Data competenza intra " - FIELD DATACOMPI -END - -CURRENCY F_CORRISPETTIVO 18 -BEGIN - PROMPT 1 19 "Corrispettivo " - FIELD CORRLIRE - GROUP 4 -END - -CURRENCY F_CORRVALUTA 18 -BEGIN - PROMPT 39 19 "Corrispet. valuta " - FIELD CORRVALUTA - GROUP 4 - VALIDATE REQIF_FUNC 1 F_VALUTAINTRA - DRIVENBY F_VALUTAINTRA -END - -STRING NP_CONTSEP 6 -BEGIN - PROMPT 1 20 "Cont. separata " - USE &NPENT - INPUT CODTAB NP_CONTSEP - DISPLAY "Codice@6" CODTAB - DISPLAY "Descrizione@50" S0 - OUTPUT NP_CONTSEP CODTAB - OUTPUT NP_DESCONTSEP S0 - CHECKTYPE NORMAL - FIELD CONTSEP -END - -STRING NP_DESCONTSEP 50 -BEGIN - PROMPT 25 20 "" - USE &NPENT KEY 2 - INPUT S0 NP_DESCONTSEP - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice@6" CODTAB - COPY OUTPUT NP_CONTSEP - CHECKTYPE NORMAL -END - +#include "cg2100.h" +#include "cg21sld.h" + +TOOLBAR "topbar" 0 0 0 2 +#include +ENDPAGE + +PAGE "Testata" -1 -1 77 20 + +BOOLEAN F_REGST +BEGIN + FIELD REGST + FLAGS "H" +END + +BOOLEAN F_STAMPATO +BEGIN + FIELD STAMPATO + FLAGS "H" +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 0 "@BMovimento IVA" +END + +NUMBER F_NUMREG 7 +BEGIN + PROMPT 56 1 "Operazione n. " + FIELD NUMREG + FLAGS "DGR" + KEY 1 + MESSAGE COPY,H_NUMREG +END + +DATE F_DATAREG +BEGIN + PROMPT 1 1 "Data operazione " + FIELD DATAREG + MESSAGE COPY,H_DATAREG|COPY,F_ANNOIVA,7,10 + CHECKTYPE REQUIRED +END + +NUMBER F_ANNOIVA 4 +BEGIN + PROMPT 31 1 "Anno IVA " + FIELD ANNOIVA + FLAGS "D" +END + +DATE F_DATACOMP +BEGIN + PROMPT 1 2 "Data competenza " + FIELD DATACOMP + FLAGS "G" +END + +NUMBER F_ANNOES 4 +BEGIN + PROMPT 31 2 "Codice esercizio " + FIELD ANNOES + FLAGS "DGZ" + MESSAGE COPY,H_ANNOES +END + +STRING F_CODREG 3 +BEGIN + PROMPT 56 2 "Registro IVA " + FLAGS "DUZ" + FIELD REG +END + +STRING F_CODCAUS 3 +BEGIN + PROMPT 1 3 "Causale " + FLAGS "UZ" + FIELD CODCAUS + USE LF_CAUSALI SELECT REG!="" + INPUT CODCAUS F_CODCAUS + DISPLAY "Codice" CODCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Tipo" TIPODOC + DISPLAY "Registro" REG + 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 3 "" + USE LF_CAUSALI KEY 2 SELECT REG!="" + INPUT DESCR F_DESCRCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Codice" CODCAUS + DISPLAY "Tipo" TIPODOC + DISPLAY "Registro" REG + COPY OUTPUT F_CODCAUS + MESSAGE COPY,H_DESCRCAUS + CHECKTYPE REQUIRED + ADD RUN cg0 -4 +END + +STRING F_NUMDOC 7 +BEGIN + PROMPT 1 4 "Documento n. " + FIELD NUMDOC + FLAGS "U" + WARNING "La causale o il saldaconto richiedono il numero documento" +END + +DATE F_DATADOC +BEGIN + PROMPT 27 4 "Data documento " + FIELD DATADOC + WARNING "Inserire una data documento non superiore alla data dell'operazione" + VALIDATE DATE_CMP_FUNC <= F_DATAREG +END + +STRING F_TIPODOC 2 +BEGIN + PROMPT 56 4 "Tipo " + FIELD TIPODOC + FLAGS "D" +END + +BUTTON F_LINKDOC 3 1 +BEGIN + PROMPT 73 4 "Doc." +END + +STRING F_NUMDOCEXT 50 +BEGIN + PROMPT 1 5 "Numero documento esteso " + FIELD NUMDOCEXT +END + +LIST F_SOLAIVA 1 3 +BEGIN + PROMPT 1 6 "Movimento di sola IVA " + ITEM " |No" + ITEM "X|Si" +END + +LIST F_PROVVISORIO 1 22 +BEGIN + PROMPT 31 6 "Movimento provvisorio " + FIELD PROVVIS + ITEM " |No (movimento normale)" + ITEM "P|Si (cancellabile)" + ITEM "N|Si (Non cancellabile)" + ITEM "C|Cespiti" + FLAGS "DG" +END + +STRING F_DESCAGG 5 6 +BEGIN + PROMPT 1 7 "Descrizione " + FLAGS "UZ" + 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 7 "" + FIELD DESCR + USE %DPN KEY 2 + INPUT S0 F_DESCR + DISPLAY "Descrizione@60" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_DESCAGG +END + +NUMBER F_PROTIVA 6 +BEGIN + PROMPT 1 8 "Protocollo IVA " + FIELD PROTIVA +END + +NUMBER F_RIEPILOGO 6 +BEGIN + PROMPT 25 8 "Riepilogo al n." + FIELD UPROTIVA + NUM_EXPR {(#F_RIEPILOGO==0)||(#F_RIEPILOGO>=#F_PROTIVA)} + WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)" +END + +LIST F_DIFFERITA 1 19 +BEGIN + PROMPT 48 8 "Liquid. " + ITEM " |periodo in corso" + ITEM "X|periodo precedente" +END + +NUMBER F_CLIENTE 6 +BEGIN + PROMPT 1 9 "Cliente " + FIELD CODCF + GROUP 1 + USE LF_CLIFO KEY 1 + INPUT TIPOCF "C" + INPUT CODCF F_CLIENTE + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice Fiscale@16" COFI + OUTPUT F_CLIENTE CODCF + OUTPUT F_RAGSOCCLIENTE RAGSOC + OUTPUT F_STATOPAIV STATOPAIV + OUTPUT F_PIVACLIENTE PAIV + OUTPUT F_COFICLIENTE COFI + OUTPUT F_RICALTCLIENTE RICALT + OUTPUT F_CLIFO TIPOCF + MESSAGE COPY,F_FORNITORE + CHECKTYPE REQUIRED + WARNING "Cliente assente" + ADD RUN cg0 -1 C +END + +NUMBER F_FORNITORE 6 +BEGIN + PROMPT 1 9 "Fornitore " + FIELD CODCF + GROUP 2 + USE LF_CLIFO KEY 1 + INPUT TIPOCF "F" + INPUT CODCF F_FORNITORE + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice Fiscale@16" COFI + OUTPUT F_FORNITORE CODCF + OUTPUT F_RAGSOCFORNITORE RAGSOC + OUTPUT F_STATOPAIV STATOPAIV + OUTPUT F_PIVAFORNITORE PAIV + OUTPUT F_COFIFORNITORE COFI + OUTPUT F_RICALTFORNITORE RICALT + OUTPUT F_CLIFO TIPOCF + MESSAGE COPY,F_CLIENTE + CHECKTYPE REQUIRED + WARNING "Fornitore assente" + ADD RUN cg0 -1 F +END + +STRING F_RAGSOCFORNITORE 50 +BEGIN + PROMPT 25 9 "" + GROUP 2 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC F_RAGSOCFORNITORE + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice Fiscale@16" COFI + COPY OUTPUT F_FORNITORE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 F +END + +STRING F_RAGSOCCLIENTE 50 +BEGIN + PROMPT 25 9 "" + GROUP 1 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "C" + INPUT RAGSOC F_RAGSOCCLIENTE + COPY DISPLAY F_RAGSOCFORNITORE + COPY OUTPUT F_CLIENTE + CHECKTYPE REQUIRED + ADD RUN cg0 -1 C +END + +STRING F_COFICLIENTE 16 +BEGIN + PROMPT 1 10 "C.F. " + GROUP 1 + USE LF_CLIFO KEY 4 + INPUT TIPOCF "C" + INPUT COFI F_COFICLIENTE + DISPLAY "Codice fiscale@16" COFI + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + COPY OUTPUT F_CLIENTE + CHECKTYPE NORMAL + ADD RUN cg0 -1 C +END + +STRING F_COFIFORNITORE 16 +BEGIN + PROMPT 1 10 "C.F. " + GROUP 2 + USE LF_CLIFO KEY 4 + INPUT TIPOCF "F" + INPUT COFI F_COFIFORNITORE + COPY DISPLAY F_COFICLIENTE + COPY OUTPUT F_FORNITORE + CHECKTYPE NORMAL + ADD RUN cg0 -1 F +END + +STRING F_PIVACLIENTE 12 +BEGIN + PROMPT 26 10 "P.I. " + 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 + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Codice Fiscale@16" COFI + COPY OUTPUT F_CLIENTE + CHECKTYPE NORMAL + ADD RUN cg0 -1 C +END + +STRING F_PIVAFORNITORE 12 +BEGIN + PROMPT 26 10 "P.I. " + 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 F +END + +STRING F_STATOPAIV 2 +BEGIN + PROMPT 46 10 "" + FLAGS "U" + USE %SCE + INPUT CODTAB F_STATOPAIV + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATOPAIV CODTAB + CHECKTYPE NORMAL +END + +STRING F_RICALTCLIENTE 30 18 +BEGIN + PROMPT 52 10 "Alt. " + USE LF_CLIFO KEY 6 + INPUT TIPOCF "C" + INPUT RICALT F_RICALTCLIENTE + DISPLAY "Codice alternativo@30" RICALT + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice Fiscale@16" COFI + COPY OUTPUT F_CLIENTE + CHECKTYPE NORMAL + ADD RUN cg0 -1 C + GROUP 1 +END + +STRING F_RICALTFORNITORE 30 18 +BEGIN + PROMPT 52 10 "Alt. " + USE LF_CLIFO KEY 6 + INPUT TIPOCF "F" + INPUT RICALT F_RICALTFORNITORE + DISPLAY "Codice alternativo@30" RICALT + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Codice" CODCF + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice Fiscale@16" COFI + COPY OUTPUT F_FORNITORE + CHECKTYPE NORMAL + ADD RUN cg0 -1 F + GROUP 2 +END + +BUTTON F_OCCASEDIT 56 +BEGIN + PROMPT 1 10 "Dati anagrafici del cliente o fornitore occasionale" + FLAGS "H" +END + +STRING F_CODPAG 4 +BEGIN + PROMPT 1 11 "Codice Pagamento " + FIELD CODPAG + FLAGS "U#" + USE %CPG + INPUT CODTAB F_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODPAG CODTAB + OUTPUT F_DESPAG S0 + CHECKTYPE NORMAL + ADD RUN ba3 -6 + WARNING "Codice pagamento assente" +END + +STRING F_DESPAG 50 +BEGIN + PROMPT 25 11 "" + USE %CPG KEY 2 + INPUT S0 F_DESPAG + DISPLAY "Descrizione@60" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT F_CODPAG + ADD RUN ba3 -6 +END + +// Campi per Invio dati rilevanti (FE) + +LIST F_CLIFO 1 10 +BEGIN + PROMPT 1 12 "Tipo " + ITEM "|Conto" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FIELD TIPO + FLAGS "H" +END + +LIST FE_MODPAG 1 16 +BEGIN + PROMPT 1 12 "Tipo " + ITEM "1|Non frazionato" + MESSAGE HIDE,FE_CONTRATTO|RESET,FE_CONTRATTO|SHOW,FE_DATARETT|SHOW,FE_NUMRETT + ITEM "2|Frazionato" + MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT + ITEM "3|Periodico" + MESSAGE SHOW,FE_CONTRATTO|HIDE,FE_DATARETT|HIDE,FE_NUMRETT + GROUP 7 + FIELD MODPAG + MODULE fe +END + +STRING FE_CONTRATTO 18 +BEGIN + PROMPT 32 12 "Contratto di riferimento " + FLAGS "U" + FIELD CONTRATTO + USE &FECON + INPUT CODTAB[1,1] F_CLIFO SELECT + INPUT CODTAB[2,7] F_CLIENTE SELECT + INPUT CODTAB[8,25] FE_CONTRATTO + DISPLAY "Contratto" CODTAB[8,] + DISPLAY "Descrizione@50" S0 + DISPLAY "Pagamento" S6 + OUTPUT FE_CONTRATTO CODTAB[8,] + OUTPUT FE_MODPAG S6 + CHECKTYPE REQUIRED + HELP "Inserire un codice contratto di importo non inferiore a 3000 Euro" + ADD RUN fe0 -1 &CON + GROUP 7 +END + +DATE FE_DATARETT +BEGIN + PROMPT 26 12 "Variazione al documento " + USE MOV KEY 3 + INPUT TIPO F_CLIFO SELECT + INPUT CODCF F_CLIENTE SELECT + INPUT DATAREG FE_DATARETT + DISPLAY "Data reg.@10" DATAREG + DISPLAY "Numero@7" NUMDOC + DISPLAY "Num.Reg.@7" NUMREG + DISPLAY "Descrizione@50" DESCR + OUTPUT FE_DATARETT DATAREG + OUTPUT FE_NUMRETT NUMDOC + FIELD DATARETT + GROUP 7 +END + +STRING FE_NUMRETT 7 +BEGIN + PROMPT 66 12 "N." + COPY ALL FE_DATARETT + CHECKTYPE SEARCH + FIELD NUMRETT + GROUP 7 + FLAGS "U" +END + +// Campi per saldaconto in valuta + +STRING SK_VALUTA 3 +BEGIN + PROMPT 1 13 "Valuta " + FIELD CODVAL + FLAGS "UZ" + GROUP 3 + USE %VAL + INPUT CODTAB SK_VALUTA + DISPLAY "Codice" CODTAB + DISPLAY "Nome@50" S0 + OUTPUT SK_VALUTA CODTAB + CHECKTYPE NORMAL + WARNING "Codice valuta assente" +END + +DATE SK_DATACAMBIO +BEGIN + PROMPT 18 13 "Data cambio " + FIELD DATACAM + FLAGS "R" + USE CAM + JOIN %VAL ALIAS 104 INTO CODTAB[1,3]==CODTAB[1,3] + INPUT CODTAB[1,3] SK_VALUTA SELECT + INPUT CODTAB[4,11] SK_DATACAMBIO + DISPLAY "Cod" CODTAB[1,3] + DISPLAY "Data@10" D0 + DISPLAY "Cambio@18R" S4 + DISPLAY "Valuta@50" 104@->S0 + OUTPUT SK_DATACAMBIO D0 + OUTPUT SK_CAMBIO S4 + GROUP 3 + CHECKTYPE SEARCH +END + +NUMBER SK_CAMBIO 15 6 +BEGIN + PROMPT 44 13 "Cambio " + FIELD CAMBIO + FLAGS "RU" + GROUP 3 + PICTURE ".6" + CHECKTYPE REQUIRED + WARNING "Inserire il cambio o eliminare il codice valuta" +END + +CURRENCY F_TOTALE 18 +BEGIN + PROMPT 1 14 "Totale documento " + FIELD TOTDOC +END + +CURRENCY SK_TOTDOCVAL 18 +BEGIN + PROMPT 38 14 "in valuta " + FIELD TOTDOCVAL + GROUP 3 + VALIDATE REQIF_FUNC 1 F_TOTALE + DRIVENBY SK_VALUTA +END + +STRING F_CODIVA 4 +BEGIN + PROMPT 67 14 "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 + VALIDATE ZEROFILL_FUNC 2 + WARNING "Codice IVA assente" +END + +CURRENCY F_RITFIS 18 +BEGIN + PROMPT 1 15 "Ritenute fiscali " + FIELD RITFIS +END + +CURRENCY F_RITSOC 18 +BEGIN + PROMPT 1 16 "Ritenute sociali " + FIELD RITSOC +END + +DATE F_DATA74TER +BEGIN + PROMPT 52 15 "Data 74/ter " + WARNING "E' richiesta la data del 74/ter" + CHECKTYPE REQUIRED + FIELD DATA74TER +END + +BOOLEAN F_IVAXCASSA +BEGIN + PROMPT 1 17 "IVA per cassa" + FIELD IVAXCASSA + MODULE IC +END + +BOOLEAN F_LIQDIFF +BEGIN + PROMPT 25 17 "Liquidazione differita" + WARNING "Data di incasso per liquidazione differita" + FIELD LIQDIFF + MESSAGE FALSE CLEAR,F_DATAINC + MESSAGE TRUE ENABLE,F_DATAINC + FLAGS "H" +END + +DATE F_DATAINC +BEGIN + PROMPT 52 17 "Data incasso " + WARNING "Data di incasso per liquidazione differita" + FIELD DATAINC +END + +NUMBER F_ANNORIF 4 +BEGIN + PROMPT 48 16 "Rif.partita " + FIELD LF_PARTITE->ANNO + FLAGS "U" +END + +STRING F_NUMRIF 7 +BEGIN + PROMPT 66 16 "/ " + FIELD LF_PARTITE->NUMPART + FLAGS "U#" +END + +STRING F_VALUTAINTRA 3 +BEGIN + PROMPT 1 18 "Cambio intracom. " + FIELD CODVALI + FLAGS "UZ" + GROUP 4 + USE %VAL + INPUT CODTAB F_VALUTAINTRA + DISPLAY "Codice" CODTAB + DISPLAY "Nome@50" S0 + DISPLAY "Cambio@15" S4 + DISPLAY "Ultimo aggiornamento" D0 + OUTPUT F_VALUTAINTRA CODTAB + CHECKTYPE NORMAL + WARNING "Codice valuta assente" + VALIDATE REQIF_FUNC 1 F_CORRVALUTA +END + +NUMBER F_CAMBIOINTRA 15 6 +BEGIN + PROMPT 25 18 "" + FIELD CAMBIOI + FLAGS "U" + GROUP 4 + PICTURE ".6" +END + +DATE F_DATAINTRA +BEGIN + PROMPT 43 18 "Data competenza intra " + FIELD DATACOMPI +END + +CURRENCY F_CORRISPETTIVO 18 +BEGIN + PROMPT 1 19 "Corrispettivo " + FIELD CORRLIRE + GROUP 4 +END + +CURRENCY F_CORRVALUTA 18 +BEGIN + PROMPT 39 19 "Corrispet. valuta " + FIELD CORRVALUTA + GROUP 4 + VALIDATE REQIF_FUNC 1 F_VALUTAINTRA + DRIVENBY F_VALUTAINTRA +END + +STRING NP_CONTSEP 6 +BEGIN + PROMPT 1 20 "Cont. separata " + USE &NPENT + INPUT CODTAB NP_CONTSEP + DISPLAY "Codice@6" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT NP_CONTSEP CODTAB + OUTPUT NP_DESCONTSEP S0 + CHECKTYPE NORMAL + FIELD CONTSEP +END + +STRING NP_DESCONTSEP 50 +BEGIN + PROMPT 25 20 "" + USE &NPENT KEY 2 + INPUT S0 NP_DESCONTSEP + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice@6" CODTAB + COPY OUTPUT NP_CONTSEP + CHECKTYPE NORMAL +END + #ifdef PRORATA100 -BUTTON F_ADJUST_PRORATA 40 -BEGIN - PROMPT 1 -1 "Corre~zione automatica righe contabili" - FLAGS "H" -END -#endif - -ENDPAGE - -PAGE "IVA" -1 -1 77 20 - -GROUPBOX DLG_NULL 78 4 -BEGIN - PROMPT 1 0 "@BRighe movimento IVA" -END - -NUMBER H_NUMREG 7 -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 54 1 "Codice esercizio " - FLAGS "DZ" -END - -STRING H_CODCAUS 3 -BEGIN - PROMPT 2 2 "Causale " - FLAGS "D" -END - -STRING H_DESCRCAUS 50 -BEGIN - PROMPT 25 2 "" - FLAGS "D" -END - -BUTTON F_ADJUST_IVA 10 2 -BEGIN - PROMPT -1 1 "Quadratura" -END - -SPREADSHEET F_SHEETIVA 0 5 -BEGIN - PROMPT 0 4 "" - ITEM "Imponibile@15" - ITEM "Iva@5" - ITEM "Det@2" - ITEM "Imposta@15" - ITEM "CR@1" - ITEM "CF@1" - ITEM "Gr." - ITEM "Co." - ITEM "Sottoc.@6" - ITEM "Descrizione Conto@50" -END - -CURRENCY F_IMPONIBILI 18 -BEGIN - PROMPT 1 10 "Totale imponibili " - FLAGS "D" -END - -CURRENCY F_IMPOSTE 18 -BEGIN - PROMPT 41 10 "Totale imposte " - FLAGS "D" -END - -SPREADSHEET F_SHEETCG 0 -3 -BEGIN - PROMPT 0 11 "" - ITEM "Dare@15F" - ITEM "Avere@15F" - ITEM "C/F@1" - ITEM "Gr." - ITEM "Co." - ITEM "Sott.@6" - ITEM "Descrizione conto@30" - ITEM "Codice" - ITEM "Descrizione riga@30" - ITEM "C/F@1" - ITEM "Gr./c@3" - ITEM "Co./c@3" - ITEM "Sott./c@6" - ITEM "Descrizione contropartita@30" - ITEM "CUP@15" - ITEM "Descrizione CUP@50" - ITEM "CIG@10" - ITEM "Descrizione CIG@50" - ITEM "Tipo@4" -END - -NUMBER F_GRUPPO 3 -BEGIN - PROMPT 1 -2 "Conto riga corrente " - FLAGS "D" -END - -NUMBER F_CONTO 3 -BEGIN - PROMPT 26 -2 "" - FLAGS "D" -END - -NUMBER F_SOTTOCONTO 6 -BEGIN - PROMPT 31 -2 "" - FLAGS "D" -END - -BUTTON F_MASTRINO 8 -BEGIN - PROMPT 39 -2 "Mastrino" -END - -STRING F_SALDOCONTO 20 -BEGIN - PROMPT 51 -2 "Saldo " - FLAGS "DR" -END - -CURRENCY F_DARE 18 -BEGIN - PROMPT 1 -1 "Sbilancio Dare " - FLAGS "D" -END - -CURRENCY F_AVERE 18 -BEGIN - PROMPT 41 -1 "Sbilancio Avere " - FLAGS "D" -END - -ENDPAGE - -#include "cg21sld.uml" - -ENDMASK - -#include "cg21iva.uml" -#include "cg21cg.uml" -#include "cg21rata.uml" +BUTTON F_ADJUST_PRORATA 40 +BEGIN + PROMPT 1 -1 "Corre~zione automatica righe contabili" + FLAGS "H" +END +#endif + +ENDPAGE + +PAGE "IVA" -1 -1 77 20 + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 0 "@BRighe movimento IVA" +END + +NUMBER H_NUMREG 7 +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 54 1 "Codice esercizio " + FLAGS "DZ" +END + +STRING H_CODCAUS 3 +BEGIN + PROMPT 2 2 "Causale " + FLAGS "D" +END + +STRING H_DESCRCAUS 50 +BEGIN + PROMPT 25 2 "" + FLAGS "D" +END + +BUTTON F_ADJUST_IVA 10 2 +BEGIN + PROMPT -1 1 "Quadratura" +END + +SPREADSHEET F_SHEETIVA 0 5 +BEGIN + PROMPT 0 4 "" + ITEM "Imponibile@15" + ITEM "Iva@5" + ITEM "Det@2" + ITEM "Imposta@15" + ITEM "CR@1" + ITEM "CF@1" + ITEM "Gr." + ITEM "Co." + ITEM "Sottoc.@6" + ITEM "Descrizione Conto@50" +END + +CURRENCY F_IMPONIBILI 18 +BEGIN + PROMPT 1 10 "Totale imponibili " + FLAGS "D" +END + +CURRENCY F_IMPOSTE 18 +BEGIN + PROMPT 41 10 "Totale imposte " + FLAGS "D" +END + +SPREADSHEET F_SHEETCG 0 -3 +BEGIN + PROMPT 0 11 "" + ITEM "Dare@15F" + ITEM "Avere@15F" + ITEM "C/F@1" + ITEM "Gr." + ITEM "Co." + ITEM "Sott.@6" + ITEM "Descrizione conto@30" + ITEM "Codice" + ITEM "Descrizione riga@30" + ITEM "C/F@1" + ITEM "Gr./c@3" + ITEM "Co./c@3" + ITEM "Sott./c@6" + ITEM "Descrizione contropartita@30" + ITEM "CUP@15" + ITEM "Descrizione CUP@50" + ITEM "CIG@10" + ITEM "Descrizione CIG@50" + ITEM "Tipo@4" +END + +NUMBER F_GRUPPO 3 +BEGIN + PROMPT 1 -2 "Conto riga corrente " + FLAGS "D" +END + +NUMBER F_CONTO 3 +BEGIN + PROMPT 26 -2 "" + FLAGS "D" +END + +NUMBER F_SOTTOCONTO 6 +BEGIN + PROMPT 31 -2 "" + FLAGS "D" +END + +BUTTON F_MASTRINO 8 +BEGIN + PROMPT 39 -2 "Mastrino" +END + +STRING F_SALDOCONTO 20 +BEGIN + PROMPT 51 -2 "Saldo " + FLAGS "DR" +END + +CURRENCY F_DARE 18 +BEGIN + PROMPT 1 -1 "Sbilancio Dare " + FLAGS "D" +END + +CURRENCY F_AVERE 18 +BEGIN + PROMPT 41 -1 "Sbilancio Avere " + FLAGS "D" +END + +ENDPAGE + +#include "cg21sld.uml" + +ENDMASK + +#include "cg21iva.uml" +#include "cg21cg.uml" +#include "cg21rata.uml" diff --git a/cg/cg2100o.uml b/cg/cg2100o.uml index 0930619e4..d2cbf221a 100755 --- a/cg/cg2100o.uml +++ b/cg/cg2100o.uml @@ -104,6 +104,7 @@ BEGIN OUTPUT O_DENCOM DENCOM OUTPUT O_CAP CAPCOM CHECKTYPE NORMAL + ADD RUN ba4 -0 END NUMBER O_CAP 5 @@ -123,6 +124,7 @@ BEGIN DISPLAY "Codice@10" COM COPY OUTPUT O_COMUNE CHECKTYPE NORMAL + ADD RUN ba4 -0 END GROUPBOX DLG_NULL 70 4 diff --git a/cg/cg2101.cpp b/cg/cg2101.cpp index 2440acb7d..91f378096 100755 --- a/cg/cg2101.cpp +++ b/cg/cg2101.cpp @@ -196,13 +196,18 @@ int TMovimentoPN::registra(bool re, bool force) const TRectype& m = curr(); long numreg = m.get_long(MOV_NUMREG); - if (!re && numreg <= 0) // Tento di numerare automaticamente in caso di write + if (numreg <= 0) { - TLocalisamfile mov(LF_MOV); // Non sposto il file principale della relazione! - numreg = 1; - if (mov.last() == NOERR) - numreg += mov.get_long(MOV_NUMREG); - curr().put(MOV_NUMREG, numreg); + if (!re) // Tento di numerare automaticamente in caso di write + { + TLocalisamfile mov(LF_MOV); // Non sposto il file principale della relazione! + numreg = 1; + if (mov.last() == NOERR) + numreg += mov.get_long(MOV_NUMREG); + curr().put(MOV_NUMREG, numreg); + } + else + return _isnocurkey; } int err = re ? TRelation::rewrite(force) : TRelation::write(force); @@ -235,15 +240,12 @@ int TMovimentoPN::registra(bool re, bool force) r.put(RMI_TIPOATT, tipoatt); const TString & indetr = r.get(RMI_TIPODET); - if (indetr.full()) { - const TRectype & det = cache().get("%DET", indetr); - + const TRectype& det = cache().get("%DET", indetr); if (!det.empty() && !det.get_bool("FPC")) { TTable tab("%DET"); - tab.curr() = det; tab.curr().put("FPC", "X"); tab.rewrite(); @@ -256,7 +258,6 @@ int TMovimentoPN::registra(bool re, bool force) if (err != NOERR) return err; - // Aggiorna data registrazione e protocollo IVA sul registro const TDate datareg(m.get(MOV_DATAREG)); if (reg.not_empty()) diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 66d3fe677..845bd0744 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -585,7 +585,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k) TPrimanota_application& a = app(); const TCurrency saldo(a.calcola_saldo()); - if (!saldo.get_num().is_zero()) + if (!saldo.is_zero()) { const char* ss = saldo.string(true); if (*ss == '-') ss++; diff --git a/cg/cg2102.h b/cg/cg2102.h index 24b3d59ad..858c7c282 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -1,331 +1,331 @@ -#ifndef __CG2102_H -#define __CG2102_H - -#ifndef __RELAPP_H -#include -#endif - -#ifndef __CGPAGAME_H -#include "cgpagame.h" -#endif - -#ifndef __CGSALDAC_H -#include "cgsaldac.h" -#endif - -#ifndef __CGLIB02_H -#include "cglib02.h" -#endif - -#ifndef __CG2101_H -#include "cg2101.h" -#endif - -class TDati_mov_auto; - -class TPrimanota_application : public TRelation_application -{ - TMovimentoPN* _rel; // Relazione principale - - TPagamento* _pag; - - bool _ges_val, _ges_sal; // Gestione valuta e saldaconto - bool _num_cli, _num_for; // Riferimento partita allineato a destra - bool _liqdiff; // Liquidazione differita - bool _npart_is_prot; // Riferimento partita = n. prot. IVA anziche' doc - - bool _skip_giornale_check; // Ignora controllo data stampa libro giornale - bool _skip_bollato_check; // Ignora controllo data stampa bollato - - bool _savenew; // Registra e nuovo - short _firstfocus; // Primo campo della maschera a prendere il focus - - bool _sheet_shown; // Lo sheet e' gia' stato visualizzato una volta? - bool _swap_mask; - - bool _is_saldaconto; // saldaconto si/no (vede parametri e causale) - bool _scad_free; // posso variare liberamente le rate della fattura - bool _easy_sal; // Nuovo saldaconto semplificato - bool _quadratura; // Bottone quadratura automatica per ATS - - TString _perc_attesa_fld; // Percentuale del fornitore/cliente - - TSaldo_agg _saldi; // Saldi da aggiornare - TPartite_array _partite; // Partite coinvolte - - TMask* _msk[4]; // Maschere di query, cg, iva, occasionali - int _mode; // Modo maschera corrente - bool _as400; // Movimento trasferito da as400? - bool _sal_dirty; // Il saldaconto e' stato "toccato"? - - TipoIVA _iva; // Tipo di IVA corrente - TCausale* _causale; // Causale corrente - TLibro_giornale* _giornale; // Libro giornale corrente - long _lastreg; // Numero ultima registrazione - - TDate _last_dreg; // Ultima data registrazione inserita - TDate _last_dcom; // Ultima data competenza inserita - - TDati_mov_auto* _automatico;// Dati per gestire incasso immediato - - TBill _conto_ricavo; // Conto di ricavo del clifo - - TToken_string _tmp; // Stringa temporanea da ritornare - TString_array _pag_rows; // Copia dello sheet delle rate - - TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili - - TAssoc_array _colori; // Colori delle righe - - static bool showpartite_handler(TMask_field& f, KEY k); - static bool speserimb_handler(TMask_field& f, KEY k); - static bool altrespese_handler(TMask_field& f, KEY k); - static bool abbatt_handler(TMask_field& f, KEY k); - static bool abbpass_handler(TMask_field& f, KEY k); - static bool ritprof_handler(TMask_field& f, KEY k); - static bool diffcamb_handler(TMask_field& f, KEY k); - 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 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 datadoc_handler(TMask_field& f, KEY key); - static bool numdoc_handler(TMask_field& f, KEY key); - static bool annorif_handler(TMask_field& f, KEY key); - static bool numrif_handler(TMask_field& f, KEY key); - static bool protiva_handler(TMask_field& f, KEY key); - static bool clifo_handler(TMask_field& f, KEY key); - static bool totdoc_handler(TMask_field& f, KEY key); - static bool totdocval_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 main_codiva_handler(TMask_field& f, KEY key); - static bool liqdiff_handler(TMask_field& f, KEY key); - static bool ivaxcassa_handler(TMask_field& f, KEY key); - static bool dataintra_handler(TMask_field& f, KEY key); - static bool corrlire_handler(TMask_field& f, KEY key); - static bool corrvaluta_handler(TMask_field& f, KEY key); - static bool occas_code_handler(TMask_field& f, KEY key); - static bool occas_cfpi_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 sheet_clifo_handler(TMask_field& f, KEY k); - static bool sheet_mastrino_handler(TMask_field& f, KEY k); - static bool sheet_rateo_handler(TMask_field& f, KEY k); - static bool sheet_risconto_handler(TMask_field& f, KEY k); - static bool iva_sottoconto_handler(TMask_field& f, KEY k); - static bool imponibile_handler(TMask_field& f, KEY key); - static bool detrazione_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 fase_handler(TMask_field& f, KEY key); - static bool cg_tipo_handler(TMask_field& f, KEY key); - static bool cg_gruppo_handler(TMask_field& f, KEY key); - static bool cg_conto_handler(TMask_field& f, KEY key); - static bool cg_sottoconto_handler(TMask_field& f, KEY key); - - static bool codpag_handler(TMask_field& f, KEY key); - static bool valuta_handler(TMask_field& f, KEY key); - static bool datacambio_handler(TMask_field& f, KEY key); - static bool cambio_handler(TMask_field& f, KEY key); - static bool reset_handler(TMask_field& f, KEY key); - static bool nrate_handler(TMask_field& f, KEY key); - static bool recalc_handler(TMask_field& f, KEY key); - static bool codcab_handler(TMask_field& f, KEY key); - static bool tipopag_handler(TMask_field& f, KEY key); - static bool linkdoc_handler(TMask_field& f, KEY k); - static bool mastrino_handler(TMask_field& f, KEY k); - - static bool rataeur_handler(TMask_field& f, KEY key); - static bool rataval_handler(TMask_field& f, KEY key); - - static bool iva_handler(TMask_field& f, KEY key); - static bool cg_handler(TMask_field& f, KEY key); - - static bool pag_notify(TSheet_field& s, int r, KEY key); - static bool pag_sheet_handler(TMask_field& f, KEY key); - static bool colors_handler(TMask_field& f, KEY k); - - static bool quadratura_handler(TMask_field& f, KEY k); // Bottone quadratura per ATS - - void reset_sheet_row(TSheet_field& s, int n); - int crea_somma_spese(TImporto& imp); - void update_saldo_riga(int r); - void link_mastrino(const TBill& bill) const; - -protected: // TApplication - virtual void on_firm_change(); - virtual void on_config_change(); - virtual void print(); - void dump_rec(TConfig & ini, const TRectype & rec, int row = 0, int pref = 0); - void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0); - virtual void ini2mask(TConfig& ini, TMask& msk, bool query); - virtual void mask2ini(const TMask& msk, TConfig& ini); - virtual bool save(bool check_dirty); - - bool get_mask_swap_file(TFilename& name) const; - bool force_mask_swap(const TCausale& old_caus, const TCausale& new_caus); - -protected: // TRelation_application - 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 bool save_and_new() const; - virtual bool save_and_quit() const; - virtual bool is_transaction() const; - virtual bool get_next_key(TToken_string& key); - virtual int read(TMask& m); - virtual int write(const TMask& m); - virtual int rewrite(const TMask& m); - virtual bool remove(); - virtual void write_enable(bool) {} - virtual bool protected_record(TRectype& rec); - virtual bool can_I_write(const TRelation* rel) const; - -protected: - void check_saldi(); - void genera_automatico(int tipo, const char* causimm); // 0=nessuno, 1=incasso, 2=regolarizzazione - void gioca_cambi(int force = 0x00); - - TMask* load_mask(int n); - TMask& occas_mask() { return *load_mask(3); } - - void mask2rel(const TMask& m); - - TipoIVA iva() const { return _iva; } - char clifo() const { return iva() == iva_vendite ? 'C' : 'F'; } - bool gestione_valuta() const { return _ges_val; } - bool gestione_saldaconto() const { return _ges_sal; } - bool npart_is_prot() const { return _npart_is_prot; } - - bool is_saldaconto() const { return _is_saldaconto; } - bool is_fattura() const { return is_saldaconto() && causale().tipomov() == 1; } - bool is_nota_credito() const { return is_saldaconto() && causale().tipomov() == 2; } - bool is_pagamento() const { return is_saldaconto() && causale().tipomov() >= 3; } - bool activate_numrif(TMask& m, bool set_pag); - - void fill_sheet(TMask& m) const; - void init_mask(TMask& m); - - static TipoIVA reg2IVA(const char* registro, int anno); - static const real& cod2IVA(const TMask& m); - static real scorpora(real& imponibile, const real& percentuale); - static int get_importi_iva(const TToken_string& row, real& imp_det, real& iva_det, real& imp_ind, real& iva_ind); - static int bill2pos(const TBill& conto, char tipo); - - TipoIVA cau2IVA(const char* causale, int anno); - bool IVA2bill(const TCodiceIVA& iva, TBill& bill); - int bill2contr(const TBill& c, char sezione) const; - int bill_used(const TBill& conto) const; - TBill& ivas_bill(TBill& tc); - - void load_colors(); - void save_colors(); - COLOR type2color(char tipor, char tipoc); - void set_type_color(char tipor, char tipoc, COLOR col); - void set_colors(); - - bool read_caus(const char* cod, int year); - TLibro_giornale& giornale() { return *_giornale; } - - bool test_swap(bool ritsoc); - TImporto real2imp(const real& r, char tipo); - real totale_documento(); - - void ivas_pack(); - void cgs_pack(); - bool ci_sono_importi(const TSheet_field& cgs) const; - real calcola_saldo() const; - real calcola_imp() const; - - void add_cgs_tot(TMask& m); - int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo, - const char* cms = NULL, const char* fas = NULL); - void set_cgs_imp(int n, const TImporto& importo); - bool add_cgs_imp(int n, const TImporto& importo); - bool sub_cgs_imp(int n, const TImporto& importo); - void disable_cgs_cells(int n, char tipo); - - void add_cup_or_cig(short id, const TRectype& rec, TToken_string& riga) const; - void add_cup_or_cig(short id, TConfig& ini, TToken_string& riga) const; - - void add_cgs_rit(bool fisc); - void generazione_righe_cg(int r); - - void reset_cgs_row(int n) { reset_sheet_row(cgs(), n); } - void reset_ivas_row(int n) { reset_sheet_row(ivas(), n); } - - TPagamento& pagamento() const; - - void set_pagamento(const char* c, const char* d); - void set_totale_pagamento(bool update); - void reset_pagamento(); - void set_scadenze(TMask& m); - void set_banche(TMask& m); - bool read_scadenze(TMask& m); - void write_scadenze(const TMask& m); - void remove_scadenze(const TMask& m, const char* rif); - void renumber_partita(TMask& m, const char* oldp, const char* newp); - void recalc_scadenze(const TDate& d); - +#ifndef __CG2102_H +#define __CG2102_H + +#ifndef __RELAPP_H +#include +#endif + +#ifndef __CGPAGAME_H +#include "cgpagame.h" +#endif + +#ifndef __CGSALDAC_H +#include "cgsaldac.h" +#endif + +#ifndef __CGLIB02_H +#include "cglib02.h" +#endif + +#ifndef __CG2101_H +#include "cg2101.h" +#endif + +class TDati_mov_auto; + +class TPrimanota_application : public TRelation_application +{ + TMovimentoPN* _rel; // Relazione principale + + TPagamento* _pag; + + bool _ges_val, _ges_sal; // Gestione valuta e saldaconto + bool _num_cli, _num_for; // Riferimento partita allineato a destra + bool _liqdiff; // Liquidazione differita + bool _npart_is_prot; // Riferimento partita = n. prot. IVA anziche' doc + + bool _skip_giornale_check; // Ignora controllo data stampa libro giornale + bool _skip_bollato_check; // Ignora controllo data stampa bollato + + bool _savenew; // Registra e nuovo + short _firstfocus; // Primo campo della maschera a prendere il focus + + bool _sheet_shown; // Lo sheet e' gia' stato visualizzato una volta? + bool _swap_mask; + + bool _is_saldaconto; // saldaconto si/no (vede parametri e causale) + bool _scad_free; // posso variare liberamente le rate della fattura + bool _easy_sal; // Nuovo saldaconto semplificato + bool _quadratura; // Bottone quadratura automatica per ATS + + TString _perc_attesa_fld; // Percentuale del fornitore/cliente + + TSaldo_agg _saldi; // Saldi da aggiornare + TPartite_array _partite; // Partite coinvolte + + TMask* _msk[4]; // Maschere di query, cg, iva, occasionali + int _mode; // Modo maschera corrente + bool _as400; // Movimento trasferito da as400? + bool _sal_dirty; // Il saldaconto e' stato "toccato"? + + TipoIVA _iva; // Tipo di IVA corrente + TCausale* _causale; // Causale corrente + TLibro_giornale* _giornale; // Libro giornale corrente + long _lastreg; // Numero ultima registrazione + + TDate _last_dreg; // Ultima data registrazione inserita + TDate _last_dcom; // Ultima data competenza inserita + + TDati_mov_auto* _automatico;// Dati per gestire incasso immediato + + TBill _conto_ricavo; // Conto di ricavo del clifo + + TToken_string _tmp; // Stringa temporanea da ritornare + TString_array _pag_rows; // Copia dello sheet delle rate + + TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili + + TAssoc_array _colori; // Colori delle righe + + static bool showpartite_handler(TMask_field& f, KEY k); + static bool speserimb_handler(TMask_field& f, KEY k); + static bool altrespese_handler(TMask_field& f, KEY k); + static bool abbatt_handler(TMask_field& f, KEY k); + static bool abbpass_handler(TMask_field& f, KEY k); + static bool ritprof_handler(TMask_field& f, KEY k); + static bool diffcamb_handler(TMask_field& f, KEY k); + 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 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 datadoc_handler(TMask_field& f, KEY key); + static bool numdoc_handler(TMask_field& f, KEY key); + static bool annorif_handler(TMask_field& f, KEY key); + static bool numrif_handler(TMask_field& f, KEY key); + static bool protiva_handler(TMask_field& f, KEY key); + static bool clifo_handler(TMask_field& f, KEY key); + static bool totdoc_handler(TMask_field& f, KEY key); + static bool totdocval_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 main_codiva_handler(TMask_field& f, KEY key); + static bool liqdiff_handler(TMask_field& f, KEY key); + static bool ivaxcassa_handler(TMask_field& f, KEY key); + static bool dataintra_handler(TMask_field& f, KEY key); + static bool corrlire_handler(TMask_field& f, KEY key); + static bool corrvaluta_handler(TMask_field& f, KEY key); + static bool occas_code_handler(TMask_field& f, KEY key); + static bool occas_cfpi_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 sheet_clifo_handler(TMask_field& f, KEY k); + static bool sheet_mastrino_handler(TMask_field& f, KEY k); + static bool sheet_rateo_handler(TMask_field& f, KEY k); + static bool sheet_risconto_handler(TMask_field& f, KEY k); + static bool iva_sottoconto_handler(TMask_field& f, KEY k); + static bool imponibile_handler(TMask_field& f, KEY key); + static bool detrazione_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 fase_handler(TMask_field& f, KEY key); + static bool cg_tipo_handler(TMask_field& f, KEY key); + static bool cg_gruppo_handler(TMask_field& f, KEY key); + static bool cg_conto_handler(TMask_field& f, KEY key); + static bool cg_sottoconto_handler(TMask_field& f, KEY key); + + static bool codpag_handler(TMask_field& f, KEY key); + static bool valuta_handler(TMask_field& f, KEY key); + static bool datacambio_handler(TMask_field& f, KEY key); + static bool cambio_handler(TMask_field& f, KEY key); + static bool reset_handler(TMask_field& f, KEY key); + static bool nrate_handler(TMask_field& f, KEY key); + static bool recalc_handler(TMask_field& f, KEY key); + static bool codcab_handler(TMask_field& f, KEY key); + static bool tipopag_handler(TMask_field& f, KEY key); + static bool linkdoc_handler(TMask_field& f, KEY k); + static bool mastrino_handler(TMask_field& f, KEY k); + + static bool rataeur_handler(TMask_field& f, KEY key); + static bool rataval_handler(TMask_field& f, KEY key); + + static bool iva_handler(TMask_field& f, KEY key); + static bool cg_handler(TMask_field& f, KEY key); + + static bool pag_notify(TSheet_field& s, int r, KEY key); + static bool pag_sheet_handler(TMask_field& f, KEY key); + static bool colors_handler(TMask_field& f, KEY k); + + static bool quadratura_handler(TMask_field& f, KEY k); // Bottone quadratura per ATS + + void reset_sheet_row(TSheet_field& s, int n); + int crea_somma_spese(TImporto& imp); + void update_saldo_riga(int r); + void link_mastrino(const TBill& bill) const; + +protected: // TApplication + virtual void on_firm_change(); + virtual void on_config_change(); + virtual void print(); + void dump_rec(TConfig & ini, const TRectype & rec, int row = 0, int pref = 0); + void dump_fatt(TConfig& ini, TPartita & game, int rigafatt, int pref = 0); + virtual void ini2mask(TConfig& ini, TMask& msk, bool query); + virtual void mask2ini(const TMask& msk, TConfig& ini); + virtual bool save(bool check_dirty); + + bool get_mask_swap_file(TFilename& name) const; + bool force_mask_swap(const TCausale& old_caus, const TCausale& new_caus); + +protected: // TRelation_application + 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 bool save_and_new() const; + virtual bool save_and_quit() const; + virtual bool is_transaction() const; + virtual bool get_next_key(TToken_string& key); + virtual int read(TMask& m); + virtual int write(const TMask& m); + virtual int rewrite(const TMask& m); + virtual bool remove(); + virtual void write_enable(bool) {} + virtual bool protected_record(TRectype& rec); + virtual bool can_I_write(const TRelation* rel) const; + +protected: + void check_saldi(); + void genera_automatico(int tipo, const char* causimm); // 0=nessuno, 1=incasso, 2=regolarizzazione + void gioca_cambi(int force = 0x00); + + TMask* load_mask(int n); + TMask& occas_mask() { return *load_mask(3); } + + void mask2rel(const TMask& m); + + TipoIVA iva() const { return _iva; } + char clifo() const { return iva() == iva_vendite ? 'C' : 'F'; } + bool gestione_valuta() const { return _ges_val; } + bool gestione_saldaconto() const { return _ges_sal; } + bool npart_is_prot() const { return _npart_is_prot; } + + bool is_saldaconto() const { return _is_saldaconto; } + bool is_fattura() const { return is_saldaconto() && causale().tipomov() == 1; } + bool is_nota_credito() const { return is_saldaconto() && causale().tipomov() == 2; } + bool is_pagamento() const { return is_saldaconto() && causale().tipomov() >= 3; } + bool activate_numrif(TMask& m, bool set_pag); + + void fill_sheet(TMask& m) const; + void init_mask(TMask& m); + + static TipoIVA reg2IVA(const char* registro, int anno); + static const real& cod2IVA(const TMask& m); + static real scorpora(real& imponibile, const real& percentuale); + static int get_importi_iva(const TToken_string& row, real& imp_det, real& iva_det, real& imp_ind, real& iva_ind); + static int bill2pos(const TBill& conto, char tipo); + + TipoIVA cau2IVA(const char* causale, int anno); + bool IVA2bill(const TCodiceIVA& iva, TBill& bill); + int bill2contr(const TBill& c, char sezione) const; + int bill_used(const TBill& conto) const; + TBill& ivas_bill(TBill& tc); + + void load_colors(); + void save_colors(); + COLOR type2color(char tipor, char tipoc); + void set_type_color(char tipor, char tipoc, COLOR col); + void set_colors(); + + bool read_caus(const char* cod, int year); + TLibro_giornale& giornale() { return *_giornale; } + + bool test_swap(bool ritsoc); + TImporto real2imp(const real& r, char tipo); + real totale_documento(); + + void ivas_pack(); + void cgs_pack(); + bool ci_sono_importi(const TSheet_field& cgs) const; + real calcola_saldo() const; + real calcola_imp() const; + + void add_cgs_tot(TMask& m); + int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo, + const char* cms = NULL, const char* fas = NULL); + void set_cgs_imp(int n, const TImporto& importo); + bool add_cgs_imp(int n, const TImporto& importo); + bool sub_cgs_imp(int n, const TImporto& importo); + void disable_cgs_cells(int n, char tipo); + + void add_cup_or_cig(short id, const TRectype& rec, TToken_string& riga) const; + void add_cup_or_cig(short id, TConfig& ini, TToken_string& riga) const; + + void add_cgs_rit(bool fisc); + void generazione_righe_cg(int r); + + void reset_cgs_row(int n) { reset_sheet_row(cgs(), n); } + void reset_ivas_row(int n) { reset_sheet_row(ivas(), n); } + + TPagamento& pagamento() const; + + void set_pagamento(const char* c, const char* d); + void set_totale_pagamento(bool update); + void reset_pagamento(); + void set_scadenze(TMask& m); + void set_banche(TMask& m); + bool read_scadenze(TMask& m); + void write_scadenze(const TMask& m); + void remove_scadenze(const TMask& m, const char* rif); + void renumber_partita(TMask& m, const char* oldp, const char* newp); + void recalc_scadenze(const TDate& d); + #ifdef PRORATA100 - static bool prorata_handler(TMask_field& f, KEY k); - bool test_prorata(); - bool aggiusta_prorata(); -#endif - - int cerca_conto_cf(TBill& bill) const; - - bool edit_partite(const TMask& m, int riga); - bool crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo); - - bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig); - bool notify_cgline_deletion(int numrig); - - bool is_percipient(long forn, char& tipper, long& codper) const; - long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis); - bool link_m770(); - bool link_cesp(const TMask& msk, const char* action); - bool link_intra(const TMask& msk, const char* action); - bool link_anal(const TMask& msk, const char* action); - -public: - static int type2pos(char tipo); - static char row_type(const TToken_string& s); - static bool iva_notify(TSheet_field& s, int r, KEY key); - static bool cg_notify(TSheet_field& s, int r, KEY key); - - void type2colors(char tipor, COLOR& back, COLOR& fore); - void set_type_colors(char tipor, COLOR back, COLOR fore); - void reset_colors(); - - TCausale& causale() const { return *_causale; } - TPartite_array& partite() { return _partite; } // Partite editate - bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp); - bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag, - const TValuta& valuta, int deleting = 0); - - TSheet_field& cgs() const; - TSheet_field& ivas() const; - TSheet_field& pags() const; - TString_array& pag_rows() { return _pag_rows; } - TImporto get_cgs_imp(int n) const; - - TPrimanota_application(); - virtual ~TPrimanota_application() { } -}; - -inline TPrimanota_application& app() -{ return (TPrimanota_application&)main_app(); } - -#endif + static bool prorata_handler(TMask_field& f, KEY k); + bool test_prorata(); + bool aggiusta_prorata(); +#endif + + int cerca_conto_cf(TBill& bill) const; + + bool edit_partite(const TMask& m, int riga); + bool crea_partita(const TBill& bill, int anno, const TString& numero, int numrig, const TImporto& importo); + + bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig); + bool notify_cgline_deletion(int numrig); + + bool is_percipient(long forn, char& tipper, long& codper) const; + long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis); + bool link_m770(); + bool link_cesp(const TMask& msk, const char* action); + bool link_intra(const TMask& msk, const char* action); + bool link_anal(const TMask& msk, const char* action); + +public: + static int type2pos(char tipo); + static char row_type(const TToken_string& s); + static bool iva_notify(TSheet_field& s, int r, KEY key); + static bool cg_notify(TSheet_field& s, int r, KEY key); + + void type2colors(char tipor, COLOR& back, COLOR& fore); + void set_type_colors(char tipor, COLOR back, COLOR fore); + void reset_colors(); + + TCausale& causale() const { return *_causale; } + TPartite_array& partite() { return _partite; } // Partite editate + bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp); + bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag, + const TValuta& valuta, int deleting = 0); + + TSheet_field& cgs() const; + TSheet_field& ivas() const; + TSheet_field& pags() const; + TString_array& pag_rows() { return _pag_rows; } + TImporto get_cgs_imp(int n) const; + + TPrimanota_application(); + virtual ~TPrimanota_application() { } +}; + +inline TPrimanota_application& app() +{ return (TPrimanota_application&)main_app(); } + +#endif diff --git a/cg/cg2107.cpp b/cg/cg2107.cpp index 9465f303e..cf2bb666c 100755 --- a/cg/cg2107.cpp +++ b/cg/cg2107.cpp @@ -187,12 +187,8 @@ void TEasySolder_mask::save_sheet() } TRectype newpag = partita.pagamento(rigaf, nrata, nrigp); - TBill conto_banca; conto_banca.get(*this, G_GRUPPOC, G_CONTOC, G_SOTTOCONTOC); - conto_banca.put(newpag, true); - newpag.put(PAGSCA_ACCSAL, a_saldo ? 'S' : 'A'); - newpag.put(PAGSCA_CODABIPR, get(G_ABI)); - newpag.put(PAGSCA_CODCABPR, get(G_CAB)); + if (valuta.in_valuta()) { newpag.put(PAGSCA_IMPORTOVAL, importo); @@ -207,7 +203,23 @@ void TEasySolder_mask::save_sheet() newpag.put(PAGSCA_RITSOC, ritsoc); } - app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0); + if (part.tipo() == tm_nota_credito) + { + const TBill conto_nullo; + conto_nullo.put(newpag, true); // Azzera conto + newpag.zero(PAGSCA_CODABIPR); + newpag.zero(PAGSCA_CODCABPR); + app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0); + } + else + { + TBill conto_banca; + conto_banca.get(*this, G_GRUPPOC, G_CONTOC, G_SOTTOCONTOC); + conto_banca.put(newpag, true); + newpag.put(PAGSCA_CODABIPR, get(G_ABI)); + newpag.put(PAGSCA_CODCABPR, get(G_CAB)); + app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0); + } } } @@ -512,13 +524,11 @@ bool TEasySolder_mask::on_field_event(TOperable_field& o, TField_event e, long j real residuo = m.get(S_RESIDUO); if (residuo.is_zero()) { - const int anno = m.get_int(S_ANNO); - const TString8 num = m.get(S_PARTITA); - const int nriga = m.get_int(S_RIGAF); - const int nrata = m.get_int(S_RATA); - const TPartita& game = app().partite().partita(_conto, anno, num); - - + const int anno = m.get_int(S_ANNO); + const TString8 num = m.get(S_PARTITA); + const int nriga = m.get_int(S_RIGAF); + const int nrata = m.get_int(S_RATA); + const TPartita& game = app().partite().partita(_conto, anno, num); if (game.esiste(nriga, nrata)) residuo = game.rata(nriga, nrata).residuo(true).valore(); } @@ -662,27 +672,35 @@ static int nrigp_pagamento_locale(const TSolder_tree& st) return 0; } -static bool is_lonely_nc(TPartita& game) +static int has_lonely_nc(TPartita& game) { - int numrig[8]; memset(numrig, 0, sizeof(numrig)); - for (int i = game.last(); i > 0; i = game.pred(i)) - numrig[game.riga(i).tipo()]++; - return numrig[tm_fattura] == 0 && numrig[tm_nota_credito] > 0; + int ncs = 0; + const TRecord_array& u = game.unassigned(); + for (int i = u.last_row(); i > 0; i = u.pred_row(i)) + { + const TRiga_partite& r = game.riga(i); + if (r.tipo() == tm_nota_credito) + { + ncs = i; + break; + } + } + return ncs; } + // Aggiunge una nota di credito non associata a fattura static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet) { - if (!is_lonely_nc(game)) + int nrigp = has_lonely_nc(game); + if (nrigp <= 0) return false; - - const int nrigp = game.prima_riga(-1, tm_nota_credito); const TRiga_partite& riga = game.riga(nrigp); TToken_string& row = sheet.row(rigasheet); - row.add(game.codice_valuta(), sheet.cid2index(S_VALUTA)); - const char expected_section = riga.get_char(PART_TIPOCF) == 'C' ? 'D' : 'A'; + const TCausale& causale = app().causale(); + const char expected_section = causale.sezione_clifo() == 'D' ? 'A' : 'D'; TImporto res = game.calcola_saldo(true); res.normalize(expected_section); @@ -700,6 +718,7 @@ static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet) set_row_str(sheet, row, S_DATASCAD, riga.get(PART_DATAPAG)); if (game.in_valuta()) { + row.add(game.codice_valuta(), sheet.cid2index(S_VALUTA)); TImporto reseur = riga.importo(false); reseur.normalize(expected_section); set_row_currency(sheet, row, S_RESIDUO_EUR, reseur.valore()); @@ -712,7 +731,8 @@ static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet) return true; } -static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) +// static callback function +bool TEasySolder_mask::sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) { const TSolder_tree& st = (const TSolder_tree&)tree; const TToken_string& curr = *(TToken_string*)st.curr_node(); @@ -739,8 +759,15 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) CHECKD(false, "Rata nulla inattesa ", nrata); // Segnalazione 1867 return false; } - - const tipo_movimento tm = app().causale().tipomov(); + + TSheet_field& sheet = *(TSheet_field*)jolly; + + const TCausale& causale = app().causale(); + const tipo_movimento tm = causale.tipomov(); + + const char pag_section = ((TEasySolder_mask&)sheet.mask()).calcola_sezione(); + const char rat_section = pag_section == 'D' ? 'A' : 'D'; + switch (tm) { case tm_nota_credito: @@ -782,7 +809,6 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) break; } - TSheet_field& sheet = *(TSheet_field*)jolly; if (good_rat || good_pag) // Creo una nuova riga solo se necessario { TToken_string& row = sheet.row(-1); @@ -796,9 +822,8 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) } else { - const char expected_section = scad->get_char(SCAD_TIPOCF) == 'C' ? 'D' : 'A'; res = scad->residuo(true); - res.normalize(expected_section); + res.normalize(rat_section); } set_row_currency(sheet, row, S_RESIDUO, res.valore()); const TImporto tot = scad->importo(true); @@ -837,7 +862,7 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) } if (good_pag) { - if (!good_rat && nrigp > 1 && is_lonely_nc(game)) + if (!good_rat && nrigp > 1 && has_lonely_nc(game)) add_lonely_nc(game, sheet, sheet.items()-1); const TRiga_partite& rigp = game.riga(nrigp); @@ -884,7 +909,7 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */) else { // Nota di credito non assegnata e senza pagamenti n questo movimento - if (level == 4 && nriga == TPartita::UNASSIGNED && nrigp == 0 && curr.ends_with("|1") && is_lonely_nc(game)) + if (level == 4 && nriga == TPartita::UNASSIGNED && nrigp == 0 && has_lonely_nc(game)) { const TImporto sld = game.calcola_saldo(true); if (!sld.is_zero()) @@ -899,11 +924,11 @@ char TEasySolder_mask::calcola_sezione() const { const char tipoc = _conto.tipo(); const TCausale& causale = app().causale(); - const tipo_movimento tm = causale.tipomov(); - char sezione = causale.sezione(1); // Usa la sezione della causale + char sezione = causale.sezione_clifo(); // Usa la sezione della causale if (sezione != 'A' && sezione != 'D') // Se non c'e' la sezione bell'e' ch'e' pronta { + const tipo_movimento tm = causale.tipomov(); if (tm == tm_fattura || tm == tm_insoluto) // calcola in base al tipo movimento e sezione = (tipoc == 'C') ? 'D' : 'A'; // al tipo cliente/fornitore else @@ -916,7 +941,7 @@ char TEasySolder_mask::calcola_sezione() const TBill bill; causale.bill(1, bill); // Legge primo conto causale const char tc = bill.tipo(); if (tc > ' ' && tc != tipoc) - sezione = (sezione == 'D') ? 'A' : 'D'; // scambia segno + sezione = (sezione == 'D') ? 'A' : 'D'; // inverti sezione } return sezione; @@ -1119,6 +1144,10 @@ void TEasySolder_mask::init(const TBill& conto, long numreg, int numrig) for (short id = G_ABI; id <= G_DESCONTOC; id++) reset(id); } + + // Nel caso di nota di credito devo nascondere il conto (fuorviante) + for (short id = G_ABI; id <= G_DESCONTOC; id++) + show(id, _tipomov != tm_nota_credito); if (_tree == NULL) { diff --git a/cg/cg2107.h b/cg/cg2107.h index b61419bc1..8b90dfd98 100755 --- a/cg/cg2107.h +++ b/cg/cg2107.h @@ -40,6 +40,8 @@ protected: real eur2val(const real& val) const; TImporto eur2val(const TImporto& imp) const; + static bool sheet_rate_filler(TTree& tree, void* jolly, word flags); + public: bool changed() const { return _changed; } void init(const TBill& conto, long numreg, int numrig); diff --git a/cg/cg3600.cpp b/cg/cg3600.cpp index 217019b22..b1a182ee3 100755 --- a/cg/cg3600.cpp +++ b/cg/cg3600.cpp @@ -1141,6 +1141,9 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev) } else refused = true; + // Altrimenti sbaglia a ridisegnare le righe della DBService! + XI_RCT rct; xi_get_rect(_obj, &rct); + xi_invalidate_rect(xi_get_window(_obj), &rct); } break; case XIE_GET_PERCENT: @@ -1177,10 +1180,15 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev) { if (xiev->v.select.column == 0) { - if (rec == _cur_rec) // Simulo intercettazione doppio click - _grid->on_record_button(rec); if (_read_only) - refused = true; + { + refused = !select(rec); + } + else + { + if (rec == _cur_rec) // Simulo intercettazione doppio click + _grid->on_record_button(rec); + } } else { @@ -2259,6 +2267,10 @@ TMastrino_set::TMastrino_set(TMastrini_grid& g) add_field(_alfafld,-108, 1, "Sezione"); // Sezione add_field(_realfld, 109, 13); // Saldo giornaliero add_field(_alfafld,-109, 1, "Sezione"); // Sezione giornaliera + + const bool show_cms = main_app().has_module(CMAUT) || main_app().has_module(CAAUT); + if (show_cms) + add_field(_alfafld, 110, 40); // Commessa } /////////////////////////////////////////////////////////// @@ -2378,47 +2390,21 @@ bool TGrid_mask::export_handler(TMask_field& f, KEY k) bool TGrid_mask::on_key(KEY k) { - long rec = grid().selected(); switch (k) { - case K_LHOME: - rec = 0; - break; - case K_PREV: - rec -= _grid->visible_rows(); - if (rec < 0) rec = 0; - break; - case K_UP: - if (rec > 0) - rec--; - break; - case K_DOWN: - if (rec < _grid->items()-1) - rec++; - break; - case K_NEXT: - rec += _grid->visible_rows(); - if (rec >= _grid->items()) - rec = _grid->items()-1; - break; - case K_LEND: - rec = _grid->items()-1; - break; case K_ENTER: case K_CTRL+'+': case K_CTRL+'-': if (focus_field().dlg() == _grid->dlg()) + { + const long rec = grid().selected(); _grid->on_dbl_cell(rec, DLG_USER); + } break; default: break; } - if (rec != grid().selected()) - { - grid().select(rec); - return true; - } - + return TMask::on_key(k); } @@ -2436,7 +2422,7 @@ long TGrid_mask::handler(WINDOW win, EVENT* ep) if (_last_grid) { - TGrid_field& sht = (TGrid_field&)*_last_grid; + //TGrid_field& sht = (TGrid_field&)*_last_grid; MENU_ITEM* menu = xvt_res_get_menu(BROWSE_BAR); if (menu != NULL) diff --git a/cg/f23.dir b/cg/f23.dir index 9a34be5bf..e146620f8 100755 --- a/cg/f23.dir +++ b/cg/f23.dir @@ -1,3 +1,3 @@ 23 0 -$mov|0|0|421|0|Movimenti di prima nota||| +$mov|0|0|471|0|Movimenti di prima nota||| diff --git a/cg/f23.trr b/cg/f23.trr index 3407bfb46..fe65c73a1 100755 --- a/cg/f23.trr +++ b/cg/f23.trr @@ -1,5 +1,5 @@ 23 -54 +55 ANNOES|9|4|0|Codice esercizio NUMREG|3|7|0|Numero di operazione DATAREG|5|8|0|Data operazione @@ -8,6 +8,7 @@ DATADOC|5|8|0|Data documento DATA74TER|5|8|0|Data per art. 74 ter MESELIQ|2|2|0|Mese per liquidazione differita NUMDOC|1|7|0|Numero documento +NUMDOCEXT|1|50|0|Numero documento esteso TIPODOC|1|2|0|Tipo documento CODCAUS|1|3|0|Codice causale DESCR|1|50|0|Descrizione