Esempio n. 1
0
def StockComprometido(adapter, fi, ff, idvendedor, token, debug=False):
    param_tupla = {}
    logger.info('>>> Chequeando stock comprometido sin entregar ...')

    ordenes = Modelo()
    filtro = [
        ['state', 'in', ['progress', 'draft']],
        ['x_origen', '=', 'chasqui'],
    ]
    fields = ['order_line']
    ordenes_ids = ordenes.search('sale.order', filtro, fields, None)
    lineas = []
    if ordenes_ids:
        for i in ordenes_ids:
            lineas += i['order_line']
        ordenes_lines = Modelo()
        filtro = [['id', 'in', lineas]]
        fields = ['product_uos_qty', 'product_id']
        lineas_ids = ordenes_lines.search('sale.order.line', filtro, fields,
                                          None)

        for item in lineas_ids:
            codigo_interno = GetDefaultCode(
                item['product_id'][0])[0]['default_code']
            cantidad = item['product_uos_qty'] * -1

            if param_tupla.has_key(codigo_interno):
                cant = param_tupla[codigo_interno]
                param_tupla[codigo_interno] = cantidad + cant
            else:
                param_tupla[codigo_interno] = cantidad

    return param_tupla
Esempio n. 2
0
def GetIdPuntoDeRetiro(puntoderetiro):
    titulo = Modelo()
    filtro = [['shortcut', '=', 'puntoderetiro']]
    fields = ['id']
    ret = titulo.search('res.partner.title', filtro, fields)
    if not ret and ret[0]:
        return False
    title_id = ret[0]['id']
    cliente = Modelo()
    filtro = [['name', '=', puntoderetiro], ['title', '=', title_id]]
    fields = ['id']
    ret = cliente.search('res.partner', filtro, fields)
    if ret and ret[0]:
        return ret[0]['id']
    else:
        return False
Esempio n. 3
0
def GetIdDomicilio(id_cliente):
    cliente = Modelo()
    filtro = [['id', '=', id_cliente]]
    fields = ['x_iddomicilio']
    ret = cliente.search('res.partner', filtro, fields)
    if ret and ret[0]:
        return ret[0]['x_iddomicilio']
    else:
        return False
Esempio n. 4
0
def ProductosUpdate(adapter, fi, ff, idvendedor, token, debug=False):
    ret = False
    logger.info('>>> Chequeando si hay productos con updates ...')
    productos = Modelo()
    filtro = [['write_date', '>=', fi], ['write_date', '<=', ff],
              ['active', '=', True]]
    fields = [
        'id', 'default_code', 'list_price', 'categ_id', 'name', 'tag_ids',
        'seller_id', 'product_variant_ids'
    ]
    retorno = productos.search('product.template', filtro, fields, None)

    if len(retorno) > 0:
        if debug:
            logger.info('respuesta odoo: %s', str(retorno))
            logger.info('cantidad de productos: %s', str(len(retorno)))
        tupla = []
        for item in retorno:
            id_producto = item['product_variant_ids']
            codigo_interno = str(item['default_code'])
            name_producto = str(item['name']).strip()
            name_productor = item['seller_id'][1]
            name_categoria = str(item['categ_id'][1]).strip()
            importe = item['list_price']

            param_tupla = {}
            param_tupla['nombreProducto'] = str(
                GetNameProducto(id_producto)[0]['name_template']).strip()
            param_tupla['codigoInterno'] = codigo_interno
            param_tupla['nombreProductor'] = name_productor

            sellos = []
            for sello in item['tag_ids']:
                sellos.append(GetSelloProductos(sello))

            param_tupla['sellos'] = sellos
            param_tupla['categoria'] = name_categoria
            param_tupla['precio'] = importe
            tupla.append(param_tupla)

        param = {}
        param['idVendedor'] = idvendedor
        param['token'] = token
        param['variantes'] = tupla

        respuesta = adapter.actualizarProductos(param)

        if respuesta.status_code == 200:
            ret = True
        else:
            ret = False

    return ret
Esempio n. 5
0
def Productores(adapter, fi, ff, idvendedor, token, debug=False):
    ret = False
    logger.info('>>> Chequeando si hay productores nuevos o updates ...')
    productores = Modelo()
    filtro = [['write_date', '>=', fi], ['write_date', '<=', ff],
              ['supplier', '=', True]]
    fields = ['id', 'name', 'comment', 'ref', 'category_id']
    retorno = productores.search('res.partner', filtro, fields, None)

    if len(retorno) > 0:
        if debug:
            logger.info('respuesta odoo: %s', str(retorno))
            logger.info('cantidad de productores: %s', str(len(retorno)))
        tupla = []
        for item in retorno:
            if item['comment']:
                comentario = str(item['comment']).strip()
            else:
                comentario = ' '
            if item['ref']:
                referencia = str(item['ref']).strip()
            else:
                referencia = ' '

            sellos = []
            for cate in item['category_id']:
                sellos.append(GetSelloProductor(cate))

            param_tupla = {}
            param_tupla['nombre'] = str(item['name']).strip()
            param_tupla['descripcionLarga'] = referencia
            param_tupla['descripcionCorta'] = comentario
            param_tupla['idSellos'] = sellos
            tupla.append(param_tupla)

        param = {}
        param['idVendedor'] = idvendedor
        param['token'] = token
        param['productores'] = tupla

        respuesta = adapter.actualizarProductores(param)

        if respuesta.status_code == 200:
            ret = True
        else:
            ret = False
    return ret
