diff --git a/addons/mrp/tests/test_multicompany.py b/addons/mrp/tests/test_multicompany.py index 5d1a0a50bcb..1996136130d 100644 --- a/addons/mrp/tests/test_multicompany.py +++ b/addons/mrp/tests/test_multicompany.py @@ -35,7 +35,7 @@ class TestMrpMulticompany(common.TransactionCase): model, group_user_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user') model, group_stock_manager_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'stock', 'group_stock_manager') - model, company_2_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'stock', 'res_company_2') + model, company_2_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'stock', 'res_company_1') self.multicompany_user_id = self.res_users.create(cr, uid, {'name': 'multicomp', 'login': 'multicomp', 'groups_id': [(6, 0, [group_user_id, group_stock_manager_id])], diff --git a/addons/mrp_operations/test/workcenter_operations.yml b/addons/mrp_operations/test/workcenter_operations.yml index 5355c9a989d..6e9beafa156 100644 --- a/addons/mrp_operations/test/workcenter_operations.yml +++ b/addons/mrp_operations/test/workcenter_operations.yml @@ -13,6 +13,7 @@ !record {model: res.users, id: res_mrp_operation_user}: groups_id: - mrp.group_mrp_user + - stock.group_stock_user - In order to test mrp_operations with OpenERP, I refer created production order of PC Assemble SC349 with routing - Manual Component's Assembly to test complete production process with respect of workcenter with giving access rights of MRP User. diff --git a/addons/purchase/purchase_demo.xml b/addons/purchase/purchase_demo.xml index c68ee8775bb..b1b1f808cba 100644 --- a/addons/purchase/purchase_demo.xml +++ b/addons/purchase/purchase_demo.xml @@ -17,6 +17,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/purchase/purchase_stock_demo.yml b/addons/purchase/purchase_stock_demo.yml index eee20f7c2bc..a483c8301c6 100644 --- a/addons/purchase/purchase_stock_demo.yml +++ b/addons/purchase/purchase_stock_demo.yml @@ -1,7 +1,7 @@ - !python {model: stock.warehouse}: | pull_obj = self.pool.get('procurement.rule') - wh_to_assign = ['stock_warehouse_shop0','stock_warehouse_shop1','warehouse_icecream'] + wh_to_assign = ['stock_warehouse_shop0'] for wh_ref in wh_to_assign: warehouse = self.browse(cr, uid, ref('stock.' + wh_ref), context=context) #Force the rewriting of route and rule diff --git a/addons/sale_stock/test/sale_stock_users.yml b/addons/sale_stock/test/sale_stock_users.yml index 34e00147c15..04152b43c9a 100644 --- a/addons/sale_stock/test/sale_stock_users.yml +++ b/addons/sale_stock/test/sale_stock_users.yml @@ -28,6 +28,7 @@ !record {model: res.users, id: res_sale_stock_salesman}: groups_id: - base.group_sale_salesman_all_leads + - stock.group_stock_user - Create a user as 'Stock User' - diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml index 5f8d4a391a4..78d57242aec 100644 --- a/addons/stock/security/stock_security.xml +++ b/addons/stock/security/stock_security.xml @@ -2,10 +2,15 @@ + + Manage Multiple Locations and Warehouses + + + User - + Manager @@ -24,17 +29,11 @@ - - Manage Multiple Locations and Warehouses - - - Manage Push and Pull inventory flows - Manage Different Stock Owners diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 5b9af9ec177..f7db0b8dcfb 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -3466,6 +3466,11 @@ class stock_picking_type(osv.osv): group_begin_date = datetime.strptime(group['__domain'][0][2], DEFAULT_SERVER_DATE_FORMAT) month_delta = relativedelta.relativedelta(month_begin, group_begin_date) section_result[10 - (month_delta.months + 1)] = {'value': group.get(value_field, 0), 'tooltip': group_begin_date.strftime('%B')} + inner_groupby = (group.get('__context', {})).get('group_by',[]) + if inner_groupby: + groupby_picking = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) + for groupby in groupby_picking: + section_result[10 - (month_delta.months + 1)]['value'] = groupby.get(value_field, 0) return section_result def _get_picking_data(self, cr, uid, ids, field_name, arg, context=None): @@ -3481,7 +3486,7 @@ class stock_picking_type(osv.osv): ('date', '>=', groupby_begin), ('date', '<', groupby_end), ] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['date'], 'picking_type_id_count', 'date', context=context) + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['date','picking_type_id'], 'picking_type_id_count', ['date','picking_type_id'], context=context) return res def _get_picking_count(self, cr, uid, ids, field_names, arg, context=None): diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml index 6579628f83f..252e860aefa 100644 --- a/addons/stock/stock_demo.xml +++ b/addons/stock/stock_demo.xml @@ -188,60 +188,6 @@ Your Company, Chicago shop - - - Your Company, Birmingham shop - - - - 1 - 82-85 Academy Avenue - Birmingham - B46 3AG - - +44 121 690 4596 - birmingham@yourcompany.com - www.yourcompany.com - - - - Donald Thompson - - - - - - - - - Your Company, Birmingham shop - - - - - - - - internal - - Your Company, Chicago shop - - - - - - internal - - Your Company, Birmingham shop - - - - - transit - Internal Shippings - - - Chicago Warehouse @@ -249,13 +195,6 @@ Chic - - Birmingham Warehouse - - - - Birm - diff --git a/addons/stock/stock_demo.yml b/addons/stock/stock_demo.yml index 0f365382f69..3b90afe52b3 100644 --- a/addons/stock/stock_demo.yml +++ b/addons/stock/stock_demo.yml @@ -1,30 +1,24 @@ - - !record {model: stock.location, id: location_refrigerator}: - name: Refrigerator - usage: internal -- - !record {model: stock.location, id: location_delivery_counter}: - name: Delivery Counter - usage: internal + !python {model: ir.model.data}: | + chicago_warehouse = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock_warehouse_shop0'), context=context) + + #create xml ids for demo data that are widely used in tests or in other codes, for more convenience + xml_references = [ + {'name':'chi_picking_type_in','module':'stock', 'model':'stock.picking.type','res_id': chicago_warehouse.in_type_id.id}, + {'name':'chi_picking_type_out','module':'stock', 'model':'stock.picking.type','res_id': chicago_warehouse.out_type_id.id}, + {'name':'stock_location_shop0','module':'stock', 'model':'stock.location','res_id': chicago_warehouse.lot_stock_id.id}, + ] + for xml_record in xml_references: + xml_ids = self.search(cr, uid, [('module', '=', xml_record['module']), ('model', '=', xml_record['model']), ('name', '=', xml_record['name'])], context=context) + if not xml_ids: + self.create(cr, uid, xml_record, context=context) + #avoid the xml id and the associated resource being dropped by the orm by manually making a hit on it + self._update_dummy(cr, uid, xml_record['model'], xml_record['module'], xml_record['name']) - !record {model: stock.location, id: location_refrigerator_small}: name: Small Refrigerator usage: internal - location_id: location_refrigerator -- - !record {model: stock.location, id: location_opening}: - name: opening - usage: inventory -- - !record {model: stock.location, id: location_convenience_shop}: - name: Convenient Store - usage: supplier -- - !record {model: stock.warehouse, id: warehouse_icecream}: - name: Ice Cream Shop - code: ICE - lot_stock_id: location_refrigerator - code: Cream + location_id: stock_location_14 - !record {model: product.product, id: product_icecream}: default_code: 001 @@ -35,7 +29,7 @@ standard_price: 70.0 uom_id: product.product_uom_kgm uom_po_id: product.product_uom_kgm - property_stock_inventory: location_opening + property_stock_inventory: location_inventory description: Ice cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events. - !record {model: stock.production.lot, id: lot_icecream_0}: @@ -56,7 +50,7 @@ inventory_id: stock_inventory_icecream product_qty: 50.0 prod_lot_id: lot_icecream_0 - location_id: location_refrigerator + location_id: stock_location_14 - !record {model: stock.inventory.line, id: stock_inventory_line_icecream_lot1}: product_id: product_icecream @@ -64,16 +58,63 @@ inventory_id: stock_inventory_icecream product_qty: 40.0 prod_lot_id: lot_icecream_1 - location_id: location_refrigerator + location_id: stock_location_14 - Create STOCK_MOVE for OUT - - !record {model: stock.move, id: outgoing_shipment_icecream}: - product_id: product_icecream - product_uom: product.product_uom_kgm - product_uom_qty: 130.0 - location_id: location_refrigerator - location_dest_id: location_delivery_counter + !record {model: stock.picking, id: outgoing_shipment_main_warehouse}: + picking_type_id: stock.picking_type_out + origin: 'outgoing shipment main_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_27 + product_uom: product.product_uom_unit + product_uom_qty: 15.0 + picking_type_id: stock.picking_type_out + location_id: stock.stock_location_stock + location_dest_id: stock.stock_location_customers +- + !record {model: stock.picking, id: outgoing_shipment_main_warehouse1}: + picking_type_id: stock.picking_type_out + origin: 'outgoing shipment' + partner_id: base.res_partner_6 + date: !eval "'%s-%s-15' %(datetime.now().year,datetime.now().month-2)" + move_lines: + - product_id: product.product_product_6 + product_uom: product.product_uom_unit + product_uom_qty: 180.0 + picking_type_id: stock.picking_type_out + location_id: stock.stock_location_stock + location_dest_id: stock.stock_location_customers + pack_operation_ids: + - product_id: product.product_product_6 + product_qty: 100 + product_uom_id: product.product_uom_unit +- + !record {model: stock.picking, id: outgoing_shipment_main_warehouse2}: + picking_type_id: stock.picking_type_out + origin: 'outgoing shipment your_company warehouse' + partner_id: base.res_partner_6 + date: !eval "'%s-%s-15' %(datetime.now().year,datetime.now().month-1)" + move_lines: + - product_id: product.product_product_31 + product_uom: product.product_uom_unit + product_uom_qty: 45.0 + picking_type_id: stock.picking_type_out + location_id: stock.stock_location_stock + location_dest_id: stock.stock_location_customers +- + !record {model: stock.picking, id: outgoing_shipment_main_warehouse3}: + picking_type_id: stock.picking_type_out + origin: 'your company warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_5 + product_uom: product.product_uom_unit + product_uom_qty: 75.0 + picking_type_id: stock.picking_type_out + location_id: stock.stock_location_stock + location_dest_id: stock.stock_location_customers - Create STOCK_PICKING for IN - @@ -87,5 +128,172 @@ product_uom: product.product_uom_kgm product_uom_qty: 50.0 picking_type_id: stock.picking_type_in - location_id: location_convenience_shop - location_dest_id: location_refrigerator + location_id: stock_location_suppliers + location_dest_id: stock_location_14 +- + !record {model: stock.picking, id: incomming_shipment1}: + picking_type_id: stock.picking_type_in + origin: 'incomming_shipment' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_48 + product_uom: product.product_uom_unit + product_uom_qty: 35.0 + picking_type_id: stock.picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_stock +- + !record {model: stock.picking, id: incomming_shipment2}: + picking_type_id: stock.picking_type_in + origin: 'incomming_shipment main_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_22 + product_uom: product.product_uom_unit + product_uom_qty: 125.0 + picking_type_id: stock.picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_stock +- + !record {model: stock.picking, id: incomming_shipment3}: + picking_type_id: stock.picking_type_in + origin: 'incomming_shipment your_company warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_10 + product_uom: product.product_uom_unit + product_uom_qty: 120.0 + picking_type_id: stock.picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_stock +- + !record {model: stock.picking, id: incomming_shipment4}: + picking_type_id: stock.picking_type_in + origin: 'incomming_shipment_main_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_31 + product_uom: product.product_uom_unit + product_uom_qty: 50.0 + picking_type_id: stock.picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_stock +- + Create STOCK_PICKING_IN for Chicago Warehouse +- + !record {model: stock.picking, id: incomming_chicago_warehouse}: + picking_type_id: chi_picking_type_in + origin: 'incomming_chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_9 + product_uom: product.product_uom_unit + product_uom_qty: 25.0 + picking_type_id: chi_picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_shop0 +- + !record {model: stock.picking, id: incomming_chicago_warehouse1}: + picking_type_id: chi_picking_type_in + origin: 'incomming_shipment_chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_48 + product_uom: product.product_uom_unit + product_uom_qty: 180.0 + picking_type_id: chi_picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_shop0 + state: done + pack_operation_ids: + - product_id: product.product_product_48 + product_qty: 100 + product_uom_id: product.product_uom_unit +- + !record {model: stock.picking, id: incomming_chicago_warehouse2}: + picking_type_id: chi_picking_type_in + origin: 'incomming_shipment chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_32 + product_uom: product.product_uom_unit + product_uom_qty: 45.0 + picking_type_id: chi_picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_shop0 +- + !record {model: stock.picking, id: incomming_chicago_warehouse3}: + picking_type_id: chi_picking_type_in + origin: 'chicago_warehouse' + partner_id: base.res_partner_6 + date: !eval "'%s-%s-2' %(datetime.now().year,datetime.now().month-1)" + move_lines: + - product_id: product.product_product_22 + product_uom: product.product_uom_unit + product_uom_qty: 75.0 + picking_type_id: chi_picking_type_in + location_id: stock.stock_location_suppliers + location_dest_id: stock.stock_location_shop0 +- + Create STOCK_PICKING_OUT for Chicago Warehouse +- + !record {model: stock.picking, id: outgoing_chicago_warehouse}: + picking_type_id: chi_picking_type_out + origin: 'outgoing_chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_27 + product_uom: product.product_uom_unit + product_uom_qty: 15.0 + picking_type_id: chi_picking_type_out + location_id: stock.stock_location_shop0 + location_dest_id: stock.stock_location_customers +- + !record {model: stock.picking, id: outgoing_chicago_warehouse1}: + picking_type_id: chi_picking_type_out + origin: 'outgoing_shipment_chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_6 + product_uom: product.product_uom_unit + product_uom_qty: 180.0 + picking_type_id: chi_picking_type_out + location_id: stock.stock_location_shop0 + location_dest_id: stock.stock_location_customers + pack_operation_ids: + - product_id: product.product_product_6 + product_qty: 100 + product_uom_id: product.product_uom_unit +- + !record {model: stock.picking, id: outgoing_chicago_warehouse2}: + picking_type_id: chi_picking_type_out + origin: 'chicago_warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_31 + product_uom: product.product_uom_unit + product_uom_qty: 45.0 + picking_type_id: chi_picking_type_out + location_id: stock.stock_location_shop0 + location_dest_id: stock.stock_location_customers +- + !record {model: stock.picking, id: outgoing_chicago_warehouse3}: + picking_type_id: chi_picking_type_out + origin: 'outgoing chicago warehouse' + partner_id: base.res_partner_6 + move_lines: + - product_id: product.product_product_5 + product_uom: product.product_uom_unit + product_uom_qty: 75.0 + picking_type_id: chi_picking_type_out + location_id: stock.stock_location_shop0 + location_dest_id: stock.stock_location_customers +- + !python {model: stock.picking}: | + self.action_confirm(cr, uid, [ref('outgoing_shipment_main_warehouse'),ref('outgoing_shipment_main_warehouse1'),ref('incomming_shipment2'),ref('incomming_shipment1'),ref('incomming_shipment3'),ref('outgoing_chicago_warehouse3'),ref('outgoing_chicago_warehouse2'),ref('outgoing_chicago_warehouse1'),ref('incomming_chicago_warehouse1'),ref('incomming_chicago_warehouse2'),ref('incomming_chicago_warehouse3')], context=context) + record = self.browse(cr, uid, ref('outgoing_shipment_main_warehouse1'), context=context) + record_chi_in = self.browse(cr, uid, ref('incomming_chicago_warehouse1'), context=context) + record_chi_out = self.browse(cr, uid, ref('outgoing_chicago_warehouse1'), context=context) + if record.state != 'done' and record_chi_in.state != 'done' and record_chi_out.state != 'done': + self.force_assign(cr, uid, [ref('outgoing_shipment_main_warehouse'),ref('outgoing_chicago_warehouse3'),ref('outgoing_shipment_main_warehouse2')], context=context) + self.do_transfer(cr, uid, [ref('outgoing_shipment_main_warehouse1'),ref('incomming_chicago_warehouse1'),ref('outgoing_chicago_warehouse1')], context=context) diff --git a/addons/stock/stock_location_demo_cpu1.xml b/addons/stock/stock_location_demo_cpu1.xml index ac74e0de4ba..8cc0f8ce8e2 100644 --- a/addons/stock/stock_location_demo_cpu1.xml +++ b/addons/stock/stock_location_demo_cpu1.xml @@ -4,6 +4,7 @@ This product is configured with example of push/pull flows + 20.0 10.0