🏠Overview
DRKDS Manufacturing Advanced extends the Manufacturing Pro module with enterprise-grade operational capabilities for PLM, quality, compliance, and advanced planning.
drkds_mfg_core
drkds_mfg_pro
drkds_mfg_advanced
🔄

PLM / ECO

Engineering Change Orders with per-type stage workflows, approval gates, and BOM change line tracking. Full audit trail from Draft to Closed.

🔧

Maintenance

Equipment register with preventive/corrective maintenance requests. Auto-computed next maintenance dates. Integration with downtime tracking.

⏱️

Downtime Tracking

Categorized downtime records (availability/performance/quality/external) linked to production orders and maintenance requests for OEE computation.

⚠️

NCR

Non-Conformance Reports with Kanban stage pipeline, defect codes, disposition workflow, and escalation to CAPA quality alerts in Pro module.

📏

Calibration

Instrument register with auto-computed validity status (valid/due_soon/overdue), NABL certificate storage, and calibration schedule management.

🔩

Tool & Die

Tool/die lifecycle tracking with shot/hours/cycles counters, visual progress bars, and automated retirement detection based on max life thresholds.

📅

MPS

Master Production Schedule with weekly/monthly time buckets. Demand entry, stock-on-hand tracking, auto-computed procurement requirements.

📦

Job Work

Subcontracting (Job Work) orders with send/return challans. Indian manufacturing compliance for external processing with full challan line items.

📦 Module Metadata
Module Namedrkds_mfg_advanced
Display NameDRKDS Manufacturing Advanced
Version1.0.0
LicenseLGPL-3
CategoryManufacturing
Dependsdrkds_mfg_pro
Databasemfg_test
Install Status✓ Installed — zero errors, zero warnings
Security Groupsgroup_mfg_plm_user · group_mfg_plm_approver · group_mfg_maintenance · group_mfg_advanced
🔄PLM / Engineering Change Orders
Manage product lifecycle changes through structured ECO workflows with configurable stage pipelines, approval gates, and BOM change tracking.
ℹ️
PLM / ECO is enabled via the Settings toggle group_mfg_adv_plm. Requires the PLM User or PLM Approver security group.

ECO Stage Workflow

Draft
ECO created, under edit
Under Review
Engineering review in progress
🔒
Approval
require_approval = True
Closed
is_closing = True, BOM updated
🔒
Stages with require_approval = True show an approval gate icon. Only users in group_mfg_plm_approver can advance the ECO past this stage. This enforces engineering sign-off discipline.
📋ECO Types — drkds.plm.eco.type

ECO Types define the stage workflow for different categories of engineering changes. Each type has its own ordered list of stages.

