from   spirit.spirit       import   spirit # 

class trapiche(spirit):
    def __init__(self, argv:list):
        self.empfil_softdib_x_stores_spirit = {
                "21":"0" # GARATEIA
            ,   "12":"1" # Itajai
            ,   "11":"2" # Ponta Grossa
        }
        self.stores_spirit_x_empfil_softdib = {
                0:"21" # GARATEIA
            ,   1:"12" # Itajai
            ,   2:"11" # Ponta Grossa
        }
        
        super(trapiche, self, ).__init__(argv)
        
        
        
    def store_id(self, data):
        # "Para trapiche teremos que mandar cada produto para um loja destino o"
        # "cadastro da loja e fixo dentro da spiritShop"
        return self.empfil_softdib_x_stores_spirit.get(data,"0") 
        
        
    def get_order_data(self, order) :
        
        self.cdempresa  = self.stores_spirit_x_empfil_softdib.get(order.get('store_id',0))[0] 
        self.cdfilial   = self.stores_spirit_x_empfil_softdib.get(order.get('store_id',0))[1]
        return [ self.extractValues(order, 'pedido_fields') ]
    
    
    def tabprecoxgrupocliente(self) :
        return  {}
    
    def rote_filter_orders(self):
        # para trapiche foi definido que irá importar todos e faremos os filtro
        # via codigo - na funcao afterGet_orders
        
        return  self.mountRouteParams({"order_integrated":'0' })
        
    def afterGet_orders(self, data):
        if data and data.get('success') :
            orders = data.get('orders')
            return list(
                filter(
                    lambda order: 
                        order.get('payment_code') == 'pagamento_retirada' or
                        order.get('payment_method') == 'Pagamento na entrega' or
                        order.get('order_status_id') == '21', 
                orders)
            )
            
            
        else : return []
        
    
    def payment_code(self, data):
        """
            {"payments_code":[{"code":"bank_transfer"},{"code":"pagseguro"},{"code":"mercadopago2"},{"code":"rede_acquiring"},{"code":"pp_standard"}]}
            Tratamento de dados de pagamento relacionado a empresa trapiche empresa 1 filial 1
        """
        
        payments_code = {
            "rede_acquiring": self.get_cond_pgto,
            "bank_transfer" : lambda  : "510"
        }
        
        return payments_code.get(data, lambda : "1")()
        
        
        
    def afterSend_orderUpdate(self, data) :
        if self.atualWs.get('table') == 'TBPEDIDOSFATURADOS':
            self.getDb().delete(
                "TBPEDIDOSFATURADOS"
            ,   [f"CDPEDIDOEXTERNO={data['order_id']}"]
            )
            return
            
            
        super().afterSend_orderUpdate(data)
        
        """ status = self.getDb().simple_select(
            table="TBSTATUS",
            fields=["CDSTATUS"],
            where=["NMAPI='spirit'",f"CDSTATUSEXTERNO='{data.get('order_status_id','')}'"],
            onlyFirst=True
        )
        delete = True
        if status and status.get('CDSTATUS',False) == 1 :
            response = self.spirit_request.doRequest(**{
                "rote": "setOrderIntegrated",
                "method": "POST",
                "json": {"order_id":data.get('order_id', None), 'order_integrated': 1} #json.dumps()
            })
            
            delete = response.ok
            
        if(delete):
            self.getDb().delete(
                "TBPEDIDOSSTATUS"
            ,   [f"IDTBPEDIDOSSTATUS={self.current_data['softdib_id']}"]
            ) """
        