Hello Bruno,
if you have not quant record in table stock_quant for a product (in fact if you have no quantity), you will have no inventory line created, see the method get_inventory_lines and the request done in database on table stock_quant, which return nothing for the case of your client (this method should be override to add all products which are not in stock quant table;) )
@+
def _get_inventory_lines(self, cr, uid, inventory, context=None):
...........
cr.execute('''
SELECT product_id, sum(qty) as product_qty, location_id, lot_id as prod_lot_id, package_id, owner_id as partner_id
FROM stock_quant WHERE''' + domain + '''
GROUP BY product_id, location_id, lot_id, package_id, partner_id
''', args)
vals = []
for product_line in cr.dictfetchall():
#replace the None the dictionary by False, because falsy values are tested later on
for key, value in product_line.items():
if not value:
product_line[key] = False
product_line['inventory_id'] = inventory.id
product_line['theoretical_qty'] = product_line['product_qty']
if product_line['product_id']:
product = product_obj.browse(cr, uid, product_line['product_id'], context=context)
product_line['product_uom_id'] = product.uom_id.id
vals.append(product_line)
return vals