cancel
Showing results for 
Search instead for 
Did you mean: 

Validación Precio por debajo del costo

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Disculpa floyolaaa, como iria esa validaciónn :S

felipe_loyolarodriguez
Active Contributor
0 Kudos

Estos articulos subordinados, solo los usas para los COMBOS o tambien se pueden vender por separado?

Former Member
0 Kudos

Son armados en COMBOS, pero tambien pueden ser vendidos por separado.

Former Member
0 Kudos

Es muy complicado Floyola O.o?

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Y como quedaria estructurada la validación pensando que los Items no se vendan por separado??

felipe_loyolarodriguez
Active Contributor
0 Kudos

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.

Answers (0)