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')], '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.setWindowTitle('REPORTES')
self.add_widget(vbox) self.add_widget(vbox)
def open_wizard(self, report): def open_wizard(self, report, add_fields=None, open_print=False):
vbox = QVBoxLayout() vbox = QVBoxLayout()
wiz_report = WIZARDS[report] wiz_report = WIZARDS[report]
report_name = wiz_report['name'] fields = wiz_report['fields']
fields = OrderedDict(wiz_report['fields']) print(fields)
if add_fields:
fields.append(add_fields)
fields = OrderedDict(fields)
self.form = GridForm(self, fields, col=2) self.form = GridForm(self, fields, col=2)
vbox.addLayout(self.form) vbox.addLayout(self.form)
dialog = QuickDialog(self, 'action', widgets=[vbox]) dialog = QuickDialog(self, 'action', widgets=[vbox])
result = dialog.exec() result = dialog.exec()
store = self.form.getStore() store = self.form.getStore()
values = {} values = {}
for cf in wiz_report['ctx_fields']: for cf in wiz_report.get('ctx_fields', []):
values[cf] = self.parent.ctx[cf] values[cf] = self.parent.ctx[cf]
values.update(store) values.update(store)
if result == 1: 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): def open_report(self, report_name, data):
report = FastReport(self.parent.ctx) report = FastReport(self.parent.ctx)

View File

@ -1322,9 +1322,38 @@ class AppWindow(FrontWindow):
return result return result
def action_delivery_report(self): def action_delivery_report(self):
print('action_print_delivery_report...') _parties = {dp['id']: dp['rec_name'] for dp in self.delivery_parties}
# data = self.Sale.get_delivery_report(args) print(self.delivery_parties)
# result = self.receipt_order.print_delivery_report(data) 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): def action_send_order(self, sale_id=None, reversion=False, init_view=True):
if self.model_sale_lines.rowCount() == 0: if self.model_sale_lines.rowCount() == 0:

View File

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

View File

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