========================
Product Variant Scenario
========================

Imports::

    >>> from decimal import Decimal
    >>> from proteus import Model
    >>> from trytond.tests.tools import activate_modules
    >>> from trytond.modules.company.tests.tools import create_company

Activate modules::

    >>> config = activate_modules('product')

Create company::

    >>> _ = create_company()

Create a template::

    >>> ProductUom = Model.get('product.uom')
    >>> unit, = ProductUom.find([('name', '=', 'Unit')])
    >>> ProductTemplate = Model.get('product.template')
    >>> template = ProductTemplate()
    >>> template.name = "Product"
    >>> template.default_uom = unit
    >>> template.list_price = Decimal('42.0000')
    >>> template.code = "PROD"
    >>> template.save()
    >>> len(template.products)
    1
    >>> product, = template.products
    >>> product.code
    'PROD'
    >>> product.suffix_code = "001"
    >>> product.save()
    >>> product.code
    'PROD001'

Create a variant::

    >>> Product = Model.get('product.product')
    >>> product = Product()
    >>> product.template = template
    >>> product.name
    'Product'
    >>> product.list_price
    Decimal('42.0000')
    >>> product.suffix_code = "002"
    >>> product.save()
    >>> product.list_price
    Decimal('42.0000')
    >>> product.code
    'PROD002'

Change template code::

    >>> template.code = "PRD"
    >>> template.save()
    >>> sorted([p.code for p in template.products])
    ['PRD001', 'PRD002']

Create template with trailing space in code::

    >>> template = ProductTemplate()
    >>> template.name = "Product"
    >>> template.code = "TRAILING "
    >>> template.default_uom = unit
    >>> template.save()
    >>> product, = template.products
    >>> product.code
    'TRAILING'

Create product with leading space in code::

    >>> template = ProductTemplate()
    >>> template.name = "Product"
    >>> template.default_uom = unit
    >>> product, = template.products
    >>> product.suffix_code = " LEADING"
    >>> template.save()
    >>> product, = template.products
    >>> product.code
    'LEADING'
