diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 4688b7525782467171b3e480321f93180ae9d3cb..5f523c24deccfe63e095ea41c9b8c3d2ef21f155 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1152,6 +1152,7 @@ class purchase_order_line(osv.osv): self.write(cr, uid, ids, {'state': 'confirmed'}, context=context) return True + class procurement_rule(osv.osv): _inherit = 'procurement.rule' diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py index 205513c90ac0055beeb95ce3f741506b338709ca..977326e7511af9b8fe2395e4edc934f7557262f2 100644 --- a/addons/purchase/stock.py +++ b/addons/purchase/stock.py @@ -139,6 +139,25 @@ class stock_picking(osv.osv): }), } + def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None): + purchase_obj = self.pool.get("purchase.order") + purchase_line_obj = self.pool.get('purchase.order.line') + invoice_line_obj = self.pool.get('account.invoice.line') + invoice_id = super(stock_picking, self)._create_invoice_from_picking(cr, uid, picking, vals, context=context) + if picking.move_lines and picking.move_lines[0].purchase_line_id: + purchase_id = picking.move_lines[0].purchase_line_id.order_id.id + purchase_line_ids = purchase_line_obj.search(cr, uid, [('order_id', '=', purchase_id), ('product_id.type', '=', 'service'), ('invoiced', '=', False)], context=context) + if purchase_line_ids: + inv_lines = [] + for po_line in purchase_line_obj.browse(cr, uid, purchase_line_ids, context=context): + acc_id = purchase_obj._choose_account_from_po_line(cr, uid, po_line, context=context) + inv_line_data = purchase_obj._prepare_inv_line(cr, uid, acc_id, po_line, context=context) + inv_line_id = invoice_line_obj.create(cr, uid, inv_line_data, context=context) + inv_lines.append(inv_line_id) + po_line.write({'invoice_lines': [(4, inv_line_id)]}) + invoice_line_obj.write(cr, uid, inv_lines, {'invoice_id': invoice_id}, context=context) + return invoice_id + class stock_warehouse(osv.osv): _inherit = 'stock.warehouse' diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 6400bf55c56f277a4d1b0e993164390ce4df6150..e50346eda2aa6bb37aab189b3acf731123cc1f7c 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -243,8 +243,9 @@ class sale_order(osv.osv): 'company_id': fields.many2one('res.company', 'Company'), 'section_id': fields.many2one('crm.case.section', 'Sales Team'), 'procurement_group_id': fields.many2one('procurement.group', 'Procurement group', copy=False), - + 'product_id': fields.related('order_line', 'product_id', type='many2one', relation='product.product', string='Product'), } + _defaults = { 'date_order': fields.datetime.now, 'order_policy': 'manual', diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index e4993b4cf1c47b072e5bf6b2ac8e33d65ddd30c4..c4b6af731634ea5d33c7dab12473a6b198694cb1 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -250,6 +250,7 @@ <field name="user_id"/> <field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/> <field name="project_id"/> + <field name="product_id"/> <filter string="My" domain="[('user_id','=',uid)]" name="my_sale_orders_filter"/> <separator/> <filter string="Quotations" name="draft" domain="[('state','in',('draft','sent'))]" help="Sales Order that haven't yet been confirmed"/> diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 8b7b8a2ebdd0a21213beceb54db09abf75a46a2d..2603867347408397f949e8c2b7f07472707848a6 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -938,7 +938,8 @@ class stock_picking(osv.osv): 'pack_operation_ids': [], 'backorder_id': picking.id, }) - self.message_post(cr, uid, picking.id, body=_("Back order <em>%s</em> <b>created</b>.") % (picking.name), context=context) + backorder = self.browse(cr, uid, backorder_id, context=context) + self.message_post(cr, uid, picking.id, body=_("Back order <em>%s</em> <b>created</b>.") % (backorder.name), context=context) move_obj = self.pool.get("stock.move") move_obj.write(cr, uid, backorder_move_ids, {'picking_id': backorder_id}, context=context) diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml index 5bada91afd24eb945c337303b5753a21a727183d..316acce0b7e8e6c82567ab8a377571e3cd40be9a 100644 --- a/addons/stock/stock_demo.xml +++ b/addons/stock/stock_demo.xml @@ -77,7 +77,7 @@ <field name="product_id" ref="product.product_product_6"/> <field name="product_uom_id" ref="product.product_uom_unit"/> <field name="inventory_id" ref="stock_inventory_0"/> - <field name="product_qty">10.0</field> + <field name="product_qty">500.0</field> <field name="location_id" ref="stock_location_components"/> </record> <record id="stock_inventory_line_4" model="stock.inventory.line">