Corretta gestione abbuoni
git-svn-id: svn://10.65.10.50/trunk@1729 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
3efc5de8c8
commit
a7ca6ce82d
2506
cg/cg2100.cpp
2506
cg/cg2100.cpp
File diff suppressed because it is too large
Load Diff
258
cg/cg2100.h
258
cg/cg2100.h
@ -1,129 +1,129 @@
|
||||
#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_COFICLIENTE 155
|
||||
#define F_FORNITORE 161
|
||||
#define F_RAGSOCFORNITORE 162
|
||||
#define F_PIVAFORNITORE 164
|
||||
#define F_COFIFORNITORE 165
|
||||
#define F_GRUPPOCLIFO 170
|
||||
#define F_CONTOCLIFO 171
|
||||
#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_PROVVISORIO 129
|
||||
#define F_TIPOMOV 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_VALUTAINTRA 141
|
||||
#define F_CAMBIOINTRA 142
|
||||
#define F_STAMPATO 143
|
||||
#define F_REGST 144
|
||||
#define F_SHEETCG 190
|
||||
#define F_SHEETIVA 191
|
||||
|
||||
// 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
|
||||
|
||||
// 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
|
||||
|
||||
// Maschera incasso/pagamento immediato
|
||||
#define I_SEZIONE1 201
|
||||
#define I_IMPORTO1 202
|
||||
#define I_SOTTOCONTO 203
|
||||
|
||||
#define I_SEZIONE2 210
|
||||
#define I_IMPORTO2 211
|
||||
#define I_GRUPPO2 212
|
||||
#define I_CONTO2 213
|
||||
#define I_SOTTOCONTO2 214
|
||||
|
||||
#define I_SEZIONE3 220
|
||||
#define I_IMPORTO3 221
|
||||
#define I_GRUPPO3 222
|
||||
#define I_CONTO3 223
|
||||
#define I_SOTTOCONTO3 224
|
||||
|
||||
#define I_SEZIONE4 230
|
||||
#define I_IMPORTO4 231
|
||||
#define I_GRUPPO4 232
|
||||
#define I_CONTO4 233
|
||||
#define I_SOTTOCONTO4 234
|
||||
|
||||
// Saldaconto
|
||||
#define S_TOTDOC 301
|
||||
#define S_TOTDOCVAL 302
|
||||
#define S_VALUTA 303
|
||||
#define S_DATACAMBIO 304
|
||||
#define S_CAMBIO 305
|
||||
#define S_TIPORIGA 306
|
||||
|
||||
// copie 2a pag.
|
||||
#define K_CODDITTA 401
|
||||
#define K_RAGSOC 402
|
||||
#define K_DATAREG 403
|
||||
#define K_NUMREG 404
|
||||
#define K_CODCAUS 405
|
||||
#define K_DESCRCAUS 406
|
||||
#define K_DOCUMENTO 407
|
||||
#define K_TIPODOC 408
|
||||
#define K_PROTIVA 409
|
||||
#define K_PROVVISORIO 410
|
||||
#define K_DESCR 411
|
||||
#define K_DATADOC 412
|
||||
#define K_NUMDOC 413
|
||||
#define K_ANNOES 414
|
||||
#define K_DATACOMP 415
|
||||
|
||||
#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_COFICLIENTE 155
|
||||
#define F_FORNITORE 161
|
||||
#define F_RAGSOCFORNITORE 162
|
||||
#define F_PIVAFORNITORE 164
|
||||
#define F_COFIFORNITORE 165
|
||||
#define F_GRUPPOCLIFO 170
|
||||
#define F_CONTOCLIFO 171
|
||||
#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_PROVVISORIO 129
|
||||
#define F_TIPOMOV 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_VALUTAINTRA 141
|
||||
#define F_CAMBIOINTRA 142
|
||||
#define F_STAMPATO 143
|
||||
#define F_REGST 144
|
||||
#define F_SHEETCG 190
|
||||
#define F_SHEETIVA 191
|
||||
|
||||
// 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
|
||||
|
||||
// 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
|
||||
|
||||
// Maschera incasso/pagamento immediato
|
||||
#define I_SEZIONE1 201
|
||||
#define I_IMPORTO1 202
|
||||
#define I_SOTTOCONTO 203
|
||||
|
||||
#define I_SEZIONE2 210
|
||||
#define I_IMPORTO2 211
|
||||
#define I_GRUPPO2 212
|
||||
#define I_CONTO2 213
|
||||
#define I_SOTTOCONTO2 214
|
||||
|
||||
#define I_SEZIONE3 220
|
||||
#define I_IMPORTO3 221
|
||||
#define I_GRUPPO3 222
|
||||
#define I_CONTO3 223
|
||||
#define I_SOTTOCONTO3 224
|
||||
|
||||
#define I_SEZIONE4 230
|
||||
#define I_IMPORTO4 231
|
||||
#define I_GRUPPO4 232
|
||||
#define I_CONTO4 233
|
||||
#define I_SOTTOCONTO4 234
|
||||
|
||||
// Saldaconto
|
||||
#define S_TOTDOC 301
|
||||
#define S_TOTDOCVAL 302
|
||||
#define S_VALUTA 303
|
||||
#define S_DATACAMBIO 304
|
||||
#define S_CAMBIO 305
|
||||
#define S_TIPORIGA 306
|
||||
|
||||
// copie 2a pag.
|
||||
#define K_CODDITTA 401
|
||||
#define K_RAGSOC 402
|
||||
#define K_DATAREG 403
|
||||
#define K_NUMREG 404
|
||||
#define K_CODCAUS 405
|
||||
#define K_DESCRCAUS 406
|
||||
#define K_DOCUMENTO 407
|
||||
#define K_TIPODOC 408
|
||||
#define K_PROTIVA 409
|
||||
#define K_PROVVISORIO 410
|
||||
#define K_DESCR 411
|
||||
#define K_DATADOC 412
|
||||
#define K_NUMDOC 413
|
||||
#define K_ANNOES 414
|
||||
#define K_DATACOMP 415
|
||||
|
||||
#endif
|
||||
|
750
cg/cg2100b.uml
750
cg/cg2100b.uml
@ -1,375 +1,375 @@
|
||||
#include "cg2100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento di sola contabilita'"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 1 "Ditta "
|
||||
FLAGS "DFR"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT K_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Ragione "
|
||||
FLAGS "D"
|
||||
MESSAGE COPY,K_RAGSOC
|
||||
END
|
||||
|
||||
NUMBER F_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FIELD NUMREG
|
||||
FLAGS "DGR"
|
||||
MESSAGE COPY,K_NUMREG
|
||||
END
|
||||
|
||||
DATE F_DATAREG
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data operazione "
|
||||
HELP "Data in cui viene effettuata l'operazione"
|
||||
FIELD DATAREG
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATAREG
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 1 4 "Data di competenza "
|
||||
HELP "Data di competenza dell'operazione"
|
||||
FIELD DATACOMP
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATACOMP
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FIELD ANNOES
|
||||
MESSAGE COPY,K_ANNOES
|
||||
FLAGS "DGZ"
|
||||
END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
HELP "Codice della causale generante l'operazione"
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUS
|
||||
USE LF_CAUSALI
|
||||
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_TIPODOC TIPODOC
|
||||
OUTPUT F_TIPOMOV TIPOMOV
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -4
|
||||
MESSAGE COPY,K_CODCAUS
|
||||
END
|
||||
|
||||
STRING F_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
HELP "Descrizione della causale generante l'operazione"
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DESCRCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CODCAUS
|
||||
MESSAGE COPY,K_DESCRCAUS
|
||||
END
|
||||
|
||||
LIST F_PROVVISORIO 1 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
HELP "Indicare se si tratta di movimento provvisorio"
|
||||
FIELD PROVVIS
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
MESSAGE COPY,K_PROVVISORIO
|
||||
END
|
||||
|
||||
STRING F_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 60 6 "Tipo documento "
|
||||
FIELD TIPODOC
|
||||
FLAGS "DG"
|
||||
MESSAGE COPY,K_TIPODOC
|
||||
END
|
||||
|
||||
NUMBER F_TIPOMOV 1
|
||||
BEGIN
|
||||
PROMPT 32 6 "Tipo movimento "
|
||||
FIELD LF_MOV->TIPOMOV
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
DATE F_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
HELP "Data del documento generante il movimento"
|
||||
FIELD DATADOC
|
||||
WARNING "Specificare una data del documento non superiore a quella dell'operazione"
|
||||
VALIDATE DATE_CMP_FUNC <= F_DATAREG
|
||||
MESSAGE COPY,K_DATADOC
|
||||
END
|
||||
|
||||
STRING F_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 56 7 "Documento n. "
|
||||
HELP "Numero del documento generante il movimento"
|
||||
FIELD NUMDOC
|
||||
WARNING "La causale impone di specificare il numero documento"
|
||||
MESSAGE COPY,K_NUMDOC
|
||||
END
|
||||
|
||||
NUMBER F_ANNOIVA 4
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_DESCAGG 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "Descrizione "
|
||||
HELP "Codice descrizione del movimento di contabilita'"
|
||||
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 8 ""
|
||||
HELP "Descrizione del movimento di contabilita'"
|
||||
FIELD DESCR
|
||||
USE %DPN KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_DESCAGG
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 1 10 "Voci per saldaconto"
|
||||
END
|
||||
|
||||
NUMBER S_TOTDOC 15 0
|
||||
BEGIN
|
||||
PROMPT 2 11 "Totale documento "
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER S_TOTDOCVAL 15 2
|
||||
BEGIN
|
||||
PROMPT 44 11 "Totale in valuta "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE ".2"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
|
||||
STRING S_VALUTA 3
|
||||
BEGIN
|
||||
PROMPT 2 13 "Valuta "
|
||||
HELP "Codice della valuta per movimento"
|
||||
FIELD LF_MOV->CODVAL
|
||||
FLAGS "U"
|
||||
GROUP 3
|
||||
USE %VAL
|
||||
INPUT CODTAB S_VALUTA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Nome@50" S0
|
||||
DISPLAY "Ultimo cambio@15" R10
|
||||
DISPLAY "Ultimo aggiornamento" D0
|
||||
OUTPUT S_VALUTA CODTAB
|
||||
OUTPUT S_CAMBIO R10
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
DATE S_DATACAMBIO
|
||||
BEGIN
|
||||
PROMPT 22 13 "Data cambio "
|
||||
FLAGS "R"
|
||||
USE CAM
|
||||
INPUT CODTAB[1,3] S_VALUTA
|
||||
INPUT CODTAB[4,11] S_DATACAMBIO
|
||||
DISPLAY "Valuta" CODTAB[1,3]
|
||||
DISPLAY "Data@10" D0
|
||||
DISPLAY "Cambio@18" R10
|
||||
OUTPUT S_VALUTA CODTAB[1,3]
|
||||
OUTPUT S_DATACAMBIO D0
|
||||
OUTPUT S_CAMBIO R10
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER S_CAMBIO 15 5
|
||||
BEGIN
|
||||
PROMPT 54 13 "Cambio "
|
||||
HELP "Cambio della valuta"
|
||||
FIELD LF_MOV->CAMBIO
|
||||
FLAGS "RU"
|
||||
GROUP 3
|
||||
PICTURE ".5"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento di sola contabilita'"
|
||||
END
|
||||
|
||||
NUMBER K_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 1 "Ditta "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Ragione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER K_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FLAGS "RD"
|
||||
END
|
||||
|
||||
DATE K_DATAREG
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data operazione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE K_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 1 4 "Data di competenza "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER K_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING K_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST K_PROVVISORIO 1 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 60 6 "Tipo documento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE K_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 38 7 "Num. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST S_TIPORIGA 1 13
|
||||
BEGIN
|
||||
PROMPT 60 7 "Riga "
|
||||
ITEM "K|Saldaconto"
|
||||
ITEM "S|Spese"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEETCG
|
||||
BEGIN
|
||||
PROMPT 0 8 ""
|
||||
ITEM "Dare@15"
|
||||
ITEM "Avere@15"
|
||||
ITEM "CF@1"
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc.@6"
|
||||
ITEM "Descrizione conto@50"
|
||||
ITEM "Codice"
|
||||
ITEM "Descrizione riga@50"
|
||||
ITEM "CF@1"
|
||||
ITEM "Gr./c@3"
|
||||
ITEM "Co./c@3"
|
||||
ITEM "Sottoc./c@6"
|
||||
ITEM "Descrizione contropartita@50"
|
||||
ITEM "Giornale"
|
||||
ITEM " @1"
|
||||
END
|
||||
|
||||
NUMBER F_DARE 15
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Sbilancio Dare "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER F_AVERE 15
|
||||
BEGIN
|
||||
PROMPT 41 -1 "Sbilancio Avere "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include "cg21cg.uml"
|
||||
|
||||
z
|
||||
#include "cg2100.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento di sola contabilita'"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 1 "Ditta "
|
||||
FLAGS "DFR"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT K_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Ragione "
|
||||
FLAGS "D"
|
||||
MESSAGE COPY,K_RAGSOC
|
||||
END
|
||||
|
||||
NUMBER F_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FIELD NUMREG
|
||||
FLAGS "DGR"
|
||||
MESSAGE COPY,K_NUMREG
|
||||
END
|
||||
|
||||
DATE F_DATAREG
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data operazione "
|
||||
HELP "Data in cui viene effettuata l'operazione"
|
||||
FIELD DATAREG
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATAREG
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 1 4 "Data di competenza "
|
||||
HELP "Data di competenza dell'operazione"
|
||||
FIELD DATACOMP
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATACOMP
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FIELD ANNOES
|
||||
MESSAGE COPY,K_ANNOES
|
||||
FLAGS "DGZ"
|
||||
END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
HELP "Codice della causale generante l'operazione"
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUS
|
||||
USE LF_CAUSALI
|
||||
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_TIPODOC TIPODOC
|
||||
OUTPUT F_TIPOMOV TIPOMOV
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -4
|
||||
MESSAGE COPY,K_CODCAUS
|
||||
END
|
||||
|
||||
STRING F_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
HELP "Descrizione della causale generante l'operazione"
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DESCRCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice" CODCAUS
|
||||
COPY OUTPUT F_CODCAUS
|
||||
MESSAGE COPY,K_DESCRCAUS
|
||||
END
|
||||
|
||||
LIST F_PROVVISORIO 1 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
HELP "Indicare se si tratta di movimento provvisorio"
|
||||
FIELD PROVVIS
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
MESSAGE COPY,K_PROVVISORIO
|
||||
END
|
||||
|
||||
STRING F_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 60 6 "Tipo documento "
|
||||
FIELD TIPODOC
|
||||
FLAGS "DG"
|
||||
MESSAGE COPY,K_TIPODOC
|
||||
END
|
||||
|
||||
NUMBER F_TIPOMOV 1
|
||||
BEGIN
|
||||
PROMPT 32 6 "Tipo movimento "
|
||||
FIELD LF_MOV->TIPOMOV
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
DATE F_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
HELP "Data del documento generante il movimento"
|
||||
FIELD DATADOC
|
||||
WARNING "Specificare una data del documento non superiore a quella dell'operazione"
|
||||
VALIDATE DATE_CMP_FUNC <= F_DATAREG
|
||||
MESSAGE COPY,K_DATADOC
|
||||
END
|
||||
|
||||
STRING F_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 56 7 "Documento n. "
|
||||
HELP "Numero del documento generante il movimento"
|
||||
FIELD NUMDOC
|
||||
WARNING "La causale impone di specificare il numero documento"
|
||||
MESSAGE COPY,K_NUMDOC
|
||||
END
|
||||
|
||||
NUMBER F_ANNOIVA 4
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_DESCAGG 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "Descrizione "
|
||||
HELP "Codice descrizione del movimento di contabilita'"
|
||||
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 8 ""
|
||||
HELP "Descrizione del movimento di contabilita'"
|
||||
FIELD DESCR
|
||||
USE %DPN KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_DESCAGG
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 1 10 "Voci per saldaconto"
|
||||
END
|
||||
|
||||
NUMBER S_TOTDOC 15 0
|
||||
BEGIN
|
||||
PROMPT 2 11 "Totale documento "
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER S_TOTDOCVAL 15 2
|
||||
BEGIN
|
||||
PROMPT 44 11 "Totale in valuta "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE ".2"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
|
||||
STRING S_VALUTA 3
|
||||
BEGIN
|
||||
PROMPT 2 13 "Valuta "
|
||||
HELP "Codice della valuta per movimento"
|
||||
FIELD LF_MOV->CODVAL
|
||||
FLAGS "U"
|
||||
GROUP 3
|
||||
USE %VAL
|
||||
INPUT CODTAB S_VALUTA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Nome@50" S0
|
||||
DISPLAY "Ultimo cambio@15" R10
|
||||
DISPLAY "Ultimo aggiornamento" D0
|
||||
OUTPUT S_VALUTA CODTAB
|
||||
OUTPUT S_CAMBIO R10
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
DATE S_DATACAMBIO
|
||||
BEGIN
|
||||
PROMPT 22 13 "Data cambio "
|
||||
FLAGS "R"
|
||||
USE CAM
|
||||
INPUT CODTAB[1,3] S_VALUTA
|
||||
INPUT CODTAB[4,11] S_DATACAMBIO
|
||||
DISPLAY "Valuta" CODTAB[1,3]
|
||||
DISPLAY "Data@10" D0
|
||||
DISPLAY "Cambio@18" R10
|
||||
OUTPUT S_VALUTA CODTAB[1,3]
|
||||
OUTPUT S_DATACAMBIO D0
|
||||
OUTPUT S_CAMBIO R10
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER S_CAMBIO 15 5
|
||||
BEGIN
|
||||
PROMPT 54 13 "Cambio "
|
||||
HELP "Cambio della valuta"
|
||||
FIELD LF_MOV->CAMBIO
|
||||
FLAGS "RU"
|
||||
GROUP 3
|
||||
PICTURE ".5"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "OPERAZIONE DI PRIMA NOTA" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento di sola contabilita'"
|
||||
END
|
||||
|
||||
NUMBER K_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 3 1 "Ditta "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Ragione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER K_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FLAGS "RD"
|
||||
END
|
||||
|
||||
DATE K_DATAREG
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data operazione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE K_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 1 4 "Data di competenza "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER K_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING K_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST K_PROVVISORIO 1 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 60 6 "Tipo documento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE K_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 38 7 "Num. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST S_TIPORIGA 1 13
|
||||
BEGIN
|
||||
PROMPT 60 7 "Riga "
|
||||
ITEM "K|Saldaconto"
|
||||
ITEM "S|Spese"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEETCG
|
||||
BEGIN
|
||||
PROMPT 0 8 ""
|
||||
ITEM "Dare@15"
|
||||
ITEM "Avere@15"
|
||||
ITEM "CF@1"
|
||||
ITEM "Gr."
|
||||
ITEM "Co."
|
||||
ITEM "Sottoc.@6"
|
||||
ITEM "Descrizione conto@50"
|
||||
ITEM "Codice"
|
||||
ITEM "Descrizione riga@50"
|
||||
ITEM "CF@1"
|
||||
ITEM "Gr./c@3"
|
||||
ITEM "Co./c@3"
|
||||
ITEM "Sottoc./c@6"
|
||||
ITEM "Descrizione contropartita@50"
|
||||
ITEM "Giornale"
|
||||
ITEM " @1"
|
||||
END
|
||||
|
||||
NUMBER F_DARE 15
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Sbilancio Dare "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER F_AVERE 15
|
||||
BEGIN
|
||||
PROMPT 41 -1 "Sbilancio Avere "
|
||||
FLAGS "DRV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include "cg21cg.uml"
|
||||
|
||||
z
|
||||
|
3924
cg/cg2102.cpp
3924
cg/cg2102.cpp
File diff suppressed because it is too large
Load Diff
464
cg/cg2102.h
464
cg/cg2102.h
@ -1,232 +1,232 @@
|
||||
#ifndef __CG2102_H
|
||||
#define __CG2102_H
|
||||
|
||||
#ifndef __RELAPP_H
|
||||
#include <relapp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __PAGAMENT_H
|
||||
#include "pagament.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CGLIB_H
|
||||
#include "cglib.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2101_H
|
||||
#include "cg2101.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2103_H
|
||||
#include "cg2103.h"
|
||||
#endif
|
||||
|
||||
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;
|
||||
TLocalisamfile* _scadenze;
|
||||
TLocalisamfile* _pagamenti;
|
||||
|
||||
TPagamento* _pag;
|
||||
|
||||
TCausale* _causale; // Causale corrente
|
||||
TLibro_giornale* _giornale; // Libro giornale corrente
|
||||
TipoIVA _iva; // Tipo di IVA corrente
|
||||
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
||||
bool _num_cli, _num_for; // Riferimento partita allineato a destra
|
||||
|
||||
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 _iva_showed; // Lo sheet IVA e' gia' stato visualizzato una volta?
|
||||
|
||||
bool _is_saldaconto; // saldaconto si/no (vede parametri e causale)
|
||||
|
||||
TSaldo_agg _saldi; // Saldi da aggiornare
|
||||
TPartite_array _partite; // Partite coinvolte
|
||||
|
||||
TMask* _msk[4]; // Maschere di query, cg, iva
|
||||
long _lastreg; // Numero ultima registrazione
|
||||
int _mode; // Modo maschera corrente
|
||||
|
||||
TBill _conto_ricavo; // Conto di ricavo del clifo
|
||||
TString_array _pag_rows;
|
||||
|
||||
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 doc_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 totale_handler(TMask_field& f, KEY key);
|
||||
static bool totdoc_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 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_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 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 cg_conto_handler(TMask_field& f, KEY key);
|
||||
static bool codpag_handler(TMask_field& f, KEY key);
|
||||
|
||||
static bool iva_notify(TSheet_field& s, int r, KEY key);
|
||||
static bool iva_handler(TMask_field& f, KEY key);
|
||||
static bool cg_notify(TSheet_field& s, int r, KEY key);
|
||||
static bool cg_handler(TMask_field& f, KEY key);
|
||||
static bool pag_notify(TSheet_field& s, int r, KEY key);
|
||||
|
||||
void reset_sheet_row(TSheet_field& s, int n);
|
||||
|
||||
protected: // TApplication
|
||||
virtual void on_firm_change();
|
||||
virtual void on_config_change();
|
||||
virtual void print();
|
||||
|
||||
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 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 void write_enable(bool) {}
|
||||
|
||||
protected:
|
||||
void check_saldi();
|
||||
void genera_incasso(const char* causimm);
|
||||
|
||||
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 is_saldaconto() const { return _is_saldaconto; }
|
||||
void set_saldaconto(bool b) { _is_saldaconto = b; }
|
||||
|
||||
void fill_sheet(TMask& m) const;
|
||||
void init_mask(TMask& m);
|
||||
|
||||
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 TMask& m);
|
||||
static real scorpora(real& imponibile, const real& percentuale);
|
||||
static bool detraibile(TToken_string& row);
|
||||
static int bill2pos(const TBill& conto, char tipo);
|
||||
|
||||
bool IVA2bill(const TCodiceIVA& iva, TBill& bill);
|
||||
int bill2contr(const TBill& c, char sezione) const;
|
||||
int bill_used(const TBill& conto) const;
|
||||
int det_used(char detraib) const;
|
||||
TBill& ivas_bill(TBill& tc);
|
||||
|
||||
bool read_caus(const char* cod, int year);
|
||||
TCausale& causale() { return *_causale; }
|
||||
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;
|
||||
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);
|
||||
void set_cgs_imp(int n, const TImporto& importo);
|
||||
TImporto get_cgs_imp(int n);
|
||||
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_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() { CHECK(_pag, "Pagamento nullo"); return *_pag; }
|
||||
void set_pagamento(const char* c, const char* d);
|
||||
void reset_pagamento();
|
||||
void set_scadenze(TMask& m);
|
||||
bool read_scadenze(TMask& m);
|
||||
void write_scadenze(const TMask& m);
|
||||
|
||||
bool edit_partite(int riga);
|
||||
|
||||
bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig);
|
||||
bool notify_cgline_deletion(int numrig);
|
||||
|
||||
bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag);
|
||||
|
||||
long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis);
|
||||
bool link_m770();
|
||||
|
||||
public:
|
||||
TPartite_array& partite() { return _partite; } // Partite editate
|
||||
int nuovo_pagamento(TPartita& p, int nriga, int rata, int rmov);
|
||||
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp);
|
||||
|
||||
TSheet_field& cgs() const;
|
||||
TSheet_field& ivas() const;
|
||||
TSheet_field& pags() const;
|
||||
TString_array& pag_rows() { return _pag_rows; }
|
||||
|
||||
TPrimanota_application();
|
||||
};
|
||||
|
||||
inline TPrimanota_application& app()
|
||||
{ return (TPrimanota_application&)main_app(); }
|
||||
|
||||
#endif
|
||||
#ifndef __CG2102_H
|
||||
#define __CG2102_H
|
||||
|
||||
#ifndef __RELAPP_H
|
||||
#include <relapp.h>
|
||||
#endif
|
||||
|
||||
#ifndef __PAGAMENT_H
|
||||
#include "pagament.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CGLIB_H
|
||||
#include "cglib.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2101_H
|
||||
#include "cg2101.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2103_H
|
||||
#include "cg2103.h"
|
||||
#endif
|
||||
|
||||
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;
|
||||
TLocalisamfile* _scadenze;
|
||||
TLocalisamfile* _pagamenti;
|
||||
|
||||
TPagamento* _pag;
|
||||
|
||||
TCausale* _causale; // Causale corrente
|
||||
TLibro_giornale* _giornale; // Libro giornale corrente
|
||||
TipoIVA _iva; // Tipo di IVA corrente
|
||||
bool _ges_val, _ges_sal; // Gestione valuta e saldaconto
|
||||
bool _num_cli, _num_for; // Riferimento partita allineato a destra
|
||||
|
||||
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 _iva_showed; // Lo sheet IVA e' gia' stato visualizzato una volta?
|
||||
|
||||
bool _is_saldaconto; // saldaconto si/no (vede parametri e causale)
|
||||
|
||||
TSaldo_agg _saldi; // Saldi da aggiornare
|
||||
TPartite_array _partite; // Partite coinvolte
|
||||
|
||||
TMask* _msk[4]; // Maschere di query, cg, iva
|
||||
long _lastreg; // Numero ultima registrazione
|
||||
int _mode; // Modo maschera corrente
|
||||
|
||||
TBill _conto_ricavo; // Conto di ricavo del clifo
|
||||
TString_array _pag_rows;
|
||||
|
||||
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 doc_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 totale_handler(TMask_field& f, KEY key);
|
||||
static bool totdoc_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 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_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 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 cg_conto_handler(TMask_field& f, KEY key);
|
||||
static bool codpag_handler(TMask_field& f, KEY key);
|
||||
|
||||
static bool iva_notify(TSheet_field& s, int r, KEY key);
|
||||
static bool iva_handler(TMask_field& f, KEY key);
|
||||
static bool cg_notify(TSheet_field& s, int r, KEY key);
|
||||
static bool cg_handler(TMask_field& f, KEY key);
|
||||
static bool pag_notify(TSheet_field& s, int r, KEY key);
|
||||
|
||||
void reset_sheet_row(TSheet_field& s, int n);
|
||||
|
||||
protected: // TApplication
|
||||
virtual void on_firm_change();
|
||||
virtual void on_config_change();
|
||||
virtual void print();
|
||||
|
||||
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 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 void write_enable(bool) {}
|
||||
|
||||
protected:
|
||||
void check_saldi();
|
||||
void genera_incasso(const char* causimm);
|
||||
|
||||
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 is_saldaconto() const { return _is_saldaconto; }
|
||||
void set_saldaconto(bool b) { _is_saldaconto = b; }
|
||||
|
||||
void fill_sheet(TMask& m) const;
|
||||
void init_mask(TMask& m);
|
||||
|
||||
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 TMask& m);
|
||||
static real scorpora(real& imponibile, const real& percentuale);
|
||||
static bool detraibile(TToken_string& row);
|
||||
static int bill2pos(const TBill& conto, char tipo);
|
||||
|
||||
bool IVA2bill(const TCodiceIVA& iva, TBill& bill);
|
||||
int bill2contr(const TBill& c, char sezione) const;
|
||||
int bill_used(const TBill& conto) const;
|
||||
int det_used(char detraib) const;
|
||||
TBill& ivas_bill(TBill& tc);
|
||||
|
||||
bool read_caus(const char* cod, int year);
|
||||
TCausale& causale() { return *_causale; }
|
||||
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;
|
||||
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);
|
||||
void set_cgs_imp(int n, const TImporto& importo);
|
||||
TImporto get_cgs_imp(int n);
|
||||
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_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() { CHECK(_pag, "Pagamento nullo"); return *_pag; }
|
||||
void set_pagamento(const char* c, const char* d);
|
||||
void reset_pagamento();
|
||||
void set_scadenze(TMask& m);
|
||||
bool read_scadenze(TMask& m);
|
||||
void write_scadenze(const TMask& m);
|
||||
|
||||
bool edit_partite(int riga);
|
||||
|
||||
bool notify_cgline_deletion(TPartita& partita, long nreg, int numrig);
|
||||
bool notify_cgline_deletion(int numrig);
|
||||
|
||||
bool notify_edit_pagamento(TPartita& partita, TRectype& new_pag);
|
||||
|
||||
long calcola_m770(int tipo_coll, real& spese, real& compenso, real& iva, real& ritfis);
|
||||
bool link_m770();
|
||||
|
||||
public:
|
||||
TPartite_array& partite() { return _partite; } // Partite editate
|
||||
int nuovo_pagamento(TPartita& p, int nriga, int rata, int rmov);
|
||||
bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp);
|
||||
|
||||
TSheet_field& cgs() const;
|
||||
TSheet_field& ivas() const;
|
||||
TSheet_field& pags() const;
|
||||
TString_array& pag_rows() { return _pag_rows; }
|
||||
|
||||
TPrimanota_application();
|
||||
};
|
||||
|
||||
inline TPrimanota_application& app()
|
||||
{ return (TPrimanota_application&)main_app(); }
|
||||
|
||||
#endif
|
||||
|
1368
cg/cg2105.cpp
1368
cg/cg2105.cpp
File diff suppressed because it is too large
Load Diff
774
cg/cg21cg.uml
774
cg/cg21cg.uml
@ -1,387 +1,387 @@
|
||||
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 ""
|
||||
HELP "Codice della descrizione aggiuntiva della riga"
|
||||
FLAGS "UZ"
|
||||
USE %DPN
|
||||
INPUT CODTAB 108
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
INPUT CODTAB 108
|
||||
OUTPUT 108 CODTAB
|
||||
OUTPUT 109 S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING 109 50
|
||||
BEGIN
|
||||
PROMPT 12 2 ""
|
||||
USE %DPN KEY 2
|
||||
INPUT S0 109
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT 108
|
||||
HELP "Descrizione aggiuntiva della riga"
|
||||
FIELD DESCR
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 66 5
|
||||
BEGIN
|
||||
PROMPT 1 4 "Conto principale"
|
||||
END
|
||||
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 5 "Dare "
|
||||
HELP "Importo 'dare' del conto della riga"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 102 15
|
||||
BEGIN
|
||||
PROMPT 42 5 "Avere "
|
||||
HELP "Importo 'avere' del conto della riga"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
LIST 103 1 12
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo "
|
||||
HELP "Tipo del conto principale della riga"
|
||||
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 "
|
||||
HELP "Codice del conto delle riga"
|
||||
END
|
||||
|
||||
NUMBER 105 3
|
||||
BEGIN
|
||||
PROMPT 32 6 "Conto "
|
||||
HELP "Codice del conto delle riga"
|
||||
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
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT 103 TMCF
|
||||
OUTPUT 104 GRUPPO
|
||||
OUTPUT 105 CONTO
|
||||
OUTPUT 107 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE DIRTY,106|DIRTY,206|DIRTY,306
|
||||
WARNING "Conto inesistente o mancante sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 106 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Sottoconto "
|
||||
HELP "Codice del conto delle riga"
|
||||
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
|
||||
WARNING "Sottoconto inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 206 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Cliente "
|
||||
HELP "Codice del cliente delle riga"
|
||||
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 207 RAGSOC
|
||||
MESSAGE COPY,106
|
||||
ADD RUN cg0 -1 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 306 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Fornitore "
|
||||
HELP "Codice del fornitore delle riga"
|
||||
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 F
|
||||
MESSAGE COPY,106
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 107 50
|
||||
BEGIN
|
||||
PROMPT 2 7 "Descriz. "
|
||||
HELP "Descrizione del conto delle riga"
|
||||
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 "
|
||||
HELP "Ragione sociale del cliente delle riga"
|
||||
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 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 307 50
|
||||
BEGIN
|
||||
PROMPT 2 7 "Fornitore "
|
||||
HELP "Ragione sociale del fonitore delle riga"
|
||||
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 F
|
||||
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 "
|
||||
HELP "Tipo del conto di contropartita della riga"
|
||||
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 "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
END
|
||||
|
||||
NUMBER 112 3
|
||||
BEGIN
|
||||
PROMPT 32 10 "Conto "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
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
|
||||
MESSAGE DIRTY,113|DIRTY,213|DIRTY,313
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 3 113 213 313
|
||||
END
|
||||
|
||||
NUMBER 113 6
|
||||
BEGIN
|
||||
PROMPT 45 10 "Sottoconto "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Codice del cliente di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Codice del fornitore di contropartita delle riga"
|
||||
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. "
|
||||
HELP "Descrizione del conto di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Ragione sociale del cliente di contropartita delle riga"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
COPY USE 207
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC 214
|
||||
COPY DISPLAY 207
|
||||
COPY OUTPUT 213
|
||||
ADD RUN cg0 -1 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 314 50
|
||||
BEGIN
|
||||
PROMPT 2 11 "Fornitore "
|
||||
HELP "Ragione sociale del fornitore di contropartita delle riga"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
COPY USE 307
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC 314
|
||||
COPY DISPLAY 307
|
||||
COPY OUTPUT 313
|
||||
ADD RUN cg0 -1 F
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 115 7
|
||||
BEGIN
|
||||
PROMPT 2 13 "Riga giornale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST 116 20
|
||||
BEGIN
|
||||
PROMPT 30 13 "Tipo riga "
|
||||
ITEM " |Sola contabilita'"
|
||||
ITEM "C|Gestione saldaconto"
|
||||
ITEM "D|IVA detraibile"
|
||||
ITEM "F|Ritenute fiscali"
|
||||
ITEM "I|Riga di IVA"
|
||||
ITEM "K|Riga Cliente/Fornitore"
|
||||
ITEM "N|IVA non detraibile"
|
||||
ITEM "S|Ritenute sociali"
|
||||
ITEM "T|Totale documento"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -14 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -24 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -34 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
|
||||
BUTTON 100 9 2
|
||||
BEGIN
|
||||
PROMPT -44 -1 "Partite"
|
||||
MESSAGE EXIT,K_DEL
|
||||
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 ""
|
||||
HELP "Codice della descrizione aggiuntiva della riga"
|
||||
FLAGS "UZ"
|
||||
USE %DPN
|
||||
INPUT CODTAB 108
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
INPUT CODTAB 108
|
||||
OUTPUT 108 CODTAB
|
||||
OUTPUT 109 S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING 109 50
|
||||
BEGIN
|
||||
PROMPT 12 2 ""
|
||||
USE %DPN KEY 2
|
||||
INPUT S0 109
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT 108
|
||||
HELP "Descrizione aggiuntiva della riga"
|
||||
FIELD DESCR
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 66 5
|
||||
BEGIN
|
||||
PROMPT 1 4 "Conto principale"
|
||||
END
|
||||
|
||||
NUMBER 101 15
|
||||
BEGIN
|
||||
PROMPT 2 5 "Dare "
|
||||
HELP "Importo 'dare' del conto della riga"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
NUMBER 102 15
|
||||
BEGIN
|
||||
PROMPT 42 5 "Avere "
|
||||
HELP "Importo 'avere' del conto della riga"
|
||||
FLAGS "RV"
|
||||
PICTURE "."
|
||||
END
|
||||
|
||||
LIST 103 1 12
|
||||
BEGIN
|
||||
PROMPT 2 6 "Tipo "
|
||||
HELP "Tipo del conto principale della riga"
|
||||
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 "
|
||||
HELP "Codice del conto delle riga"
|
||||
END
|
||||
|
||||
NUMBER 105 3
|
||||
BEGIN
|
||||
PROMPT 32 6 "Conto "
|
||||
HELP "Codice del conto delle riga"
|
||||
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
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT 103 TMCF
|
||||
OUTPUT 104 GRUPPO
|
||||
OUTPUT 105 CONTO
|
||||
OUTPUT 107 DESCR
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE DIRTY,106|DIRTY,206|DIRTY,306
|
||||
WARNING "Conto inesistente o mancante sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 106 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Sottoconto "
|
||||
HELP "Codice del conto delle riga"
|
||||
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
|
||||
WARNING "Sottoconto inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 206 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Cliente "
|
||||
HELP "Codice del cliente delle riga"
|
||||
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 207 RAGSOC
|
||||
MESSAGE COPY,106
|
||||
ADD RUN cg0 -1 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 306 6
|
||||
BEGIN
|
||||
PROMPT 45 6 "Fornitore "
|
||||
HELP "Codice del fornitore delle riga"
|
||||
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 F
|
||||
MESSAGE COPY,106
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 107 50
|
||||
BEGIN
|
||||
PROMPT 2 7 "Descriz. "
|
||||
HELP "Descrizione del conto delle riga"
|
||||
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 "
|
||||
HELP "Ragione sociale del cliente delle riga"
|
||||
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 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 307 50
|
||||
BEGIN
|
||||
PROMPT 2 7 "Fornitore "
|
||||
HELP "Ragione sociale del fonitore delle riga"
|
||||
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 F
|
||||
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 "
|
||||
HELP "Tipo del conto di contropartita della riga"
|
||||
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 "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
END
|
||||
|
||||
NUMBER 112 3
|
||||
BEGIN
|
||||
PROMPT 32 10 "Conto "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
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
|
||||
MESSAGE DIRTY,113|DIRTY,213|DIRTY,313
|
||||
CHECKTYPE NORMAL
|
||||
VALIDATE REQIF_FUNC 3 113 213 313
|
||||
END
|
||||
|
||||
NUMBER 113 6
|
||||
BEGIN
|
||||
PROMPT 45 10 "Sottoconto "
|
||||
HELP "Codice del conto di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Codice del cliente di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Codice del fornitore di contropartita delle riga"
|
||||
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. "
|
||||
HELP "Descrizione del conto di contropartita delle riga"
|
||||
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 "
|
||||
HELP "Ragione sociale del cliente di contropartita delle riga"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
COPY USE 207
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC 214
|
||||
COPY DISPLAY 207
|
||||
COPY OUTPUT 213
|
||||
ADD RUN cg0 -1 C
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
STRING 314 50
|
||||
BEGIN
|
||||
PROMPT 2 11 "Fornitore "
|
||||
HELP "Ragione sociale del fornitore di contropartita delle riga"
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
COPY USE 307
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC 314
|
||||
COPY DISPLAY 307
|
||||
COPY OUTPUT 313
|
||||
ADD RUN cg0 -1 F
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente sulla riga contabile"
|
||||
END
|
||||
|
||||
NUMBER 115 7
|
||||
BEGIN
|
||||
PROMPT 2 13 "Riga giornale "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST 116 20
|
||||
BEGIN
|
||||
PROMPT 30 13 "Tipo riga "
|
||||
ITEM " |Sola contabilita'"
|
||||
ITEM "C|Gestione saldaconto"
|
||||
ITEM "D|IVA detraibile"
|
||||
ITEM "F|Ritenute fiscali"
|
||||
ITEM "I|Riga di IVA"
|
||||
ITEM "K|Riga Cliente/Fornitore"
|
||||
ITEM "N|IVA non detraibile"
|
||||
ITEM "S|Ritenute sociali"
|
||||
ITEM "T|Totale documento"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -14 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 9 2
|
||||
BEGIN
|
||||
PROMPT -24 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 9 2
|
||||
BEGIN
|
||||
PROMPT -34 -1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
|
||||
BUTTON 100 9 2
|
||||
BEGIN
|
||||
PROMPT -44 -1 "Partite"
|
||||
MESSAGE EXIT,K_DEL
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
3600
cg/pagament.cpp
3600
cg/pagament.cpp
File diff suppressed because it is too large
Load Diff
698
cg/pagament.h
698
cg/pagament.h
@ -1,347 +1,351 @@
|
||||
#ifndef __PAGAMENT_H
|
||||
#define __PAGAMENT_H
|
||||
|
||||
#ifndef __ASSOC_H
|
||||
#include <assoc.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MSKSHEET_H
|
||||
#include <msksheet.h>
|
||||
#endif
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CONTO_H
|
||||
#include "conto.h"
|
||||
#endif
|
||||
|
||||
// Error codes for pagation
|
||||
const word P_OK = 0x0000; // ok
|
||||
const word P_RSUM = 0x0001; // percentages do not sum up to 100
|
||||
const word P_IMPNC = 0x0002; // inconsistenza percentuali / importi
|
||||
const word P_SCAD = 0x0004; // scadenze non consecutive
|
||||
const word P_INIZIO = 0x0008; // data 1a rata < data inizio pagamenti
|
||||
|
||||
class TPagamento : public TObject
|
||||
{
|
||||
TString _code; // codice
|
||||
TString _name; // descrizione
|
||||
real _imponibile; // imponibile da affettare
|
||||
real _imposta; // imposta da affettare
|
||||
real _spese; // spese da affettare
|
||||
TDistrib _slicer; // affettatrice
|
||||
bool _new; // non letto da database
|
||||
TArray _rate; // rate medesime
|
||||
char _inscad; // inizio scadenze: S1
|
||||
bool _mcomm; // mese commerciale: B0
|
||||
bool _rdiff; // rate differenziate: B1
|
||||
int _tpr; // tipo prima rata: S3
|
||||
bool _dirty; // modificato (strutturalmente!)
|
||||
TDate _inizio; // data inizio pagamenti
|
||||
bool _inited; // vero se c'e' un movimento di riferimento
|
||||
real _firstr; // importo da pagare in prima rata (o distribuire se tpr == 0)
|
||||
real _secndr; // importo da distribuire
|
||||
|
||||
int _fixd[3]; // giorni scadenza fissa, se desiderati
|
||||
int _round; // decimali arrotondamento importo
|
||||
int _int_rate;
|
||||
|
||||
int _rata_ifield(int n, int f) const;
|
||||
real _rata_rfield(int n, int f) const;
|
||||
TDate _rata_dfield(int n, int f) const;
|
||||
const char* _rata_sfield(int n, int f) const;
|
||||
|
||||
int _def_tpr; // tipo rata default
|
||||
TString16 _def_ulc; // ulteriore classificazione default
|
||||
|
||||
public:
|
||||
|
||||
// pregasi notare la straordinaria dovizia di const
|
||||
int n_rate() const { return _rate.items(); }
|
||||
bool is_new() const { return _new; }
|
||||
bool dirty() const { return _dirty; }
|
||||
|
||||
real imponibile() const { return _imponibile; }
|
||||
real imposta() const { return _imposta; }
|
||||
real spese() const { return _spese; }
|
||||
|
||||
int tipo_rata(int n) const { return _rata_ifield(n,2);}
|
||||
real perc_rata(int n) const { return _rata_rfield(n,1);}
|
||||
int scad_rata(int n) const { return _rata_ifield(n,0);}
|
||||
TDate data_rata(int n) const { return _rata_dfield(n,3);}
|
||||
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
||||
const char* ulc_rata(int n) const { return _rata_sfield(n,5);}
|
||||
char inizio_scadenza() const { return _inscad; }
|
||||
bool mese_commerciale() const { return _mcomm; }
|
||||
bool rate_differenziate() const { return _rdiff; }
|
||||
int tipo_prima_rata() const { return _tpr; }
|
||||
int decs() const { return _round; }
|
||||
|
||||
// mi scuso per la mancanza di underscore, ma mi piaceva cosi'
|
||||
bool ratapagata(int n);
|
||||
|
||||
const TString& name() const { return _name; }
|
||||
const TString& code() const { return _code; }
|
||||
const char* desc_tpr() const;
|
||||
const char* desc_tipo(int) const;
|
||||
|
||||
// giorni scadenza fissi, aggiunti poi
|
||||
void set_fixed_scad(int a, int ind) { _fixd[ind] = a; }
|
||||
|
||||
// queste vengono usate solo per movimenti editabili nella struttura
|
||||
// (da tabella pagamenti) e riaggiustano tutte le rate in accordo
|
||||
// con il parametro modificato
|
||||
void set_intervallo_rate(int i);
|
||||
void set_mese_commerciale(bool v, int& sscad);
|
||||
void set_rate_differenziate(int v);
|
||||
void set_tipo_prima_rata(int v, int sscad = -1);
|
||||
void set_numero_rate(int n, int sscad = -1);
|
||||
|
||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||
void set_code(const char* c) { _code = c; }
|
||||
void set_round(int n) { _round = n; }
|
||||
|
||||
// check consistency: returns word with errors flagged, 0 if ok
|
||||
word validate() const;
|
||||
void strerr(word err, TString& s);
|
||||
|
||||
// read/write from database
|
||||
// relapp passa i files, se no vengono aperti
|
||||
bool read(TTable* cpg = NULL, TTable* rpg = NULL);
|
||||
|
||||
// chiamabili solo da relapp, agiscono solo su %RPG
|
||||
int write(TTable& rpg);
|
||||
int rewrite(TTable& rpg);
|
||||
int remove(TTable& rpg);
|
||||
|
||||
// modifica rate manualmente o non
|
||||
TToken_string& rata(int r) { return (TToken_string&)_rate[r]; }
|
||||
TToken_string& add_rata (real perc, int day, int type, const char* ulc = "");
|
||||
TToken_string& set_rata (int index, real perc, int day, int type,
|
||||
const char* ulc = NULL, const char* imp = NULL,
|
||||
const char* data = NULL);
|
||||
// questa calcola percentuali e scadenze a partire dagli importi
|
||||
TToken_string& set_rata (int index, const real& howmuch, const TDate& date, int type,
|
||||
const char* ulc, bool pagato);
|
||||
|
||||
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
||||
// modificano anche le eventuali rate esistenti
|
||||
void set_default_type(int type, bool change_existing = TRUE);
|
||||
void set_default_ulc(const char* ulc, bool change_existing = TRUE);
|
||||
|
||||
void remove_rata(int r);
|
||||
void zap_rate () { _rate.destroy(); }
|
||||
// calcola le rate automaticamente secondo quanto specificato
|
||||
void set_rate_auto();
|
||||
// data una rata esistente, riaggiusta gli importi usando lo slicer e
|
||||
// le scadenze usando la data di inizio
|
||||
void set_imprata(int i, real r);
|
||||
|
||||
// slicer interface
|
||||
void set_total(const real& ib, const real& im, const real& sp);
|
||||
|
||||
// istanzia uno sheet field come diobue comanda
|
||||
void set_sheet(TSheet_field& sf, int sscad = -1);
|
||||
// ricalcola automaticamente tutto il ricalcolabile
|
||||
// alla modifica di una percentuale (o di un importo)
|
||||
// ritorna TRUE se non si poteva; non occorre che sia inizializzato
|
||||
// con un importo
|
||||
word recalc_rate(int row, bool is_perc_modified, const char* new_value,
|
||||
const char* scad, const char* typ, int rdiff,
|
||||
bool mcomm, bool& need_recalc);
|
||||
|
||||
// determina la prossima scadenza
|
||||
void next_scad(TDate& d, int scad, bool mcomm, int rata);
|
||||
|
||||
// se codtab non e' NULL legge da file (e da' errore se non c'e')
|
||||
// se si vuole fare un pagamento nuovo si da' il codice con set_code
|
||||
TPagamento(const char* codtab = NULL, const char* data = NULL);
|
||||
virtual ~TPagamento() {}
|
||||
};
|
||||
|
||||
|
||||
#ifndef __PARTITE_H
|
||||
#include <partite.h>
|
||||
#endif
|
||||
|
||||
class TTree_rectype : public TRectype
|
||||
{
|
||||
protected:
|
||||
TRecord_array _recarr;
|
||||
|
||||
void copy_key_to_row(TRectype& row) const;
|
||||
int fill_array();
|
||||
|
||||
protected: // TRectype
|
||||
virtual TObject* dup() const;
|
||||
|
||||
virtual int read(TBaseisamfile& f, word op = _isequal);
|
||||
virtual int next(TBaseisamfile& f);
|
||||
virtual int write(TBaseisamfile& f) const;
|
||||
virtual int rewrite(TBaseisamfile& f) const;
|
||||
virtual int remove(TBaseisamfile& f);
|
||||
|
||||
public:
|
||||
const TRecord_array& rows_array() const { return _recarr; }
|
||||
TRecord_array& rows_array() { return _recarr; }
|
||||
const TRectype& row(int r) const { return ((TRecord_array&)_recarr).row(r, FALSE); }
|
||||
TRectype& row(int r, bool create) { return _recarr.row(r, create); }
|
||||
|
||||
TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);
|
||||
TTree_rectype(int testata, int riga, const char* num);
|
||||
TTree_rectype(const TTree_rectype& t);
|
||||
virtual ~TTree_rectype() {}
|
||||
};
|
||||
|
||||
|
||||
class TRiga_scadenze : public TTree_rectype
|
||||
{
|
||||
friend class TPartita;
|
||||
friend class TRiga_partite;
|
||||
|
||||
TRiga_partite* _riga;
|
||||
|
||||
protected:
|
||||
char calcola_abbuono(TImporto& abbuono, bool val) const;
|
||||
TImporto calcola_differenza_cambio(bool update);
|
||||
|
||||
bool modifica_pagamento(const TRectype& new_pag,
|
||||
char& old_ap, TImporto& old_abb, TImporto& old_diffcam,
|
||||
char& new_ap, TImporto& new_abb, TImporto& new_diffcam);
|
||||
|
||||
protected: // TRecord_tree
|
||||
virtual TObject* dup() const { return new TRiga_scadenze(*this); }
|
||||
|
||||
public:
|
||||
int pagata() const; // Riga che chiude la rata o 0 se non pagata completamente
|
||||
|
||||
real residuo() const;
|
||||
|
||||
bool in_valuta() const;
|
||||
|
||||
TPartita& partita() const;
|
||||
TRiga_partite& riga() const { CHECK(_riga, "Riga nulla"); return *_riga; } // Riga partite
|
||||
|
||||
TImporto importo_pagato(bool val) const;
|
||||
TImporto importo_da_pagare(bool val) const;
|
||||
|
||||
TRiga_scadenze(TRiga_partite* riga);
|
||||
TRiga_scadenze(const TRiga_scadenze& s);
|
||||
virtual ~TRiga_scadenze() {}
|
||||
};
|
||||
|
||||
class TRiga_partite : public TTree_rectype
|
||||
{
|
||||
friend class TPartita;
|
||||
friend class TRiga_scadenze;
|
||||
TPartita* _partita;
|
||||
|
||||
protected:
|
||||
bool update(const TRectype& vec, const TRectype& nuo, const char* field);
|
||||
|
||||
public: // TTree_rectype
|
||||
virtual TObject* dup() const { return new TRiga_partite(*this); }
|
||||
virtual int read(TBaseisamfile& f, word op);
|
||||
|
||||
public:
|
||||
int rate() const { return _recarr.rows(); }
|
||||
TRiga_scadenze& rata(int r) const { return (TRiga_scadenze&)_recarr.row(r); }
|
||||
|
||||
int ultimo_pagamento(int rata) const;
|
||||
char sezione() const { return get_char("SEZ"); }
|
||||
|
||||
TPartita& partita() const { CHECK(_partita, "Partita nulla"); return *_partita; }
|
||||
|
||||
TRiga_partite(TPartita* game);
|
||||
TRiga_partite(const TRiga_partite& r);
|
||||
virtual ~TRiga_partite() {}
|
||||
};
|
||||
|
||||
class TPartita : public TObject
|
||||
{
|
||||
TRecord_array _part;
|
||||
TRecord_array _unassigned;
|
||||
|
||||
public: // TObject
|
||||
virtual bool ok() const { return _part.rows() > 0; }
|
||||
|
||||
public:
|
||||
TRiga_partite& riga(int r) const { return (TRiga_partite&)_part.row(r); }
|
||||
TRiga_partite& nuova_riga() { return (TRiga_partite&)_part.row(last()+1, TRUE); }
|
||||
|
||||
int succ(int r) const { return _part.succ_row(r); }
|
||||
int pred(int r) const { return _part.pred_row(r); }
|
||||
int first() const { return _part.first_row(); }
|
||||
int last() const { return _part.last_row(); }
|
||||
|
||||
bool reread();
|
||||
bool read(const TBill& clifo, int anno, const char* num);
|
||||
bool write(bool re = FALSE);
|
||||
bool rewrite() { return write(TRUE); }
|
||||
|
||||
int mov2rig(long nreg, int rmov) const;
|
||||
int rig2mov(int rmov) const;
|
||||
int prima_fattura() const;
|
||||
bool utilizzata(int r) const; // Controlla se esistono pagamenti sommati alla riga r
|
||||
|
||||
void conto(TBill& c) const { c.get(_part.key()); }
|
||||
int anno() const { return _part.key().get_int(PART_ANNO); }
|
||||
const TString& numero() const { return _part.key().get(PART_NUMPART); }
|
||||
const TString& descrizione() const { return _part.key().get(PART_DESCR); }
|
||||
|
||||
TImporto importo_speso(long numreg, int numrig) const;
|
||||
void update_reg_num(long nreg, const TRectype& mov);
|
||||
void calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImporto& imp) const;
|
||||
|
||||
bool modifica_pagamento(const TRectype& new_pag,
|
||||
char& old_ap, TImporto& old_abb, TImporto& old_diffcam,
|
||||
char& new_ap, TImporto& new_abb, TImporto& new_diffcam);
|
||||
|
||||
TPartita(const TBill& clifo, int anno, const char* num);
|
||||
TPartita();
|
||||
};
|
||||
|
||||
|
||||
class TPartite_array : private TAssoc_array
|
||||
{
|
||||
TString80 _key; // Work string
|
||||
|
||||
protected:
|
||||
const TString& key(const TBill& clifo, int anno, const char* num); // Build key for TAssoc_array
|
||||
TPartita* find(const TBill& clifo, int anno, const char* numero, bool create);
|
||||
TPartita* find(const TRectype& part, bool create);
|
||||
|
||||
public: // TAssoc_array
|
||||
virtual void destroy() { TAssoc_array::destroy(); }
|
||||
|
||||
public:
|
||||
TPartita& partita(const TBill& clifo, int anno, const char* numero);
|
||||
TPartita& partita(const TRectype& r);
|
||||
|
||||
TPartita* exist(const TBill& clifo, int anno, const char* numero) const
|
||||
{ return ((TPartite_array*)this)->find(clifo, anno, numero, FALSE); }
|
||||
|
||||
TPartita* exist(const TRectype& part) const
|
||||
{ return ((TPartite_array*)this)->find(part, FALSE); }
|
||||
|
||||
bool write(bool re = FALSE);
|
||||
bool rewrite() { return write(TRUE); }
|
||||
|
||||
int add_reg_num(long numreg, int numrig);
|
||||
TImporto importo_speso(long numreg, int numrig);
|
||||
void update_reg_num(long nreg, const TRectype& mov);
|
||||
|
||||
TPartita* first() { restart(); return next(); }
|
||||
TPartita* next() { return (TPartita*)get(); }
|
||||
|
||||
TPartite_array() {}
|
||||
virtual ~TPartite_array() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
#ifndef __PAGAMENT_H
|
||||
#define __PAGAMENT_H
|
||||
|
||||
#ifndef __ASSOC_H
|
||||
#include <assoc.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MSKSHEET_H
|
||||
#include <msksheet.h>
|
||||
#endif
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
|
||||
#ifndef __TABUTIL_H
|
||||
#include <tabutil.h>
|
||||
#endif
|
||||
|
||||
#ifndef __CONTO_H
|
||||
#include "conto.h"
|
||||
#endif
|
||||
|
||||
// Error codes for pagation
|
||||
const word P_OK = 0x0000; // ok
|
||||
const word P_RSUM = 0x0001; // percentages do not sum up to 100
|
||||
const word P_IMPNC = 0x0002; // inconsistenza percentuali / importi
|
||||
const word P_SCAD = 0x0004; // scadenze non consecutive
|
||||
const word P_INIZIO = 0x0008; // data 1a rata < data inizio pagamenti
|
||||
|
||||
class TPagamento : public TObject
|
||||
{
|
||||
TString _code; // codice
|
||||
TString _name; // descrizione
|
||||
real _imponibile; // imponibile da affettare
|
||||
real _imposta; // imposta da affettare
|
||||
real _spese; // spese da affettare
|
||||
TDistrib _slicer; // affettatrice
|
||||
bool _new; // non letto da database
|
||||
TArray _rate; // rate medesime
|
||||
char _inscad; // inizio scadenze: S1
|
||||
bool _mcomm; // mese commerciale: B0
|
||||
bool _rdiff; // rate differenziate: B1
|
||||
int _tpr; // tipo prima rata: S3
|
||||
bool _dirty; // modificato (strutturalmente!)
|
||||
TDate _inizio; // data inizio pagamenti
|
||||
bool _inited; // vero se c'e' un movimento di riferimento
|
||||
real _firstr; // importo da pagare in prima rata (o distribuire se tpr == 0)
|
||||
real _secndr; // importo da distribuire
|
||||
|
||||
int _fixd[3]; // giorni scadenza fissa, se desiderati
|
||||
int _round; // decimali arrotondamento importo
|
||||
int _int_rate;
|
||||
|
||||
int _rata_ifield(int n, int f) const;
|
||||
real _rata_rfield(int n, int f) const;
|
||||
TDate _rata_dfield(int n, int f) const;
|
||||
const char* _rata_sfield(int n, int f) const;
|
||||
|
||||
int _def_tpr; // tipo rata default
|
||||
TString16 _def_ulc; // ulteriore classificazione default
|
||||
|
||||
public:
|
||||
|
||||
// pregasi notare la straordinaria dovizia di const
|
||||
int n_rate() const { return _rate.items(); }
|
||||
bool is_new() const { return _new; }
|
||||
bool dirty() const { return _dirty; }
|
||||
|
||||
real imponibile() const { return _imponibile; }
|
||||
real imposta() const { return _imposta; }
|
||||
real spese() const { return _spese; }
|
||||
|
||||
int tipo_rata(int n) const { return _rata_ifield(n,2);}
|
||||
real perc_rata(int n) const { return _rata_rfield(n,1);}
|
||||
int scad_rata(int n) const { return _rata_ifield(n,0);}
|
||||
TDate data_rata(int n) const { return _rata_dfield(n,3);}
|
||||
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
||||
const char* ulc_rata(int n) const { return _rata_sfield(n,5);}
|
||||
char inizio_scadenza() const { return _inscad; }
|
||||
bool mese_commerciale() const { return _mcomm; }
|
||||
bool rate_differenziate() const { return _rdiff; }
|
||||
int tipo_prima_rata() const { return _tpr; }
|
||||
int decs() const { return _round; }
|
||||
|
||||
// mi scuso per la mancanza di underscore, ma mi piaceva cosi'
|
||||
bool ratapagata(int n);
|
||||
|
||||
const TString& name() const { return _name; }
|
||||
const TString& code() const { return _code; }
|
||||
const char* desc_tpr() const;
|
||||
const char* desc_tipo(int) const;
|
||||
|
||||
// giorni scadenza fissi, aggiunti poi
|
||||
void set_fixed_scad(int a, int ind) { _fixd[ind] = a; }
|
||||
|
||||
// queste vengono usate solo per movimenti editabili nella struttura
|
||||
// (da tabella pagamenti) e riaggiustano tutte le rate in accordo
|
||||
// con il parametro modificato
|
||||
void set_intervallo_rate(int i);
|
||||
void set_mese_commerciale(bool v, int& sscad);
|
||||
void set_rate_differenziate(int v);
|
||||
void set_tipo_prima_rata(int v, int sscad = -1);
|
||||
void set_numero_rate(int n, int sscad = -1);
|
||||
|
||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||
void set_code(const char* c) { _code = c; }
|
||||
void set_round(int n) { _round = n; }
|
||||
|
||||
// check consistency: returns word with errors flagged, 0 if ok
|
||||
word validate() const;
|
||||
void strerr(word err, TString& s);
|
||||
|
||||
// read/write from database
|
||||
// relapp passa i files, se no vengono aperti
|
||||
bool read(TTable* cpg = NULL, TTable* rpg = NULL);
|
||||
|
||||
// chiamabili solo da relapp, agiscono solo su %RPG
|
||||
int write(TTable& rpg);
|
||||
int rewrite(TTable& rpg);
|
||||
int remove(TTable& rpg);
|
||||
|
||||
// modifica rate manualmente o non
|
||||
TToken_string& rata(int r) { return (TToken_string&)_rate[r]; }
|
||||
TToken_string& add_rata (real perc, int day, int type, const char* ulc = "");
|
||||
TToken_string& set_rata (int index, real perc, int day, int type,
|
||||
const char* ulc = NULL, const char* imp = NULL,
|
||||
const char* data = NULL);
|
||||
// questa calcola percentuali e scadenze a partire dagli importi
|
||||
TToken_string& set_rata (int index, const real& howmuch, const TDate& date, int type,
|
||||
const char* ulc, bool pagato);
|
||||
|
||||
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
||||
// modificano anche le eventuali rate esistenti
|
||||
void set_default_type(int type, bool change_existing = TRUE);
|
||||
void set_default_ulc(const char* ulc, bool change_existing = TRUE);
|
||||
|
||||
void remove_rata(int r);
|
||||
void zap_rate () { _rate.destroy(); }
|
||||
// calcola le rate automaticamente secondo quanto specificato
|
||||
void set_rate_auto();
|
||||
// data una rata esistente, riaggiusta gli importi usando lo slicer e
|
||||
// le scadenze usando la data di inizio
|
||||
void set_imprata(int i, real r);
|
||||
|
||||
// slicer interface
|
||||
void set_total(const real& ib, const real& im, const real& sp);
|
||||
|
||||
// istanzia uno sheet field come diobue comanda
|
||||
void set_sheet(TSheet_field& sf, int sscad = -1);
|
||||
// ricalcola automaticamente tutto il ricalcolabile
|
||||
// alla modifica di una percentuale (o di un importo)
|
||||
// ritorna TRUE se non si poteva; non occorre che sia inizializzato
|
||||
// con un importo
|
||||
word recalc_rate(int row, bool is_perc_modified, const char* new_value,
|
||||
const char* scad, const char* typ, int rdiff,
|
||||
bool mcomm, bool& need_recalc);
|
||||
|
||||
// determina la prossima scadenza
|
||||
void next_scad(TDate& d, int scad, bool mcomm, int rata);
|
||||
|
||||
// se codtab non e' NULL legge da file (e da' errore se non c'e')
|
||||
// se si vuole fare un pagamento nuovo si da' il codice con set_code
|
||||
TPagamento(const char* codtab = NULL, const char* data = NULL);
|
||||
virtual ~TPagamento() {}
|
||||
};
|
||||
|
||||
|
||||
#ifndef __PARTITE_H
|
||||
#include <partite.h>
|
||||
#endif
|
||||
|
||||
class TTree_rectype : public TRectype
|
||||
{
|
||||
protected:
|
||||
TRecord_array _recarr;
|
||||
|
||||
void copy_key_to_row(TRectype& row) const;
|
||||
int fill_array();
|
||||
|
||||
protected: // TRectype
|
||||
virtual TObject* dup() const;
|
||||
|
||||
virtual int read(TBaseisamfile& f, word op = _isequal);
|
||||
virtual int next(TBaseisamfile& f);
|
||||
virtual int write(TBaseisamfile& f) const;
|
||||
virtual int rewrite(TBaseisamfile& f) const;
|
||||
virtual int remove(TBaseisamfile& f);
|
||||
|
||||
public:
|
||||
const TRecord_array& rows_array() const { return _recarr; }
|
||||
TRecord_array& rows_array() { return _recarr; }
|
||||
const TRectype& row(int r) const { return ((TRecord_array&)_recarr).row(r, FALSE); }
|
||||
TRectype& row(int r, bool create) { return _recarr.row(r, create); }
|
||||
|
||||
int last() const { return _recarr.last_row(); }
|
||||
int pred(int r) const { return _recarr.pred_row(r); }
|
||||
|
||||
TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);
|
||||
TTree_rectype(int testata, int riga, const char* num);
|
||||
TTree_rectype(const TTree_rectype& t);
|
||||
virtual ~TTree_rectype() {}
|
||||
};
|
||||
|
||||
|
||||
class TRiga_scadenze : public TTree_rectype
|
||||
{
|
||||
friend class TPartita;
|
||||
friend class TRiga_partite;
|
||||
|
||||
TRiga_partite* _riga;
|
||||
|
||||
protected:
|
||||
char calcola_abbuono(TImporto& abbuono, bool val) const;
|
||||
TImporto calcola_differenza_cambio(bool update);
|
||||
|
||||
bool modifica_pagamento(const TRectype& new_pag,
|
||||
char& old_ap, TImporto& old_abb, TImporto& old_diffcam,
|
||||
char& new_ap, TImporto& new_abb, TImporto& new_diffcam);
|
||||
|
||||
protected: // TRecord_tree
|
||||
virtual TObject* dup() const { return new TRiga_scadenze(*this); }
|
||||
|
||||
public:
|
||||
int pagata() const; // Riga che chiude la rata o 0 se non pagata completamente
|
||||
|
||||
real residuo() const;
|
||||
|
||||
bool in_valuta() const;
|
||||
|
||||
TPartita& partita() const;
|
||||
TRiga_partite& riga() const { CHECK(_riga, "Riga nulla"); return *_riga; } // Riga partite
|
||||
|
||||
TImporto importo_pagato(bool val) const;
|
||||
TImporto importo_da_pagare(bool val) const;
|
||||
|
||||
TRiga_scadenze(TRiga_partite* riga);
|
||||
TRiga_scadenze(const TRiga_scadenze& s);
|
||||
virtual ~TRiga_scadenze() {}
|
||||
};
|
||||
|
||||
class TRiga_partite : public TTree_rectype
|
||||
{
|
||||
friend class TPartita;
|
||||
friend class TRiga_scadenze;
|
||||
TPartita* _partita;
|
||||
|
||||
protected:
|
||||
bool update(const TRectype& vec, const TRectype& nuo, const char* field);
|
||||
bool update(const TImporto& vec, const TImporto& nuo, const char* sez, const char* val);
|
||||
|
||||
public: // TTree_rectype
|
||||
virtual TObject* dup() const { return new TRiga_partite(*this); }
|
||||
virtual int read(TBaseisamfile& f, word op);
|
||||
|
||||
public:
|
||||
int rate() const { return _recarr.rows(); }
|
||||
TRiga_scadenze& rata(int r) const { return (TRiga_scadenze&)_recarr.row(r); }
|
||||
|
||||
int ultimo_pagamento(int rata) const;
|
||||
char sezione() const { return get_char("SEZ"); }
|
||||
|
||||
TPartita& partita() const { CHECK(_partita, "Partita nulla"); return *_partita; }
|
||||
|
||||
TRiga_partite(TPartita* game);
|
||||
TRiga_partite(const TRiga_partite& r);
|
||||
virtual ~TRiga_partite() {}
|
||||
};
|
||||
|
||||
class TPartita : public TObject
|
||||
{
|
||||
TRecord_array _part;
|
||||
TRecord_array _unassigned;
|
||||
|
||||
public: // TObject
|
||||
virtual bool ok() const { return _part.rows() > 0; }
|
||||
|
||||
public:
|
||||
TRiga_partite& riga(int r) const { return (TRiga_partite&)_part.row(r); }
|
||||
TRiga_partite& nuova_riga() { return (TRiga_partite&)_part.row(last()+1, TRUE); }
|
||||
|
||||
int succ(int r) const { return _part.succ_row(r); }
|
||||
int pred(int r) const { return _part.pred_row(r); }
|
||||
int first() const { return _part.first_row(); }
|
||||
int last() const { return _part.last_row(); }
|
||||
|
||||
bool reread();
|
||||
bool read(const TBill& clifo, int anno, const char* num);
|
||||
bool write(bool re = FALSE);
|
||||
bool rewrite() { return write(TRUE); }
|
||||
|
||||
int mov2rig(long nreg, int rmov) const;
|
||||
int rig2mov(int rmov) const;
|
||||
int prima_fattura() const;
|
||||
bool utilizzata(int r) const; // Controlla se esistono pagamenti sommati alla riga r
|
||||
|
||||
void conto(TBill& c) const { c.get(_part.key()); }
|
||||
int anno() const { return _part.key().get_int(PART_ANNO); }
|
||||
const TString& numero() const { return _part.key().get(PART_NUMPART); }
|
||||
const TString& descrizione() const { return _part.key().get(PART_DESCR); }
|
||||
|
||||
TImporto importo_speso(long numreg, int numrig) const;
|
||||
void update_reg_num(long nreg, const TRectype& mov);
|
||||
void calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImporto& imp) const;
|
||||
|
||||
bool modifica_pagamento(const TRectype& new_pag,
|
||||
char& old_ap, TImporto& old_abb, TImporto& old_diffcam,
|
||||
char& new_ap, TImporto& new_abb, TImporto& new_diffcam);
|
||||
|
||||
TPartita(const TBill& clifo, int anno, const char* num);
|
||||
TPartita();
|
||||
};
|
||||
|
||||
|
||||
class TPartite_array : private TAssoc_array
|
||||
{
|
||||
TString80 _key; // Work string
|
||||
|
||||
protected:
|
||||
const TString& key(const TBill& clifo, int anno, const char* num); // Build key for TAssoc_array
|
||||
TPartita* find(const TBill& clifo, int anno, const char* numero, bool create);
|
||||
TPartita* find(const TRectype& part, bool create);
|
||||
|
||||
public: // TAssoc_array
|
||||
virtual void destroy() { TAssoc_array::destroy(); }
|
||||
|
||||
public:
|
||||
TPartita& partita(const TBill& clifo, int anno, const char* numero);
|
||||
TPartita& partita(const TRectype& r);
|
||||
|
||||
TPartita* exist(const TBill& clifo, int anno, const char* numero) const
|
||||
{ return ((TPartite_array*)this)->find(clifo, anno, numero, FALSE); }
|
||||
|
||||
TPartita* exist(const TRectype& part) const
|
||||
{ return ((TPartite_array*)this)->find(part, FALSE); }
|
||||
|
||||
bool write(bool re = FALSE);
|
||||
bool rewrite() { return write(TRUE); }
|
||||
|
||||
int add_reg_num(long numreg, int numrig);
|
||||
TImporto importo_speso(long numreg, int numrig);
|
||||
void update_reg_num(long nreg, const TRectype& mov);
|
||||
|
||||
TPartita* first() { restart(); return next(); }
|
||||
TPartita* next() { return (TPartita*)get(); }
|
||||
|
||||
TPartite_array() {}
|
||||
virtual ~TPartite_array() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user