예제 #1
0
        /// <summary>
        /// 生成应付单
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="souObj"></param>
        /// <returns></returns>
        private static IOperationResult ToTransferSalseBill(Context ctx, DynamicObject souObj,string billtype)
        {
            IOperationResult convertResult = new OperationResult();
            DynamicObjectCollection dyCollection = souObj["PUR_ReceiveEntry"] as DynamicObjectCollection;

          

            List<ListSelectedRow> ListSalReSelect = new List<ListSelectedRow>();
            dyCollection.ToList().ForEach(entiyItem =>
            {
                ListSelectedRow convertItem = new ListSelectedRow(
                       Convert.ToString(souObj["Id"]),
                       Convert.ToString(entiyItem["Id"]),
                       Convert.ToInt32(entiyItem["Seq"]),
                       "PUR_ReceiveBill");
                ListSalReSelect.Add(convertItem); 
            });

            if (ListSalReSelect.Count <= 0)
            {
                return convertResult;
            }
            BillConvertOption convertOption = new BillConvertOption();
            convertOption.sourceFormId = "PUR_ReceiveBill";
            convertOption.targetFormId = "AP_Payable";
            convertOption.ConvertRuleKey = "AP_ReceiveToPayableMap";
            convertOption.Option = OperateOption.Create();
            convertOption.Option.SetIgnoreWarning(false);
            convertOption.BizSelectRows = ListSalReSelect.ToArray();
            convertOption.IsDraft = false;
            convertOption.IsSave = true;
            convertOption.IsAudit = true;
            convertResult = ConvertBills(ctx, convertOption,billtype);
            return convertResult;
        }
