import json


def find_existing_customer(json_data, client_code):
    for cust in json_data.get('customers', []):
        tags = [tag.strip() for tag in cust.get('tags', '').split(',')]
        if client_code in tags or 'Code Client : ' + client_code in tags:
            return cust
    return None

def find_existing_product(products, product_sku):
    # 1) Chaîne brute -> dict
    if isinstance(products, str):
        products = json.loads(products)          # <= parse !

    # 2) Dict racine -> liste
    if isinstance(products, dict):
        # Les API Shopify renvoient généralement {"products": [...]}
        products = products.get("products", [])

    # 3) Vérification : il nous faut maintenant une liste
    if not isinstance(products, list):
        raise TypeError(
            f"find_existing_product attend une LISTE, reçu {type(products).__name__}"
        )

    # 4) Recherche du SKU
    for product in products:
        for variant in product.get("variants", []):
            if variant.get("sku") == product_sku:
                return variant["id"]

    return None


def find_rule_by_name(name, all_cp_rules):
    for rule in all_cp_rules:
        if rule["name"] == name:
            return rule
    return None