cancel
Showing results for 
Search instead for 
Did you mean: 

Alerta en Factura de Clientes, facturas Vencidas ¡¡¡

Former Member
0 Kudos

Estimados,

Alguien sabe como puedo establecer al momento de crear un documento de venta ej. Factura de Cliente, que al digitar el codigo del cliente se genere una alerta o mensaje sòlo si presenta facturas vencidas con màs de 90 dias ?? esto con el fin que el usario pueda verificar la cartera y tomar la desicion o solicitar autorizacion para generar la factura.

saludos,

JAMS

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hola Jairo,

Yo en un cliente hice esta consulta sobre un proceso de autorización. Está montada para chequear si hay deuda vencida, independientemente de numero de días que lleva vencida. Supongo que se puede modificar para adaptarla a tu cliente.

También se pude enganchar a una alerta, pero realmente el aviso salta cuando el documento está ya grabado.

Cojo facturas, abonos y apuntes manuales.

espero que te ayude.

Marta.

-

-


SELECT DISTINCT 'TRUE' AS Expr1

FROM (SELECT T2.DueDate AS , T0.CardCode AS 'Cliente', T0.CardName AS 'Nombre Cliente', 'Facturas' AS 'Documento', T0.DocNum AS 'Nº',

T0.DocDate AS 'F.Contab.', T0.DocTotal AS 'Total Doc.', T2.InsTotal - T2.PaidToDate - T2.TotalBlck AS 'Pendiente',

T1.PymntGroup AS 'Condición', T11.Descript AS 'Vía', T12.SlpName AS 'Comercial', T0.Comments AS 'Comentarios'

FROM OINV AS T0 INNER JOIN

INV6 AS T2 ON T2.DocEntry = T0.DocEntry LEFT OUTER JOIN

OCTG AS T1 ON T0.GroupNum = T1.GroupNum LEFT OUTER JOIN

OPYM AS T11 ON T0.PeyMethod = T11.PayMethCod LEFT OUTER JOIN

OSLP AS T12 ON T0.SlpCode = T12.SlpCode

WHERE (T2.TotalBlck <> T2.InsTotal) AND (T2.InsTotal - T2.PaidToDate - T2.TotalBlck <> 0) AND (T2.Status = 'O') AND (T2.DueDate <

(SELECT CONVERT(datetime, CONVERT(varCHAR, GETDATE(), 103)) AS Expr1)) AND (T0.CardCode = $[$4.0.0])

UNION

SELECT T2.DueDate AS , T0.CardCode AS 'Cliente', T0.CardName AS 'Nombre Cliente', 'Abonos' AS 'Documento', T0.DocNum AS 'Nº',

T0.DocDate AS 'F.Contab.', T0.DocTotal * - 1 AS 'Total Doc.', (T2.InsTotal - T2.PaidToDate) * - 1 AS 'Pendiente', T1.PymntGroup AS GroupNum,

T11.Descript, T12.SlpName AS 'Comercial', T0.Comments AS 'Comentarios'

FROM ORIN AS T0 INNER JOIN

RIN6 AS T2 ON T2.DocEntry = T0.DocEntry LEFT OUTER JOIN

OCTG AS T1 ON T0.GroupNum = T1.GroupNum LEFT OUTER JOIN

OPYM AS T11 ON T0.PeyMethod = T11.PayMethCod LEFT OUTER JOIN

OSLP AS T12 ON T0.SlpCode = T12.SlpCode

WHERE (T2.TotalBlck <> T2.InsTotal) AND (T2.Status = 'O') AND (NOT EXISTS

(SELECT DocEntry

FROM RIN1 AS U0

WHERE (T0.DocEntry = DocEntry) AND (BaseType = 13 OR

BaseType = 203))) AND (NOT EXISTS

(SELECT DocEntry

FROM RIN3 AS U0

WHERE (T0.DocEntry = DocEntry) AND (BaseType = 13 OR

BaseType = 203))) AND (T2.DueDate <

(SELECT CONVERT(datetime, CONVERT(varCHAR, GETDATE(), 103)) AS Expr1)) AND (T0.CardCode = $[$4.0.0])

UNION

SELECT T0.DueDate AS , T0.CardCode AS 'Cliente', T0.CardName AS 'Nombre Cliente', 'Efecto' AS 'Documento', T0.BoeNum AS 'Nº',

T0.PmntDate AS 'F.Contab.', T0.BoeSum AS 'Total Doc.', T0.BoeSum AS 'Pendiente', T0.PymMethNam,

CASE WHEN T0.BoeStatus = 'F' THEN 'S/exito' WHEN T0.BoeStatus = 'S' THEN 'Enviado' WHEN T0.BoeStatus = 'G' THEN 'Creado' WHEN T0.BoeStatus

= 'D' THEN 'Presentado' WHEN T0.BoeStatus = 'P' THEN 'Cobrado' ELSE 'En Proceso' END AS 'A', T12.SlpName,

CAST(T0.BPBankCod AS varchar(4)) + ' ' + CAST(T0.BPBankBrnc AS varchar(4)) + ' ' + CAST(T0.ControlKey AS varchar(2))

+ ' ' + CAST(T0.BPBankAct AS varchar(10)) AS 'Comentarios'

FROM OBOE AS T0 LEFT OUTER JOIN

ORCT AS T2 ON T0.BoeKey = T2.BoeAbs LEFT OUTER JOIN

OCRD AS T6 ON T0.CardCode = T6.CardCode LEFT OUTER JOIN

OSLP AS T12 ON T6.SlpCode = T12.SlpCode

WHERE (T0.BoeType = 'I') AND (T0.BoeStatus = 'S' OR

T0.BoeStatus = 'G' OR

T0.BoeStatus = 'D') AND (T0.DueDate <

(SELECT CONVERT(datetime, CONVERT(varCHAR, GETDATE(), 103)) AS Expr1)) AND (T0.CardCode = $[$4.0.0])

UNION

SELECT T0.DueDate AS , T0.ShortName AS 'Cliente', T1.CardName AS 'Nombre Cliente', 'Diario' AS 'Documento', T0.TransId AS 'Nº',

T0.RefDate AS 'F.Contab.', T0.Debit - T0.Credit AS 'Total Doc.', T0.Debit - T0.Credit AS 'Pendiente', '' AS Expr1, '' AS Expr2, '' AS Expr3,

T0.LineMemo AS 'Comentarios'

FROM JDT1 AS T0 LEFT OUTER JOIN

OCRD AS T1 ON T0.ShortName = T1.CardCode

WHERE (T0.IntrnMatch = 0) AND (T0.TransType = 30 OR

T0.TransType = - 2 OR

T0.TransType = 24 OR

T0.TransType = 46) AND (T0.ShortName LIKE 'C%') AND (T0.Closed = 'N') AND (T0.Debit <> 0) AND (T0.Account = '436000' OR

T0.Account = '436000') AND (T0.ShortName = $[$4.0.0]) OR

(T0.IntrnMatch = 0) AND (T0.TransType = 30 OR

T0.TransType = - 2 OR

T0.TransType = 24 OR

T0.TransType = 46) AND (T0.ShortName LIKE 'C%') AND (T0.Closed = 'N') AND (T0.Account = '436000' OR

T0.Account = '436000') AND (T0.ShortName = $[$4.0.0]) AND (T0.Credit <> 0)) AS derivedtbl_1

