SET TERM ^ ;

CREATE OR ALTER procedure SPC_NFS_PARCELAMENTO_SALDO10 (
    EMPRESA_1 integer,
    PEDIDO_1 integer,
    PRE_PEDIDO integer = 0)
returns (
    LIMITE numeric(10,4),
    SALDO numeric(10,4))
as
BEGIN
FOR  SELECT FIRST 1
IIF(COALESCE(D.LIMITE_CREDITO,0.00) > 0,(COALESCE(D.LIMITE_CREDITO,0.00)+
COALESCE((SELECT SUM(X.SALDO)
    FROM TBCAIXABANCO_LANC_CLASS_SALDO X, TBCAIXABANCO_LANCAMENTO_CLASS XC
    WHERE X.EMPRESA_ID = D.CODIGO
    AND X.SALDO > 0
    AND X.LANC_CLASS_ID > 0
    AND X.LANC_CLASS_ID = XC.CONTROLE
    AND XC.CAIXABANCO_CONTROLE > 0
    AND XC.TIPO = 'C'),0.00)),0.00) LIMITE,

(COALESCE((SELECT CAST(SUM(B.VALOR * C.QUANTIDADE) AS NUMERIC(15,2))
 FROM TBPEDIDO P, TBPEDIDO_ITEM B, TBPEDIDO_ITEM_SALDO C, TBPAGAMENTO_FORMA PAG
 WHERE P.ESTABELECIMENTO_CODIGO = B.ESTABELECIMENTO_CODIGO
   AND P.PEDIDO   = B.PEDIDO
   AND B.PEDIDO   = C.PEDIDO
   AND B.CONTROLE = C.PEDIDO_ITEM_CONTROLE
   AND C.QUANTIDADE > 0
   AND B.SITUACAO = 1
   AND P.SITUACAO = 1
   AND P.STATUS   = '1'
   AND PAG.CODIGO = P.PAGAMENTO_FORMA
   AND PAG.UTILIZA_LIMITE_CREDITO = 1
   AND P.CLIENTE_CODIGO = :EMPRESA_1
   AND B.PEDIDO <> :PEDIDO_1),0.00) +

COALESCE((SELECT CAST(SUM(A.VALOR_SALDO) AS NUMERIC(15,2))
 FROM TBNFS_PARCELAMENTO A, TBPAGAMENTO_FORMA PAG
 WHERE A.VALOR_SALDO > 0
   AND A.ACEITE = 'S'
   AND PAG.CODIGO = A.PAGAMENTO_FORMA
   AND (A.NF_SITUACAO = 2 OR A.PDV_CFE_FORMA_PAGAMENTO_ID > 0)
   AND PAG.UTILIZA_LIMITE_CREDITO = 1
   AND (A.NUMERO_NOTAFISCAL > 0 AND A.SITUACAO < 3)
   AND A.EMPRESA_CODIGO = :EMPRESA_1),0.00) +

COALESCE((SELECT CAST(SUM(AI.VALOR_LIQUIDO) AS NUMERIC(15,2))
 FROM TBPDV_CONFERENCIA_ITEM AI, TBPDV_CONFERENCIA AC, TBPAGAMENTO_FORMA PAG
 WHERE AC.ID         = AI.PDV_CONFERENCIA_ID
   AND PAG.CODIGO = AC.PAGAMENTO_FORMA
   AND PAG.UTILIZA_LIMITE_CREDITO = 1
   AND AC.ID        <> :PRE_PEDIDO
   AND AI.SITUACAO   =  0
   AND AC.CLIENTE_ID = :EMPRESA_1),0.00)) SALDO

FROM TBCLIENTE D
WHERE D.CODIGO = :EMPRESA_1

INTO
:LIMITE,:SALDO
DO SUSPEND;
END
^

SET TERM ; ^

