Ejemplo n.º 1
0
class Pedidos:
    ''' Almacena cada pedido de trabajo'''

    def __init__(self): 
        self.repositorio=Repositorio()
        self.pedidos=[]
        self.estados=["Recibido","Presupuestado","Reparado","Entregado","Pagado"]
        try:
            self.pedidos=self.repositorio.get_all_pedidos()    
        except Exception as mensaje:
            raise
    def nuevo_pedido(self, id_cliente, descripcion, etiquetas=' ', fecha_prev=' ', fecha_entrega=' ',
                 id_estado=' ',precio=' ',pagado=' '):    
        obj=Pedido(id_cliente, descripcion, etiquetas, fecha_prev, fecha_entrega,
                 id_estado,precio,pagado)
        ret=self.pegar_estado(obj)
        id=self.repositorio.guardar_pedido(ret)
        ret.id_pedido=id
        self.pedidos.append(ret)
        
        return ret
    def buscar_pedido(self,filtro):
        lista=[]
        for i in self.pedidos:
            if ( str(filtro) in str(i.descripcion)) or (str(i.etiquetas) == str(filtro)) or (str(i.id_pedido)==str(filtro)):
                lista.append(i)
        return lista        
        
    def buscar_por_id(self,id_pedido):
        for pedido in self.pedidos:
            if str(pedido.id_pedido)==str(id_pedido):
                return pedido
    def entregar_pedido(self,id_pedido):
        pedido=self.buscar_por_id(id_pedido)
        if pedido:
            pedido.id_estado=self.estados[3]
            pedido.fecha_entrega=datetime.today()
            self.repositorio.actualizar_pedido(pedido)
            return pedido
        else:
            return 'Nose encontro pedido'
    def modificar_pedido(self,id_pedido, descripcion=' ', precio=' ',etiquetas='', pagado=''):
        pedido=self.buscar_por_id(id_pedido)
            
        if pedido:
            if descripcion:
                pedido.descripcion=descripcion
            if precio:
                pedido.precio=precio
            if etiquetas:
                pedido.etiquetas=etiquetas
            if pagado:
                pedido.pagado=pagado
            self.pegar_estado(pedido)
            self.repositorio.actualizar_pedido(pedido)
        else:
            return 'pedido no encontrado'

    def pedidos_por_vencer(self):
            '''recibe un número "n" como parámetro, y retorna una lista de
                los contactos que cumplen años en los próximos "n" días.'''
            lista=[]
            pedidos=[]
            for y in self.pedidos:
                pedidos.append(y)
            contador=0
            formato=("%d/%m/%Y")
            n=int(5)
            fecha_busqueda=datetime.today()
            while contador < n:
                contador +=1   
                for xx in pedidos:
                    x=xx.fecha_prev
                    x=datetime.strptime(xx.fecha_prev,formato)
                    resultado=x-fecha_busqueda
                    print(x)
                    print(resultado)
                    if (int(resultado.days) < 5) and (int(resultado.days) > 0):
                        lista.append(xx)
                    pedidos.remove(xx)
                fecha_busqueda = fecha_busqueda + timedelta(days=1)
                print(fecha_busqueda)
                
            return lista
    def pedidos_vencidos(self):
            lista=[]
            pedidos=[]
            for y in self.pedidos:
                pedidos.append(y)
            contador=0
            formato=("%d/%m/%Y")
            n=int(5)
            fecha_busqueda=datetime.today()
            
            for xx in pedidos:
                x=xx.fecha_prev
                x=datetime.strptime(x,formato)
                print(x)
                resultado=x-fecha_busqueda
                if int(resultado.days)<0:
                    lista.append(xx)
                pedidos.remove(xx)
            return lista
    def pegar_estado(self,pedido):
        if pedido:
            pedido.id_estado=self.estados[0]
        if pedido.precio:   
            if int(pedido.precio) > 0:
                pedido.id_estado=self.estados[1]
        if pedido.precio == pedido.pagado:
            pedido.id_estado=self.estados[4]
        return pedido
    def eliminar_elpedido(self,id_pedido):
        pedido=self.buscar_por_id(id_pedido)
        if pedido:
            self.pedidos.remove(pedido)
            self.repositorio.eliminar_pedido_bd(pedido)