from django.test import TestCase

# Create your tests here.

def get_all_components(bom_dict, product_code, qty=1, result=None):
    """
    bom_dict : dictionnaire { code_produit: [(composant, quantité), ...] }
    product_code : code du produit fini à analyser
    qty : quantité à produire (par défaut 1)
    result : dictionnaire cumulatif des composants finaux
    """
    if result is None:
        result = {}

    if product_code not in bom_dict:
        # Si c'est un composant final (pas de sous-nomenclature)
        result[product_code] = result.get(product_code, 0) + qty
        return result

    # Sinon, c’est un assemblage (PF ou SF)
    for component, qte in bom_dict[product_code]:
        get_all_components(bom_dict, component, qty * qte, result)

    return result

bom_dict = {
    "PF001": [("SF001", 1), ("C1", 2), ("SF002", 3)],
    "SF001": [("C2", 3), ("C3", 4)],
    "SF002": [("C4", 16), ("C5", 15)]
}

global_components = get_all_components(bom_dict, "PF001")
print(global_components)
