Hola buen día @Cassales muchas gracias por su respuesta y comprendo el tema de los enlaces, no te preocupes intentaré explicarte más a detalle por acá.
Nosotros manejamos Factura en reserva de clientes, esto para nuestras exportaciones,
pero la fecha de vencimiento de la factura no se utiliza como tal, sino nuestro documento base es que la entrega que se le da al cliente puede que la factura se la emitieron en una fecha x, pero la entrega la realizamos hasta el día de hoy, entonces nuestra fecha de vencimiento de la factura es el día hoy, porque se emitio la entrega.
es un poco tedioso a como lo manejan pero la cuenta por cobrar, actualmente no se visualizan todos nuestras factura te envio el SP, que se tiene pero no muestra todas las facturas posiblemente hay un calculo mal realizado.
puedes apoyarme por favor.
[dbo].[_SBOSP_RPT_CXC] (@Fecha datetime)
AS
BEGIN
SELECT DISTINCT
T0.TransId,
T0.Linea,
CASE WHEN T0.TransType IN (13,14) THEN COALESCE(T3.U_DoctoNo, T7.U_DoctoNo, T0.Referencia) ELSE T0.Referencia END 'Referencia',
T0.Fecha,
dateadd(d,t2.ExtraDays,ol.DocDate) as FechaVence,
T3.U_FechaDespacho,
T3.DocNum,
OL.DocNum,
N1.ShipDate as 'Fecha de Entrega',
OL.DocDate as 'Fecha Documento',
T0.Codigo,
T0.Nombre,
T3.SlpCode,
T0.TipoDoc,
T0.Monto,
T0.Pagado,
T0.Saldo,
T0.TransType,
DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) 'Dias Atraso',
CASE WHEN DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) < 0 THEN T0.Saldo ELSE 0 END 'Corriente',
CASE WHEN DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) BETWEEN 0 AND 30 THEN T0.Saldo ELSE 0 END '1 A 30 DIAS',
CASE WHEN DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) BETWEEN 31 AND 60 THEN T0.Saldo ELSE 0 END '31 A 60 DIAS',
CASE WHEN DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) BETWEEN 61 AND 90 THEN T0.Saldo ELSE 0 END '61 A 90 DIAS',
CASE WHEN DATEDIFF(DAY, dateadd(d,t2.ExtraDays,ol.DocDate), @Fecha) > 90 THEN T0.Saldo ELSE 0 END '91 + DIAS',
T2.PymntGroup 'Condicion Credito', T1.CreditLine 'Limite Credito',
CASE
WHEN T0.TransType = 24 AND COALESCE(T4.StornoToTr, 0) = 0 THEN T5.comments /*[dbo].[_SBOF_ObtenerFacturasPagadasClientes] (T5.DocEntry)*/
WHEN T0.TransType = 24 AND COALESCE(T4.StornoToTr, 0) <> 0 THEN 'Pago anulado ' + T4.Ref2
WHEN T0.TransType = 13 AND T3.CANCELED <> 'C' THEN T3.Comments
WHEN T0.TransType = 13 AND T3.CANCELED = 'C' THEN 'Anulación de factura ' + T4.Ref2
WHEN T0.TransType = 14 AND T7.CANCELED <> 'C' THEN 'NC ' + CONVERT(nvarchar(50), T7.NumAtCard)
WHEN T0.TransType = 14 AND T7.CANCELED = 'C' THEN 'Anulación NC ' + CONVERT(nvarchar(50), T7.NumAtCard)
ELSE T4.Ref2
END AS 'Comments',
--T0.DocNum,
T3.DocNum,
OL.DocNum,
T8.[SlpName]
-- T3.Comments
FROM
[dbo].[_SBOF_CXC_TABLA_DETALLE_Export] (@Fecha) T0
INNER JOIN OCRD T1 ON T1.CardCode = T0.Codigo
INNER JOIN OCTG T2 ON T2.GroupNum = T1.GroupNum
LEFT JOIN OINV T3 ON T3.TransId = T0.TransId
LEFT JOIN INV1 NV ON T3.DocEntry = NV.DocEntry
INNER JOIN DLN1 N1 ON NV.DocEntry = N1.BaseEntry
LEFT JOIN ODLN OL ON OL.DocEntry = N1.DocEntry
LEFT JOIN OJDT T4 ON T4.TransId = T0.TransId
LEFT JOIN ORCT T5 ON T5.TransId = T0.TransId
LEFT JOIN JDT1 T9 ON T9.TransId = T0.TransId
LEFT JOIN ORIN T7 ON T7.TransId = T0.TransId
INNER JOIN OSLP T8 ON T3.[SlpCode] = T8.[SlpCode]
where T3.SlpCode = '14' and NV.LineNum = 0 and N1.LineNum = 0 and T9.Line_ID = 0 AND OL.CANCELED = 'N'
ORDER BY
T0.Codigo,T0.Nombre ASC, [Dias Atraso] DESC
END
esta el la segunda consulta
ALTER FUNCTION [dbo].[_SBOF_CXC_TABLA_DETALLE_Export] (@FFin as datetime)
RETURNS @CXC TABLE
(
TransId bigint,
Linea int,
Referencia nvarchar(150),
Fecha datetime,
FechaVence datetime,
Codigo nvarchar(135),
Nombre nvarchar(max),
TipoDoc nvarchar(110),
Monto float,
Pagado float,
Saldo float,
TransType int
)
AS
BEGIN
INSERT INTO @cxc
SELECT *
FROM
(
SELECT
T0.TransId,
T1.Line_ID,
CASE WHEN T0.TransType = '13' THEN T0.Ref2 ELSE T0.BaseRef END Referencia,
T0.RefDate,
T0.DueDate,
T2.CardCode,
T2.CardName,
T3.Abreviatura,
ROUND(T1.FCDebit - T1.FCCredit,2) MontoOriginal,
ROUND([dbo].[_SBOF_Obtener_Pagado_Fecha_export] (T0.TransId,@FFin,T1.Line_ID),2) Recuperado,
CASE WHEN ROUND((T1.FCDebit-T1.FCCredit),2) < 0 THEN ROUND((T1.FCDebit-T1.FCCredit),2) + ROUND(ABS([dbo].[_SBOF_Obtener_Pagado_Fecha_export] (T0.TransId,@FFin,T1.Line_ID)),2)
ELSE ROUND((T1.FCDebit-T1.FCCredit),2) - ROUND(ABS([dbo].[_SBOF_Obtener_Pagado_Fecha_export] (T0.TransId,@FFin,T1.Line_ID)),2) END Saldo,
T0.TransType
--T1.[FCDebit], T1.[FCCredit]
FROM
OJDT T0
INNER JOIN JDT1 T1 ON T0.TransId = T1.TransId
INNER JOIN OCRD T2 ON T1.ShortName = T2.CardCode
INNER JOIN [dbo].[_SBOF_Tipos_Documento] () T3 ON T3.ObjType = T0.TransType
WHERE
T0.DueDate <= @FFin AND T0.TransType NOT IN ('-3') AND T2.CardType = 'C' ) T0
WHERE T0.Saldo < -0.01 OR T0.Saldo > 0.01
ORDER BY T0.DueDate
RETURN
END
esta el la tercera que depende de la segunda
ALTER FUNCTION [dbo].[_SBOF_Obtener_Pagado_Fecha_export]
(
@TransId int,
@FFin datetime,
@Line int
)
RETURNS money
AS
BEGIN
DECLARE @TotalPagado money
SELECT
@TotalPagado = SUM(T1.ReconSumSC)
FROM
OITR T0
INNER JOIN ITR1 T1
ON T0.ReconNum = T1.ReconNum
WHERE
T1.TransId = @TransId
--AND T1.Account LIKE '11201%'
AND T0.ReconDate <= @FFin
--AND ISNULL((SELECT S1.MthDate FROM JDT1 S1 WHERE S1.TransId = @TransId AND S1.Line_ID = @Line),'20000101') <> '20000101'
AND T0.ReconType NOT IN (11,9)
AND T1.TransRowId = @Line
RETURN ISNULL(@TotalPagado,0)
END