-
Notifications
You must be signed in to change notification settings - Fork 0
/
In_Gerencial.sql
115 lines (94 loc) · 3.99 KB
/
In_Gerencial.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
create or alter procedure IN_SUPRIMENTO (
IDSESSAO integer not null,
VALOR numeric(15,2) not null,
TIPO smallint)
as
declare variable LCXAID type of column CX001.ID;
declare variable SLINEBREAK char(23);
declare variable LCXAC001ABTDATA type of column CX001.C001ABTDATA;
declare variable LCXAC002ABTHORA type of column CX001.C002ABTHORA;
declare variable LCXAC003NATOP type of column CX001.C003NATOP;
declare variable LCXAC004CODGERENTE type of column CX001.C004CODGERENTE;
declare variable LCXAC005NOMEGERENTE type of column CX001.C005NOMEGERENTE;
declare variable LCXAC007SIT type of column CX001.C007SIT;
declare variable LCXRET_CODIGOCONTAB smallint;
declare variable LCXRET_NATOP varchar(80);
declare variable LVTOTALDINHEIROGV numeric(15,2);
BEGIN
SLINEBREAK = ''||ASCII_CHAR(13) || ASCII_CHAR(10)||'';
IF ( :IDSESSAO IS NULL OR ( :IDSESSAO <= 0 ) ) THEN
EXCEPTION EEBADPARAM 'O VALOR IDSESSAO , IDSESSAO DA SESSAO NAO FOI INFORMADO! '
||:SLINEBREAK||'Esse erro e: O parametro :IDSESSAO '
||' um valor nao foi informado, impossivel de filtrar por 0 ou vazio'
||:SLINEBREAK||' PARAMETRO :IDSESSAO ESTA NULL OU VALOR INVALIDO ! ';
IF ( :VALOR IS NULL OR ( :VALOR <= 0 ) ) THEN
EXCEPTION EEBADPARAM 'O VALOR IDSESSAO , VALOR NAO FOI INFORMADO! '
||:SLINEBREAK||'Esse erro e: O parametro :VALOR '
||' um valor nao foi informado, impossivel de aplicar um valor 0'
||:SLINEBREAK||' PARAMETRO :VALOR ESTA NULL OU VALOR É ZERO ! ';
SELECT COALESCE(CXA.ID,-1),
CXA.C001ABTDATA,
CXA.C002ABTHORA,
CXA.C003NATOP,
CXA.C004CODGERENTE,
CXA.C005NOMEGERENTE,
CXA.C007SIT FROM CX001 CXA
LEFT JOIN CX002 CXB ON ( CXB.C001IDCAIXA = CXA.ID )
WHERE CXB.ID = :IDSESSAO
ORDER BY CXA.ID
INTO
:LCXAID,
:LCXAC001ABTDATA,
:LCXAC002ABTHORA,
:LCXAC003NATOP,
:LCXAC004CODGERENTE,
:LCXAC005NOMEGERENTE,
:LCXAC007SIT;
IF ( COALESCE(:LCXAID,-1) IS NULL OR ( :LCXAID <= 0 ) ) THEN
EXCEPTION EEBADPARAM 'NAO EXISTE UM MOVIMENTO DE CAIXA PARA A SESSAO INFORMADA! '
||:SLINEBREAK||'Esse erro e: O parametro :IDSESSAO '
||' um valor foi informado, mas nao corresponde a um movimento de caixa fiscal'
||:SLINEBREAK||' VALIDACAO : ID DE CAIXA ESTA NULL OU -1 ! ';
IF ( :LCXAC007SIT IS NULL OR ( :LCXAC007SIT <> 0 ) ) THEN
EXCEPTION EEBADPARAM 'O MOVIMENTO DE CAIXA ESTA FECHADO! '
||:SLINEBREAK||'Esse erro e: A Variavel :LCXAC007SIT '
||' tem seu valor 1 so e possivel lancar valores no livro quando o valor e 0'
||:SLINEBREAK||' VALIDACAO : NAO E POSSIVEL LANCAR UM VALOR NO MOVIMENTO'
||' DE CAIXA QUANDO FECHADO ! ';
IF (:TIPO = 0)
THEN LCXRET_NATOP = 'LANCAMENTO A TITULO DE ENTRADA DE VALORES NO CAIXA';
ELSE LCXRET_NATOP = 'LANCAMENTO A TITULO DE SAIDAS DE VALORES DO CAIXA';
IF (:TIPO = 0)
THEN LCXRET_CODIGOCONTAB = 1100;
ELSE LCXRET_CODIGOCONTAB = 2100;
SELECT COALESCE(CC.VTOTALDINHEIROGV,0.00)
FROM CX003 CC WHERE CC.C001IDFK = :IDSESSAO
INTO :LVTOTALDINHEIROGV;
IF( :TIPO = 1 ) THEN
BEGIN
IF ( COALESCE(:LVTOTALDINHEIROGV,0.00) < COALESCE(:VALOR,0.00) ) THEN
EXCEPTION EEBADPARAM 'NAO EXISTE SALDO NO CAIXA DISPONIVEL PARA A OPERACAO! '
||:SLINEBREAK||'ESSE ERRO E: O PARAMETRO :VALOR '
||' UM VALOR FOI INFORMADO, MAS O SALDO DE DINHEIRO NA GAVETA É MENOR QUE '
||' O VALOR INFORMADO'
||:SLINEBREAK||' VALIDACAO : SALDO INSUFICIENTE ! ';
END
INSERT INTO
GERENCIAIS (
IDCAIXA,
CODIGOCONTAB,
NATOP,
VALOR,
TIPO )
VALUES ( :LCXAID,
:LCXRET_CODIGOCONTAB,
:LCXRET_NATOP,
:VALOR,
:TIPO );
IF ( TIPO = 0 ) THEN LVTOTALDINHEIROGV = ( :LVTOTALDINHEIROGV + :VALOR );
IF ( TIPO = 1 ) THEN LVTOTALDINHEIROGV = ( :LVTOTALDINHEIROGV - :VALOR );
UPDATE OR INSERT INTO CX003 ( C001IDFK,VTOTALDINHEIROGV )
VALUES ( :IDSESSAO, COALESCE( :LVTOTALDINHEIROGV,0.00 ) )
MATCHING ( C001IDFK );
SUSPEND;
END^