委外工序委外单价同步原创
金蝶云社区-ALAOK
ALAOK
7人赞赏了该文章 852次浏览 未经作者许可,禁止转载编辑于2020年07月04日 09:49:24

本插件开发的背景是,在生产中,生产订单已下达,存在委外工序,但是没有委外单价,如果重新修改最少需要反审核单据,委外工序反到计划状态才能修改,这里在工序计划列表添加一个按钮,同步已存在的委外单价(同步所有),这样方便业务快速进行。主要代码如下:

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 + ",没有需要更新委外工序,含税单价相关的数据");

                    }                    

                }              

            }

        }



赞 7