FieldTypeDescription
nameCharType name (e.g., "Design Change", "Material Substitution", "Process Change")
stage_idsMany2many → drkds.plm.eco.stageOrdered stages applicable to this ECO type
💡
Common ECO types: Design Change (full review + approval), Document Update (quick 2-stage), Emergency Change (expedited approval path).
🎯ECO Stages — drkds.plm.eco.stage
FieldTypeDescription
nameChar (required)Stage name displayed in Kanban and form
sequenceIntegerDisplay and progression order
foldBooleanFold in Kanban view when empty
require_approvalBooleanBlock progression until approver signs off
is_closingBooleanMark this as the final completed stage
📄ECO Record — drkds.plm.eco
FieldTypeDescription
nameChar (auto-sequence)ECO number: ECO/YYYY/XXXXX
titleChar (required)Human-readable change description
eco_type_idMany2one → eco.typeDetermines available stage workflow
product_tmpl_idMany2one → product.templateProduct being changed (uses template, not variant)
bom_idMany2one → mrp.bomSpecific BOM to be modified
stage_idMany2one → eco.stageCurrent workflow stage
prioritySelection: 0/1/2/3Normal / Urgent / Very Urgent / Critical
date_deadlineDateTarget implementation date
descriptionHtmlFull change description and justification
change_idsOne2many → eco.lineBOM change lines (add/modify/remove components)
⚠️
ECO uses product_tmpl_id (product template), not product_id. This is intentional — design changes apply to the template level, affecting all variants.
📝ECO Change Lines — drkds.plm.eco.line
FieldTypeDescription
eco_idMany2one → drkds.plm.ecoParent ECO record
product_idMany2one → product.productComponent being added, modified, or removed
new_qtyFloatNew quantity (0 = remove from BOM)
notesTextReason for change, part number cross-reference, etc.
🔧Maintenance Management
Equipment register with preventive and corrective maintenance request tracking, auto-computed schedules, and technician assignment.
🏭 Equipment States
● ActiveIn production use
● StandbyAvailable but not running
● MaintenanceUnder maintenance, unavailable
● RetiredDecommissioned
🔄 Request Workflow
Draft
Assigned
In Progress
↓ / ↘
Done
Cancelled
🏭Equipment Register — drkds.maintenance.equipment
FieldTypeDescription
nameChar (required)Equipment name/identifier
category_idMany2one → maintenance.categoryEquipment category for filtering
workcenter_idMany2one → mrp.workcenterAssociated work center in manufacturing
serial_noCharManufacturer serial number
modelCharEquipment model designation
manufacturerCharOEM / manufacturer name
install_dateDateDate installed in facility
last_maintenanceDateDate of last completed maintenance
stateSelectionactive / standby / maintenance / retired
preventive_interval_daysIntegerDays between scheduled PM jobs
next_maintenanceDate (computed)last_maintenance + preventive_interval_days
🗒️Maintenance Requests — drkds.maintenance.request
FieldTypeDescription
nameChar (required)Request title/description
equipment_idMany2one → maintenance.equipmentEquipment requiring maintenance
maintenance_typeSelectionpreventive / corrective
technician_idMany2one → hr.employeeAssigned maintenance technician
date_requestDatetimeWhen request was raised
date_scheduledDatetimePlanned start of maintenance work
duration_hrsFloat (computed)Elapsed hours from request to done
descriptionTextProblem description / work instructions
stateSelectiondraft / assigned / in_progress / done / cancelled
⏱️Downtime Tracking
Record and categorize production downtime events by loss type. Feeds directly into OEE calculations in the Pro module.
📊 Loss Types (OEE Integration)
AvailabilityEquipment breakdown, maintenance, setup
PerformanceSpeed loss, minor stoppages
QualityDefect rework, startup rejects
ExternalPower cut, material shortage, external factors
🔗 Downtime Linkages
  • Links to production_id (mrp.production)
  • Links to workcenter_id (mrp.workcenter)
  • Links to reason_idcategory_id
  • Optional link to maintenance_request_id
  • Duration auto-computed from start/end time
⏱️Downtime Record — drkds.downtime
FieldTypeDescription
nameChar (required)Downtime event reference
production_idMany2one → mrp.productionAffected manufacturing order
workcenter_idMany2one → mrp.workcenterWork center where stoppage occurred
reason_idMany2one → downtime.reasonSpecific reason (linked to category)
start_timeDatetimeDowntime start timestamp
end_timeDatetimeDowntime end timestamp
duration_hoursFloat (computed)(end_time - start_time) in hours
maintenance_request_idMany2one → maintenance.requestLinked maintenance job (optional)
notesTextAdditional observations
stateSelectiondraft / confirmed
⚠️Non-Conformance Reports (NCR)
Structured NCR pipeline with defect classification, disposition decisions, and automatic escalation to CAPA quality alerts in the Pro module.

NCR → CAPA Escalation Flow

