minor fix remove fields innecesary
and set times transition prepare order
This commit is contained in:
parent
7ca9da32e0
commit
3e572d9a92
91
sale.py
91
sale.py
|
@ -28,16 +28,16 @@ KIND = [
|
|||
]
|
||||
|
||||
OPTIONS_STATUS = [
|
||||
('', ''),
|
||||
('draft', 'Draft'),
|
||||
('requested', 'Requested'),
|
||||
('commanded', 'Commanded'),
|
||||
('in_preparation', 'In Preparation'),
|
||||
('dispatched', 'Dispatched'),
|
||||
('delivered', 'Delivered'),
|
||||
('rejected', 'Rejected'),
|
||||
('cancelled', 'Cancelled'),
|
||||
]
|
||||
('', ''),
|
||||
('draft', 'Draft'),
|
||||
('requested', 'Requested'),
|
||||
('commanded', 'Commanded'),
|
||||
('in_preparation', 'In Preparation'),
|
||||
('dispatched', 'Dispatched'),
|
||||
('delivered', 'Delivered'),
|
||||
('rejected', 'Rejected'),
|
||||
('cancelled', 'Cancelled'),
|
||||
]
|
||||
|
||||
|
||||
class SaleMove(ModelSQL):
|
||||
|
@ -59,10 +59,10 @@ 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(OPTIONS_STATUS, 'Order Status')
|
||||
order_status_string = order_status.translated('order_status')
|
||||
shipping_time = fields.DateTime('Shipping Time')
|
||||
# delivery_time = fields.Numeric('Delivery Time (Min)', help="In Minutes")
|
||||
# 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')
|
||||
|
@ -81,17 +81,54 @@ class Sale(metaclass=PoolMeta):
|
|||
delta = int((now - self.create_date).seconds / 60)
|
||||
return delta
|
||||
|
||||
@classmethod
|
||||
def write(cls, *args):
|
||||
actions = iter(args)
|
||||
delivery_sales = []
|
||||
for sales, values in zip(actions, actions):
|
||||
if 'delivery_party' in values:
|
||||
delivery_sales.extend(sales)
|
||||
if delivery_sales:
|
||||
now = datetime.now()
|
||||
order_status = [sale.order_status_time for sale in delivery_sales if sale.order_status_time]
|
||||
Order = order_status[0].__class__
|
||||
Order.write(order_status, {'dispatched': now})
|
||||
super(Sale, cls).write(*args)
|
||||
|
||||
@classmethod
|
||||
def mark_commanded(cls, args):
|
||||
"""
|
||||
This method mark as commanded all products in sale, previous
|
||||
positive response of local printer
|
||||
"""
|
||||
sale = cls(args['sale_id'])
|
||||
sale.order_status = 'commanded'
|
||||
now = datetime.now()
|
||||
if sale.order_status_time:
|
||||
sale.order_status_time.commanded = now
|
||||
sale.order_status_time.save()
|
||||
else:
|
||||
Status = Pool().get('sale.order_status.time')
|
||||
status, = Status.create([{'commanded': now, 'requested': now, 'sale': args['sale_id']}])
|
||||
sale.order_status_time = status
|
||||
sale.save()
|
||||
Line = sale.lines[0].__class__
|
||||
Line.write(list(sale.lines), {'order_sended': True})
|
||||
# for line in sale.lines:
|
||||
# line.order_sended = True
|
||||
# line.save()
|
||||
|
||||
@classmethod
|
||||
def do(cls, sales):
|
||||
if sales:
|
||||
ShopTable = Pool().get('sale.shop.table')
|
||||
tables = ShopTable.search([('sale', 'in', [s.id for s in sales])])
|
||||
if tables:
|
||||
ShopTable.write(tables, {'sale': None, 'state':'available'})
|
||||
ShopTable.write(tables, {'sale': None, 'state': 'available'})
|
||||
|
||||
def get_data_for_stations(self):
|
||||
TaskConfig = Pool().get('production.configuration_task')
|
||||
Line = Pool().get('sale.line')
|
||||
# TaskConfig = Pool().get('production.configuration_task')
|
||||
Line = Pool().get('sale.line')
|
||||
data_grouped_printer = {}
|
||||
if not self.number:
|
||||
self.set_number([self])
|
||||
|
@ -111,18 +148,18 @@ class Sale(metaclass=PoolMeta):
|
|||
name, description = att_getter(t)
|
||||
value = {'name': name, 'description': description, 'qty': qty}
|
||||
for p in t.work_station.printers:
|
||||
key = str(p.id) + '_' + str(station_id)
|
||||
key = str(p.id) + '_' + str(station_id)
|
||||
if p.shop == shop:
|
||||
try:
|
||||
data_grouped_printer[key]['lines'].append(value)
|
||||
except:
|
||||
except Exception:
|
||||
host, interface, port, row_characters = att_getter_p(p)
|
||||
value_printer = {
|
||||
'device': host,
|
||||
'interface': interface,
|
||||
'profile': '',
|
||||
'row_characters': row_characters
|
||||
}
|
||||
}
|
||||
data_grouped_printer[key] = {}
|
||||
data_grouped_printer[key]['printer'] = value_printer
|
||||
data_grouped_printer[key]['sale'] = data_sale
|
||||
|
@ -150,10 +187,10 @@ class Sale(metaclass=PoolMeta):
|
|||
sale = sale_pay['sale']
|
||||
journal_id = sale_pay['journal_id']
|
||||
statements = Statement.search([
|
||||
('journal', '=', journal_id),
|
||||
('state', '=', 'draft'),
|
||||
('sale_device', '=', sale.sale_device),
|
||||
], order=[('date', 'DESC')])
|
||||
('journal', '=', journal_id),
|
||||
('state', '=', 'draft'),
|
||||
('sale_device', '=', sale.sale_device),
|
||||
], order=[('date', 'DESC')])
|
||||
if not statements:
|
||||
raise PayValidationError(
|
||||
gettext('sale_pos_frontend_rest.msg_message_error', s='A draft statement payments has not been created.'))
|
||||
|
@ -243,7 +280,7 @@ class Sale(metaclass=PoolMeta):
|
|||
company=company,
|
||||
currency=company.currency if company else None,
|
||||
state='draft',
|
||||
)
|
||||
)
|
||||
return move
|
||||
|
||||
@classmethod
|
||||
|
@ -268,8 +305,8 @@ class Sale(metaclass=PoolMeta):
|
|||
return
|
||||
if line.product.producible:
|
||||
boms = Bom.search([
|
||||
('output_products', '=', line.product.id)
|
||||
])
|
||||
('output_products', '=', line.product.id)
|
||||
])
|
||||
|
||||
if not boms:
|
||||
continue
|
||||
|
@ -324,7 +361,7 @@ class Sale(metaclass=PoolMeta):
|
|||
outputs.append(move)
|
||||
|
||||
moves = inputs + outputs
|
||||
Move.do(inputs+outputs)
|
||||
Move.do(inputs + outputs)
|
||||
sale.production_moves = moves
|
||||
sale.save()
|
||||
|
||||
|
@ -373,7 +410,7 @@ 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')
|
||||
|
|
|
@ -13,9 +13,9 @@ copyright notices and license terms. -->
|
|||
<field name="order_status"/>
|
||||
<label name="table_assigned"/>
|
||||
<field name="table_assigned" widget="selection"/>
|
||||
<label name="delivery_time"/>
|
||||
<!-- <label name="delivery_time"/>
|
||||
<field name="delivery_time"/>
|
||||
<label name="shipping_time"/>
|
||||
<field name="shipping_time"/>
|
||||
<field name="shipping_time"/> -->
|
||||
</xpath>
|
||||
</data>
|
||||
|
|
Loading…
Reference in New Issue