Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calculs des coûts et consommations #7

Open
Vichearith opened this issue Jun 2, 2024 · 5 comments
Open

Calculs des coûts et consommations #7

Vichearith opened this issue Jun 2, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@Vichearith
Copy link
Collaborator

Description :
Lister et implémenter divers calculs pour l'optimisation des coûts et consommations.

Tâches :

  • Calculer le prix de chaque recette.
  • Calculer le coût et la consommation de chaque produit par étudiant.
  • Solliciter le Sud-Est et le Sud-Ouest pour avoir leur estimation de consommation par étudiants.
  • Identifier et implémenter d'autres calculs pertinents pour la gestion des stocks.

Priorité : Moyenne

@Vichearith
Copy link
Collaborator Author

Vichearith commented Jul 30, 2024

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

Démarche de Calcul Révisée

  1. Achats :

    • Utiliser les données de la table orders pour obtenir les quantités achetées.
  2. Stocks :

    • Utiliser les données de la table inventories pour obtenir les niveaux de stock initial et final.
  3. Sessions :

    • Utiliser les données de la table sessions pour calculer le nombre total d'étudiants et le nombre total de jours.
  4. Calcul de la consommation totale :

    • Consommation totale = Stock initial + Total des achats - Stock final
  5. Calcul de la consommation par jour pour 10 étudiants :

    • Consommation par étudiant par jour = Consommation totale / Total des étudiants
    • Consommation par jour pour 10 étudiants = Consommation par étudiant par jour * 10
  6. Calcul du coût pour 10 étudiants :

    • Assumer un coût unitaire fictif de 5 euros par pot.
    • Coût pour 10 étudiants = Consommation par jour pour 10 étudiants * Coût unitaire du produit

Script Ruby

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"

@seballot
Copy link
Member

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?

@Vichearith
Copy link
Collaborator Author

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

@Focus-Pacifique
Copy link
Collaborator

J'ai commencé la semaine dernière à m'occuper des prix et coûts. C'est en cours

@ousabd
Copy link
Collaborator

ousabd commented Sep 24, 2024

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.

@ousabd ousabd added the enhancement New feature or request label Sep 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants