on 08-01-2011 10:47 PM
Buenas tardes,
Escribo para ver si me pueden ayudar con lo siguiente:
Tengo esta validación en el TN:
-- Notificación en Factura de Clientes
IF @object_type = '13' and @transaction_type IN ('A','U')
BEGIN
if (select count (ItemCode) from inv1
where docentry=@list_of_cols_val_tab_del AND left(ItemCode,4) like 'COMB') = 0
begin
if exists (SELECT T1.[ItemCode]
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OITW T2 ON T1.ITEMCODE=T2.ITEMCODE
WHERE (T1.[price] <= (((T2.[avgprice] * 10) / 100) + T2.[avgprice])) and (T0.docentry = @list_of_cols_val_tab_del))
BEGIN
SELECT @error = 1, @error_message = 'Factura con precio unitario por debajo del costo'
END
END
END
Esa validación genera un mensaje de error cuando intentan crear una factura con precios por debajos del costo, y eso lo hace perfectamente, pero que pasa?, hay productos que son tipo combos, son articulos padres que estan compuestos por otros articulos, en el sistema se configuro para que en estos casos solo aparezca en la factura la suma de los precios de los articulos en el articulo padre, y para los articulos que componen al combo deben salir sin precio ni nada, esta validación tiene una condición, y es que en los combos las lineas que esten en 0, igual las deje pasar y deje crear la factura, pero no esta validando la suma de los costos de los articulos, por ende se han creado combos donde el precio termina siendo por debajo del costo de la suma de los articulos.
Ej.
COMBO1
Compuesto por:
X1 costo = 50
X2 costo = 100
X3 costo = 50
Cuando se crea la factura, ha pasado que el precio que le dan al COMBO1 = 150, cuando la suma de los costos da 200, por lo cual el combo deberia costar 200 + 10%, la cuestion seria tratar de incluir en la validación que cuando sean factucar con articulos tipo combo, que sume los costos de los articulos, y compare con el precio que se le esta colocando al combo y verificar si cumple con la condición.
Si me pueden ayudar con esto por favor.
Muchas Gracias por su atención.
Saludos
Miguel,
Por lo que veo ese TN es para bloquear la creacion de facturas con items con precio de venta menor al precio de costo.
Pero en la primera validacion estas excluyendo a las facturas que tengan un COMBO como venta.
Lo mejor es hacer una validacion adicional para el precio de venta de los COMBOS, deberias tomar las tablas OITT e ITT1 para ello.
Slds
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Mmm, si...creo
Sucede que los COMBOS estan en la tabla OITT, y los articulos subordinados estan en la tabla ITT1.
Cual era mi idea
Validar:
Si los item se encontraban en la tabla ITT1 sumaran el costo de esos items y se los agregaran al articulo padre (dentro del query no en el documento) y luego hacer la validacion de costo VS beneficio.
Pero!!, sucede que esos mismos items pueden ser vendidos unitariamente, por lo tanto no creo que funcione ya que en ese caso no debe hacer el traspaso del costo al combo
No he probado debido a que no trabajo con Kits o Combos de venta.
Atte.
Edited by: Floyola on Aug 2, 2011 3:37 PM
Habia pensado algo como esto
IF @object_type = '13' and @transaction_type IN ('A','U')
BEGIN
IF (SELECT COUNT(ItemCode) FROM INV1 WHERE DocEntry=@list_of_cols_val_tab_del AND left(ItemCode,4) LIKE 'COMB') = 0
BEGIN
IF EXISTS (SELECT T1.[ItemCode]
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITW T2 ON T1.ItemCode=T2.ItemCode
WHERE (T1.[price] <= (((T2.[avgprice] * 10) / 100) + T2.[avgprice])) /*Este calculo es mas facil si multiplicas por 1.10*/ AND (T0.docentry = @list_of_cols_val_tab_del))
BEGIN
SELECT @error = 1, @error_message = 'Factura con precio unitario por debajo del costo'
END
ELSE
IF (SELECT COUNT(ItemCode) FROM INV1 WHERE DocEntry=@list_of_cols_val_tab_del AND left(ItemCode,4) LIKE 'COMB') > 0
BEGIN
IF EXISTS (SELECT T1.[ItemCode]
FROM OINV T0
INNER JOIN INV1 T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITW T2 ON T1.ItemCode=T2.ItemCode
INNER JOIN ITT1 T3 ON T3.Father=T1.ItemCode
WHERE T0.Docentry = @list_of_cols_val_tab_del AND (T1.[price] <= (SELECT SUM(Y1.avgprice)*1.10
FROM INV1 A1
INNER JOIN OITW Y1 ON Y1.ItemCode=A1.ItemCode
INNER JOIN ITT1 Y2 ON Y2.Code=A1.Itemcode
WHERE T1.ItemCode=Y2.Father AND A1.DocEntry=@list_of_cols_val_tab_del)))
BEGIN
SELECT @error = -1, @error_message = 'Combo con precio unitario bajo del costo'
END
END
END
Atte.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
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.