本插件开发的背景是,在生产中,生产订单已下达,存在委外工序,但是没有委外单价,如果重新修改最少需要反审核单据,委外工序反到计划状态才能修改,这里在工序计划列表添加一个按钮,同步已存在的委外单价(同步所有),这样方便业务快速进行。主要代码如下:
public override void AfterBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
if (e.BarItemKey.Equals("AI_GXGXJHDDWWDJ"))
{
//1.获取当前组织
long org = this.Context.CurrentOrganizationInfo.ID;
//2.查询当前组织委外编码
string gxid = getThisOrgID();
//获取当前组织委外供应商内码
int id=getGYSID();
if (gxid.Equals("")||id==0)
{
this.View.ShowErrMessage("当前组织无委外工序");
}
else {
string sql = string.Format(@"/*dialect*/UPDATE E
SET E.FPRICELIST=T1.FID,E.FOUTSRCPRICE =T1.dj,E.FTAXRATE =T1.sl,E.FSUPPLIER=T1.gys
FROM
(SELECT A.FID,A.FCREATEORGID cgorg,A.FNUMBER cgjmbno,A.FPRICETYPE jgtype,A.FSUPPLIERID gys,A.FFORBIDSTATUS jyzt,B.FMATERIALID wlno,B.FPRICE dj,B.FTAXPRICE hsdj,B.FTAXRATE sl,B.FEFFECTIVEDATE sxdate,B.FEXPIRYDATE enddate,B.FPROCESSORGID xqorg,B.FPROCESSID zy FROM t_PUR_PriceList A
INNER JOIN t_PUR_PriceListEntry B ON B.FID=A.FID
WHERE A.FCREATEORGID={0} AND A.FSUPPLIERID={1} AND A.FFORBIDSTATUS='A' AND B.FPROCESSID={2}
) T1
INNER JOIN T_SFC_OPERPLANNING A ON A.FPRODUCTID=T1.wlno
INNER JOIN T_SFC_OPERPLANNINGSEQ B ON B.FID=A.FID
INNER JOIN T_SFC_OPERPLANNINGDETAIL C ON C.FENTRYID=B.FENTRYID
INNER JOIN T_SFC_OPERPLANNINGDETAIL_D D ON D.FDETAILID=C.FDETAILID
INNER JOIN T_SFC_OPERPLANNINGDETAIL_A E ON E.FDETAILID=D.FDETAILID
WHERE C.FPROCESSID={3} AND C.FPROCESSORGID={4} AND D.FOUTSRCTAXPRICE=0 AND C.FOPERSTATUS<>6", org,id, gxid, gxid, org);
int a=DBUtils.Execute(this.Context, sql);
string strsql = string.Format(@"/*dialect*/UPDATE D
SET D.FOUTSRCTAXPRICE=T1.hsdj
FROM
(SELECT A.FID,A.FCREATEORGID cgorg,A.FNUMBER cgjmbno,A.FPRICETYPE jgtype,A.FSUPPLIERID gys,A.FFORBIDSTATUS jyzt,B.FMATERIALID wlno,B.FPRICE dj,B.FTAXPRICE hsdj,B.FTAXRATE sl,B.FEFFECTIVEDATE sxdate,B.FEXPIRYDATE enddate,B.FPROCESSORGID xqorg,B.FPROCESSID zy FROM t_PUR_PriceList A
INNER JOIN t_PUR_PriceListEntry B ON B.FID=A.FID
WHERE A.FCREATEORGID={0} AND A.FSUPPLIERID={1} AND A.FFORBIDSTATUS='A' AND B.FPROCESSID={2}
) T1
INNER JOIN T_SFC_OPERPLANNING A ON A.FPRODUCTID=T1.wlno
INNER JOIN T_SFC_OPERPLANNINGSEQ B ON B.FID=A.FID
INNER JOIN T_SFC_OPERPLANNINGDETAIL C ON C.FENTRYID=B.FENTRYID
INNER JOIN T_SFC_OPERPLANNINGDETAIL_D D ON D.FDETAILID=C.FDETAILID
INNER JOIN T_SFC_OPERPLANNINGDETAIL_A E ON E.FDETAILID=D.FDETAILID
WHERE C.FPROCESSID={3} AND C.FPROCESSORGID={4} AND D.FOUTSRCTAXPRICE=0 AND C.FOPERSTATUS<>6", org,id, gxid, gxid, org);
int b=DBUtils.Execute(this.Context, strsql);
if (a > 0 && b > 0)
{
this.View.ShowMessage("您在:"+this.Context.CurrentOrganizationInfo.Name+",更新工序计划委外工序,含税单价相关信息成功");
}
else {
this.View.ShowErrMessage("您在:" + this.Context.CurrentOrganizationInfo.Name + ",没有需要更新委外工序,含税单价相关的数据");
}
}
}
}
推荐阅读