forked from erp-dev/erp
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from decimal import Decimal
|
|
|
|
from rest_framework import views
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
|
|
from basic_info import models as basic_models
|
|
from business import services as business_services
|
|
from api_v1.views.stock_change_views.mixins import StockChangeViewMixin
|
|
|
|
|
|
class CustomerBalanceView(StockChangeViewMixin, views.APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request, customer_id: int):
|
|
if not self.check_employee_permission(request):
|
|
return self.permission_error_response('无权限访问')
|
|
|
|
merchant = request.user.employee.merchant
|
|
try:
|
|
customer = basic_models.Customer.objects.get(id=customer_id, merchant=merchant)
|
|
except basic_models.Customer.DoesNotExist:
|
|
return self.not_found_response('客户不存在')
|
|
|
|
balance: Decimal = business_services.BalanceService.get_customer_statement_balance(
|
|
merchant=merchant,
|
|
customer=customer,
|
|
)
|
|
return Response(
|
|
{
|
|
'customer': customer.id,
|
|
'customer_name': customer.name,
|
|
'balance': str(balance),
|
|
}
|
|
)
|
|
|
|
|
|
class SupplierBalanceView(StockChangeViewMixin, views.APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request, supplier_id: int):
|
|
if not self.check_employee_permission(request):
|
|
return self.permission_error_response('无权限访问')
|
|
|
|
merchant = request.user.employee.merchant
|
|
try:
|
|
supplier = basic_models.Supplier.objects.get(id=supplier_id, merchant=merchant)
|
|
except basic_models.Supplier.DoesNotExist:
|
|
return self.not_found_response('供应商不存在')
|
|
|
|
balance: Decimal = business_services.BalanceService.get_supplier_balance(
|
|
merchant=merchant,
|
|
supplier=supplier,
|
|
)
|
|
return Response(
|
|
{
|
|
'supplier': supplier.id,
|
|
'supplier_name': supplier.name,
|
|
'balance': str(balance),
|
|
}
|
|
)
|
|
|