NCR Pipeline
Open
Defect detected, NCR raised. QC logs defect_code, qty_defective, production_id.
Investigation
Root cause analysis. Disposition decided: rework / scrap / use_as_is / return.
CAPA Link
If systemic → escalate: capa_alert_id links to quality.alert in Pro module.
Closed
is_closing stage reached. date_closed stamped automatically.
Disposition Options
reworkSend back for rework/repair
scrapDestroy and report scrap loss
use_as_isConcession — use despite non-conformance
returnReturn to supplier (incoming inspection failure)
💡
NCR sequence: NCR/YYYY/XXXXX. CAPA link via capa_alert_id M2O to quality.alert from drkds_mfg_pro module.
📄NCR Record — drkds.ncr
FieldTypeDescription
nameChar (auto-seq)NCR/YYYY/XXXXX
stage_idMany2one → ncr.stageCurrent Kanban stage
ncr_type_idMany2one → ncr.typeType: incoming / in-process / final / customer complaint
source_idMany2one → ncr.sourceDetection source
defect_code_idMany2one → defect.codeStandardized defect classification
production_idMany2one → mrp.productionAffected MO
product_idMany2one → product.productNon-conforming product
qty_defectiveFloatNumber of defective units
descriptionTextDefect description and observations
dispositionSelectionrework / scrap / use_as_is / return
capa_alert_idMany2one → quality.alertLinked CAPA in Pro module
date_detectedDatetimeWhen defect was found
date_closedDatetimeAuto-stamped when reaching closing stage
📏Calibration Management
Maintain an instrument register with automatic validity status computation, calibration schedule tracking, and NABL certificate storage.
🟢 Calibration Status Logic
● Validnext_calibration > today + 30 days
● Due Soonnext_calibration within 30 days
● Overduenext_calibration < today
● Out of ServiceManually set, instrument unavailable
📐 Key Computed Fields

next_calibration (computed):

next_calibration = 
  last_calibration + 
  timedelta(days=interval_days)

Status is also computed and store=True to enable search/filter in list view.

📏Calibration Instrument — drkds.calibration
FieldTypeDescription
instrument_nameChar (required)Instrument name (e.g., "Mitutoyo Vernier Caliper 300mm")
instrument_codeCharAsset tag / instrument ID code
serial_noCharManufacturer serial number
manufacturerCharOEM name
station_idMany2one → mrp.workcenterInspection station where instrument is deployed
last_calibrationDateDate of last calibration
interval_daysIntegerCalibration validity period in days
next_calibrationDate (computed, store=True)last_calibration + interval_days
calibrated_byCharCalibrating lab / agency name
accuracyCharAccuracy specification (e.g., "±0.02mm")
statusSelection (computed, store=True)valid / due_soon / overdue / out_of_service
certificateBinaryCalibration certificate PDF attachment
⚠️
Both next_calibration and status must be store=True since they are used in search view domains and list view grouping. Computed fields used in domains MUST be stored.
🔩Tool & Die Tracking
Track tool and die lifecycle using shot/hours/cycles counters with visual progress bars. Automated status computation for proactive tool management.

Live Tool Life Progress

T-001 — Injection Die (Motor Housing) ● OK

Type: shotsMax: 50,000Used: 12,500Remaining: 37,500
25% used — well within service life

T-002 — Press Tool (Bracket) ● Warning

Type: cyclesMax: 100,000Used: 75,000Remaining: 25,000
75% used — schedule maintenance within next 5,000 cycles

T-003 — Drill Jig (PCB Holes) ● Critical

Type: hoursMax: 500Used: 460Remaining: 40
92% used — immediate replacement required

T-004 — Stamping Die (Enclosure) ● Retired

Type: shotsMax: 80,000Used: 80,000Remaining: 0
100% — retired, replacement ordered
📊 Status Thresholds
StatusConditionColorAction
OKpct_used < 70%GreenNormal operation
Warning70% ≤ pct_used < 90%OrangePlan maintenance/replacement
Critical90% ≤ pct_used < 100%RedImmediate action required
Retiredis_retired = TrueGreyDecommissioned
🔩Tool/Die Record — drkds.tool.die
FieldTypeDescription
nameChar (required)Tool identifier / name
tool_type_idMany2one → tool.typeDefines unit_of_life (shots/hours/cycles/days)
workcenter_idMany2one → mrp.workcenterAssigned work center
station_idMany2one → mrp.workcenterSpecific station within work center
max_lifeFloat (required)Maximum service life in unit_of_life units
current_countFloatCurrent accumulated count
remainingFloat (computed)max_life - current_count
pct_usedFloat (computed)(current_count / max_life) × 100
is_retiredBooleanManual retirement flag
statusSelection (computed)ok / warning / critical / retired
📅Master Production Schedule (MPS)
Time-bucketed production planning with demand entry, safety stock management, and automatic procurement quantity computation.

