Box registry: new fp.box model (fusion_plating_receiving), one record per received box, auto-created when a receiving is marked Counted (idempotent _fp_sync_boxes — grows/shrinks with box_count_in, never touches an advanced box). Status received -> racked -> in_process -> packed -> shipped, per-box scannable QR (/fp/box/<id> controller). Backfill migration for receivings counted before tracking shipped. Boxes list/kanban/form + receiving smart button. Job stickers redesigned (thermal label, 6x4 in / 152x102mm, mm layout @ paperformat dpi=96 so mm maps 1:1 in wkhtmltopdf — see rule 14): - Internal Job Sticker = Layout A, ONE per job (shop notes from x_fc_internal_description, job QR). - External Job Sticker = Layout B, ONE per fp.box (BOX n/N, per-box QR, factory company logo, customer-facing notes). Dynamic MASK badge (x_fc_masking_enabled) + BAKE block (x_fc_bake_instructions), length-tiered notes font. Display logic in fp.job._fp_sticker_data(). Also retains the SO/WO box-sticker MemoryError fix in report_fp_wo_sticker.xml (per-box loop sourced from fp.receiving.box_count_in + 100-label safety cap). Verified live on entech: 111 boxes backfilled (31 receivings), External renders one page per box, Internal one per job, scan endpoint 303->login. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
#
|
|
# Phase 2 of the native plating job model migration. Models are added
|
|
# task-by-task in Tasks 2.2 onwards.
|
|
|
|
from . import fp_job_workflow_state # Sub 14 — must load before fp_job (FK target)
|
|
from . import fp_job
|
|
from . import fp_job_sticker
|
|
from . import fp_job_step
|
|
from . import fp_job_node_override
|
|
from . import fp_portal_job
|
|
from . import account_move
|
|
from . import sale_order
|
|
from . import sale_order_line
|
|
from . import res_users
|
|
|
|
# Phase 3 — parallel job/step links on dependent modules' models.
|
|
from . import fp_batch
|
|
from . import fp_quality_hold
|
|
from . import fp_certificate
|
|
from . import fp_thickness_reading
|
|
from . import fp_delivery
|
|
from . import fp_racking_inspection
|
|
from . import fp_receiving
|
|
|
|
# Phase 4 — light refactors batch B (notifications, KPI source tag).
|
|
from . import fp_notification_trigger
|
|
from . import fusion_plating_kpi_value
|
|
|
|
# Phase 5 — Job Margin report.
|
|
from . import report_fp_job_margin
|
|
|
|
# Phase 1 of MRP cut-out (Sub 11) — relocated from fusion_plating_bridge_mrp.
|
|
# (fp.qc.checklist.template lives in fusion_plating_quality; can't depend
|
|
# back on jobs without a cycle.)
|
|
from . import fp_job_consumption
|
|
|
|
# Multi-rack splitting at Racking (Phase 1) — jobs-side extension of
|
|
# fp.rack.load (core model in fusion_plating) + fp.job rollups.
|
|
from . import fp_job_rack
|
|
# fp.work.role, fp.operator.proficiency, fp_process_node inherit, and the
|
|
# hr.employee shop-roles inherit live in fusion_plating core so every
|
|
# downstream module (cgp, bridge_mrp residue, etc.) sees them without a
|
|
# transitive dep on jobs.
|