Skip to content

Commit

Permalink
Merge pull request #564 from shawnadelic/refunds
Browse files Browse the repository at this point in the history
Add order refunds (SHUUP-2400, SHUUP-2821, SHUUP-2874, SHUUP-2875, SHUUP-2877)
  • Loading branch information
Pikkupomo committed Jun 28, 2016
2 parents fcd59e9 + df11865 commit 01d4f87
Show file tree
Hide file tree
Showing 17 changed files with 918 additions and 22 deletions.
4 changes: 4 additions & 0 deletions doc/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Unreleased
Core
~~~~

- Add refund-related methods to ``Order``
- Add `OrderLineType.REFUND` enum type
- Update order phone max length to 64 characters
- Add cash payment method
- Add rounding behavior component
Expand Down Expand Up @@ -77,6 +79,8 @@ Localization
Admin
~~~~~

- Add refund creator to `Order` admin
- Add customer detail view to order creator
- Add purchase orders on manufacturers
- Add customer detail view to order creator
- Define module-level permissions for all admin modules
Expand Down
76 changes: 69 additions & 7 deletions shoop/admin/locale/en/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-26 05:50+0000\n"
"POT-Creation-Date: 2016-06-27 22:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: en <LL@li.org>\n"
Expand Down Expand Up @@ -377,6 +377,12 @@ msgstr ""
msgid "Log Entries"
msgstr ""

msgid "Create Refund"
msgstr ""

msgid "This order cannot be refunded"
msgstr ""

msgid "Create Payment"
msgstr ""

Expand Down Expand Up @@ -476,6 +482,50 @@ msgstr ""
msgid "Order has already been paid"
msgstr ""

msgid "Line number"
msgstr ""

msgid "Quantity"
msgstr ""

msgid "Amount"
msgstr ""

msgid "Restock products"
msgstr ""

#, python-format
msgid "Create Refund -- %s"
msgstr ""

msgid "Refund Entire Order"
msgstr ""

msgid "This order already has existing refunds"
msgstr ""

msgid "Refund amount exceeds order amount."
msgstr ""

msgid "Refund amount cannot be 0"
msgstr ""

msgid "Refund created."
msgstr ""

#, python-format
msgid "Create Full Refund -- %s"
msgstr ""

msgid "Cancel"
msgstr ""

msgid "Could not create full refund."
msgstr ""

msgid "Full refund created."
msgstr ""

#, python-format
msgid "Create Shipment -- %s"
msgstr ""
Expand Down Expand Up @@ -1077,18 +1127,12 @@ msgstr ""
msgid "Description"
msgstr ""

msgid "Amount"
msgstr ""

msgid "Text"
msgstr ""

msgid "Taxless Unit Price"
msgstr ""

msgid "Quantity"
msgstr ""

msgid "Taxless Discount"
msgstr ""

Expand Down Expand Up @@ -1122,12 +1166,30 @@ msgstr ""
msgid "There was an error adding the log entry."
msgstr ""

msgid "Line #"
msgstr ""

msgid "Refund Amount"
msgstr ""

msgid "Are you sure you want to create a full refund?"
msgstr ""

msgid "Confirm Refund"
msgstr ""

msgid "Paid"
msgstr ""

msgid "Remaining"
msgstr ""

msgid "Refunded"
msgstr ""

msgid "Add More Refunds "
msgstr ""

msgid "To Ship"
msgstr ""

Expand Down
12 changes: 12 additions & 0 deletions shoop/admin/modules/orders/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,18 @@ def get_urls(self):
name="order.new-log-entry",
permissions=get_default_model_permissions(Order)
),
admin_url(
"^orders/(?P<pk>\d+)/create-refund/$",
"shoop.admin.modules.orders.views.OrderCreateRefundView",
name="order.create-refund",
permissions=get_default_model_permissions(Order)
),
admin_url(
"^orders/(?P<pk>\d+)/create-refund/full-refund$",
"shoop.admin.modules.orders.views.OrderCreateFullRefundView",
name="order.create-full-refund",
permissions=get_default_model_permissions(Order)
),
admin_url(
"^orders/(?P<pk>\d+)/$",
"shoop.admin.modules.orders.views.OrderDetailView",
Expand Down
2 changes: 1 addition & 1 deletion shoop/admin/modules/orders/sections.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class LogEntriesOrderSection(OrderSection):

@staticmethod
def visible_for_order(order):
return OrderLogEntry.objects.filter(target=order).count() > 0
return True

@staticmethod
def get_context_data(order):
Expand Down
7 changes: 4 additions & 3 deletions shoop/admin/modules/orders/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@
from .list import OrderListView, PurchaseOrderListView
from .log import NewLogEntryView
from .payment import OrderCreatePaymentView
from .refund import OrderCreateFullRefundView, OrderCreateRefundView
from .shipment import OrderCreateShipmentView

__all__ = [
"NewLogEntryView", "OrderDetailView", "OrderEditView", "OrderListView",
"OrderCreatePaymentView", "OrderCreateShipmentView", "OrderSetStatusView",
"PurchaseOrderEditView", "PurchaseOrderDetailView", "PurchaseOrderListView",
"PurchaseOrderSetArrivedView"
"OrderCreatePaymentView", "OrderCreateFullRefundView", "OrderCreateRefundView",
"OrderCreateShipmentView", "OrderSetStatusView", "PurchaseOrderEditView",
"PurchaseOrderDetailView", "PurchaseOrderListView", "PurchaseOrderSetArrivedView",
]
10 changes: 8 additions & 2 deletions shoop/admin/modules/orders/views/detail.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,15 @@ class OrderDetailView(BaseOrderDetailViewMixin, DetailView):

def get_toolbar(self):
order = self.object
if order.is_canceled():
return
toolbar = Toolbar()
toolbar.append(URLActionButton(
text=_("Create Refund"),
icon="fa fa-dollar",
disable_reason=_("This order cannot be refunded") if not order.can_create_refund() else None,
url=reverse("shoop_admin:order.create-refund", kwargs={"pk": order.pk}),
extra_css_class="btn-info"
))

toolbar.append(URLActionButton(
text=_("Create Payment"),
icon="fa fa-money",
Expand Down
Loading

0 comments on commit 01d4f87

Please sign in to comment.