Former Member
0 Kudos

hola roberto

encontre en el foro tu consulta , quize implementarla pero me da error

vias de pagos de asistente !!!!!!!!

no puedo sql, agradecere tu ayuda

gracias de antemano

Former Member
0 Kudos

Hola...

Voy a plantear una alternativa distinta...

Puedes tener un campo de usuario que indique por ejemplo "Tiene Facturas vencidas", y que se actualice cada vez que cambie el saldo del Socio de Negocios, es decir, si el saldo cambia, se leen las facturas del cliente y si hay alguna que esté vencida, muestre el mensaje y si no es el caso, no lo muestre.

Luego, puedes abrir el Maestro de Socio de Negocios, y arrastrar este campo de usuario a la barra de status del lado derecho de la pantalla (esto está a la derecha del campo que te muestra la fecha y hora del servidor.

De esta manera, el campo de usuario se visualizará cada vez que abras una factura y selecciones al cliente, mostrando el mensaje en caso que tenga facturas vencidas, y no mostrando nada en caso contrario.

Espero te sea de ayuda

Saludos Cordiales,

Former Member
0 Kudos

Hola Paul,

Puedes por favor detallar un poco màs tu recomendacion ?

Ya he creado el campo de usuario en dato maestro del SN, le asigne autualizacion automatica si hay modificaciones, campo: SALDO DE CUENTA y actualizar regularmente.

Entiendo que el campo se debe vincular una busqueda formateada para que se actulice, la consulta como debe estar diseñanda ? que debe buscar ? en el campo que debe mostrar ?

Arrastrè el campo a la barra de status en que momento debe mostrar el mensaje ??

Gracias por tus comentarios,

JAMS

Former Member
0 Kudos

Hola...

Bueno, no había probado la idea, pero finalmente lo hice. De todos modos tendrías que cambiar la consulta pues la he creado considerando si hay facturas vencidas tomando como fecha de vencimiento la fecha actual.

He creado un campo de usuario en el Maestro de SN, luego he creado el siguiente query:

DECLARE @HOY DATETIME 
DECLARE @CONTADOR INT
SET @HOY = (SELECT GETDATE())
SET @CONTADOR = (SELECT COUNT(T1.DocNum) FROM OCRD T0  INNER JOIN OINV T1 ON T0.CardCode = T1.CardCode WHERE 
T1.[CardCode] = $[$5.0.0] AND  
T1.[DocStatus] = 'O' AND  T1.[DocDueDate] > @HOY)
IF @CONTADOR > '0'
SELECT 'EXISTEN FACTURAS VENCIDAS'

Este query lo asocio al campo de usuario con una búsqueda formateada, que se actualiza al cambiar el saldo del SN. Luego de esto arrastro el campo de usuario a la barra de status (esto es similar a arrastrar y vincular)

He chequeado que en el maestro el campo de usuario trae la glosa, y por ende, luego, chequeo al abrir la factura de ventas e ingresar al cliente, que la misma glosa aparece en la barra de status.

Pruebalo con estas observaciones, y si consideras que esta alternativa podría servirte, solo tendrás que modificar un poco la logica del query.

Espero te sea de ayuda

Saludos Cordiales,

former_member210784
Active Contributor
0 Kudos

Hola.

No creo que sea posible sin tener que recurrir al SDK.

Soluciones alternas que se me ocurren:

1. Usar una Búsqueda formateada que coloque un texto como "El Cliente tiene facturas vencidas con más de 90 días" en el campo observaciones y en referencia. Esto sería útil combinado con el procedimiento de autorización, puesto que si el usuario que crea el documento no se da cuenta del texto de advertencia, el usuario que autoriza lo puede ver.

2. Crear un campo de usuario con valor obligatorio y una BF como la del anterior punto, pero que devuelva un valor NULL en el campo de usuario si el cliente tiene facturas vencidas de +90 días. Esto haría que se despliegue un mensaje de valor invalido para el campo de usuario y no dejaría crear el documento.

3. Usar el procedimiento de autorización usando una consulta de usuario que realice la validación del saldo pendiente.

4. Usar el objeto TransactionNotification para impedir la creación del documento si el Cliente tiene saldo vencido de más de 90d.

En este otro caso hay ejemplos que pueden ser útiles: .

Espero sea de ayuda.

Saludos.

Edited by: Hector Daniel Hernandez on Apr 29, 2010 12:09 PM