MPS Planning Grid — March 2026 (Weekly)

Product / Metric Wk 1
Mar 2–8
Wk 2
Mar 9–15
Wk 3
Mar 16–22
Wk 4
Mar 23–29
Motor Driver MDU-300 | Safety Stock: 10 | Lead Time: 3 days
Demand Qty 30 40 50 35
Supply Qty 0 25 38 0
Stock on Hand 45 30 18 23
To Procure 0 25 38 22
PCB Sub-Assembly SA-200 | Safety Stock: 5 | Lead Time: 5 days
Demand Qty 20 20 30 20
Stock on Hand 12 7 5 10
To Procure 13 18 28 15
🧮 To Procure Formula
to_procure = max(0, demand_qty - stock_on_hand + safety_stock)

For Wk 3 Motor Driver: max(0, 50 - 18 + 10) = 42. After subtracting pending supply of 4 units, net = 38.

📅MPS Models Reference

drkds.mps (Header)

FieldTypeDescription
date_fromDatePlan start date
date_toDatePlan end date
period_typeSelectionweekly / monthly
stateSelectiondraft / confirmed
notesTextPlanner notes
line_idsOne2many → mps.lineProduct planning lines

drkds.mps.bucket (Time Buckets)

FieldTypeDescription
line_idMany2one → mps.lineParent product line
date_from / date_toDateBucket time period
demand_qtyFloatForecasted/confirmed demand
supply_qtyFloatPlanned/confirmed supply (in-progress MOs)
stock_on_handFloatCurrent inventory snapshot
to_procureFloat (computed)Net requirement = demand - stock + safety
📦Job Work (Subcontracting)
Manage external subcontracting (Job Work) orders with send/return challans. Indian manufacturing compliance for job work under GST challan rules.
Draft
JW order created
Sent
Send challan issued
In Progress
At vendor's facility
Received
Return challan matched
Closed
Reconciled, closed
📦Job Work Order — drkds.job.work.order
FieldTypeDescription
nameChar (auto-seq)JW order number
partner_idMany2one → res.partnerJob work vendor / subcontractor
product_idMany2one → product.productProduct to be processed
qtyFloatQuantity sent for job work
date_outDateDate goods dispatched
date_expected_returnDateExpected return date
stateSelectiondraft / sent / in_progress / received / closed
challan_idsOne2many → job.work.challanSend and return challans
📋Job Work Challan — drkds.job.work.challan
FieldTypeDescription
nameChar (auto-seq)JWC/YYYY/XXXXX
job_work_idMany2one → job.work.orderParent JW order
challan_typeSelectionsend / return
challan_dateDateChallan issue date
line_idsOne2many → challan.lineMaterial line items
📌
Challan sequence: JWC/YYYY/XXXXX. Each challan has line items (product + quantity + UoM). GST Rule 45 requires challan for all goods sent to job worker. Challans serve as the movement document.
🗄️Data Models Reference
Complete list of all models defined in drkds_mfg_advanced with their purpose and key relationships.
ModelPurposeSequence / Key
drkds.plm.eco.typeECO type with stage workflow
drkds.plm.eco.stageECO pipeline stagesequence ordered
drkds.plm.ecoEngineering Change OrderECO/YYYY/
drkds.plm.eco.lineBOM change line item
drkds.maintenance.categoryEquipment category
drkds.maintenance.equipmentEquipment register
drkds.maintenance.requestMaintenance work request
drkds.downtime.categoryDowntime loss category
drkds.downtime.reasonDowntime reason code
drkds.downtimeDowntime event record
drkds.ncr.stageNCR pipeline stagesequence ordered
drkds.ncr.typeNCR classification type
drkds.ncr.sourceNCR detection source
drkds.defect.codeDefect code library
drkds.ncrNon-Conformance ReportNCR/YYYY/
drkds.calibrationInstrument calibration register
drkds.tool.typeTool type (unit of life)
drkds.tool.dieTool/die lifecycle record
drkds.mpsMPS plan header
drkds.mps.lineMPS product line
drkds.mps.bucketMPS time bucket
drkds.job.work.orderJob work order
drkds.job.work.challanJob work challan (send/return)JWC/YYYY/
drkds.job.work.challan.lineChallan line item
💡
Odoo 19 key patterns applied in this module: product_tmpl_id for PLM (not product_id), @api.constrains instead of _sql_constraints, planning menu parent is drkds_mfg_pro.menu_mfg_planning, groups use drkds_mfg_core.privilege_drkds_mfg.
⚙️Settings & Feature Toggles
All Advanced module features can be enabled independently via Manufacturing Settings. Each toggle adds the corresponding group to users who enable it.
📌
Settings fields use the group_ prefix so Odoo's implied_group= processing works correctly. Fields without the group_ prefix are silently ignored by the settings framework.

