diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 59e81b14879ddef87667dcf79d599dc7f413276b..bd67839d8b35f66f5a5a8110ebd8194dd1f8851b 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -62,7 +62,6 @@ class mrp_workcenter(osv.osv): 'costs_cycle': fields.float('Cost per cycle', help="Specify Cost of Work Center per cycle."), 'costs_cycle_account_id': fields.many2one('account.analytic.account', 'Cycle Account', domain=[('type','!=','view')], help="Fill this only if you want automatic analytic accounting entries on production orders."), - 'costs_journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal'), 'costs_general_account_id': fields.many2one('account.account', 'General Account', domain=[('deprecated', '=', False)]), 'resource_id': fields.many2one('resource.resource','Resource', ondelete='cascade', required=True), 'product_id': fields.many2one('product.product','Work Center Product', help="Fill this product to easily track your production costs in the analytic accounting."), @@ -320,9 +319,7 @@ class mrp_bom(osv.osv): 'name': bom_line_id.product_id.name, 'product_id': bom_line_id.product_id.id, 'product_qty': quantity, - 'product_uom': bom_line_id.product_uom.id, - 'product_uos_qty': bom_line_id.product_uos and _factor(bom_line_id.product_uos_qty * factor, bom_line_id.product_efficiency, bom_line_id.product_rounding) or False, - 'product_uos': bom_line_id.product_uos and bom_line_id.product_uos.id or False, + 'product_uom': bom_line_id.product_uom.id }) elif bom_id: all_prod = [bom.product_tmpl_id.id] + (previous_products or []) @@ -410,8 +407,6 @@ class mrp_bom_line(osv.osv): "it will be directly replaced by the raw materials of its own BoM, without triggering" "an extra manufacturing order."), 'product_id': fields.many2one('product.product', 'Product', required=True), - 'product_uos_qty': fields.float('Product UOS Qty'), - 'product_uos': fields.many2one('product.uom', 'Product UOS', help="Product UOS (Unit of Sale) is the unit of measurement for the invoicing and promotion of stock."), 'product_qty': fields.float('Product Quantity', required=True, digits_compute=dp.get_precision('Product Unit of Measure')), 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True, help="Unit of Measure (Unit of Measure) is the unit of measurement for the inventory control"), @@ -473,12 +468,7 @@ class mrp_bom_line(osv.osv): prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context) res['value'] = { 'product_uom': prod.uom_id.id, - 'product_uos_qty': 0, - 'product_uos': False } - if prod.uos_id.id: - res['value']['product_uos_qty'] = product_qty * prod.uos_coeff - res['value']['product_uos'] = prod.uos_id.id return res class mrp_production(osv.osv): @@ -572,8 +562,6 @@ class mrp_production(osv.osv): domain=[('type', 'in', ['product', 'consu'])]), 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True, readonly=True, states={'draft': [('readonly', False)]}), 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True, readonly=True, states={'draft': [('readonly', False)]}), - 'product_uos_qty': fields.float('Product UoS Quantity', readonly=True, states={'draft': [('readonly', False)]}), - 'product_uos': fields.many2one('product.uom', 'Product UoS', readonly=True, states={'draft': [('readonly', False)]}), 'progress': fields.function(_get_progress, type='float', string='Production progress'), @@ -698,8 +686,6 @@ class mrp_production(osv.osv): 'product_uom': False, 'bom_id': False, 'routing_id': False, - 'product_uos_qty': 0, - 'product_uos': False, 'product_tmpl_id': False }} bom_obj = self.pool.get('mrp.bom') @@ -710,10 +696,7 @@ class mrp_production(osv.osv): bom_point = bom_obj.browse(cr, uid, bom_id, context=context) routing_id = bom_point.routing_id.id or False product_uom_id = product.uom_id and product.uom_id.id or False - result['value'] = {'product_uos_qty': 0, 'product_uos': False, 'product_uom': product_uom_id, 'bom_id': bom_id, 'routing_id': routing_id, 'product_tmpl_id': product.product_tmpl_id} - if product.uos_id.id: - result['value']['product_uos_qty'] = product_qty * product.uos_coeff - result['value']['product_uos'] = product.uos_id.id + result['value'] = {'product_uom': product_uom_id, 'bom_id': bom_id, 'routing_id': routing_id, 'product_tmpl_id': product.product_tmpl_id} return result def bom_id_change(self, cr, uid, ids, bom_id, context=None): @@ -1065,7 +1048,7 @@ class mrp_production(osv.osv): analytic_line_obj = self.pool.get('account.analytic.line') for wc_line in production.workcenter_lines: wc = wc_line.workcenter_id - if wc.costs_journal_id and wc.costs_general_account_id: + if wc.costs_general_account_id: # Cost per hour value = wc_line.hour * wc.costs_hour account = wc.costs_hour_account_id.id @@ -1079,7 +1062,6 @@ class mrp_production(osv.osv): 'amount': value, 'account_id': account, 'general_account_id': wc.costs_general_account_id.id, - 'journal_id': wc.costs_journal_id.id, 'ref': wc.code, 'product_id': wc.product_id.id, 'unit_amount': wc_line.hour, @@ -1095,7 +1077,6 @@ class mrp_production(osv.osv): 'amount': value, 'account_id': account, 'general_account_id': wc.costs_general_account_id.id, - 'journal_id': wc.costs_journal_id.id, 'ref': wc.code, 'product_id': wc.product_id.id, 'unit_amount': wc_line.cycle, @@ -1138,8 +1119,6 @@ class mrp_production(osv.osv): 'product_id': production.product_id.id, 'product_uom': production.product_uom.id, 'product_uom_qty': production.product_qty, - 'product_uos_qty': production.product_uos and production.product_uos_qty or False, - 'product_uos': production.product_uos and production.product_uos.id or False, 'location_id': source_location_id, 'location_dest_id': destination_location_id, 'move_dest_id': production.move_prod_id.id, @@ -1214,7 +1193,7 @@ class mrp_production(osv.osv): }, context=context) return move - def _make_consume_line_from_data(self, cr, uid, production, product, uom_id, qty, uos_id, uos_qty, context=None): + def _make_consume_line_from_data(self, cr, uid, production, product, uom_id, qty, context=None): stock_move = self.pool.get('stock.move') loc_obj = self.pool.get('stock.location') # Internal shipment is created for Stockable and Consumer Products @@ -1235,8 +1214,6 @@ class mrp_production(osv.osv): 'product_id': product.id, 'product_uom_qty': qty, 'product_uom': uom_id, - 'product_uos_qty': uos_id and uos_qty or False, - 'product_uos': uos_id or False, 'location_id': source_location_id, 'location_dest_id': destination_location_id, 'company_id': production.company_id.id, @@ -1256,27 +1233,7 @@ class mrp_production(osv.osv): return move_id def _make_production_consume_line(self, cr, uid, line, context=None): - return self._make_consume_line_from_data(cr, uid, line.production_id, line.product_id, line.product_uom.id, line.product_qty, line.product_uos.id, line.product_uos_qty, context=context) - - - def _make_service_procurement(self, cr, uid, line, context=None): - prod_obj = self.pool.get('product.product') - if prod_obj.need_procurement(cr, uid, [line.product_id.id], context=context): - vals = { - 'name': line.production_id.name, - 'origin': line.production_id.name, - 'company_id': line.production_id.company_id.id, - 'date_planned': line.production_id.date_planned, - 'product_id': line.product_id.id, - 'product_qty': line.product_qty, - 'product_uom': line.product_uom.id, - 'product_uos_qty': line.product_uos_qty, - 'product_uos': line.product_uos.id, - } - proc_obj = self.pool.get("procurement.order") - proc = proc_obj.create(cr, uid, vals, context=context) - proc_obj.run(cr, uid, [proc], context=context) - + return self._make_consume_line_from_data(cr, uid, line.production_id, line.product_id, line.product_uom.id, line.product_qty, context=context) def action_confirm(self, cr, uid, ids, context=None): """ Confirms production order. @@ -1288,14 +1245,11 @@ class mrp_production(osv.osv): self.action_compute(cr, uid, uncompute_ids, context=context) for production in self.browse(cr, uid, ids, context=context): self._make_production_produce_line(cr, uid, production, context=context) - stock_moves = [] for line in production.product_lines: if line.product_id.type in ['product', 'consu']: stock_move_id = self._make_production_consume_line(cr, uid, line, context=context) stock_moves.append(stock_move_id) - else: - self._make_service_procurement(cr, uid, line, context=context) if stock_moves: self.pool.get('stock.move').action_confirm(cr, uid, stock_moves, context=context) production.write({'state': 'confirmed'}) @@ -1356,7 +1310,5 @@ class mrp_production_product_line(osv.osv): 'product_id': fields.many2one('product.product', 'Product', required=True), 'product_qty': fields.float('Product Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True), 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True), - 'product_uos_qty': fields.float('Product UOS Quantity'), - 'product_uos': fields.many2one('product.uom', 'Product UOS'), 'production_id': fields.many2one('mrp.production', 'Production Order', select=True), } diff --git a/addons/mrp/mrp_demo.xml b/addons/mrp/mrp_demo.xml index 70a7bc0788aa5f2531cf906ef16a1e81e1955ce7..e6e85b8e96a4d59f5b54ad887c30ead280dad48e 100644 --- a/addons/mrp/mrp_demo.xml +++ b/addons/mrp/mrp_demo.xml @@ -12,13 +12,11 @@ </record> <record id="account_assembly_hours" model="account.analytic.account"> - <field name="type">normal</field> <field name="code">ASML - HOUR</field> <field name="name">Costing Account For Hours of Assembly.</field> </record> <record id="account_assembly_cycle" model="account.analytic.account"> - <field name="type">normal</field> <field name="code">ASML - Cycle</field> <field name="name">Costing Account For Cycle of Assembly.</field> </record> @@ -49,7 +47,6 @@ <field name="costs_hour_account_id" ref="account_assembly_hours"/> <field name="costs_cycle">0.05</field> <field name="costs_cycle_account_id" ref="account_assembly_cycle"/> - <field name="costs_journal_id" ref="account.exp"/> <field name="calendar_id" ref="resource.timesheet_group1"/> </record> diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index 701ab72fdbec46546d9ec1b28833f21bc82441f5..7df55ded81ae775b3e3dde2f87a27378b5aac228 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -204,7 +204,6 @@ <field name="costs_hour_account_id" groups="analytic.group_analytic_accounting"/> <field name="costs_cycle"/> <field name="costs_cycle_account_id" groups="analytic.group_analytic_accounting"/> - <field name="costs_journal_id" attrs="{'required':['|',('costs_hour_account_id', '=', True),('costs_cycle_account_id', '=', True)]}" groups="analytic.group_analytic_accounting"/> <field name="costs_general_account_id" attrs="{ 'required':['|',('costs_cycle_account_id', '=', True),('costs_hour_account_id', '=', True)]}" groups="analytic.group_analytic_accounting"/> </group> </group> @@ -518,8 +517,6 @@ <field name="product_rounding"/> <field name="product_efficiency"/> <field name="product_uom" options="{'no_open':True,'no_create':True}" on_change="onchange_uom(product_id, product_uom)" groups="product.group_uom"/> - <field name="product_uos_qty" groups="product.group_uos"/> - <field name="product_uos" groups="product.group_uos"/> <field name="date_start"/> <field name="date_stop"/> <field name="routing_id"/> @@ -611,11 +608,6 @@ name="%(mrp.action_change_production_qty)d" string="Update" states="confirmed" class="oe_edit_only oe_link"/> </div> - <label for="product_uos_qty" groups="product.group_uos"/> - <div groups="product.group_uos" class="o_row"> - <field name="product_uos_qty"/> - <field name="product_uos"/> - </div> <field name="date_planned"/> </group> <group> @@ -941,8 +933,6 @@ <field name="product_id"/> <field name="product_qty"/> <field name="product_uom" options="{'no_open':True,'no_create':True}" groups="product.group_uom"/> - <field name="product_uos_qty" groups="product.group_uos"/> - <field name="product_uos" groups="product.group_uos"/> </group> </form> </field> @@ -955,8 +945,6 @@ <field name="product_id"/> <field name="product_qty"/> <field name="product_uom" options="{'no_open':True,'no_create':True}" groups="product.group_uom"/> - <field name="product_uos_qty" groups="product.group_uos"/> - <field name="product_uos" groups="product.group_uos"/> </tree> </field> </record> diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index dab85e89bc403f80d046605c0c425746037bca1f..2fe68135c54d29c2a2a87b5b9ab734a33badc58d 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -77,8 +77,6 @@ class procurement_order(osv.osv): 'product_id': procurement.product_id.id, 'product_qty': procurement.product_qty, 'product_uom': procurement.product_uom.id, - 'product_uos_qty': procurement.product_uos and procurement.product_uos_qty or False, - 'product_uos': procurement.product_uos and procurement.product_uos.id or False, 'location_src_id': procurement.location_id.id, 'location_dest_id': procurement.location_id.id, 'bom_id': bom_id, diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv index bb0b8c930297ca08d5e9f1c988b7518a9ef6dcbc..a270620491ac2059bbbe73dfa661152ae9eae835 100644 --- a/addons/mrp/security/ir.model.access.csv +++ b/addons/mrp/security/ir.model.access.csv @@ -21,7 +21,6 @@ access_stock_location_mrp_worker,stock.location mrp_worker,stock.model_stock_loc access_stock_move_mrp_worker,stock.move mrp_worker,stock.model_stock_move,mrp.group_mrp_user,1,1,1,0 access_stock_picking_mrp_worker,stock.picking mrp_worker,stock.model_stock_picking,mrp.group_mrp_user,1,1,1,1 access_stock_warehouse,stock.warehouse mrp_worker,stock.model_stock_warehouse,mrp.group_mrp_user,1,0,0,0 -access_account_analytic_journal_mrp_worker,account.analytic.journal mrp_worker,analytic.model_account_analytic_journal,mrp.group_mrp_user,1,0,0,0 access_account_account,account.account mrp_worker,account.model_account_account,mrp.group_mrp_user,1,0,0,0 access_hr_timesheet_group_mrp_worker,resource.calendar mrp_manager,resource.model_resource_calendar,mrp.group_mrp_manager,1,1,1,1 access_procurement_user,procurement.order.user,model_procurement_order,base.group_user,1,1,1,1 diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index bb6474fab3be6b3497c3710e6f7c146c53e44c62..135de155e86eb9a9ab63f34ef53599c10085add3 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -53,8 +53,6 @@ class StockMove(osv.osv): 'product_id': line['product_id'], 'product_uom': line['product_uom'], 'product_uom_qty': line['product_qty'], - 'product_uos': line['product_uos'], - 'product_uos_qty': line['product_uos_qty'], 'state': 'draft', #will be confirmed below 'name': line['name'], 'procurement_id': move.procurement_id.id, @@ -63,7 +61,7 @@ class StockMove(osv.osv): mid = move_obj.copy(cr, uid, move.id, default=valdef, context=context) to_explode_again_ids.append(mid) else: - if prod_obj.need_procurement(cr, uid, [product.id], context=context): + if prod_obj.type in ('consu','product'): valdef = { 'name': move.rule_id and move.rule_id.name or "/", 'origin': move.origin, @@ -72,8 +70,6 @@ class StockMove(osv.osv): 'product_id': line['product_id'], 'product_qty': line['product_qty'], 'product_uom': line['product_uom'], - 'product_uos_qty': line['product_uos_qty'], - 'product_uos': line['product_uos'], 'group_id': move.group_id.id, 'priority': move.priority, 'partner_dest_id': move.partner_id.id, diff --git a/addons/mrp/test/order_process.yml b/addons/mrp/test/order_process.yml index df6d3a8fd02d59db523ee2df458763728a40b2bd..c2537e1e6634174db63261c7a64a935593a0d9d0 100644 --- a/addons/mrp/test/order_process.yml +++ b/addons/mrp/test/order_process.yml @@ -42,9 +42,6 @@ assert move.product_id.id == order.product_id.id, "Product does not correspond." assert move.product_uom.id == order.product_uom.id, "UOM does not correspond." assert move.product_qty == order.product_qty, "Qty does not correspond." - assert move.product_uos_qty == order.product_uos and order.product_uos_qty or order.product_qty, "UOS qty does not correspond." - if order.product_uos: - assert move.product_uos.id == order.product_uos.id, "UOS does not correspond." assert move.location_id.id == source_location_id, "Source Location does not correspond." assert move.location_dest_id.id == order.location_dest_id.id, "Destination Location does not correspond." routing_loc = None @@ -59,9 +56,6 @@ assert move_line.date == date_planned, "Planned date does not correspond in 'To consume line'." assert move_line.product_qty == order_line.product_qty, "Qty does not correspond in 'To consume line'." assert move_line.product_uom.id == order_line.product_uom.id, "UOM does not correspond in 'To consume line'." - assert move_line.product_uos_qty == order_line.product_uos and order_line.product_uos_qty or order_line.product_qty, "UOS qty is not correspond in 'To consume line'." - if order_line.product_uos: - assert move_line.product_uos.id == order_line.product_uos.id, "UOS is not correspond in 'To consume line'." assert move_line.location_id.id == routing_loc or order.location_src_id.id, "Source location is not correspond in 'To consume line'." assert move_line.location_dest_id.id == source_location_id, "Destination Location is not correspond in 'To consume line'." - @@ -91,14 +85,11 @@ assert proc.product_qty == order_line.product_qty, "Qty does not correspond" assert proc.location_id.id == order.location_src_id.id, "Input location and procurement location do not correspond" assert proc.product_uom.id == order_line.product_uom.id, "UOM does not correspond in procurement." - assert proc.product_uos_qty == order_line.product_uos and order_line.product_uos_qty or order_line.product_qty, "UOS qty does not correspond in procurement." # procurement state should be `confirmed` at this stage, except if procurement_jit is installed, in which # case it could already be in `running` or `exception` state (not enough stock) expected_states = ('confirmed', 'running', 'exception') assert proc.state in expected_states, 'Procurement state is `%s` for %s, expected one of %s' % \ (proc.state, proc.product_id.name, expected_states) - if order_line.product_uos: - assert proc.product_uos.id == order_line.product_uos.id, "UOS is not correspond in procurement." - I change production qty with 3 PC Assemble SC349. - @@ -184,7 +175,7 @@ accounts = [wc.costs_hour_account_id, wc.costs_cycle_account_id] cost_per_cyle = wc_line.cycle * wc.costs_cycle cost_per_hours = wc_line.hour * wc.costs_hour - if accounts and wc.costs_journal_id and wc.costs_general_account_id and (cost_per_cyle or cost_per_hours): + if accounts and wc.costs_general_account_id and (cost_per_cyle or cost_per_hours): line_ids = account_analytic_line.search(cr, uid, [('name','ilike',wc_line.name)]) assert line_ids, 'Costs lines are not generated.' for line in account_analytic_line.browse(cr, uid, line_ids, context=context): @@ -197,6 +188,5 @@ else: raise AssertionError('unknown cost line: %s' % line) assert line.general_account_id.id == wc.costs_general_account_id.id, "General Account is not correspond." - assert line.journal_id.id == wc.costs_journal_id.id, "Account Journal is not correspond." assert line.product_id.id == wc.product_id.id, "Product does not correspond." assert line.product_uom_id.id == wc.product_id.uom_id.id, "UOM does not correspond." diff --git a/addons/mrp/wizard/stock_move.py b/addons/mrp/wizard/stock_move.py index 35880b39f29847662ded4d9849cf0c25e63c4310..d00d282a4a72989d3d68afdec61d35dfbb8ce761 100644 --- a/addons/mrp/wizard/stock_move.py +++ b/addons/mrp/wizard/stock_move.py @@ -60,7 +60,7 @@ class stock_move_consume(osv.osv_memory): #consumed more in wizard than previously planned extra_more_qty = qty - consumed_qty #create new line for a remaining qty of the product - extra_move_id = production_obj._make_consume_line_from_data(cr, uid, production, data.product_id, data.product_id.uom_id.id, extra_more_qty, False, 0, context=context) + extra_move_id = production_obj._make_consume_line_from_data(cr, uid, production, data.product_id, data.product_id.uom_id.id, extra_more_qty, context=context) move_obj.write(cr, uid, [extra_move_id], {'restrict_lot_id': data.restrict_lot_id.id}, context=context) move_obj.action_done(cr, uid, [extra_move_id], context=context) - return {'type': 'ir.actions.act_window_close'} \ No newline at end of file + return {'type': 'ir.actions.act_window_close'} diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index f66114c94d4951c434877218b29811630cf9de10..1f871a6a36612a557e9cab6d7474e885b51ecc7b 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -356,7 +356,7 @@ class mrp_repair(osv.osv): 'account_id': account_id, 'quantity': operation.product_uom_qty, 'invoice_line_tax_ids': [(6, 0, [x.id for x in operation.tax_id])], - 'uos_id': operation.product_uom.id, + 'uom_id': operation.product_uom.id, 'price_unit': operation.price_unit, 'price_subtotal': operation.product_uom_qty * operation.price_unit, 'product_id': operation.product_id and operation.product_id.id or False @@ -385,7 +385,7 @@ class mrp_repair(osv.osv): 'account_id': account_id, 'quantity': fee.product_uom_qty, 'invoice_line_tax_ids': [(6, 0, [x.id for x in fee.tax_id])], - 'uos_id': fee.product_uom.id, + 'uom_id': fee.product_uom.id, 'product_id': fee.product_id and fee.product_id.id or False, 'price_unit': fee.price_unit, 'price_subtotal': fee.product_uom_qty * fee.price_unit