/*------ 26/11/2016 01:32:45 --------*/ UPDATE CONFIGURACOES SET COMPILACAO='1.3.7.0'; /*------ 11/09/2017 02:26:42 --------*/ CREATE TABLE INFOADDTABELA( ID CODIGO NOT NULL); /*------ 11/09/2017 02:26:42 --------*/ alter table INFOADDTABELA add primary key (ID); /*------ 11/09/2017 02:27:20 --------*/ ALTER TABLE INFOADDTABELA ADD TABELA VARCHAR20; /*------ 11/09/2017 02:27:40 --------*/ ALTER TABLE INFOADDTABELA ADD CODIGO INTEIRO_NULL; /*------ 11/09/2017 02:28:05 --------*/ ALTER TABLE INFOADDTABELA ADD VALOR VC500; /*------ 11/09/2017 02:28:53 --------*/ CREATE GENERATOR GEN_INFOADDTABELA; /*------ 11/09/2017 02:28:53 --------*/ SET TERM ^ ; CREATE TRIGGER INFOADDTABELA_BI FOR INFOADDTABELA ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL OR NEW.ID =0) THEN NEW.ID = GEN_ID(GEN_INFOADDTABELA,1); END ^ SET TERM ; ^ /*------ 11/09/2017 02:33:43 --------*/ ALTER TABLE INFOADDTABELA ADD NOME VAR_CHAR10; /*------ 11/09/2017 02:33:59 --------*/ UPDATE RDB$RELATION_FIELDS SET RDB$FIELD_POSITION = 2 WHERE (RDB$RELATION_NAME = 'INFOADDTABELA') AND (RDB$FIELD_NAME= 'NOME'); /*------ 11/09/2017 02:33:59 --------*/ UPDATE RDB$RELATION_FIELDS SET RDB$FIELD_POSITION = 3 WHERE (RDB$RELATION_NAME = 'INFOADDTABELA') AND (RDB$FIELD_NAME= 'CODIGO'); /*------ 11/09/2017 02:33:59 --------*/ UPDATE RDB$RELATION_FIELDS SET RDB$FIELD_POSITION = 4 WHERE (RDB$RELATION_NAME = 'INFOADDTABELA') AND (RDB$FIELD_NAME= 'VALOR'); /*------ 11/09/2017 02:51:49 --------*/ SET TERM ^ ; create procedure SPINSEREINFOADDTAB(TABELA VARCHAR(30), NOME VARCHAR(10), CODIGO INTEGER, VALOR VARCHAR(500)) as declare variable ID INTEGER; begin SELECT ID FROM infoaddtabela ia where IA.TABELA=:TABELA AND NOME=:NOME AND CODIGO=:CODIGO INTO :ID; if (ID>0) then BEGIN UPDATE INFOADDTABELA SET TABELA = :TABELA, NOME = :NOME, CODIGO = :CODIGO, VALOR = :VALOR WHERE (ID = :ID); suspend; END ELSE BEGIN ID = gen_id(GEN_INFOADDTABELA, 1); INSERT INTO INFOADDTABELA (ID,TABELA, NOME, CODIGO,VALOR) VALUES (:ID,:TABELA,:NOME, :CODIGO,:VALOR); suspend; END end; ^ SET TERM ; ^ /*------ 11/09/2017 03:45:58 --------*/ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'VARCHAR20' where (RDB$FIELD_NAME = 'NOME') and (RDB$RELATION_NAME = 'INFOADDTABELA') ; /*------ 11/09/2017 03:46:32 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSEREINFOADDTAB ( TABELA VARCHAR(30), NOME VARCHAR(20), CODIGO INTEGER, VALOR VARCHAR(500)) AS declare variable ID INTEGER; begin SELECT ID FROM infoaddtabela ia where IA.TABELA=:TABELA AND NOME=:NOME AND CODIGO=:CODIGO INTO :ID; if (ID>0) then BEGIN UPDATE INFOADDTABELA SET TABELA = :TABELA, NOME = :NOME, CODIGO = :CODIGO, VALOR = :VALOR WHERE (ID = :ID); suspend; END ELSE BEGIN ID = gen_id(GEN_INFOADDTABELA, 1); INSERT INTO INFOADDTABELA (ID,TABELA, NOME, CODIGO,VALOR) VALUES (:ID,:TABELA,:NOME, :CODIGO,:VALOR); suspend; END end ^ SET TERM ; ^ /*------ 19/09/2017 01:47:40 --------*/ SET TERM ^ ; ALTER PROCEDURE TOTALMOV ( MOVIMENTO INTEGER) RETURNS ( TOTALPRODUTOSSEMDESC FLOAT, TOTALPRODUTOS FLOAT, TOTALCUSTO FLOAT, TOTALDESPESAS FLOAT, TOTALGERAL FLOAT, TOTALIPI FLOAT, PARCELAS FLOAT, CHEQUE FLOAT, CARTAO FLOAT, SOMAPAGAMENTOS FLOAT, COMISSAOPORPROD FLOAT, DINHEIRO FLOAT, VALORDESCONTO FLOAT, TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, QTDTOTAL FLOAT) AS declare variable PRODUTOS FLOAT; declare variable CUSTO FLOAT; declare variable DESPESAS FLOAT; declare variable OS FLOAT; declare variable IPI FLOAT; declare variable SOMAIPI FLOAT; declare variable VALORIPI FLOAT; declare variable DESCONTO FLOAT; declare variable ACRESCIMO FLOAT; declare variable EMDINHEIRO FLOAT; declare variable DESPREC FLOAT; declare variable COMISSAO FLOAT; declare variable TIPODESCONTO CHAR(1); declare variable TIPOACRESCIMO CHAR(1); begin /* TOTAL DE PRODUTOS SELECT SUM(IM.QTD * IM.VALOR) AS TOTALPRODUTOS FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :PRODUTOS; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; */ SELECT SUM(QTD), SUM(IM.QTD * IM.VALORUNIT), SUM(IM.QTD * IM.VALOR), SUM(IM.QTD * IM.VALORCUSTO), SUM(IM.QTD * IM.VALORAVISTA) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO AND (IM.TIPO='I' or IM.TIPO IS NULL) INTO :QTDTOTAL, :TOTALPRODUTOSSEMDESC, :PRODUTOS, :CUSTO, :TOTALAVISTA; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO; if (TOTALPRODUTOSSEMDESC IS NULL) then TOTALPRODUTOSSEMDESC = 0; /* TOTALCUSTO SELECT SUM(IM.QTD * IM.VALORCUSTO) FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :CUSTO; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO;*/ COMISSAOPORPROD = 0; FOR SELECT (SUM(IM.QTD * IM.VALOR) * IM.COMISSAO)/100 FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO GROUP BY IM.QTD, IM.valor, IM.COMISSAO INTO :COMISSAO DO BEGIN if (NOT COMISSAO IS NULL) then COMISSAOPORPROD=COMISSAOPORPROD + COMISSAO; END /*SELECT M.TOTALIPI FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :VALORIPI; If (:VALORIPI IS NULL) then VALORIPI=0;*/ SELECT SUM(TOTALIPI), SUM(TOTALICMS) from SPITENSMOV(:MOVIMENTO) INTO :VALORIPI, :TOTALICMS; If (:VALORIPI IS NULL) then VALORIPI=0; If (:TOTALICMS IS NULL) then TOTALICMS=0; /*DADOS MOV*/ SELECT D.ACRESCIMO, D.DESCONTO, D.TIPOACRESCIMO, D.TIPODESCONTO FROM DADOSMOVIMENTO D WHERE D.CODMOVIMENTO=:MOVIMENTO INTO :ACRESCIMO, :DESCONTO, :TIPOACRESCIMO, :TIPODESCONTO; If (:ACRESCIMO IS NULL) THEN ACRESCIMO = 0; IF (:DESCONTO IS NULL) THEN DESCONTO = 0; /*SOMA DESPESAS*/ SELECT SUM(DM.VALOR) AS TOTALDESPESAS FROM MOVIMENTOSPRODUTOS M LEFT JOIN DESPESAMOVIMENTO DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :DESPESAS; if (:DESPESAS IS NULL) then TOTALDESPESAS=0; ELSE TOTALDESPESAS=DESPESAS; /*SOMA CARTAO*/ SELECT SUM(PCC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCARTAO PCC ON (PCC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CARTAO; IF (:CARTAO IS NULL) then CARTAO=0; /*SOMA PARCELAS*/ SELECT SUM(PC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :PARCELAS; IF (:PARCELAS IS NULL) then PARCELAS=0; /*SOMA CHEQUE*/ SELECT SUM(CH.VALOR) FROM CONTASPAGARRECEBER CPR JOIN CHCONTAS CC ON (CC.CODCONTA = CPR.CODCONTA) JOIN CHEQUES CH ON (CH.CODCHEQUE = CC.CODCHEQUE) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CHEQUE; IF (:CHEQUE IS NULL) then CHEQUE=0; /*DINHEIRO*/ SELECT D.VALOR FROM CONTASPAGARRECEBER CPR JOIN DINHEIRO D ON (D.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :EMDINHEIRO; IF (:EMDINHEIRO IS NULL) then EMDINHEIRO=0; DINHEIRO = EMDINHEIRO; /*SOMA NOVO IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.QTD AS FLOAT) * CAST(IM.BASEIPI AS FLOAT)) * CAST(IM.IPI AS FLOAT))/100 FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO AND NOT IM.IPI IS NULL INTO :IPI DO BEGIN SOMAIPI = SOMAIPI + IPI; END IF (:SOMAIPI IS NULL) then TOTALIPI=0; ELSE TOTALIPI=SOMAIPI; /*DINHEIRO*/ SELECT DR.VALOR FROM DESPESASRECEITAS DR WHERE DR.CODMOVIMENTO=:MOVIMENTO INTO :DESPREC; IF (:DESPREC IS NULL) then DESPREC =0; SELECT S.TOTAL FROM SERVICOS S WHERE S.CODMOVIMENTO=:MOVIMENTO INTO :OS; IF (:OS IS NULL) then OS =0; SELECT FM.VALOR FROM FRETEMOVIMENTO FM WHERE FM.CODMOVIMENTO=:MOVIMENTO INTO :FRETE; IF (:FRETE IS NULL) then FRETE =0; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; End End If (:ACRESCIMO>0) Then Begin If (:TIPOACRESCIMO = '%') Then Begin TOTALGERAL = TOTALGERAL + ((TOTALGERAL * ACRESCIMO)/100); End If (:TIPOACRESCIMO = '$' )Then Begin TOTALGERAL = TOTALGERAL + ACRESCIMO; End End suspend; end ^ SET TERM ; ^ /*------ 19/10/2017 09:23:34 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOVCONF ( CODMOVIMENTO INTEGER) RETURNS ( QTDPEDIDO FLOAT, DESCRICAO VARCHAR(50), PP INTEGER, P INTEGER, M INTEGER, G INTEGER, GG INTEGER, XG INTEGER, DESCRICAOADICIONAL VARCHAR(50), COR VARCHAR(30), VALOR FLOAT, TOTAL FLOAT) AS declare variable CODPRODUTO INTEGER; declare variable CODUNIDADE INTEGER; declare variable UNIDADELANCADA INTEGER; declare variable QTDLANCADA FLOAT; declare variable UNIDADEPADRAO INTEGER; declare variable TEMPCODPRODUTO INTEGER; declare variable CODITEMMOVIMENTO INTEGER; begin FOR SELECT IM.CODITEMMOVIMENTO, P.DESCRICAO, IM.CODPRODUTO, IM.QTD, IM.CODUNIDADE, P.CODUNIDADE, IM.VALOR, IM.QTD * IM.VALOR FROM PRODUTOS P JOIN ITENSMOVIMENTOPROD IM ON (P.CODPRODUTO = IM.CODPRODUTO) WHERE IM.CODMOVIMENTO=:CODMOVIMENTO ORDER BY IM.CODITEMMOVIMENTO INTO :CODITEMMOVIMENTO, :DESCRICAO, :CODPRODUTO, :QTDLANCADA, :UNIDADELANCADA, :UNIDADEPADRAO, :VALOR, :TOTAL DO BEGIN SELECT SP.QTDCONVERTIDA, SP.UNIDADECONVERTIDA FROM SPCONVERTEUNIDADE (:UNIDADELANCADA, :QTDLANCADA, :UNIDADEPADRAO) SP INTO :QTDPEDIDO, :CODUNIDADE; PP = NULL; P= NULL; M= NULL; G= NULL; GG= NULL; XG= NULL; COR= NULL; SELECT GT.PP, GT.P, GT.M, GT.G, GT.GG, GT.XG, GT.COR FROM GRADEMOVTAMANHO GT WHERE GT.CODITEMMOVIMENTO=:CODITEMMOVIMENTO INTO :PP, :P, :M, :G, :GG, :XG, :COR; DESCRICAOADICIONAL = NULL; SELECT DI.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL DI WHERE DI.CODITEMMOVIMENTO=:CODITEMMOVIMENTO INTO :DESCRICAOADICIONAL; suspend; END end ^ SET TERM ; ^ /*------ 22/10/2017 20:15:37 --------*/ CREATE TABLE DIMNOTAS( IDNOTAS INTEGER NOT NULL); /*------ 22/10/2017 20:15:37 --------*/ alter table DIMNOTAS add primary key (IDNOTAS); /*------ 22/10/2017 20:15:44 --------*/ ALTER TABLE DIMNOTAS ADD DATA DATA; /*------ 22/10/2017 20:16:03 --------*/ ALTER TABLE DIMNOTAS ADD ANO INTEIRO_NULL; /*------ 22/10/2017 20:16:18 --------*/ ALTER TABLE DIMNOTAS ADD MES INTEIRO_NULL; /*------ 22/10/2017 20:16:29 --------*/ ALTER TABLE DIMNOTAS ADD CNPJ CNPJ; /*------ 22/10/2017 20:16:37 --------*/ ALTER TABLE DIMNOTAS ADD NF CHAR1; /*------ 22/10/2017 20:16:52 --------*/ ALTER TABLE DIMNOTAS ADD NRNOTA VARCHAR_30; /*------ 22/10/2017 20:17:00 --------*/ ALTER TABLE DIMNOTAS ADD VALOR VALOR_10_2; /*------ 22/10/2017 20:17:12 --------*/ ALTER TABLE DIMNOTAS ADD TIPOMOV TIPODOC; /*------ 22/10/2017 20:17:26 --------*/ ALTER TABLE DIMNOTAS ADD XML ARQUIVOBLOB; /*------ 22/10/2017 20:17:37 --------*/ ALTER TABLE DIMNOTAS ADD PDF ARQUIVOBLOB; /*------ 22/10/2017 20:18:02 --------*/ ALTER TABLE DIMNOTAS ADD CHAVEACESSO VARCHAR_100; /*------ 22/10/2017 20:18:24 --------*/ ALTER TABLE DIMNOTAS ADD QTDITENS NUMERIC_10_5; /*------ 22/10/2017 20:20:59 --------*/ CREATE GENERATOR GEN_DIMNOTAS; /*------ 22/10/2017 20:20:59 --------*/ SET TERM ^ ; CREATE TRIGGER DIMNOTAS_BI FOR DIMNOTAS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.IDNOTAS IS NULL OR NEW.IDNOTAS=0) THEN NEW.IDNOTAS = GEN_ID(GEN_DIMNOTAS,1); END ^ SET TERM ; ^ /*------ 22/10/2017 20:30:30 --------*/ SET TERM ^ ; CREATE PROCEDURE INSEREDIMNOTAS( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; BEGIN IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); END ^ SET TERM ; ^ /*------ 22/10/2017 20:33:55 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select count(*) from dimnotas d where d.cnpj=:cnpj and d.nrnota=:nrnota into :existe; if (existe>0) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); End END ^ SET TERM ; ^ /*------ 22/10/2017 20:36:48 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS ( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select count(*) from dimnotas d where d.cnpj=:cnpj and d.nrnota=:nrnota into :existe; if (existe>0) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); SUSPEND; End END ^ SET TERM ; ^ /*------ 22/10/2017 20:41:20 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS ( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select count(*) from dimnotas d where d.cnpj=:cnpj and d.nrnota=:nrnota into :existe; if (existe<1) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); SUSPEND; End END ^ SET TERM ; ^ /*------ 23/10/2017 03:48:25 --------*/ SET TERM ^ ; create procedure SPDWHVENDAS7DIAS returns (DIAMES VARCHAR(10)) as declare variable I INTEGER; begin I= 7; WHILE (I <= 1 ) DO BEGIN DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); I = i - 1; END suspend; end; ^ SET TERM ; ^ /*------ 23/10/2017 03:49:31 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns (DIAMES VARCHAR(10)) as declare variable I INTEGER; begin I= 7; WHILE (I >= 1 ) DO BEGIN DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); I = I - 1; END suspend; end; ^ SET TERM ; ^ /*------ 23/10/2017 03:49:56 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns (DIAMES VARCHAR(10)) as declare variable I INTEGER; begin I= 7; WHILE (I >= 1 ) DO BEGIN DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); suspend; I = I - 1; END end; ^ SET TERM ; ^ /*------ 23/10/2017 03:53:09 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns ( DATA DATE, DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) as declare variable I INTEGER; declare variable DATAPESQ DATE; begin I= 7; WHILE (I >= 1 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DATA = DATAPESQ; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end; ^ SET TERM ; ^ /*------ 23/10/2017 03:53:52 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns ( DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) as declare variable I INTEGER; declare variable DATAPESQ DATE; begin I= 7; WHILE (I >= 1 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end; ^ SET TERM ; ^ /*------ 23/10/2017 03:59:43 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns ( DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) as declare variable I INTEGER; declare variable DATAPESQ DATE; begin I= 15; WHILE (I >= 1 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end; ^ SET TERM ; ^ /*------ 23/10/2017 04:02:02 --------*/ SET TERM ^ ; ALTER procedure SPDWHVENDAS7DIAS returns ( DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) as declare variable I INTEGER; declare variable DATAPESQ DATE; begin I= 14; WHILE (I >= 0 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end; ^ SET TERM ; ^ /*------ 23/10/2017 11:59:25 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS ( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select IDNOTAS, count(*) from dimnotas d where d.cnpj=:cnpj and d.nrnota=:nrnota group by IDNOTAS into :IDNOTAS, :existe; if (existe<1) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); SUSPEND; End ELSE Begin UPDATE DIMNOTAS SET NF = :NF, NRNOTA = :NRNOTA, VALOR = :VALOR, TIPOMOV = :TIPOMOV, XML = :XML, PDF = :PDF, CHAVEACESSO = :CHAVEACESSO, QTDITENS = :QTDITENS WHERE (IDNOTAS = :IDNOTAS); end END ^ SET TERM ; ^ /*------ 23/10/2017 19:31:38 --------*/ SET TERM ^ ; ALTER PROCEDURE SPDWHVENDAS7DIAS(QTDIAS INTEGER) RETURNS ( DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) AS declare variable I INTEGER; declare variable DATAPESQ DATE; begin I = QTDIAS; WHILE (I >= 0 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end ^ SET TERM ; ^ /*------ 23/10/2017 19:32:59 --------*/ SET TERM ^ ; ALTER PROCEDURE SPDWHVENDAS7DIAS(QTDIAS INTEGER) RETURNS ( DIAMES VARCHAR(10), NF INTEGER, SN INTEGER) AS declare variable I INTEGER; declare variable DATAPESQ DATE; begin I = QTDIAS - 1; WHILE (I >= 0 ) DO BEGIN DATAPESQ = CURRENT_DATE - I; DIAMES = EXTRACT(DAY FROM CURRENT_DATE - I) || '/' || EXTRACT(MONTH FROM CURRENT_DATE - I); SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='N' INTO :SN; SELECT COUNT(D.IDNOTAS) QTD FROM dimnotas D WHERE D.data=:DATAPESQ AND D.NF='S' INTO :NF; suspend; I = I - 1; END end ^ SET TERM ; ^ /*------ 24/10/2017 00:54:12 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS ( ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select IDNOTAS, count(*) from dimnotas d where d.cnpj=:cnpj and d.nrnota=:nrnota group by IDNOTAS into :IDNOTAS, :existe; if (existe<1) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS); SUSPEND; End ELSE Begin UPDATE DIMNOTAS SET NF = :NF, NRNOTA = :NRNOTA, VALOR = :VALOR, TIPOMOV = :TIPOMOV, XML = :XML, PDF = :PDF, CHAVEACESSO = :CHAVEACESSO, QTDITENS = :QTDITENS WHERE (IDNOTAS = :IDNOTAS); SUSPEND; end END ^ SET TERM ; ^ /*------ 24/10/2017 01:24:58 --------*/ CREATE TABLE TABERROS( CODERRO CODIGO NOT NULL); /*------ 24/10/2017 01:24:58 --------*/ alter table TABERROS add primary key (CODERRO); /*------ 24/10/2017 01:25:21 --------*/ ALTER TABLE TABERROS ADD DESCRICAO MEMO_TEXTO; /*------ 24/10/2017 01:30:20 --------*/ CREATE GENERATOR GEN_TABERROS; /*------ 24/10/2017 01:30:20 --------*/ SET TERM ^ ; CREATE TRIGGER TABERROS_BI FOR TABERROS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODERRO IS NULL or NEW.CODERRO =0) THEN NEW.CODERRO = GEN_ID(GEN_TABERROS,1); END ^ SET TERM ; ^ /*------ 24/10/2017 01:43:28 --------*/ SET TERM ^ ; create procedure SPINSERETABERRO (ERRO BLOB) returns(id INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO, count(*) from TABERROS TE where TE.DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :existe; if (existe<1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID =CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID =CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:44:00 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO BLOB) returns(id INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO, count(CODERRO) from TABERROS TE where TE.DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :existe; if (existe<1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID =CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID =CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:45:21 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO BLOB) returns(id INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO<1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID =CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID =CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:47:38 --------*/ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'VC500' where (RDB$FIELD_NAME = 'DESCRICAO') and (RDB$RELATION_NAME = 'TABERROS') ; /*------ 24/10/2017 01:48:53 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO BLOB) returns(ID INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO<1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID = :CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID = :CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:49:43 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO BLOB) returns(ID INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID = :CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID = :CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:49:59 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO BLOB) returns(ID INTEGER) as declare variable CODERRO INTEGER; declare variable EXISTE INTEGER; begin existe = 0; select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; SUSPEND; END ^ SET TERM ; ^ /*------ 24/10/2017 01:50:40 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO VARCHAR(500)) returns(ID INTEGER) as declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; SUSPEND; END ^ SET TERM ; ^ /*------ 24/10/2017 01:50:57 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO VARCHAR(500)) returns(ID INTEGER) as declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID = :CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID = :CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 01:51:31 --------*/ SET TERM ^ ; ALTER procedure SPINSERETABERRO (ERRO VARCHAR(500)) returns(ID INTEGER) as declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); ID = :CODERRO; INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN ID = :CODERRO; UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:00:10 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500)) AS declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:00:39 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500)) AS declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; END ^ SET TERM ; ^ /*------ 24/10/2017 02:01:22 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500)) AS declare variable CODERRO INTEGER; begin select CODERRO from TABERROS TE where TE.DESCRICAO=:ERRO into :CODERRO; if (:CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:03:49 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(*) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:05:02 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(*) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; END ELSE BEGIN UPDATE TABERROS SET DESCRICAO = :ERRO WHERE (CODERRO = :CODERRO); suspend; END SUSPEND; END ^ SET TERM ; ^ /*------ 24/10/2017 02:08:22 --------*/ CREATE TABLE LOGERROS( CODLOGERRO CODIGO NOT NULL); /*------ 24/10/2017 02:08:22 --------*/ alter table LOGERROS add primary key (CODLOGERRO); /*------ 24/10/2017 02:08:42 --------*/ ALTER TABLE LOGERROS ADD CODERRO INTEIRO_NULL; /*------ 24/10/2017 02:09:28 --------*/ ALTER TABLE LOGERROS ADD CNPJ CNPJ; /*------ 24/10/2017 02:09:45 --------*/ CREATE GENERATOR GEN_LOGERROS; /*------ 24/10/2017 02:11:18 --------*/ SET TERM ^ ; CREATE TRIGGER LOGERROS_BI FOR LOGERROS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODLOGERRO IS NULL OR NEW.CODLOGERRO=0) THEN NEW.CODLOGERRO = GEN_ID(GEN_LOGERROS,1); END ^ SET TERM ; ^ /*------ 24/10/2017 02:14:52 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(*) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:18:34 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(*) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:19:24 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(*) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:46:39 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO, COUNT(CODERRO) from TABERROS where DESCRICAO=:ERRO GROUP BY CODERRO into :CODERRO, :QTD; if (QTD <1) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:50:58 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO from TABERROS where DESCRICAO=:ERRO into :CODERRO; if (CODERRO<1 OR CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:51:07 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO from TABERROS where DESCRICAO=:ERRO into :CODERRO; if (CODERRO<1 OR CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); suspend; INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:51:43 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO from TABERROS where DESCRICAO=:ERRO into :CODERRO; if (CODERRO<1 OR CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 02:51:56 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO from TABERROS where DESCRICAO=:ERRO into :CODERRO; if (CODERRO<1 OR CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ) VALUES (0, :CODERRO, :CNPJ); SUSPEND; END END ^ SET TERM ; ^ /*------ 24/10/2017 03:11:25 --------*/ ALTER TABLE LOGERROS ADD DATA DATA; /*------ 24/10/2017 03:12:16 --------*/ SET TERM ^ ; ALTER PROCEDURE SPINSERETABERRO ( ERRO VARCHAR(500), CNPJ VARCHAR(14)) AS declare variable CODERRO INTEGER; declare variable QTD INTEGER; begin select CODERRO from TABERROS where DESCRICAO=:ERRO into :CODERRO; if (CODERRO<1 OR CODERRO IS NULL) then begin CODERRO = GEN_ID(GEN_TABERROS, 1); INSERT INTO TABERROS (CODERRO,DESCRICAO) VALUES (:CODERRO ,:ERRO); INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ, DATA) VALUES (0, :CODERRO, :CNPJ, CURRENT_DATE); suspend; END ELSE BEGIN INSERT INTO LOGERROS(CODLOGERRO, CODERRO, CNPJ, DATA) VALUES (0, :CODERRO, :CNPJ, CURRENT_DATE); SUSPEND; END END ^ SET TERM ; ^ /*------ 25/10/2017 14:23:25 --------*/ SET TERM ^ ; CREATE PROCEDURE SPDWHVENDASCNPJQTD RETURNS ( CNPJ VARCHAR(14), NOME VARCHAR(50), QTDNOTAS INTEGER) AS declare variable I INTEGER; declare variable DATAPESQ DATE; begin FOR SELECT CNPJ, COUNT(*) FROM DIMNOTAS GROUP BY CNPJ INTO :CNPJ, :QTDNOTAS DO BEGIN SELECT E.NOMEFANTASIA FROM EMPRESA E WHERE E.CNPJ=:CNPJ INTO :NOME; suspend; END end; ^ SET TERM ; ^ /*------ 25/10/2017 14:24:46 --------*/ SET TERM ^ ; ALTER PROCEDURE SPDWHVENDASCNPJQTD(DATAI DATE, DATAF DATE) RETURNS ( CNPJ VARCHAR(14), NOME VARCHAR(50), QTDNOTAS INTEGER) AS declare variable I INTEGER; declare variable DATAPESQ DATE; begin FOR SELECT CNPJ, COUNT(*) FROM DIMNOTAS WHERE DATA>=:DATAI AND DATA<=:DATAF GROUP BY CNPJ INTO :CNPJ, :QTDNOTAS DO BEGIN SELECT E.NOMEFANTASIA FROM EMPRESA E WHERE E.CNPJ=:CNPJ INTO :NOME; suspend; END end; ^ SET TERM ; ^ /*------ 27/10/2017 00:33:13 --------*/ SET TERM ^ ; ALTER PROCEDURE SPDWHVENDASCNPJQTD ( DATAI DATE, DATAF DATE) RETURNS ( CNPJ VARCHAR(14), NOME VARCHAR(50), NF CHAR(1), QTDNOTAS INTEGER) AS declare variable I INTEGER; declare variable DATAPESQ DATE; begin FOR SELECT CNPJ, NF, COUNT(*) FROM DIMNOTAS WHERE DATA>=:DATAI AND DATA<=:DATAF GROUP BY CNPJ, NF INTO :CNPJ, :NF, :QTDNOTAS DO BEGIN SELECT E.NOMEFANTASIA FROM EMPRESA E WHERE E.CNPJ=:CNPJ INTO :NOME; suspend; END end ^ SET TERM ; ^ /*------ 27/10/2017 23:10:57 --------*/ CREATE TABLE TICKETS( CODTICKET CODIGO NOT NULL); /*------ 27/10/2017 23:10:57 --------*/ alter table TICKETS add primary key (CODTICKET); /*------ 27/10/2017 23:11:12 --------*/ ALTER TABLE TICKETS ADD CNPJ CNPJ; /*------ 27/10/2017 23:16:37 --------*/ ALTER TABLE TICKETS ADD ASSUNTO VARCHAR_50; /*------ 27/10/2017 23:17:08 --------*/ ALTER TABLE TICKETS ADD CATEGORIA VARCHAR_30; /*------ 27/10/2017 23:17:26 --------*/ ALTER TABLE TICKETS ADD PRORIDADE VARCHAR11; /*------ 27/10/2017 23:32:29 --------*/ ALTER TABLE TICKETS ADD MENSAGEM MEMO_TEXTO; /*------ 27/10/2017 23:45:09 --------*/ CREATE GENERATOR GEN_TICKETS; /*------ 27/10/2017 23:45:09 --------*/ SET TERM ^ ; CREATE TRIGGER TICKETS_BI FOR TICKETS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODTICKET IS NULL or NEW.CODTICKET=0) THEN NEW.CODTICKET = GEN_ID(GEN_TICKETS,1); END ^ SET TERM ; ^ /*------ 27/10/2017 23:46:27 --------*/ ALTER TABLE TICKETS ADD DATA DATA; /*------ 27/10/2017 23:46:34 --------*/ ALTER TABLE TICKETS ADD HORA HORA; /*------ 27/10/2017 23:46:43 --------*/ ALTER TABLE TICKETS ADD STATUS CHAR1; /*------ 27/10/2017 23:58:26 --------*/ ALTER TABLE TICKETS ADD EMAIL VARCHAR_100; /*------ 28/10/2017 02:46:01 --------*/ ALTER TABLE TICKETS ADD ANEXO ARQUIVOBLOB; /*------ 28/10/2017 03:25:57 --------*/ ALTER TABLE TICKETS ALTER COLUMN PRORIDADE TO PRIORIDADE; /*------ 28/10/2017 03:44:04 --------*/ ALTER TABLE LOGERROS ADD HORA HORA; /*------ 28/10/2017 03:45:03 --------*/ SET TERM ^ ; ALTER TRIGGER LOGERROS_BI ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODLOGERRO IS NULL OR NEW.CODLOGERRO=0) THEN NEW.CODLOGERRO = GEN_ID(GEN_LOGERROS,1); NEW.HORA = CURRENT_TIME; END ^ SET TERM ; ^ /*------ 31/10/2017 23:15:30 --------*/ ALTER TABLE DIMNOTAS ADD IDMOV INTEIRO_NULL; /*------ 31/10/2017 23:18:21 --------*/ SET TERM ^ ; ALTER PROCEDURE INSEREDIMNOTAS ( IDMOV INTEGER, ANO INTEGER, MES INTEGER, CNPJ VARCHAR(14), NF CHAR(1), NRNOTA VARCHAR(30), VALOR NUMERIC(10,2), TIPOMOV VARCHAR(20), XML BLOB sub_type 0 segment size 100, PDF BLOB sub_type 0 segment size 100, CHAVEACESSO VARCHAR(100), QTDITENS FLOAT) AS declare variable IDNOTAS INTEGER; declare variable EXISTE INTEGER; BEGIN existe = 0; select IDNOTAS, count(*) from dimnotas d where d.cnpj=:cnpj and d.IDMOV=:IDMOV group by IDNOTAS into :IDNOTAS, :existe; if (existe<1) then begin IDNOTAS = gen_id(gen_dimnotas, 1); INSERT INTO DIMNOTAS (IDNOTAS,DATA,ANO,MES,CNPJ,NF,NRNOTA,VALOR,TIPOMOV,XML,PDF,CHAVEACESSO,QTDITENS, IDMOV) VALUES (:IDNOTAS,current_date,:ANO,:MES,:CNPJ,:NF,:NRNOTA,:VALOR,:TIPOMOV,:XML,:PDF,:CHAVEACESSO,:QTDITENS, :IDMOV); SUSPEND; End ELSE Begin UPDATE DIMNOTAS SET NF = :NF, NRNOTA = :NRNOTA, VALOR = :VALOR, TIPOMOV = :TIPOMOV, XML = :XML, PDF = :PDF, CHAVEACESSO = :CHAVEACESSO, QTDITENS = :QTDITENS WHERE IDMOV = :IDMOV; SUSPEND; end END ^ SET TERM ; ^ /*------ 09/11/2017 01:45:06 --------*/ SET TERM ^ ; ALTER PROCEDURE SPCONTASRECEBER RETURNS ( CODMOVIMENTO INTEGER, CODFILIAL INTEGER, CODFUNCIONARIO INTEGER, DATA DATE, HORA TIME, TIPO VARCHAR(2), CODPLANOPGTO INTEGER, CODPARCELA INTEGER, NRPARCELA INTEGER, DOCUMENTO VARCHAR(20), PAGO CHAR(1), CODCLIENTE INTEGER, CLIENTE VARCHAR(70), PLANOCONTAS VARCHAR(40), VALORPARCELA FLOAT, VENCIMENTO DATE, VALORPAGO FLOAT, RESTANTE FLOAT, RESTANTECOMJUROS FLOAT, DIASDEATRAZO INTEGER, NRDOCUMENTO VARCHAR(20), OBS BLOB sub_type 0 segment size 80, STATUS CHAR(1), SPC CHAR(1), CODSITUACAO INTEGER, SITUACAO VARCHAR(50), STATUSCLIENTE CHAR(1), NRBOLETO VARCHAR(30), DEPENDENTE VARCHAR(70), FILIAL VARCHAR(40), EXTENSO VARCHAR(250), OBSPARCELA VARCHAR(50), NRNFE VARCHAR(20), PLANOPGTO VARCHAR(40), TIPODOC VARCHAR(20), CODEMPRESA INTEGER) AS declare variable PARCELA INTEGER; declare variable DIASATRAZO INTEGER; declare variable CREDITO FLOAT; declare variable VALOR FLOAT; declare variable CARENCIA INTEGER; declare variable JUROS FLOAT; declare variable JUROSCALCULO FLOAT; declare variable TIPOJUROS CHAR(1); declare variable JUROSSOBRE CHAR(1); declare variable DIAS INTEGER; declare variable VENC DATE; declare variable HOJE DATE; declare variable VALORRESTANTE FLOAT; declare variable TCODPARCELA INTEGER; declare variable CODIGOCONTABIL VARCHAR(20); declare variable CODCONTA INTEGER; begin FOR SELECT PC.CODPARCELA, PC.CODPARCELA, PC.CODPARCELA, PC.NRPARCELA, PC.VALORPARCELA, PC.VENCIMENTO, PC.DOCUMENTO, PC.PAGO, PC.STATUS, PC.CODSITUACAO, PC.CODCONTA, PC.OBSPARCELA, CPR.CODPLANOPGTO, CPR.CODMOVIMENTO FROM PARCELASCONTAS PC JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA=PC.CODCONTA) WHERE PC.PAGO='N' AND CPR.TIPO IN ('VE', 'RE','S') INTO :TCODPARCELA, :PARCELA, :CODPARCELA, :NRPARCELA, :VALOR, :VENC, :DOCUMENTO, :PAGO, :STATUS, :CODSITUACAO, :CODCONTA, :OBSPARCELA, :CODPLANOPGTO, :CODMOVIMENTO DO BEGIN /*SELECT CPR.CODPLANOPGTO, CPR.CODMOVIMENTO FROM CONTASPAGARRECEBER CPR WHERE CPR.CODCONTA=:CODCONTA INTO :CODPLANOPGTO, :CODMOVIMENTO; */ select M.CODEMPRESA from MOVIMENTOSPRODUTOS M where M.CODMOVIMENTO=:CODMOVIMENTO into :CODEMPRESA; SELECT CF.CARENCIAJUROSPORATRAZO, CF.JUROSPORATRAZO, CF.TIPPOJUROSPORATRAZO, CF.JUROSSOBRE FROM CONFIGURACOES CF where CF.CODEMPRESA=:CODEMPRESA INTO :CARENCIA, :JUROS, :TIPOJUROS, :JUROSSOBRE; if (JUROS IS NULL) then JUROS = 0; if (CARENCIA IS NULL) then CARENCIA = 0; SELECT M.CODFILIAL, M.DATA, M.HORA, M.TIPO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, M.CODEMPRESA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :DATA, :HORA, :TIPO, :CODIGOCONTABIL, :CODFUNCIONARIO, :CODEMPRESA; NRDOCUMENTO = NULL; TIPODOC = NULL; SELECT DM.TIPODOC, DM.NRDOCUMENTO FROM DOCUMENTOMOV DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO INTO :TIPODOC, :NRDOCUMENTO; NRNFE = NULL; SELECT N.NRDOCUMENTO FROM NFEMOV N WHERE N.CODMOVIMENTO=:CODMOVIMENTO INTO :NRNFE; CODCLIENTE = NULL; SELECT CM.CODCLIENTE FROM CLIENTEMOVIMENTO CM WHERE CM.CODMOVIMENTO=:CODMOVIMENTO INTO :CODCLIENTE; SELECT PL.DESCRICAO FROM PLANOSDECONTAS PL WHERE PL.CODIGOCONTABIL=:CODIGOCONTABIL INTO :PLANOCONTAS; NRBOLETO=NULL; SELECT BP.NRBOLETO FROM BOLETOPARCELA BP WHERE BP.CODPARCELA=:TCODPARCELA INTO :NRBOLETO; PLANOPGTO=''; SELECT PG.DESCRICAO FROM PLANOSPAGAMENTO PG WHERE PG.CODPLANOPGTO=:CODPLANOPGTO INTO :PLANOPGTO; SELECT CAST(C.NOME AS VARCHAR(70)), C.SPC, C.STATUS FROM CLIENTES C WHERE C.CODCLIENTE=:CODCLIENTE INTO :CLIENTE, :SPC, :STATUSCLIENTE; SITUACAO = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODSITUACAO INTO :SITUACAO; OBS = NULL; SELECT OB.OBS FROM OBSPARCELASCONTAS OB WHERE OB.CODPARCELA=:TCODPARCELA INTO :OBS; DEPENDENTE = NULL; SELECT DC.NOME FROM DEPENDENTECLIMOV DCM JOIN DEPENDENTESCLI DC ON (DC.CODDEPENDENTE = DCM.CODDEPENDENTE) WHERE DCM.CODMOVIMENTO=:CODMOVIMENTO INTO :DEPENDENTE; SELECT FI.NOME FROM FILIAIS FI WHERE FI.CODFILIAL=:CODFILIAL INTO :FILIAL; SELECT SUM(PG.VALOR) FROM PARCELASPGTO PG WHERE PG.CODPARCELA = :PARCELA INTO :CREDITO; if (CREDITO IS NULL ) then CREDITO = 0; CODPARCELA = PARCELA; VALORPAGO = CREDITO; VALORPARCELA = VALOR; VENCIMENTO = VENC; RESTANTE = VALOR - CREDITO; VALORRESTANTE = VALOR - CREDITO; HOJE = CURRENT_DATE; DIASATRAZO = HOJE - VENC; DIASDEATRAZO = DIASATRAZO; IF (NOT TIPOJUROS IS NULL) then BEGIN IF (DIASATRAZO>=CARENCIA) then BEGIN IF (TIPOJUROS ='M') then BEGIN JUROSCALCULO = (JUROS / 30) * DIASATRAZO; IF (JUROSSOBRE = 'P') then RESTANTECOMJUROS = (VALORPARCELA + ((VALORPARCELA * JUROSCALCULO)/100)) - CREDITO; ELSE RESTANTECOMJUROS = ((VALORPARCELA - CREDITO ) + (((VALORPARCELA - CREDITO)* JUROSCALCULO)/100)); END IF (TIPOJUROS ='D') then BEGIN JUROSCALCULO = JUROS * DIASATRAZO; IF (JUROSSOBRE = 'P') then RESTANTECOMJUROS = (VALORPARCELA + ((VALORPARCELA * JUROSCALCULO)/100)) - CREDITO; ELSE RESTANTECOMJUROS = ((VALORPARCELA - CREDITO )+ (((VALORPARCELA - CREDITO)* JUROSCALCULO)/100)); END END ELSE BEGIN RESTANTECOMJUROS = VALORPARCELA - CREDITO; END END ELSE BEGIN RESTANTECOMJUROS = VALORPARCELA - CREDITO; END IF (DIASATRAZO < 0) then BEGIN DIASATRAZO = 0; DIASDEATRAZO = DIASATRAZO; END EXTENSO=NULL; if (RESTANTECOMJUROS>0) then begin SELECT VALOREXTENSO FROM EXTENSO(:RESTANTECOMJUROS,'S') INTO :EXTENSO; end suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE RELFLUXODECAIXA ( DATAI DATE, DATAF DATE) RETURNS ( DATA DATE, CONTASPAGAR FLOAT, CHEQUESPAGAR FLOAT, CONTASRECEBER FLOAT, CHEQUESRECEBER FLOAT, TOTAL FLOAT) AS declare variable I INTEGER; declare variable DIAS INTEGER; begin DATA = DATAI; DIAS = DATAF-DATAI; I = 1; WHILE (I <= (DIAS+1)) DO BEGIN CONTASPAGAR =0; CHEQUESPAGAR=0; CONTASRECEBER =0; CHEQUESRECEBER =0; TOTAL =0; SELECT PC.VENCIMENTO, SUM(PC.RESTANTECOMJUROS) AS CONTASARECEBER FROM SPCONTASRECEBER PC WHERE PC.PAGO ='N' AND (PC.STATUS='A' OR PC.STATUS IS NULL) AND PC.VENCIMENTO=:DATA GROUP BY VENCIMENTO INTO :DATA, :CONTASRECEBER; SELECT CP.VENCIMENTO, SUM(CP.RESTANTE) AS CONTASAPAGAR FROM SPCONTASPAGAR CP WHERE CP.PAGO ='N' AND CP.VENCIMENTO=:DATA GROUP BY CP.VENCIMENTO INTO :DATA, :CONTASPAGAR; SELECT SP.VENCIMENTO, SUM(SP.VALOR) FROM SPCHEQUESPAGAR SP WHERE (NOT SP.TIPO IS NULL) AND SP.VENCIMENTO=:DATA GROUP BY VENCIMENTO INTO :DATA, :CHEQUESPAGAR; SELECT SP.VENCIMENTO, SUM(SP.VALOR) FROM SPCHEQUESRECEBER SP WHERE (NOT SP.TIPO IS NULL) AND SP.VENCIMENTO=:DATA GROUP BY VENCIMENTO INTO :DATA, :CHEQUESRECEBER; TOTAL = (CONTASRECEBER + CHEQUESRECEBER) - (CONTASPAGAR + CHEQUESPAGAR); suspend; DATA = DATA + 1; I = I + 1; END end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE SPHISTORICO ( CODCLIENTE INTEGER) RETURNS ( MENORCOMPRA FLOAT, MAIORCOMPRA FLOAT, MEDIACOMPRA FLOAT, PRIMEIRACOMPRA DATE, ULTIMACOMPRA DATE, DIASUMLTIMACOMPRA INTEGER, NRCOMPRA INTEGER, PAGASATRAZADAS INTEGER, ATRAZOMIN INTEGER, ATRAZOMAX INTEGER, MEDIAATRAZO INTEGER, PAGASADIANTADAS INTEGER, ADIANTOMIN INTEGER, ADIANTOMAX INTEGER, MEDIAADIANTO INTEGER, ATRAZADAS INTEGER, ATRAZADAMIN INTEGER, ATRAZADAMAX INTEGER, DEBITO FLOAT) AS declare variable CARENCIA INTEGER; begin SELECT CF.CARENCIAJUROSPORATRAZO FROM CONFIGURACOES CF INTO :CARENCIA; if (CARENCIA IS NULL) then CARENCIA =1; SELECT MIN(M.VALORTOTAL) AS MENORCOMPRA, MAX(M.VALORTOTAL) AS MAIORCOMPRA, AVG(M.VALORTOTAL) AS MEDIACOMPRA, MIN(M.DATA) AS PRIMEIRACOMPRA, MAX(M.DATA) AS ULTIMACOMPRA, CURRENT_DATE - MAX(M.DATA) AS DIAS, COUNT(CM.CODCLIENTE) AS NRCOMPRA FROM CLIENTEMOVIMENTO CM JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = CM.CODMOVIMENTO) WHERE CM.CODCLIENTE=:CODCLIENTE AND M.TIPO IN ('VE','RE') INTO :MENORCOMPRA, :MAIORCOMPRA, :MEDIACOMPRA, :PRIMEIRACOMPRA, :ULTIMACOMPRA, :DIASUMLTIMACOMPRA , :NRCOMPRA; SELECT COUNT(PC.CODPARCELA) AS PAGASATRAZADAS, MIN(PG.DATA - PC.VENCIMENTO) ATRAZOMIN, MAX(PG.DATA - PC.VENCIMENTO ) AS ATRAZOMAX, AVG(PG.DATA - PC.VENCIMENTO) AS MEDIAATRAZO FROM CLIENTEMOVIMENTO CM JOIN CONTASPAGARRECEBER CPR ON (CPR.CODMOVIMENTO = CM.CODMOVIMENTO) JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) JOIN PARCELASPGTO PG ON (PG.CODPARCELA = PC.CODPARCELA) WHERE CM.CODCLIENTE=:CODCLIENTE AND PC.PAGO='S' AND PG.DATA>(PC.VENCIMENTO + :CARENCIA) INTO :PAGASATRAZADAS, :ATRAZOMIN, :ATRAZOMAX, :MEDIAATRAZO; SELECT COUNT(PC.CODPARCELA) AS PAGASADIANTADAS, MIN(PC.VENCIMENTO - PG.DATA) ADIANTOMIN, MAX(PC.VENCIMENTO - PG.DATA) AS ADIANTOMAX, AVG(PC.VENCIMENTO - PG.DATA) AS MEDIAADIANTO FROM CLIENTEMOVIMENTO CM JOIN CONTASPAGARRECEBER CPR ON (CPR.CODMOVIMENTO = CM.CODMOVIMENTO) JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) JOIN PARCELASPGTO PG ON (PG.CODPARCELA = PC.CODPARCELA) WHERE CM.CODCLIENTE=:CODCLIENTE AND PC.PAGO='S' AND PG.DATA=:DATAI AND PC.VENCIMENTO<=:DATAF INTO :CONTASRECEBER; SELECT COUNT(*) FROM SPCONTASPAGAR CP WHERE CP.PAGO ='N' AND CP.VENCIMENTO>=:DATAI AND CP.VENCIMENTO<=:DATAF INTO :CONTASPAGAR; SELECT COUNT(*) FROM SPCHEQUESPAGAR SP WHERE SP.TIPO='P' AND SP.VENCIMENTO>=:DATAI AND SP.VENCIMENTO<=:DATAF INTO :CHEQUESPAGAR; SELECT COUNT(*) FROM SPCHEQUESRECEBER SP WHERE SP.TIPO='R' AND SP.VENCIMENTO>=:DATAI AND SP.VENCIMENTO<=:DATAF INTO :CHEQUESRECEBER; suspend; end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE SPRESUMOCR ( DATAI DATE, DATAF DATE) RETURNS ( CODFILIAL INTEGER, FILIAL VARCHAR(40), CONTASRECEBERNOPERIODO FLOAT, CONTASVENCIDAS FLOAT, CONTASRECEBERTOTAL FLOAT) AS begin FOR SELECT F.CODFILIAL, F.NOME FROM FILIAIS F INTO :CODFILIAL, :FILIAL DO BEGIN SELECT SUM(PC.RESTANTECOMJUROS) AS VALOR FROM SPCONTASRECEBER PC WHERE PC.PAGO ='N' AND PC.VENCIMENTO>=:DATAI AND PC.VENCIMENTO<=:DATAF AND PC.CODFILIAL=:CODFILIAL INTO :CONTASRECEBERNOPERIODO; SELECT SUM(CPR.RESTANTECOMJUROS) AS Valor FROM SPCONTASRECEBER CPR WHERE CPR.PAGO ='N' AND CPR.VENCIMENTO<=CURRENT_DATE AND CPR.CODFILIAL=:CODFILIAL INTO :CONTASVENCIDAS; SELECT SUM(CPR.RESTANTECOMJUROS) AS Valor FROM SPCONTASRECEBER CPR WHERE CPR.PAGO ='N' AND CPR.CODFILIAL=:CODFILIAL INTO :CONTASRECEBERTOTAL; suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE SPRESUMODEBITOCLIENTE ( CODIGO INTEGER) RETURNS ( CODCLIENTE INTEGER, CLIENTE VARCHAR(70), TOTALDEPARCELAS FLOAT, TOTALPAGO FLOAT, RESTANTE FLOAT, RESTANTECOMJUROS FLOAT, VENCIDAS INTEGER, TOTALVENCIDAS FLOAT) AS begin SELECT PC.CODCLIENTE, PC.CLIENTE, SUM(PC.VALORPARCELA) AS TOTALDEPARCELAS, SUM(PC.VALORPAGO) AS TOTALPAGO, SUM(PC.RESTANTE) AS RESTANTE, SUM(PC.RESTANTECOMJUROS) AS RESTANTECOMJUROS FROM SPCONTASRECEBER PC WHERE PC.PAGO='N' AND PC.CODCLIENTE=:CODIGO GROUP BY PC.CODCLIENTE, PC.CLIENTE INTO :CODCLIENTE, :CLIENTE, :TOTALDEPARCELAS, :TOTALPAGO ,:RESTANTE ,:RESTANTECOMJUROS; SELECT COUNT(*),SUM(PC.RESTANTECOMJUROS) FROM SPCONTASRECEBER PC WHERE PC.PAGO='N' AND PC.CODCLIENTE=:CODIGO AND PC.VENCIMENTO<=CURRENT_DATE INTO :VENCIDAS,:TOTALVENCIDAS; suspend; end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE SPSITUACAOCLIENTE ( CODCLIENTE INTEGER) RETURNS ( CODIGO INTEGER, NOME VARCHAR(70), LIMITE FLOAT, DEBITO FLOAT, SALDO FLOAT, VALORPAGO FLOAT, VENCIDAS INTEGER) AS begin SELECT C.LIMITE, C.CODCLIENTE, C.NOME FROM CLIENTES C WHERE C.CODCLIENTE=:CODCLIENTE INTO :LIMITE, :CODIGO, :NOME; SELECT SUM(SP.RESTANTECOMJUROS) FROM SPCONTASRECEBER SP WHERE SP.PAGO='N' AND SP.CODCLIENTE=:CODCLIENTE INTO :DEBITO; if (LIMITE IS NULL) then LIMITE =0; if (DEBITO IS NULL) then DEBITO =0; SALDO = LIMITE - DEBITO; SELECT COUNT(PC.CODPARCELA) FROM PARCELASCONTAS PC JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA = PC.CODCONTA) JOIN CLIENTEMOVIMENTO CM ON (CM.CODMOVIMENTO = CPR.CODMOVIMENTO) WHERE CM.CODCLIENTE=:CODCLIENTE AND PC.PAGO='N' AND PC.VENCIMENTO<=CURRENT_DATE INTO :VENCIDAS; suspend; end ^ SET TERM ; ^ /*------ 09/11/2017 01:45:09 --------*/ SET TERM ^ ; ALTER PROCEDURE SPSOMACONTASRECEBER RETURNS ( TOTAL FLOAT) AS declare variable VALORRECEBER FLOAT; declare variable VALORRECEBIDO FLOAT; begin SELECT SUM(CR.RESTANTECOMJUROS) FROM SPCONTASRECEBER CR WHERE CR.PAGO='N' AND CR.TIPO IN ('VE', 'S' , 'RE' ) INTO :VALORRECEBER; if (VALORRECEBER IS NULL) then VALORRECEBER =0; TOTAL = VALORRECEBER; suspend; end ^ SET TERM ; ^ /*------ 09/11/2017 09:55:50 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 ) then TOTALIPI = IPI * ((QTD * BASEIPI)/100); ELSE TOTALIPI = 0; if (ICMS >0 ) then TOTALICMS = ICMS * ((QTD * BASECALCULOICMS)/100); ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 09:55:53 --------*/ SET TERM ^ ; ALTER PROCEDURE RELDESCONTOSITENSMOV ( DATAI DATE, DATAF DATE) RETURNS ( CODMOVIMENTO INTEGER, DATA DATE, FUNCIONARIO VARCHAR(40), CODPRODUTO INTEGER, PRODUTO VARCHAR(50), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, SIGLA VARCHAR(3), VALORDESCONTO FLOAT) AS begin FOR SELECT M.CODMOVIMENTO, M.DATA, F.NOME FROM MOVIMENTOSPRODUTOS M LEFT JOIN FUNCIONARIOS F ON (F.CODFUNCIONARIO = M.CODFUNCIONARIO) WHERE M.TIPO='VE' AND M.DATA>=:DATAI AND M.DATA<=:DATAF INTO :CODMOVIMENTO, :DATA, :FUNCIONARIO DO BEGIN FOR SELECT SP.CODPRODUTO , SP.PRODUTO, SP.CODGRUPO , SP.GRUPO , SP.CODFABRICANTE , SP.FABRICANTE , SP.QTD , SP.UNIDADE , SP.VALOR , SP.TOTAL , SP.BAIXADO , SP.VALORUNIT , SP.DESCONTO , SP.TOTALUNIT , SP.SIGLA, SP.TOTALUNIT - SP.TOTAL FROM SPITENSMOV(:CODMOVIMENTO) SP WHERE SP.DESCONTO>0 INTO :CODPRODUTO , :PRODUTO, :CODGRUPO , :GRUPO , :CODFABRICANTE , :FABRICANTE , :QTD , :UNIDADE , :VALOR , :TOTAL , :BAIXADO , :VALORUNIT , :DESCONTO , :TOTALUNIT , :SIGLA, :VALORDESCONTO DO suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 09:55:53 --------*/ SET TERM ^ ; ALTER PROCEDURE TOTALMOV ( MOVIMENTO INTEGER) RETURNS ( TOTALPRODUTOSSEMDESC FLOAT, TOTALPRODUTOS FLOAT, TOTALCUSTO FLOAT, TOTALDESPESAS FLOAT, TOTALGERAL FLOAT, TOTALIPI FLOAT, PARCELAS FLOAT, CHEQUE FLOAT, CARTAO FLOAT, SOMAPAGAMENTOS FLOAT, COMISSAOPORPROD FLOAT, DINHEIRO FLOAT, VALORDESCONTO FLOAT, TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, QTDTOTAL FLOAT) AS declare variable PRODUTOS FLOAT; declare variable CUSTO FLOAT; declare variable DESPESAS FLOAT; declare variable OS FLOAT; declare variable IPI FLOAT; declare variable SOMAIPI FLOAT; declare variable VALORIPI FLOAT; declare variable DESCONTO FLOAT; declare variable ACRESCIMO FLOAT; declare variable EMDINHEIRO FLOAT; declare variable DESPREC FLOAT; declare variable COMISSAO FLOAT; declare variable TIPODESCONTO CHAR(1); declare variable TIPOACRESCIMO CHAR(1); begin /* TOTAL DE PRODUTOS SELECT SUM(IM.QTD * IM.VALOR) AS TOTALPRODUTOS FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :PRODUTOS; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; */ SELECT SUM(QTD), SUM(IM.QTD * IM.VALORUNIT), SUM(IM.QTD * IM.VALOR), SUM(IM.QTD * IM.VALORCUSTO), SUM(IM.QTD * IM.VALORAVISTA) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO AND (IM.TIPO='I' or IM.TIPO IS NULL) INTO :QTDTOTAL, :TOTALPRODUTOSSEMDESC, :PRODUTOS, :CUSTO, :TOTALAVISTA; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO; if (TOTALPRODUTOSSEMDESC IS NULL) then TOTALPRODUTOSSEMDESC = 0; /* TOTALCUSTO SELECT SUM(IM.QTD * IM.VALORCUSTO) FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :CUSTO; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO;*/ COMISSAOPORPROD = 0; FOR SELECT (SUM(IM.QTD * IM.VALOR) * IM.COMISSAO)/100 FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO GROUP BY IM.QTD, IM.valor, IM.COMISSAO INTO :COMISSAO DO BEGIN if (NOT COMISSAO IS NULL) then COMISSAOPORPROD=COMISSAOPORPROD + COMISSAO; END /*SELECT M.TOTALIPI FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :VALORIPI; If (:VALORIPI IS NULL) then VALORIPI=0;*/ SELECT SUM(TOTALIPI), SUM(TOTALICMS) from SPITENSMOV(:MOVIMENTO) INTO :VALORIPI, :TOTALICMS; If (:VALORIPI IS NULL) then VALORIPI=0; If (:TOTALICMS IS NULL) then TOTALICMS=0; /*DADOS MOV*/ SELECT D.ACRESCIMO, D.DESCONTO, D.TIPOACRESCIMO, D.TIPODESCONTO FROM DADOSMOVIMENTO D WHERE D.CODMOVIMENTO=:MOVIMENTO INTO :ACRESCIMO, :DESCONTO, :TIPOACRESCIMO, :TIPODESCONTO; If (:ACRESCIMO IS NULL) THEN ACRESCIMO = 0; IF (:DESCONTO IS NULL) THEN DESCONTO = 0; /*SOMA DESPESAS*/ SELECT SUM(DM.VALOR) AS TOTALDESPESAS FROM MOVIMENTOSPRODUTOS M LEFT JOIN DESPESAMOVIMENTO DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :DESPESAS; if (:DESPESAS IS NULL) then TOTALDESPESAS=0; ELSE TOTALDESPESAS=DESPESAS; /*SOMA CARTAO*/ SELECT SUM(PCC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCARTAO PCC ON (PCC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CARTAO; IF (:CARTAO IS NULL) then CARTAO=0; /*SOMA PARCELAS*/ SELECT SUM(PC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :PARCELAS; IF (:PARCELAS IS NULL) then PARCELAS=0; /*SOMA CHEQUE*/ SELECT SUM(CH.VALOR) FROM CONTASPAGARRECEBER CPR JOIN CHCONTAS CC ON (CC.CODCONTA = CPR.CODCONTA) JOIN CHEQUES CH ON (CH.CODCHEQUE = CC.CODCHEQUE) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CHEQUE; IF (:CHEQUE IS NULL) then CHEQUE=0; /*DINHEIRO*/ SELECT D.VALOR FROM CONTASPAGARRECEBER CPR JOIN DINHEIRO D ON (D.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :EMDINHEIRO; IF (:EMDINHEIRO IS NULL) then EMDINHEIRO=0; DINHEIRO = EMDINHEIRO; /*SOMA NOVO IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.QTD AS FLOAT) * CAST(IM.BASEIPI AS FLOAT)) * CAST(IM.IPI AS FLOAT))/100 FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO AND NOT IM.IPI IS NULL INTO :IPI DO BEGIN SOMAIPI = SOMAIPI + IPI; END IF (:SOMAIPI IS NULL) then TOTALIPI=0; ELSE TOTALIPI=SOMAIPI; /*DINHEIRO*/ SELECT DR.VALOR FROM DESPESASRECEITAS DR WHERE DR.CODMOVIMENTO=:MOVIMENTO INTO :DESPREC; IF (:DESPREC IS NULL) then DESPREC =0; SELECT S.TOTAL FROM SERVICOS S WHERE S.CODMOVIMENTO=:MOVIMENTO INTO :OS; IF (:OS IS NULL) then OS =0; SELECT FM.VALOR FROM FRETEMOVIMENTO FM WHERE FM.CODMOVIMENTO=:MOVIMENTO INTO :FRETE; IF (:FRETE IS NULL) then FRETE =0; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; End End If (:ACRESCIMO>0) Then Begin If (:TIPOACRESCIMO = '%') Then Begin TOTALGERAL = TOTALGERAL + ((TOTALGERAL * ACRESCIMO)/100); End If (:TIPOACRESCIMO = '$' )Then Begin TOTALGERAL = TOTALGERAL + ACRESCIMO; End End suspend; end ^ SET TERM ; ^ /*------ 09/11/2017 10:01:59 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 ) then TOTALIPI = (IPI * BASEIPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 ) then TOTALICMS = ICMS * ((QTD * BASECALCULOICMS)/100); ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 10:20:05 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 ) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 ) then TOTALICMS = ICMS * ((QTD * BASECALCULOICMS)/100); ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 09/11/2017 10:32:33 --------*/ SET TERM ^ ; ALTER PROCEDURE TOTALMOV ( MOVIMENTO INTEGER) RETURNS ( TOTALPRODUTOSSEMDESC FLOAT, TOTALPRODUTOS FLOAT, TOTALCUSTO FLOAT, TOTALDESPESAS FLOAT, TOTALGERAL FLOAT, TOTALIPI FLOAT, PARCELAS FLOAT, CHEQUE FLOAT, CARTAO FLOAT, SOMAPAGAMENTOS FLOAT, COMISSAOPORPROD FLOAT, DINHEIRO FLOAT, VALORDESCONTO FLOAT, TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, QTDTOTAL FLOAT) AS declare variable PRODUTOS FLOAT; declare variable CUSTO FLOAT; declare variable DESPESAS FLOAT; declare variable OS FLOAT; declare variable IPI FLOAT; declare variable SOMAIPI FLOAT; declare variable VALORIPI FLOAT; declare variable DESCONTO FLOAT; declare variable ACRESCIMO FLOAT; declare variable EMDINHEIRO FLOAT; declare variable DESPREC FLOAT; declare variable COMISSAO FLOAT; declare variable TIPODESCONTO CHAR(1); declare variable TIPOACRESCIMO CHAR(1); begin /* TOTAL DE PRODUTOS SELECT SUM(IM.QTD * IM.VALOR) AS TOTALPRODUTOS FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :PRODUTOS; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; */ SELECT SUM(QTD), SUM(IM.QTD * IM.VALORUNIT), SUM(IM.QTD * IM.VALOR), SUM(IM.QTD * IM.VALORCUSTO), SUM(IM.QTD * IM.VALORAVISTA) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO AND (IM.TIPO='I' or IM.TIPO IS NULL) INTO :QTDTOTAL, :TOTALPRODUTOSSEMDESC, :PRODUTOS, :CUSTO, :TOTALAVISTA; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO; if (TOTALPRODUTOSSEMDESC IS NULL) then TOTALPRODUTOSSEMDESC = 0; /* TOTALCUSTO SELECT SUM(IM.QTD * IM.VALORCUSTO) FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :CUSTO; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO;*/ COMISSAOPORPROD = 0; FOR SELECT (SUM(IM.QTD * IM.VALOR) * IM.COMISSAO)/100 FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO GROUP BY IM.QTD, IM.valor, IM.COMISSAO INTO :COMISSAO DO BEGIN if (NOT COMISSAO IS NULL) then COMISSAOPORPROD=COMISSAOPORPROD + COMISSAO; END /*SELECT M.TOTALIPI FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :VALORIPI; If (:VALORIPI IS NULL) then VALORIPI=0;*/ SELECT SUM(TOTALIPI), SUM(TOTALICMS) from SPITENSMOV(:MOVIMENTO) INTO :VALORIPI, :TOTALICMS; If (:VALORIPI IS NULL) then VALORIPI=0; If (:TOTALICMS IS NULL) then TOTALICMS=0; /*DADOS MOV*/ SELECT D.ACRESCIMO, D.DESCONTO, D.TIPOACRESCIMO, D.TIPODESCONTO FROM DADOSMOVIMENTO D WHERE D.CODMOVIMENTO=:MOVIMENTO INTO :ACRESCIMO, :DESCONTO, :TIPOACRESCIMO, :TIPODESCONTO; If (:ACRESCIMO IS NULL) THEN ACRESCIMO = 0; IF (:DESCONTO IS NULL) THEN DESCONTO = 0; /*SOMA DESPESAS*/ SELECT SUM(DM.VALOR) AS TOTALDESPESAS FROM MOVIMENTOSPRODUTOS M LEFT JOIN DESPESAMOVIMENTO DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :DESPESAS; if (:DESPESAS IS NULL) then TOTALDESPESAS=0; ELSE TOTALDESPESAS=DESPESAS; /*SOMA CARTAO*/ SELECT SUM(PCC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCARTAO PCC ON (PCC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CARTAO; IF (:CARTAO IS NULL) then CARTAO=0; /*SOMA PARCELAS*/ SELECT SUM(PC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :PARCELAS; IF (:PARCELAS IS NULL) then PARCELAS=0; /*SOMA CHEQUE*/ SELECT SUM(CH.VALOR) FROM CONTASPAGARRECEBER CPR JOIN CHCONTAS CC ON (CC.CODCONTA = CPR.CODCONTA) JOIN CHEQUES CH ON (CH.CODCHEQUE = CC.CODCHEQUE) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CHEQUE; IF (:CHEQUE IS NULL) then CHEQUE=0; /*DINHEIRO*/ SELECT D.VALOR FROM CONTASPAGARRECEBER CPR JOIN DINHEIRO D ON (D.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :EMDINHEIRO; IF (:EMDINHEIRO IS NULL) then EMDINHEIRO=0; DINHEIRO = EMDINHEIRO; /*SOMA NOVO IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.BASEIPI AS FLOAT)) * CAST(IM.IPI AS FLOAT))/100 FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO AND NOT IM.IPI IS NULL INTO :IPI DO BEGIN SOMAIPI = SOMAIPI + IPI; END IF (:VALORIPI IS NULL) then TOTALIPI=0; ELSE TOTALIPI=VALORIPI; /*DINHEIRO*/ SELECT DR.VALOR FROM DESPESASRECEITAS DR WHERE DR.CODMOVIMENTO=:MOVIMENTO INTO :DESPREC; IF (:DESPREC IS NULL) then DESPREC =0; SELECT S.TOTAL FROM SERVICOS S WHERE S.CODMOVIMENTO=:MOVIMENTO INTO :OS; IF (:OS IS NULL) then OS =0; SELECT FM.VALOR FROM FRETEMOVIMENTO FM WHERE FM.CODMOVIMENTO=:MOVIMENTO INTO :FRETE; IF (:FRETE IS NULL) then FRETE =0; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; End End If (:ACRESCIMO>0) Then Begin If (:TIPOACRESCIMO = '%') Then Begin TOTALGERAL = TOTALGERAL + ((TOTALGERAL * ACRESCIMO)/100); End If (:TIPOACRESCIMO = '$' )Then Begin TOTALGERAL = TOTALGERAL + ACRESCIMO; End End suspend; end ^ SET TERM ; ^ /*------ 20/11/2017 02:19:59 --------*/ DROP VIEW VWCLIENTES; /*------ 20/11/2017 02:19:59 --------*/ CREATE VIEW VWCLIENTES( CODCLIENTE, NOME, CPFCNPJ, RGIE, RAZAO, RAMOATIVIDADE, TIPO, STATUS, OBS, CODEMPRESA) AS SELECT C.CODCLIENTE, C.NOME, CAST (CF.CPF AS VARCHAR(14)) AS CPFCNPJ, CF.RG AS RGIE, CAST(NULL AS VARCHAR(70)), R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA FROM CLIENTES C JOIN CLIENTEFISICO CF ON (CF.CODCLIENTE = C.CODCLIENTE) LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL UNION ALL SELECT C.CODCLIENTE, C.NOME, CJ.CNPJ AS CPFCNPJ, CJ.IE AS RGIE, CJ.RAZAO, R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA FROM CLIENTES C JOIN CLIENTEJURIDICO CJ ON (CJ.CODCLIENTE = C.CODCLIENTE) LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL UNION ALL SELECT C.CODCLIENTE, C.NOME, CAST(NULL AS VARCHAR(14)) AS CPFCNPJ, CAST(NULL AS VARCHAR(15)) AS RGIE, CAST(NULL AS VARCHAR(70)) AS RAZAO, R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA FROM CLIENTES C LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEJURIDICO) AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEFISICO) ; ; /*------ 20/11/2017 02:25:11 --------*/ DROP VIEW VWCLIENTES; /*------ 20/11/2017 02:25:11 --------*/ CREATE VIEW VWCLIENTES( CODCLIENTE, NOME, CPFCNPJ, RGIE, RAZAO, RAMOATIVIDADE, TIPO, STATUS, OBS, CODEMPRESA, CODCLIEMP) AS SELECT C.CODCLIENTE, C.NOME, CAST (CF.CPF AS VARCHAR(14)) AS CPFCNPJ, CF.RG AS RGIE, CAST(NULL AS VARCHAR(70)), R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA, C.CODCLIEMP FROM CLIENTES C JOIN CLIENTEFISICO CF ON (CF.CODCLIENTE = C.CODCLIENTE) LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL UNION ALL SELECT C.CODCLIENTE, C.NOME, CJ.CNPJ AS CPFCNPJ, CJ.IE AS RGIE, CJ.RAZAO, R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA, C.CODCLIEMP FROM CLIENTES C JOIN CLIENTEJURIDICO CJ ON (CJ.CODCLIENTE = C.CODCLIENTE) LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL UNION ALL SELECT C.CODCLIENTE, C.NOME, CAST(NULL AS VARCHAR(14)) AS CPFCNPJ, CAST(NULL AS VARCHAR(15)) AS RGIE, CAST(NULL AS VARCHAR(70)) AS RAZAO, R.DESCRICAO, C.TIPO, C.STATUS, O.OBS, C.CODEMPRESA, C.CODCLIEMP FROM CLIENTES C LEFT JOIN RAMOATIVIDADE R ON (R.CODRAMOATIVIDADE = C.CODRAMOATIVIDADE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEJURIDICO) AND C.CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CLIENTEFISICO) ; ; /*------ 11/12/2017 16:37:13 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 ) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 11/12/2017 16:52:25 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 11/12/2017 17:59:22 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT, ACAO VARCHAR(30)) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 11/12/2017 18:01:43 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT, BOTOES VARCHAR(30)) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 11/12/2017 18:20:39 --------*/ SET TERM ^ ; ALTER PROCEDURE SPITENSMOV ( MOVIMENTO INTEGER) RETURNS ( CODITEMMOVIMENTO INTEGER, CODMOVIMENTO INTEGER, CODUNIDADE INTEGER, CODPRODUTO INTEGER, CODTABELA INTEGER, REFERENCIA VARCHAR(20), PRODUTO VARCHAR(50), DESCTABELA VARCHAR(30), CODGRUPO INTEGER, GRUPO VARCHAR(30), CODFABRICANTE INTEGER, FABRICANTE VARCHAR(40), QTD FLOAT, UNIDADE VARCHAR(30), VALOR FLOAT, TOTAL FLOAT, BAIXADO CHAR(1), VALORUNIT FLOAT, DESCONTO FLOAT, TOTALUNIT FLOAT, CODALIQUOTA VARCHAR(10), ALIQUOTA FLOAT, SIGLA VARCHAR(3), DESCRICAOADICIONAL VARCHAR(100), DESCADICIONAL VARCHAR(50), APRESENTACAO VARCHAR(40), CODTABELASIMPLES INTEGER, COR VARCHAR(40), QTDENTREGUE FLOAT, FALTAENTREGA FLOAT, VOLUMES INTEGER, ICMS FLOAT, IPI FLOAT, TOTALIPI FLOAT, TOTALICMS FLOAT, ACRESSUGESTAO FLOAT, ESTOQUEATUAL FLOAT, COMISSAO FLOAT, VALORCOMISSAO FLOAT, CORGRADE VARCHAR(40), TAM VARCHAR(5), NR INTEGER, DESCONTOMOV FLOAT, TOTALCOMDESCONTO FLOAT, VALORAVISTA FLOAT, TOTALAVISTA FLOAT, FABRICADO CHAR(1), DATAFAB DATE, CODNCM VARCHAR(30), CST VARCHAR(10), INFPRVENDA FLOAT, CFOP VARCHAR(10), ORIGEM VARCHAR(4), TRTIPO VARCHAR(1), CODBARRAS VARCHAR(30), CEST VARCHAR(15), BASECALCULOICMS FLOAT, BASEIPI FLOAT, ALTERAR VARCHAR(15), EXCLUIR VARCHAR(15), OUTRAACAO VARCHAR(15)) AS declare variable TEMPCODPROD INTEGER; declare variable CODITEMMOV INTEGER; declare variable TEMPDESC VARCHAR(50); declare variable DESCPROD VARCHAR(50); declare variable TEMPDESCTABELA VARCHAR(30); declare variable ENTREGAMAD FLOAT; declare variable ENTREGAPD FLOAT; declare variable TCODALIQUOTA VARCHAR(10); declare variable TDESCONTOMOV FLOAT; declare variable TIPODESCONTOMOV CHAR(1); declare variable TOTALMOV FLOAT; declare variable TCST VARCHAR(10); begin FOR SELECT I.CODITEMMOVIMENTO, I.CODMOVIMENTO, I.CODTABELA, I.QTD, I.VALOR, I.QTD * I.VALOR, I.BAIXADO, I.VALORUNIT, I.DESCONTO, I.QTD * I.VALORUNIT, I.CODITEMMOVIMENTO, I.CODTABELA, I.CODUNIDADE, I.CODTABELASIMPLES, I.VOLUMES, I.ICMS, I.IPI, I.ESTOQUEATUAL, I.COMISSAO, I.CODALIQUOTA, I.FABRICADO, I.DATAFAB, I.CFOP, I.VALORAVISTA, I.TRTIPO, I.CST, I.CEST, I.BASECALCULOICMS, I.BASEIPI, I.QTD * I.VALORAVISTA FROM ITENSMOVIMENTOPROD I WHERE I.CODMOVIMENTO=:MOVIMENTO AND (I.TIPO IS NULL or I.TIPO='I') INTO :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :TRTIPO, :CST, :CEST, :BASECALCULOICMS, :BASEIPI, :TOTALAVISTA DO BEGIN CORGRADE = NULL; TAM = NULL; NR = NULL; SELECT GP.COR, GP.TAM, GP.NR FROM GRADEPRODUTO GP WHERE GP.CODPRODUTO=:CODTABELA INTO :CORGRADE, :TAM, :NR; CODNCM=NULL; SELECT SP.CODIGO,SP.REFERENCIA,SP.DESCRICAO,SP.DESCTABELA,SP.CODGRUPO, SP.GRUPO, SP.CODFABRICANTE, SP.FABRICANTE, SP.CODALIQUOTA, SP.ALIQUOTA, SP.DESCRICAO, SP.DESCTABELA, SP.APRESENTACAO, SP.ACRESSUGESTAO, SP.CODNCM, SP.CST, SP.PRECOVENDA, SP.ORIGEM, SP.CODBARRAS FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :TCST, :INFPRVENDA, :ORIGEM, :CODBARRAS; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; if (CST iS NULL) then CST = TCST; TEMPDESC =''; SELECT IMD.DESCRICAOADICIONAL FROM IMDESCRICAOADICIONAL IMD WHERE IMD.CODITEMMOVIMENTO=:CODITEMMOV INTO :TEMPDESC; if (TEMPDESC IS NULL) then TEMPDESC =''; if (TEMPDESCTABELA IS NULL) then TEMPDESCTABELA =''; DESCRICAOADICIONAL = DESCPROD || ' ' || TEMPDESC || ' ' || TEMPDESCTABELA; DESCADICIONAL = TEMPDESC; COR = NULL; SELECT TS.DESCRICAO FROM TABELASSIMPLES TS WHERE TS.CODTABELASIMPLES=:CODTABELASIMPLES INTO :COR; SELECT UM.DESCRICAO, UM.SIGLA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADE INTO :UNIDADE, :SIGLA; SELECT SUM(IO.QTD) FROM PRODUTOSOEMAD IO WHERE IO.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAMAD; if (ENTREGAMAD IS NULL) then ENTREGAMAD=0; SELECT SUM(IPD.QTD) FROM PRODUTOSOEPD IPD WHERE IPD.CODITEMMOVIMENTO=:CODITEMMOV INTO :ENTREGAPD; if (ENTREGAPD IS NULL) then ENTREGAPD=0; QTDENTREGUE = ENTREGAMAD + ENTREGAPD; FALTAENTREGA = QTD - QTDENTREGUE; if (COMISSAO IS NULL) then VALORCOMISSAO =0; ELSE VALORCOMISSAO = (COMISSAO * TOTAL)/100; if (IPI >0 AND BASEIPI>0) then TOTALIPI = (BASEIPI * IPI)/100; ELSE TOTALIPI = 0; if (ICMS >0 and BASECALCULOICMS >0 ) then TOTALICMS = (ICMS * BASECALCULOICMS)/100; ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:MOVIMENTO INTO :TDESCONTOMOV, :TIPODESCONTOMOV, :TOTALMOV; DESCONTOMOV=0; if (TIPODESCONTOMOV='%') then DESCONTOMOV=TDESCONTOMOV; if (TIPODESCONTOMOV='$') then BEGIN DESCONTOMOV=(100 * TDESCONTOMOV)/ TOTALMOV; END if (DESCONTOMOV>0) then TOTALCOMDESCONTO = TOTAL - ((TOTAL * DESCONTOMOV)/100); ELSE TOTALCOMDESCONTO = NULL; suspend; END end ^ SET TERM ; ^ /*------ 12/12/2017 01:17:14 --------*/ SET TERM ^ ; ALTER PROCEDURE TOTALMOV ( MOVIMENTO INTEGER) RETURNS ( TOTALPRODUTOSSEMDESC FLOAT, TOTALPRODUTOS FLOAT, TOTALCUSTO FLOAT, TOTALDESPESAS FLOAT, TOTALGERAL FLOAT, TOTALIPI FLOAT, PARCELAS FLOAT, CHEQUE FLOAT, CARTAO FLOAT, SOMAPAGAMENTOS FLOAT, COMISSAOPORPROD FLOAT, DINHEIRO FLOAT, VALORDESCONTO FLOAT, TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, BASEICMS FLOAT, BASEIPI FLOAT, QTDTOTAL FLOAT) AS declare variable PRODUTOS FLOAT; declare variable CUSTO FLOAT; declare variable DESPESAS FLOAT; declare variable OS FLOAT; declare variable IPI FLOAT; declare variable SOMAIPI FLOAT; declare variable VALORIPI FLOAT; declare variable DESCONTO FLOAT; declare variable ACRESCIMO FLOAT; declare variable EMDINHEIRO FLOAT; declare variable DESPREC FLOAT; declare variable COMISSAO FLOAT; declare variable TIPODESCONTO CHAR(1); declare variable TIPOACRESCIMO CHAR(1); begin /* TOTAL DE PRODUTOS SELECT SUM(IM.QTD * IM.VALOR) AS TOTALPRODUTOS FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :PRODUTOS; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; */ SELECT SUM(QTD), SUM(IM.QTD * IM.VALORUNIT), SUM(IM.QTD * IM.VALOR), SUM(IM.QTD * IM.VALORCUSTO), SUM(IM.QTD * IM.VALORAVISTA) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO AND (IM.TIPO='I' or IM.TIPO IS NULL) INTO :QTDTOTAL, :TOTALPRODUTOSSEMDESC, :PRODUTOS, :CUSTO, :TOTALAVISTA; if (:PRODUTOS IS NULL) then TOTALPRODUTOS=0; ELSE TOTALPRODUTOS=PRODUTOS; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO; if (TOTALPRODUTOSSEMDESC IS NULL) then TOTALPRODUTOSSEMDESC = 0; /* TOTALCUSTO SELECT SUM(IM.QTD * IM.VALORCUSTO) FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :CUSTO; if (:CUSTO IS NULL) then TOTALCUSTO=0; ELSE TOTALCUSTO=CUSTO;*/ COMISSAOPORPROD = 0; FOR SELECT (SUM(IM.QTD * IM.VALOR) * IM.COMISSAO)/100 FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO GROUP BY IM.QTD, IM.valor, IM.COMISSAO INTO :COMISSAO DO BEGIN if (NOT COMISSAO IS NULL) then COMISSAOPORPROD=COMISSAOPORPROD + COMISSAO; END /*SELECT M.TOTALIPI FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :VALORIPI; If (:VALORIPI IS NULL) then VALORIPI=0;*/ SELECT SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS; If (:VALORIPI IS NULL) then VALORIPI=0; If (:TOTALICMS IS NULL) then TOTALICMS=0; /*DADOS MOV*/ SELECT D.ACRESCIMO, D.DESCONTO, D.TIPOACRESCIMO, D.TIPODESCONTO FROM DADOSMOVIMENTO D WHERE D.CODMOVIMENTO=:MOVIMENTO INTO :ACRESCIMO, :DESCONTO, :TIPOACRESCIMO, :TIPODESCONTO; If (:ACRESCIMO IS NULL) THEN ACRESCIMO = 0; IF (:DESCONTO IS NULL) THEN DESCONTO = 0; /*SOMA DESPESAS*/ SELECT SUM(DM.VALOR) AS TOTALDESPESAS FROM MOVIMENTOSPRODUTOS M LEFT JOIN DESPESAMOVIMENTO DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO INTO :DESPESAS; if (:DESPESAS IS NULL) then TOTALDESPESAS=0; ELSE TOTALDESPESAS=DESPESAS; /*SOMA CARTAO*/ SELECT SUM(PCC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCARTAO PCC ON (PCC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CARTAO; IF (:CARTAO IS NULL) then CARTAO=0; /*SOMA PARCELAS*/ SELECT SUM(PC.VALORPARCELA) FROM CONTASPAGARRECEBER CPR JOIN PARCELASCONTAS PC ON (PC.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :PARCELAS; IF (:PARCELAS IS NULL) then PARCELAS=0; /*SOMA CHEQUE*/ SELECT SUM(CH.VALOR) FROM CONTASPAGARRECEBER CPR JOIN CHCONTAS CC ON (CC.CODCONTA = CPR.CODCONTA) JOIN CHEQUES CH ON (CH.CODCHEQUE = CC.CODCHEQUE) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :CHEQUE; IF (:CHEQUE IS NULL) then CHEQUE=0; /*DINHEIRO*/ SELECT D.VALOR FROM CONTASPAGARRECEBER CPR JOIN DINHEIRO D ON (D.CODCONTA = CPR.CODCONTA) WHERE CPR.CODMOVIMENTO=:MOVIMENTO INTO :EMDINHEIRO; IF (:EMDINHEIRO IS NULL) then EMDINHEIRO=0; DINHEIRO = EMDINHEIRO; /*SOMA NOVO IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.BASEIPI AS FLOAT)) * CAST(IM.IPI AS FLOAT))/100 FROM MOVIMENTOSPRODUTOS M LEFT JOIN ITENSMOVIMENTOPROD IM ON (IM.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.CODMOVIMENTO=:MOVIMENTO AND NOT IM.IPI IS NULL INTO :IPI DO BEGIN SOMAIPI = SOMAIPI + IPI; END IF (:VALORIPI IS NULL) then TOTALIPI=0; ELSE TOTALIPI=VALORIPI; /*DINHEIRO*/ SELECT DR.VALOR FROM DESPESASRECEITAS DR WHERE DR.CODMOVIMENTO=:MOVIMENTO INTO :DESPREC; IF (:DESPREC IS NULL) then DESPREC =0; SELECT S.TOTAL FROM SERVICOS S WHERE S.CODMOVIMENTO=:MOVIMENTO INTO :OS; IF (:OS IS NULL) then OS =0; SELECT FM.VALOR FROM FRETEMOVIMENTO FM WHERE FM.CODMOVIMENTO=:MOVIMENTO INTO :FRETE; IF (:FRETE IS NULL) then FRETE =0; SOMAPAGAMENTOS = EMDINHEIRO + CHEQUE + PARCELAS + CARTAO; TOTALGERAL = TOTALPRODUTOS + TOTALDESPESAS + TOTALIPI + DESPREC + OS + :FRETE; VALORDESCONTO = 0; If (:DESCONTO>0) Then Begin If (:TIPODESCONTO = '%') Then Begin VALORDESCONTO = TOTALGERAL - (TOTALGERAL - ((TOTALGERAL * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - ((TOTALGERAL * DESCONTO)/100); End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = TOTALGERAL - ( TOTALGERAL - DESCONTO); TOTALGERAL = TOTALGERAL - DESCONTO; End End If (:ACRESCIMO>0) Then Begin If (:TIPOACRESCIMO = '%') Then Begin TOTALGERAL = TOTALGERAL + ((TOTALGERAL * ACRESCIMO)/100); End If (:TIPOACRESCIMO = '$' )Then Begin TOTALGERAL = TOTALGERAL + ACRESCIMO; End End suspend; end ^ SET TERM ; ^