Muy buenos días estimado amigos de esta linda comunidad,
Necesito de su apoyo, resulta que tengo un requerimiento a nivel de Factura deudores, se necesita que el prefijo de la factura quede amarrado a la ciudad automaticamente. Me explico cuando uno realiza la factura llena los datos del cliente, luego se continua con el cargue del articulo en esta linea hay una columna que tengo que dice ciudad el cual ya están configuradas previamente,¿Como puedo hacer para unir estos dos campos esto con el fin de que sea automático y obligatorio?
Les dejo una imagen para que me puedan entender un poco mas lo que se desea
Hola @GiancarloB puedes crear una tabla de referencia y después en el campo CIUDAD crear una búsqueda formateada que se ejecute de manera automática al ingresar el número de articulo.
Tabla
Code
Name
Serie
CIUDAD
1
1
4
1
2
2
5
2
3
3
6
3
4
4
7
4
Debes tener en cuenta que para que exista una relación la serie que coloques en la tabla de referencia deberá ser el valor series de la tabla OINV o hacer una union a la tabla NNM1 para poder mandar llamar el campo seriesName
Y la búsqueda formateada sería mas o menos así
SELECT A.U_CIUDAD from TuTabla A where A.U_serie = $[$OINV.Series]
Desde mi punto de vistas esta es la opción mas sencilla, otra seria hacer un query mas complejo que tome la lógica de la tabla de referencia, (utilizar case when o crear un cursor) te ahorras la tabla pero pondrás código fijo (se les corta los dedos a quienes hagan eso).
De esta manera se solventa la necesidad de unir y que sea automático, para que sea obligatorio podrías poner una validación en el TN para impedir la creación del documento si carece de este valor, validación que no se ejecutará porque al ser automático se pretende que siempre tenga un valor, pero podrá ser un candado más por si alguien realiza una manipulación manual.
Otra cosa que puedes hacer es apoyarte con tu partner y plantear tu necesidad, pon atención en lo que hacen y en futuras ocasiones lo podrás realizar tu mismo.
Hola @Pcarrasco, una pregunta, si se realizara por SBO_SP_TransactionNotification el cual obliga al usuario a colocar la ciudad y asi no le permita crear la factura al crearla ¿tambien serviria?, trate de realizar como el código pero no funciona, me podrias dar una ayuda por favor, mira este es el codigo
IF ((@object_type = '4') AND (@transaction_type = 'A'))
BEGIN
IF
(SELECT OcrName from OOCR WHERE DocEntry = @list_of_cols_val_tab_del) IS NULL
BEGIN
SELECT @error = 1
SELECT @error_message = 'VERIFICAR CODIGO DE CIUDAD'
END
END
De entrada tu ObjetType es incorrecto, puedes verificar con un query cual es el correspondiente de acuerdo al documento en cuestión, para factura deudor es el 13
SELECT "ObjType" from OINV
Hecha un vistazo a esta dirección h_tps://blogs.sap.com/2017/04/27/list-of-object-types/
Ahora en tu consulta colocas la tabla OCCR debería ser la INV1, no ? verifica también que OcrName sea tu CIUDAD
Bueno te cuento realice el proceso por SBO_SP_TransactionNotification, y me quedo asi:
IF ((@object_type = ‘13’) AND (@transaction_type = ‘A’))
BEGIN
IF
(SELECT ObjType From OINV WHERE DocType = @list_of_cols_val_tab_del) IS NULL
BEGIN
SELECT @error = 1
SELECT @error_message = ‘VERIFICAR CODIGO DE CIUDAD’
END
END
Al generar la factura me obliga a colocarle la cuidad genial, pero se me presento un problema y es que a pesar de que se le asigno la ciudad, no me permite crearla, no se si estoy haciendo algo mal, me podrias sugerir algo por fa, mira la imagen.
Gracias
Hola @GiancarloB No tengo SQL para probar la consulta pero mas o menos podría funcionar así
declare @ciudad -- Declaras una variable
If object_type = '13' AND @transaction_type IN ('A','U')
Select @ciudad = T1.ObjType
from OINV T0
inner join INV1 T1 on T0.DocNum = T1.DocNum
where T0.DocNum = @list_of_cols_val_tab_del
if @ciudad is null
begin
select @error = -000
select @error_message = 'Error - El campo ciudad es obligatorio'
end
end