fix get command

This commit is contained in:
Wilson Gomez 2023-10-24 14:26:18 -05:00
parent 6b437d7e6b
commit bf949199d9
2 changed files with 50 additions and 54 deletions

View File

@ -101,10 +101,10 @@ class Task(ModelSQL, ModelView):
@classmethod
def get_tasks_to_print(cls, args):
one_hour_ago = str(datetime.now() - timedelta(hours=1))
thirty_minutes_ago = str(datetime.now() - timedelta(minutes=30))
dom = [
('state', '=', 'pending'),
('create_date', '>=', one_hour_ago)
('create_date', '>=', thirty_minutes_ago)
]
if args.get('sale_id'):
dom.append('line.sale', '=', args['sale_id'])

100
sale.py
View File

@ -209,39 +209,38 @@ class Sale(metaclass=PoolMeta):
shop = self.shop
line_commanded = []
for line in self.lines:
if not line.task_printed:
line_commanded.append(line)
qty = line.quantity
note = line.note
line_id = line.id
tasks = line.product.tasks
att_getter = attrgetter("name")
att_getter_p = attrgetter("host", "interface", "port", "row_characters")
for t in tasks:
station = t.work_station
station_id = station.id
name = att_getter(t)
value = {
'name': name, 'qty': qty, 'note': note,
'id': line_id, 'task_id': t.id}
for p in t.work_station.printers:
key = str(p.id) + '_' + str(station_id)
if p.shop == shop:
try:
data_grouped_printer[key]['lines'].append(value)
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
data_grouped_printer[key]['work_station'] = station.name
data_grouped_printer[key]['lines'] = [value]
line_commanded.append(line)
qty = line.quantity
note = line.note
line_id = line.id
tasks = line.product.tasks
att_getter = attrgetter("name")
att_getter_p = attrgetter("host", "interface", "port", "row_characters")
for t in tasks:
station = t.work_station
station_id = station.id
name = att_getter(t)
value = {
'name': name, 'qty': qty, 'note': note,
'id': line_id, 'task_id': t.id}
for p in t.work_station.printers:
key = str(p.id) + '_' + str(station_id)
if p.shop == shop:
try:
data_grouped_printer[key]['lines'].append(value)
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
data_grouped_printer[key]['work_station'] = station.name
data_grouped_printer[key]['lines'] = [value]
# Line.write(line_commanded, {'status_order': 'commanded'})
return data_grouped_printer
@ -524,13 +523,14 @@ class SaleLine(metaclass=PoolMeta):
Sale = Pool().get('sale.sale')
Printer = Pool().get('sale.pos_printer')
one_hour_ago = str(datetime.now() - timedelta(hours=1))
thirty_minutes_ago = str(datetime.now() - timedelta(minutes=30))
shop = args.get('shop')
fields_printer = [
'shop', 'name',
'host', 'interface',
'port', 'row_characters',
'categories.sequence', 'categories.category.name'
]
printers = Printer.search_read(['shop', '=', shop],
fields_names=fields_printer)
@ -539,7 +539,7 @@ class SaleLine(metaclass=PoolMeta):
("sale.shop", "=", shop),
("sale.state", "in", ("draft", "quotation")),
("status_order", "=", 'requested'),
("create_date", ">=", one_hour_ago),
("create_date", ">=", thirty_minutes_ago),
]
if args.get('sale_id'):
dom.append(('sale', '=', args['sale_id']))
@ -572,13 +572,13 @@ class SaleLine(metaclass=PoolMeta):
'party': s.get('party.', {}).get('name'),
'kind': s['kind'],
'delivery_amount': s['delivery_amount'],
'salesman': s.get('salesman.', {}).get('rec_name'),
'salesman': s.get('salesman.').get('rec_name') if s.get('salesman.') else '',
'comment': s.get('comment', ''),
'payment_term': s.get('payment_term.', {}).get('name', ''),
'delivery_charge': s['delivery_charge'],
'total_amount': str(s['total_amount']),
'shop': s.get('shop.', {}).get('name', ''),
'table_assigned': s.get('table_assigned.', {}).get('name', ''),
'table_assigned': s.get('table_assigned.').get('name', '') if s.get('table_assigned.') else '',
}
for s in sales
}
@ -610,29 +610,26 @@ class SaleLine(metaclass=PoolMeta):
if key not in orders:
orders[key] = {**printer, **sale, 'lines': []}
if 'categories.' in printer:
orders[key]['lines'] = {
c['sequence']: {
'name': c.get('category.', {}).get('name'),
'lines': []} for c in printer['categories']}
orders[key]['categories'] = {c['category.']['id']: c['sequence'] for c in printer['categories.']}
if len(printer.get('categories.')) > 1:
orders[key]['lines'] = {
c['sequence']: {
'name': c.get('category.', {}).get('name'),
'lines': []} for c in printer['categories.']}
orders[key]['categories'] = {c['category.']['id']: c['sequence'] for c in printer['categories.']}
if isinstance(orders[key]['lines'], list):
orders[key]['lines'].append(value_line)
else:
key_id = orders[key]['categories'].get(categories[0], 'others')
if 'others' not in orders[key]['lines']:
key_id = str(orders[key]['categories'].get(categories[0], 'others'))
if key_id == 'others' and 'others' not in orders[key]['lines']:
orders[key]['lines']['others'] = {'name': 'OTROS', 'lines': []}
orders[key]['lines'][key_id]['lines'].append(value_line)
return list(orders.values())
@classmethod
def get_data_tasks(cls, args):
Task = Pool().get('production.task')
one_hour_ago = str(datetime.now() - timedelta(hours=1))
thirty_minutes_ago = str(datetime.now() - timedelta(minutes=30))
shop = args['shop']
fields = [
'sale.number', 'quantity', 'note',
@ -646,19 +643,18 @@ class SaleLine(metaclass=PoolMeta):
dom = [
("sale.shop", "=", shop),
("sale.state", "in", ("draft", "quotation")),
("create_date", ">=", one_hour_ago),
("create_date", ">=", thirty_minutes_ago),
("without_task", "!=", True),
("tasks", '=', None)
]
if args.get('sale_id'):
dom.append(('sale', '=', args['sale']))
dom.append(('sale', '=', args['sale_id']))
lines = cls.search_read(
dom, fields_names=fields,
order=[('sale', 'ASC'), ('id', 'DESC')])
to_create = []
lines_without_tasks = []
print(lines, 'validate tasks')
for line in lines:
quantity = line['quantity']
note = line['note']