Enable PLM / ECO

group_mfg_adv_plm — Shows ECO menu, enables ECO creation and stage workflows

Enable Maintenance

group_mfg_adv_maintenance — Equipment register, maintenance requests, categories

Enable Downtime Tracking

group_mfg_adv_downtime — Downtime event logging and OEE loss categorization

Enable NCR

group_mfg_adv_ncr — Non-Conformance Reports, defect codes, CAPA escalation

Enable Calibration

group_mfg_adv_calibration — Instrument register, calibration schedule, status tracking

Enable Tool & Die Tracking

group_mfg_adv_tools — Tool/die lifecycle, shot counters, status visualization

Enable MPS

group_mfg_adv_mps — Master Production Schedule, time buckets, procurement planning

Enable Job Work

group_mfg_adv_job_work — Job work orders, send/return challans, subcontracting

📋 Menu Structure
Manufacturing (top-level)
├── PLM
│   ├── ECOs
│   ├── ECO Types
│   └── ECO Stages
├── Maintenance
│   ├── Equipment
│   ├── Requests
│   └── Categories
├── Quality (extended from Pro)
│   ├── NCR
│   └── Defect Codes
├── Calibration
│   └── Instruments
├── Tool & Die
│   ├── Tools
│   └── Tool Types
├── MPS
│   └── Plans
├── Job Work
│   ├── Orders
│   └── Challans
└── Configuration
    └── Settings
🔐Security & Access Rights
Four security groups control access to Advanced module features. All groups use the Manufacturing privilege from drkds_mfg_core.
👤 PLM User
group_mfg_plm_user

Can create and edit ECOs, add change lines, move ECOs through non-approval stages. Cannot approve ECOs at approval-gated stages.

✅ PLM Approver
group_mfg_plm_approver

Extends PLM User. Can sign off ECOs at require_approval = True stages. Typically: Engineering Manager or Quality Manager.

🔧 Maintenance
group_mfg_maintenance

Access to equipment register, maintenance requests, calibration instruments, downtime records, tool/die tracking.

⭐ Advanced Manager
group_mfg_advanced

Full access to all Advanced features including MPS plans, job work orders, configuration, and all sub-modules.

Access Matrix (Key Models)

