Invoice numbers and localized commata in CSV order export

This commit is contained in:
Raphael Michel
2017-02-03 12:28:28 +01:00
parent 2d370aaf5a
commit ef93b8ae38

View File

@@ -7,6 +7,7 @@ import pytz
from django import forms from django import forms
from django.db.models import Sum from django.db.models import Sum
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.formats import localize
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from pretix.base.models import InvoiceAddress, Order, OrderPosition from pretix.base.models import InvoiceAddress, Order, OrderPosition
@@ -50,7 +51,7 @@ class OrderListExporter(BaseExporter):
tz = pytz.timezone(self.event.settings.timezone) tz = pytz.timezone(self.event.settings.timezone)
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC, delimiter=",") writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC, delimiter=",")
qs = self.event.orders.all().select_related('invoice_address') qs = self.event.orders.all().select_related('invoice_address').prefetch_related('invoices')
if form_data['paid_only']: if form_data['paid_only']:
qs = qs.filter(status=Order.STATUS_PAID) qs = qs.filter(status=Order.STATUS_PAID)
tax_rates = self._get_all_tax_rates(qs) tax_rates = self._get_all_tax_rates(qs)
@@ -58,7 +59,7 @@ class OrderListExporter(BaseExporter):
headers = [ headers = [
_('Order code'), _('Order total'), _('Status'), _('Email'), _('Order date'), _('Order code'), _('Order total'), _('Status'), _('Email'), _('Order date'),
_('Company'), _('Name'), _('Address'), _('ZIP code'), _('City'), _('Country'), _('VAT ID'), _('Company'), _('Name'), _('Address'), _('ZIP code'), _('City'), _('Country'), _('VAT ID'),
_('Payment date'), _('Payment type'), _('Payment method fee') _('Payment date'), _('Payment type'), _('Payment method fee'), _('Invoice numbers')
] ]
for tr in tax_rates: for tr in tax_rates:
@@ -86,7 +87,7 @@ class OrderListExporter(BaseExporter):
for order in qs.order_by('datetime'): for order in qs.order_by('datetime'):
row = [ row = [
order.code, order.code,
str(order.total), localize(order.total),
order.get_status_display(), order.get_status_display(),
order.email, order.email,
order.datetime.astimezone(tz).strftime('%Y-%m-%d'), order.datetime.astimezone(tz).strftime('%Y-%m-%d'),
@@ -107,7 +108,7 @@ class OrderListExporter(BaseExporter):
row += [ row += [
order.payment_date.astimezone(tz).strftime('%Y-%m-%d') if order.payment_date else '', order.payment_date.astimezone(tz).strftime('%Y-%m-%d') if order.payment_date else '',
provider_names.get(order.payment_provider, order.payment_provider), provider_names.get(order.payment_provider, order.payment_provider),
str(order.payment_fee) localize(order.payment_fee)
] ]
for tr in tax_rates: for tr in tax_rates:
@@ -117,11 +118,12 @@ class OrderListExporter(BaseExporter):
taxrate_values['taxsum'] += order.payment_fee_tax_value taxrate_values['taxsum'] += order.payment_fee_tax_value
row += [ row += [
str(taxrate_values['grosssum']), localize(taxrate_values['grosssum']),
str(taxrate_values['grosssum'] - taxrate_values['taxsum']), localize(taxrate_values['grosssum'] - taxrate_values['taxsum']),
str(taxrate_values['taxsum']), localize(taxrate_values['taxsum']),
] ]
row.append(', '.join([i.number for i in order.invoices.all()]))
writer.writerow(row) writer.writerow(row)
return 'orders.csv', 'text/csv', output.getvalue().encode("utf-8") return 'orders.csv', 'text/csv', output.getvalue().encode("utf-8")