Crear un histórico de costos para los productos

En este ejemplo, mostraré cómo crear un histórico de los costos de los productos comprados y de esta manera para cada producto será posible analizar el progreso.

Grupo Script

Ficha

Evento

Post Guardado

Este script se puede insertar en el evento post guardado del producto. Es necesario recordar cambiar o crear los campos que difieren de su base de datos y crear la tabla Cost_items.

cost_table = database.getsql("SELECT * FROM cost_items WHERE gguidp='" .. dataview.getvalue("gguid") .. "' ORDER by date DESC")

Primero creamos un objeto cost_table recuperando todas las líneas de cost_items y verificamos que el valor del campo gguidp coincida con el valor del gguid del producto actual.

También es posible buscar todas las líneas con los mismos códigos de producto que el actual, depende de cómo se construyeron las tablas. Sin embargo, si decide cambiar el código, el enlace a los costos se perderá automáticamente. Por el contrario, el uso de gguid garantiza que, al cambiar todos los datos del producto, no se pierda el histórico de costos.

Es de notar que la cadena sql ordena las líneas de costo de forma descendente, de esta manera podemos estar seguros de que la primera línea corresponde al último costo guardado.

vote = false

nr = cost_table.countrows()

rows = cost_table.getrows()

Vamos a crear una variable vote que usaremos para verificar si necesitamos guardar el costo del producto o no. También extraemos el número de líneas y las líneas mismas de cost_table.

if nr == 0 then

vote = true

else

-- I proceed to check the current values

cost = rows[1].getvalue("cost")

if cost ~= dataview.getvalue("cost") then

vote = true

end

end

Si el número de líneas es igual que cero y, por lo tanto, los costos nunca se han guardado, establecemos la variable vote en True.

Si hay líneas, el costo debe extrapolarse de la primera línea que contendrá el último valor guardado, ya que estos se ordenan en orden descendente.

Si el costo es diferente del costo actual del producto, estableceremos la variable vote en True.

if vote == true then

gridcost = dataview.getatable("cost_items")

row = gridcost.adddatarow()

row.setvalue("gguidp",dataview.getvalue("gguid"))

row.setvalue("date",utility.getnow())

row.setvalue("ind",database.getind("cost_items"))

row.setvalue("cost",dataview.getvalue("cost"))

row.save()

end

Si vote es igual a True, procedemos a guardar los valores. Primero agregamos una nueva línea a gridcost, es decir, la tabla adicional dentro de la ficha del producto. Luego establecemos el gguidp en el gguid del producto para encontrarlo en la próxima búsqueda, seleccionamos la fecha actual, el índice de la línea y el valor del costo. Finalmente guardamos la línea.

Habiendo usado el gguidp para mantener la relación, será posible usar la tabla cost_items como una tabla adicional para tener todo su histórico disponible en el producto.