forked from CGM_Public/pretix_original
Invoice numbers and localized commata in CSV order export
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user