Mayur Maheshwari(OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-908063-mma into
lp:openobject-addons.
Requested reviews:
Rucha (Open ERP) (rpa-openerp)
Related bugs:
Bug #908063 in OpenERP Addons: "purchase order containing service product not
creating invoice of service product "
https://bugs.launchpad.net/openobject-addons/+bug/908063
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-908063-mma/+merge/86902
Hello,
purchase: I Have added action_invoice_create method in purchase stock
file for create a invoice of service product when invoice control in Based on
receptions.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-908063-mma/+merge/86902
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-bug-908063-mma.
=== modified file 'purchase/stock.py'
--- purchase/stock.py 2011-12-19 16:54:40 +0000
+++ purchase/stock.py 2011-12-26 13:28:25 +0000
@@ -120,6 +120,79 @@
purchase_obj.write(cursor, user, [picking.purchase_id.id], {'invoice_ids': [(4, invoice_id)]})
return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
+ def action_invoice_create(self, cr, uid, ids, journal_id=False,
+ group=False, type='in_invoice', context=None):
+ if context is None:
+ context = {}
+ invoice_obj = self.pool.get('account.invoice')
+ picking_obj = self.pool.get('stock.picking')
+ invoice_line_obj = self.pool.get('account.invoice.line')
+ fiscal_position_obj = self.pool.get('account.fiscal.position')
+ order_line_obj = self.pool.get('purchase.order.line')
+
+ result = super(stock_picking, self).action_invoice_create(cr, uid,
+ ids, journal_id=journal_id, group=group, type=type,
+ context=context)
+ picking_ids = result.keys()
+ invoice_ids = result.values()
+ invoices = {}
+ for invoice in invoice_obj.browse(cr, uid, invoice_ids,
+ context=context):
+ invoices[invoice.id] = invoice
+
+ for picking in picking_obj.browse(cr, uid, picking_ids,
+ context=context):
+ if not picking.purchase_id or picking.backorder_id:
+ continue
+ purchase_lines = picking.purchase_id.order_line
+ invoice_created = invoices[result[picking.id]]
+
+ if picking.purchase_id.fiscal_position:
+ invoice_obj.write(cursor, user, [invoice_created.id], {'fiscal_position': picking.purchase_id.fiscal_position.id}, context=context)
+
+ for purchase_line in purchase_lines:
+ if purchase_line.product_id.type == 'service' and purchase_line.invoiced == False:
+ if not type:
+ type = context.get('inv_type', False)
+ if group:
+ name = picking.name + '-' + purchase_line.name
+ else:
+ name = purchase_line.name
+ if type in ('in_invoice', 'in_refund'):
+ account_id = purchase_line.product_id.product_tmpl_id.\
+ property_account_expense.id
+ if not account_id:
+ account_id = purchase_line.product_id.categ_id.\
+ property_account_expense_categ.id
+ else:
+ account_id = purchase_line.product_id.product_tmpl_id.\
+ property_account_income.id
+ if not account_id:
+ account_id = purchase_line.product_id.categ_id.\
+ property_account_income_categ.id
+
+ price_unit = purchase_line.price_unit
+ tax_id = purchase_line.taxes_id
+ tax_ids = map(lambda x: x.id, tax_id)
+
+ account_id = fiscal_position_obj.map_account(cr, uid, picking.purchase_id.partner_id.property_account_position, account_id)
+ invoice = invoices[result[picking.id]]
+ invoice_line_id = invoice_line_obj.create(cr, uid, {
+ 'name': name,
+ 'invoice_id': invoice.id,
+ 'uos_id': purchase_line.product_uom.id,
+ 'product_id': purchase_line.product_id.id,
+ 'account_id': account_id,
+ 'price_unit': price_unit,
+ 'quantity': purchase_line.product_qty,
+ 'invoice_line_tax_id': [(6, 0, tax_ids)],
+ 'notes':purchase_line.notes
+ }, context=context)
+ order_line_obj.write(cr, uid, [purchase_line.id], {'invoiced': True,
+ 'invoice_lines': [(6, 0, [invoice_line_id])],
+ })
+ return result
+
class stock_partial_picking(osv.osv_memory):
_inherit = 'stock.partial.picking'
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp