from   shopify.shopify       import   shopify # 

class papapa(shopify):
    def __init__(self, argv:list):
        super(papapa, self, ).__init__(argv)

    """
    A papapa decidiu não mandar os valores, eles vão controlar preços direto pela Shopify
    A carga inicial cria o preço, mas depois disso, o preço é controlado pela Shopify, então a rotina de atualização é desativada.
    """
    def beforeSend_products(self, data):
        """
        Ajustes finais no payload antes de enviar o produto para Shopify.

        1. Normaliza compare_at_price: string 'None' → None → JSON null
        2. Remove metafields com value vazio para evitar erro 422
        3. Limpa tags removendo entradas sem valor (ex: 'NCM:,UNIDADE:')
        """
        produto = data.get('product', {})

        # 1. Normaliza compare_at_price
        for variant in produto.get('variants', []):
            cap = variant.get('compare_at_price')
            if cap in [None, 'None', '', '0', '0.00']:
                variant['compare_at_price'] = None

        # 2. Remove metafields sem valor
        produto['metafields'] = [
            mf for mf in produto.get('metafields', [])
            if mf.get('value') not in [None, 'None', '', '0']
        ]

        # 3. Limpa tags vazias
        tags_limpos = ','.join([
            t for t in produto.get('tags', '').split(',')
            if ':' in t and t.split(':')[1].strip() not in ['', 'None']
        ])
        produto['tags'] = tags_limpos

        # T142486:111
        if self.current_method == "PUT":
            self.ignore_request = True
            return data;

        data['product'] = produto
        return data

    def forma_envio_frete_papapa(self, value, props):
        value = 1
        fretes = {
            "0": "1",
            "1": "2",
            "2": "4",
            "3": "5",
            "4": "6"
        }
        
        return fretes.get(str(value), "9")