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)

result = {}
        for line in self.pool.get('stock.move').browse(cr, uid, ids, context=context):
            result[line.picking_id.id] = True
        return result.keys()
    _columns = {
        'carrier_id':fields.many2one("delivery.carrier","Carrier"),
        'volume': fields.float('Volume', copy=False),
        'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
                  store={
                 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 40),
                 'stock.move': (_get_picking_line, ['state', 'picking_id', 'product_id','product_uom_qty','product_uom'], 40),
                 }),
        'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
                  store={
                 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 40),
                 'stock.move': (_get_picking_line, ['state', 'picking_id', 'product_id','product_uom_qty','product_uom'], 40),
                 }),
        'carrier_tracking_ref': fields.char('Carrier Tracking Ref', copy=False),
        'number_of_packages': fields.integer('Number of Packages', copy=False),
        'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
    }
    def _prepare_shipping_invoice_line(self, cr, uid, picking, invoice, context=None):