Migrate to 6.4
This commit is contained in:
parent
323616ab9c
commit
c1b4778dc1
110
load.py
110
load.py
|
@ -49,20 +49,19 @@ if not hasattr(ASTTransformer, 'visit_NameConstant'):
|
|||
|
||||
|
||||
class CMRInstructionsMixin(object):
|
||||
__slots__ = ()
|
||||
|
||||
edit_cmr_instructions = fields.Boolean('Edit CMR instructions',
|
||||
states={'readonly': Eval('state') == 'cancelled'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') == 'cancelled'})
|
||||
cmr_instructions = fields.Function(
|
||||
fields.Text('CMR instructions', translate=True,
|
||||
states={
|
||||
'readonly': (Eval('state') == 'cancelled') | Not(
|
||||
Bool(Eval('edit_cmr_instructions')))
|
||||
}, depends=['state', 'edit_cmr_instructions']),
|
||||
}),
|
||||
'on_change_with_cmr_instructions', setter='set_cmr_instructions')
|
||||
cmr_instructions_store = fields.Text('CMR instructions', translate=True,
|
||||
states={'readonly': Eval('state') == 'cancelled'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') == 'cancelled'})
|
||||
cmr_template = fields.Function(
|
||||
fields.Many2One('carrier.load.cmr.template', 'CMR Template'),
|
||||
'get_cmr_template')
|
||||
|
@ -96,8 +95,7 @@ class Load(Workflow, ModelView, ModelSQL, DockMixin, CMRInstructionsMixin):
|
|||
_rec_name = 'code'
|
||||
|
||||
code = fields.Char('Code', required=True, select=True,
|
||||
states={'readonly': Eval('code_readonly', True)},
|
||||
depends=['code_readonly'])
|
||||
states={'readonly': Eval('code_readonly', True)})
|
||||
code_readonly = fields.Function(fields.Boolean('Code Readonly'),
|
||||
'get_code_readonly')
|
||||
company = fields.Many2One('company.company', 'Company', required=True,
|
||||
|
@ -107,45 +105,38 @@ class Load(Workflow, ModelView, ModelSQL, DockMixin, CMRInstructionsMixin):
|
|||
| Eval('orders', [])
|
||||
| Eval('purchase')
|
||||
},
|
||||
depends=['state', 'orders', 'purchase'], select=True)
|
||||
select=True)
|
||||
carrier = fields.Many2One('carrier', 'Carrier', select=True,
|
||||
ondelete='RESTRICT',
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'required': Bool(Eval('purchasable'))
|
||||
|
||||
},
|
||||
depends=['state', 'purchasable'])
|
||||
})
|
||||
carrier_info = fields.Text('Carrier information',
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'invisible': Bool(Eval('purchasable')) | Bool(Eval('carrier'))
|
||||
},
|
||||
depends=['state', 'purchasable', 'carrier'])
|
||||
})
|
||||
vehicle_number = fields.Char('Vehicle reg. number',
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'required': Eval('state').in_(['confirmed', 'done']) & Bool(
|
||||
Eval('vehicle_required'))},
|
||||
depends=['state', 'vehicle_required'])
|
||||
Eval('vehicle_required'))})
|
||||
vehicle_required = fields.Function(fields.Boolean('Vehicle required'),
|
||||
'get_number_required')
|
||||
trailer_number = fields.Char('Trailer reg. number',
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'required': Eval('state').in_(['confirmed', 'done']) & Bool(
|
||||
Eval('trailer_required'))},
|
||||
depends=['state'])
|
||||
Eval('trailer_required'))})
|
||||
trailer_required = fields.Function(fields.Boolean('Trailer required'),
|
||||
'get_number_required')
|
||||
date = fields.Date('Effective date', required=True,
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
warehouse = fields.Many2One('stock.location', 'Warehouse',
|
||||
required=True,
|
||||
domain=[('type', '=', 'warehouse')],
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
warehouse_output = fields.Function(
|
||||
fields.Many2One('stock.location', 'Warehouse output'),
|
||||
'on_change_with_warehouse_output')
|
||||
|
@ -158,8 +149,7 @@ class Load(Workflow, ModelView, ModelSQL, DockMixin, CMRInstructionsMixin):
|
|||
(Eval('state') != 'draft')
|
||||
| (Not(Bool(Eval('carrier'))) & Not(Bool('carrier_info')))
|
||||
| Not(Bool(Eval('warehouse')))
|
||||
},
|
||||
depends=['state', 'carrier', 'carrier_info', 'warehouse', 'company'])
|
||||
})
|
||||
state = fields.Selection([
|
||||
('draft', 'Draft'),
|
||||
('confirmed', 'Confirmed'),
|
||||
|
@ -169,48 +159,39 @@ class Load(Workflow, ModelView, ModelSQL, DockMixin, CMRInstructionsMixin):
|
|||
purchasable = fields.Boolean('Purchasable',
|
||||
states={
|
||||
'readonly': ((~Eval('state').in_(['draft', 'confirmed'])) | (
|
||||
Bool(Eval('purchase'))))},
|
||||
depends=['state', 'purchase'])
|
||||
Bool(Eval('purchase'))))})
|
||||
unit_price = fields.Numeric('Unit Price', digits=price_digits,
|
||||
states={
|
||||
'readonly': ((~Eval('state').in_(
|
||||
['draft', 'confirmed', 'done'])) | (Bool(Eval('purchase')))),
|
||||
'invisible': ~Eval('purchasable')},
|
||||
depends=['state', 'purchase', 'purchasable'])
|
||||
'invisible': ~Eval('purchasable')})
|
||||
currency = fields.Many2One('currency.currency', 'Currency',
|
||||
states={
|
||||
'readonly': ((~Eval('state').in_(['draft', 'confirmed'])) | (
|
||||
Bool(Eval('purchase')))),
|
||||
'invisible': ~Eval('purchasable')},
|
||||
depends=['state', 'purchase', 'purchasable'])
|
||||
'invisible': ~Eval('purchasable')})
|
||||
currency_digits = fields.Function(fields.Integer('Currency Digits'),
|
||||
'on_change_with_currency_digits')
|
||||
purchase = fields.Many2One('purchase.purchase', 'Purchase', readonly=True,
|
||||
states={'invisible': ~Eval('purchasable')},
|
||||
depends=['purchasable'])
|
||||
states={'invisible': ~Eval('purchasable')})
|
||||
purchase_state = fields.Function(
|
||||
fields.Selection([(None, '')], 'Purchase state',
|
||||
states={'invisible': ~Eval('purchasable')},
|
||||
depends=['purchasable']),
|
||||
states={'invisible': ~Eval('purchasable')}),
|
||||
'get_purchase_state', searcher='search_purchase_state')
|
||||
parties = fields.Function(
|
||||
fields.Char('Parties'), 'get_parties', searcher='search_parties')
|
||||
driver = fields.Char('Driver',
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
driver_identifier = fields.Char('Driver identifier',
|
||||
states={
|
||||
'required': Bool(Eval('driver')),
|
||||
'readonly': Eval('state') != 'draft'},
|
||||
depends=['driver', 'state'])
|
||||
'readonly': Eval('state') != 'draft'})
|
||||
driver_phone = fields.Char('Driver Phone',
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
'readonly': Eval('state') != 'draft'})
|
||||
comments = fields.Text('Comments', translate=True,
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
'readonly': Eval('state') != 'draft'})
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -674,11 +655,9 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
|
||||
load = fields.Many2One('carrier.load', 'Load', required=True, select=True,
|
||||
ondelete='CASCADE',
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
code = fields.Char('Code', required=True, select=True,
|
||||
states={'readonly': Eval('code_readonly', True)},
|
||||
depends=['code_readonly'])
|
||||
states={'readonly': Eval('code_readonly', True)})
|
||||
code_readonly = fields.Function(fields.Boolean('Code Readonly'),
|
||||
'get_code_readonly')
|
||||
company = fields.Many2One('company.company', 'Company', required=True,
|
||||
|
@ -689,42 +668,35 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
| Eval('sale')
|
||||
| Eval('lines', [])
|
||||
},
|
||||
depends=['state', 'shipment', 'sale', 'lines'], select=True)
|
||||
select=True)
|
||||
date = fields.Function(fields.Date('Effective date'),
|
||||
'on_change_with_date')
|
||||
start_date = fields.DateTime('Start date',
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state'])
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])})
|
||||
end_date = fields.DateTime('End date',
|
||||
domain=[If(Eval('end_date') & Eval('start_date'),
|
||||
('end_date', '>=', Eval('start_date')),
|
||||
())],
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])},
|
||||
depends=['state', 'start_date', 'end_date'])
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting'])})
|
||||
arrival_date = fields.Date('Arrival date',
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
lines = fields.One2Many('carrier.load.order.line', 'order', 'Lines',
|
||||
states={'readonly': Eval('state') != 'draft'},
|
||||
depends=['state'])
|
||||
states={'readonly': Eval('state') != 'draft'})
|
||||
party = fields.Many2One('party.party', 'Party', select=True, states={
|
||||
'readonly': (Eval('state') != 'draft') |
|
||||
(Eval('lines', [0])),
|
||||
'required': (Eval('state') == 'done') &
|
||||
(Eval('type') != 'internal'),
|
||||
'invisible': Eval('type') == 'internal'},
|
||||
depends=['state', 'lines', 'type'])
|
||||
'invisible': Eval('type') == 'internal'})
|
||||
incoterms = fields.One2Many('carrier.load.order.incoterm', 'order',
|
||||
'Incoterms',
|
||||
states={'readonly': ~Eval('state').in_(['draft', 'waiting']),
|
||||
'invisible': ~Eval('party')},
|
||||
depends=['state', 'party'])
|
||||
'invisible': ~Eval('party')})
|
||||
sale_edit = fields.Boolean('Edit sale',
|
||||
states={
|
||||
'readonly': Eval('state').in_(['done', 'cancelled']) |
|
||||
Bool(Eval('sale'))
|
||||
},
|
||||
depends=['state', 'sale'])
|
||||
})
|
||||
sale = fields.Many2One('sale.sale', 'Sale',
|
||||
domain=[
|
||||
If((Eval('state') != 'done') & Bool(Eval('sale_edit')),
|
||||
|
@ -744,8 +716,7 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
'readonly': (Eval('state') == 'done') |
|
||||
(Eval('type') != 'out') | Bool(Eval('shipment')) |
|
||||
Not(Bool(Eval('sale_edit')))
|
||||
},
|
||||
depends=['party', 'type', 'state', 'shipment', 'id', 'sale_edit'])
|
||||
})
|
||||
shipment = fields.Reference('Shipment', selection='get_shipments',
|
||||
readonly=True, select=True)
|
||||
state = fields.Selection([
|
||||
|
@ -771,8 +742,7 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
('in_return', 'In return')], 'Type', required=True, select=True,
|
||||
states={'readonly': Bool(Eval('lines', [])) |
|
||||
Bool(Eval('shipment', None)) |
|
||||
(Eval('state') != 'draft')},
|
||||
depends=['lines', 'shipment', 'state'])
|
||||
(Eval('state') != 'draft')})
|
||||
warehouse = fields.Function(fields.Many2One('stock.location', 'Warehouse'),
|
||||
'get_warehouse')
|
||||
to_location = fields.Many2One('stock.location', 'To location',
|
||||
|
@ -780,8 +750,7 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
states={'required': (Eval('type') == 'internal') &
|
||||
~Eval('shipment', None),
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'invisible': Eval('type') != 'internal'},
|
||||
depends=['type', 'state'])
|
||||
'invisible': Eval('type') != 'internal'})
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -830,8 +799,6 @@ class LoadOrder(Workflow, ModelView, ModelSQL, IncotermDocumentMixin,
|
|||
cls.incoterm_version.states['invisible'] |= (~Eval('party'))
|
||||
else:
|
||||
cls.incoterm_version.states['invisible'] = (~Eval('party'))
|
||||
if 'party' not in cls.incoterm_version.depends:
|
||||
cls.incoterm_version.depends.append('party')
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
|
@ -1355,10 +1322,8 @@ class LoadOrderLine(ModelView, ModelSQL):
|
|||
fields.Many2One('product.uom', 'UOM'),
|
||||
'on_change_with_uom')
|
||||
unit_digits = fields.Function(fields.Integer('Unit Digits'),
|
||||
'on_change_with_unit_digits')
|
||||
quantity = fields.Float('Quantity',
|
||||
digits=(16, Eval('unit_digits', 2)),
|
||||
depends=['unit_digits'])
|
||||
'on_change_with_unit_digits')
|
||||
quantity = fields.Float('Quantity', digits=(16, Eval('unit_digits', 2)))
|
||||
moves = fields.One2Many('stock.move', 'origin', 'Moves', readonly=True)
|
||||
inventory_moves = fields.Function(
|
||||
fields.One2Many('stock.move', None, 'Inventory moves'),
|
||||
|
@ -1532,6 +1497,7 @@ class LoadSheet(CompanyReport):
|
|||
|
||||
|
||||
class NoteMixin(object):
|
||||
__slots__ = ()
|
||||
|
||||
@classmethod
|
||||
def get_context(cls, records, header, data):
|
||||
|
|
3
party.py
3
party.py
|
@ -9,8 +9,7 @@ class Party(metaclass=PoolMeta):
|
|||
__name__ = 'party.party'
|
||||
|
||||
cmr_template = fields.Many2One('carrier.load.cmr.template', 'CMR Template',
|
||||
states={'readonly': ~Eval('active')},
|
||||
depends=['active'])
|
||||
states={'readonly': ~Eval('active')})
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module_name):
|
||||
|
|
7
sale.py
7
sale.py
|
@ -58,6 +58,7 @@ class SaleCreditLimit(metaclass=PoolMeta):
|
|||
|
||||
|
||||
class CostMixin(object):
|
||||
__slots__ = ()
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -85,8 +86,7 @@ class CostSale(CostMixin, metaclass=PoolMeta):
|
|||
|
||||
document_carrier_amount = fields.Function(
|
||||
fields.Numeric('Sale carrier amount',
|
||||
digits=(16, Eval('currency_digits', 2)),
|
||||
depends=['currency_digits']),
|
||||
digits=(16, Eval('currency_digits', 2))),
|
||||
'get_document_carrier_amount')
|
||||
|
||||
def _compute_document_values(self):
|
||||
|
@ -141,8 +141,7 @@ class CostSaleLine(metaclass=PoolMeta):
|
|||
|
||||
document_carrier_amount = fields.Function(
|
||||
fields.Numeric('Sale carrier amount',
|
||||
digits=(16, Eval('currency_digits', 2)),
|
||||
depends=['currency_digits']),
|
||||
digits=(16, Eval('currency_digits', 2))),
|
||||
'get_document_carrier_amount')
|
||||
|
||||
def get_document_carrier_amount(self, name=None):
|
||||
|
|
1
setup.py
1
setup.py
|
@ -168,6 +168,5 @@ setup(name=name,
|
|||
carrier_load = trytond.modules.carrier_load
|
||||
""",
|
||||
test_suite='tests',
|
||||
test_loader='trytond.test_loader:Loader',
|
||||
tests_require=tests_require,
|
||||
)
|
||||
|
|
1
stock.py
1
stock.py
|
@ -27,6 +27,7 @@ class Move(metaclass=PoolMeta):
|
|||
|
||||
|
||||
class ShipmentLoadMixin(object):
|
||||
__slots__ = ()
|
||||
|
||||
load_orders = fields.One2Many('carrier.load.order', 'shipment',
|
||||
'Load orders', readonly=True)
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from .test_load import suite
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
import doctest
|
||||
import unittest
|
||||
import trytond.tests.test_tryton
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
from trytond.tests.test_tryton import doctest_teardown, doctest_checker
|
||||
|
||||
|
||||
class CarrierLoadTestCase(ModuleTestCase):
|
||||
"""Test carrier load module"""
|
||||
module = 'carrier_load'
|
||||
|
||||
def setUp(self):
|
||||
super(CarrierLoadTestCase, self).setUp()
|
||||
|
||||
|
||||
def suite():
|
||||
suite = trytond.tests.test_tryton.suite()
|
||||
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(
|
||||
CarrierLoadTestCase))
|
||||
suite.addTests(doctest.DocFileSuite(
|
||||
'scenario_load.rst',
|
||||
tearDown=doctest_teardown, encoding='utf-8',
|
||||
checker=doctest_checker,
|
||||
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
suite.addTests(doctest.DocFileSuite(
|
||||
'scenario_load_sale_cost_apply_invoice.rst',
|
||||
tearDown=doctest_teardown, encoding='utf-8',
|
||||
checker=doctest_checker,
|
||||
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE))
|
||||
return suite
|
|
@ -0,0 +1,15 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains the full
|
||||
# copyright notices and license terms.
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class CarrierLoadTestCase(ModuleTestCase):
|
||||
"""Test carrier load module"""
|
||||
module = 'carrier_load'
|
||||
extras = ['sale_cost_apply_invoice']
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
|
||||
del ModuleTestCase
|
|
@ -0,0 +1,7 @@
|
|||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
from trytond.tests.test_tryton import load_doc_tests
|
||||
|
||||
|
||||
def load_tests(*args, **kwargs):
|
||||
return load_doc_tests(__name__, __file__, *args, **kwargs)
|
|
@ -1,5 +1,5 @@
|
|||
[tryton]
|
||||
version=6.0.0
|
||||
version=6.4.0
|
||||
depends:
|
||||
carrier_configuration
|
||||
incoterm
|
||||
|
|
Loading…
Reference in New Issue