Model PLM User PLM Approver Maintenance Advanced Mgr
drkds.plm.ecoR/W/CR/W/C/DRR/W/C/D
drkds.plm.eco.typeRR/W/CR/W/C/D
drkds.maintenance.equipmentRRR/W/CR/W/C/D
drkds.maintenance.requestRRR/W/C/DR/W/C/D
drkds.ncrRR/W/CRR/W/C/D
drkds.calibrationRRR/W/C/DR/W/C/D
drkds.tool.dieR/W/CR/W/C/D
drkds.mpsRR/W/C/D
drkds.job.work.orderRR/W/C/D
⚠️
Security groups in this module use drkds_mfg_core.privilege_drkds_mfg as their privilege. Feature groups do NOT use category_id in Odoo 19 (removed — use privilege_id instead).
📋Scenario 1: New Product ECO Workflow
Engineering creates a Design Change ECO for Motor Driver MDU-300, gets it through approval, and closes it with BOM updated.
1
ECO: Replace IGBT Module in Motor Driver MDU-300
Design Change ECO through full approval workflow
  • 1
    Engineer Navigate to Manufacturing → PLM → ECO Types. Create type "Design Change" with stages: Draft → Under Review → Approval (require_approval=True) → Closed (is_closing=True).
  • 2
    Engineer Go to PLM → ECOs → New. Set Title: "Replace IGBT to 600V rated module", Type: "Design Change", Product: Motor Driver MDU-300 (template), BOM: MDU-300 BOM Rev.4, Priority: Urgent, Deadline: 2026-03-15.
  • 3
    Engineer In the Change Lines tab, add line 1: Product = IGBT 400V (old), new_qty = 0, notes = "Remove old 400V IGBT". Add line 2: Product = IGBT 600V (new), new_qty = 4, notes = "Replace with 600V rated — thermal load specification update".
  • 4
    Engineer Move ECO to stage "Under Review". Team discusses in chatter. Engineering supervisor reviews change lines and cost impact.
  • 5
    Approver ECO moved to "Approval" stage (locked for non-approvers). Engineering Manager with group_mfg_plm_approver reviews and approves. Logs approval note in chatter.
  • 6
    Engineer Move ECO to "Closed" stage (is_closing=True). Update BOM manually with change lines. ECO record preserved for audit trail. New BOM revision created as Rev.5.
Result: ECO/2026/00001 closed. BOM MDU-300 Rev.5 has IGBT 600V × 4. Old 400V IGBT removed. Full audit trail with approval stamp.
🔍Scenario 2: NCR → CAPA Escalation
QC detects soldering defects on PCBs during final inspection. NCR raised, disposition decided, escalated to CAPA quality alert.
2
NCR: Solder Bridge Defect on PCB SA-200 Batch
4 defective PCBs → CAPA escalation → Root cause investigation
  • 1
    QC Inspector During final inspection of MO/2026/0023 (batch of 50 PCBs), finds 4 units with solder bridges on IC1 pad. Navigate to Quality → NCR → New.
  • 2
    QC Inspector Fill NCR: Stage=Open, Type=In-Process, Source=Final Inspection, Defect Code="Solder Bridge", Production=MO/2026/0023, Product=PCB SA-200, qty_defective=4. date_detected=auto. Save → NCR/2026/00001 generated.
  • 3
    QC Inspector Move NCR to "Investigation" stage. Team notes: stencil alignment issue on SMT line. Disposition decision: rework — all 4 units sent back to SMT operator for touch-up.
  • 4
    QC Manager Defect is recurring (3rd time this month). Escalate to CAPA: click Create CAPA Alert. System creates quality.alert in Pro module. NCR field capa_alert_id linked. Root cause: stencil worn out — replace.
  • 5
    QC Manager After rework verified and stencil replaced, close NCR. Stage → Closed (is_closing=True). date_closed auto-stamped. CAPA tracks corrective action completion.
