Product Lifecycle Management on XERPIUM 18

XERPIUMPLM

Engineering Change Orders, BOM Versioning, Approval Workflow — Built for Manufacturers

3 Modul Terintegrasi
7 Model PLM
4 ECO Stages
6 Dashboard KPI

Product Lifecycle Management Enterprise-Grade

XERPIUM PLM adalah ekosistem modul manajemen siklus produk yang dibangun di atas XERPIUM 18 — mencakup Engineering Change Orders (ECO), BOM Revision Control, Approval Workflow, Document Management, dan KPI Dashboard.

ECO
Engineering Change Order
BOM
Version Control
APR
Approval Workflow
📄
DOC
Document Management
📊
BI
KPI Dashboard
🏭
MRP
Manufacturing Sync
🔗
DYN
Dynamic Stage Engine
📦
MULTI
Company / Branch

ECO — Inti Product Lifecycle Management

xerpium.plm.eco adalah model utama yang mengelola seluruh siklus perubahan engineering — dari draft, review, approval, hingga apply.

ECO Stage Pipeline

Stage 1
Draft
state: confirmed
Stage 2
In Review
state: progress
Stage 3
Approved
state: progress
Stage 4
Applied
state: done

ECO Core Features

  • Auto-Sequence — Reference ECO/##### di-generate otomatis via ir.sequence
  • Description & Priority — Normal / High priority dengan tracking
  • Change Type — Apply on Bill of Materials atau Product Only
  • Effectivity — As soon as possible atau At Date (effective date)
  • Tags & Color — Kategorisasi ECO dengan colored tags
  • Kanban State — Normal / Approved / Blocked untuk visual tracking

ECO Type & Mail Alias

  • ECO Types — Kategori perubahan (e.g. "BOM Change", "Product Update")
  • Stage Mapping — Setiap type bisa memiliki set stages sendiri
  • Mail Alias — Email ke alias otomatis create ECO dengan type tersebut
  • Smart Counters — nb_ecos, nb_approvals, nb_approvals_my, nb_validation
  • Company-Scoped — Multi-company support per ECO type
🔄

BOM Revision & Apply

  • Start Revision — Copy BOM ke working copy, version +1, active=False
  • Previous BOM Link — Chain previous_bom_id untuk audit trail
  • Apply Changes — Activate new BOM, deactivate old, sync operation documents
  • Version Toggle — will_update_version flag — apply tanpa bump version
  • Product Versioning — Auto-increment product.template.version pada apply

Change Impact Analysis

  • Component Changes — Auto-diff add/remove/update dengan quantity & UoM delta
  • By-Product Changes — Tracking perubahan by-product pada BOM
  • Operation Changes — Routing/workcenter changes dengan time cycle delta
  • Color-Coded — Green=add, Red=remove, Blue=update di form view
  • Rebase Tracking — previous_change_ids & bom_rebase_ids untuk conflict
🏭

Manufacturing Integration

  • Create ECO from MO — One-click dari Manufacturing Order, auto-fill BOM & product
  • MO ↔ ECO Link — production_id pada ECO, eco_ids pada MO
  • BOM ↔ ECO Link — eco_ids & eco_count pada mrp.bom
  • Product ↔ ECO Link — eco_ids & action_view_ecos() pada product.template
  • Operation Documents — Sync dokumen ke new BOM operations saat apply

Rebase & Conflict Handling

  • Rebase State — state='rebase' ketika upstream BOM berubah selama ECO in progress
  • Conflict State — state='conflict' untuk manual resolution
  • Intermediate BOM — current_bom_id untuk tracking perubahan mid-ECO
  • Rebase Diff — bom_rebase_ids & previous_change_ids auto-compute
  • Audit Trail — Full changelog via mail.thread chatter

Role-Based Approval Engine

Setiap stage ECO dapat memiliki approval templates dengan tipe mandatory, optional, atau comment-only. Stage advance diblokir sampai semua mandatory approvals terpenuhi.

Default Approval Templates — In Review Stage

👨‍💼
Engineering Manager
MANDATORY
Sequence: 10
Quality Assurance
MANDATORY
Sequence: 20
📋
Production Planner
OPTIONAL
Sequence: 30

Approval Template

FieldDeskripsi
nameRole / nama approval (e.g. "Engineering Manager")
sequenceUrutan approval dalam stage
approval_typemandatory / optional / comment
user_idsUsers yang dapat approve (restricted to PLM User group)
stage_idStage dimana template ini berlaku

Approval Record

