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

153 lines
5.5 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class GarmentBrand(models.Model):
_name = 'garment.brand'
_description = 'Garment Brand'
_order = 'name'
name = fields.Char(string='Brand Name', required=True, index=True)
code = fields.Char(string='Brand Code', required=True)
logo = fields.Binary(string='Brand Logo')
active = fields.Boolean(default=True)
notes = fields.Text(string='Notes')
_code_uniq = models.Constraint('UNIQUE(code)', 'Brand Code must be unique!')
class GarmentSeason(models.Model):
_name = 'garment.season'
_description = 'Garment Season'
_order = 'year desc, name'
name = fields.Char(string='Season Name', required=True)
code = fields.Char(string='Season Code', required=True)
year = fields.Char(string='Year', default=lambda self: fields.Date.today().strftime('%Y'))
active = fields.Boolean(default=True)
_code_uniq = models.Constraint('UNIQUE(code)', 'Season Code must be unique!')
class GarmentGender(models.Model):
_name = 'garment.gender'
_description = 'Garment Gender Category'
_order = 'sequence, name'
name = fields.Char(string='Gender / Age Group', required=True)
code = fields.Char(string='Code', required=True)
sequence = fields.Integer(string='Sequence', default=10)
_code_uniq = models.Constraint('UNIQUE(code)', 'Gender Code must be unique!')
class GarmentType(models.Model):
_name = 'garment.type'
_description = 'Garment Product Type'
_order = 'name'
name = fields.Char(string='Garment Type', required=True)
code = fields.Char(string='Code', required=True)
category = fields.Selection([
('top', 'Top Wear'),
('bottom', 'Bottom Wear'),
('outerwear', 'Outerwear / Jackets'),
('innerwear', 'Innerwear / Undergarments'),
('activewear', 'Activewear / Sportswear'),
('accessories', 'Accessories'),
], string='Category', default='top', required=True)
description = fields.Text(string='Description')
_code_uniq = models.Constraint('UNIQUE(code)', 'Garment Type Code must be unique!')
class GarmentFabricType(models.Model):
_name = 'garment.fabric.type'
_description = 'Fabric Type / Structure'
_order = 'name'
name = fields.Char(string='Fabric Type Name', required=True)
code = fields.Char(string='Code', required=True)
structure = fields.Selection([
('single_jersey', 'Single Jersey'),
('rib_1x1', '1x1 Rib'),
('rib_2x2', '2x2 Rib'),
('interlock', 'Interlock'),
('pique', 'Pique / Polo Knit'),
('fleece', 'Fleece'),
('french_terry', 'French Terry'),
('waffle', 'Waffle Knit'),
('woven', 'Woven Fabric'),
('other', 'Other'),
], string='Knit Structure', default='single_jersey', required=True)
gsm_min = fields.Integer(string='Min GSM', default=140)
gsm_max = fields.Integer(string='Max GSM', default=220)
description = fields.Text(string='Description')
_code_uniq = models.Constraint('UNIQUE(code)', 'Fabric Type Code must be unique!')
class GarmentComposition(models.Model):
_name = 'garment.composition'
_description = 'Fabric Composition'
_order = 'name'
name = fields.Char(string='Composition', required=True)
code = fields.Char(string='Code', required=True)
cotton_pct = fields.Float(string='Cotton %', default=100.0)
polyester_pct = fields.Float(string='Polyester %', default=0.0)
spandex_pct = fields.Float(string='Spandex / Lycra %', default=0.0)
viscose_pct = fields.Float(string='Viscose %', default=0.0)
other_pct = fields.Float(string='Other Fiber %', default=0.0)
_code_uniq = models.Constraint('UNIQUE(code)', 'Composition Code must be unique!')
class GarmentColor(models.Model):
_name = 'garment.color'
_description = 'Garment Color Master'
_order = 'name'
name = fields.Char(string='Color Name', required=True, index=True)
code = fields.Char(string='Color Code', required=True, index=True)
color_group = fields.Selection([
('black', 'Blacks'),
('white', 'Whites & Off-Whites'),
('grey', 'Greys & Melanges'),
('navy', 'Navies & Blues'),
('red', 'Reds & Maroons'),
('green', 'Greens & Olives'),
('yellow', 'Yellows & Ochers'),
('pastel', 'Pastels'),
('multicolor', 'Printed / Multi'),
], string='Color Group', default='black')
pantone_code = fields.Char(string='Pantone Reference (TPX/TCX)')
color_hex = fields.Char(string='Hex Swatch Code', default='#000000')
active = fields.Boolean(default=True)
_code_uniq = models.Constraint('UNIQUE(code)', 'Color Code must be unique!')
def name_get(self):
result = []
for rec in self:
result.append((rec.id, f"[{rec.code}] {rec.name}"))
return result
class GarmentSize(models.Model):
_name = 'garment.size'
_description = 'Garment Size Master'
_order = 'sequence, code'
name = fields.Char(string='Size Name', required=True)
code = fields.Char(string='Size Code', required=True, index=True)
sequence = fields.Integer(string='Display Sequence', default=10, help='Used for sorting columns in Size Matrix')
size_group = fields.Selection([
('adult', 'Adult / Standard Alpha (XS-3XL)'),
('numeric_adult', 'Adult Numeric (28-44)'),
('youth', 'Kids / Youth (4Y-16Y)'),
('infant', 'Infant / Baby (0M-24M)'),
], string='Size Group', default='adult', required=True)
active = fields.Boolean(default=True)
_code_uniq = models.Constraint('UNIQUE(code)', 'Size Code must be unique!')