on 05-04-2011 5:08 PM
Buenos días,
Tengo el siguiente asunto, hay un campo en la factura llamado centro de beneficio, lo que está pasando es que se han creado facturas sin registrar el centro de beneficio, entonces lo que se quiere es colocar este campo como obligatorio, que si la persona intenta crear la factura sin haber registrado el centro de beneficio entonces que le arroje una alerta y no le permita crear la factura.
Saludos y gracias por su atención.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola Floyola,
Bueno tomando parte del código del post que me pasaste.
-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA
IF (@object_type = 22) and (@transaction_type IN ('A','U'))
BEGIN
- CENTRO DE BENEFICIO
DECLARE @CTA as NVarchar (10)
SELECT @CTA = COUNT(T2.FormatCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del
DECLARE @CB as Nvarchar (10)
SELECT @CB = COUNT(T1.OcrCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del
IF (@CTA != @CB)
BEGIN
SET @error = 102
SET @error_message = 'MS-102 Revisar centros de Beneficio'
END
END
Lo que hice fue modificar algo en código, ya que yo lo necesito para la tabla de factura de ventas, ademas le quite la condición de el numero de cuenta que para este caso no aplica, pero me da error al ejecutarlo, de igual manera me dan errores los del código original.
Msg 137, Level 15, State 2, Line 3
Must declare the scalar variable "@object_type".
Msg 137, Level 15, State 2, Line 12
Must declare the scalar variable "@list_of_cols_val_tab_del".
Msg 137, Level 15, State 2, Line 18
Must declare the scalar variable "@list_of_cols_val_tab_del".
Msg 137, Level 15, State 1, Line 22
Must declare the scalar variable "@error".
Msg 137, Level 15, State 1, Line 23
Must declare the scalar variable "@error_message".
Saludos
Ok floyola, coloque el siguiente código donde me indicas.
-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA
IF (@object_type = 22) and (@transaction_type IN ('A','U'))
BEGIN
-- CENTRO DE BENEFICIO
DECLARE @CB as Nvarchar (10)
SELECT @CB = COUNT(T1.OcrCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del
IF (@CB IS NULL)
BEGIN
SET @error = 102
SET @error_message = 'MS-102 Revisar centros de Beneficio'
END
END
Y se ejecuta satisfactoriamente, pero cuando pruebo en el sistema no pasa nada, que puede estar mal?.
Saludos.
Bueno, te explico. La idea es contar las lineas que no tienen Centro de beneficio, y si estas son mayores a 0, te arroje error
-- VALIDACION CENTRO BENEFICIO EN ORDEN DE COMPRA
IF (@object_type = 22) and (@transaction_type IN ('A','U'))
BEGIN
-- CENTRO DE BENEFICIO
DECLARE @CB as INT
SELECT @CB = COUNT(T1.OcrCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.OcrCode IS NULL
IF @CB > 0
BEGIN
SET @error = 102
SET @error_message = 'MS-102 Revisar centros de Beneficio'
END
END
Pruebalo asi, si no funciona, cambia el IS NULL T1.OcrCode = ''
Slds
Edited by: Floyola on May 4, 2011 3:34 PM
Edited by: Floyola on May 4, 2011 3:45 PM
Con ese deberia quedar, no me habia fijado que tenias mal el @object_type, 22 es para ordenes de compra
IF (@object_type = 13) and (@transaction_type IN ('A','U'))
BEGIN
DECLARE
@LineNum INT,
@CB INT
SELECT
@Linenum = (SELECT COUNT(T1.LineNum)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del),
@CB = (SELECT COUNT(T1.OcrCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del)
IF @LineNum != @CB
BEGIN
SET @error = 102
SET @error_message = 'MS-102 Revisar centros de Beneficio'
END
END
Atte.
Felipe Loyola
Edited by: Floyola on May 4, 2011 4:18 PM
Le coloque un SET y ya funciono.
IF (@object_type = 13) and (@transaction_type IN ('A','U'))
BEGIN
DECLARE
@LineNum INT,
@CB INT
SET
@Linenum = (SELECT COUNT(T1.LineNum)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del)
SET
@CB = (SELECT COUNT(T1.OcrCode)
FROM OINV T0
INNER JOIN INV1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del)
IF @LineNum != @CB
BEGIN
SET @error = 102
SET @error_message = 'MS-102 Revisar centros de Beneficio'
END
END
Listo mil gracias Floyola.
User | Count |
---|---|
100 | |
12 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.