# -*- 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!')