Add report delivery man
This commit is contained in:
parent
8c201cab09
commit
f55dddc80b
|
@ -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)
|
||||||
|
|
35
app/main.py
35
app/main.py
|
@ -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:
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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...!')
|
||||||
|
|
Loading…
Reference in New Issue