/*------ 01/09/2016 11:56:41 --------*/ SET TERM ^ ; ALTER PROCEDURE SPPESSOAMOV ( CODMOVIMENTO INTEGER, TIPOMOV VARCHAR(5)) RETURNS ( CODPESSOA INTEGER, NOME VARCHAR(70), NOMEFANTAZIA VARCHAR(70), TIPO VARCHAR(15), CPFCNPJ VARCHAR(20), RGIE VARCHAR(20), DATANASC DATE, TIPOPESSOA VARCHAR(5), CEP VARCHAR(8), LOGRADOURO VARCHAR(50), NR VARCHAR(5), COMPLEMENTO VARCHAR(30), BAIRRO VARCHAR(30), CIDADE VARCHAR(30), CODCIDADE INTEGER, UF VARCHAR(2), FONE VARCHAR(20), CPAIS INTEGER, DESCPAIS VARCHAR(50), CONTRIBUINTEICMS CHAR(1)) AS declare variable CODENDCLI INTEGER; begin if (TIPOMOV IS NULL) then BEGIN SELECT M.TIPO FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :TIPOMOV; END CPAIS = 1058; DESCPAIS = 'BRASIL'; IF (TIPOMOV IN ('VE','PV','OR','CS','DE','NE','TR','NC','LO', 'RE')) then BEGIN TIPO = 'Cliente'; SELECT CM.CODCLIENTE, CM.CODENDCLI FROM CLIENTEMOVIMENTO CM WHERE CM.CODMOVIMENTO=:CODMOVIMENTO INTO :CODPESSOA, :CODENDCLI; SELECT C.NOME, C.TIPO, C.CONTRIBUINTEICMS FROM CLIENTES C WHERE C.CODCLIENTE=:CODPESSOA INTO :NOME, :TIPOPESSOA, :CONTRIBUINTEICMS; if (TIPOPESSOA='F') then BEGIN NOMEFANTAZIA = NULL; SELECT CF.CPF, CF.RG, CF.datanasc FROM CLIENTEFISICO CF WHERE CF.CODCLIENTE=:CODPESSOA INTO :CPFCNPJ, :RGIE, :DATANASC; END if (TIPOPESSOA='J') then BEGIN SELECT CJ.RAZAO, CJ.CNPJ, CJ.IE, NULL FROM CLIENTEJURIDICO CJ WHERE CJ.CODCLIENTE=:CODPESSOA INTO :NOMEFANTAZIA, :CPFCNPJ, :RGIE, :DATANASC; END if (CODENDCLI IS NULL) then BEGIN SELECT FIRST 1 E.CEP, E.LOGRADOURO, E.NR, E.COMPLEMENTO, E.BAIRRO, CD.DESCRICAO, CD.CODCIDADE, UF.SIGLA FROM ENDERECOSCLI E JOIN CIDADES CD ON CD.CODCIDADE = E.CODCIDADE JOIN UF UF ON UF.CODUF = CD.CODUF WHERE E.CODCLIENTE=:CODPESSOA INTO CEP, LOGRADOURO, NR, COMPLEMENTO, BAIRRO, CIDADE, CODCIDADE, :UF; END ELSE BEGIN SELECT FIRST 1 E.CEP, E.LOGRADOURO, E.NR, E.COMPLEMENTO, E.BAIRRO, CD.DESCRICAO, CD.CODCIDADE, UF.SIGLA FROM ENDERECOSCLI E JOIN CIDADES CD ON CD.CODCIDADE = E.CODCIDADE JOIN UF UF ON UF.CODUF = CD.CODUF WHERE E.CODENDCLI=:CODENDCLI INTO CEP, LOGRADOURO, NR, COMPLEMENTO, BAIRRO, CIDADE, CODCIDADE, :UF; END SELECT FIRST 1 CC.DDD || '-' || CC.PREFIXO || '-' || CC.SUFIXO FROM CONTATOSCLI CC WHERE CC.CODCLIENTE=:CODPESSOA INTO :FONE; if (:NOME IS NULL) then NOME = 'CLIENTE NÃO INFORMADO'; SUSPEND; END IF (TIPOMOV IN ('CO','PC','CE','DS','NS', 'NF','DP')) then BEGIN TIPOPESSOA='J'; SELECT FM.CODFORNECEDOR FROM FORNMOVIMENTO FM WHERE FM.CODMOVIMENTO=:CODMOVIMENTO INTO :CODPESSOA; SELECT F.RAZAOSOCIAL, F.NOME, F.CGCCPF, F.RGIE, NULL FROM FORNECEDORES F WHERE F.CODFORNECEDOR=:CODPESSOA INTO :NOMEFANTAZIA, :NOME, :CPFCNPJ, :RGIE, :DATANASC; TIPO = 'Fornecedor'; SELECT FIRST 1 EF.CEP, EF.LOGRADOURO, EF.NR, EF.COMPLEMENTO, EF.BAIRRO, CD.DESCRICAO, CD.CODCIDADE, UF.SIGLA FROM ENDERECOSFORN EF JOIN CIDADES CD ON CD.CODCIDADE = EF.CODCIDADE JOIN UF UF ON UF.CODUF = CD.CODUF WHERE EF.CODFORNECEDOR=:CODPESSOA INTO CEP, LOGRADOURO, NR, COMPLEMENTO, BAIRRO, CIDADE, CODCIDADE, :UF; SELECT FIRST 1 CF.DDD || '-' || CF.PREFIXO || '-' || CF.SUFIXO FROM CONTATOSFORN CF WHERE CF.CODFORNECEDOR =:CODPESSOA INTO :FONE; if (:NOME IS NULL) then NOME = 'FORNECEDOR NÃO INFORMADO'; SUSPEND; END end ^ SET TERM ; ^ /*------ 01/09/2016 11:56:46 --------*/ SET TERM ^ ; ALTER PROCEDURE SINTEGRA54 ( DATAI DATE, DATAF DATE) 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), NRDOCUMENTO VARCHAR(20), CPFCNPJ VARCHAR(20), TIPODOC VARCHAR(20), TIPOCFOP CHAR(1)) 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 TIPOMOV VARCHAR(5); begin FOR SELECT C.TIPO, DM.TIPODOC, M.TIPO, 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.QTD * I.VALORAVISTA FROM MOVIMENTOSPRODUTOS M JOIN DOCUMENTOMOV DM ON DM.CODMOVIMENTO=M.CODMOVIMENTO JOIN CFOP C ON C.CODCFOP=DM.CODCFOP JOIN ITENSMOVIMENTOPROD I ON (I.CODMOVIMENTO=M.CODMOVIMENTO) WHERE (M.DATA>=:DATAI) AND (M.DATA<=:DATAF) AND (I.TIPO IS NULL or I.TIPO='I') AND DM.TIPODOC<>'ECF' INTO :TIPOCFOP, :TIPODOC, :TIPOMOV, :CODITEMMOVIMENTO, :CODMOVIMENTO, :CODTABELA, :QTD, :VALOR, :TOTAL, :BAIXADO, :VALORUNIT, :DESCONTO, :TOTALUNIT, :CODITEMMOV, :TEMPCODPROD, :CODUNIDADE, :CODTABELASIMPLES, :VOLUMES, :ICMS, :IPI, :ESTOQUEATUAL, :COMISSAO, :CODALIQUOTA, :FABRICADO, :DATAFAB, :CFOP, :VALORAVISTA, :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; SELECT CPFCNPJ FROM SPPESSOAMOV(:CODMOVIMENTO, :TIPOMOV) INTO :CPFCNPJ; SELECT DM.NRDOCUMENTO FROM SPDOCUMENTOMOV(:CODMOVIMENTO) DM INTO :NRDOCUMENTO; 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 FROM SPPESQPRODUTOSPORCODIGO(:CODTABELA) SP INTO :CODPRODUTO, :REFERENCIA, :PRODUTO, :DESCTABELA, :CODGRUPO, :GRUPO, :CODFABRICANTE, :FABRICANTE, :TCODALIQUOTA, :ALIQUOTA, :DESCPROD, :TEMPDESCTABELA, :APRESENTACAO, :ACRESSUGESTAO, :CODNCM, :CST, :INFPRVENDA, :ORIGEM; if (CODALIQUOTA iS NULL) then CODALIQUOTA=TCODALIQUOTA; 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 * VALOR)/100); ELSE TOTALIPI = 0; if (ICMS >0 ) then TOTALICMS = ICMS * ((QTD * VALOR)/100); ELSE TOTALICMS = 0; SELECT DM.DESCONTO, DM.TIPODESCONTO, DM.VALORMOVIMENTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO 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 ; ^ /*------ 01/09/2016 11:56:46 --------*/ SET TERM ^ ; ALTER PROCEDURE SPMOVPORCFOP ( DATAI DATE, DATAF DATE) RETURNS ( CODMOVIMENTO INTEGER, DATA DATE, NRDOCUMENTO VARCHAR(20), CFOP VARCHAR(40), TIPO CHAR(1), TIPOMOV VARCHAR(2), NATUREZA VARCHAR(10), TOTAL FLOAT, DESCSITUACAO VARCHAR(30), SITUACAO VARCHAR(2), CODFILIAL INTEGER, FILIAL VARCHAR(40), NFNFEMOV VARCHAR(20), NOMEPESSOA VARCHAR(70), TIPODOC VARCHAR(20), RETORNONFE VARCHAR(50)) AS begin FOR SELECT M.CODMOVIMENTO, M.DATA, CF.DESCRICAO , CF.NATUREZA, CF.TIPO, DM.NRDOCUMENTO, M.TIPO, M.SITUACAO, M.CODFILIAL, NF.NRDOCUMENTO, DM.TIPODOC, DM.RETORNONFE FROM MOVIMENTOSPRODUTOS M JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) JOIN CFOP CF ON (CF.CODCFOP = DM.CODCFOP) LEFT JOIN NFEMOV NF ON (NF.CODMOVIMENTO = M.CODMOVIMENTO) WHERE M.DATA>=:DATAI AND M.DATA<=:DATAF INTO :CODMOVIMENTO, :DATA, :CFOP, :NATUREZA, :TIPO, :NRDOCUMENTO, :TIPOMOV, :SITUACAO, :CODFILIAL, :NFNFEMOV, :TIPODOC, :RETORNONFE DO BEGIN SELECT F.NOME FROM FILIAIS F WHERE CODFILIAL=:CODFILIAL INTO :FILIAL; NOMEPESSOA=NULL; select NOME FROM sppessoamov(:CODMOVIMENTO, :TIPOMOV) INTO :NOMEPESSOA; IF (SITUACAO IS NULL) then DESCSITUACAO=''; IF (SITUACAO='CO') then DESCSITUACAO='CONFERIDA'; IF (SITUACAO='C') then DESCSITUACAO='CANCELADA'; IF (SITUACAO='A') then DESCSITUACAO='ABERTA'; IF (SITUACAO='I') then DESCSITUACAO='INICIADA'; IF (SITUACAO='F') then DESCSITUACAO='FINALIZADA'; IF (SITUACAO='NF') then DESCSITUACAO='NF CONFIRMADA'; SELECT TOTALGERAL FROM TOTALMOV(:CODMOVIMENTO) INTO :TOTAL; suspend; END end ^ SET TERM ; ^ /*------ 01/09/2016 11:56:46 --------*/ SET TERM ^ ; ALTER PROCEDURE SPNFEMOV RETURNS ( CODNFEMOV INTEGER, CODEMPRESANFE INTEGER, CODMOVIMENTO INTEGER, CODOE INTEGER, GERADA VARCHAR(1), ASSINADA VARCHAR(1), ENVIADA VARCHAR(1), LOTE VARCHAR(50), NR VARCHAR(10), STATUS VARCHAR(1), TIPO VARCHAR(10), VALIDA VARCHAR(1), DATA DATE, CODPESSOA INTEGER, NOME VARCHAR(70), TIPODOC VARCHAR(20), NRDOC VARCHAR(20), EMPRESA VARCHAR(70), DATAENVIO DATE, NRDOCUMENTONOTA VARCHAR(20), NRRECIBO VARCHAR(30)) AS declare variable TIPOMOV VARCHAR(10); begin FOR select N.CODNFEMOV, N.CODEMPRESANFE, N.CODMOVIMENTO, N.CODOE, N.GERADA, N.ASSINADA, N.ENVIADA, N.LOTE, N.NR, N.STATUS, N.TIPO, N.VALIDA, DM.TIPODOC, DM.NRDOCUMENTO, E.RAZAO, N.DATA, N.NRDOCUMENTO, N.NRRECIBO from NFEMOV N LEFT JOIN EMPRESASNFE E ON (E.CODEMPRESANFE = N.CODEMPRESANFE) JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = N.CODMOVIMENTO) into :CODNFEMOV, :CODEMPRESANFE, :CODMOVIMENTO, :CODOE, :GERADA, :ASSINADA, :ENVIADA, :LOTE, :NR, :STATUS, :TIPO, :VALIDA, :TIPODOC, :NRDOC, :EMPRESA, :DATAENVIO, :NRDOCUMENTONOTA, :NRRECIBO DO BEGIN SELECT M.tipo, M.DATA FROM movimentosprodutos M WHERE M.codmovimento=:CODMOVIMENTO INTO :TIPOMOV, :DATA; SELECT CODPESSOA, NOME FROM sppessoamov(:CODMOVIMENTO, :TIPOMOV) INTO :CODPESSOA, :NOME; suspend; END end ^ SET TERM ; ^ /*------ 01/09/2016 11:56:46 --------*/ SET TERM ^ ; ALTER PROCEDURE SPPESQMOVSINTEGRA ( DATAI DATE, DATAF DATE) RETURNS ( CODMOVIMENTO INTEGER, DATA DATE, TIPO VARCHAR(2), SITUACAO VARCHAR(2), CODIGOCONTABIL VARCHAR(20), CODFUNCIONARIO INTEGER, NRDOCUMENTO VARCHAR(20), VALOR FLOAT, CODFILIAL INTEGER, CODACUMULADOR INTEGER, CODESPECIE INTEGER, BASEICMS FLOAT, ICMS FLOAT, TIPODOC VARCHAR(20), NATUREZA VARCHAR(10), TOTALIPI FLOAT, CPFCNPJ VARCHAR(20), RGIE VARCHAR(20), NOME VARCHAR(70), CODPESSOA INTEGER, TIPOPESSOA VARCHAR(5), UF CHAR(2), TIPOCFOP CHAR(1)) AS begin FOR SELECT M.CODMOVIMENTO, M.DATA, M.TIPO, M.SITUACAO, M.CODIGOCONTABIL, M.CODFUNCIONARIO, DM.NRDOCUMENTO, M.CODFILIAL, M.CODACUMULADOR, M.CODESPECIE, DM.BASEICMS, DM.ICMS, DM.TIPODOC, CF.NATUREZA, M.TOTALIPI, CF.TIPO FROM MOVIMENTOSPRODUTOS M JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = M.CODMOVIMENTO) JOIN CFOP CF ON (CF.CODCFOP = DM.CODCFOP) LEFT JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL) WHERE M.DATA>=:DATAI AND M.DATA<=:DATAF INTO CODMOVIMENTO, DATA, TIPO, SITUACAO, CODIGOCONTABIL, CODFUNCIONARIO, NRDOCUMENTO, CODFILIAL, CODACUMULADOR, CODESPECIE, :BASEICMS, :ICMS, :TIPODOC, :NATUREZA, :TOTALIPI, :TIPOCFOP DO BEGIN CODPESSOA = NULL; TIPOPESSOA = NULL; NOME = NULL; CPFCNPJ = NULL; RGIE = NULL; SELECT CODPESSOA, TIPOPESSOA, NOME, CPFCNPJ, RGIE FROM SPPESSOAMOV(:CODMOVIMENTO, :TIPO) INTO :CODPESSOA, :TIPOPESSOA, :NOME, :CPFCNPJ, :RGIE; SELECT TOTALGERAL FROM TOTALMOV(:CODMOVIMENTO) INTO :VALOR; UF = NULL; SELECT FIRST(1) UF FROM SPENDERECOSPESSOAMOV (:CODMOVIMENTO) INTO :UF; suspend; END end ^ SET TERM ; ^ /*------ 28/09/2016 11:30:04 --------*/ ALTER TABLE ITENSMOVIMENTOPROD ADD CST VAR_CHAR10; /*------ 28/09/2016 11:57:30 --------*/ 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)) 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.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, :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 * VALOR)/100); ELSE TOTALIPI = 0; if (ICMS >0 ) then TOTALICMS = ICMS * ((QTD * VALOR)/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 ; ^ /*------ 28/09/2016 11:57:32 --------*/ 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 ; ^ /*------ 28/09/2016 11:57:32 --------*/ 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 IPI*/ SOMAIPI = 0; FOR SELECT ((CAST(IM.QTD AS FLOAT) * CAST(IM.VALOR 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 ; ^