153 lines
5.5 KiB
Python
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!')
|