In browsing through orm.py
I found this:
def name_create(self, cr, uid, name, context=None):
"""Creates a new record by calling :meth:`~.create` with only one
value provided: the name of the new record (``_rec_name`` field).
The new record will also be initialized with any default values applicable
to this model, or provided through the context.
The usual behavior of :meth:`~.create` applies.
Similarly, this method may raise an exception if the model has multiple
required fields and some do not have default values.
"""
So I tried supplying the already existing partner_id
in the context
dict as
OE.fnx_shipping.create(values, context={'default_partner_id':partner_id})
I consider the whole mess a bug in OpenERP, but at least there is a not-horrible work-a-round.