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')],
|
||||
}),
|
||||
],
|
||||
},
|
||||
'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)
|
||||
|
|
35
app/main.py
35
app/main.py
|
@ -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:
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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...!')
|
||||
|
|
Loading…
Reference in New Issue