Esempio n. 6
0
def GetSelloProductor(category_id):
    categoria = Modelo()
    filtro = [['id', '=', category_id]]
    fields = ['name']
    retorno = categoria.search('res.partner.category', filtro, fields)

    ret = None
    if retorno:
        categ = str(retorno[0]['name']).lower().strip()
        if categ == 'cooperativas':
            ret = 1
        elif categ == 'recuperadas':
            ret = 2
        elif categ == 'agricultura familiar':
            ret = 3
        elif categ == 'empresa social':
            ret = 4
        else:
            ret = None
    return ret
Esempio n. 7
0
def GetSelloProductos(etiqueta_id):
    etiqueta = Modelo()
    filtro = [['id', '=', etiqueta_id]]
    fields = ['name']
    retorno = etiqueta.search('product.tag', filtro, fields)

    ret = None
    if retorno:
        etiq = str(retorno[0]['name']).lower().strip()
        if etiq == 'agroecologico':
            ret = 1
        elif etiq == 'organico':
            ret = 2
        elif etiq == 'reciclado':
            ret = 3
        elif etiq == 'artesanal':
            ret = 5
        elif etiq == 'en red':
            ret = 7
        elif etiq == 'kilometro cero':
            ret = 8
        else:
            ret = None
    return ret
Esempio n. 8
0
def GetIdCliente(email):
    cliente = Modelo()
    filtro = [['email', '=', email]]
    fields = ['id']
    return cliente.search('res.partner', filtro, fields)
Esempio n. 9
0
def GetTemplate(id_template):
    template = Modelo()
    filtro = [['id', '=', id_template]]
    fields = ['name', 'list_price', 'categ_id', 'tag_id']
    retorno = template.search('product.template', filtro, fields)
    return retorno
Esempio n. 10
0
def GetNameProducto(id_product):
    producto = Modelo()
    filtro = [['id', '=', id_product]]
    fields = ['name_template']
    retorno = producto.search('product.product', filtro, fields)
    return retorno
Esempio n. 11
0
def GetDefaultCode(id_product):
    producto = Modelo()
    filtro = [['id', '=', id_product]]
    fields = ['default_code']
    retorno = producto.search('product.product', filtro, fields)
    return retorno
Esempio n. 12
0
def GetStockLocation(id_location):
    location = Modelo()
    filtro = [['name', '=', id_location]]
    fields = ['id', 'name', 'complete_name']
    retorno = location.search('stock.location', filtro, fields, None)
    return retorno
Esempio n. 13
0
def GetProductor(id_productor):
    productor = Modelo()
    filtro = [['product_tmpl_id', '=', id_productor]]
    fields = ['name']
    retorno = productor.search('product.supplierinfo', filtro, fields)
    return retorno
Esempio n. 14
0
def GetIdProducto(cod_Producto):
    producto = Modelo()
    filtro = [['default_code', '=', cod_Producto]]
    fields = ['id']
    return producto.search('product.product', filtro, fields)
Esempio n. 15
0
def CheckStock(adapter, fi, ff, idvendedor, token, debug=False):
    ret = False
    logger.info('>>> Chequeando stock ...')

    location = GetStockLocation('Chasqui')
    if location:
        productos = Modelo()
        filtro = [['location_id', '=', location[0]['id']]]
        fields = ['quantity', 'product_id']
        retorno = productos.search('stock.history', filtro, fields, None)

        if debug:
            logger.info('respuesta odoo stock en deposito chasqui: %s',
                        str(retorno))

        #consulta si hay stock pendiente de entregar en ordenes de ventas sin confirmar
        param_tupla = StockComprometido(adapter,
                                        fi,
                                        ff,
                                        idvendedor,
                                        token,
                                        debug=False)

        if debug:
            logger.info('respuesta odoo stock comprometido chasqui: %s',
                        str(param_tupla))

        for item in retorno:
            codigo_interno = GetDefaultCode(
                item['product_id'][0])[0]['default_code']
            cantidad = item['quantity']

            if param_tupla.has_key(codigo_interno):
                cant = param_tupla[codigo_interno]
                param_tupla[codigo_interno] = cantidad + cant
            else:
                param_tupla[codigo_interno] = cantidad

        if debug:
            logger.info('respuesta odoo stock real chasqui: %s',
                        str(param_tupla))

        tupla = []
        for item in param_tupla:
            dict_prod = {}
            dict_prod['codigoInterno'] = item
            dict_prod['stock'] = param_tupla[item]
            tupla.append(dict_prod)

        if len(tupla) > 0:
            logger.info('>>> Actualizando stock ...')
            param = {}
            param['idVendedor'] = idvendedor
            param['token'] = token
            param['productos'] = tupla

            respuesta = adapter.agregarStockDeProductos(param)

            if respuesta.status_code == 200:
                ret = True
            else:
                ret = False

    return ret
Esempio n. 16
0
def GetIdPedido(id_pedido):
    pedido = Modelo()
    filtro = [['origin', '=', id_pedido]]
    fields = ['id']
    return pedido.search('sale.order', filtro, fields)
Esempio n. 17
0
def GetProductCateg(id_categoria):
    productcat = Modelo()
    filtro = [['id', '=', id_categoria]]
    fields = ['name']
    retorno = productcat.search('product.category', filtro, fields)
    return retorno