diff --git a/addons/mrp/test/mrp_phantom_bom.yml b/addons/mrp/test/mrp_phantom_bom.yml
index bd1a5cbdec0..97778408b05 100644
--- a/addons/mrp/test/mrp_phantom_bom.yml
+++ b/addons/mrp/test/mrp_phantom_bom.yml
@@ -256,7 +256,22 @@
-
!python {model: stock.partial.picking}: |
pick_obj = self.pool.get('stock.picking')
- picking_ids = pick_obj.search(cr, uid, [('type','=','in')])
- self.view_init(cr, uid, ['date'],context={'active_ids': picking_ids})
- self.do_partial(cr, uid, [1], context={'active_ids': picking_ids})
+ picking_ids = pick_obj.search(cr, uid, [('address_id.name','=','Tang'),('state','=','assigned')])
+ partial = self.browse(cr, uid, 1, context)
+ partial_datas = {
+ 'delivery_date': partial.date
+ }
+ for pick in pick_obj.browse(cr, uid, picking_ids):
+ for m in pick.move_lines:
+ partial_datas['move%s'%(m.id)] = {
+ 'product_id': m.product_id.id,
+ 'product_qty': m.product_qty,
+ 'product_uom': m.product_uom.id
+ }
+ if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
+ partial_datas['move%s'%(m.id)].update({
+ 'product_price': m.product_price,
+ 'product_currency': m.product_currency
+ })
+ pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
diff --git a/addons/mrp/test/mrp_procurement.yml b/addons/mrp/test/mrp_procurement.yml
index b86d49cca3a..cf9e5d9cb50 100644
--- a/addons/mrp/test/mrp_procurement.yml
+++ b/addons/mrp/test/mrp_procurement.yml
@@ -42,7 +42,7 @@
seller_ids:
- delay: 1
name: base.res_partner_maxtor
- qty: 300.0
+ min_qty: 300.0
standard_price: 1.0
supply_method: buy
type: product
@@ -68,7 +68,7 @@
seller_ids:
- delay: 1
name: base.res_partner_asus
- qty: 100.0
+ min_qty: 100.0
standard_price: 1.0
supply_method: buy
type: product
diff --git a/addons/stock_invoice_directly/__openerp__.py b/addons/stock_invoice_directly/__openerp__.py
index b59ba72c41a..4017fe81daa 100644
--- a/addons/stock_invoice_directly/__openerp__.py
+++ b/addons/stock_invoice_directly/__openerp__.py
@@ -34,6 +34,7 @@
'init_xml': [],
'update_xml': [],
'demo_xml': [],
+ 'test': ['test/stock_invoice_directly.yml'],
'installable': True,
'active': False,
'certificate': '0081385081261',
diff --git a/addons/stock_invoice_directly/test/stock_invoice_directly.yml b/addons/stock_invoice_directly/test/stock_invoice_directly.yml
new file mode 100644
index 00000000000..9fde059fe17
--- /dev/null
+++ b/addons/stock_invoice_directly/test/stock_invoice_directly.yml
@@ -0,0 +1,85 @@
+-
+ In order to test the stock_invoice_directly module. I will create an outgoing
+ picking order which creates an invoice from the picking order itself.
+-
+ I create an Outgoing Picking order.
+-
+ !record {model: stock.picking, id: stock_picking_out0}:
+ address_id: base.res_partner_address_3000
+ company_id: base.main_company
+ invoice_state: 2binvoiced
+ move_lines:
+ - company_id: base.main_company
+ date_expected: '2010-08-03 11:05:47'
+ date_planned: '2010-08-03 11:05:47'
+ location_id: stock.stock_location_stock
+ product_id: product.product_product_pc1
+ product_qty: 3.0
+ product_uom: product.product_uom_unit
+ location_dest_id: stock.stock_location_customers
+ name: '[PC1] Basic PC'
+ move_type: direct
+ name: OUT/00006
+ type: out
+-
+ I need to check the availability of the product so I make my picking order for processing later.
+-
+ !python {model: stock.picking}: |
+ self.draft_force_assign(cr, uid, [ref("stock_picking_out0")], {"lang": "en_US", "search_default_available":
+ 1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
+ "active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
+ })
+-
+ I check the product availability. Product is available in the stock and ready to be sent.
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("stock_picking_out0")], {"lang": "en_US", "search_default_available":
+ 1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
+ "active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
+ })
+-
+ I create a record for partial picking.
+-
+ !record {model: stock.partial.picking, id: stock_partial_picking_0}:
+ date: '2010-08-03 11:25:58'
+-
+ I make picking order Done.
+-
+ !python {model: stock.partial.picking}: |
+ pick_obj = self.pool.get('stock.picking')
+ partial = self.browse(cr, uid, ref('stock_partial_picking_0'), context)
+ partial_datas = {
+ 'delivery_date' : partial.date
+ }
+ for pick in pick_obj.browse(cr, uid, [ref('stock_picking_out0')]):
+ for m in pick.move_lines:
+ partial_datas['move%s'%(m.id)] = {
+ 'product_id' : m.product_id.id,
+ 'product_qty' : m.product_qty,
+ 'product_uom' : m.product_uom.id
+ }
+ pick_obj.do_partial(cr, uid, [ref('stock_picking_out0')], partial_datas, context=context)
+-
+ As the Invoice state of the picking order is To be invoiced. I create a record for create invoice.
+-
+ !record {model: stock.invoice.onshipping, id: stock_invoice_onshipping_0}:
+ invoice_date: '2010-08-04'
+ journal_id: account.bank_journal
+ type: out_invoice
+-
+ I create a Customer invoice for my outgoing picking order.
+-
+ !python {model: stock.invoice.onshipping}: |
+ self.create_invoice(cr, uid, [ref("stock_invoice_onshipping_0")], {"lang": "en_US",
+ "search_default_available": 1, "tz": False, "active_model": "stock.picking",
+ "contact_display": "partner", "active_ids": [ref("stock_picking_out0")], "active_id": ref("stock_picking_out0")})
+-
+ I check that the customer invoice is created successfully.
+-
+ !python {model: account.invoice}: |
+ picking_obj = self.pool.get('stock.picking')
+ picking = picking_obj.browse(cr, uid, [ref('stock_picking_out0')])
+ partner = picking[0].address_id.partner_id.id
+ inv_ids = self.search(cr, uid, [('type','=','out_invoice'),('partner_id','=',partner)])
+ assert inv_ids, 'No Invoice is generated!'
+
\ No newline at end of file
diff --git a/addons/stock_invoice_directly/wizard/stock_invoice.py b/addons/stock_invoice_directly/wizard/stock_invoice.py
index 2eaf0adb4a6..84a24ebb6fe 100644
--- a/addons/stock_invoice_directly/wizard/stock_invoice.py
+++ b/addons/stock_invoice_directly/wizard/stock_invoice.py
@@ -20,17 +20,24 @@
##############################################################################
from osv import fields, osv
-from tools.translate import _
class invoice_directly(osv.osv_memory):
_inherit = 'stock.partial.picking'
def do_partial(self, cr, uid, ids, context):
+ """ Makes partial moves and pickings done and
+ launches Create invoice wizard if invoice state is To be Invoiced.
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return:
+ """
result = super(invoice_directly, self).do_partial(cr, uid, ids, context)
pick_obj = self.pool.get('stock.picking')
picking_ids = context.get('active_ids', False)
pick = pick_obj.browse(cr, uid, picking_ids, context)[0]
- if pick.invoice_state=='2binvoiced':
+ if pick.invoice_state == '2binvoiced':
return {
'name': 'Create Invoice',
'view_type': 'form',
@@ -38,7 +45,7 @@ class invoice_directly(osv.osv_memory):
'res_model': 'stock.invoice.onshipping',
'type': 'ir.actions.act_window',
'target': 'new',
- }
+ }
return {}
invoice_directly()
diff --git a/addons/stock_location/stock_location_view.xml b/addons/stock_location/stock_location_view.xml
index bac4164289f..49c3a808e70 100644
--- a/addons/stock_location/stock_location_view.xml
+++ b/addons/stock_location/stock_location_view.xml
@@ -78,6 +78,15 @@