Open Vichearith opened 3 months ago
J'ai essayé d'écrire la démarche de calcul nécessaire pour calculer la consommation des produits hors recette à partir des JSON présents sur Matta Nuu, avec l'exemple du "Café soluble Maxwell House Qté Filtre - pot de 200g". J'ai du mal à voir si c'est correct ou pas. Preneur de vos retours. @seballot @Focus-Pacifique
Achats :
orders
pour obtenir les quantités achetées.Stocks :
inventories
pour obtenir les niveaux de stock initial et final.Sessions :
sessions
pour calculer le nombre total d'étudiants et le nombre total de jours.Calcul de la consommation totale :
Calcul de la consommation par jour pour 10 étudiants :
Calcul du coût pour 10 étudiants :
Voici le script Ruby basé sur les données JSON fournies, utilisant les mêmes étapes de calcul que celles utilisées dans le script Python.
require 'json'
# Charger les données JSON
orders = JSON.parse(File.read('/mnt/data/orders.json'))
inventories = JSON.parse(File.read('/mnt/data/inventories.json'))
sessions = JSON.parse(File.read('/mnt/data/sessions.json'))
products = JSON.parse(File.read('/mnt/data/products.json'))
# Identification du produit
product_id = 424
product_name = "Café soluble Maxwell House Qté Filtre - pot de 200g"
product_price = 5.0 # Assumer un prix fictif de 5 euros par pot
# Étape 1 : Quantité achetée
total_purchases = orders.reduce(0) do |sum, order|
if order['values'] && order['values'][product_id.to_s] && order['values'][product_id.to_s]['value']
sum + order['values'][product_id.to_s]['value']
else
sum
end
end
# Étape 2 : Stock initial et final
initial_stock = inventories.reduce(0) do |sum, inventory|
if inventory['values'] && inventory['values'][product_id.to_s] && inventory['values'][product_id.to_s]['amount']
sum + inventory['values'][product_id.to_s]['amount']
else
sum
end
end
final_stock = initial_stock # Hypothèse basée sur les données disponibles
# Étape 3 : Nombre total d'étudiants et nombre total de jours
total_students = 0
total_days = 0
sessions.each do |session|
session['events'].each do |event|
days = event['days'] || []
total_days += days.size
total_students += days.size * 10 # Valeur fictive de 10 étudiants par jour
end
end
# Calcul de la consommation
total_consumed = total_purchases + initial_stock - final_stock
consumption_per_student_per_day = total_consumed.to_f / total_students
consumption_per_day_for_10_students = consumption_per_student_per_day * 10
# Étape 5 : Calcul du coût pour 10 étudiants
cost_for_10_students = consumption_per_day_for_10_students * product_price
puts "Total des achats : #{total_purchases} pots"
puts "Stock initial : #{initial_stock} pots"
puts "Stock final : #{final_stock} pots"
puts "Consommation totale : #{total_consumed} pots"
puts "Nombre total d'étudiants : #{total_students}"
puts "Nombre total de jours : #{total_days}"
puts "Consommation par jour pour 10 étudiants : #{consumption_per_day_for_10_students} pots"
puts "Coût pour 10 étudiants par jour : #{cost_for_10_students} euros"
Yop !
Chaud le Eric ! je savais pas que tu codais du ruby :)
total_purchases
c'est bon. Juste quand implémenté de manière générique dans Matta-Nuu il faudra prendre en compte le fait qu'on peut convertir pendant l'order l'unité du produit : i.e manager son café en kg, et dans la commande convertir en pot de 200g. Y'a une config sur le produit pour ça
initial_stock
ça c'est pas correct, car tu somme tous les inventaires fait (faut prend juste ceux fait au jour "initial stock") et tu ne prend pas en compte la valeur session.stocks[inital_stock][café soluble]
. Pareil pour le stock final.
Mais pourquoi faire ce script externe à partir des données JSON plutot que le faire dans Matta-Nuu, ou y'a déjà tout un tas de helper pour le calcul des stocks/achats/inventaires? c'était juste pour tester?
C'est ChatGPT ;) Je l'ai pas fait dans Matta-Nuu car je n'ai pas creusé le code existant plus que ça, c'était plutôt pour tester et essayer de filer un petit coup de main sur le sujet
J'ai commencé la semaine dernière à m'occuper des prix et coûts. C'est en cours
Question coûts, le plus important pour l'intendance est de visualiser le coût prévisionnel d'une commande lors de l'édition du bon de commande, afin que l'on puisse l'ajuster et s'assurer d'atteindre le franco. Cette information n'a pas besoin d'apparaître dans le pdf.
Description : Lister et implémenter divers calculs pour l'optimisation des coûts et consommations.
Tâches :
Priorité : Moyenne