FieldDeskripsi
eco_idECO yang direquest approval
approval_template_idTemplate reference
statusnone / comment / approved / rejected
user_idSiapa yang approved/rejected
approval_dateTimestamp approval
is_closedApproval ditutup saat stage change

Approval Mechanism

  • Auto-Generate — _create_approvals() membuat approval records + mail activities
  • Stage Gating — Stage advance diblokir jika mandatory approvals belum complete
  • User Restriction — approve/reject hanya untuk users di template.user_ids
  • Stage Transition — Moving stage menutup processed approvals, menghapus pending
  • Mail Activities — Auto-create todo activities untuk approvers

Approval Types

  • Mandatory — Harus approve sebelum stage bisa di-advance. is_approved = (status == 'approved')
  • Optional — Boleh approve tapi tidak blocking. is_approved selalu True
  • Comment — Hanya komentar, tidak men-pengaruhi approval status
  • Constraint — User tidak boleh assign lebih dari sekali per stage

Approval & Stage Gating Flow

Create ECO
Auto-Generate Approvals
Mail Activities Sent
Approve / Reject
Stage Advance Blocked?
All Mandatory Approved
Stage Advanced
Apply Changes

Dynamic Stage Workflow

Framework stage configurable untuk ECO — dengan Python hooks, server actions, RBAC groups, dan approval template integration.

Workflow Pipeline

Stage Enter
Python Hook
Server Action
RBAC Check
State Sync

ECO Stages Configuration

StageStateConfirmBackApply
Draftconfirmed
In Reviewprogress
Approvedprogress
Applieddone

Dynamic Stage Features

  • Configurable per Model — Stage independen untuk xerpium.plm.eco
  • Python Hooks — enter_method dijalankan saat record masuk stage
  • Server Actions — ir.actions.server otomatis pada stage enter
  • RBAC Groups — group_ids membatasi siapa bisa move ke stage
  • Native State Sync — Auto-sync stage ↔ state field (confirmed/progress/done)
  • Back Navigation — allow_back untuk stage mundur (configurable)
  • Approval Templates — approval_template_ids pada stage (via xerpium_dynamic_stage_plm)
  • Default Stage — is_default auto-assign saat record baru

Module: xerpium_dynamic_stage_plm

Modul integrasi yang menambahkan approval_template_ids ke xerpium.dynamic.stage dan meng-sync ECO stage setelah action_new_revision() dan action_apply().

# xerpium_dynamic_stage_plm/models/xerpium_dynamic_stage.py class XerpiumDynamicStage(models.Model): _inherit = "xerpium.dynamic.stage" approval_template_ids = fields.One2many( "xerpium.plm.eco.approval.template", "stage_id", string="Approval Templates", ) # xerpium_dynamic_stage_plm/models/xerpium_plm_eco.py class XerpiumPlmEco(models.Model): _inherit = "xerpium.plm.eco" def action_new_revision(self): result = super().action_new_revision() self._x_sync_stage_from_state(force=True) return result

PLM Document System

xerpium.plm.document — sistem dokumen polimorfik yang dapat menempel pada ECO, BOM, Product, atau routing operation.

📎

File (PDF, Images)

  • Upload via ir.attachment
  • Mimetype auto-detect
  • Copy pada BOM revision
  • Cover image untuk ECO
🔗

External Link

  • Google Slides, external URL
  • widget="url" di form
  • action_open_link()
  • No file upload needed
📝

Text Note

  • Plain text content
  • Inline editing di form
  • Quick notes / instructions
  • No attachment required

Document Attachment Points

TargetFieldKeterangan
ECOres_model + res_idDokumen pendukung perubahan
BOMbom_idDokumen teknik BOM
Productproduct_tmpl_idSpec sheet, datasheet
Operationbom_operation_idSOP per routing operation
Both BOM & Productattached_on_mrpDokumen shared

Document Features

  • Polymorphic — res_model + res_id, attach ke model apapun
  • Kanban View — Card render berbeda per doc_type (file/link/text)
  • Operation Documents — bom_operation_id untuk SOP per operation
  • Sync on Apply — _sync_operation_documents() copy dokumen ke new BOM
  • Cover Image — displayed_image_id untuk ECO cover
  • Copy with Attachment — copy() duplicate ir.attachment untuk file-type
  • Multi-Company — company_id isolation

BOM & Product Versioning

Sistem versioning terintegrasi untuk BOM dan Product — setiap ECO apply dapat menaikkan versi secara otomatis.

BOM Revision Flow