📐Scenario 3: Calibration Due Alert
Calibration register shows overdue gauge. Maintenance team handles lab calibration and updates the record.
3
Mitutoyo Vernier Caliper — Overdue Calibration
Status: overdue → send to NABL lab → update record → status: valid
  • 1
    Maintenance Open Calibration → Instruments. Filter by Status=Overdue. Finds "Mitutoyo Vernier 300mm" (CAL-012): last_calibration=2025-11-01, interval=90 days, next_calibration=2026-01-30. Status=Overdue.
  • 2
    Maintenance Mark instrument as "Out of Service" temporarily. Quarantine the instrument — do not use for inspection until recalibrated. Notify QC team via chatter.
  • 3
    Maintenance Send instrument to NABL-accredited calibration lab (e.g., ETDC Bangalore). Create maintenance request linking equipment. Expected return: 5 working days.
  • 4
    Maintenance Instrument returned with calibration certificate. Update record: last_calibration=2026-02-23, calibrated_by="ETDC Bangalore", accuracy="±0.02mm". Attach certificate PDF to certificate binary field.
  • 5
    Maintenance Save record. System auto-computes: next_calibration = 2026-02-23 + 90 = 2026-05-24. Status recomputed → Valid. Instrument returned to QC station for use.
📊Scenario 4: MPS → Manufacturing Order Generation
Production planner enters March demand in MPS, system computes procurement requirements, and confirms plan to generate MOs.
4
MPS March 2026 — Motor Driver MDU-300
Weekly MPS → to_procure=38 → MO generation
  • 1
    Planner Navigate to MPS → Plans → New. Set date_from=2026-03-02, date_to=2026-03-29, period_type=weekly. Add product line: Motor Driver MDU-300, safety_stock=10, lead_time_days=3.
  • 2
    Planner System auto-generates 4 weekly buckets (Wk1 to Wk4). Planner enters demand_qty for each bucket: Wk1=30, Wk2=40, Wk3=50, Wk4=35 based on confirmed customer orders.
  • 3
    Planner System reads stock_on_hand from inventory snapshot: Wk3 SOH=18. to_procure computed: max(0, 50 - 18 + 10) = 42. Adjust for pending MO supply of 4 → net = 38 units.
  • 4
    Planner Click Confirm Plan. State → confirmed. Planner manually creates MO for 38 units of MDU-300 referencing MPS Wk3. Scheduled start: 2026-03-13 (considering 3-day lead time).
  • 5
    Planner Update supply_qty in Wk3 bucket to 38. Subsequent weeks recalculate SOH projections forward. MPS serves as rolling 4-week production horizon for capacity and material planning.
🚚Scenario 5: Job Work Challan Cycle
10 PCB sub-assemblies sent to external PCBA vendor for wave soldering. Send challan issued, work done, return challan matched, JWO closed.
5
JWO: PCB SA-200 Wave Soldering at XYZ PCBA Vendors
Send 10 boards → challan JWC/2026/00001 → return 10 boards → JWO closed
  • 1
    Store Navigate to Job Work → Orders → New. Set: Partner = XYZ PCBA Vendors, Product = PCB SA-200, qty = 10, date_out = 2026-02-23, date_expected_return = 2026-02-28. State = Draft.
  • 2
    Store Confirm JW order → state = Sent. Create Send Challan (challan_type=send): Date=2026-02-23. Add line: Product=PCB SA-200 Bare Board, qty=10, UoM=Units. Challan JWC/2026/00001 generated. Print challan for transport.
  • 3
    Store Goods dispatched. JWO state updated to In Progress. Vendor performs wave soldering. Date tracking monitored — if past date_expected_return, system can flag overdue.
  • 4
    Store Goods received 2026-02-28. QC inspects all 10 PCBs — passed. Create Return Challan (challan_type=return): Date=2026-02-28. Add line: Product=PCB SA-200 Soldered, qty=10. JWC/2026/00002 generated.
  • 5
    Store Manager Verify: sent qty = returned qty = 10. No shortfall. Update JWO state → Received, then → Closed. 10 processed PCBs available in stock for assembly into Motor Driver MO.
📌
Under GST Rule 45, goods sent to job worker require a challan (not an invoice). JWC/YYYY/XXXXX serves as the movement challan. Time limit: goods must be returned within 1 year (inputs) or 3 years (capital goods) under GST law.