def print_receipts(self, sale): # supports_duplicate = self.emit('get-supports-duplicate-receipt') # Vamos sempre imprimir sempre de uma vez, para simplificar supports_duplicate = False log.info('Printing payment receipts') # Merge card payments by nsu card_payments = {} for payment in sale.payments: if payment.method.method_name != 'card': continue operation = payment.method.operation card_data = operation.get_card_data_by_payment(payment) card_payments.setdefault(card_data.nsu, []) card_payments[card_data.nsu].append(payment) any_failed = False for nsu, payment_list in card_payments.items(): receipt = CardPaymentReceiptPrepareEvent.emit( nsu, supports_duplicate) if receipt is None: continue value = sum([p.value for p in payment_list]) # This is BS, but if any receipt failed to print, we must print # the remaining ones in Gerencial Rports if any_failed: retval = self.reprint_payment_receipt(receipt) else: retval = self.print_payment_receipt(payment_list[0], value, receipt) while not retval: if not yesno( _(u"An error occurred while trying to print. " u"Would you like to try again?"), Gtk.ResponseType.YES, _("Try again"), _(u"Don't try again")): CancelPendingPaymentsEvent.emit() try: GerencialReportCancelEvent.emit() except (DriverError, DeviceError) as details: log.info('Error canceling last receipt: %s' % details) warning( _(u"It wasn't possible to cancel " u"the last receipt")) return False any_failed = True _flush_interface() retval = self.reprint_payment_receipt(receipt, close_previous=True) # Only confirm payments receipt printed if *all* receipts wore # printed. for nsu in card_payments.keys(): CardPaymentReceiptPrintedEvent.emit(nsu) return True
def print_receipts(self, sale): # supports_duplicate = self.emit('get-supports-duplicate-receipt') # Vamos sempre imprimir sempre de uma vez, para simplificar supports_duplicate = False log.info('Printing payment receipts') # Merge card payments by nsu card_payments = {} for payment in sale.payments: if payment.method.method_name != 'card': continue operation = payment.method.operation card_data = operation.get_card_data_by_payment(payment) card_payments.setdefault(card_data.nsu, []) card_payments[card_data.nsu].append(payment) any_failed = False for nsu, payment_list in card_payments.items(): receipt = CardPaymentReceiptPrepareEvent.emit( nsu, supports_duplicate) if receipt is None: continue value = sum([p.value for p in payment_list]) # This is BS, but if any receipt failed to print, we must print # the remaining ones in Gerencial Rports if any_failed: retval = self.reprint_payment_receipt(receipt) else: retval = self.print_payment_receipt(payment_list[0], value, receipt) while not retval: if not yesno( _(u"An error occurred while trying to print. " u"Would you like to try again?"), gtk.RESPONSE_YES, _("Try again"), _(u"Don't try again")): CancelPendingPaymentsEvent.emit() try: GerencialReportCancelEvent.emit() except (DriverError, DeviceError) as details: log.info('Error canceling last receipt: %s' % details) warning( _(u"It wasn't possible to cancel " u"the last receipt")) return False any_failed = True _flush_interface() retval = self.reprint_payment_receipt( receipt, close_previous=True) # Only confirm payments receipt printed if *all* receipts wore # printed. for nsu in card_payments.keys(): CardPaymentReceiptPrintedEvent.emit(nsu) return True
GerencialReportCancelEvent.emit() except (DriverError, DeviceError), details: log.info('Error canceling last receipt: %s' % details) warning(u'Não foi possível cancelar o último' ' comprovante') return False any_failed = True _flush_interface() retval = self.reprint_payment_receipt(receipt, close_previous=True) # Only confirm payments receipt printed if *all* receipts wore # printed. for nsu in card_payments.keys(): CardPaymentReceiptPrintedEvent.emit(nsu) return True def totalize(self, sale): # XXX: Remove this when bug #2827 is fixed. if not self._item_ids: return True if self.totalized: return True log.info('Totalizing coupon') while True: try: self.emit('totalize', sale)