import clr
clr.AddReference("System")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Contracts")
clr.AddReference("Kingdee.BOS.ServiceHelper")
from Kingdee.BOS import*
from Kingdee.BOS.Contracts import*
from Kingdee.BOS.Contracts.Report import*
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Report import*
from Kingdee.BOS.Core.SqlBuilder import*
from Kingdee.BOS.Core.Enums import *
from Kingdee.BOS.App.Data import*
from Kingdee.BOS.Orm.DataEntity import*
from System import*
from System.ComponentModel import*
from System.Collections.Generic import*
from System.Text import*
from System.Threading.Tasks import*
from Kingdee.BOS.ServiceHelper import *

def Initialize():
    this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL
    this.IsCreateTempTableByPlugin = True
    this.ReportProperty.IsGroupSummary = True
    this.ReportProperty.IdentityFieldName = "FIDENTITYID"
    this.ReportProperty.PrimaryKeyFieldName = "FID"
    this.ReportProperty.IsUIDesignerColumns = False

def GetReportHeaders(filter):
    header = this.ReportHeaders
    header.AddChild("FMaterialNumber", LocaleValue("物料编码"))
    header.AddChild("FMaterialName", LocaleValue("物料名称"))
    header.AddChild("FQty", LocaleValue("数量"))
    header.AddChild("FAmount", LocaleValue("金额"))
    return header

def BuilderReportSqlAndTempTable(rptfilter, tableName):
    sql = """/*dialect*/
SELECT ROW_NUMBER() OVER (ORDER BY m.FMATERIALID) AS FIDENTITYID,
    m.FMATERIALID AS FID, 0 AS FQTYPrecision,
    m.FNUMBER AS FMaterialNumber, ml.FNAME AS FMaterialName,
    SUM(e.FQTY) AS FQty, SUM(e.FAMOUNT) AS FAmount
INTO {tableName}
FROM T_PUR_POORDER h
INNER JOIN T_PUR_POORDERENTRY e ON e.FID = h.FID
INNER JOIN T_BD_MATERIAL m ON m.FMATERIALID = e.FMATERIALID
INNER JOIN T_BD_MATERIAL_L ml ON ml.FMATERIALID = m.FMATERIALID AND ml.FLOCALEID = 2052
WHERE h.FDOCUMENTSTATUS = 'C'
GROUP BY m.FMATERIALID, m.FNUMBER, ml.FNAME
""".format(tableName=tableName)
    DBUtils.Execute(this.Context, sql)

def GetSummaryColumnInfo(filter):
    list = List[SummaryField]()
    list.Add(SummaryField("FQty", Enu_SummaryType.SUM))
    list.Add(SummaryField("FAmount", Enu_SummaryType.SUM))
    return list

def CloseReport():
    this.DropTempTable()
