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
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
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
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
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
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
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
def GetIdCliente(email): cliente = Modelo() filtro = [['email', '=', email]] fields = ['id'] return cliente.search('res.partner', filtro, fields)
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
def GetNameProducto(id_product): producto = Modelo() filtro = [['id', '=', id_product]] fields = ['name_template'] retorno = producto.search('product.product', filtro, fields) return retorno
def GetDefaultCode(id_product): producto = Modelo() filtro = [['id', '=', id_product]] fields = ['default_code'] retorno = producto.search('product.product', filtro, fields) return retorno
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
def GetProductor(id_productor): productor = Modelo() filtro = [['product_tmpl_id', '=', id_productor]] fields = ['name'] retorno = productor.search('product.supplierinfo', filtro, fields) return retorno
def GetIdProducto(cod_Producto): producto = Modelo() filtro = [['default_code', '=', cod_Producto]] fields = ['id'] return producto.search('product.product', filtro, fields)
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
def GetIdPedido(id_pedido): pedido = Modelo() filtro = [['origin', '=', id_pedido]] fields = ['id'] return pedido.search('sale.order', filtro, fields)
def GetProductCateg(id_categoria): productcat = Modelo() filtro = [['id', '=', id_categoria]] fields = ['name'] retorno = productcat.search('product.category', filtro, fields) return retorno