|
@@ -7,24 +7,26 @@ from django.shortcuts import render
|
|
|
from django.views import View
|
|
|
from django.db import connection
|
|
|
|
|
|
+from utils.cust_data import customer_data
|
|
|
from utils.examine_ood import examine_ood
|
|
|
from utils.usr_data import usr_data
|
|
|
import datetime
|
|
|
|
|
|
+# 付款作业
|
|
|
class PaymentOperationView(View):
|
|
|
def get(self,request):
|
|
|
a='TF_MON'
|
|
|
b='RP_NO'
|
|
|
c='PT20191015' #为0.000
|
|
|
- sql="SELECT COUNT(*) FROM %s WHERE %s='%s' "%(a,b,c)
|
|
|
- print(sql)
|
|
|
+ # sql="SELECT COUNT(*) FROM %s WHERE %s='%s' "%(a,b,c)
|
|
|
+ # print(sql)
|
|
|
with connection.cursor() as cursor:
|
|
|
# cursor.execute("INSERT INTO CUST(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
|
|
|
# cursor.execute("UPDATE PRDT SET NAME='呜呜呜呜' where prd_no = %s", [a])
|
|
|
# cursor.execute("select * from prdt where prd_no = %s", [a])
|
|
|
- # row_ZL_NO = cursor.execute("SELECT * FROM MF_ARP WHERE BIL_NO=%s", [a]).fetchall()[0][0]
|
|
|
- row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
|
|
|
- print(row_ZL_NO)
|
|
|
+ row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO='PT9A210001'""").fetchall()[0][0]
|
|
|
+ # row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
|
|
|
+ print(float(row_AMTN_MF_MON))
|
|
|
context={
|
|
|
'a':'get付款作业'
|
|
|
}
|
|
@@ -99,7 +101,7 @@ class PaymentOperationView(View):
|
|
|
# BACC_NO 银行账户代号
|
|
|
#ACC_NO 会计科目 待定,需要会计确定自动取银行账号里面的会计科目
|
|
|
#BIL_NO 来源单号 'PT'+RP_NO
|
|
|
- #AMTN 金额 付款是负数,收款是正数 AMTN_BC
|
|
|
+ #AMTN 金额 付款是负数,收款是正数 -float(AMTN_BC)
|
|
|
#USR 制单人 USR
|
|
|
# CHK_MAN 审核人 USR
|
|
|
#CLS_DATE 审核日期
|
|
@@ -131,13 +133,241 @@ class PaymentOperationView(View):
|
|
|
return http.JsonResponse(context)
|
|
|
|
|
|
def put(self, request):
|
|
|
+ req_data = json.loads(request.body.decode())
|
|
|
+ # 获取参数
|
|
|
+ RP_NO = req_data.get("RP_NO") #付款单号 字符类型
|
|
|
+ RP_DD = req_data.get("RP_DD") #付款日期 字符类型
|
|
|
+ AMTN_BC = req_data.get("AMTN_BC") #付款金额 数字类型
|
|
|
+ CACC_NO = req_data.get("CACC_NO") #付款银行编码 字符类型
|
|
|
+ MF_LZ1 = req_data.get("MF_LZ1") #进货开票单号 字符类型
|
|
|
+
|
|
|
+ print(RP_NO)
|
|
|
+ print(RP_DD)
|
|
|
+ print(AMTN_BC)
|
|
|
+ print(CACC_NO)
|
|
|
+ print(MF_LZ1)
|
|
|
+ # {
|
|
|
+ # "RP_NO":"PT9A200001",
|
|
|
+ # "RP_DD":"2019-10-20",
|
|
|
+ # "AMTN_BC":199,
|
|
|
+ # "CACC_NO":"01",
|
|
|
+ # "MF_LZ1":"LP9A170002"
|
|
|
+ # }
|
|
|
+ # 判断单号是否存在
|
|
|
+ row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO)
|
|
|
+ if row_ZL_NO <= 0:
|
|
|
+ return http.HttpResponseForbidden('单号不存在')
|
|
|
+
|
|
|
+ # 付款单不能修改客户
|
|
|
+ # # 判断用户是否存在,不存在则创建
|
|
|
+ # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
|
|
|
+ with connection.cursor() as cursor:
|
|
|
+ # 缓存之前冲款的金额用于回写立账冲款数据
|
|
|
+ row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s""", [RP_NO]).fetchall()[0][0]
|
|
|
+ #修改付款单表头
|
|
|
+ cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_BC=%s,CACC_NO=%s WHERE RP_NO=%s""",[RP_DD, AMTN_BC, CACC_NO,RP_NO])
|
|
|
+ # RP_NO 付款单号 RP_NO
|
|
|
+ # RP_DD 付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ # AMTN_BC 付款金额 AMTN_BC
|
|
|
+ # CACC_NO 付款银行编码
|
|
|
+
|
|
|
+ # 修改付款单表身
|
|
|
+ cursor.execute("""UPDATE TC_MON SET RP_DD=%s,AMTN_CLS=%s WHERE RP_NO=%s""",[RP_DD, AMTN_BC, RP_NO])
|
|
|
+ # RP_NO 付款单号 RP_NO
|
|
|
+ # ARP_NO 立账单号 MF_LZ1==================不用此字段
|
|
|
+ # AMTN_CLS 冲款金额 AMTN_BC
|
|
|
+ # RP_DD 冲款时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+
|
|
|
+ # 修改回冲金额表
|
|
|
+ cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s""", [AMTN_BC,float(row_AMTN),AMTN_BC,float(row_AMTN), RP_NO])
|
|
|
+ # RP_NO 付款单号 RP_NO
|
|
|
+ # AMTN 冲款金额
|
|
|
+ # AMTN_ARP 总金额 此栏位不需要改
|
|
|
+ # AMTN_REST
|
|
|
+
|
|
|
+ # 修改账户收支单表头
|
|
|
+ cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,AMTN=%s WHERE BB_NO=%s""",
|
|
|
+ [ datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, 100903, -float(AMTN_BC),'BT'+RP_NO[2::]])
|
|
|
+ # BB_NO 账户收支单单号 'BT'+RP_NO[2::]
|
|
|
+ # BB_DD 账户收支单日期 RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ # BACC_NO 银行账户代号 CACC_NO
|
|
|
+ # ACC_NO 会计科目 待定,需要会计确定自动取银行账号里面的会计科目 100903
|
|
|
+ # AMTN 金额 付款是负数,收款是正数 -float(AMTN_BC)
|
|
|
+
|
|
|
+ #修改账户收支单表身
|
|
|
+ cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s WHERE BB_NO=%s""",[datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC,'BT'+RP_NO[2::]])
|
|
|
+ # BB_NO 账户收支单号 'BT'+RP_NO[2::]
|
|
|
+ # BB_DD 账户收支单日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ # AMTN 金额 AMTN_BC
|
|
|
+
|
|
|
+ # 回写立账单的数据需要减去之前冲款的金额 row_AMTN
|
|
|
+ cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMT,0)-%s+%s WHERE BIL_NO=%s""",[AMTN_BC,float(row_AMTN), AMTN_BC, float(row_AMTN),MF_LZ1])
|
|
|
+ # AMTN_RCV 已冲金额 ISNULL(AMTN_RCV,0)+%s
|
|
|
+ # AMT 未冲金额 ISNULL(AMT,0)-%s
|
|
|
+ # BIL_NO 开票单号
|
|
|
+
|
|
|
+ # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
|
|
|
+ row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
|
|
|
+ [MF_LZ1]).fetchall()[0][0]
|
|
|
+ if row_AMT > 0:
|
|
|
+ cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
|
|
|
+ cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['PC' + MF_LZ1[2::]])
|
|
|
+
|
|
|
context = {
|
|
|
'a': 'put付款作业'
|
|
|
}
|
|
|
return http.JsonResponse(context)
|
|
|
|
|
|
def delete(self, request):
|
|
|
+ # 获取参数
|
|
|
+ req_data = json.loads(request.body.decode())
|
|
|
+ # 获取参数
|
|
|
+ RP_NO = req_data.get("RP_NO") # 付款单号 字符类型
|
|
|
+ MF_LZ1 = req_data.get("MF_LZ1") # 开票作业单号 字符类型
|
|
|
+ AMTN_BC = req_data.get("AMTN_BC") # 原单付款金额 字符类型
|
|
|
+ print(RP_NO)
|
|
|
+ print(MF_LZ1)
|
|
|
+ print(AMTN_BC)
|
|
|
+ # {
|
|
|
+ # "RP_NO":"PT9A200001",
|
|
|
+ # "AMTN_BC":199,
|
|
|
+ # "MF_LZ1":"LP9A170002"
|
|
|
+ # }
|
|
|
+
|
|
|
+ # 判断单号是否存在
|
|
|
+ row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO)
|
|
|
+ if row_ZL_NO <= 0:
|
|
|
+ return http.HttpResponseForbidden('单号不存在')
|
|
|
+
|
|
|
+ with connection.cursor() as cursor:
|
|
|
+ # 缓存之前冲款的金额用于回写立账冲款数据
|
|
|
+ row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s""", [RP_NO]).fetchall()[0][0]
|
|
|
+ # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
|
|
|
+ # 删除付款单表头
|
|
|
+ cursor.execute("""DELETE FROM TC_MON WHERE RP_NO=%s""", [RP_NO])
|
|
|
+ # 删除付款单表身
|
|
|
+ cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s""", [RP_NO])
|
|
|
+
|
|
|
+ #冲款付款金额表,如果是分多次付款的话那么就不能直接删除,是否是付一次款那么就可以直接删除
|
|
|
+ # 如果原来已经付款等于目前传过来的金额那么就可以直接删除
|
|
|
+ row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO=%s""", [RP_NO]).fetchall()[0][0]
|
|
|
+ if float(AMTN_BC)==float(row_AMTN_MF_MON):
|
|
|
+ #修改回冲金额表
|
|
|
+ cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s""", [RP_NO])
|
|
|
+ else:
|
|
|
+ cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s""",
|
|
|
+ [AMTN_BC, row_AMTN, AMTN_BC, row_AMTN, RP_NO])
|
|
|
+ # 删除账户收支单表头
|
|
|
+ cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s""", ['BT'+RP_NO[2::]])
|
|
|
+ # 删除账户收支单表身
|
|
|
+ cursor.execute("""DELETE FROM TF_BAC WHERE BB_NO=%s""", ['BT' + RP_NO[2::]])
|
|
|
+
|
|
|
+ # 如果金额立账金额等于传过来的金额那么就直接删除
|
|
|
+ row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
|
|
|
+ print(float(row_AMTN_MF_ARP))
|
|
|
+ if float(AMTN_BC)==float(row_AMTN_MF_ARP):
|
|
|
+ cursor.execute(
|
|
|
+ """UPDATE MF_ARP SET AMTN_RCV=0,AMT=0 WHERE BIL_NO=%s""",[MF_LZ1])
|
|
|
+ # 回写立账单的数据需要减去之前冲款的金额 row_AMTN
|
|
|
+ else:
|
|
|
+ cursor.execute(
|
|
|
+ """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMT,0)-%s WHERE BIL_NO=%s""",[AMTN_BC, AMTN_BC, MF_LZ1])
|
|
|
+ # 结案掉立账单, 还有进货的立账结案标识
|
|
|
+ cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
|
|
|
+ cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['PC' + MF_LZ1[2::]])
|
|
|
context = {
|
|
|
- 'a': 'put付款作业'
|
|
|
+ 'a': 'delete付款作业'
|
|
|
+ }
|
|
|
+ return http.JsonResponse(context)
|
|
|
+
|
|
|
+#预计付款单
|
|
|
+class ExpectedOperationView(View):
|
|
|
+ def get(self, request):
|
|
|
+ context = {
|
|
|
+ 'a': 'get预付款作业'
|
|
|
+ }
|
|
|
+ return http.JsonResponse(context)
|
|
|
+
|
|
|
+ def post(self, request):
|
|
|
+ # 获取参数
|
|
|
+ RP_NO = request.POST.get("RP_NO") # 预付款单号 字符类型 ----------------1
|
|
|
+ RP_DD = request.POST.get("RP_DD") # 预付款日期 字符类型 --------------------1
|
|
|
+ CUS_NO = request.POST.get("CUS_NO") # 预付款客户编码 字符类型 -------------------------1
|
|
|
+ CUS_NO_NAME = request.POST.get("CUS_NO_NAME") # 预付款客户名称 字符类型 ---------------------1
|
|
|
+ AMTN_BC = request.POST.get("AMTN_BC") # 预付款金额 数字类型 ---------------------------1
|
|
|
+ CACC_NO = request.POST.get("CACC_NO") # 预付款银行编码 字符类型 ------------1
|
|
|
+ USR = request.POST.get("USR") # 制单人编码 字符类型 ------------------1
|
|
|
+ USR_NAME = request.POST.get("USR_NAME") # 制单人姓名 字符类型 -----------------------1
|
|
|
+ # 判断单号是否存在
|
|
|
+ row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO)
|
|
|
+ if row_ZL_NO > 0:
|
|
|
+ return http.HttpResponseForbidden('单号重复')
|
|
|
+
|
|
|
+ # 判断用户是否存在,不存在则创建
|
|
|
+ row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
|
|
|
+
|
|
|
+ # 判断客户资料是否存在,不存在则创建
|
|
|
+ row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_NO, '%Y-%m-%d'))
|
|
|
+
|
|
|
+ with connection.cursor() as cursor:
|
|
|
+ cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
|
|
|
+ ('T',%s,1,2,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
|
|
|
+ [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
|
|
|
+ # RP_NO 预付款单号 RP_NO
|
|
|
+ # RP_DD 预付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ #CUS_NO 客户编码 CUS_NO
|
|
|
+ #AMTN_BC 预付款金额 AMTN_BC
|
|
|
+ #BC_NO 账户收支单号 'BT'+RP_NO[2::]
|
|
|
+ # CACC_NO 付款银行编码 CACC_NO
|
|
|
+ #USR 制单人 USR
|
|
|
+ #CHK_MAN 审核人 USR
|
|
|
+ # CLS_DATE 审核时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ # SYS_DATE 制单时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+
|
|
|
+ # 插入立账金额
|
|
|
+ # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
|
|
|
+ cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
|
|
|
+ (2,%s,,%s,'0000',%s,0,0,0)""" ,[RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC])
|
|
|
+ # RP_NO 单号 RP_NO
|
|
|
+ # RP_DD 时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ # AMTN 金额 AMTN_BC
|
|
|
+
|
|
|
+ # 插入账户收支单表头
|
|
|
+ cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
|
|
|
+ ('BT',%s,%s,%s,100903,'0000',%s,1,%s,%s,%s,'F',%s,%s,'PT',%s)""",
|
|
|
+ ['BT'+RP_NO[2::],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CACC_NO,'BT'+RP_NO,-float(AMTN_BC),USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
|
|
|
+ RP_NO])
|
|
|
+ #BB_NO 收支单号 'BT'+MF_LZ1[2::]
|
|
|
+ #BB_DD 账户收支单时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ #BACC_NO 银行账号编码 CACC_NO
|
|
|
+ #ACC_NO 会计科目先固定 100903
|
|
|
+ #BIL_NO 来源单号 'BT'+RP_NO
|
|
|
+ #AMTN 收支单金额 -float(AMTN_BC)
|
|
|
+ #USR 制单人 USR
|
|
|
+ #审核人 CHK_MAN
|
|
|
+ #CLS_DATE 审核人
|
|
|
+ #SYS_DATE 制单人
|
|
|
+
|
|
|
+ #插入收支单表身
|
|
|
+ cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
|
|
|
+ ('BT',%s,1,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),1,%s,%s,'51','-',1)""", ['BT'+RP_NO[2::],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,CUS_NO])
|
|
|
+ # BB_NO 单号 'BT'+RP_NO[2::]
|
|
|
+ #BB_DD 时间 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
|
|
|
+ #AMTN 金额 AMTN_BC
|
|
|
+ #CUS_NO 客户编码 CUS_NO
|
|
|
+ context = {
|
|
|
+ 'a': 'post预付款作业'
|
|
|
+ }
|
|
|
+ return http.JsonResponse(context)
|
|
|
+
|
|
|
+ def put(self, request):
|
|
|
+ context = {
|
|
|
+ 'a': 'post预付款作业'
|
|
|
+ }
|
|
|
+ return http.JsonResponse(context)
|
|
|
+
|
|
|
+ def delete(self, request):
|
|
|
+ context = {
|
|
|
+ 'a': 'post预付款作业'
|
|
|
}
|
|
|
return http.JsonResponse(context)
|