Impacted versions:
8.0

Steps to reproduce:
1. Go to a runbot instance
2. Activate the following options
*\* Settings > Warehouse > Products > Manage different units of measure for products
*\* Settings > Accounting > Accounting & Finance > Analytic accouting
3. Desactivate the following option
*\* Settings > Accounting > Analytic accouting > Sale > Use multiple analytic accounts on sales
4. Create a Sale order
*\* Add 2 qty of the product iMac
*\* Add in quote the delivery method "Normal Delivery Charges" and set 2 qty
*\* Set an analytic account under Contract/Analytic
*\* Set the field Create Invoice to "On delivery Order"
5. Deliver only 1 quantity of the iMac and then create the invoice
6. Deliver the last quantity of the iMac and then create the invoice

Current behavior:
The first invoice contains 2 qty of the Transport
The second invoice contains 1 qty of the Transport, has no analytic account set, has no UOM set

Expected behavior:
The behavior should be consistent for both invoices
Option 1) On both invoices 2 qty of the transport with analytic, UOM, etc 
Option 2) On the first invoices 2 qty of the transport but no transport on the second invoices because its considered as already invoiced.

Video/Screenshot link (optional):

![out](https://cloud.githubusercontent.com/assets/8557179/16490774/61bc5e54-3edb-11e6-860c-8b6fc67fb261.gif)

addons/delivery/stock.py
"""
            Pass the carrier to the picking from the sales order
            (Should also work in case of Phantom BoMs when on explosion the original move is deleted)
        """
        procs_to_check = []
        for move in self.browse(cr, uid, ids, context=context):
            if move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.carrier_id:
                procs_to_check += [move.procurement_id]
        res = super(stock_move, self).action_confirm(cr, uid, ids, context=context)
        pick_obj = self.pool.get("stock.picking")
        for proc in procs_to_check:
            pickings = list(set([x.picking_id.id for x in proc.move_ids if x.picking_id and not x.picking_id.carrier_id]))
            if pickings:
                pick_obj.write(cr, uid, pickings, {'carrier_id': proc.sale_line_id.order_id.carrier_id.id}, context=context)
        return res
    def _get_default_uom(self, cr, uid, context=None):
        uom_categ_id = self.pool.get('ir.model.data').xmlid_to_res_id(cr, uid, 'product.product_uom_categ_kgm')
        return self.pool.get('product.uom').search(cr, uid, [('category_id', '=', uom_categ_id),('factor','=',1)])[0]
    _defaults = {
        'weight_uom_id': lambda self, cr, uid, c: self._get_default_uom(cr, uid, c),
    }