feat: add daily report functionality and settlement status to shop orders
This commit is contained in:
+37
-6
@@ -1,6 +1,7 @@
|
||||
from django.contrib import admin, messages
|
||||
from .models import *
|
||||
from unfold.admin import TabularInline, StackedInline
|
||||
from unfold.contrib.inlines.admin import NonrelatedTabularInline
|
||||
from django.db.models import Q
|
||||
from import_export.admin import ImportExportModelAdmin
|
||||
from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm
|
||||
@@ -60,19 +61,50 @@ class CartAdmin(ModelAdmin):
|
||||
inlines = [CartItemInline]
|
||||
|
||||
|
||||
class ShopOrderInline(StackedInline):
|
||||
model = ShopOrderModel
|
||||
extra = 0
|
||||
max_num = 0
|
||||
tab = True
|
||||
|
||||
|
||||
class ShopOrderItemInline(NonrelatedTabularInline): # NonrelatedStackedInline is available as well
|
||||
model = ShopOrderItem
|
||||
tab = True
|
||||
extra = 0
|
||||
show_change_link = True
|
||||
|
||||
def get_form_queryset(self, obj):
|
||||
"""
|
||||
Gets all nonrelated objects needed for inlines. Method must be implemented.
|
||||
"""
|
||||
shop_orders = obj.shop_orders.all()
|
||||
|
||||
return ShopOrderItem.objects.filter(shop_order__in=shop_orders)
|
||||
|
||||
def save_new_instance(self, parent, instance):
|
||||
"""
|
||||
Extra save method which can for example update inline instances based on current
|
||||
main model object. Method must be implemented.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
|
||||
from .models import ShopDailyReport, ShopOrderModel
|
||||
@admin.register(ShopDailyReport)
|
||||
class ShopDailyReportAdmin(ModelAdmin):
|
||||
pass
|
||||
list_display = ['shop', 'date', 'is_settled',]
|
||||
inlines = [ShopOrderInline, ShopOrderItemInline]
|
||||
def get_queryset(self, request):
|
||||
|
||||
if request.user.is_superuser:
|
||||
return ShopOrderModel.objects.all()
|
||||
return self.model.objects.all()
|
||||
|
||||
if not hasattr(request.user, 'shop'):
|
||||
return ShopOrderModel.objects.none()
|
||||
return self.model.objects.none()
|
||||
|
||||
queryset = ShopOrderModel.objects.filter(shop=request.user.shop)
|
||||
queryset = self.model.objects.filter(shop=request.user.shop)
|
||||
return queryset
|
||||
|
||||
def has_view_permission(self, request, obj=None):
|
||||
@@ -95,11 +127,10 @@ class ShopOrderItemInline(StackedInline):
|
||||
|
||||
|
||||
|
||||
|
||||
@admin.register(ShopOrderModel)
|
||||
class ShopOrderModelAdmin(ShopOrderAdminPermission, ModelAdmin):
|
||||
inlines = [ShopOrderItemInline]
|
||||
list_display = ['id', 'shop', 'order', 'customer_name', 'status', 'is_paid', 'is_settled', 'download_invoice_button']
|
||||
list_display = ['id', 'shop', 'order', 'customer_name', 'status', 'is_paid', 'is_settled', 'created_at', 'download_invoice_button']
|
||||
readonly_fields = ['download_invoice_link']
|
||||
|
||||
def download_invoice_button(self, obj):
|
||||
|
||||
Reference in New Issue
Block a user