Step 1
Start Revision
action_new_revision() — copy BOM ke working copy:
new_bom = bom.copy({
  version: bom.version + 1,
  active: False,
  previous_bom_id: bom.id
})
🔄
Step 2
Edit Working Copy
Edit new_bom (inactive). Auto-compute change diff:
ADD — komponen baru
REMOVE — komponen dihapus
UPDATE — qty / UoM berubah
Step 3
Apply Changes
action_apply() — activate new BOM, deactivate old:
new_bom.active = True
old_bom.active = False
product.version += 1 # if will_update_version
_sync_operation_documents(new_bom)

BOM Version Fields

FieldTipeDeskripsi
versionIntegerVersion number, auto-increment pada revision
previous_bom_idMany2oneLink ke BOM versi sebelumnya
is_revisionBooleanTrue jika BOM adalah working copy dari ECO
eco_idsOne2manyECO yang me-reference BOM ini
document_idsOne2manyDokumen teknik terkait

Product Version Fields

FieldTipeDeskripsi
versionIntegerProduct version, auto-increment pada ECO apply (change_type='product')
eco_idsOne2manyECO yang me-reference product ini
eco_countIntegerJumlah ECO terkait (computed)

Change Tracking — BOM Diff Computation

ECO otomatis mengkomputasi perbedaan antara BOM lama dan BOM baru menggunakan _get_difference_bom_lines():

ADD
Komponen baru ditambahkan ke BOM
REMOVE
Komponen dihapus dari BOM
UPDATE
Qty atau UoM berubah

PLM KPI Dashboard

xerpium_dashboard_plm — Dashboard KPI dengan 6 widget, dual data source (ORM + SQL), auto-refresh setiap 5 menit.

📊
6
Dashboard Items
2
Data Sources
📊
4
KPI Tiles
📊
2
Charts

Dashboard Items

WidgetTipeWarnaSource
Total ECOsKPI TileBlueORM
Pending ApprovalsKPI TileOrangeSQL
Active BOMsKPI TileGreenSQL
Versioned ProductsKPI TilePurpleSQL
ECOs by StagePie ChartBlueSQL
ECO Trend (12 months)Line ChartGreenSQL

Dashboard Features

  • Auto-Refresh — 300 detik (5 menit) refresh interval
  • Auto-Apply Filters — Filter otomatis saat dashboard dibuka
  • Dual Source — ORM source (ECOs, BOMs, Products) + SQL source (aggregates)
  • Green Theme — Tema warna hijau konsisten dengan PLM branding
  • Global Dashboard — visible ke semua PLM users
  • Built on Dashboard Studio — vit_dashboard_studio infrastructure

SQL Sources

ECOs by Stage
SELECT stage_id, COUNT(*)
FROM xerpium_plm_eco
WHERE active = true
GROUP BY stage_id
ECO Trend (12 months)
SELECT DATE_TRUNC('month', create_date),
  COUNT(*)
FROM xerpium_plm_eco
WHERE create_date >= NOW() - INTERVAL '12 months'
GROUP BY 1 ORDER BY 1

Integrasi Cross-Module

PLM terintegrasi penuh dengan ekosistem manufaktur XERPIUM.

🏭

PLM ↔ Manufacturing (MRP)

  • Create ECO from MO — One-click dari Manufacturing Order
  • MO ↔ ECO — production_id link, eco_ids pada MO
  • BOM Version Control — ECO apply activate new BOM version
  • Operation Sync — Dokumen SOP sync ke new BOM operations
  • Work Center Documents — mrp.routing.workcenter.document_ids
📦

PLM ↔ Product

  • Product Version — product.template.version auto-increment
  • ECO History — eco_ids & action_view_ecos() pada product form
  • ECO Notebook — Tab ECOs di product form
  • Document Attach — Spec sheet, datasheet per product
📊

PLM ↔ Dashboard Studio

  • KPI Dashboard — vit_dashboard_studio hosting
  • ORM + SQL Sources — Dual data source
  • Auto-Refresh — 5 minute interval
  • Chart Types — Tile, Pie, Line, dll
🔗

PLM ↔ Dynamic Stage

  • Configurable Stages — Data-driven, tidak hard-coded
  • Approval Templates — approval_template_ids pada stage
  • Python Hooks — enter_method per stage
  • RBAC Groups — group_ids per stage
  • State Sync — Auto-sync stage ↔ native state
📧

PLM ↔ Mail Thread

  • Chatter — Full audit trail per ECO
  • Mail Activities — Auto-generate todo untuk approvers
  • Mail Alias — Email ke alias auto-create ECO
  • CC Tracking — mail.thread.cc inheritance
🏢

