Module Overview
Comprehensive Indian statutory compliance toolkit integrated with the DRKDS Manufacturing suite.
โฑ๏ธ
Factories Act
1948 Compliance
๐ณ
45-Day
MSME Payment Rule
๐
Indian
Cost Sheet Format
๐ฎ๐ณ What This Module Does
The DRKDS Manufacturing Compliance (India) module adds statutory compliance features required by Indian manufacturing businesses on top of the full DRKDS Manufacturing suite. It covers four major compliance domains:
๐ HSN / SAC Codes
Master code list for Goods & Services Tax classification on BOM lines and job work challans.
๐ญ Factories Act 1948
Working hour rules, OT monitoring, night shift tracking, and compliance logs for factory workers.
๐ฐ MSME Payment Tracker
Enforces MSMED Act 2006 Section 15 (45-day rule) with auto compound interest at 3ร RBI rate.
๐ Production Cost Sheet
Indian format cost sheet: Prime Cost โ Works Cost โ Cost of Production โ COGS โ Cost/Unit.
๐ฆ Module Dependencies
drkds_mfg_core
โ
drkds_mfg_pro
โ
drkds_mfg_advanced
โ
drkds_mfg_compliance
account
l10n_in
hr
Odoo 19 Community
India Localization
โน๏ธ
Install on the mfg_test database using the standard install command. This module exits cleanly with zero errors and zero warnings on Odoo 19 Community.
HSN / SAC Codes
Harmonized System of Nomenclature master for GST classification of goods and services.
๐ What Are HSN Codes?
Under Indian GST, every supply of goods must carry an HSN (Harmonized System of Nomenclature) code and every service must carry a SAC (Service Accounting Code). Manufacturers must declare HSN codes on invoices, e-way bills, and ITC-04 returns.
โ ๏ธ
Businesses with annual turnover above โน5 crore must use 6-digit HSN codes; above โน1.5 crore but up to โน5 crore may use 4-digit HSN codes. Turnover up to โน1.5 crore is exempt from HSN declaration on B2C invoices.
| Field | Type | Required | Description |
| code | Char | Yes | HSN/SAC code (4, 6, or 8 digits) |
| description | Char | Yes | Full description of the goods/service category |
| hsn_type | Selection | Yes | goods / service โ determines HSN vs SAC classification |
| gst_rate | Float | No | Applicable GST rate (e.g., 5.0, 12.0, 18.0, 28.0) |
| cess_rate | Float | No | Cess rate if applicable (e.g., 15% on pan masala) |
| chapter_heading | Char | No | Chapter heading description (e.g., "Chapter 84 โ Nuclear reactors") |
| notes | Text | No | Additional compliance notes, exemptions, or IGST treatment |
Each BOM line in Manufacturing is extended with an HSN code field so that the correct GST classification is attached to raw material components.
| Field | Type | Description |
| hsn_code_id | Many2one โ drkds.hsn.code | HSN/SAC code for this BOM component |
โน๏ธ
The HSN code on the BOM line flows through to job work challans (ITC-04) and production cost sheets for GST reconciliation.
๐๏ธ Pre-loaded HSN Data (30 Codes)
The module ships with 30 common manufacturing-related HSN/SAC codes across key chapters:
Goods (HSN)
7208 Flat-rolled iron/steel (18%)
7304 Tubes/pipes iron or steel (18%)
7318 Screws, bolts, nuts (18%)
8414 Air/vacuum pumps (18%)
8471 ADP machines (18%)
8504 Transformers/inductors (18%)
8536 Electrical switches (18%)
8542 Integrated circuits (18%)
3901 Polymers of ethylene (18%)
4002 Synthetic rubber (5%)
Services (SAC)
9988 Job work services (12%)
9973 Leasing / rental (18%)
9954 Construction (12%)
Chapter 72 Iron & steel products
Chapter 73 Iron/steel articles
Chapter 84 Machinery & equipment
Chapter 85 Electrical equipment
Chapter 39 Plastics
Chapter 40 Rubber
๐ง How to Use HSN Codes
1
Navigate to Compliance โ HSN Codes
View the master list. Use the tree view to search by code or chapter. Use the form view to add new codes.
2
Open Manufacturing Order โ BOM
Go to Manufacturing โ Bills of Materials. Open the relevant BOM and switch to the Components tab.
3
Add HSN Code to Component Lines
On each BOM line, set the HSN Code field. The GST rate auto-populates from the HSN master.
4
Verify on Job Work Challan
When goods are sent for job work, the HSN code appears on the delivery challan for ITC-04 compliance.
Factories Act 1948 Compliance
Monitor working hours, overtime, night shifts, and statutory rest periods as required by the Factories Act 1948.
โ๏ธ
Legal Requirement: The Factories Act 1948 applies to any premises employing 10+ workers (with power) or 20+ workers (without power). Non-compliance can result in imprisonment up to 2 years or fine up to โน2 lakh under Section 92.
| Field | Type | Default | Statutory Reference |
| name | Char | โ | Rule set name (e.g., "Standard Factory Rules 2024") |
| max_hours_day | Float | 9.0 | Section 54 โ max 9 hours/day (8 for females) |
| max_hours_week | Float | 48.0 | Section 51 โ max 48 hours/week |
| spread_over_hours | Float | 10.5 | Section 56 โ spread over max 10.5 hours |
| ot_multiplier | Float | 2.0 | Section 59 โ overtime at double the ordinary rate |
| max_ot_hours_quarter | Float | 50.0 | Section 64 โ max 50 OT hours per quarter (75 with Govt approval) |
| rest_between_shifts_hrs | Float | 12.0 | Section 55 โ minimum 30 min break after 5 hours work |
| weekly_off_day | Selection | 0 (Mon) | Section 52 โ weekly holiday (compensatory off if worked) |
| night_shift_start | Float | 22.0 | Night shift period start (10 PM) |
| night_shift_end | Float | 6.0 | Night shift period end (6 AM) |
| night_allowance_pct | Float | 20.0 | Night shift allowance percentage on basic wages |
| women_work_allowed_night | Boolean | False | Section 66 โ women allowed in night shift (state amendment) |
| adolescent_max_hours_day | Float | 4.5 | Section 71 โ adolescents (15-18 yrs) max 4.5 hours/day |
| notes | Text | โ | Additional state-specific rules or exemptions |
| Field | Type | Required | Description |
| employee_id | Many2one โ hr.employee | Yes | Worker whose hours are being logged |
| date | Date | Yes | Date of the work log entry |
| rule_id | Many2one โ drkds.factories.act.rule | Yes | Applicable rule set for this entry |
| hours_worked | Float | No | Total hours worked during this shift |
| ot_hours | Float | No | Overtime hours (hours worked โ standard hours) |
| is_night_shift | Boolean | No | True if the shift falls in night shift period (10 PM โ 6 AM) |
| state | Selection | No | draft โ reviewed โ acknowledged workflow |
๐
Visual: Weekly Hours Grid
Example: Employee Rahul Kumar โ Week of 17โ23 Feb 2026. Flagged entries exceed 9hr/day limit.
โ Normal (โค9 hrs)
โ Reduced shift
โ Overtime flagged (>9 hrs)
Week Total: 59.5 hrs (Limit: 48 hrs/week)
๐จ
This worker has 7.5 OT hours this week. At this rate, the quarterly OT limit of 50 hours will be reached in approximately 7 weeks. State Labour Commissioner approval required beyond 50 hrs/quarter per Section 64.
๐ Log Workflow States
Draft
โ
Reviewed
โ
Acknowledged
Acknowledged logs serve as the documentary proof of compliance review required by the Factory Inspector.
MSME Payment Tracker
Track payments to MSME suppliers and compute compound interest on delayed payments as required by MSMED Act 2006.
โ๏ธ
MSMED Act 2006 โ Section 15 & 16: Payment to MSME supplier must be within 45 days of invoice date (or agreed date, whichever is earlier). Interest on delayed payment = 3ร RBI bank rate, compounded monthly. This interest is non-deductible for income tax (Section 23 MSMED Act).
| Field | Type | Notes |
| name | Char | Auto-sequence: MSME/YYYY/ (e.g., MSME/2026/001) |
| partner_id | Many2one โ res.partner | MSME supplier (must have MSME registration) |
| invoice_id | Many2one โ account.move | Linked vendor invoice |
| invoice_date | Date | Date of supplier invoice |
| due_date_45 | Date | Computed: invoice_date + 45 days (MSMED Act Section 15) |
| amount_total | Float | Total invoice amount (โน) |
| amount_paid | Float | Amount paid so far |
| balance | Float | Computed: amount_total โ amount_paid |
| days_overdue | Integer | Computed: today โ due_date_45 (if > 0) |
| interest_rate | Float | RBI bank rate ร 3 (currently ~18% p.a.) |
| interest_amount | Float | Computed compound interest on outstanding balance |
| state | Selection | draft / active / paid / overdue |
| notes | Text | Dispute resolution notes, partial payment details |
๐ MSME Interest Calculation Example
Supplier: Precision Parts Pvt Ltd | Invoice: โน1,25,000 | Date: 1-Feb-2026 | RBI Rate 6% โ Interest = 6% ร 3 = 18% p.a.
| Date | Status | Days Overdue | Balance (โน) | Interest (โน) | Total Due (โน) |
| 1-Feb-2026 | Invoice Received | โ | 1,25,000 | โ | 1,25,000 |
| 18-Mar-2026 | Due Date (45 days) | 0 | 1,25,000 | 0 | 1,25,000 |
| 20-Mar-2026 | 2 Days Overdue | 2 | 1,25,000 | โน123 | 1,25,123 |
| 31-Mar-2026 | 13 Days Overdue | 13 | 1,25,000 | โน798 | 1,25,798 |
| 30-Apr-2026 | 43 Days Overdue | 43 | 1,25,000 | โน2,644 | 1,27,644 |
| 20-Mar-2026 | Payment Made | 2 | 0 | โน123 | โน123 penalty |
๐ก
Formula: Interest = Balance ร (1 + rate/12)^(months) โ Balance, compounded monthly. This interest is NOT deductible as a business expense under income tax rules โ a direct hit to profitability.
๐ MSME Tracker States
Draft
โ
Active
โ
Overdue
or
Paid
Production Cost Sheet (Indian Format)
Standard Indian manufacturing cost accounting format โ from raw material to cost per unit.
๐ Cost Sheet Formula Chain
| Field | Type | Notes |
| name | Char | Auto-sequence: CS/YYYY/ (e.g., CS/2026/001) |
| production_id | Many2one โ mrp.production | Linked manufacturing order |
| product_id | Many2one โ product.product | Finished product being costed |
| date | Date | Cost sheet date |
| quantity | Float | Production quantity for this cost sheet |
| uom_id | Many2one โ uom.uom | Unit of measure |
| factory_overhead_pct | Float | Factory overhead as % of Prime Cost |
| admin_overhead_pct | Float | Admin overhead as % of Works Cost |
| selling_overhead_pct | Float | Selling overhead as % of Cost of Production |
| total_material_cost | Float | Computed: sum of material line amounts |
| total_labour_cost | Float | Computed: sum of labour line amounts |
| prime_cost | Float | Computed: material + labour |
| factory_overhead | Float | Computed: prime_cost ร factory_overhead_pct / 100 |
| works_cost | Float | Computed: prime_cost + factory_overhead |
| admin_overhead | Float | Computed: works_cost ร admin_overhead_pct / 100 |
| cost_of_production | Float | Computed: works_cost + admin_overhead |
| selling_overhead | Float | Computed: cost_of_production ร selling_overhead_pct / 100 |
| cost_of_goods_sold | Float | Computed: cost_of_production + selling_overhead |
| cost_per_unit | Float | Computed: cost_of_goods_sold รท quantity |
| state | Selection | draft / confirmed |
| Field | Type | Notes |
| cost_sheet_id | Many2one | Parent cost sheet |
| product_id | Many2one โ product.product | Raw material product |
| description | Char | Required โ material description |
| hsn_code_id | Many2one โ drkds.hsn.code | HSN code for GST compliance |
| quantity | Float | Quantity consumed |
| uom_id | Many2one โ uom.uom | Unit of measure |
| unit_cost | Float | Cost per unit (โน) |
| amount | Float | Computed: quantity ร unit_cost |
| gst_rate | Float | GST rate % (from HSN master) |
| Field | Type | Notes |
| cost_sheet_id | Many2one | Parent cost sheet |
| description | Char | Required โ labour activity description |
| employee_count | Integer | Number of workers |
| hours | Float | Hours per worker |
| rate_per_hour | Float | Rate per hour per worker (โน) |
| amount | Float | Computed: employee_count ร hours ร rate_per_hour |
GST Job Work Compliance
Section 143 CGST Act compliance โ ITC-04 quarterly return, e-way bills, and delivery challans for job work.
๐งพ Job Work Challan Extensions
The existing drkds.job.work.challan model (from drkds_mfg_advanced) is extended with GST-specific fields:
| Field | Type | Purpose |
| gstin_recipient | Char | GSTIN of the job worker receiving the goods |
| eway_bill_no | Char | E-way bill number (required if consignment value > โน50,000) |
| eway_bill_date | Date | E-way bill generation date |
| job_work_value | Float | Total value of goods sent for job work (for e-way threshold) |
| gst_applicable | Boolean | Whether GST is applicable on this job work transaction |
| challan_gst_type | Selection | ITC-04 (quarterly return) / delivery_challan |
๐ ITC-04 Return
Quarterly return filed by the principal manufacturer. Reports goods sent to and received back from job workers. Due quarterly (Jul 25, Oct 25, Jan 25, Apr 25).
CGST Rule 45A
๐ E-Way Bill
Mandatory for goods movement above โน50,000. Valid for 1 day per 200 km distance. Generate via NIC e-way bill portal before dispatch.
GST Rule 138
๐ Delivery Challan
Triplicate delivery challan mandatory for job work dispatch. Original for job worker, duplicate for transporter, triplicate retained by principal.
Section 143 CGST
โ ๏ธ
Time Limit: Goods sent for job work must be received back within 1 year (inputs) or 3 years (capital goods). Failure to receive back is treated as a supply by the principal, attracting full GST + interest.
Technical: Models Reference
Complete model hierarchy and relationships for the compliance module.
# Model Overview โ drkds_mfg_compliance
class DrkdsHsnCode(models.Model):
_name = 'drkds.hsn.code'
_description = 'HSN / SAC Code Master'
# Fields: code, description, gst_rate, cess_rate, hsn_type, chapter_heading, notes
class DrkdsFactoriesActRule(models.Model):
_name = 'drkds.factories.act.rule'
_description = 'Factories Act Working Hour Rules'
# Fields: name, max_hours_day=9.0, max_hours_week=48.0, ot_multiplier=2.0, ...
class DrkdsFactoriesActLog(models.Model):
_name = 'drkds.factories.act.log'
_description = 'Employee Work Hour Log'
_inherit = ['mail.thread']
# Fields: employee_id, date, rule_id, hours_worked, ot_hours, is_night_shift, state
class DrkkdsMsmeTracker(models.Model):
_name = 'drkds.msme.tracker'
_description = 'MSME Payment Tracker'
_inherit = ['mail.thread']
# Fields: name(seq), partner_id, invoice_id, due_date_45(computed), interest_amount(computed), state
class DrkdsProductionCostSheet(models.Model):
_name = 'drkds.production.cost.sheet'
_description = 'Production Cost Sheet'
_inherit = ['mail.thread']
# O2M: material_line_ids, labour_line_ids
# Computed: prime_cost, works_cost, cost_of_production, cost_of_goods_sold, cost_per_unit
class DrkkdsCostSheetMaterial(models.Model):
_name = 'drkds.cost.sheet.material'
# amount = @api.depends(quantity, unit_cost) โ qty * unit_cost
class DrkkdsCostSheetLabour(models.Model):
_name = 'drkds.cost.sheet.labour'
# amount = @api.depends(employee_count, hours, rate_per_hour) โ count * hours * rate
๐ Model Relationships Diagram
mrp.bom.line โโโโโโโโ hsn_code_id โโโ drkds.hsn.code
drkds.cost.sheet.material โ hsn_code_id โโโ drkds.hsn.code
drkds.job.work.challan โโโโ (extended with GST fields)
drkds.factories.act.log โโ employee_id โโ hr.employee
drkds.factories.act.log โโ rule_id โโโโโโโ drkds.factories.act.rule
drkds.msme.tracker โโโโโโ partner_id โโโโ res.partner
drkds.msme.tracker โโโโโโ invoice_id โโโโ account.move
drkds.production.cost.sheet โ production_id โ mrp.production
drkds.production.cost.sheet โ material_line_ids (O2M)
drkds.production.cost.sheet โ labour_line_ids (O2M)
Settings & Configuration
Feature toggles in Manufacturing Configuration โ Settings (Compliance tab).
๐
Enable HSN Code Tracking
group_mfg_comp_hsn
Adds HSN Code field to BOM lines and enables HSN master menu under Compliance.
๐ญ
Enable Factories Act Compliance
group_mfg_comp_factories
Enables Factories Act rules and employee work log tracking under Compliance menu.
๐ฐ
Enable MSME Payment Tracker
group_mfg_comp_msme
Enables MSME tracker with 45-day deadline and compound interest calculation.
๐
Enable Production Cost Sheet
group_mfg_comp_cost_sheet
Enables Indian-format production cost sheet with Prime โ Works โ CoP โ COGS formula.
โน๏ธ
Settings pages use groups="base.group_system" so that only administrators can enable/disable compliance features. All compliance pages use implied_group= pattern with group_ prefix for correct Odoo 19 behavior.
Statutory References
Key Indian laws and sections implemented in this module.
Factories Act 1948
Section 51
No adult worker shall be required to work in a factory for more than 48 hours in any week.
Factories Act 1948
Section 54
No adult worker shall be required to work in a factory for more than 9 hours in any day (8 hours for female workers in some states).
Factories Act 1948
Section 55
No worker shall be allowed to work for more than 5 hours before an interval for rest of at least 30 minutes.
Factories Act 1948
Section 56
Spread over: inclusive of intervals for rest, a worker's work shall not spread over more than 10.5 hours in any day.
Factories Act 1948
Section 59
Overtime wages: worker who works beyond normal hours shall be entitled to wages at double the ordinary rate.
Factories Act 1948
Section 64
Exemption from Section 51/54: maximum overtime permitted is 50 hours per quarter (75 hours with State Government approval).
MSMED Act 2006
Section 15
The buyer of any goods or services from a Micro or Small Enterprise shall make payment within the agreed period or 45 days, whichever is earlier.
MSMED Act 2006
Section 16
Delayed payments to MSME attract compound interest at 3 times the bank rate notified by the RBI. This interest is NOT deductible under income tax.
CGST Act 2017
Section 143
Job work provisions: principal manufacturer can send inputs/capital goods without payment of GST. Must be received back within 1 year (inputs) / 3 years (capital goods).
GST Rules 2017
Rule 45A / ITC-04
Principal manufacturer must file quarterly ITC-04 return reporting details of goods sent to and received back from job workers. Filed quarterly by 25th of next month.
GST Rules 2017
Rule 138 (E-Way Bill)
E-way bill mandatory for movement of goods where consignment value exceeds โน50,000. Valid for 1 day for every 200 km distance (or part thereof).
Income Tax Act 1961
Section 194C
TDS on payments to contractors: 1% if contractor is an individual/HUF; 2% if a company/firm. Threshold: single payment > โน30,000 or aggregate > โน1 lakh/year.
Scenario 1: HSN Codes on BOM
1
Navigate to Manufacturing โ Bills of Materials
Search for BOM "MDU-300" and open the Bill of Materials for Motor Driver MDU-300. Switch to the Components tab.
2
Add HSN Code to IGBT Component Line
On the IGBT (Insulated Gate Bipolar Transistor) line, click the HSN Code field and search for 8504 โ "Electrical transformers, static converters and inductors". The GST rate 18% auto-populates.
3
Add HSN Code to MCU Component Line
On the Microcontroller Unit line, set HSN code 8542 โ "Electronic integrated circuits". GST rate 18% auto-populates.
4
Save and Verify
Save the BOM. When a job work challan is created for this BOM's components, the HSN codes will appear automatically on the ITC-04 delivery challan, ensuring GST compliance.
โ
HSN codes are now attached to BOM components. These flow through to job work challans, production cost sheets, and GST reports for complete traceability.
Scenario 2: OT Monitoring โ Factories Act
1
Open Compliance โ Factories Act โ Logs
Filter logs for the current week. Employee Rahul Kumar shows entries for 3 days with hours_worked = 11.5, ot_hours = 2.5 each day.
2
Review OT Accumulation
The rule dmd_far_extended shows max_ot_hours_quarter = 50.0. Current quarter accumulated OT for Rahul Kumar: 42.5 hours. This week's additional 7.5 hours takes it to 50 hours โ exactly at the limit.
3
Acknowledge Logs
Factory manager clicks Acknowledge on each log. State transitions from reviewed to acknowledged. This creates the documentary trail required for Factory Inspector visits.
4
Escalate for Future OT
Any further OT for Rahul Kumar this quarter requires State Labour Commissioner approval (Section 64 exemption โ up to 75 hours). Factory manager adds notes to the rule record documenting the approval process.
โ ๏ธ
Section 64 Compliance: Before authorizing OT beyond 50 hours/quarter, obtain written approval from the State Labour Commissioner. Maintain this approval on file for minimum 3 years for inspection purposes.
Scenario 3: MSME 45-Day Payment Tracker
1
Create MSME Tracker Record
Navigate to Compliance โ MSME Tracker. Click New. System auto-generates sequence MSME/2026/001. Select supplier "Precision Parts Pvt Ltd", link the vendor invoice.
2
Set Invoice Date: 1-Feb-2026
Enter invoice_date = 01/02/2026. The due_date_45 field auto-computes to 18-Mar-2026 (1 Feb + 45 days). Set amount_total = โน1,25,000. Set interest_rate = 18% (RBI rate 6% ร 3).
3
Monitor on 20-Mar-2026
Invoice still unpaid. The system shows:
โข State: Overdue
โข days_overdue: 2
โข interest_amount: โน123 (compound at 18% p.a. for 2 days on โน1,25,000)
4
Process Payment and Update
Payment of โน1,25,123 (principal + interest) processed on 20-Mar-2026. Update amount_paid = โน1,25,123. State automatically transitions to Paid. Balance = โน0. Interest penalty noted in accounts.
๐จ
Tax Impact: The โน123 interest penalty is NOT deductible as a business expense. It will be disallowed under Section 23 of MSMED Act when computing taxable income โ a direct cost to the company.
Scenario 4: Production Cost Sheet โ MDU-001
1
Create New Cost Sheet
Navigate to Compliance โ Cost Sheets. Click New. Sequence CS/2026/001 auto-generated. Link production_id = MDU-001. Set quantity = 5, date = today.
2
Add Material Lines (Materials Tab)
| Material | HSN | Qty | Rate | Amount |
| IGBT Module | 8504 | 5 | โน1,200 | โน6,000 |
| Gate Driver IC | 8542 | 20 | โน180 | โน3,600 |
| PCB (2-layer) | 8534 | 5 | โน450 | โน2,250 |
| Total Material Cost | โน11,850 |
3
Add Labour Lines (Labour Tab)
| Activity | Workers | Hours | Rate/Hr | Amount |
| PCB Assembly | 2 | 20 | โน120 | โน4,800 |
| Testing & QC | 1 | 10 | โน150 | โน1,500 |
| Total Labour Cost | โน6,300 |
4
Set Overhead Percentages
factory_overhead_pct = 20%, admin_overhead_pct = 5%, selling_overhead_pct = 3%
5
Auto-Computed Results
Prime Cost: โน18,150
Factory OH: โน3,630
Works Cost: โน21,780
Admin OH: โน1,089
Cost of Production: โน22,869
Selling OH: โน686
COGS: โน23,555
Cost/Unit: โน4,711
6
Confirm and Print Report
Click Confirm to lock the cost sheet (state โ confirmed). Print the Indian-format QWeb report from the Print menu. Share with management for pricing decisions and financial reporting.
โ
Cost sheet CS/2026/001 confirmed. Cost per unit โน4,711 can be used for:
โข Pricing decisions (add margin over COGS)
โข Standard cost updates in inventory valuation
โข Management reporting and budgeting
DRKDS Manufacturing Compliance (India) v1.0.0
Part of the DRKDS Manufacturing Suite for Odoo 19 Community
drkds_mfg_compliance | Depends: drkds_mfg_advanced, account, l10n_in, hr
Status: Installed โ Zero errors, zero warnings | DB: mfg_test
๐ฎ๐ณ Compliant with Factories Act 1948 ยท MSMED Act 2006 ยท CGST Act 2017 ยท Income Tax Act 1961