Files
jyls_django/finance/views.py
2025-12-25 18:27:06 +08:00

1002 lines
36 KiB
Python

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
import json
import ast
from User.models import User,Approval
import datetime
from .models import Invoice,Income,Accounts,Payment,Reimbursement,BonusChange
from utility.utility import flies
from django.contrib.sessions.backends.db import SessionStore
from django.db.models import Count, Q
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
class UserRegister(APIView):
def post(self, request, *args, **kwargs):
"""
财务登记
:param request:
:param args:
:param kwargs:
:return:
"""
username = request.data.get('username')
card = request.data.get('card')
Dateofjoining = request.data.get('Dateofjoining')
position = request.data.get('position')
salary = request.data.get('salary')
personincharge = request.data.get('personincharge')
if not all([username, card, Dateofjoining, position, salary]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Dateofjoinings = datetime.datetime.strptime(Dateofjoining, "%Y-%m-%d")
user = User.objects.get(username=username)
user.card = card
user.salary = salary
user.username = username
user.Dateofjoining = Dateofjoinings
user.position = position
user.state="待确认"
today = datetime.datetime.now()
formatted_date = today.strftime("%Y-%m-%d")
Approval.objects.create(
title=username+"入职财务登记",
content=username+""+Dateofjoining+"办理入职,身份证:"+card+",岗位:"+position+"薪资:"+salary,
times=formatted_date,
personincharge=personincharge,
state='审核中',
type="入职财务登记",
user_id=user.id
)
user.save(update_fields=['card', 'salary', 'username', 'Dateofjoining', 'position'])
return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK)
class issueAnInvoice(APIView):
def post(self, request, *args, **kwargs):
"""
财务开票
:param request:
:param args:
:param kwargs:
:return:
"""
token = request.META.get('token')
ContractNo = request.data.get('ContractNo')
personincharge = request.data.get('personincharge')
amount = request.data.get('amount')
type = request.data.get('type')
unit = request.data.get('unit')
number = request.data.get('number')
address_telephone = request.data.get('address_telephone')
bank = request.data.get('bank')
username = request.data.get('username')
if not all([token, ContractNo, personincharge, amount, type, unit, number, address_telephone, bank,username]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
today = datetime.datetime.now()
formatted_date = today.strftime("%Y-%m-%d")
invoice = Invoice.objects.create(
ContractNo=ContractNo,
personincharge=personincharge,
amount=amount,
type=type,
unit=unit,
number=number,
address_telephone=address_telephone,
bank=bank,
state="审核中",
username=username,
times=formatted_date,
)
Approval.objects.create(
title=username+"申请开票",
content=""+formatted_date+"的时候审核开发票",
times=formatted_date,
personincharge=personincharge,
state="审核中",
type="开票",
user_id = invoice.id
)
return Response({'message': '提交成功', 'code': 0}, status=status.HTTP_200_OK)
class issueAnInvoiceDetail(APIView):
def post(self, request, *args, **kwargs):
"""
开票记录详情
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
unit = request.data.get('unit')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if unit:
Q_obj &= Q(unit__icontains=unit)
invos = Invoice.objects.filter(Q_obj).order_by('-id')
total = len(invos)
paginator = Paginator(invos, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
'id': info.id,
"ContractNo": info.ContractNo,
"personincharge": info.personincharge,
"amount": info.amount,
"type": info.type,
"unit": info.unit,
"number": info.number,
"address_telephone": info.address_telephone,
"bank": info.bank,
"state": info.state,
"username": info.username,
"times": info.times,
}
data.append(itme)
return Response({'message': '展示成功',"total":total,'data':data, 'code': 0}, status=status.HTTP_200_OK)
class EditInvoice(APIView):
def post(self, request, *args, **kwargs):
"""
编辑开票申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
ContractNo = request.data.get('ContractNo')
personincharge = request.data.get('personincharge')
amount = request.data.get('amount')
type = request.data.get('type')
unit = request.data.get('unit')
number = request.data.get('number')
address_telephone = request.data.get('address_telephone')
bank = request.data.get('bank')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
invoice = Invoice.objects.get(id=id)
except Invoice.DoesNotExist:
return Response({'status': 'error', 'message': '开票申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if ContractNo:
invoice.ContractNo = ContractNo
update_fields_list.append('ContractNo')
if personincharge:
invoice.personincharge = personincharge
update_fields_list.append('personincharge')
if amount:
invoice.amount = amount
update_fields_list.append('amount')
if type:
invoice.type = type
update_fields_list.append('type')
if unit:
invoice.unit = unit
update_fields_list.append('unit')
if number:
invoice.number = number
update_fields_list.append('number')
if address_telephone:
invoice.address_telephone = address_telephone
update_fields_list.append('address_telephone')
if bank:
invoice.bank = bank
update_fields_list.append('bank')
if update_fields_list:
invoice.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteInvoice(APIView):
def post(self, request, *args, **kwargs):
"""
删除开票申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
invoice = Invoice.objects.get(id=id)
except Invoice.DoesNotExist:
return Response({'status': 'error', 'message': '开票申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
invoice.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class confirm(APIView):
def post(self, request, *args, **kwargs):
"""
收入确认
:param request:
:param args:
:param kwargs:
:return:
"""
times = request.data.get('times')
ContractNo = request.data.get('ContractNo')
CustomerID = request.data.get('CustomerID')
amount = request.data.get('amount')
allocate = request.data.get('allocate')
token = request.META.get('token')
personincharge = request.data.get('personincharge')
user = User.objects.get(token=token)
if not all([times, ContractNo, CustomerID, amount, allocate]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
from datetime import datetime
now = datetime.now()
# 格式化日期为字符串,格式为 YYYY-MM-DD
date_string = now.strftime("%Y-%m-%d")
income = Income.objects.create(
times=times,
ContractNo=ContractNo,
CustomerID=CustomerID,
amount=amount,
allocate=allocate,
submit=user.username,
submit_tiem=date_string,
state="审核中"
)
Approval.objects.create(
title=user.username + "提交收入确认",
content=user.username + "" + times + "提交了收入确认,合同编号:" + ContractNo + ",客户名称:" + CustomerID + "收入金额:" + amount,
times=date_string,
personincharge=personincharge,
state='审核中',
type="收入确认",
user_id=income.id
)
return Response({'message': '插入成功' ,'code': 0}, status=status.HTTP_200_OK)
class confirmdisplay(APIView):
def post(self, request, *args, **kwargs):
"""
收入确认展示
"""
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
CustomerID = request.data.get('CustomerID')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if CustomerID:
Q_obj &= Q(CustomerID__icontains=CustomerID)
income = Income.objects.filter(Q_obj).order_by('-id')
total = len(income)
paginator = Paginator(income, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
'id': info.id,
"times": info.times,
"ContractNo": info.ContractNo,
"CustomerID": info.CustomerID,
"amount": info.amount,
"allocate": info.allocate,
"state": info.state,
}
data.append(itme)
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditIncome(APIView):
def post(self, request, *args, **kwargs):
"""
编辑收入确认
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
times = request.data.get('times')
ContractNo = request.data.get('ContractNo')
CustomerID = request.data.get('CustomerID')
amount = request.data.get('amount')
allocate = request.data.get('allocate')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
income = Income.objects.get(id=id)
except Income.DoesNotExist:
return Response({'status': 'error', 'message': '收入确认不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if times:
income.times = times
update_fields_list.append('times')
if ContractNo:
income.ContractNo = ContractNo
update_fields_list.append('ContractNo')
if CustomerID:
income.CustomerID = CustomerID
update_fields_list.append('CustomerID')
if amount:
income.amount = amount
update_fields_list.append('amount')
if allocate:
income.allocate = allocate
update_fields_list.append('allocate')
if update_fields_list:
income.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteIncome(APIView):
def post(self, request, *args, **kwargs):
"""
删除收入确认
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
income = Income.objects.get(id=id)
except Income.DoesNotExist:
return Response({'status': 'error', 'message': '收入确认不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
income.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class loan(APIView):
def post(self, request, *args, **kwargs):
"""
调账申请
:param request:
:param args:
:param kwargs:
:return:
"""
times = request.data.get('times')
ContractNo = request.data.get('ContractNo')
CustomerID = request.data.get('CustomerID')
amount = request.data.get('amount')
situation = request.data.get('situation')
personincharge = request.data.get('personincharge')
token = request.META.get('token')
if not all([times, ContractNo, amount, situation,CustomerID,personincharge]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
from datetime import datetime
now = datetime.now()
# 格式化日期为字符串,格式为 YYYY-MM-DD
date_string = now.strftime("%Y-%m-%d")
user = User.objects.get(token=token)
acc = Accounts.objects.create(
times=times,
ContractNo=ContractNo,
CustomerID=CustomerID,
amount=amount,
situation=situation,
submit=user.username,
submit_tiem=date_string,
state="审核中"
)
Approval.objects.create(
title=user.username + "提交调账申请",
content=user.username + "" + times + "提交了调账申请,合同编号:" + ContractNo + ",客户名称:" + CustomerID + "收入金额:" + amount,
times=date_string,
personincharge=personincharge,
state='审核中',
type="调账申请",
user_id=acc.id
)
return Response({'message': '插入成功' ,'code': 0}, status=status.HTTP_200_OK)
class loandisplay(APIView):
def post(self, request, *args, **kwargs):
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
CustomerID = request.data.get('CustomerID')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if CustomerID:
Q_obj &= Q(CustomerID__icontains=CustomerID)
acc = Accounts.objects.filter(Q_obj).order_by('-id')
total = len(acc)
paginator = Paginator(acc, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
'id': info.id,
"times": info.times,
"ContractNo": info.ContractNo,
"CustomerID": info.CustomerID,
"amount": info.amount,
"situation": info.situation,
"state": info.state,
}
data.append(itme)
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditAccounts(APIView):
def post(self, request, *args, **kwargs):
"""
编辑调账申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
times = request.data.get('times')
ContractNo = request.data.get('ContractNo')
CustomerID = request.data.get('CustomerID')
amount = request.data.get('amount')
situation = request.data.get('situation')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
account = Accounts.objects.get(id=id)
except Accounts.DoesNotExist:
return Response({'status': 'error', 'message': '调账申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if times:
account.times = times
update_fields_list.append('times')
if ContractNo:
account.ContractNo = ContractNo
update_fields_list.append('ContractNo')
if CustomerID:
account.CustomerID = CustomerID
update_fields_list.append('CustomerID')
if amount:
account.amount = amount
update_fields_list.append('amount')
if situation:
account.situation = situation
update_fields_list.append('situation')
if update_fields_list:
account.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteAccounts(APIView):
def post(self, request, *args, **kwargs):
"""
删除调账申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
account = Accounts.objects.get(id=id)
except Accounts.DoesNotExist:
return Response({'status': 'error', 'message': '调账申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
account.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class PaymentRequest(APIView):
def post(self, request, *args, **kwargs):
"""
付款申请
:param request:
:param args:
:param kwargs:
:return:
"""
reason = request.data.get('reason')
amount = request.data.get('amount')
times = request.data.get('times')
payee = request.data.get('payee')
bankcard = request.data.get('bankcard')
BankName = request.data.get('BankName')
applicant= request.data.get('applicant')
personincharge = request.data.get('personincharge')
if not all([times, payee, bankcard, BankName, personincharge,reason,amount]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
from datetime import datetime
now = datetime.now()
# 格式化日期为字符串,格式为 YYYY-MM-DD
date_string = now.strftime("%Y-%m-%d")
pay = Payment.objects.create(
reason=reason,
amount=amount,
times=times,
payee=payee,
bankcard=bankcard,
BankName=BankName,
applicant=applicant,
submit_tiem=date_string,
state="审核中"
)
Approval.objects.create(
title=applicant + "提交付款申请",
content=applicant + "" + times + "提交了付款申请,付款理由:" + reason + ",付款金额:" + amount + ",付款日期:" + times+",收款人:"+payee+",银行卡:"+bankcard+",开户行:"+BankName,
times=date_string,
personincharge=personincharge,
state='审核中',
type="付款申请",
user_id=pay.id
)
return Response({'message': '插入成功' ,'code': 0}, status=status.HTTP_200_OK)
class PaymentDisplay(APIView):
def post(self, request, *args, **kwargs):
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
payee = request.data.get('payee')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if payee:
Q_obj &= Q(payee__icontains=payee)
pay = Payment.objects.filter(Q_obj).order_by('-id')
total = len(pay)
paginator = Paginator(pay, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
'id': info.id,
"times": info.times,
"payee": info.payee,
"reason": info.reason,
"amount": info.amount,
"bankcard": info.bankcard,
"BankName": info.BankName,
"applicant": info.applicant,
"state": info.state,
}
data.append(itme)
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditPayment(APIView):
def post(self, request, *args, **kwargs):
"""
编辑付款申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
reason = request.data.get('reason')
amount = request.data.get('amount')
times = request.data.get('times')
payee = request.data.get('payee')
bankcard = request.data.get('bankcard')
BankName = request.data.get('BankName')
applicant = request.data.get('applicant')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
payment = Payment.objects.get(id=id)
except Payment.DoesNotExist:
return Response({'status': 'error', 'message': '付款申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if reason:
payment.reason = reason
update_fields_list.append('reason')
if amount:
payment.amount = amount
update_fields_list.append('amount')
if times:
payment.times = times
update_fields_list.append('times')
if payee:
payment.payee = payee
update_fields_list.append('payee')
if bankcard:
payment.bankcard = bankcard
update_fields_list.append('bankcard')
if BankName:
payment.BankName = BankName
update_fields_list.append('BankName')
if applicant:
payment.applicant = applicant
update_fields_list.append('applicant')
if update_fields_list:
payment.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeletePayment(APIView):
def post(self, request, *args, **kwargs):
"""
删除付款申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
payment = Payment.objects.get(id=id)
except Payment.DoesNotExist:
return Response({'status': 'error', 'message': '付款申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
payment.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class reimbursement(APIView):
def post(self, request, *args, **kwargs):
"""
报销
:param request:
:param args:
:param kwargs:
:return:
"""
person = request.data.get('person')
times = request.data.get('times')
reason = request.data.get('reason')
amount = request.data.get('amount')
FeeDescription = request.data.get('FeeDescription')
personincharge = request.data.get('personincharge')
if not all([person,times, reason, amount, FeeDescription, personincharge]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
from datetime import datetime
now = datetime.now()
reim = Reimbursement.objects.create(
person=person,
times=times,
reason=reason,
amount=amount,
FeeDescription=FeeDescription,
submit_tiem=now.strftime("%Y-%m-%d"),
state="审核中"
)
Approval.objects.create(
title=person + "报销申请",
content=person + "" + times + "提交了报销申请,报销理由:" + reason + ",付款金额:" + amount + ",付款日期:" + times + ",费用说明:" + FeeDescription,
times=times,
personincharge=personincharge,
state='审核中',
type="报销申请",
user_id=reim.id
)
return Response({'message': '插入成功', 'code': 0}, status=status.HTTP_200_OK)
class reimbursementdetail(APIView):
def post(self, request, *args, **kwargs):
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
person = request.data.get('person')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if person:
Q_obj &= Q(person__icontains=person)
rei = Reimbursement.objects.filter(Q_obj).order_by('-id')
total = len(rei)
paginator = Paginator(rei, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
"id": info.id,
"times": info.times,
"person": info.person,
"reason": info.reason,
"amount": info.amount,
"FeeDescription": info.FeeDescription,
"state": info.state,
}
data.append(itme)
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditReimbursement(APIView):
def post(self, request, *args, **kwargs):
"""
编辑报销申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
person = request.data.get('person')
times = request.data.get('times')
reason = request.data.get('reason')
amount = request.data.get('amount')
FeeDescription = request.data.get('FeeDescription')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
reimbursement = Reimbursement.objects.get(id=id)
except Reimbursement.DoesNotExist:
return Response({'status': 'error', 'message': '报销申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if person:
reimbursement.person = person
update_fields_list.append('person')
if times:
reimbursement.times = times
update_fields_list.append('times')
if reason:
reimbursement.reason = reason
update_fields_list.append('reason')
if amount:
reimbursement.amount = amount
update_fields_list.append('amount')
if FeeDescription:
reimbursement.FeeDescription = FeeDescription
update_fields_list.append('FeeDescription')
if update_fields_list:
reimbursement.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteReimbursement(APIView):
def post(self, request, *args, **kwargs):
"""
删除报销申请
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
reimbursement = Reimbursement.objects.get(id=id)
except Reimbursement.DoesNotExist:
return Response({'status': 'error', 'message': '报销申请不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
reimbursement.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)
class Change(APIView):
def post(self, request, *args, **kwargs):
"""
工资/奖金变更
:param request:
:param args:
:param kwargs:
:return:
"""
username = request.data.get('username')
type = request.data.get('type')
Instructions = request.data.get('Instructions')
personincharge = request.data.get('personincharge')
if not all([username, type, Instructions]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
from datetime import datetime
now = datetime.now()
bonus = BonusChange.objects.create(
username=username,
type=type,
Instructions=Instructions,
times=now.strftime("%Y-%m-%d"),
state="审核中"
)
Approval.objects.create(
title=username + "工资/奖金变更",
content=username + "" + now.strftime('%Y-%m-%d"') + "提交了工资/奖金变更,类型:" + type + ",调整说明:" + Instructions,
times=now.strftime("%Y-%m-%d"),
personincharge=personincharge,
state='审核中',
type="工资/奖金变更",
user_id=bonus.id
)
return Response({'message': '插入成功', 'code': 0}, status=status.HTTP_200_OK)
class ChangeDetail(APIView):
def post(self, request, *args, **kwargs):
page = request.data.get('page')
per_page = request.data.get('per_page')
times = request.data.get('times')
end_time = request.data.get('end_time')
username = request.data.get('username')
if not all([page, per_page]):
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
Q_obj = Q()
if times and end_time:
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
if username:
Q_obj &= Q(username__icontains=username)
bon = BonusChange.objects.filter(Q_obj).order_by('-id')
total = len(bon)
paginator = Paginator(bon, per_page)
try:
user_agents_page = paginator.page(page)
except PageNotAnInteger:
user_agents_page = paginator.page(1)
except EmptyPage:
user_agents_page = paginator.page(paginator.num_pages)
data = []
for info in user_agents_page.object_list:
itme = {
"id": info.id,
"times": info.times,
"type": info.type,
"Instructions": info.Instructions,
"username": info.username,
}
data.append(itme)
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
class EditBonusChange(APIView):
def post(self, request, *args, **kwargs):
"""
编辑工资/奖金变更
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
username = request.data.get('username')
type = request.data.get('type')
Instructions = request.data.get('Instructions')
if not id:
return Response({'status': 'error', 'message': '缺少参数id', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
bonus = BonusChange.objects.get(id=id)
except BonusChange.DoesNotExist:
return Response({'status': 'error', 'message': '工资/奖金变更不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
update_fields_list = []
if username:
bonus.username = username
update_fields_list.append('username')
if type:
bonus.type = type
update_fields_list.append('type')
if Instructions:
bonus.Instructions = Instructions
update_fields_list.append('Instructions')
if update_fields_list:
bonus.save(update_fields=update_fields_list)
return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK)
class DeleteBonusChange(APIView):
def post(self, request, *args, **kwargs):
"""
删除工资/奖金变更
:param request:
:param args:
:param kwargs:
:return:
"""
id = request.data.get('id')
if not id:
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
try:
bonus = BonusChange.objects.get(id=id)
except BonusChange.DoesNotExist:
return Response({'status': 'error', 'message': '工资/奖金变更不存在', 'code': 1}, status=status.HTTP_404_NOT_FOUND)
bonus.delete()
return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK)