/*------ 11/05/2019 21:55:49 --------*/ SET TERM ^ ; ALTER PROCEDURE SPATUALIZAESTOQUE ( TIPO CHAR(1), CODMOVIMENTO INTEGER, CODITEMMOVIMENTO INTEGER) AS declare variable ESTOQUEATUAL float; declare variable QTD float; declare variable CONVERTIDO float; declare variable TQTD float; declare variable FPCODUNIDADE integer; declare variable FPCODFAMILIA integer; declare variable FPEQUIVALENCIA float; declare variable FPEQPADRAO float; declare variable EQUMPROD float; declare variable EQUMLANCADA float; declare variable BAIXADO char(1); declare variable CODPRODUTO integer; declare variable TCODITEMMOVIMENTO integer; declare variable CODUNIDADEITEM integer; declare variable QTDITEM float; declare variable CODFILIAL integer; declare variable CODFUNCIONARIO integer; declare variable DATAMOV date; declare variable FULCODUNIDADE integer; declare variable FULCODFAMILIA integer; declare variable FULEQUIVALENCIA float; declare variable EQFPEQUIVALENCIA integer; declare variable CODMOVESTOQUE integer; declare variable CODADDITEMMOVMAD integer; declare variable CODPRODUTOADD integer; declare variable QTDADD float; declare variable CODUNIDADEADD integer; declare variable BAIXADOADD char(1); declare variable CODESTOQUE integer; declare variable EXISTE char(1); declare variable AJUSTE float; declare variable CONVERSAO float; declare variable SALVAR float; declare variable ESTOQUEFILIAL float; declare variable EQ float; begin EQ =1; SELECT M.CODFILIAL, M.CODFUNCIONARIO, M.DATA FROM MOVIMENTOSPRODUTOS M WHERE M.CODMOVIMENTO=:CODMOVIMENTO INTO :CODFILIAL, :CODFUNCIONARIO, :DATAMOV; FOR SELECT IM.CODITEMMOVIMENTO, IM.BAIXADO, IM.CODPRODUTO, IM.CODUNIDADE, IM.QTD, IM.EQ FROM ITENSMOVIMENTOPROD IM WHERE IM.CODITEMMOVIMENTO=:CODITEMMOVIMENTO INTO :TCODITEMMOVIMENTO, :BAIXADO, :CODPRODUTO, :CODUNIDADEITEM, :QTDITEM, :EQ DO BEGIN IF (BAIXADO = 'N') then BEGIN SELECT P.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA, U.EQUIVALENCIA FROM PRODUTOS P LEFT JOIN UNIDADEMEDIDA UM ON (UM.CODUNIDADE = P.CODUNIDADE) LEFT JOIN FAMILIAUNIDADE F ON (F.CODFAMILIA = UM.CODFAMILIA) LEFT JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = F.CODUNIDADE) WHERE P.CODPRODUTO=:CODPRODUTO INTO :FPCODUNIDADE, :FPCODFAMILIA, :EQUMPROD, :FPEQUIVALENCIA; IF (CODUNIDADEITEM = FPCODUNIDADE) then BEGIN if (EQ IS NULL) then EQ=1; QTD = QTDITEM; END ELSE BEGIN SELECT UM.CODUNIDADE, UM.CODFAMILIA, UM.EQUIVALENCIA FROM UNIDADEMEDIDA UM WHERE UM.CODUNIDADE=:CODUNIDADEITEM INTO :FULCODUNIDADE, :FULCODFAMILIA, :EQUMLANCADA; if (FPCODFAMILIA = FULCODFAMILIA) then BEGIN Qtd = ((QTDITEM * EQUMLANCADA)/ EQUMPROD); END ELSE Begin /*Unidadee familia diferentes*/ SELECT FP.EQUIVALENCIA FROM FAMILIAUMPROD FP JOIN UNIDADEMEDIDA UM ON (UM.CODFAMILIA = FP.CODFAMILIA) WHERE FP.CODPRODUTO =:CODPRODUTO AND UM.CODUNIDADE=:CODUNIDADEITEM INTO :EQFPEQUIVALENCIA; TQTD = (QTDITEM * EQUMLANCADA)/ EQUMPROD; CONVERTIDO = (TQTD * FPEQUIVALENCIA)/EQFPEQUIVALENCIA; QTD = CONVERTIDO; End END if (EQ IS NULL) then EQ=1; QTD = QTD * EQ; CODMOVESTOQUE = gen_id(GEN_MOVESTOQUE,1); insert into MOVESTOQUE (CODMOVESTOQUE, CODFUNCIONARIO, CODFILIAL, CODPRODUTO, CODUNIDADE, DATA, QTD, TIPO, CODMOVIMENTO, DATALANCAMENTO, HORALANCAMENTO, CODITEMMOVIMENTO) values (:CODMOVESTOQUE, :CODFUNCIONARIO, :CODFILIAL, :CODPRODUTO, :CODUNIDADEITEM, :DATAMOV, :QTD, :TIPO, :CODMOVIMENTO, CURRENT_DATE, CURRENT_TIME, :TCODITEMMOVIMENTO); SELECT ESTOQUE FROM SPMOVESTOQUE(:CODPRODUTO) INTO :ESTOQUEATUAL; /*EXECUTE PROCEDURE SPESTOQUEPORFILIAL(:CODPRODUTO, :TIPO,:QTD,:CODFILIAL);*/ update ITENSMOVIMENTOPROD I set I.BAIXADO = 'S', I.ESTOQUEATUAL =:ESTOQUEATUAL where I.CODITEMMOVIMENTO=:TCODITEMMOVIMENTO; SUSPEND; SELECT E.CODESTOQUE, E.ESTOQUE FROM ESTOQUE E WHERE E.CODFILIAL =:CODFILIAL AND E.CODPRODUTO =:CODPRODUTO INTO :CODESTOQUE, :ESTOQUEATUAL; if (ESTOQUEATUAL IS NULL) then ESTOQUEATUAL = 0; IF (CODESTOQUE IS NULL) then BEGIN EXISTE = 'N'; END ELSE EXISTE = 'S'; IF (EXISTE='S') THEN BEGIN IF (TIPO='-') THEN BEGIN SALVAR = ESTOQUEATUAL - AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END IF (TIPO='+') THEN BEGIN SALVAR = ESTOQUEATUAL + AJUSTE; update ESTOQUE E set E.ESTOQUE = :SALVAR where E.CODESTOQUE = :CODESTOQUE; END END ELSE BEGIN IF (TIPO='-') THEN BEGIN SALVAR = (AJUSTE * -1); insert into ESTOQUE (CODESTOQUE,CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END IF (TIPO='+') THEN BEGIN SALVAR = AJUSTE; insert into ESTOQUE (CODESTOQUE, CODFILIAL, CODPRODUTO, ESTOQUE) values (:CODESTOQUE, :CODFILIAL, :CODPRODUTO, :SALVAR); END END SUSPEND; END END end ^ SET TERM ; ^ /*------ 16/05/2019 13:06:39 --------*/ 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, VBCST NUMERIC(10,2), VICMSST NUMERIC(10,2), TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, BASEICMS FLOAT, BASEIPI FLOAT, QTDTOTAL FLOAT, CARTAOCRED FLOAT, CARTAODEB 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; 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 SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; 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; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=554 and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=554 and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*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 ; ^ /*------ 16/05/2019 13:08: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, VBCST NUMERIC(10,2), VICMSST NUMERIC(10,2), TOTALAVISTA FLOAT, FRETE FLOAT, TOTALICMS FLOAT, BASEICMS FLOAT, BASEIPI FLOAT, QTDTOTAL FLOAT, CARTAOCRED FLOAT, CARTAODEB 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; 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 SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; 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; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*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 ; ^ update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = 'VARCHAR_4' where (RDB$FIELD_NAME = 'MODBCST') and (RDB$RELATION_NAME = 'ITENSMOVIMENTOPROD') /*------ 19/06/2019 08:40:11 --------*/ SET TERM ^ ; ALTER PROCEDURE SPCLIENTES RETURNS ( CODCLIENTE INTEGER, CODEMPRESA INTEGER, NOME VARCHAR(70), CPFCNPJ VARCHAR(14), RGIE VARCHAR(15), RAZAO VARCHAR(70), TIPO CHAR(1), STATUS CHAR(1), BLOQUEARPORLIMITE CHAR(1), OBS BLOB sub_type 0 segment size 80, CODFILIAL INTEGER, DIAVENCIMENTO INTEGER, SPC CHAR(1), OBSERVACAO VARCHAR(50), NRIDENTIFICACAO VARCHAR(30), SEXO CHAR(1), CODCLIEMP INTEGER) AS declare variable TCODCLIENTE INTEGER; declare variable TCODEMPRESA INTEGER; declare variable TNOME VARCHAR(70); declare variable TCPFCNPJ VARCHAR(14); declare variable TRGIE VARCHAR(15); declare variable TRAZAO VARCHAR(70); declare variable TTIPO CHAR(1); declare variable TSTATUS CHAR(1); declare variable TOBS BLOB; declare variable TCODFILIAL INTEGER; declare variable TBLOQUEARPORLIMITE CHAR(1); declare variable TDIAVENCIMENTO INTEGER; declare variable TSPC CHAR(1); declare variable TOBSERVACAO VARCHAR(50); declare variable TNRIDENTIFICACAO VARCHAR(30); declare variable TSEXO VARCHAR(1); begin FOR SELECT C.CODCLIENTE, C.NOME, C.BLOQUEARPORLIMITE, CAST (CF.CPF AS VARCHAR(14)) AS CPFCNPJ, CF.RG AS RGIE, CAST(NULL AS VARCHAR(70)), C.TIPO, C.STATUS, O.OBS, C.CODFILIAL, C.DIAVENCIMENTO, C.SPC, C.OBSERVACAO, C.NRIDENTIFICACAO, C.CODEMPRESA, CF.SEXO, C.CODCLIEMP FROM CLIENTES C JOIN CLIENTEFISICO CF ON (CF.CODCLIENTE = C.CODCLIENTE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL INTO :TCODCLIENTE, TNOME, :TBLOQUEARPORLIMITE, :TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TOBS, :TCODFILIAL, :TDIAVENCIMENTO, :TSPC, :TOBSERVACAO, :TNRIDENTIFICACAO, :TCODEMPRESA, :TSEXO, :CODCLIEMP DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODCLIENTE = TCODCLIENTE; NOME = TNOME; BLOQUEARPORLIMITE = TBLOQUEARPORLIMITE; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; OBS = TOBS; CODFILIAL = TCODFILIAL; DIAVENCIMENTO = TDIAVENCIMENTO; SPC = TSPC; OBSERVACAO = TOBSERVACAO; NRIDENTIFICACAO = TNRIDENTIFICACAO; CODEMPRESA = TCODEMPRESA; SEXO =TSEXO; SUSPEND; END END FOR SELECT C.CODCLIENTE, C.NOME, C.BLOQUEARPORLIMITE, CJ.CNPJ AS CPFCNPJ, CJ.IE AS RGIE, CJ.RAZAO, C.TIPO, C.STATUS, O.OBS, C.CODFILIAL, C.DIAVENCIMENTO, C.SPC, C.OBSERVACAO, C.NRIDENTIFICACAO, C.CODEMPRESA, C.CODCLIEMP FROM CLIENTES C JOIN CLIENTEJURIDICO CJ ON (CJ.CODCLIENTE = C.CODCLIENTE) LEFT JOIN OBSCLIENTES O ON (O.CODCLIENTE = C.CODCLIENTE) WHERE C.LIXEIRA='N' OR C.LIXEIRA IS NULL INTO :TCODCLIENTE, TNOME, :TBLOQUEARPORLIMITE, :TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TOBS, :TCODFILIAL, :TDIAVENCIMENTO, :TSPC, :TOBSERVACAO, :TNRIDENTIFICACAO, :TCODEMPRESA, :CODCLIEMP DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODCLIENTE = TCODCLIENTE; NOME = TNOME; BLOQUEARPORLIMITE = TBLOQUEARPORLIMITE; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; OBS = TOBS; CODFILIAL = TCODFILIAL; DIAVENCIMENTO =TDIAVENCIMENTO; SPC = TSPC; OBSERVACAO = TOBSERVACAO; NRIDENTIFICACAO = TNRIDENTIFICACAO; CODEMPRESA = TCODEMPRESA; SEXO = '?'; SUSPEND; END END FOR SELECT C.CODCLIENTE, C.NOME, C.BLOQUEARPORLIMITE, CAST(NULL AS VARCHAR(14)) AS CPFCNPJ, CAST(NULL AS VARCHAR(15)) AS RGIE, CAST(NULL AS VARCHAR(70)) AS RAZAO, C.TIPO, C.STATUS, O.OBS, C.CODFILIAL, C.DIAVENCIMENTO, C.SPC, C.OBSERVACAO, C.NRIDENTIFICACAO, C.CODEMPRESA, C.CODCLIEMP FROM CLIENTES C 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)) INTO :TCODCLIENTE, TNOME, :TBLOQUEARPORLIMITE, :TCPFCNPJ, :TRGIE, :TRAZAO, :TTIPO, :TSTATUS, :TOBS, :TCODFILIAL, :TDIAVENCIMENTO, :TSPC, :TOBSERVACAO, :TNRIDENTIFICACAO, :TCODEMPRESA, :CODCLIEMP DO BEGIN IF (NOT TCODCLIENTE IS NULL) then BEGIN CODCLIENTE = TCODCLIENTE; NOME = TNOME; BLOQUEARPORLIMITE = TBLOQUEARPORLIMITE; CPFCNPJ = TCPFCNPJ; RGIE = TRGIE; RAZAO = TRAZAO; TIPO = TTIPO; STATUS =TSTATUS; OBS = TOBS; CODFILIAL = TCODFILIAL; DIAVENCIMENTO = TDIAVENCIMENTO; SPC = TSPC; OBSERVACAO = TOBSERVACAO; NRIDENTIFICACAO = TNRIDENTIFICACAO; CODEMPRESA = TCODEMPRESA; SEXO = '?'; SUSPEND; END END end ^ SET TERM ; ^ /*------ 01/07/2019 03:50:53 --------*/ ALTER TABLE CEPS ADD SIGLAUF UF; /*------ 01/07/2019 03:51:08 --------*/ ALTER TABLE CEPS ADD DESCUF VARCHAR_50; /*------ 01/07/2019 03:51:18 --------*/ ALTER TABLE CEPS ADD DESCCIDADE VARCHAR_100; /*------ 01/07/2019 03:51:39 --------*/ ALTER TABLE CEPS ADD CODUF INTEIRO_NULL; /*------ 01/07/2019 03:52:13 --------*/ ALTER TABLE CEPS DROP CONSTRAINT FK_CEPS_CIDADE; /*------ 01/07/2019 03:53:27 --------*/ ALTER TABLE CEPS DROP CONSTRAINT PK_CEPS; /*------ 01/07/2019 03:54:17 --------*/ SET TERM ^ ; CREATE TRIGGER CEPS_BI FOR CEPS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODCEP IS NULL OR NEW.CODCEP=0) THEN NEW.CODCEP = GEN_ID(GEN_CEPS,1); END ^ SET TERM ; ^ /*------ 01/07/2019 06:31:35 --------*/ update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'CODCEP') and (RDB$RELATION_NAME = 'CEPS') ; /*------ 01/07/2019 06:31:44 --------*/ alter table CEPS add constraint PK_CEPS primary key (CODCEP); /*------ 01/07/2019 06:53:16 --------*/ SET GENERATOR GEN_CEPS TO 0; /*------ 03/07/2019 02:00:19 --------*/ ALTER TABLE EMPRESA ADD KEYACESSO VC250; ALTER TABLE PRODUTOS ADD QTDMINIMAVENDAFV INTEIRO_NULL; CREATE TABLE ESPECIESMADEIRA ( CODESPECIE INTEGER NOT NULL); ALTER TABLE ESPECIESMADEIRA ADD CONSTRAINT PK_ESPECIESMADEIRA PRIMARY KEY (CODESPECIE); ALTER TABLE ESPECIESMADEIRA ADD DESCRICAO VARCHAR_100; ALTER TABLE ESPECIESMADEIRA ADD CODPRODUTO CODIGO; ALTER TABLE ESPECIESMADEIRA ADD CODEMPRESA INTEIRO_NULL; ALTER TABLE ESPECIESMADEIRA ALTER COLUMN CODPRODUTO TYPE INTEIRO_NULL; CREATE TABLE IAHISTORICO ( ID CODIGO NOT NULL); ALTER TABLE IAHISTORICO ADD CONSTRAINT PK_IAHISTORICO PRIMARY KEY (ID); ALTER TABLE IAHISTORICO ADD TIPO VARCHAR_50; ALTER TABLE IAHISTORICO ADD REFERENCIA VARCHAR_100; ALTER TABLE IAHISTORICO ADD VALOR VARCHAR_100; ALTER TABLE IAHISTORICO ADD QTD INTEIRO_NULL; ALTER TABLE IAHISTORICO ADD CODEMPRESA INTEIRO_NULL; CREATE SEQUENCE GEN_IAHISTORICO_ID; SET TERM ^ ; CREATE TRIGGER IAHISTORICO_BI FOR IAHISTORICO ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL or NEW.ID=0 ) THEN NEW.ID = GEN_ID(GEN_IAHISTORICO_ID,1); END^ SET TERM ; ^ SET TERM ^ ; create or alter procedure SPINSEREIAHISTORICO ( ID integer, TIPO varchar(50), VALOR varchar(100), QTD integer, CODEMPRESA integer, REFERENCIA varchar(100)) as begin IF (EXISTS(SELECT ID FROM IAHISTORICO WHERE (ID = :ID))) THEN UPDATE IAHISTORICO SET TIPO = :TIPO, REFERENCIA = :REFERENCIA, VALOR = :VALOR, QTD = :QTD, CODEMPRESA = :CODEMPRESA WHERE (ID = :ID); ELSE INSERT INTO IAHISTORICO ( ID, TIPO, REFERENCIA, VALOR, QTD, CODEMPRESA) VALUES ( :ID, :TIPO, :REFERENCIA, :VALOR, :QTD, :CODEMPRESA); suspend; end^ SET TERM ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPMOVPRODUTO ( DATAI date, DATAF date) returns ( CODMOVIMENTO integer, CODEMPRESA integer, CODFUNCIONARIO integer, CODFILIAL integer, FILIAL varchar(40), DATA date, CODIGOCONTABIL varchar(20), TIPO varchar(2), SITUACAO varchar(2), CODPRODUTO integer, PRODUTO varchar(50), PLANODECONTAS varchar(40), TIPOPLANO char(1), QTD float, UNIDADEMOV varchar(30), VALOR float, TOTAL float, BAIXADO char(1), QTDCOVERTIDA float, UNIDADECONVERTIDA varchar(30), CODFABRICANTE integer, FABRICANTE varchar(40), CODGRUPO integer, GRUPO varchar(40), CODUNIDADEMOV integer, CODFORNECEDOR integer, FORNECEDOR varchar(70), RAZAOFORNECEDOR varchar(70), FUNCIONARIO varchar(40), VOLUMES integer, ESTOQUE float, VALORCUSTO float, TOTALCUSTO float, LUCRO float, TIPODESCONTO char(1), DESCONTO float, TOTALCDESC float, ESTOQUEATUAL float) as declare variable CODPRODUTOMOV integer; declare variable CODUNIDADLANCADA integer; declare variable QTDLANCADA float; declare variable CODMOV integer; declare variable TDESCONTO float; declare variable TTIPODESCONTO char(1); declare variable NRITENS integer; declare variable TEMPTOTAL float; begin FOR SELECT M.CODMOVIMENTO, M.CODEMPRESA, M.CODFUNCIONARIO, M.CODFILIAL,FI.NOME, M.DATA, M.CODIGOCONTABIL, M.TIPO, M.SITUACAO, P.CODPRODUTO, P.DESCRICAO AS PRODUTO, PC.DESCRICAO, PC.ESTOQUE,I.QTD, U.DESCRICAO, I.VALOR, I.QTD * I.VALOR AS TOTAL, I.BAIXADO, I.CODPRODUTO, I.QTD, I.CODUNIDADE, P.CODFABRICANTE, F.DESCRICAO, P.CODGRUPO, G.DESCRICAO, FM.CODFORNECEDOR, FO.NOME, FO.RAZAOSOCIAL, FU.NOME, I.VOLUMES, I.VALORCUSTO, I.ESTOQUEATUAL, I.QTD * I.VALORCUSTO FROM ITENSMOVIMENTOPROD I JOIN MOVIMENTOSPRODUTOS M ON (M.CODMOVIMENTO = I.CODMOVIMENTO) JOIN FILIAIS FI ON (FI.CODFILIAL = M.CODFILIAL) LEFT JOIN FORNMOVIMENTO FM ON (FM.CODMOVIMENTO = M.CODMOVIMENTO) LEFT JOIN FORNECEDORES FO ON (FO.CODFORNECEDOR = FM.CODFORNECEDOR) JOIN PLANOSDECONTAS PC ON (PC.CODIGOCONTABIL = M.CODIGOCONTABIL AND PC.CODEMPRESA=M.CODEMPRESA) JOIN PRODUTOS P ON (P.CODPRODUTO = I.CODPRODUTO) JOIN UNIDADEMEDIDA U ON (U.CODUNIDADE = I.CODUNIDADE) LEFT JOIN FABRICANTE F ON (P.CODFABRICANTE = F.CODFABRICANTE) LEFT JOIN GRUPO G ON (P.CODGRUPO = G.CODGRUPO) LEFT JOIN FUNCIONARIOS FU ON (FU.CODFUNCIONARIO = M.CODFUNCIONARIO) WHERE M.DATA>=:DATAI AND M.DATA<=:DATAF INTO :CODMOVIMENTO, :CODEMPRESA, :CODFUNCIONARIO, :CODFILIAL, :FILIAL, :DATA, :CODIGOCONTABIL, :TIPO, :SITUACAO, :CODPRODUTO, :PRODUTO, :PLANODECONTAS, :TIPOPLANO, :QTD, :UNIDADEMOV, :VALOR, :TOTAL, :BAIXADO, :CODPRODUTOMOV, :QTDLANCADA, :CODUNIDADLANCADA, :CODFABRICANTE, :FABRICANTE, :CODGRUPO, :GRUPO, :CODFORNECEDOR, :FORNECEDOR, :RAZAOFORNECEDOR, :FUNCIONARIO, :VOLUMES, :VALORCUSTO, :ESTOQUEATUAL, :TOTALCUSTO DO BEGIN SELECT S.QTDCONVERTIDA, S.UNIDADEPRODUTO FROM SPQTDCONVERTIDA(:CODPRODUTOMOV, :CODUNIDADLANCADA, :QTDLANCADA) S INTO :QTDCOVERTIDA , :UNIDADECONVERTIDA; CODUNIDADEMOV = CODUNIDADLANCADA; ESTOQUE = 0; SELECT SP.ESTOQUE FROM SPMOVESTOQUE(:CODPRODUTO) SP INTO :ESTOQUE; SELECT DM.DESCONTO, DM.TIPODESCONTO FROM DADOSMOVIMENTO DM WHERE DM.CODMOVIMENTO=:CODMOVIMENTO INTO :TDESCONTO, :TTIPODESCONTO; TEMPTOTAL = TOTAL; SELECT COUNT(IM.CODITEMMOVIMENTO) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:CODMOVIMENTO INTO :NRITENS; IF (NRITENS IS NULL) then NRITENS = 1; IF (TTIPODESCONTO='%') then BEGIN DESCONTO=TDESCONTO; END IF (TTIPODESCONTO='$') then BEGIN DESCONTO = TDESCONTO / NRITENS; END IF (TTIPODESCONTO IS NULL ) then BEGIN DESCONTO = 0; END TIPODESCONTO=TTIPODESCONTO; IF (TTIPODESCONTO='%') then BEGIN TOTALCDESC = TEMPTOTAL - ((TEMPTOTAL * DESCONTO)/100); END IF (TTIPODESCONTO='$') then BEGIN TOTALCDESC = TEMPTOTAL - DESCONTO; END IF (TTIPODESCONTO IS NULL ) then BEGIN TOTALCDESC = TEMPTOTAL; END IF (TDESCONTO IS NULL ) then BEGIN TOTALCDESC = TEMPTOTAL; END if ((not TOTALCDESC IS NULL) AND (not TOTALCUSTO IS NULL)) then BEGIN if ((TOTALCDESC >0) AND (TOTALCUSTO >0)) then LUCRO = ((TOTALCDESC - TOTALCUSTO)*100)/TOTALCUSTO; ELSE LUCRO =0; END ELSE LUCRO=0; suspend; END end^ SET TERM ; ^ ALTER TABLE PRODUTOS ADD SEMDESCONTO CHAR1; ALTER TABLE DADOSMOVIMENTO ADD BASEDESCONTO NUMERIC_10_5; ALTER TABLE ITENSMOVIMENTOPROD ADD VALORBASE NUMERIC_10_5; SET TERM ^ ; CREATE OR 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, VBCST numeric(10,2), VICMSST numeric(10,2), TOTALAVISTA float, FRETE float, TOTALICMS float, BASEICMS float, BASEIPI float, QTDTOTAL float, CARTAOCRED float, CARTAODEB 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 * COALESCE(IM.VALORBASE, 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; 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 SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; 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; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*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 ; ^ SET TERM ^ ; CREATE OR 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, VBCST numeric(10,2), VICMSST numeric(10,2), TOTALAVISTA float, FRETE float, TOTALICMS float, BASEICMS float, BASEIPI float, QTDTOTAL float, CARTAOCRED float, CARTAODEB 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; 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 SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; 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; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*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 ; ^ SET TERM ^ ; CREATE OR 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, VBCST numeric(10,2), VICMSST numeric(10,2), TOTALAVISTA float, FRETE float, TOTALICMS float, BASEICMS float, BASEIPI float, QTDTOTAL float, CARTAOCRED float, CARTAODEB 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); declare variable BASEDESCONTO float; 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; 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 SUM(BASECALCULOICMS), SUM(BASEIPI), SUM(TOTALIPI), SUM(TOTALICMS), SUM(VBCST), SUM(VICMSST) from SPITENSMOV(:MOVIMENTO) INTO :BASEICMS, :BASEIPI, :VALORIPI, :TOTALICMS, :VBCST, :VICMSST; 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; /*CARTAO */ CARTAOCRED =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO CRE' INTO :CARTAOCRED; if (:CARTAOCRED IS NULL) then CARTAOCRED=0; CARTAODEB =0; SELECT M.VALOR FROM CAIXAMOV M WHERE M.CODMOVIMENTO=:MOVIMENTO and m.FORMAPGTO='CARTAO DEB' INTO :CARTAODEB; if (:CARTAODEB IS NULL) then CARTAODEB=0; /*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; SELECT SUM(IM.VALORBASE) FROM ITENSMOVIMENTOPROD IM WHERE IM.CODMOVIMENTO=:MOVIMENTO INTO :BASEDESCONTO; IF (:BASEDESCONTO IS NULL) then BASEDESCONTO =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 = BASEDESCONTO - (BASEDESCONTO - ((BASEDESCONTO * DESCONTO)/100)); TOTALGERAL = TOTALGERAL - VALORDESCONTO; End If (:TIPODESCONTO = '$' )Then Begin VALORDESCONTO = BASEDESCONTO - ( BASEDESCONTO - DESCONTO); TOTALGERAL = TOTALGERAL - VALORDESCONTO; 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 ; ^ SET TERM ^ ; CREATE OR ALTER procedure SPCONTASPAGAR returns ( CODPARCELA integer, VALORPARCELA float, VENCIMENTO date, PAGO char(1), NRPARCELA integer, DOCUMENTO varchar(20), CODMOVIMENTO integer, CODEMPRESA integer, CODIGOCONTABIL varchar(20), DATA date, TIPO varchar(2), CODFORNECEDOR integer, FORNECEDOR varchar(70), PLANODECONTAS varchar(40), TOTALPAGO float, RESTANTE float, CODFILIAL integer, FILIAL varchar(40), NRDOCUMENTOMOV varchar(20), DESCRICAO varchar(50)) as declare variable TEMPCODPARCELA integer; declare variable TEMPPAGO float; declare variable TEMPRESTANTE float; declare variable TEMPVALORPARCELA float; begin FOR SELECT P.CODPARCELA, P.VALORPARCELA, P.VENCIMENTO, P.PAGO, P.NRPARCELA, P.DOCUMENTO, MV.CODMOVIMENTO, MV.CODIGOCONTABIL, MV.DATA, MV.TIPO, FM.CODFORNECEDOR, CAST(F.NOME AS VARCHAR(70)), MV.CODFILIAL, DM.NRDOCUMENTO, DR.DESCRICAO, MV.CODEMPRESA FROM PARCELASCONTAS P JOIN CONTASPAGARRECEBER CPR ON (CPR.CODCONTA = P.CODCONTA) JOIN PLANOSPAGAMENTO PP ON (PP.CODPLANOPGTO = CPR.CODPLANOPGTO) JOIN MOVIMENTOSPRODUTOS MV ON (MV.CODMOVIMENTO = CPR.CODMOVIMENTO) LEFT JOIN DESPESASRECEITAS DR ON (DR.CODMOVIMENTO = MV.CODMOVIMENTO) LEFT JOIN DOCUMENTOMOV DM ON (DM.CODMOVIMENTO = MV.CODMOVIMENTO) JOIN FORNMOVIMENTO FM ON (FM.CODMOVIMENTO = MV.CODMOVIMENTO) JOIN FORNECEDORES F ON (F.CODFORNECEDOR = FM.CODFORNECEDOR) WHERE MV.TIPO IN ('CO','DP') AND P.PAGO='N' INTO :TEMPCODPARCELA, :TEMPVALORPARCELA, :VENCIMENTO, :PAGO, :NRPARCELA, :DOCUMENTO, :CODMOVIMENTO, :CODIGOCONTABIL, :DATA, :TIPO, :CODFORNECEDOR, :FORNECEDOR, :CODFILIAL, :NRDOCUMENTOMOV, :DESCRICAO, :CODEMPRESA DO BEGIN SELECT F.NOME FROM FILIAIS F WHERE F.CODFILIAL=:CODFILIAL INTO :FILIAL; SELECT SUM(PG.VALOR) FROM PARCELASPGTO PG WHERE PG.CODPARCELA = :TEMPCODPARCELA INTO :TEMPPAGO; if (TEMPPAGO IS NULL) then TEMPPAGO =0; TEMPRESTANTE = TEMPVALORPARCELA - TEMPPAGO; CODPARCELA = TEMPCODPARCELA; TOTALPAGO = TEMPPAGO; RESTANTE = TEMPRESTANTE; VALORPARCELA = TEMPVALORPARCELA; SELECT FIRST 1 PC.DESCRICAO FROM PLANOSDECONTAS PC WHERE PC.CODIGOCONTABIL=:CODIGOCONTABIL INTO :PLANODECONTAS; suspend; END end^ SET TERM ; ^ ALTER TABLE PRODUTOS ADD DESCRICAODEFABRICA VC250;