diff --git a/__init__.py b/__init__.py index dd92f22..c62f471 100644 --- a/__init__.py +++ b/__init__.py @@ -22,6 +22,7 @@ def register(): sale.SaleLineHistoryDelete, sale.SaleLineHistoryDeleteStart, sale.SaleMove, + sale.OrderStatusTime, shop.SaleShop, production.Production, product.ProductMixOption, diff --git a/sale.py b/sale.py index 44f72b1..2ada278 100644 --- a/sale.py +++ b/sale.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from datetime import date, datetime from sql import Table from trytond.pool import PoolMeta, Pool -from trytond.model import fields, ModelSQL, ModelView +from trytond.model import fields, ModelSQL, ModelView, DictSchemaMixin from trytond.modules.product import price_digits from trytond.pyson import Eval from trytond.transaction import Transaction @@ -26,6 +26,18 @@ KIND = [ ('to_table', 'To Table') ] +OPTIONS_STATUS = [ + ('', ''), + ('draft', 'Draft'), + ('requested', 'Requested'), + ('commanded', 'Commanded'), + ('in_preparation', 'In Preparation'), + ('dispatched', 'Dispatched'), + ('delivered', 'Delivered'), + ('rejected', 'Rejected'), + ('cancelled', 'Cancelled'), + ] + class SaleMove(ModelSQL): "Sale - Stock Move" @@ -47,21 +59,12 @@ class Sale(metaclass=PoolMeta): productions = fields.Function(fields.One2Many('production', None, 'Productions'), 'get_productions') production_moves = fields.Many2Many('sale.sale-stock.move', 'sale', 'move', 'Production Moves') delivery_time = fields.Numeric('Delivery Time (Min)', help="In Minutes") - order_status = fields.Selection([ - ('', ''), - ('draft', 'Draft'), - ('requested', 'Requested'), - ('commanded', 'Commanded'), - ('in_preparation', 'In Preparation'), - ('dispatched', 'Dispatched'), - ('delivered', 'Delivered'), - ('rejected', 'Rejected'), - ('cancelled', 'Cancelled'), - ], 'Order Status') + order_status = fields.Selection(OPTIONS_STATUS, 'Order Status') order_status_string = order_status.translated('order_status') shipping_time = fields.DateTime('Shipping Time') waiting_time = fields.Function(fields.Integer('Shipping Time', help="In Minutes"), 'get_waiting_time') + order_status_time = fields.Many2One('sale.order_status.time', string='Times Order Status') @classmethod def __setup__(cls): @@ -323,6 +326,20 @@ class SaleForceDraft(Wizard): return super(SaleForceDraft, self).transition_force_draft() +class OrderStatusTime(ModelSQL, ModelView): + "Sale Order Status Time" + __name__ = 'sale.order_status.time' + _rec_name = 'sale' + + sale = fields.Many2One('sale.sale', 'Sale', ondelete='CASCADE') + requested = fields.DateTime('Requested') + commanded = fields.DateTime('commanded') + dispatched = fields.DateTime('Dispatched') + delivered = fields.DateTime('Delivered') + rejected = fields.DateTime('Rejected') + cancelled = fields.DateTime('Cancelled') + + class SaleLine(metaclass=PoolMeta): __name__ = 'sale.line' production = fields.Many2One('production', 'Production') diff --git a/tryton.cfg b/tryton.cfg index 6a89263..6f9003b 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -1,5 +1,5 @@ [tryton] -version=6.0.3 +version=6.0.4 depends: ir sale diff --git a/view/sale_form.xml b/view/sale_form.xml index 035d552..7f1a508 100644 --- a/view/sale_form.xml +++ b/view/sale_form.xml @@ -9,4 +9,9 @@ copyright notices and license terms. --> + +