Add report delivery man

This commit is contained in:
Oscar Alvarez 2021-02-02 20:52:03 -05:00
parent 8c201cab09
commit f55dddc80b
4 changed files with 74 additions and 28 deletions

View File

@ -45,6 +45,14 @@ WIZARDS = {
'values': [('', ''), ('1', '1'), ('2', '2'), ('3', '3')],
}),
],
},
'delivery_report': {
'fields': [
('date', {
'name': 'FECHA',
'type': 'date',
}),
],
}
}
@ -104,23 +112,30 @@ class DialogReports(QuickDialog):
self.setWindowTitle('REPORTES')
self.add_widget(vbox)
def open_wizard(self, report):
def open_wizard(self, report, add_fields=None, open_print=False):
vbox = QVBoxLayout()
wiz_report = WIZARDS[report]
report_name = wiz_report['name']
fields = OrderedDict(wiz_report['fields'])
fields = wiz_report['fields']
print(fields)
if add_fields:
fields.append(add_fields)
fields = OrderedDict(fields)
self.form = GridForm(self, fields, col=2)
vbox.addLayout(self.form)
dialog = QuickDialog(self, 'action', widgets=[vbox])
result = dialog.exec()
store = self.form.getStore()
values = {}
for cf in wiz_report['ctx_fields']:
for cf in wiz_report.get('ctx_fields', []):
values[cf] = self.parent.ctx[cf]
values.update(store)
if result == 1:
self.open_report(report_name, values)
if open_print:
return values
else:
report_name = wiz_report['name']
self.open_report(report_name, values)
def open_report(self, report_name, data):
report = FastReport(self.parent.ctx)

View File

@ -1322,9 +1322,38 @@ class AppWindow(FrontWindow):
return result
def action_delivery_report(self):
print('action_print_delivery_report...')
# data = self.Sale.get_delivery_report(args)
# result = self.receipt_order.print_delivery_report(data)
_parties = {dp['id']: dp['rec_name'] for dp in self.delivery_parties}
print(self.delivery_parties)
add_fields = ('delivery_party', {
'name': 'DOMICILIARIO',
'type': 'selection',
'values': _parties.items(),
})
args = self.dialog_reports.open_wizard(
'delivery_report', add_fields, True
)
print(args)
print(_parties)
sales = self.Sale.find([
('sale_date', '=', args['date']),
('delivery_party', '=', args['delivery_party']),
('shop', '=', self.shop['id']),
])
data = {
'name': _parties[int(args['delivery_party'])],
'sale_date': str(args['date']),
'sales': [],
}
total = 0
for sale in sales:
total_amount = sale['total_amount']
data['sales'].append({
'number': sale['invoice_number'],
'total': total_amount,
})
total += total_amount
data['total'] = total
self.receipt_sale.print_delivery_report(data)
def action_send_order(self, sale_id=None, reversion=False, init_view=True):
if self.model_sale_lines.rowCount() == 0:

View File

@ -155,7 +155,7 @@ class Receipt(object):
self._profile = printer['profile']
def set_printer(self):
try:
if 1: #try:
if self._interface == 'usb':
if os.name == 'posix':
self._printer = printer.File(self._device, profile=self._profile)
@ -171,11 +171,12 @@ class Receipt(object):
self.conn = cups.Connection()
self._file = open(TEMP_INVOICE_FILE, 'w')
self._printer = CupsPrinter(self._file, self._row_characters)
print('xxxxxxx', self._printer)
if not self._printer:
self.logger.info("Warning: Can not found Printer!")
return
self.logger.info("Info: Printer is OK!")
except:
else: #except:
self.logger.info("Warning: Printer error or device not found!")
def print_sale(self, sale, type_doc=None, open_box=False):
@ -239,25 +240,26 @@ class Receipt(object):
def print_delivery_report(self, data):
self.set_printer()
self._printer.set(align='center')
self._printer.text('REPORTE DE ENTREGA DE DOMICILIARIOS')
self.print_enter()
for journal in data['journals']:
self.print_enter()
self.print_horinzontal_line()
name = journal['name']
self._printer.text(f'MEDIO DE PAGO: ${name}')
self.print_enter()
self.print_horinzontal_line()
self.print_enter()
for sale in journal.get('sales', None):
sale_total = money(sale['total'])
self.print_split(sale['number'], sale_total)
self.print_enter()
total = journal['total']
self.print_enter()
self._printer.text(f'TOTAL: ${total}')
self.print_enter()
self.print_horinzontal_line()
self._printer.set(align='left')
name = data['name']
sale_date = data['sale_date']
self._printer.text(f'DOMICILIARIO: {name}')
self.print_enter()
self._printer.text(f'FECHA: {sale_date}')
self.print_enter()
self.print_horinzontal_line()
self.print_enter()
for sale in data['sales']:
sale_total = money(sale['total'])
self.print_split(sale['number'], sale_total)
self.print_enter()
total = money(data['total'])
self._printer.text(f'TOTAL: {total}')
self.print_enter()
self._printer.cut()
self.print_enter()

View File

@ -68,7 +68,7 @@ if __name__ == '__main__':
receipt = Receipt(ctx_printing)
if 1: #try:
receipt.set_printer(printer_test)
receipt.config_printer(printer_test)
receipt.test_printer()
# except:
# print('Printing failed...!')