71 lines
3.2 KiB
Python
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(),
|
|
})
|