2026-09-21 16:43:23 +05:30

71 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class GarmentReworkOrder(models.Model):
_name = 'garment.rework.order'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = 'Garment Quality Rework Order'
_order = 'name desc'
name = fields.Char(string='Rework Order No', required=True, default=lambda self: _('New'), copy=False, tracking=True)
inspection_id = fields.Many2one('garment.quality.inspection', string='Originating QC Inspection', required=True, tracking=True)
production_plan_id = fields.Many2one('garment.production.plan', string='Production Plan', tracking=True)
style_id = fields.Many2one('garment.style', string='Style', tracking=True)
color_id = fields.Many2one('garment.color', string='Color')
size_id = fields.Many2one('garment.size', string='Size')
bundle_id = fields.Many2one('garment.bundle', string='Bundle Ref')
# Quantities
rework_qty = fields.Integer(string='Rework Quantity (Pcs)', required=True, default=1, tracking=True)
passed_rework_qty = fields.Integer(string='Passed After Rework', default=0)
scrapped_rework_qty = fields.Integer(string='Unrepairable / Scrapped', default=0)
# Assignment
assigned_dept = fields.Selection([
('sewing', 'Sewing Floor Alteration'),
('cutting', 'Cutting Panel Replacement'),
('finishing', 'Spot Cleaning / Ironing'),
('jobwork', 'Job Worker Re-processing'),
], string='Responsible Section', default='sewing', required=True, tracking=True)
assigned_operator_id = fields.Many2one('res.users', string='Assigned Operator / Tailor', tracking=True)
date_assigned = fields.Date(string='Date Assigned', default=fields.Date.today)
date_completed = fields.Date(string='Date Completed')
rework_cost = fields.Float(string='Estimated Rework Cost (INR)', default=15.0)
defect_description = fields.Text(string='Defect Description & Alteration Instructions', required=True)
state = fields.Selection([
('assigned', 'Assigned for Rework'),
('in_rework', 'In Rework / Alteration'),
('ready_recheck', 'Ready for QA Re-check'),
('passed', 'Passed QA Re-check (Restored)'),
('scrapped', 'Irreparable / Scrapped'),
], string='Status', default='assigned', tracking=True, required=True)
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if vals.get('name', _('New')) == _('New'):
vals['name'] = self.env['ir.sequence'].next_by_code('garment.rework.order') or _('RWK/%s') % fields.Date.today().strftime('%Y%m%d')
return super(GarmentReworkOrder, self).create(vals_list)
def action_start_rework(self):
self.write({'state': 'in_rework'})
def action_ready_recheck(self):
self.write({'state': 'ready_recheck'})
def action_pass_recheck(self):
self.write({
'state': 'passed',
'passed_rework_qty': self.rework_qty,
'date_completed': fields.Date.today(),
})
def action_scrap_rework(self):
self.write({
'state': 'scrapped',
'scrapped_rework_qty': self.rework_qty,
'date_completed': fields.Date.today(),
})