mirror of
https://bitbucket.org/presik/presik_pos.git
synced 2023-12-14 06:03:00 +01:00
Impprovements reporting and order
This commit is contained in:
parent
611d4dbfe9
commit
c3d94223da
|
@ -100,17 +100,24 @@ class SearchSale(QWidget):
|
|||
headers['party.name'] = {'desc': self.tr('PARTY'), 'type': 'char'}
|
||||
headers['sale_date'] = {'desc': self.tr('DATE'), 'type': 'char'}
|
||||
headers['salesman.rec_name'] = {'desc': self.tr('SALESMAN'), 'type': 'char'}
|
||||
headers['position'] = {'desc': self.tr('POSITION'), 'type': 'char'}
|
||||
headers['total_amount_cache'] = {'desc': self.tr('TOTAL AMOUNT'), 'type': 'number'}
|
||||
widths = [20, 120, 100, 180, 110, 260]
|
||||
|
||||
if self._parent._sale_pos_restaurant:
|
||||
headers['consumer.rec_name'] = {'desc': self.tr('CONSUMER'), 'type': 'char'}
|
||||
widths.append(310)
|
||||
|
||||
headers['position'] = {'desc': self.tr('POSITION'), 'type': 'char'}
|
||||
widths.append(100)
|
||||
headers['total_amount_cache'] = {'desc': self.tr('TOTAL AMOUNT'), 'type': 'number'}
|
||||
widths.append(80)
|
||||
|
||||
widths = [20, 100, 150, 100, 90, 150, 100, 100]
|
||||
title = self.tr('SEARCH SALES...')
|
||||
methods = {
|
||||
'on_selected_method': 'on_selected_sale',
|
||||
'on_return_method': 'on_selected_sale'
|
||||
}
|
||||
return SearchWindow(self._parent, headers, None, methods,
|
||||
filter_column=[1, 2, 3, 4], cols_width=widths,
|
||||
filter_column=[2, 3, 4, 6, 7], cols_width=widths,
|
||||
title=title, fill=True)
|
||||
|
||||
|
||||
|
@ -295,15 +302,15 @@ class DialogConsumer(QWidget):
|
|||
lambda: self._parent.update_consumer_data('birthday'))
|
||||
grid.addWidget(self._parent.row_field_birthday, 5, 2)
|
||||
|
||||
label_preference = QLabel(self.tr('NOTES:'))
|
||||
label_preference.setObjectName('label_preference')
|
||||
grid.addWidget(label_preference, 6, 1)
|
||||
self._parent.row_field_consumer_preference = QPlainTextEdit()
|
||||
self._parent.row_field_consumer_preference.setObjectName('row_field_id_number')
|
||||
self._parent.row_field_consumer_preference.textChanged.connect(
|
||||
lambda: self._parent.update_consumer_data('preferences')
|
||||
label_notes = QLabel(self.tr('NOTES:'))
|
||||
label_notes.setObjectName('label_notes')
|
||||
grid.addWidget(label_notes, 6, 1)
|
||||
self._parent.row_field_consumer_notes = QPlainTextEdit()
|
||||
self._parent.row_field_consumer_notes.setObjectName('row_field_id_number')
|
||||
self._parent.row_field_consumer_notes.textChanged.connect(
|
||||
lambda: self._parent.update_consumer_data('notes')
|
||||
)
|
||||
grid.addWidget(self._parent.row_field_consumer_preference, 6, 2)
|
||||
grid.addWidget(self._parent.row_field_consumer_notes, 6, 2)
|
||||
grid.setVerticalSpacing(15)
|
||||
grid.addWidget(self.get_button(), 7, 1, 1, 2)
|
||||
|
||||
|
|
|
@ -334,6 +334,7 @@ class MainWindow(FrontWindow):
|
|||
self.Comission = FastModel('commission', self.ctx)
|
||||
if self._sale_pos_restaurant:
|
||||
self.RestTables = FastModel('sale.shop.table', self.ctx)
|
||||
self.Consumer = FastModel('party.consumer', self.ctx)
|
||||
|
||||
self.device, = self.Device.find([
|
||||
('id', '=', self._user['sale_device']['id']),
|
||||
|
@ -1063,13 +1064,17 @@ class MainWindow(FrontWindow):
|
|||
self.message_bar.set('system_ready')
|
||||
return True
|
||||
|
||||
def print_invoice(self, sale_id=None, copies=1):
|
||||
def print_invoice(self, sale_id=None, type_doc='invoice', copies=1):
|
||||
if not sale_id:
|
||||
sale_id = self._sale['id']
|
||||
args = {'sale_id': sale_id}
|
||||
args = {
|
||||
'sale_id': sale_id,
|
||||
'type_doc': type_doc,
|
||||
}
|
||||
data = self.Sale.get_data(args)
|
||||
print('=====', data)
|
||||
for i in range(copies):
|
||||
self.receipt_sale.print_sale(data)
|
||||
self.receipt_sale.print_sale(data, type_doc)
|
||||
|
||||
def button_duplicate_sale(self):
|
||||
if self.sale_customer_selected:
|
||||
|
@ -1098,8 +1103,6 @@ class MainWindow(FrontWindow):
|
|||
for record in sales:
|
||||
self.model_sale_consumer.add_record(record)
|
||||
self.dialog_table_sale_consumer.exec_()
|
||||
else:
|
||||
pass
|
||||
|
||||
def button_accept_pressed(self):
|
||||
if not self._check_quantity():
|
||||
|
@ -1292,7 +1295,10 @@ class MainWindow(FrontWindow):
|
|||
self.set_amounts()
|
||||
|
||||
def action_consumer(self):
|
||||
self.clear_dialog_consumer()
|
||||
if not self._consumer.get('id'):
|
||||
self.clear_dialog_consumer()
|
||||
else:
|
||||
self.set_consumer()
|
||||
self.dialog_search_consumer.show()
|
||||
self.row_field_phone.setFocus()
|
||||
|
||||
|
@ -1308,23 +1314,26 @@ class MainWindow(FrontWindow):
|
|||
number = self.field_invoice_number_ask.text()
|
||||
printer_id = self.field_printer_ask.get_id()
|
||||
type_doc = self.field_type_ask.get_id()
|
||||
sale = {}
|
||||
sale_id = None
|
||||
if number:
|
||||
if type_doc in ['order', 'delivery']:
|
||||
sales = self.Sale.find([('number', '=', number)])
|
||||
if sales:
|
||||
sale = sales[0]
|
||||
if number == self._sale['number']:
|
||||
sale_id = self._sale['id']
|
||||
else:
|
||||
sales = self.Sale.find([('number', '=', number)])
|
||||
if sales:
|
||||
sale_id = sales[0]['id']
|
||||
else:
|
||||
args = {'number': number}
|
||||
sale = self.Sale.get_sale_from_invoice(args)
|
||||
if not sale:
|
||||
return self.message_bar.set('sale_number_not_found')
|
||||
sale_id = sale['id']
|
||||
else:
|
||||
sale_id = self._sale['id']
|
||||
|
||||
if not sale_id:
|
||||
return self.message_bar.set('sale_number_not_found')
|
||||
|
||||
if printer_id == '1':
|
||||
self.print_invoice(sale_id)
|
||||
self.print_invoice(sale_id, type_doc=type_doc)
|
||||
else:
|
||||
self.print_odt_invoice(sale)
|
||||
|
||||
|
@ -1638,10 +1647,18 @@ class MainWindow(FrontWindow):
|
|||
self.field_delivery_charge.set_enabled(True)
|
||||
if sale.get('delivery_charge'):
|
||||
self.field_delivery_charge.set_from_id(sale['delivery_charge'])
|
||||
print('table_assigned ', sale.get('table_assigned'))
|
||||
|
||||
if sale.get('table_assigned'):
|
||||
self.field_table_assigned.setText(sale['table_assigned']['name'] or '')
|
||||
|
||||
consumer = sale.get('consumer', None)
|
||||
if consumer:
|
||||
self.field_consumer.setText(consumer['name'] or '')
|
||||
self._consumer, = self.Consumer.find([
|
||||
('id', '=', consumer['id']),
|
||||
])
|
||||
print('Cargando consumer?', self._consumer)
|
||||
|
||||
if sale.get('channel'):
|
||||
self.field_channel.setText(sale['channel']['rec_name'].upper())
|
||||
|
||||
|
@ -1947,12 +1964,14 @@ class MainWindow(FrontWindow):
|
|||
self.field_order_number.setText('')
|
||||
self.field_state.setText('')
|
||||
self.current_comment = ''
|
||||
if hasattr(self, 'field_consumer'):
|
||||
self.field_consumer.setText('')
|
||||
if self.field_delivery_charge:
|
||||
self.field_delivery_charge.set_from_id('')
|
||||
if self.field_table_assigned:
|
||||
self.field_table_assigned.setText('')
|
||||
if hasattr(self, 'field_comment_ask'):
|
||||
# self.field_comment_ask.document().clear()
|
||||
#self.field_comment_ask.document().clear()
|
||||
pass
|
||||
if hasattr(self, 'field_points'):
|
||||
self.field_points.setText('')
|
||||
|
@ -2791,8 +2810,8 @@ class MainWindow(FrontWindow):
|
|||
self.state_delivery_party['active'] = self.row_delivery_men_active.isChecked()
|
||||
|
||||
def update_consumer_data(self, field=''):
|
||||
if field == 'preferences':
|
||||
self.state_consumer['preferences'] = self.row_field_consumer_preference.toPlainText()
|
||||
if field == 'notes':
|
||||
self.state_consumer['notes'] = self.row_field_consumer_notes.toPlainText()
|
||||
if field == 'address':
|
||||
self.state_consumer['address'] = self.row_field_address.text()
|
||||
elif field == 'id_number':
|
||||
|
@ -2816,18 +2835,19 @@ class MainWindow(FrontWindow):
|
|||
self.row_field_consumer.setText('')
|
||||
self.row_field_id_number.setText('')
|
||||
self.row_field_birthday.setDate(MINIMUM_DATE)
|
||||
self.row_field_consumer_preference.clear()
|
||||
self.row_field_consumer_notes.clear()
|
||||
else:
|
||||
self.button_history_customer.setVisible(True)
|
||||
self._consumer = consumers[0]
|
||||
self.row_field_address.setText(self._consumer['address'])
|
||||
self.row_field_consumer.setText(self._consumer['name'])
|
||||
self.row_field_id_number.setText(self._consumer['id_number'])
|
||||
self.row_field_consumer_preference.insertPlainText(
|
||||
self._consumer['preferences'])
|
||||
if self._consumer.get('birthday'):
|
||||
y, m, d = self._consumer['birthday'].split('-')
|
||||
self.row_field_birthday.setDate(QDate(int(y), int(m), int(d)))
|
||||
self.set_consumer()
|
||||
# self.row_field_address.setText(self._consumer['address'])
|
||||
# self.row_field_consumer.setText(self._consumer['name'])
|
||||
# self.row_field_id_number.setText(self._consumer['id_number'])
|
||||
# self.row_field_consumer_notes.insertPlainText(
|
||||
# self._consumer['notes'])
|
||||
# if self._consumer.get('birthday'):
|
||||
# y, m, d = self._consumer['birthday'].split('-')
|
||||
# self.row_field_birthday.setDate(QDate(int(y), int(m), int(d)))
|
||||
|
||||
def action_table_assigned(self, table, name, trasition_state):
|
||||
current_table = self._sale.get('table_assigned')
|
||||
|
@ -2882,37 +2902,20 @@ class MainWindow(FrontWindow):
|
|||
self.row_field_consumer.setText('')
|
||||
self.row_field_id_number.setText('')
|
||||
self.row_field_birthday.setDate(QDate(2000, 1, 1))
|
||||
self.row_field_consumer_preference.clear()
|
||||
self.row_field_consumer_notes.clear()
|
||||
self.button_history_customer.setVisible(False)
|
||||
|
||||
# def print_equivalent_invoice(self, sale_id):
|
||||
# sale, = self.Sale.find([('id', '=', sale_id)])
|
||||
|
||||
# if not sale['invoices']:
|
||||
# return
|
||||
#
|
||||
# invoice_id = sale['invoices'][0]
|
||||
# commissions = self._Commission.find([
|
||||
# ('origin', '=', 'account.invoice,' + str(invoice_id))
|
||||
# ])
|
||||
#
|
||||
# # if not commissions:
|
||||
# # return
|
||||
# # commission = commissions[0]
|
||||
# # if not commission['invoice_line.invoice']:
|
||||
# # return
|
||||
# #
|
||||
# # model = u'account.invoice'
|
||||
# # data = {
|
||||
# # 'model': model,
|
||||
# # 'action_id': self._action_report_equivalent['id'],
|
||||
# # 'id': commission['invoice_line.invoice'],
|
||||
# # 'ids': [commission['invoice_line.invoice']],
|
||||
# # }
|
||||
# # ctx = {'date_format': u'%d/%m/%Y'}
|
||||
# # ctx.update(self._context)
|
||||
# # Action.exec_report(self.conn, u'account.invoice',
|
||||
# # data, direct_print=True, context=ctx)
|
||||
def set_consumer(self):
|
||||
# self._consumer = {}
|
||||
self.row_field_phone.setText(self._consumer['phone'])
|
||||
self.row_field_consumer.setText(self._consumer['name'])
|
||||
self.row_field_address.setText(self._consumer['address'])
|
||||
self.row_field_id_number.setText(self._consumer['id_number'])
|
||||
self.row_field_consumer_notes.insertPlainText(
|
||||
self._consumer['notes'])
|
||||
if self._consumer.get('birthday'):
|
||||
y, m, d = self._consumer['birthday'].split('-')
|
||||
self.row_field_birthday.setDate(QDate(int(y), int(m), int(d)))
|
||||
|
||||
|
||||
class DoInvoice(QThread):
|
||||
|
|
|
@ -80,7 +80,7 @@ MODELS = {
|
|||
'party.consumer': {
|
||||
'rec_name': 'rec_name',
|
||||
'fields': ['party', 'id_number', 'rec_name', 'name', 'address',
|
||||
'phone', 'birthday', 'preferences']
|
||||
'phone', 'birthday', 'notes']
|
||||
},
|
||||
'account.invoice.payment_term': {
|
||||
'rec_name': 'name',
|
||||
|
|
123
app/reporting.py
123
app/reporting.py
|
@ -147,7 +147,7 @@ class Receipt(object):
|
|||
self._device = device
|
||||
self._profile = printer['profile']
|
||||
|
||||
def print_sale(self, sale):
|
||||
def print_sale(self, sale, type_doc=None):
|
||||
try:
|
||||
if self._interface == 'usb':
|
||||
if os.name == 'posix':
|
||||
|
@ -168,13 +168,13 @@ class Receipt(object):
|
|||
self.logger.info("Warning: Can not found Printer!")
|
||||
return
|
||||
self.logger.info("Info: Printer is OK!")
|
||||
self._print_sale(sale)
|
||||
self._print_sale(sale, type_doc)
|
||||
except:
|
||||
self.logger.info("Warning: Printer error or device not found!")
|
||||
|
||||
def _print_sale(self, sale):
|
||||
def _print_sale(self, sale, type_doc=None):
|
||||
self.print_header()
|
||||
self.print_body(sale)
|
||||
self.print_body(sale, type_doc)
|
||||
if sale.get('cufe'):
|
||||
self._printer.text('CUFE: ' + sale['cufe'])
|
||||
if sale.get('qr_code'):
|
||||
|
@ -253,25 +253,28 @@ class Receipt(object):
|
|||
self._printer.text(left)
|
||||
self._printer.text(right + '\n')
|
||||
|
||||
def print_body(self, sale):
|
||||
def print_body(self, sale, type_doc='invoice'):
|
||||
self._cashdraw = True
|
||||
self._printer.set(font=_FONT_B)
|
||||
if sale.get('delivery_way'):
|
||||
self._printer.set(custom_size=True, width=2, height=2)
|
||||
delivery_way = ' - - - %s - - - ' % sale['delivery_way'].upper()
|
||||
self._printer.text(delivery_way)
|
||||
kind_string = sale.get('kind_string', None)
|
||||
if type_doc != 'invoice' and kind_string:
|
||||
self._printer.set(custom_size=True, width=2, height=2, align='center')
|
||||
kind = f'- - - {kind_string} - - -'
|
||||
self._printer.text(kind)
|
||||
self.print_enter()
|
||||
self.print_enter()
|
||||
self._printer.set(custom_size=False)
|
||||
self._printer.set(align='left')
|
||||
if sale['number'] and sale['state'] in ['processing', 'done', 'cancel']:
|
||||
if sale['total_amount'] >= 0:
|
||||
self._printer.text('FACTURA DE VENTA No. ' + sale['number'])
|
||||
else:
|
||||
self._printer.text('NOTA CREDITO No. ' + sale['number'])
|
||||
else:
|
||||
if type_doc == 'invoice':
|
||||
if sale['number'] and sale['state'] in ['processing', 'done', 'cancel']:
|
||||
if sale['total_amount'] >= 0:
|
||||
self._printer.text('FACTURA DE VENTA No. ' + sale['number'])
|
||||
else:
|
||||
self._printer.text('NOTA CREDITO No. ' + sale['number'])
|
||||
elif type_doc in ['order', 'delivery']:
|
||||
self._cashdraw = False
|
||||
self._printer.text('Pedido: ' + sale['order'])
|
||||
self._printer.text('PEDIDO: ' + sale['order'])
|
||||
|
||||
self.print_enter()
|
||||
#mod_hours = sale["create_date"] + timedelta(hours=self._delta_locale)
|
||||
#time_ = mod_hours.strftime('%I:%M %p')
|
||||
|
@ -296,17 +299,31 @@ class Receipt(object):
|
|||
if sale.get('party_phone'):
|
||||
self.print_enter()
|
||||
self._printer.text('Telefono: %s' % sale['party_phone'])
|
||||
|
||||
self.print_enter()
|
||||
self.print_horinzontal_line()
|
||||
if sale.get('delivery_party'):
|
||||
self._printer.text('Domiciliario: %s' % sale['delivery_party'])
|
||||
if sale.get('channel'):
|
||||
self.print_enter()
|
||||
self._printer.text('Canal de venta: %s' % sale['channel'])
|
||||
if sale.get('payment_term'):
|
||||
self.print_enter()
|
||||
self._printer.text('Forma De Pago: %s' % sale['payment_term'])
|
||||
self._printer.text('Forma de Pago: %s' % sale['payment_term'])
|
||||
|
||||
self.print_enter()
|
||||
consumer_name = sale.get('consumer_name', None)
|
||||
if consumer_name:
|
||||
consumer_address = sale.get('consumer_address', '')
|
||||
consumer_phone = sale.get('consumer_phone', '')
|
||||
consumer_notes = sale.get('consumer_notes', '')
|
||||
self.print_horinzontal_line()
|
||||
self.print_enter()
|
||||
self._printer.set(align='center')
|
||||
self._printer.text('========= INFO CONSUMIDOR =========')
|
||||
self.print_enter()
|
||||
self._printer.set(align='left')
|
||||
self._printer.text('NOMBRE: %s' % consumer_name)
|
||||
self.print_enter()
|
||||
self._printer.text('DIRECCION: %s' % consumer_address)
|
||||
self.print_enter()
|
||||
self._printer.text('TELEFONO: %s' % consumer_phone)
|
||||
self.print_enter()
|
||||
self._printer.text('NOTAS: %s' % consumer_notes)
|
||||
self.print_enter()
|
||||
|
||||
self.print_enter()
|
||||
self.print_horinzontal_line()
|
||||
self.print_split(' Articulo ', 'Subtotal ')
|
||||
|
@ -402,13 +419,12 @@ class Receipt(object):
|
|||
|
||||
self.print_enter()
|
||||
self.print_horinzontal_line()
|
||||
no_products = 'No Items: %s' % str(sale['num_products'])
|
||||
no_products = 'No ITEMS: %s' % str(sale['num_products'])
|
||||
self._printer.text(no_products)
|
||||
self.print_enter()
|
||||
|
||||
auth_kind = sale.get('auth_kind', None)
|
||||
if auth_kind and sale['state'] not in ['draft']:
|
||||
print(auth_kind, self._authorizations)
|
||||
auth_data = self._authorizations[auth_kind]
|
||||
self._printer.text(self.get_authorization(auth_data))
|
||||
self.print_enter()
|
||||
|
@ -416,30 +432,35 @@ class Receipt(object):
|
|||
self._printer.text(self._gta_info)
|
||||
self.print_enter()
|
||||
|
||||
if sale['state'] in ['processing', 'done']:
|
||||
self._printer.text('Pedido: ' + sale['order'])
|
||||
if type_doc == 'invoice':
|
||||
self._printer.text('No PEDIDO: ' + sale['order'])
|
||||
self.print_enter()
|
||||
|
||||
register = 'Caja No. %s' % self._sale_device
|
||||
register = 'CAJA No. %s' % self._sale_device
|
||||
self._printer.text(register)
|
||||
self.print_enter()
|
||||
|
||||
self._printer.text('Cajero: %s' % self._user)
|
||||
self._printer.text('CAJERO: %s' % self._user)
|
||||
self.print_enter()
|
||||
if sale.get('salesman'):
|
||||
self._printer.text('Vendedor: %s' % sale['salesman'])
|
||||
self._printer.text('VENDEDOR: %s' % sale['salesman'])
|
||||
self.print_enter()
|
||||
if sale.get('comment'):
|
||||
self._printer.text('Notas: %s' % sale['comment'])
|
||||
self._printer.text('NOTAS: %s' % sale['comment'])
|
||||
self.print_enter()
|
||||
|
||||
if self._show_position:
|
||||
self._printer.text('Posicion: %s' % str(sale['position']))
|
||||
self._printer.text('POSICION: %s' % str(sale['position']))
|
||||
self.print_enter()
|
||||
|
||||
self.print_horinzontal_line()
|
||||
if sale.get('delivery_party'):
|
||||
self._printer.text('DOMICILIARIO: %s' % sale['delivery_party'])
|
||||
self.print_enter()
|
||||
if sale.get('channel'):
|
||||
self._printer.text('CANAL DE VENTA: %s' % sale['channel'])
|
||||
self.print_enter()
|
||||
|
||||
self._printer.set(align='center')
|
||||
#self.print_split('Puntos Acumulados:', sale['points'])
|
||||
#self.print_enter()
|
||||
self.print_enter()
|
||||
self.print_enter()
|
||||
|
||||
|
@ -532,18 +553,24 @@ class Receipt(object):
|
|||
self.print_enter()
|
||||
|
||||
kind = order.get('kind', 'delivery')
|
||||
if kind == 'delivery':
|
||||
_kind = 'DOMICILIO'
|
||||
if kind == 'take_away':
|
||||
_kind = 'PARA LLEVAR'
|
||||
elif kind == 'to_table':
|
||||
_kind = 'PARA MESA'
|
||||
else:
|
||||
_kind = 'PARA LLEVAR'
|
||||
_kind = 'DOMICILIO'
|
||||
|
||||
self._printer.set(custom_size=True, width=2, height=2, align='center')
|
||||
title = f'+ + + {_kind} + + +'
|
||||
self._printer.text(title)
|
||||
self.print_enter()
|
||||
|
||||
self._printer.set(custom_size=True, width=2, height=2, align='center')
|
||||
self.print_enter()
|
||||
self._printer.text(order['sale_number'])
|
||||
self.print_enter()
|
||||
self._printer.set(custom_size=False)
|
||||
|
||||
self._printer.set(align='left')
|
||||
self.print_enter()
|
||||
date_ = datetime.now().strftime("%Y-%m-%d %H:%M %p")
|
||||
|
@ -565,9 +592,6 @@ class Receipt(object):
|
|||
self._printer.text('CARGO DEL DOMICILIO: ' + _charge_to)
|
||||
self.print_enter()
|
||||
|
||||
self._printer.text('PEDIDO: %s' % str(order['sale_number']))
|
||||
self.print_enter()
|
||||
|
||||
position = order.get('position')
|
||||
if position:
|
||||
self._printer.text('POSICION: %s' % str(position))
|
||||
|
@ -592,11 +616,9 @@ class Receipt(object):
|
|||
|
||||
if self.order_kind == 'command':
|
||||
self._printer.set(custom_size=True, width=2, height=2, align='center')
|
||||
if not reversion:
|
||||
self._printer.text('PREPARAR Y SERVIR')
|
||||
else:
|
||||
self._printer.text('> R E V E R S I O N <')
|
||||
self.print_enter()
|
||||
if reversion:
|
||||
self._printer.text('>>> R E V E R S I O N <<<')
|
||||
self.print_enter()
|
||||
|
||||
col_width_name = self.order_col_2 + self.order_col_3
|
||||
if self.order_kind == 'command':
|
||||
|
@ -610,13 +632,14 @@ class Receipt(object):
|
|||
self._printer.set(custom_size=True, width=1, height=2)
|
||||
self.print_col(qty, self.order_col_1)
|
||||
self.print_col(line['name'], col_width_name)
|
||||
self._printer.set(custom_size=False)
|
||||
# self._printer.set(custom_size=False)
|
||||
# self.print_col(' ' + str(line['unit_price']), self.order_col_3)
|
||||
if line['note']:
|
||||
self._printer.set(align='left')
|
||||
self._printer.set(custom_size=True, width=1, height=2, align='right')
|
||||
self.print_enter()
|
||||
self._printer.text(' --->> NOTA: ' + line['note'])
|
||||
self.print_enter()
|
||||
self.print_enter()
|
||||
|
||||
self.print_enter()
|
||||
self.print_horinzontal_double_line()
|
||||
|
|
Loading…
Reference in a new issue