changes
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
{
|
||||
'name': 'Fusion Plating — Logistics',
|
||||
'version': '19.0.3.9.0',
|
||||
'version': '19.0.3.10.0',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': (
|
||||
'Pickup & delivery for plating shops: vehicle master, driver '
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -55,6 +55,17 @@
|
||||
invisible="state in ('delivered','cancelled')"/>
|
||||
<button name="action_reset_to_draft" string="Reset to Draft" type="object"
|
||||
invisible="state != 'cancelled'"/>
|
||||
<!-- Pulls delivery address / contact / scheduled
|
||||
date / source facility / carrier / CoC from
|
||||
the job → SO → receiving → cert chain. Only
|
||||
fills BLANK fields, never overwrites operator
|
||||
edits. Useful when upstream data changed or
|
||||
to backfill an old delivery. -->
|
||||
<button name="action_refresh_from_source"
|
||||
string="Refresh from Source"
|
||||
type="object" class="btn-secondary"
|
||||
icon="fa-refresh"
|
||||
invisible="state in ('delivered','cancelled')"/>
|
||||
<field name="state" widget="statusbar"
|
||||
statusbar_visible="draft,scheduled,en_route,delivered"/>
|
||||
</header>
|
||||
|
||||
Reference in New Issue
Block a user