PLM ↔ Multi-Company

  • Company Isolation — Record rule per company_id
  • Company on ECO — company_id field dengan default
  • Company on Document — Multi-company document isolation
  • Company on ECO Type — Per-company type configuration

Security & Access Control

Two-tier access control dengan multi-company isolation dan granular per-model permissions.

Security Groups

GroupImpliesHak Akses
PLM UserMRP UserR W C (no delete) pada ECO & Document
PLM ManagerPLM UserFull CRUD semua model PLM

Record Rules

  • Multi-Company ECO — company_id in user's company_ids
  • Multi-Company Document — company_id isolation untuk documents
  • User ECO Rule — R W C, no delete untuk PLM Users
  • Manager ECO Rule — Full CRUD untuk PLM Managers

Access Matrix per Model

ModelPLM UserPLM Manager
xerpium.plm.ecoR W CFull CRUD
xerpium.plm.eco.typeRead onlyFull CRUD
xerpium.plm.eco.approvalR WFull CRUD
xerpium.plm.eco.approval.templateRead onlyFull CRUD
xerpium.plm.eco.bom.changeRead onlyFull CRUD
xerpium.plm.eco.routing.changeRead onlyFull CRUD
xerpium.plm.eco.tagRead onlyFull CRUD
xerpium.plm.documentR W CFull CRUD
vit.dashboardRead onlyFull CRUD

Navigasi PLM

PLM (sequence: 170, icon: xerpium_plm) ├── Dashboard (seq: 5, vit.dashboard) ├── Changes (seq: 10, ECO action) │ └── ECO Kanban / List / Form ├── Master Data (seq: 20) │ ├── Products (product.template) │ ├── Bill of Materials (mrp.bom) │ └── Work Centers (mrp.workcenter) ├── Configuration (seq: 90, group_plm_manager) │ ├── ECO Types (xerpium.plm.eco.type) │ └── ECO Tags (xerpium.plm.eco.tag) └── Panduan Pengguna (seq: 999, HTML user guide)

ECO Kanban

Grouped by stage, drag-and-drop, priority widget, responsible avatar

ECO List

Code, name, product, BOM, responsible, tags, stage, state, effectivity date

ECO Form

Header buttons, stat buttons, notebooks for changes, approvals, documents

Model Arsitektur PLM

7 model PLM + 4 inherited model dengan integrasi penuh ke MRP ecosystem.

PLM Models

ModelDeskripsi
xerpium.plm.ecoEngineering Change Order — model utama
xerpium.plm.eco.typeECO Type dengan mail alias
xerpium.plm.eco.approvalApproval record per ECO
xerpium.plm.eco.approval.templateTemplate approval per stage
xerpium.plm.eco.bom.changeBOM line/byproduct change tracking
xerpium.plm.eco.routing.changeRouting/operation change tracking
xerpium.plm.eco.tagECO tag dengan color
xerpium.plm.documentPolymorphic document (file/link/text)

Inherited Models

ModelField Tambahan
product.templateversion, eco_ids, eco_count
product.producteco_ids, eco_count
mrp.bomversion, previous_bom_id, is_revision, eco_ids, document_ids
mrp.bom.line_get_sync_values() untuk diffing
mrp.bom.byproduct_get_sync_values() untuk diffing
mrp.routing.workcenterdocument_ids, document_count
mrp.productioneco_ids, eco_count, action_create_eco()
xerpium.dynamic.stageapproval_template_ids (via _plm module)

Module Dependencies

xerpium_plm
Application — Core PLM
xerpium_dynamic_stage_plm
Integration — Stage + Approval
xerpium_dashboard_plm
Reporting — KPI Dashboard

Mengapa XERPIUM PLM?

Aspek Competitor PLM XERPIUM PLM
Lisensi Per-user / add-on fee SaaS / On Premise
ECO Workflow Enterprise only ✓ Included
BOM Version Control Enterprise only ✓ Full versioning
Approval Workflow Limited / Enterprise ✓ Role-based, stage-gated
Dynamic Stage ✗ Hard-coded ✓ Configurable per model
Document Management Separate module ✓ Built-in (file/link/text)
Manufacturing Integration Limited ✓ One-click ECO from MO
Change Impact Analysis Manual ✓ Auto-diff BOM lines
KPI Dashboard ✗ Not available ✓ 6 widgets, auto-refresh
Mail Alias ✗ Not available ✓ Email-to-ECO
Multi-Company Enterprise only ✓ Included
Rebase & Conflict ✗ Not available ✓ State: rebase / conflict
User Guide External documentation ✓ Built-in HTML guide
Try nowKontak