This commit is contained in:
PastSaid
2024-04-10 10:39:04 +08:00
parent 9a7bf9b67e
commit b2419eec9c
119 changed files with 23402 additions and 350 deletions

View File

@@ -9,7 +9,6 @@ clr.AddReference("Kingdee.BOS.ServiceHelper")
from Kingdee.BOS import*
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Orm.DataEntity import*
from Kingdee.BOS.Orm.Metadata.DataEntity import*
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
@@ -40,52 +39,84 @@ def DataChanged(e):
entrys = this.View.Model.GetEntityDataObject(entity)
idlist = list(filter(lambda x:x["materialId"] > 0,map(lambda x:{ "materialId":x["MaterialId_Id"] ,"inRow": x["Seq"] - 1} ,entrys)))
GetcContractAnnualCost(idlist,hasQRCost)
def GetcContractAnnualCost(idList,hasQRCost):
# whereSql = " AND t0e.F_QNV_BASE1 IN ({0}) ".format(",".join(idList))
intoSqlList = List[str]()
if idList != None and idList.Count > 0:
for idObj in idList:
intoSqlList.Add("SELECT {0} AS 'MATERIALID' ,{1} inRow".format(str(idObj["materialId"]),str(idObj["inRow"])));
# for idObj in idList:
# intoSqlList.Add("SELECT {0} AS 'MATERIALID' ,{1} inRow".format(str(idObj["materialId"]),str(idObj["inRow"])));
# whereSql = " union ".join(intoSqlList);
for x in idList:
intoSqlList.Add(str(x["materialId"]) +','+ str(x["inRow"]))
whereSql = ";".join(intoSqlList);
sql = """/*dialect*/
SELECT *
SELECT
rowSet2.[1] AS 'MaterialId'
,rowSet2.[2] AS 'inRow'
INTO #TMPMATERIALNUM
FROM ({0}) tt
FROM (
SELECT 1 ID,CAST('<v>'+ REPLACE('{0}',';','</v><v>') + '</v>' AS XML) AS xmlVal
) AS valSet
OUTER APPLY (
SELECT ROW_NUMBER() OVER (ORDER BY valSet.ID) RN
,CAST('<v>'+ REPLACE(T.C.value('.','varchar(100)'),',','</v><v>') + '</v>' AS XML) xmlVal
FROM valSet.xmlVal.nodes('/v') AS T(C)
) rowSet
OUTER APPLY (
SELECT * FROM (
SELECT T.C.value('.','varchar(100)') AS xmlVal
,ROW_NUMBER() OVER (ORDER BY rowSet.RN) RowNo
FROM rowSet.xmlVal.nodes('/v') AS T(C)
) TT
PIVOT ( MAX(TT.xmlVal) FOR TT.RowNo IN ([1],[2])) TT2
) rowSet2
SELECT tt.inRow,ISNULL(t.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t.<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t.<2E>ۺϵ<EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t<><C4AC>˰<EFBFBD><EFBFBD>,0) AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
FROM #TMPMATERIALNUM tt
LEFT JOIN (SELECT t0e.FID
,t0e.FENTRYID
,t0.FBILLNO
,t0.F_QNV_TEXT2
,t0e.F_QNV_BASE1 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL1 AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL3 AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE2 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE3 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FTAXRATE AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
,ROW_NUMBER() OVER (PARTITION BY t0e.F_QNV_BASE1 ORDER BY t0e.F_QNV_DATE2 DESC) AS 'RN'
FROM QNV_t_Cust_Entry100003 t0
INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID
INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3
WHERE 1=1
AND t0.FDOCUMENTSTATUS ='C'
AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3
) t on t.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = tt.MATERIALID AND t.RN = 1
WHERE 1 = 1
""".format(" union ".join(intoSqlList))
SELECT CONVERT(int,tt0.inRow) AS inRow
,ISNULL(tt2.<2E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.<2E><>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.<2E>ۺϵ<DBBA><EFBFBD><EFBFBD>,0) AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.Ĭ<><C4AC>˰<EFBFBD><CBB0>,0) AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
,tt2.FBILLNO
FROM #TMPMATERIALNUM tt0
OUTER APPLY (
SELECT TOP 1
t0e.FID
,t0e.FENTRYID
,t0.FBILLNO
,t0.F_QNV_TEXT2
,t0e.F_QNV_BASE1 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL1 AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL3 AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE2 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE3 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FTAXRATE AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
FROM QNV_t_Cust_Entry100003 t0
INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID
INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3
CROSS APPLY (
SELECT t3.FMATERIALID
FROM T_BD_MATERIAL t2
INNER JOIN T_BD_MATERIAL t3 on t2.FMASTERID = t3.FMASTERID
WHERE t2.FMATERIALID = tt0.MATERIALID
AND t3.FMATERIALID = t0e.F_QNV_BASE1
) tt1
WHERE 1 = 1
AND t0.FDOCUMENTSTATUS ='C'
AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3
ORDER BY t0e.F_QNV_DATE2 DESC
) tt2
WHERE 1 = 1
""".format(whereSql)
result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql)
if result != None and result.Count > 0:
priceKey = "<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>" if hasQRCost else "<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
for row in result:
rowIndex = row["inRow"]
rowIndex = row["inRow"]
this.View.Model.SetValue("FTAXPRICE", row[priceKey], rowIndex)
this.View.Model.SetValue("FTAXRATE", row["Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>"], rowIndex)
this.View.InvokeFieldUpdateService("FTAXPRICE" ,rowIndex)
@@ -95,3 +126,5 @@ def DoCheckConditions():
if orgObj["Id"] == 101542:
return True
return False

View File

@@ -0,0 +1,19 @@
SELECT t.*
FROM (SELECT t0e.FID
,t0e.FENTRYID
,t0.FBILLNO
,t0.F_QNV_TEXT2
,t0e.F_QNV_BASE1 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL1 AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL3 AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE2 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE3 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FTAXRATE AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
,ROW_NUMBER() over(PARTITION BY t0e.F_QNV_BASE1 ORDER BY t0e.F_QNV_DATE2 DESC) AS 'RN'
FROM QNV_t_Cust_Entry100003 t0
INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID
INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3
WHERE 1=1
AND t0.FDOCUMENTSTATUS ='C'
AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3) t
WHERE t.RN = 1

View File

@@ -0,0 +1,101 @@
SELECT
tt0.*
--CONVERT(int,tt0.inRow) AS 'inRow'
,ISNULL(tt2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(tt2.Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>,0) AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
,tt2.FUSEORGID
INTO #TMP
FROM (
SELECT t0.FBILLNO
,t0.FAPPLICATIONDATE
,t0e.FMATERIALID MATERIALID
,t0e.FENTRYID
,t0e.FEVALUATEPRICE --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0e.FTAXPRICE --<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0e.FTAXRATE --˰<EFBFBD><EFBFBD>
,t0e.FAMOUNT --<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0e.FREQAMOUNT --<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t0e.FREQQTY
FROM T_PUR_Requisition t0
INNER JOIN T_PUR_ReqEntry t0e on t0.FID = t0e.FID
WHERE 1 = 1
--AND t0.FBILLNO = 'CGSQ000769'
--AND t0e.FEVALUATEPRICE = 0
AND t0.FAPPLICATIONORGID = 101542
--AND t0.FDOCUMENTSTATUS = 'C'
AND t0.FAPPLICATIONDATE >= '2024-04-01 00:00:00'
) tt0
OUTER APPLY (
SELECT TOP 1
t0e.FID
,t0e.FENTRYID
,t0.FBILLNO
,t0.F_QNV_TEXT2
,t0e.F_QNV_BASE1 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL1 AS '<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DECIMAL3 AS '<EFBFBD>ۺϵ<EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE2 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t0e.F_QNV_DATE3 AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t1.FTAXRATE AS 'Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>'
,tt1.FUSEORGID
FROM QNV_t_Cust_Entry100003 t0
INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID
INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3
CROSS APPLY (
SELECT t3.FMATERIALID,t3.FUSEORGID
FROM T_BD_MATERIAL t2
INNER JOIN T_BD_MATERIAL t3 on t2.FMASTERID = t3.FMASTERID
--AND (t3.FUSEORGID = 101542 OR t3.FUSEORGID = 101549 OR t3.FUSEORGID = 1)
WHERE t2.FMATERIALID = tt0.MATERIALID
AND t3.FMATERIALID = t0e.F_QNV_BASE1
) tt1
WHERE 1 = 1
AND t0.FDOCUMENTSTATUS ='C'
AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3
ORDER BY t0e.F_QNV_DATE2 DESC
) tt2
WHERE 1 = 1
--SELECT t1.<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/(1+t1.Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>/100)--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-- ,t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD> --<2D><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
-- ,t1.Ĭ<><C4AC>˰<EFBFBD><CBB0> --˰<><CBB0>
-- ,t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>/(1+t1.Ĭ<><C4AC>˰<EFBFBD><CBB0>/100) * t0e.FREQQTY--<2D><><EFBFBD><EFBFBD>
-- ,t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD> * t0e.FREQQTY --<2D><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
-- ,t1.FAPPLICATIONDATE
--FROM T_PUR_ReqEntry t0e
-- INNER JOIN #TMP t1 on t0e.FENTRYID = t1.FENTRYID
--ORDER BY t1.FAPPLICATIONDATE DESC
--UPDATE t0e SET t0e.FEVALUATEPRICE = t1.<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/(1+t1.Ĭ<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>/100)--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-- ,t0e.FTAXPRICE = t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD> --<2D><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
-- ,t0e.FTAXRATE =t1.Ĭ<><C4AC>˰<EFBFBD><CBB0> --˰<><CBB0>
-- ,t0e.FAMOUNT = t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>/(1+t1.Ĭ<><C4AC>˰<EFBFBD><CBB0>/100) * t0e.FREQQTY--<2D><><EFBFBD><EFBFBD>
-- ,t0e.FREQAMOUNT = t1.<2E><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD> * t0e.FREQQTY --<2D><>˰<EFBFBD><CBB0><EFBFBD><EFBFBD>
--FROM T_PUR_ReqEntry t0e
-- INNER JOIN #TMP t1 on t0e.FENTRYID = t1.FENTRYID
SELECT t0.FBILLNO
,t0.FAPPLICATIONDATE
,t0.FID
,t0.FTOTALAMOUNT
,t1.sumREQAMOUNT
,t0.FTOTALNOREQAMOUNT
,t1.sumAMOUNT
--UPDATE t0 SET t0.FTOTALAMOUNT = t1.sumREQAMOUNT
-- ,t0.FTOTALNOREQAMOUNT =t1.sumAMOUNT
FROM T_PUR_Requisition t0
CROSS APPLY (
SELECT SUM(t0e.FAMOUNT) sumAMOUNT,SUM(t0e.FREQAMOUNT) sumREQAMOUNT
FROM T_PUR_ReqEntry t0e
WHERE t0e.FID = t0.FID
GROUP BY t0e.FID
) t1
WHERE 1 = 1
AND t0.FAPPLICATIONDATE >= '2024-04-01 00:00:00'
AND t0.FAPPLICATIONORGID = 101542
DROP TABLE #TMP