Ayuda SAP

Antigüedad de Saldos Clientes +Importes en Entrega

Buenas tardes a todos!

La presente es para consultar si es posible visualizar en el Reporte de Antigüedad de Saldos, los importes que se hayan realizado como Entrega.

En donde estoy laborando existen ciertos clientes que, por ciertas condiciones especiales, primero se entrega el producto y después se factura, pero en algunos casos esto puede tardar de 1 a dos meses (por la lejanía del lugar de entrega), y nos gustaría poder visualizar este importe en la antigüedad de saldos, para saber correctamente cuanto importe o producto en total nos debe un cliente.

Sobre todo por que para determinar el limite de crédito creo que solo se considera el importe de las facturas, pero estos importes en entrega si estarían consumiendo el importe total de crédito a un cliente pero que no podemos visualizar.

De antemano agradezco su atención para ver si es posible visualizar o si es necesario realizar alguna configuración o si se puede obtener por medio de alguna consulta :slight_smile:

Saludos cordiales!!!

Hola Laura,

Por lo que entiendo quieres ver reflejado en el saldo de cliente producto que aun no se le factura, lo cual a mi punto de vista no es posible, esto debido a que no existe un documento contable (factura) que afecte el estado de cuenta del cliente. Por consecuencia tampoco sabrás vía sistema si ha excedido su limite de crédito.
Probablemente sepas cuando producto le has enviado por medio del control de inventarios: Como generas los envíos de mercancía, generas algún documento vía MM ó SD (transferencia o factura provisional??

No soy experto en el tema, recuerdo haber visto algo similar y si no mal recuerdo se genera un documento de control, pera efectos de dar salida al material pero sin efecto contable. Veré si puedo obtener información al respecto.

1 me gusta

Hola @DmonD

Gracias por tu atención. La verdad solo se genera la Entrega SAP, no se realiza ningún otro documento como respaldo :neutral_face:.

Prácticamente se entrega el material al cliente solo con Entrega SAP y se revisa periódicamente los folios que están en estatus “Pendientes”, para dar seguimiento a los mismos.

Tal vez no sea la mejor practica y se tenga que realizar el proceso de forma diferente :flushed:, o generar algun otro documento. El detalle es que algunos clientes, por ejemplo Navieras, solo permiten que se facture su producto hasta que se recibe en el Barco y se tenga la autorización (proceso que puede demorar algo). Solo que al no tener una visualización de estos importes, se puede seguir dando crédito, cuanto en realidad se tienen entregas sin facturar :pensive:.

Más que nada es por servicio al cliente y por que algunas empresas tienen procesos (a veces largos) para autorización de ordenes de compras; que es cuando se puede facturar.

Por eso mi consulta, jeje.

Hola compañera.

¿Porqué no trabajas en un Query para tal fin?

En este ejemplo, el compañero master @felipe.loyola nos comparte un query:
ht_ps://archive.sap.com/discussions/thread/2007153

No te serviría del todo ya que tu no podrías analizar las polizas (por el motivo que ya te comenta @DmonD) pero podrías encaminarlo hacia las entradas de mercancía.

Saludos.

1 me gusta

Gracias @Gera_Mendez!

Voy a revisar la consulta, para ver si la puedo enfocar hacia las entregas :grinning:, te agradezco el dato, haber que tal me va.

Si tengo alguno detalles con determinar una variable @ , ya que no se mucho de SQL, solo he realizado algunas consulta más sencillas; pero estoy tratando de aprender un poco de SQL para mejorar en mis consultas (aunque aún voy en los más basico, jeje)

Agradezco la atención! :wink:

1 me gusta

Hola @Laura.pripe88

La siguiente consulta de antigüedad de saldo es una modificación de una que elabore anteriormente y la he adaptado a lo que necesitas, espero te sea de utilidad:

SELECT	'Factura' AS [Tipo de Documento],
		CASE 
			WHEN V.FatherCard IS NOT NULL THEN V.FatherCard ELSE V.CardCode 
		END AS CardCode,
		V.CardName,
		V.DocNum,
		V.DocDate,
		V.DocDueDate,
		V.DocTotal,
		V.PaidToDate,
		(V.DocTotal-V.PaidToDate) AS Saldo,
		DATEDIFF(DAY, V.TaxDate, V.DocDueDate) AS DiasCredito,
		DATEDIFF(DAY, V.DocDueDate, GETDATE()) AS DiasVencidos,
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) <= 0 THEN (V.DocTotal - V.PaidToDate) ELSE 0 END AS Corriente,
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) BETWEEN 1 AND 30 THEN (V.[DocTotal] - V.[PaidToDate]) ELSE 0 END AS Menor_30, 
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) BETWEEN 31 AND 60 THEN (V.[DocTotal] - V.[PaidToDate]) ELSE 0 END AS Menor_60,
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) BETWEEN 61 AND 90 THEN (V.[DocTotal] - V.[PaidToDate]) ELSE 0 END AS Menor_90,
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) BETWEEN 91 AND 120 THEN (V.[DocTotal] - V.[PaidToDate]) ELSE 0 END AS Menor_120,
		CASE WHEN DATEDIFF(DAY, V.DocDueDate, GETDATE()) > 120 THEN (V.[DocTotal] - V.[PaidToDate]) ELSE 0 END AS Mayor_120

FROM	JDT1 J LEFT JOIN OINV V ON J.BaseRef = V.DocNum

WHERE	V.DocStatus = 'O'
		AND (CASE WHEN V.FatherCard IS NOT NULL THEN V.FatherCard ELSE V.CardCode END) = J.ShortName
		AND J.Line_ID=0

UNION

SELECT	'Entrega' AS [Tipo de Documento],
		CASE 
			WHEN E.FatherCard IS NOT NULL THEN E.FatherCard ELSE E.CardCode 
		END AS CardCode,
		E.CardName,
		E.DocNum,
		E.DocDate,
		E.DocDueDate,
		E.DocTotal,
		E.PaidToDate,
		(E.DocTotal-E.PaidToDate) AS Saldo,
		DATEDIFF(DAY, E.TaxDate, E.DocDueDate) AS DiasCredito,
		DATEDIFF(DAY, E.DocDueDate, GETDATE()) AS DiasVencidos,
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) <= 0 THEN (E.DocTotal - E.PaidToDate) ELSE 0 END AS Corriente,
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) BETWEEN 1 AND 30 THEN (E.[DocTotal] - E.[PaidToDate]) ELSE 0 END AS Menor_30, 
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) BETWEEN 31 AND 60 THEN (E.[DocTotal] - E.[PaidToDate]) ELSE 0 END AS Menor_60,
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) BETWEEN 61 AND 90 THEN (E.[DocTotal] - E.[PaidToDate]) ELSE 0 END AS Menor_90,
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) BETWEEN 91 AND 120 THEN (E.[DocTotal] - E.[PaidToDate]) ELSE 0 END AS Menor_120,
		CASE WHEN DATEDIFF(DAY, E.DocDueDate, GETDATE()) > 120 THEN (E.[DocTotal] - E.[PaidToDate]) ELSE 0 END AS Mayor_120

FROM	ODLN E

WHERE	E.DOCSTATUS = 'O'
3 Me gusta

Muchas gracias @juliosura!!!

Voy a trabajar en la consulta. Te agradezco enormemente el valioso apoyo :smiley:

Saludos cordiales!!!

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.