예제 #2
0
        /// <summary>
        /// 提交
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID"></param>
        /// <param name="ids"></param>
        /// <returns></returns>
        public IOperationResult SubmitBill(Context ctx, string FormID, object[] ids)
        {
            IMetaDataService metaService  = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta         = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            OperateOption    submitOption = OperateOption.Create();
            IOperationResult submitResult = BusinessDataServiceHelper.Submit(ctx, Meta.BusinessInfo, ids, "Submit", submitOption);

            return(submitResult);

            //IMetaDataService metaService = ServiceHelper.GetService<IMetaDataService>();
            //FormMetadata targetBillMeta = metaService.Load(ctx, FormID) as FormMetadata;
            //// 构建保存操作参数:设置操作选项值,忽略交互提示
            //OperateOption submitOption = OperateOption.Create();
            //// 忽略全部需要交互性质的提示,直接保存;
            ////saveOption.SetIgnoreWarning(true);              // 忽略交互提示
            ////saveOption.SetInteractionFlag(this.Option.GetInteractionFlag());        // 如果有交互,传入用户选择的交互结果
            //// using Kingdee.BOS.Core.Interaction;
            ////saveOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag());
            ////// 如下代码,强制要求忽略交互提示(演示案例不需要,注释掉)
            //submitOption.SetIgnoreWarning(true);
            ////// using Kingdee.BOS.Core.Interaction;
            //submitOption.SetIgnoreInteractionFlag(true);
            //// 调用保存服务,自动保存
            //ISubmitService submitService = ServiceHelper.GetService<ISubmitService>();
            //IOperationResult submitResult = submitService.Submit(ctx, targetBillMeta.BusinessInfo, ids, "Submit", submitOption);
            //return submitResult;
        }
        private void SaveCheckBill(IBillView billView, OperateOption saveOption)
        {
            // 设置FormId
            Form form = billView.BillBusinessInfo.GetForm();

            if (form.FormIdDynamicProperty != null)
            {
                form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id);
            }

            // 调用保存操作
            IOperationResult saveResult = BusinessDataServiceHelper.Save(this.Context, billView.BillBusinessInfo, billView.Model.DataObject, saveOption, "Save");

            if (saveResult.IsSuccess)
            {
                object[] primaryKeys = saveResult.SuccessDataEnity.Select(u => u.GetPrimaryKeyValue()).ToArray();

                // 提交
                OperateOption    submitOption = OperateOption.Create();
                IOperationResult submitResult = BusinessDataServiceHelper.Submit(this.Context, billView.BillBusinessInfo, primaryKeys, "Submit", submitOption);
                if (submitResult.IsSuccess)
                {
                    // 审核
                    OperateOption    auditOption = OperateOption.Create();
                    IOperationResult auditResult = BusinessDataServiceHelper.Audit(this.Context, billView.BillBusinessInfo, primaryKeys, auditOption);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// 创建商业机会
        /// </summary>
        /// <param name="CRMOppIds">线索ID</param>
        private void CreateCRMOpp(List <long> CRMOppIds)
        {
            //下推商业机会CRM_OPP_Opportunity
            ConvertOperationResult operationOppResult = CRMServiceHelper.ConvertBills(base.Context, this.BusinessInfo.GetForm().Id, "CRM_OPP_Opportunity", CRMOppIds);

            //获取下推生成的下游单据数据包
            DynamicObject[] targetOppBillObjs = (from p in operationOppResult.TargetDataEntities select p.DataEntity).ToArray();
            if (targetOppBillObjs.Length == 0)
            {
                // 未下推成功目标单,抛出错误,中断审核
                throw new KDBusinessException("", string.Format("由{0}自动下推{1},没有成功生成数据包,自动下推失败!", this.BusinessInfo.GetForm().Id, "CRM_OPP_Opportunity"));
            }
            // 对下游单据数据包,进行适当的修订,以避免关键字段为空,自动保存失败
            // 示例代码略
            //var saveResult = CRMServiceHelper.Save(base.Context, "CRM_OPP_Opportunity", targetBillObjs);
            //var draftOppResult = CRMServiceHelper.Draft(base.Context, "CRM_OPP_Opportunity", targetOppBillObjs);
            var saveOppResult = CRMServiceHelper.Save(base.Context, "CRM_OPP_Opportunity", targetOppBillObjs);

            // 判断自动保存结果:只有操作成功,才会继续
            //if (this.CheckOpResult(draftOppResult, OperateOption.Create()))
            //{

            //}
            if (this.CheckOpResult(saveOppResult, OperateOption.Create()))
            {
                object[] ids = (from c in saveOppResult.SuccessDataEnity
                                select c[0]).ToArray();//保存成功的结果
                if (ids.Count() > 0)
                {
                    foreach (object item in ids)
                    {
                        string           id = Convert.ToString(item);
                        IOperationResult submitOppResult = CRMServiceHelper.SubmitWorkFlow(base.Context, "CRM_OPP_Opportunity", id);
                        // 判断提交结果
                        if (submitOppResult.IsSuccess == true)
                        {
                            // 自动提交成功,显示空操作本身的成功提示即可
                        }
                        else
                        {
                            submitOppResult.MergeValidateErrors();
                            if (submitOppResult.OperateResult == null)
                            {// 未知原因导致提交失败
                                throw new KDBusinessException("AutoSubmit-004", "未知原因导致自动提交失败!");
                            }
                            else
                            {
                                StringBuilder sb = new StringBuilder();
                                sb.AppendLine("自动提交失败,失败原因:");
                                foreach (var operateResult in submitOppResult.OperateResult)
                                {
                                    sb.AppendLine(operateResult.Message);
                                }
                                throw new KDBusinessException("AutoSubmit-005", sb.ToString());
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 读取第三方物料信息,存入K/3 Cloud物料
        /// </summary>
        private void ImportMaterial()
        {
            // 构建一个IBillView实例,通过此实例,可以方便的填写物料各属性
            IBillView billView = this.CreateMaterialView();

            // 新建一个空白物料
            // billView.CreateNewModelData();
            ((IBillViewService)billView).LoadData();


            // 触发插件的OnLoad事件:
            // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。
            // 如果不触发OnLoad事件,会导致主业务组织赋值不成功
            DynamicFormViewPlugInProxy eventProxy = billView.GetService <DynamicFormViewPlugInProxy>();

            eventProxy.FireOnLoad();


            // 记载指定的单据进行修改
            // this.ModifyBill(billView, "100001"); // 本代码演示新建物料,把调用修改的代码,注释掉

            // 填写物料各属性
            this.FillMaterialPropertys(billView);
            // 保存物料
            OperateOption saveOption = OperateOption.Create();

            this.SaveMaterial(billView, saveOption);
        }
예제 #6
0
        /// <summary>
        /// 配方单转库存检验单
        /// </summary>
        /// <param name="ctx">上下文</param>
        /// <param name="FID">源单ID</param>
        /// <param name="FPKID">源单单据体ID</param>
        /// <param name="row">单据体行号</param>
        public IOperationResult ConvertRule(Context ctx, int FID, int FPKID, int row)
        {
            List <ListSelectedRow> ListSalReSelect = new List <ListSelectedRow>();
            ListSelectedRow        convertItem     = new ListSelectedRow(
                Convert.ToString(FID),
                Convert.ToString(FPKID),
                Convert.ToInt32(row),
                "PRD_PPBOM");

            ListSalReSelect.Add(convertItem);
            if (ListSalReSelect.Count <= 0)
            {
                return(null);
            }
            BillConvertOption convertOption = new BillConvertOption();

            convertOption.sourceFormId   = "PRD_PPBOM";
            convertOption.targetFormId   = "QM_STKAPPInspect";
            convertOption.ConvertRuleKey = "UseFormToSTKAPPInspect";
            convertOption.Option         = OperateOption.Create();
            convertOption.BizSelectRows  = ListSalReSelect.ToArray();
            convertOption.IsDraft        = true;
            convertOption.IsSave         = false;
            return(AppServiceContext.ConvertBills(ctx, convertOption));
        }
예제 #7
0
        /// <summary>
        /// 操作执行后逻辑处理
        /// </summary>
        /// <param name="e"></param>
        public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
        {
            var         billGroups   = e.DataEntitys.GroupBy(o => Convert.ToString(o["BillTypeId_Id"]));
            List <long> lstNewMtrlId = new List <long>();
            List <long> lstNewBomId  = new List <long>();

            foreach (var billGroup in billGroups)
            {
                var billTypeParaObj = AppServiceContext.GetService <ISysProfileService>().LoadBillTypeParameter(this.Context, this.BusinessInfo.GetForm().Id, billGroup.Key);
                if (billTypeParaObj == null)
                {
                    continue;
                }

                bool bSupportNoMtrlQuote = Convert.ToBoolean(billTypeParaObj["F_JN_NoMtrlIdQuotation"]);

                if (bSupportNoMtrlQuote)
                {
                    ExtendedDataEntitySet dataEntitySet = new ExtendedDataEntitySet();
                    dataEntitySet.Parse(billGroup.ToArray(), this.BusinessInfo);

                    var quoteEntryRows = dataEntitySet.FindByEntityKey("FQUOTATIONENTRY")
                                         .Where(o => !o["F_JN_ProductName"].IsEmptyPrimaryKey())
                                         .ToArray();
                    if (quoteEntryRows.Any() == false)
                    {
                        continue;
                    }

                    lstNewMtrlId.AddRange(quoteEntryRows.Select(o => (long)o["MaterialId_Id"])
                                          .Distinct()
                                          .Where(o => o > 0));
                    lstNewBomId.AddRange(quoteEntryRows.Select(o => (long)o["BomId_Id"])
                                         .Distinct()
                                         .Where(o => o > 0));
                }
            }

            //反禁用关联的物料及物料清单
            OperateOption mtrlOption = OperateOption.Create();

            mtrlOption.SetVariableValue("IsList", true);
            FormMetadata mtrlMetadata = AppServiceContext.MetadataService.Load(this.Context, "BD_MATERIAL") as FormMetadata;
            var          mtrlOpRet    = AppServiceContext.SetStatusService.SetBillStatus(this.Context, mtrlMetadata.BusinessInfo,
                                                                                         lstNewMtrlId.Select(o => new KeyValuePair <object, object>(o, null)).ToList(),
                                                                                         null, "Enable", mtrlOption);

            this.OperationResult.MergeResult(mtrlOpRet);

            OperateOption bomOption = OperateOption.Create();

            bomOption.SetVariableValue("IsList", true);
            FormMetadata bomMetadata = AppServiceContext.MetadataService.Load(this.Context, "ENG_BOM") as FormMetadata;
            var          bomOpRet    = AppServiceContext.SetStatusService.SetBillStatus(this.Context, bomMetadata.BusinessInfo,
                                                                                        lstNewBomId.Select(o => new KeyValuePair <object, object>(o, null)).ToList(),
                                                                                        null, "Enable", bomOption);

            this.OperationResult.MergeResult(bomOpRet);
        }
예제 #8
0
        /// <summary>
        /// 禁用单据
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID">单据标识</param>
        /// <param name="ids">禁用单据内码集合</param>
        /// <param name="pkId">表主键列</param>
        /// <param name="tableName">表名</param>
        /// <param name="fieldName">禁用状态列</param>
        /// <param name="fieldValue">禁用值</param>
        /// <returns></returns>
        public void SetState(Context ctx, string FormID, object[] ids, string pkId, string tableName, string fieldName, string fieldValue)
        {
            IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta        = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            OperateOption    AuditOption = OperateOption.Create();

            BusinessDataServiceHelper.SetState(ctx, tableName, fieldName, fieldValue, pkId, ids);
        }
예제 #9
0
        //数据同步
        public void dataSync(DynamicObject obj)
        {
            IBillView billView = this.CreateBillView(this.Context);

            ((IBillViewService)billView).LoadData();
            DynamicFormViewPlugInProxy eventProxy = billView.GetService <DynamicFormViewPlugInProxy>();

            eventProxy.FireOnLoad();
            this.FillBillPropertys(this.Context, billView, obj);
            IOperationResult saveResult = null;

            object[]         primaryKeys = null;
            IOperationResult auditResult = null;

            if (this.FormOperation.Operation.Equals("Save"))//保存
            {
                if (isExsit(Convert.ToInt64(obj["Id"])))
                {
                    updateAssistData(Convert.ToInt64(obj["Id"]), Convert.ToString(obj["Number"]), Convert.ToString(obj["Name"]));  //存在则修改
                }
                else  //不存则新增
                      // 调用保存操作
                {
                    OperateOption saveOption = OperateOption.Create();
                    // 调用保存操作
                    saveResult = BusinessDataServiceHelper.Save(this.Context, billView.BillBusinessInfo, billView.Model.DataObject, saveOption, "Save");
                }
            }
            else if (this.FormOperation.Operation.Equals("Submit"))//提交
            {
                updateAssistDataStatus(Convert.ToInt64(obj["Id"]), "B");
            }
            else if (this.FormOperation.Operation.Equals("Audit"))//审核
            {
                updateAssistDataStatus(Convert.ToInt64(obj["Id"]), "C");
            }
            else if (this.FormOperation.Operation.Equals("UnAudit"))          //反审核
            {
                if (getExsitOldData(Convert.ToString(obj["Number"])) != null) //判断辅助资料表是否有对应的老数据
                {
                    DynamicObject oo = getExsitOldData(Convert.ToString(obj["Number"]));
                    updateAssistDataOld(Convert.ToString(oo["fentryid"]), Convert.ToString(obj["Number"]));//如果存在则把外键编码字段关联上
                }
                updateAssistDataStatus(Convert.ToInt64(obj["Id"]), "D");
            }
            else if (this.FormOperation.Operation.Equals("Forbid"))//禁用
            {
                updateAssistForbidStatus(Convert.ToInt64(obj["Id"]), "B");
            }
            else if (this.FormOperation.Operation.Equals("Enable"))//反禁用
            {
                updateAssistForbidStatus(Convert.ToInt64(obj["Id"]), "A");
            }
            else if (this.FormOperation.Operation.Equals("Delete"))//删除
            {
                deleteData(Convert.ToInt64(obj["Id"]));
            }
        }
예제 #10
0
        /// <summary>
        /// 另一种保存服务
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID"></param>
        /// <param name="dyObject"></param>
        /// <returns></returns>
        public IOperationResult BatchSaveBill(Context ctx, string FormID, DynamicObject[] dyObject)
        {
            IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta        = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            OperateOption    SaveOption  = OperateOption.Create();
            IOperationResult SaveResult  = BusinessDataServiceHelper.Save(ctx, Meta.BusinessInfo, dyObject, SaveOption, "Save");

            return(SaveResult);
        }
예제 #11
0
        public IOperationResult AuditBill(Context ctx, string FormID, object[] ids)
        {
            IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta        = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            OperateOption    AuditOption = OperateOption.Create();
            IOperationResult AuditResult = BusinessDataServiceHelper.Audit(ctx, Meta.BusinessInfo, ids, AuditOption);

            return(AuditResult);
        }
예제 #12
0
        /// <summary>
        /// 暂存单据
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID"></param>
        /// <param name="dyObject"></param>
        /// <returns></returns>
        public IOperationResult DraftBill(Context ctx, string FormID, DynamicObject[] dyObject)
        {
            IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta        = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            OperateOption    DraftOption = OperateOption.Create();
            IOperationResult DraftResult = BusinessDataServiceHelper.Draft(ctx, Meta.BusinessInfo, dyObject, DraftOption, "Draft");

            return(DraftResult);
        }
예제 #13
0
파일: Test1.cs 프로젝트: szzend/CLOUDDOC
        private void SaveBillInfo()
        {
            IBillView billView = this.CreateBillView();

            ((IBillViewService)billView).LoadData();
            this.FillFormPropertys(billView);
            OperateOption saveOption = OperateOption.Create();

            this.SaveFormData(billView, saveOption);
        }
예제 #14
0
        /// <summary>
        /// 加载引用属性
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="dt"></param>
        /// <param name="pkValue"></param>
        /// <returns></returns>
        private DynamicObject LoadReferenceData(Context ctx, DynamicObjectType dt, object pkValue)
        {
            if (pkValue.IsEmptyPrimaryKey())
            {
                return(null);
            }
            OperateOption option = OperateOption.Create();

            option.SetThrowExceptionWhenNotFind(false);
            return(Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.LoadSingle(ctx, pkValue, dt, option));
        }
예제 #15
0
        }//end method

        public static IOperationResult DoNothing(this IEnumerable <DynamicObject> dataObject, Context ctx, BusinessInfo businessInfo, string operationNumber, OperateOption option = null)
        {
            if (option == null)
            {
                option = OperateOption.Create();
            }
            option.SetIgnoreWarning(true);
            option.SetIgnoreInteractionFlag(true);

            IOperationResult result = BusinessDataServiceHelper.DoNothingWithDataEntity(ctx, businessInfo, dataObject.ToArray(), operationNumber, option);

            return(result);
        } //end method
        // 物料动态换算新增单据
        private void createNewConvertBill(String lotNo, long materialId, String unit, double rate)
        {
            IBillView billView = this.CreateBillView();

            ((IBillViewService)billView).LoadData();
            DynamicFormViewPlugInProxy eventProxy = billView.GetService <DynamicFormViewPlugInProxy>();

            eventProxy.FireOnLoad();
            this.FillBillPropertys(billView, lotNo, materialId, unit, rate);
            OperateOption saveOption = OperateOption.Create();

            this.SaveCheckBill(billView, saveOption);
        }
예제 #17
0
        }//end method

        public static IOperationResult Submit(this IEnumerable <DynamicObject> dataObject, Context ctx, BusinessInfo businessInfo, OperateOption option = null, Func <DynamicObject, object> selector = null)
        {
            if (option == null)
            {
                option = OperateOption.Create();
            }
            option.SetIgnoreWarning(true);
            option.SetIgnoreInteractionFlag(true);

            object[] pkIds = selector != null?dataObject.Select(selector).ToArray() : dataObject.Select(data => data.PkId()).ToArray();

            IOperationResult result = BusinessDataServiceHelper.Submit(ctx, businessInfo, pkIds, "Submit", option);

            return(result);
        }//end method
예제 #18
0
        /// <summary>
        /// 提交进入工作流
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID"></param>
        /// <param name="ids"></param>
        /// <returns></returns>
        public IOperationResult SubmitWorkFlowBill(Context ctx, string FormID, string billId)
        {
            IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>(); //元数据服务
            FormMetadata     Meta        = metaService.Load(ctx, FormID) as FormMetadata; //获取元数据
            // 首先判断单据是否已经有未完成的工作流
            IProcInstService procInstService = Kingdee.BOS.Workflow.Contracts.ServiceFactory.GetProcInstService(ctx);
            bool             isExist         = procInstService.CheckUnCompletePrcInstExsit(ctx, FormID, billId);

            if (isExist)
            {
                throw new KDBusinessException("AutoSubmit-001", "该单据已经启动了流程,不允许重复提交!");
            }
            // 读取单据的工作流配置模板
            IWorkflowTemplateService wfTemplateService  = Kingdee.BOS.Workflow.Contracts.ServiceFactory.GetWorkflowTemplateService(ctx);
            List <FindPrcResult>     findProcResultList = wfTemplateService.GetPrcListByFormID(
                FormID, new string[] { billId }, ctx);

            if (findProcResultList == null || findProcResultList.Count == 0)
            {
                throw new KDBusinessException("AutoSubmit-002", "查找单据适用的流程模板失败,不允许提交工作流!");
            }

            // 设置提交参数:忽略操作过程中的警告,避免与用户交互
            OperateOption submitOption = OperateOption.Create();

            submitOption.SetIgnoreWarning(true);
            IOperationResult submitResult = null;

            FindPrcResult findProcResult = findProcResultList[0];

            if (findProcResult.Result == TemplateResultType.Error)
            {
                throw new KDBusinessException("AutoSubmit-003", "单据不符合流程启动条件,不允许提交工作流!");
            }
            else if (findProcResult.Result != TemplateResultType.Normal)
            {    // 本单无适用的流程图,直接走传统审批
                ISubmitService submitService = ServiceHelper.GetService <ISubmitService>();
                submitResult = submitService.Submit(ctx, Meta.BusinessInfo,
                                                    new object[] { billId }, "Submit", submitOption);
            }
            else
            {    // 走工作流
                IBOSWorkflowService wfService = Kingdee.BOS.Workflow.Contracts.ServiceFactory.GetBOSWorkflowService(ctx);
                submitResult = wfService.ListSubmit(ctx, Meta.BusinessInfo,
                                                    0, new object[] { billId }, findProcResultList, submitOption);
            }
            return(submitResult);
        }
예제 #19
0
        }//end method

        public static IOperationResult Forbid(this IEnumerable <DynamicObject> dataObject, Context ctx, BusinessInfo businessInfo, OperateOption option = null, Func <DynamicObject, object> selector = null)
        {
            if (option == null)
            {
                option = OperateOption.Create();
            }
            option.SetIgnoreWarning(true);
            option.SetIgnoreInteractionFlag(true);

            var pkIds = dataObject.Select(data => new KeyValuePair <object, object>(selector != null ? selector(data) : data.PkId(), ""))
                        .ToList();

            IOperationResult result = BusinessDataServiceHelper.SetBillStatus(ctx, businessInfo, pkIds, null, OperationNumberConst.OperationNumber_Forbid, option);

            return(result);
        }//end method
예제 #20
0
        /// <summary>
        /// 创建CRM联系人
        /// </summary>
        /// <param name="CRMLinkIds">线索id</param>
        private void CreateCRMLink(List <long> CRMLinkIds)
        {
            //下推CRM联系人CRM_CUST_Contact
            ConvertOperationResult operationContactResult = CRMServiceHelper.ConvertBills(base.Context, this.BusinessInfo.GetForm().Id, "CRM_CUST_Contact", CRMLinkIds);

            //获取下推生成的下游单据数据包
            DynamicObject[] targetContactBillObjs = (from p in operationContactResult.TargetDataEntities select p.DataEntity).ToArray();
            if (targetContactBillObjs.Length == 0)
            {
                // 未下推成功目标单,抛出错误,中断审核
                throw new KDBusinessException("", string.Format("由{0}自动下推{1},没有成功生成数据包,自动下推失败!", this.BusinessInfo.GetForm().Id, "CRM_CUST_Contact"));
            }
            // 对下游单据数据包,进行适当的修订,以避免关键字段为空,自动保存失败
            // 示例代码略
            //var saveResult = CRMServiceHelper.Save(base.Context, "CRM_OPP_Opportunity", targetBillObjs);
            var saveContactResult = CRMServiceHelper.Save(base.Context, "CRM_CUST_Contact", targetContactBillObjs);

            // 判断自动保存结果:只有操作成功,才会继续
            if (this.CheckOpResult(saveContactResult, OperateOption.Create()))
            {
                object[] ids = (from c in saveContactResult.SuccessDataEnity
                                select c[0]).ToArray();//保存成功的结果
                if (ids.Count() > 0)
                {
                    IOperationResult submitContactResult = CRMServiceHelper.Submit(base.Context, "CRM_CUST_Contact", ids);
                    if (this.CheckOpResult(submitContactResult, OperateOption.Create()))
                    {
                        object[] ips = (from c in submitContactResult.SuccessDataEnity
                                        select c[0]).ToArray();//提交成功的结果
                        if (ips.Count() > 0)
                        {
                            IOperationResult auditContactResult = CRMServiceHelper.Audit(base.Context, "CRM_CUST_Contact", ips);
                            if (this.CheckOpResult(auditContactResult, OperateOption.Create()))
                            {
                            }
                        }
                    }
                }
            }
        }
예제 #21
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="FormID">业务对象标识</param>
        /// <param name="dyObject">保存业务对象集合</param>
        /// <returns></returns>
        public IOperationResult SaveBill(Context ctx, string FormID, DynamicObject[] dyObject)
        {
            IMetaDataService metaService    = ServiceHelper.GetService <IMetaDataService>();
            FormMetadata     targetBillMeta = metaService.Load(ctx, FormID) as FormMetadata;
            // 构建保存操作参数:设置操作选项值,忽略交互提示
            OperateOption saveOption = OperateOption.Create();

            // 忽略全部需要交互性质的提示,直接保存;
            //saveOption.SetIgnoreWarning(true);              // 忽略交互提示
            //saveOption.SetInteractionFlag(this.Option.GetInteractionFlag());        // 如果有交互,传入用户选择的交互结果
            // using Kingdee.BOS.Core.Interaction;
            //saveOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag());
            //// 如下代码,强制要求忽略交互提示(演示案例不需要,注释掉)
            saveOption.SetIgnoreWarning(true);
            //// using Kingdee.BOS.Core.Interaction;
            saveOption.SetIgnoreInteractionFlag(true);
            // 调用保存服务,自动保存
            ISaveService     saveService  = ServiceHelper.GetService <ISaveService>();
            IOperationResult saveResult   = saveService.Save(ctx, targetBillMeta.BusinessInfo, dyObject, saveOption, "Save");
            ISubmitService   save1Service = ServiceHelper.GetService <ISubmitService>();


            return(saveResult);
        }
예제 #22
0
        /// <summary>
        /// 保存操作完毕,事务结束之前,进行自动提交、审核
        /// </summary>
        /// <param name="e"></param>
        public override void EndOperationTransaction(EndOperationTransactionArgs e)
        {
            // 取到需要自动提交、审核的单据内码
            object[] pkArray = (from p in e.DataEntitys
                                select p[0]).ToArray();

            // 设置提交参数
            // using Kingdee.BOS.Orm;
            OperateOption submitOption = OperateOption.Create();

            submitOption.SetIgnoreWarning(this.Option.GetIgnoreWarning());
            submitOption.SetInteractionFlag(this.Option.GetInteractionFlag());
            submitOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag());

            // 创建提交服务:using Kingdee.BOS.Contracts; using Kingdee.BOS.App;
            ISubmitService   submitService = ServiceHelper.GetService <ISubmitService>();
            IOperationResult submitResult  = submitService.Submit(
                this.Context, this.BusinessInfo,
                pkArray, "Submit", submitOption);

            // 判断提交结果,如果失败,则内部会抛出错误,回滚代码
            if (CheckOpResult(submitResult) == false)
            {
                return;
            }

            // 构建操作可选参数对象
            OperateOption auditOption = OperateOption.Create();

            auditOption.SetIgnoreWarning(this.Option.GetIgnoreWarning());
            auditOption.SetInteractionFlag(this.Option.GetInteractionFlag());
            auditOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag());

            // 构建单据主键参数
            List <KeyValuePair <object, object> > pkEntityIds = new List <KeyValuePair <object, object> >();

            foreach (var pkValue in pkArray)
            {
                pkEntityIds.Add(new KeyValuePair <object, object>(pkValue, ""));
            }

            List <object> paras = new List <object>();

            paras.Add("1");
            paras.Add("");

            // 调用审核操作
            ISetStatusService setStatusService = ServiceHelper.GetService <ISetStatusService>();

            // 如下调用方式,需显示交互信息
            IOperationResult auditResult = setStatusService.SetBillStatus(this.Context,
                                                                          this.BusinessInfo,
                                                                          pkEntityIds,
                                                                          paras,
                                                                          "Audit",
                                                                          auditOption);

            // 判断审核结果,如果失败,则内部会抛出错误,回滚代码
            if (CheckOpResult(auditResult) == false)
            {
                return;
            }
        }
예제 #23
0
        public void AutomationInvalid(Context ctx)
        {
            DateTime Date = new DateTime();

            Date = DateTime.Now;
            string sql = string.Format(@"select * from T_SAL_QUOTATION t1 inner join T_SAL_QUOTATIONENTRY t2 on t1.FID=t2.FID 
                                         where datediff(day,FMODIFYDATE,'{0}')>=10 and FDOCUMENTSTATUS <>'C'", Date);
            //未审核超过十天的数据
            DynamicObjectCollection obj = DBUtils.ExecuteDynamicObject(ctx, sql, null, null, CommandType.Text, null);

            if (obj.Count <= 0)
            {
                return;
            }
            List <int> list = new List <int>();
            int        id   = 0;

            foreach (DynamicObject item in obj)
            {
                //单据类型为定价单
                if (Convert.ToString(item["FBILLTYPEID"]) == "dde3ab8a6b714e9fa7039d065a169f92")
                {
                    continue;
                }
                id = Convert.ToInt32(item["fid"]);
                list.Add(id);
            }
            string Sql = string.Format("update T_SAL_QUOTATION set FINVALIDSTATUS='B' where fid in ({0})", string.Join(",", list.ToArray()));

            DBUtils.Execute(ctx, Sql);

            FormMetadata metaData     = (FormMetadata)AppServiceContext.MetadataService.Load(ctx, "SAL_QUOTATION", true);
            var          Buinfo       = metaData.BusinessInfo;
            var          billGroups   = obj.GroupBy(o => Convert.ToString(o["FBillTypeId"]));
            List <int>   lstNewMtrlId = new List <int>();
            List <int>   lstNewBomId  = new List <int>();

            foreach (var billGroup in billGroups)
            {
                var billTypeParaObj = AppServiceContext.GetService <ISysProfileService>().LoadBillTypeParameter(ctx, "SAL_QUOTATION", billGroup.Key);
                if (billTypeParaObj == null)
                {
                    continue;
                }

                bool bSupportNoMtrlQuote = Convert.ToBoolean(billTypeParaObj["F_JN_NoMtrlIdQuotation"]);

                if (bSupportNoMtrlQuote)
                {
                    ExtendedDataEntitySet dataEntitySet = new ExtendedDataEntitySet();
                    dataEntitySet.Parse(billGroup.ToArray(), Buinfo);
                    var quoteEntryRows = dataEntitySet.FindByEntityKey("FBillHead");
                    var Entryobj       = quoteEntryRows.Where(o => !o["F_JN_ProductName"].IsEmptyPrimaryKey()).ToArray();
                    if (Entryobj.Any() == false)
                    {
                        continue;
                    }

                    lstNewMtrlId.AddRange(Entryobj.Select(o => (int)o["FMATERIALID"])
                                          .Distinct()
                                          .Where(o => o > 0));
                    lstNewBomId.AddRange(Entryobj.Select(o => (int)o["FBOMID"])
                                         .Distinct()
                                         .Where(o => o > 0));
                }
            }
            //禁用关联的物料及物料清单
            if (lstNewMtrlId.Count > 0)
            {
                OperateOption mtrlOption = OperateOption.Create();
                mtrlOption.SetVariableValue("IsList", true);
                FormMetadata mtrlMetadata = AppServiceContext.MetadataService.Load(ctx, "BD_MATERIAL") as FormMetadata;
                var          mtrlOpRet    = AppServiceContext.SetStatusService.SetBillStatus(ctx, mtrlMetadata.BusinessInfo,
                                                                                             lstNewMtrlId.Select(o => new KeyValuePair <object, object>(o, null)).ToList(),
                                                                                             null, "Forbid", mtrlOption);
            }
            if (lstNewBomId.Count > 0)
            {
                OperateOption bomOption = OperateOption.Create();
                bomOption.SetVariableValue("IsList", true);
                FormMetadata bomMetadata = AppServiceContext.MetadataService.Load(ctx, "ENG_BOM") as FormMetadata;
                var          bomOpRet    = AppServiceContext.SetStatusService.SetBillStatus(ctx, bomMetadata.BusinessInfo,
                                                                                            lstNewBomId.Select(o => new KeyValuePair <object, object>(o, null)).ToList(),
                                                                                            null, "Forbid", bomOption);
            }
        }
        private void SetBillValue(Context context, DynamicObject orgobj, string WhereSql, IBillView view, int erow)
        {
            string XQty = Convert.ToString(this.Model.GetValue("F_SZXY_BoxQty"));//获取输入的箱数

            if (!WhereSql.IsNullOrEmptyOrWhiteSpace())
            {
                long orgid = Convert.ToInt64(orgobj["Id"]);

                string SQL = "/*dialect*/select t1.F_SZXY_MATERIAL,t1.F_SZXY_PLY,t1.F_SZXY_WIDTH,t1.F_SZXY,t1.F_SZXY_MANDREL,T5.F_SZXY_Text '客户订单号', " +
                             "t1.F_SZXY_CUSTID,t1.F_SZXY_PUDNO,t1.F_SZXY_CUSTNO,t1.F_SZXY_CUSTBACTH,t1.F_SZXY_PUDLINENO,T1.F_SZXY_CTNNO,t3.F_SZXY_MOID, " +
                             "t1.F_SZXY_SOSEQ1,t1.F_SZXY_SOENTRYID1,sum(t1.F_SZXY_AREA1) Area , " +
                             "sum(t1.F_SZXY_JQTY)  BOXCount ,T5.F_SZXY_SALER '销售员',T1.F_SZXY_DATE '包装日期',T5.F_SZXY_XSCUST '客户' " +
                             "from SZXY_t_BZDHEntry t1 " +
                             "join SZXY_t_BZD t3 on t1.FID = t3.FID " +
                             "left join T_PRD_MO T4 on T4.FBILLNO = t1.F_SZXY_PUDNO " +
                             "left join T_PRD_MOENTRY T5 on t5.FSEQ = t1.F_SZXY_PUDLINENO " +
                             $" where {WhereSql} " +
                             " group by t1.F_SZXY_MATERIAL,t1.F_SZXY_PLY,t1.F_SZXY_WIDTH,F_SZXY_CTNNO,t1.F_SZXY, " +
                             " t1.F_SZXY_MANDREL,t1.F_SZXY_CUSTID,t1.F_SZXY_PUDNO,t1.F_SZXY_CUSTNO, " +
                             " t1.F_SZXY_CUSTBACTH,t1.F_SZXY_PUDLINENO,t3.F_SZXY_MOID,t1.F_SZXY_SOSEQ1,t1.F_SZXY_SOENTRYID1 " +
                             ",T5.F_SZXY_SALER  ,T5.F_SZXY_SALER ,T5.F_SZXY_TEXT,T1.F_SZXY_DATE,T5.F_SZXY_XSCUST";

                //客户订单号获取客户PO号、日期获取包装日期、业务员、客户
                Logger.Debug("客户回签单", SQL);
                DataSet  fillData = DBServiceHelper.ExecuteDataSet(this.Context, SQL);
                DateTime dt       = DateTime.Now;
                if (fillData != null && fillData.Tables.Count > 0 && fillData.Tables[0].Rows.Count > 0)
                {
                    string value = "";

                    int mm = 0;


                    for (int i = 0; i < fillData.Tables[0].Rows.Count; i++)
                    {
                        mm = erow + i;

                        this.Model.BatchCreateNewEntryRow("F_SZXY_KHHQDEntity", 1);

                        this.View.UpdateView("F_SZXY_KHHQDEntity");

                        this.View.GetControl <EntryGrid>("F_SZXY_KHHQDEntity").SetEnterMoveNextColumnCell(true);

                        this.Model.SetValue("F_SZXY_CBNO1", Convert.ToString(this.Model.GetValue("F_SZXY_CBNO")), mm);

                        this.Model.SetValue("F_SZXY_BoxNo", Convert.ToString(fillData.Tables[0].Rows[i]["F_SZXY_CTNNO"]), mm);



                        IViewService viewService = ServiceHelper.GetService <IViewService>();
                        //物料编码
                        value = Convert.ToString(fillData.Tables[0].Rows[i][0]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            string RMat = Utils.GetRootMatId(value, orgid.ToString(), Context);
                            DynamicObjectCollection entry1          = this.Model.DataObject["SZXY_KHHQDEntry"] as DynamicObjectCollection;
                            DynamicObject           F_SZXY_Material = this.Model.GetValue("F_SZXY_Material", mm) as DynamicObject;
                            Utils.SetBaseDataValue(viewService, entry1[mm], (BaseDataField)this.View.BusinessInfo.GetField("F_SZXY_MATERIAL"), Convert.ToInt64(RMat), ref F_SZXY_Material, Context);
                        }
                        this.View.UpdateView("F_SZXY_Material", mm);

                        //客户代码
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["客户"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            //this.Model.SetValue("F_SZXY_Cust", value, mm);

                            string CustId = Utils.GetRootCustId(value, orgid.ToString(), Context);
                            this.Model.SetValue("F_SZXY_Cust", CustId, mm);
                            this.View.UpdateView("F_SZXY_Cust", mm);
                        }

                        this.Model.SetValue("F_SZXY_Date", Convert.ToString(fillData.Tables[0].Rows[i]["包装日期"]), mm);

                        value = Convert.ToString(fillData.Tables[0].Rows[i]["销售员"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_salesman", value, mm);
                        }
                        this.View.UpdateView("F_SZXY_salesman", mm);

                        //客户订单号
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["客户订单号"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_CustOrderNo1", value, mm);
                        }


                        //卷数
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["BOXCount"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_volume", value, mm);
                        }


                        //客户批号
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["F_SZXY_CUSTBACTH"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_CustBacthNo", value, mm);
                        }


                        //生产订单编号
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["F_SZXY_PUDNO"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_MONOE", value, mm);
                        }

                        //生产订单行号
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["F_SZXY_PUDLINENO"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_MOLineNOE", value, mm);
                        }


                        //厚度
                        value = Convert.ToString(fillData.Tables[0].Rows[i][1]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_Ply", value, mm);
                        }

                        //宽度
                        value = Convert.ToString(fillData.Tables[0].Rows[i][2]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_Width", value, mm);
                        }

                        //长度
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["F_SZXY"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_Len", value, mm);
                        }

                        //面积
                        value = Convert.ToString(fillData.Tables[0].Rows[i]["Area"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_Area", value, mm);
                        }



                        if (mm > 0 && (mm % Convert.ToInt32(XQty)) == 0)
                        {
                            string KBNO = GenNo(Context, this.View.BusinessInfo.GetForm().Id, orgobj, Convert.ToDateTime(this.Model.GetValue("FDate")));
                            if (!KBNO.IsNullOrEmptyOrWhiteSpace())
                            {
                                this.Model.SetValue("F_SZXY_CBNO", KBNO);
                                this.Model.SetValue("F_SZXY_CBNO1", KBNO, mm);    //单据体卡板号
                            }
                        }


                        if (erow == 0 && mm == 0)
                        {
                            string KBNO = GenNo(Context, this.View.BusinessInfo.GetForm().Id, orgobj, Convert.ToDateTime(this.Model.GetValue("FDate")));
                            if (!KBNO.IsNullOrEmptyOrWhiteSpace())
                            {
                                this.Model.SetValue("F_SZXY_CBNO", KBNO);
                                this.Model.SetValue("F_SZXY_CBNO1", KBNO, erow);
                            }
                        }
                        this.View.SetEntityFocusRow("F_SZXY_KHHQDEntity", mm + 1);
                    }



                    OperateOption saveOption = OperateOption.Create();
                    view.Model.DataObject["FFormID"] = View.BillBusinessInfo.GetForm().Id;
                    var saveResult = BusinessDataServiceHelper.Save(this.View.Context, View.BusinessInfo, view.Model.DataObject, saveOption, "Save");
                    this.View.UpdateView("F_SZXY_KHHQDEntity");
                }
                else
                {
                    this.View.ShowWarnningMessage("没有匹配到数据!"); return;
                }
            }
        }
        private void SetBillValue(Context context, DataSet fillData, IBillView view, int erow, DynamicObject orgobj, string NoType)
        {
            DateTime dt = DateTime.Now;

            if (fillData != null && fillData.Tables.Count > 0 && fillData.Tables[0].Rows.Count > 0)
            {
                string value = "";
                DynamicObjectCollection entry1 = this.Model.DataObject["SZXY_XYCPJYEntry"] as DynamicObjectCollection;


                for (int i = 0; i < fillData.Tables[0].Rows.Count; i++)
                {
                    int index = erow + i;

                    //if (!Convert.ToString(fillData.Tables[0].Rows[i]["性能等级"]).IsNullOrEmptyOrWhiteSpace() && Convert.ToInt32(fillData.Tables[0].Rows[i]["性能等级"]) > 0)
                    //{
                    this.Model.CreateNewEntryRow("F_SZXY_XYCPJYEntity");

                    this.View.GetControl <EntryGrid>("F_SZXY_XYCPJYEntity").SetEnterMoveNextColumnCell(true);

                    IViewService viewService = ServiceHelper.GetService <IViewService>();
                    //物料编码
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["产品型号"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        string        RMat            = Utils.GetRootMatId(value, orgobj["Id"].ToString(), Context);
                        DynamicObject F_SZXY_Material = this.Model.GetValue("F_SZXY_Material", index) as DynamicObject;
                        if (RMat != "")
                        {
                            Utils.SetBaseDataValue(viewService, entry1[index], (BaseDataField)this.View.BusinessInfo.GetField("F_SZXY_Material"), Convert.ToInt64(RMat), ref F_SZXY_Material, Context);
                        }
                    }

                    if (this.Model.GetValue("F_SZXY_QAINSPECTOH") is DynamicObject opDo)
                    {
                        value = Convert.ToString(opDo["Id"]);

                        if (!value.IsNullOrEmptyOrWhiteSpace())
                        {
                            this.Model.SetValue("F_SZXY_QAInspecto", value, index);
                        }
                    }
                    this.Model.SetValue("F_SZXY_Date", Convert.ToDateTime(this.Model.GetValue("FDate")), index);

                    entry1[index]["F_SZXY_BarCode"] = Convert.ToString(fillData.Tables[0].Rows[i]["分切编号"]);

                    if (!Convert.ToString(fillData.Tables[0].Rows[i]["分切机"]).IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_MNo", Convert.ToString(fillData.Tables[0].Rows[i]["分切机"]), index);
                    }

                    if (!Convert.ToString(fillData.Tables[0].Rows[i]["流延机"]).IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_LYMac", Convert.ToString(fillData.Tables[0].Rows[i]["流延机"]), index);
                    }

                    if (!Convert.ToString(fillData.Tables[0].Rows[i]["产品编号"]).IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_HNO", Convert.ToString(fillData.Tables[0].Rows[i]["产品编号"]), index);
                    }

                    //班组
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["班组"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Team", value, index);
                    }

                    value = Convert.ToString(fillData.Tables[0].Rows[i]["班次"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Class", value, index);
                    }

                    //工位
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["工位"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Station", value, index);
                    }

                    value = Convert.ToString(fillData.Tables[0].Rows[i]["特殊标志"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_SpecialMark", value, index);
                    }

                    //性能等级
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["性能等级"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_XNDJ1", value, index);
                    }


                    //厚度
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["厚度"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Ply", value, index);
                    }

                    //宽度
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["宽度"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Width", value, index);
                    }

                    //长度
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["长度"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_LENGTH", Convert.ToDecimal(value), index);
                    }

                    //面积
                    value = Convert.ToString(fillData.Tables[0].Rows[i]["面积"]);

                    if (!value.IsNullOrEmptyOrWhiteSpace())
                    {
                        this.Model.SetValue("F_SZXY_Area", value, index);
                    }



                    //else
                    //{
                    //    this.View.ShowWarnningMessage("此编号没有性能等级!"); return;
                    //}
                    this.View.UpdateView("F_SZXY_XYCPJYEntity");
                    this.View.SetEntityFocusRow("F_SZXY_XYCPJYEntity", index + 1);
                }


                OperateOption saveOption = OperateOption.Create();
                view.Model.DataObject["FFormID"] = View.BillBusinessInfo.GetForm().Id;
                var saveResult = BusinessDataServiceHelper.Save(this.View.Context, View.BusinessInfo, view.Model.DataObject, saveOption, "Save");
            }
            else
            {
                this.View.ShowWarnningMessage("没有匹配到数据!"); return;
            }
        }
예제 #26
0
        private string SubmitWorkflow(Context ctx, string formId, string pKValue, string receiverName, string actionResult, string disposition, bool isApprovalFlow)
        {
            string  reason = "";
            DataSet ds     = DBUtils.ExecuteDataSet(ctx, @"select b.FASSIGNID,b.FAPPROVALASSIGNID,a.FACTINSTID,a.FRECEIVERNAMES
                                from t_wf_assign a 
                                join T_WF_APPROVALASSIGN b on a.fassignid=b.fassignid 
                                where b.Fobjecttypeid=@FormID 
                                and b.Fkeyvalue=@pKValue and a.FSTATUS=0",
                                                    new List <SqlParam>
            {
                new SqlParam("@FormID", DbType.String, formId),
                new SqlParam("@pKValue", DbType.String, pKValue)
            });
            DataRow row = ds.Tables[0].Rows.Cast <DataRow>().FirstOrDefault(dr => dr["FRECEIVERNAMES"].ToString().Split(',').Any(r => r == receiverName));

            if (row == null)
            {
                reason = "未找到待办任务";

                return(reason);
            }



            string        assignId         = row["FASSIGNID"].ToString();
            string        approvalAssignId = row["FAPPROVALASSIGNID"].ToString();
            string        _approvalItemId  = AssignmentServiceHelper.OpenApprovalItem(ctx, ctx.UserId, assignId, false);
            FormMetadata  formMetadata     = MetaDataServiceHelper.GetFormMetaData(ctx, formId);
            DynamicObject ObjData          = BusinessDataServiceHelper.LoadSingle(ctx, pKValue, formMetadata.BusinessInfo.GetDynamicObjectType());
            BusinessInfo  businessInfo     = formMetadata.BusinessInfo;

            var _approvalItem = AssignmentServiceHelper.GetApprovalItemById(ctx, _approvalItemId);

            if (_approvalItem == null)
            {
                reason = "待办任务所在的流程实例不在运行中,不能进行处理!";
                return(reason);
            }
            _approvalItem.ObjData        = ObjData;
            _approvalItem.ReceiverPostId = 0;
            _approvalItem.ActionResult   = actionResult;
            _approvalItem.Disposition    = disposition.ToString();
            AssignResult assignResult = _approvalItem.Actions != null?_approvalItem.Actions.FirstOrDefault(i => i.Id == actionResult) : null;

            AssignResultApprovalType approvalType = assignResult != null ? assignResult.ApprovalType : AssignResultApprovalType.None;

            _approvalItem.ActionResultType = approvalType;
            _approvalItem.Status           = ApprovalItemStatus.Completed;
            DateTime timeNow = TimeServiceHelper.GetSystemDateTime(ctx);

            _approvalItem.CompletedTime = timeNow;

            ObjectActivityInstance _activityInstance = AssignmentServiceHelper.ConvertActivityModel(
                ctx, businessInfo, approvalAssignId, _approvalItem);

            var option = OperateOption.Create();

            if (isApprovalFlow)
            {
                ApprovalAssignmentContext assignCtx = new ApprovalAssignmentContext()
                {
                    ApprovalItems = new List <ApprovalItem>()
                    {
                        _approvalItem
                    },
                    Info   = businessInfo,
                    Option = option
                };
                assignCtx.NextActHandler   = null;
                assignCtx.RejectReturn     = false;
                assignCtx.ActivityInstance = _activityInstance;
                if (actionResult == AssignResultApprovalType.Reject.ToString())
                {
                    var _policy           = AssignmentServiceHelper.GetApprovalAssignByAssignId(ctx, assignId);
                    var nextHandleWrapper = new Kingdee.BOS.ApprovalFlow.PlugIns.Mobile.MobNextHandleWrapper(assignId, ctx, _policy);
                    assignCtx.Target = nextHandleWrapper.RejectActivityModel.ActivityId;
                }
                ApprovalAssignmentServiceHelper.SubmitApprovalItem(ctx, assignCtx);
                reason = "";
                return(reason);
            }
            else
            {
                ApprovalAssignmentContext assignCtx = new ApprovalAssignmentContext()
                {
                    ApprovalItems = new List <ApprovalItem>()
                    {
                        _approvalItem
                    },
                    Info   = businessInfo,
                    Option = option
                };
                assignCtx.NextActHandler   = null;
                assignCtx.RejectReturn     = false;
                assignCtx.ActivityInstance = _activityInstance;
                ApprovalAssignmentServiceHelper.SubmitApprovalItem(ctx, assignCtx);
                reason = "";
                return(reason);
            }

            //if (actionResult == AssignResultApprovalType.Reject.ToString())
            //{
            //    string actInstId = row["FACTINSTID"].ToString();
            //    Kingdee.BOS.Workflow.App.Core.ProcInstService procInstService = new Kingdee.BOS.Workflow.App.Core.ProcInstService();
            //    var rejectActivityIds = procInstService.GetBackActInstList(ctx, actInstId, true).Select(r => r.ActivityId);
            //    if (!rejectActivityIds.Any())
            //    {

            //        reason = "无驳回节点";
            //        return reason;
            //    }
            //    assignCtx.Target = rejectActivityIds.FirstOrDefault();
            //}
        }
예제 #27
0
        /// <summary>
        /// 自动下推并保存
        /// </summary>
        /// <param name="sourceFormId">源单FormId</param>
        /// <param name="targetFormId">目标单FormId</param>
        /// <param name="sourceBillIds">源单内码</param>
        private IOperationResult DoPush(string sourceFormId, string targetFormId, long targetOrgId, List <long> sourceBillIds)
        {
            IOperationResult result = new OperationResult();

            result.IsSuccess = false;
            // 获取源单与目标单的转换规则
            IConvertService convertService = Kingdee.BOS.App.ServiceHelper.GetService <IConvertService>();
            var             rules          = convertService.GetConvertRules(this.Context, sourceFormId, targetFormId);

            if (rules == null || rules.Count == 0)
            {
                throw new KDBusinessException("", string.Format("未找到{0}到{1}之间,启用的转换规则,无法自动下推!", sourceFormId, targetFormId));
            }
            // 取勾选了默认选项的规则
            var rule = rules.FirstOrDefault(t => t.IsDefault);

            //var rule = rules.
            // 如果无默认规则,则取第一个
            if (rule == null)
            {
                rule = rules[0];
            }
            // 开始构建下推参数:
            // 待下推的源单数据行
            List <ListSelectedRow> srcSelectedRows = new List <ListSelectedRow>();

            foreach (var billId in sourceBillIds)
            {// 把待下推的源单内码,逐个创建ListSelectedRow对象,添加到集合中
                srcSelectedRows.Add(new ListSelectedRow(billId.ToString(), string.Empty, 0, sourceFormId));
                // 特别说明:上述代码,是整单下推;
                // 如果需要指定待下推的单据体行,请参照下句代码,在ListSelectedRow中,指定EntryEntityKey以及EntryId
                //srcSelectedRows.Add(new ListSelectedRow(billId.ToString(), entityId, 0, sourceFormId) { EntryEntityKey = "FEntity" });
            }

            // 指定目标单单据类型:情况比较复杂,没有合适的案例做参照,示例代码暂略,直接留空,会下推到默认的单据类型
            string targetBillTypeId = string.Empty;
            // 指定目标单据主业务组织:情况更加复杂,需要涉及到业务委托关系,缺少合适案例,示例代码暂略
            // 建议在转换规则中,配置好主业务组织字段的映射关系:运行时,由系统根据映射关系,自动从上游单据取主业务组织,避免由插件指定
            //long targetOrgId = 0;
            // 自定义参数字典:把一些自定义参数,传递到转换插件中;转换插件再根据这些参数,进行特定处理
            Dictionary <string, object> custParams = new Dictionary <string, object>();
            // 组装下推参数对象
            PushArgs pushArgs = new PushArgs(rule, srcSelectedRows.ToArray())
            {
                TargetBillTypeId = targetBillTypeId,
                TargetOrgId      = targetOrgId,
                CustomParams     = custParams
            };
            // 调用下推服务,生成下游单据数据包
            ConvertOperationResult operationResult = convertService.Push(this.Context, pushArgs, OperateOption.Create());

            // 开始处理下推结果:
            // 获取下推生成的下游单据数据包
            DynamicObject[] targetBillObjs = (from p in operationResult.TargetDataEntities select p.DataEntity).ToArray();
            if (targetBillObjs.Length == 0)
            {
                // 未下推成功目标单,抛出错误,中断审核
                throw new KDBusinessException("", string.Format("由{0}自动下推{1},没有成功生成数据包,自动下推失败!", sourceFormId, targetFormId));
            }
            // 对下游单据数据包,进行适当的修订,以避免关键字段为空,自动保存失败
            // 示例代码略
            // 读取目标单据元数据
            IMetaDataService metaService = Kingdee.BOS.App.ServiceHelper.GetService <IMetaDataService>();
            var targetBillMeta           = metaService.Load(this.Context, targetFormId) as FormMetadata;
            // 构建保存操作参数:设置操作选项值,忽略交互提示
            OperateOption saveOption = OperateOption.Create();

            // 忽略全部需要交互性质的提示,直接保存;
            saveOption.SetIgnoreWarning(true);                               // 忽略交互提示
            saveOption.SetInteractionFlag(this.Option.GetInteractionFlag()); // 如果有交互,传入用户选择的交互结果
            // using Kingdee.BOS.Core.Interaction;
            saveOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag());
            // 调用保存服务,自动保存
            ISaveService saveService = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>();
            var          saveResult  = saveService.Save(this.Context, targetBillMeta.BusinessInfo, targetBillObjs, saveOption, "Save");

            // 判断自动保存结果:只有操作成功,才会继续
            if (saveResult.SuccessDataEnity != null)
            {
                var submitRet = AppServiceContext.SubmitService.Submit(this.Context, targetBillMeta.BusinessInfo, saveResult.SuccessDataEnity.Select(o => o["Id"]).ToArray(), "Submit", saveOption);
                result.MergeResult(submitRet);
                if (submitRet.SuccessDataEnity != null)
                {
                    var auditResult = AppServiceContext.SetStatusService.SetBillStatus(this.Context, targetBillMeta.BusinessInfo,
                                                                                       submitRet.SuccessDataEnity.Select(o => new KeyValuePair <object, object>(o["Id"], 0)).ToList(),
                                                                                       new List <object> {
                        "1", ""
                    },
                                                                                       "Audit", saveOption);

                    result.MergeResult(auditResult);
                }
            }
            if (this.CheckOpResult(saveResult, saveOption))
            {
                return(result);
            }
            return(result);
        }
예제 #28
0
        /// <summary>
        /// 根据单据唯一标识下推单据
        /// </summary>
        private void PushFormByFormId()
        {
            string status = this.View.BillModel.GetValue("FDocumentStatus").ToString();

            if (status == "Z")
            {
                return;
            }
            string formId       = this.View.BillView.GetFormId();
            string targetFormId = "k0c6b452fa8154c4f8e8e5f55f96bcfac"; // 个人资金
            var    rules        = ConvertServiceHelper.GetConvertRules(this.View.Context, formId, targetFormId);
            var    rule         = rules.FirstOrDefault(t => t.IsDefault);
            string fid          = this.View.BillModel.GetPKValue().ToString();

            ListSelectedRow[] selectedRows;
            if (formId == "k0c30c431418e4cf4a60d241a18cb241c") // 出差申请
            {
                int count = this.View.BillModel.GetEntryRowCount("FEntity");
                selectedRows = new ListSelectedRow[count];
                for (int i = 0; i < count; i++)
                {
                    string entryId = this.View.BillModel.GetEntryPKValue("FEntryID", i).ToString();
                    selectedRows[i] = new ListSelectedRow(fid, entryId, i, formId);
                }
            }
            else
            {
                ListSelectedRow row = new ListSelectedRow(fid, string.Empty, 0, formId);
                selectedRows = new ListSelectedRow[] { row };
            }

            // 调用下推服务,生成下游单据数据包
            ConvertOperationResult operationResult = null;
            PushArgs pushArgs = new PushArgs(rule, selectedRows)
            {
                TargetBillTypeId = "",
                TargetOrgId      = 0,
            };

            try
            {
                //执行下推操作,并获取下推结果
                operationResult = ConvertServiceHelper.Push(this.View.Context, pushArgs, OperateOption.Create());
            }
            catch (KDExceptionValidate ex)
            {
                this.View.ShowErrMessage(ex.Message, ex.ValidateString);
                return;
            }
            catch (Exception ex)
            {
                this.View.ShowErrMessage(ex.Message);
                return;
            }

            // 获取生成的目标单据数据包
            DynamicObject[] objs = operationResult.TargetDataEntities.Select(p => p.DataEntity).ToArray();
            // 读取目标单据元数据
            var           targetBillMeta = MetaDataServiceHelper.Load(this.View.Context, targetFormId) as FormMetadata;
            OperateOption option         = OperateOption.Create();

            // 忽略全部需要交互性质的提示
            option.SetIgnoreWarning(true);
            // 暂存数据
            var    saveResult = BusinessDataServiceHelper.Draft(this.View.Context, targetBillMeta.BusinessInfo, objs, option);
            string targetId   = saveResult.SuccessDataEnity.Select(item => item["Id"].ToString()).Distinct().FirstOrDefault();

            // 打开目标单据
            if (targetId != null)
            {
                MobileShowParameter param = new MobileShowParameter();
                param.Caption            = "个人资金申请";
                param.FormId             = "ora_GRZJJZ";
                param.PKey               = targetId;
                param.ParentPageId       = this.View.PageId;
                param.Status             = OperationStatus.EDIT;
                param.OpenStyle.ShowType = ShowType.Default;

                this.View.ShowForm(param);
            }
        }
예제 #29
0
        /// <summary>
        /// 后台调用单据转换生成目标单
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="option"></param>
        /// <returns></returns>
        public static IOperationResult ConvertBills(Context ctx, BillConvertOption option)
        {
            IOperationResult     result = new OperationResult();
            List <DynamicObject> list   = new List <DynamicObject>();
            ConvertRuleElement   rule   = AppServiceContext.ConvertService.GetConvertRules(ctx, option.sourceFormId, option.targetFormId)
                                          .FirstOrDefault(w => w.Id == option.ConvertRuleKey);
            FormMetadata metaData = (FormMetadata)AppServiceContext.MetadataService.Load(ctx, option.targetFormId, true);

            if ((rule != null) && option.BizSelectRows != null && option.BizSelectRows.Count() > 0)
            {
                PushArgs serviceArgs = new PushArgs(rule, option.BizSelectRows);
                serviceArgs.CustomParams.Add("CustomConvertOption", option);
                serviceArgs.CustomParams.Add("CustomerTransParams", option.customParams);
                OperateOption operateOption = OperateOption.Create();
                operateOption.SetVariableValue("ValidatePermission", true);
                ConvertOperationResult convertOperationResult = AppServiceContext.ConvertService.Push(ctx, serviceArgs, operateOption);
                if (!convertOperationResult.IsSuccess)
                {
                    result = convertOperationResult as IOperationResult;
                    return(result);
                }
                DynamicObject[] collection = convertOperationResult.TargetDataEntities
                                             .Select(s => s.DataEntity).ToArray();
                list.AddRange(collection);
            }
            if (list.Count > 0)
            {
                AppServiceContext.DBService.LoadReferenceObject(ctx, list.ToArray(), metaData.BusinessInfo.GetDynamicObjectType(), false);
            }
            if (option.IsDraft && list.Count > 0)
            {
                result = AppServiceContext.DraftService.Draft(ctx, metaData.BusinessInfo, list.ToArray());
            }
            if (!result.IsSuccess)
            {
                return(result);
            }
            if (option.IsSave && !option.IsDraft && list.Count > 0)
            {
                OperateOption operateOption = OperateOption.Create();
                operateOption.SetVariableValue("ValidatePermission", true);
                operateOption.SetIgnoreWarning(true);
                result = AppServiceContext.SaveService.Save(ctx, metaData.BusinessInfo, list.ToArray(), operateOption);

                //result = AppServiceContext.SaveService.Save(ctx, metaData.BusinessInfo, list.ToArray());
            }
            if (!result.IsSuccess)
            {
                return(result);
            }
            if (option.IsSubmit && list.Count > 0)
            {
                result = AppServiceContext.SubmitService.Submit(ctx, metaData.BusinessInfo,
                                                                list.Select(item => ((Object)(Convert.ToInt64(item["Id"])))).ToArray(), "Submit");
            }
            if (!result.IsSuccess)
            {
                return(result);
            }
            if (option.IsAudit && list.Count > 0)
            {
                result = AppServiceContext.SubmitService.Submit(ctx, metaData.BusinessInfo,
                                                                list.Select(item => ((Object)(Convert.ToInt64(item["Id"])))).ToArray(), "Submit");
                if (!result.IsSuccess)
                {
                    return(result);
                }
                List <KeyValuePair <object, object> > keyValuePairs = new List <KeyValuePair <object, object> >();
                list.ForEach(item =>
                {
                    keyValuePairs.Add(new KeyValuePair <object, object>(item.GetPrimaryKeyValue(), item));
                }
                             );
                List <object> auditObjs = new List <object>();
                auditObjs.Add("1");
                auditObjs.Add("");
                //Kingdee.BOS.Util.OperateOptionUtils oou = null;
                OperateOption ooption = OperateOption.Create();
                ooption.SetIgnoreWarning(false);
                ooption.SetIgnoreInteractionFlag(true);
                ooption.SetIsThrowValidationInfo(false);
                result = AppServiceContext.SetStatusService.SetBillStatus(ctx, metaData.BusinessInfo,
                                                                          keyValuePairs, auditObjs, "Audit", ooption);

                option.BillStatusOptionResult = ooption;
                if (!result.IsSuccess)
                {
                    return(result);
                }
            }

            return(result);
        }
예제 #30
0
        /// <summary>
        /// 整单下推
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="SourceFormId"></param>
        /// <param name="TargetFormId"></param>
        /// <param name="sourceBillIds"></param>
        /// <returns></returns>
        public ConvertOperationResult ConvertBills(Context ctx, string SourceFormId, string TargetFormId, List <long> sourceBillIds)
        {
            // 获取源单与目标单的转换规则
            IConvertService convertService = ServiceHelper.GetService <IConvertService>();
            var             rules          = convertService.GetConvertRules(ctx, SourceFormId, TargetFormId);

            if (rules == null || rules.Count == 0)
            {
                throw new KDBusinessException("", string.Format("未找到{0}到{1}之间,启用的转换规则,无法自动下推!", SourceFormId, TargetFormId));
            }
            // 取勾选了默认选项的规则
            var rule = rules.FirstOrDefault(t => t.IsDefault);

            // 如果无默认规则,则取第一个
            if (rule == null)
            {
                rule = rules[0];
            }
            // 开始构建下推参数:
            // 待下推的源单数据行
            List <ListSelectedRow> srcSelectedRows = new List <ListSelectedRow>();
            int rowkey = -1;

            foreach (long billId in sourceBillIds)
            {
                //把待下推的源单内码,逐个创建ListSelectedRow对象,添加到集合中
                srcSelectedRows.Add(new ListSelectedRow(billId.ToString(), string.Empty, rowkey++, SourceFormId));
            }
            // 指定目标单单据类型:情况比较复杂,直接留空,会下推到默认的单据类型
            string targetBillTypeId = string.Empty;
            // 指定目标单据主业务组织:情况更加复杂,
            // 建议在转换规则中,配置好主业务组织字段的映射关系:运行时,由系统根据映射关系,自动从上游单据取主业务组织,避免由插件指定
            long targetOrgId = 0;
            // 自定义参数字典:把一些自定义参数,传递到转换插件中;转换插件再根据这些参数,进行特定处理
            Dictionary <string, object> custParams = new Dictionary <string, object>();
            //custParams.Add("1", 1);
            //custParams.Add("2", 2);
            // 组装下推参数对象
            PushArgs pushArgs = new PushArgs(rule, srcSelectedRows.ToArray())
            {
                TargetBillTypeId = targetBillTypeId,
                TargetOrgId      = targetOrgId,
                CustomParams     = custParams
            };
            // 调用下推服务,生成下游单据数据包
            ConvertOperationResult operationResult = convertService.Push(ctx, pushArgs, OperateOption.Create());

            return(operationResult);
        }