金蝶云星空python调用空操作下推单据

#一、审核部分代码
##****************************服务插件*******************
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Newtonsoft.Json')

#clr.AddReference('Kingdee.BOS.Orm')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.DataEntity import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Newtonsoft.Json import JsonConvert
from Newtonsoft.Json.Linq import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.DataEntity import *


def OnPreparePropertys(e):
    e.FieldKeys.Add("FBillTypeId");  #单据单据类型,标识  667e76c006c8a9

def AfterExecuteOperationTransaction(e):
    #这里获取单据数据包方式和前面一样
    billIdlist=List[object]();
    SrcBillNolist=[];
    PkIds=List[object]();#执行空操作的单据内码集合
    optCode="DoNothing-AutoPush";#自定义空操作代码
    for billObj in e.DataEntitys:    #获取单据整体数据(可能是多个单据)
        billId=billObj["Id"];#单据ID  113907
        billNo=billObj["BillNo"];#单据编号 WLYS2406290004  
        BillTypeId=billObj["BillTypeId"]   #获取单据类型
        typeID=BillTypeId["ID"]    #获取源单类型ID
        typeNumber=BillTypeId["Number"]
        billIdlist.Add(billId)
        #raise Exception(str(typeID))
    #追加自定义提示信息,参考如下
    # result=OperateResult();
    # result.SuccessStatus=True;
        entity=billObj["FSrcEntity"]#进一步解析单据体,出库明细
        if typeNumber=="VSO_WLYSD02":   #typeID=="667e76c006c8a9":
           
            for rObj in entity:#在单据体中开始取值,判断,赋值
                SrcBillNo=rObj["SrcBillNo"]   #获取源单编号
                if SrcBillNo not in SrcBillNolist:
                    SrcBillNolist.append(SrcBillNo)
                #sqlid="select fid from T_STK_STKTRANSFERAPP where fbillno in({0})".format(SrcBillNolist)  #查询调拨申请单fid
               
               
                sqlid = "select fid from T_STK_STKTRANSFERAPP where fbillno in (" + ",".join("'"+item+"'" for item in SrcBillNolist) + ")"
                ds = DBUtils.ExecuteDataSet(this.Context,sqlid);
                tab = ds.Tables[0];
                for dr in tab.Rows:
                    srcfid=dr["fid"];   #获取源单fid
                    if srcfid not in PkIds:
                        PkIds.Add(srcfid)
       
    #raise Exception(str(PkIds))
    formID="STK_TRANSFERAPPLY";#调拨申请单单据FormId
    meta = MetaDataServiceHelper.Load(this.Context, formID);#读取单据的元数据

    #QTWLMeta=MetaDataServiceHelper.GetFormMetaData(this.Context, formID);#读取单据元数据
    try:
        tab=BusinessDataServiceHelper.DoNothing(this.Context, meta.BusinessInfo, PkIds.ToArray(), optCode, None);
    except:
        unformID=this.BusinessInfo.GetForm().Id;#执行当前操作的单据FormId
        unmeta = MetaDataServiceHelper.Load(this.Context, unformID);#读取单据的元数据
        BusinessDataServiceHelper.UnAudit(this.Context,unmeta.BusinessInfo,billIdlist.ToArray(),None);

        raise Exception("调拨申请单无法正常下推直接调拨单,请手动下推")
   
#   二、反审核部分代码
##****************************服务插件*******************
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Newtonsoft.Json')

#clr.AddReference('Kingdee.BOS.Orm')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.DataEntity import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Newtonsoft.Json import JsonConvert
from Newtonsoft.Json.Linq import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.DataEntity import *


def OnPreparePropertys(e):
    e.FieldKeys.Add("FBillTypeId");  #单据单据类型,标识  667e76c006c8a9

#def EndOperationTransaction(e):
def AfterExecuteOperationTransaction(e):
    #这里获取单据数据包方式和前面一样
    
    SrcBillNolist=[];
    PkIds=List[object]();#执行空操作的单据内码集合
    optCode="DoNothing-AutoPush";#自定义空操作代码 
    for billObj in e.DataEntitys:    #获取单据整体数据(可能是多个单据)
        billId=billObj["Id"];#单据ID  113907
        billNo=billObj["BillNo"];#单据编号 WLYS2406290004   
        BillTypeId=billObj["BillTypeId"]   #获取单据类型
        typeID=BillTypeId["ID"]    #获取源单类型ID
        #raise Exception(str(typeID))
    #追加自定义提示信息,参考如下
    # result=OperateResult();
    # result.SuccessStatus=True;
        entity=billObj["FSrcEntity"]#进一步解析单据体,出库明细
         
        if typeID=="667e76c006c8a9":
            
            for rObj in entity:#在单据体中开始取值,判断,赋值
                SrcBillNo=rObj["SrcBillNo"]   #获取源单编号
                F_TXBE_ActualShipmentId=rObj["Id"]   #获取单据体主键
                
                # if SrcBillNo not in SrcBillNolist:
                #     SrcBillNolist.append(SrcBillNo)
                #sqlid="select fid from T_STK_STKTRANSFERAPP where fbillno in({0})".format(SrcBillNolist)  #查询调拨申请单fid
                
                sqlwuliu="select * from T_STK_STKTRANSFERINENTRY  where F_TXBE_ACTUALSHIPMENTID={0}".format(F_TXBE_ActualShipmentId)
                
                #sqlid = "select fid from T_STK_STKTRANSFERAPP where fbillno in (" + ",".join("'"+item+"'" for item in SrcBillNolist) + ")"
                #ds = DBUtils.Execute(this.Context,sqlwuliu);#DBUtils.ExecuteDataSet(this.Context,sqlid);
                ds=DBUtils.ExecuteScalar(this.Context,sqlwuliu,0)
                #raise Exception("反审核")
                if(ds>0):
                    raise Exception("已经下推直接调拨单,不允许反审核")
       
    


    #     #billId=r["PrimaryKeyValue"];#单据ID
    #     billryId=r["EntryPrimaryKeyValue"];
    #     #billId.append[billryId]




posted on 2024-06-29 18:38  这一生,谢谢自己  阅读(13)  评论(0编辑  收藏  举报