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 Coalesce(D.Limite_Credito,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.Status   = '1'
   and pag.codigo = p.pagamento_forma
   and coalesce(pag.utiliza_limite_credito,0) = 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 coalesce(pag.utiliza_limite_credito,0) = 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 coalesce(pag.utiliza_limite_credito,0) = 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 ; ^