|
@@ -30,6 +30,7 @@ from apps.foundation.models import BizLog, Option
|
|
|
from resources import SaleOrderResource, SaleOrderDetailResource, GoodsDeliverDetailResource, GoodsDeliverResource, \
|
|
|
GoodsDeliverQueryResource, GoodsDeliverReturnQueryResource
|
|
|
from apps.finance.models import dbFinanceIncome
|
|
|
+from apps.finance.serializers import FinanceIncomeSerializer
|
|
|
|
|
|
|
|
|
@csrf_exempt
|
|
@@ -309,24 +310,20 @@ def sale_order_pay(request):
|
|
|
order.cleared = True
|
|
|
order.save()
|
|
|
|
|
|
- dbFinanceIncome.objects.create(
|
|
|
- referer_no=order.no,
|
|
|
- create_user=request.user,
|
|
|
- department=request.user.department,
|
|
|
- type=dbFinanceIncome.SALE_ENTRY_PAY,
|
|
|
- amount=Formater.formatAmount(data['actual_amount']),
|
|
|
- account_id=data['account'],
|
|
|
- check_status=settings.PASS,
|
|
|
- check_user=request.user,
|
|
|
- check_time=timezone.now(),
|
|
|
- notes=data['notes']
|
|
|
- )
|
|
|
+ income_data = {
|
|
|
+ 'referer_no': order.no,
|
|
|
+ 'type': dbFinanceIncome.SALE_ENTRY_PAY,
|
|
|
+ 'amount': data['actual_amount'],
|
|
|
+ 'account': data['account'],
|
|
|
+ 'check_status': settings.PASS,
|
|
|
+ 'check_user':request.user.id,
|
|
|
+ 'department':request.user.department_id,
|
|
|
+ 'check_time': timezone.now(),
|
|
|
+ 'notes': data['notes']
|
|
|
+ }
|
|
|
|
|
|
- BizLog.objects.addnew(
|
|
|
- request.user,
|
|
|
- BizLog.UPDATE,
|
|
|
- u"销售订单[%s]结算,id=%d" % (order.no, order.id),
|
|
|
- )
|
|
|
+ income = FinanceIncomeSerializer.factory(request.user, income_data)
|
|
|
+ income.validSave()
|
|
|
|
|
|
except CustomError, e:
|
|
|
return JSONError(e.get_error_msg())
|
|
@@ -340,14 +337,15 @@ def sale_order_pay(request):
|
|
|
@permission_required('order.pay_sale_order')
|
|
|
def sale_order_fare_save(request):
|
|
|
id = request.GET.get('id')
|
|
|
- fare_amount = request.GET.get('fare_amount')
|
|
|
- fare_account = request.GET.get('fare_account')
|
|
|
- put_amount = request.GET.get('put_amount')
|
|
|
- put_account = request.GET.get('put_account')
|
|
|
+ data = json.loads(request.body)
|
|
|
|
|
|
try:
|
|
|
with transaction.atomic():
|
|
|
order = SaleOrder.getById(id)
|
|
|
+ fare_amount = data['fare_amount']
|
|
|
+ fare_account = data['fare_account']
|
|
|
+ put_amount = data['put_amount']
|
|
|
+ put_account = data['put_account']
|
|
|
|
|
|
if fare_amount != 0:
|
|
|
if not fare_account:
|
|
@@ -355,17 +353,19 @@ def sale_order_fare_save(request):
|
|
|
fare_amount = Formater.formatAmount(fare_amount)
|
|
|
order.fare_amount += fare_amount
|
|
|
|
|
|
- dbFinanceIncome.objects.create(
|
|
|
- referer_no=order.referer_no,
|
|
|
- create_user=request.user,
|
|
|
- department=request.user.department,
|
|
|
- type=dbFinanceIncome.SALE_ENTRY_FARE,
|
|
|
- amount=(-fare_amount),
|
|
|
- account_id=fare_account,
|
|
|
- check_status=settings.PASS,
|
|
|
- check_user=request.user,
|
|
|
- check_time=timezone.now()
|
|
|
- )
|
|
|
+ income_data = {
|
|
|
+ 'referer_no': order.no,
|
|
|
+ 'type': dbFinanceIncome.SALE_ENTRY_FARE,
|
|
|
+ 'amount': -data['fare_amount'],
|
|
|
+ 'account': fare_account,
|
|
|
+ 'check_status': settings.PASS,
|
|
|
+ 'check_user': request.user.id,
|
|
|
+ 'department': request.user.department_id,
|
|
|
+ 'check_time': timezone.now()
|
|
|
+ }
|
|
|
+
|
|
|
+ pb = FinanceIncomeSerializer.factory(request.user, income_data)
|
|
|
+ pb.validSave()
|
|
|
|
|
|
if put_amount != 0:
|
|
|
if not put_account:
|
|
@@ -373,31 +373,57 @@ def sale_order_fare_save(request):
|
|
|
put_amount = Formater.formatAmount(put_amount)
|
|
|
order.put_amount += put_amount
|
|
|
|
|
|
- dbFinanceIncome.objects.create(
|
|
|
- referer_no=order.referer_no,
|
|
|
- create_user=request.user,
|
|
|
- department=request.user.department,
|
|
|
- type=dbFinanceIncome.SALE_ENTRY_UNLOAD,
|
|
|
- amount=(-fare_amount),
|
|
|
- account_id=put_account,
|
|
|
- check_status=settings.PASS,
|
|
|
- check_user=request.user,
|
|
|
- check_time=timezone.now()
|
|
|
- )
|
|
|
+ income_data = {
|
|
|
+ 'referer_no': order.no,
|
|
|
+ 'type': dbFinanceIncome.SALE_ENTRY_UNLOAD,
|
|
|
+ 'amount': -data['put_amount'],
|
|
|
+ 'account': put_account,
|
|
|
+ 'check_status': settings.PASS,
|
|
|
+ 'check_user': request.user.id,
|
|
|
+ 'department': request.user.department_id,
|
|
|
+ 'check_time': timezone.now()
|
|
|
+ }
|
|
|
+
|
|
|
+ pb = FinanceIncomeSerializer.factory(request.user, income_data)
|
|
|
+ pb.validSave()
|
|
|
|
|
|
order.save()
|
|
|
|
|
|
+ except CustomError, e:
|
|
|
+ return JSONError(e.get_error_msg())
|
|
|
+ except Exception, e:
|
|
|
+ traceback.print_exc()
|
|
|
+ return JSONError(u'保存失败')
|
|
|
+ return JSONResponse({})
|
|
|
+
|
|
|
+
|
|
|
+@csrf_exempt
|
|
|
+@permission_required('order.pay_sale_order')
|
|
|
+def sale_order_clear(request):
|
|
|
+ id = request.GET.get('id')
|
|
|
+
|
|
|
+ try:
|
|
|
+ with transaction.atomic():
|
|
|
+ order = SaleOrder.getById(id)
|
|
|
+ if order.status == settings.DEFAULT:
|
|
|
+ raise CustomError(u'该订单未审核')
|
|
|
+
|
|
|
+ if order.cleared:
|
|
|
+ raise CustomError(u'该订单已结清')
|
|
|
+
|
|
|
+ order.cleared = True
|
|
|
+ order.save()
|
|
|
BizLog.objects.addnew(
|
|
|
request.user,
|
|
|
- BizLog.UPDATE,
|
|
|
- u"销售订单[%s]添加装运费,id=%d" % (order.no, order.id),
|
|
|
+ BizLog.CHECK,
|
|
|
+ u"销售订单[%s]结清,id=%d" % (order.no, order.id),
|
|
|
)
|
|
|
|
|
|
except CustomError, e:
|
|
|
return JSONError(e.get_error_msg())
|
|
|
except Exception, e:
|
|
|
traceback.print_exc()
|
|
|
- return JSONError(u'保存失败')
|
|
|
+ return JSONError(u'结清失败')
|
|
|
return JSONResponse({})
|
|
|
|
|
|
@csrf_exempt
|