FACTURAS PAGADAS. QUERY PARA MOSTRAR LAS FACTURAS DE UN CLIENTE EN ESPECIFICO QUE ESTÁN PAGADAS EN SAPB1.
declare @CardCode nvarchar(30)
declare @DocDate1 datetime
declare @DocDate2 datetime
set @CardCode='C05774'
set @DocDate1='2020-09-01'
set @DocDate2='2020-09-30'
declare @Pagos table
(
Numero nvarchar(1)
,NoPagoSAP int
,ImporteFactura numeric(19,6)
,MontoPagado numeric(19,6)
,Pendiente numeric(19,6)
,FechaPago datetime
,FormaPago nvarchar(30)
,Factura int
)
declare @Numero nvarchar(1)
declare @NoPagoSAP int
declare @ImporteFactura numeric(19,6)
declare @MontoPagado numeric(19,6)
declare @Pendiente numeric(19,6)
declare @FechaPago datetime
declare @FormaPago nvarchar(30)
declare @Factura int
declare @Saldo numeric(19,6)
DECLARE PagosCursor CURSOR FOR
SELECT
'-' as 'Numero'
,V.DocNum as 'NoPagoSAP'
,(SELECT DocTotal FROM OINV WHERE DocEntry=V2.DocEntry) AS 'ImporteFactura'
,V2.SumApplied AS 'MontoPagado'
,((SELECT DocTotal FROM OINV WHERE DocEntry=V2.DocEntry)-V2.SumApplied) as 'Pendiente'
,V.DocDate AS 'FechaPago'
,CASE
WHEN ISNULL([CHECKSUM],0) > 0 THEN 'Cheque'
WHEN ISNULL(TrsfrSum,0) > 0 THEN 'Transferencia'
WHEN ISNULL(CashSum,0) > 0 THEN 'Efectivo'
WHEN ISNULL(CreditSum,0) > 0 THEN 'Tarjeta Crédito'
END AS 'FormaPago'
,(SELECT DocNum FROM OINV WHERE DocEntry=V2.DocEntry) AS 'Factura'
FROM ORCT V
INNER JOIN RCT2 V2 ON V2.DocNum=V.DocEntry and V2.InvType=13
WHERE CardCode = @CardCode AND (DocDate>=@DocDate1 and DocDate<=@DocDate2)
ORDER BY V.DocNum ASC
OPEN PagosCursor
FETCH NEXT FROM PagosCursor INTO @Numero,@NoPagoSAP,@ImporteFactura,@MontoPagado,@Pendiente,@FechaPago,@FormaPago,@Factura
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @Pagos (Numero,NoPagoSAP,ImporteFactura,MontoPagado,Pendiente,FechaPago,FormaPago,Factura)
VALUES(@Numero,@NoPagoSAP,@ImporteFactura,@MontoPagado,@Pendiente,@FechaPago,@FormaPago,@Factura)
DECLARE FacturasCursor CURSOR FOR
select Factura,MontoPagado from @Pagos where Factura=@Factura
OPEN FacturasCursor
FETCH NEXT FROM FacturasCursor INTO @Factura, @MontoPagado
WHILE @@FETCH_STATUS = 0
BEGIN
set @Saldo = (@Saldo + @MontoPagado)
FETCH NEXT FROM FacturasCursor INTO @Factura, @MontoPagado
END
CLOSE FacturasCursor;
DEALLOCATE FacturasCursor;
update @Pagos set Pendiente = (ImporteFactura-@Saldo) where NoPagoSAP=@NoPagoSAP and Factura=@Factura
set @Saldo=0
FETCH NEXT FROM PagosCursor INTO @Numero,@NoPagoSAP,@ImporteFactura,@MontoPagado,@Pendiente,@FechaPago,@FormaPago,@Factura
END
CLOSE PagosCursor;
DEALLOCATE PagosCursor;
select
Numero
,NoPagoSAP
,ImporteFactura
,MontoPagado
,Pendiente
,FechaPago
,FormaPago
,Factura
from @Pagos
Referencias: https://answers.sap.com/index.html
QUERY FACTURAS PAGADAS POR CLIENTE SAPB1
Full Stack Web Developer && SDK SAPB1 Developer.
Melómano, Gamer (Xbox), Comprador compulsivo de Amazon y Posiblemente con TDAH.