Skip to content

Commit

Permalink
Change delivery date handling (#9)
Browse files Browse the repository at this point in the history
* Change delivery date handling

* Update pretix_zugferd/migrations/0001_initial.py
  • Loading branch information
raphaelm authored Feb 5, 2025
1 parent 1b6bdc0 commit 37de058
Show file tree
Hide file tree
Showing 14 changed files with 83 additions and 10 deletions.
4 changes: 4 additions & 0 deletions pretix_zugferd/invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,10 @@ def _zugferd_generate_document(self, invoice):
]
if ds:
doc.trade.delivery.event.occurrence = max(ds)
else:
doc.trade.delivery.event.occurrence = invoice.date
else:
doc.trade.delivery.event.occurrence = invoice.date

note = IncludedNote()
note.content.add(_("Order code: {code}").format(code=invoice.order.full_code))
Expand Down
20 changes: 20 additions & 0 deletions pretix_zugferd/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 4.2.17 on 2025-01-31 18:29
from django.core.cache import cache
from django.db import migrations


def keep_old_default(apps, schema_editor):
Event = apps.get_model("pretixbase", "Event")
EventSettingsStore = apps.get_model("pretixbase", "Event_SettingsStore")

for e in Event.objects.filter(plugins__contains="pretix_zugferd"):
EventSettingsStore.objects.get_or_create(
object=e, key="zugferd_include_delivery_date", defaults={"value": "False"}
)
cache.delete("hierarkey_{}_{}".format("event", e.pk))


class Migration(migrations.Migration):
dependencies = [("pretixbase", "0246_bigint")]

operations = [migrations.RunPython(keep_old_default, migrations.RunPython.noop)]
Empty file.
3 changes: 3 additions & 0 deletions pretix_zugferd/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ def navbar_info(sender, request, **kwargs):


settings_hierarkey.add_default("zugferd_hide_label", "True", default_type=bool)
settings_hierarkey.add_default(
"zugferd_include_delivery_date", "True", default_type=bool
)
4 changes: 4 additions & 0 deletions pretix_zugferd/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ class ZugferdSettingsForm(SettingsForm):
zugferd_include_delivery_date = forms.BooleanField(
label=_("Include event date as delivery date"),
required=False,
help_text=_(
"Invoices must contain a delivery date. If this option is unselected, the invoice date is set as "
"the delivery date."
),
)
zugferd_hide_label = forms.BooleanField(
label=_("Hide label that advertises the included XRechnung"),
Expand Down
8 changes: 7 additions & 1 deletion tests/results/cancellation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/default.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Attendee: Peter</ram:Description>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
<udt:DateTimeString format="102">20241214</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/paid.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/tax_code_exempt.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/tax_code_guess_AU.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/tax_code_reverse_charge.xml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
8 changes: 7 additions & 1 deletion tests/results/xrechnung.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,13 @@ Attendee: Peter</ram:Description>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeDelivery>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20171227</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:PaymentReference>DUMMY-FOO</ram:PaymentReference>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
Expand Down
4 changes: 2 additions & 2 deletions tests/test_invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ def test_guess_tax_code(event, order, tax_rule):
@scopes_disabled()
@freeze_time("2024-12-14 12:00:00+01:00")
def test_delivery_date(event, order, tax_rule):
event.settings.zugferd_include_delivery_date = True
event.settings.zugferd_include_delivery_date = False
event.settings.invoice_renderer = "modern1_zugferd"
i = generate_invoice(order)
invoice_pdf_task(i.pk)
i.refresh_from_db()
reader = PdfReader(i.file)
xml = reader.attachments["factur-x.xml"][0]

compare(xml, r("delivery_dates.xml"), schema="FACTUR-X_EXTENDED")
compare(xml, r("delivery_date_off.xml"), schema="FACTUR-X_EXTENDED")


@pytest.mark.django_db
Expand Down

0 comments on commit 37de058

Please sign in to comment.