changes
This commit is contained in:
@@ -260,6 +260,48 @@ class FpDelivery(models.Model):
|
||||
def _fp_parent_counter_field(self):
|
||||
return 'x_fc_pn_delivery_count'
|
||||
|
||||
def action_refresh_from_source(self):
|
||||
"""Re-pull delivery address / contact / scheduled date / source
|
||||
facility / carrier / CoC from the linked job → SO → receiving →
|
||||
cert chain. Only fills BLANK fields — never overwrites operator
|
||||
edits. Use when an upstream value changed after the delivery
|
||||
was auto-created, or to backfill an old delivery that was
|
||||
created before the auto-populate hook existed.
|
||||
"""
|
||||
for rec in self:
|
||||
job = (rec.x_fc_job_id
|
||||
if 'x_fc_job_id' in rec._fields else False)
|
||||
if not job:
|
||||
# Fall back via job_ref Char if M2O is empty (older data)
|
||||
if rec.job_ref and 'fp.job' in self.env:
|
||||
job = self.env['fp.job'].sudo().search(
|
||||
[('name', '=', rec.job_ref)], limit=1,
|
||||
)
|
||||
if not job:
|
||||
raise UserError(_(
|
||||
'Delivery %s has no linked job — nothing to '
|
||||
'refresh from.'
|
||||
) % rec.name)
|
||||
Delivery = rec.env['fusion.plating.delivery']
|
||||
defaults = job._fp_resolve_delivery_defaults(Delivery)
|
||||
# Drop fields the operator already filled — never clobber
|
||||
# manual edits. Includes the partner/job links since those
|
||||
# are non-overridable.
|
||||
fill = {
|
||||
k: v for k, v in defaults.items()
|
||||
if v and not rec[k]
|
||||
}
|
||||
if not fill:
|
||||
rec.message_post(body=_(
|
||||
'Refresh from source: nothing to update — every '
|
||||
'field already populated.'
|
||||
))
|
||||
continue
|
||||
rec.sudo().write(fill)
|
||||
rec.message_post(body=_(
|
||||
'Refresh from source filled: %s'
|
||||
) % ', '.join(sorted(fill.keys())))
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
"""Parent-derived name (DLV-<parent>[-NN]) with legacy-sequence
|
||||
|
||||
Reference in New Issue
Block a user