cancel
Showing results for 
Search instead for 
Did you mean: 

Validacion en lineas seleccionadas en un pago

Former Member
0 Kudos

Estimados:

Mi consulta apunta a si alguien ha hecho algo similar a lo que necesito hacer:

En el formulario de pagos, pueden aparecer Facturas, Anticipos y Registros contables. Ahora bien, por propiedad de datos el usuario podrá visualizar todos aquellos documentos (de Ventas y Compras) relacionados a su sucursal, departamento o algun otro criterio de los existentes en la propiedad de datos.

El tema es que para los registros en el diario, la propiedad de documentos no es aplicable

Pretendo trabajar con las series en los registros en el diario, de modo de crear por cada sucursal una serie. Estas series las fijaré por defecto a cada usuario.

He creado un campo de usuario a nivel de detalle en los pagos (tanto efectuados como recibidos), para que luego este campo me refleje la serie de cada registro en el diario que pueda aparecer asociado a un Socio de negocios.

El tema finalmente es el siguiente:

¿Alguien ha realizado alguna validación por transaction SQL, que permita validar en función de las líneas que son seleccionadas previa realización del pago?

Por ejemplo, tendré que para un Proveedor X, existen 2 registros en el diario generado en la sucursal 1 y 2 más generados en la sucursal 2. Luego, el usuario de la sucursal 1, al visualizar el formulario de pagos efectuados visualizará las 4 líneas, sin embargo, discriminará a través del campo de usuario cuales corresponden a la sucursal 1 y cuales a la Sucursal 2.

La validación busca que solo se permita registrar este pago, si los registros seleccionados corresponden a la serie asociada en los registros en el diario por defecto al usuario que realiza la operación.

En el ejemplo, si el usuario selecciona una linea de la sucursal 1 y otra de la sucursal 2, debería validarme que existe un registro en el diario seleccionado que no corresponde a la sucursal del usuario.

Espero sea claro en la exposición del problema, y a ver si alguien ha hecho algo similar que me permita solucionar este tema.

De antemano gracias,

Saludos Cordiales,

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor
0 Kudos

Hola buen dia

Se me ocurre lo siguiente, porque no creas una tabla de usuario que contenga las series validas a cada usuario. El chiste aqui es que el usuario que tenga esa tabla sea tal cual el de la OUSR.

Entonces dependiendo del usuario que este activo (en la ventana de pagos), agregar un campo de usuario a nivel cabecera el cual te sirva para validar la serie, incluso podrias llamarlo asi U_ValidaSerie, por ejemplo, el cual no pueda ser nulo y que solo se llenara con la serie correspondiente a ese usuario, si la serie q esta activa, no la puede manipular ese usuario pues el campo quedaria vacio y no dejaria crear el pago.

Algo asi se me ocurre.

Como ves?

Answers (2)

Answers (2)

Former Member
0 Kudos

Hola...aquí dejo el código por si a alguien le pueda ser de utilidad, este está orientado a los pagos efectuados -Objeto 46-

IF @transaction_type IN ('A') AND @object_type = '46' 
	DECLARE @OBRA AS NVARCHAR(20)
	DECLARE @CONT AS INT
	DECLARE @SERIE AS NVARCHAR(20)
	BEGIN
		SET @CONT = (SELECT COUNT(*) FROM (
                     SELECT U_CSA_SERIE 
					 FROM	VPM2 T0 
							INNER JOIN OVPM T1 ON T0.DocNum = T1.DocEntry
					 WHERE	T1.TransID = @list_of_cols_val_tab_del
					 GROUP BY T0.U_CSA_SERIE) AS TEMP)
		IF @CONT > 1
			BEGIN
				SET @error = 1
				SET @error_message = 'Uno de los documentos no pertenece a su Obra ' + CAST(@CONT AS CHAR(2))
			END
		IF @CONT = 1
			BEGIN
			DECLARE @VAR NVARCHAR(20)
				SET @VAR = (SELECT	MAX(U_CSA_SERIE)
				FROM	VPM2 T0 
						INNER JOIN OVPM T1 ON T0.DocNum = T1.DocEntry
				WHERE	T1.TransID = @list_of_cols_val_tab_del)
				SET @SERIE = (SELECT T1.[SeriesName] FROM OVPM T0 INNER JOIN NNM1 T1 ON T0.Series = T1.Series 
				WHERE T0.TransID = @list_of_cols_val_tab_del)
						IF (@VAR <> @SERIE)
						BEGIN
						SET @error = 1
						SET @error_message = 'Está seleccionando documentos que no son de su Obra' + CAST(@CONT AS CHAR(2))
						END
			END
	END

Saludos Cordiales,

Former Member
0 Kudos

Hola..

Gracias por responder. La verdad es que no fue necesario la creación de un campo de usuario ni tablas adicionales, finalmente por Transaction se pudo solucionar el tema. A la brevedad dejaré el código por si a alguien se le presenta una situación similar

Saludos,