from   spirit.spirit       import   spirit # 

"""
Atacado, Licitações e Varejos = GRUPO A.....ficará com a tabela de preços 502
Medio Varejo = GRUPO B.... ficará com a tabela de preços 702
Pequeno Varejo = GRUPO C.... ficará com a tabela de preços 902.
"""


class onda_pro(spirit):
    def __init__(self, argv:list):
        super(onda_pro, self, ).__init__(argv)
        
        
    
    def tabprecoxgrupocliente(self):
        """ Relacao de codigo na spirit e tabela de precos na softdib"""
        return  {
            #"17"  : "200",
            #"16"  : "300",
            #"15"  : "107",
            "20"  : "107",
            "19"  : "105",
            "14"  : "107",
            "13"  : "105",
        }
        
    
    def rote_filter_orders(self):
        """Onda pro tem sua propria pois puxara os pedidos de forma unica, dife -
            rente do padrao

        Returns:
            [str]: Retorna uma string com a montagem dos paramentros da URL
        """
        return  self.mountRouteParams(
            {
                    #"date_start" : '2023-10-20 12:12:12',
                    #"order_integrated"     : '1'
                    #,"order_status_id"    : '21'
                    
                    "order_integrated"     : '0'
                ,   "sort": "ASC"
                #   "order_id": 462

                
            }
        )
    
    
    def product_ipi(self, data):
        """SQL para formacao dos dados de impostos baseado nos grupos e tabela
        de preco"""

        #'15,14,13',
        return """
            (
                SELECT
                    IF(
                        LEFT(TBPRODUTO.CDSITTRIBUTARIA,1) IN (1, 6),
                        '20,19,14,13',
                        ''
                    ) as tmp
                FROM
                    TBPRODUTO
                WHERE
                    TBPRODUTO.CDPRODUTO = TBIMPOSTOS.CDPRODUTO
            )
        """
    
    
    
    def clientes_handler(self, data):
        """Essa opcao esta somente para onda pro, por enquanto so ele ira fazer
            o cadastro do cliente, o metodo usado para spirit esta sendo o 
            GET ALL para atender essa rota

        Args:
            data ([dict]): [description]
        """
        for cliente in data:
            code = self.jsonValueByPath(self.atualWs.get('identifier','id'), cliente)
            exists = False#self.translate(id=code, table= self.atualWs.get('table'), reverse=True)
            if not exists:
                cli_data =  self.extractValues(cliente, 'fields') 
                success  = self.salvar_cliente_softdib(cli_data)
                #print(success)
            
            

    def payment_code(self, payment_method):
        """ O pagamento da onda pro sempre sera por boleto o que muda serao os prazos 

        Args:
            payment_method (str): codigo que vem da integracao com spirit

        Returns:
            str: codigo cadastrado no softdib
        """
        payment_method = payment_method.replace('Pagamento a Faturar: ','')
        fetch =  self.getDb().simple_select(
                fields  =["CDCONDPGTO"]
            ,   table   ="TBCONDPGTO"
            ,   where   =[f"DSCONDPGTO='{payment_method}'"],
                onlyFirst=True
        )
        
        return str(fetch.get('CDCONDPGTO', '0'))
        
        
        
        payments_code = {
            "rede_acquiring": self.get_cond_pgto,
            "bank_transfer" : lambda  : "510"
        }
        
        return payments_code.get(data, lambda : "1")()
        
        
    
