[MERGE] Forward-port of latest 7.0 bugfixes, up to rev. 9728 rev-id: dle@openerp.com-20140102161149-x268xj7bzvvsit2h
bzr revid: dle@openerp.com-20140102164522-og7f932e50kzz7z6
This commit is contained in:
commit
4305522776
|
@ -1064,11 +1064,23 @@ class mail_thread(osv.AbstractModel):
|
|||
alternative = True
|
||||
if part.get_content_maintype() == 'multipart':
|
||||
continue # skip container
|
||||
filename = part.get_filename() # None if normal part
|
||||
# part.get_filename returns decoded value if able to decode, coded otherwise.
|
||||
# original get_filename is not able to decode iso-8859-1 (for instance).
|
||||
# therefore, iso encoded attachements are not able to be decoded properly with get_filename
|
||||
# code here partially copy the original get_filename method, but handle more encoding
|
||||
filename=part.get_param('filename', None, 'content-disposition')
|
||||
if not filename:
|
||||
filename=part.get_param('name', None)
|
||||
if filename:
|
||||
if isinstance(filename, tuple):
|
||||
# RFC2231
|
||||
filename=email.utils.collapse_rfc2231_value(filename).strip()
|
||||
else:
|
||||
filename=decode(filename)
|
||||
encoding = part.get_content_charset() # None if attachment
|
||||
# 1) Explicit Attachments -> attachments
|
||||
if filename or part.get('content-disposition', '').strip().startswith('attachment'):
|
||||
attachments.append((decode(filename) or 'attachment', part.get_payload(decode=True)))
|
||||
attachments.append((filename or 'attachment', part.get_payload(decode=True)))
|
||||
continue
|
||||
# 2) text/plain -> <pre/>
|
||||
if part.get_content_type() == 'text/plain' and (not alternative or not body):
|
||||
|
|
|
@ -124,10 +124,22 @@ class stock_picking(osv.osv):
|
|||
|
||||
def _invoice_hook(self, cursor, user, picking, invoice_id):
|
||||
sale_obj = self.pool.get('sale.order')
|
||||
order_line_obj = self.pool.get('sale.order.line')
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
if picking.sale_id:
|
||||
sale_obj.write(cursor, user, [picking.sale_id.id], {
|
||||
'invoice_ids': [(4, invoice_id)],
|
||||
})
|
||||
})
|
||||
for sale_line in picking.sale_id.order_line:
|
||||
if sale_line.product_id.type == 'service' and not sale_line.invoiced:
|
||||
vals = order_line_obj._prepare_order_line_invoice_line(cursor, user, sale_line, False)
|
||||
vals['invoice_id'] = invoice_id
|
||||
invoice_line_id = invoice_line_obj.create(cursor, user, vals)
|
||||
order_line_obj.write(cursor, user, [sale_line.id], {
|
||||
'invoice_lines': [(6, 0, [invoice_line_id])],
|
||||
})
|
||||
invoice_obj.button_compute(cursor, user, [invoice_id])
|
||||
return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
|
||||
|
||||
def action_done(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -3,6 +3,16 @@
|
|||
-
|
||||
!context
|
||||
uid: 'res_sale_stock_salesman'
|
||||
-
|
||||
Add SO line with service type product in SO to check flow which contain service type product in SO(BUG#1167330).
|
||||
-
|
||||
!record {model: sale.order.line, id: sale_order_1}:
|
||||
name: 'On Site Assistance'
|
||||
product_id: product.product_product_2
|
||||
product_uom_qty: 1.0
|
||||
product_uom: 1
|
||||
price_unit: 150.0
|
||||
order_id: sale.sale_order_6
|
||||
-
|
||||
First I check the total amount of the Quotation before Approved.
|
||||
-
|
||||
|
@ -75,7 +85,7 @@
|
|||
assert picking.partner_id.id == sale_order.partner_shipping_id.id,"Shipping Address is not correspond with sale order."
|
||||
assert picking.note == sale_order.note,"Note is not correspond with sale order."
|
||||
assert picking.invoice_state == (sale_order.order_policy=='picking' and '2binvoiced') or 'none',"Invoice policy is not correspond with sale order."
|
||||
assert len(picking.move_lines) == len(sale_order.order_line), "Total move of delivery order are not corresposning with total sale order lines."
|
||||
assert len(picking.move_lines) == len(sale_order.order_line) - 1, "Total move of delivery order are not corresposning with total sale order lines."
|
||||
location_id = sale_order.warehouse_id.lot_stock_id.id
|
||||
output_id = sale_order.warehouse_id.lot_output_id.id
|
||||
for move in picking.move_lines:
|
||||
|
|
Loading…
Reference in New Issue