QUERY FACTURAS PAGADAS POR CLIENTE SAPB1

Code with Edd

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
Web | + posts

Full Stack Web Developer && SDK SAPB1 Developer.

Melómano, Gamer (Xbox), Comprador compulsivo de Amazon y Posiblemente con TDAH.

Scroll hacia arriba