minor fix remove fields innecesary

and set times transition prepare order
This commit is contained in:
Wilson Gomez 2023-08-28 15:41:48 -05:00
parent 7ca9da32e0
commit 3e572d9a92
2 changed files with 66 additions and 29 deletions

91
sale.py
View File

@ -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')

View File

@ -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>