Beispiel #1
0
        private void ArchiveIfNeeded()
        {
            var archivableUsages = usageToday.GetArchivableUsages();

            usageArchive.Archive(archivableUsages);

            SavePreference savePreference = saveService.GetSavePreference();

            if (!noArchiveList.Contains(savePreference) && archivableUsages.Count > 0)
            {
                usageArchive.DeleteUsagesOlderThen((int)savePreference);
                saveService.Save(usageArchive, SaveType.Archive);
            }
        }
        private void Save_Clicked(object sender, EventArgs e)
        {
            var info    = new SKImageInfo((int)canvasView.CanvasSize.Width, (int)canvasView.CanvasSize.Height);
            var surface = SKSurface.Create(info);
            var canvas  = surface.Canvas;

            canvas.Clear();

            foreach (FingerPaintPolyline polyline in completedPolylines)
            {
                canvas.DrawPath(polyline.Path, paint);
            }

            foreach (FingerPaintPolyline polyline in inProgressPolylines.Values)
            {
                canvas.DrawPath(polyline.Path, paint);
            }

            canvas.Flush();

            var snap = surface.Snapshot();

            using (var data = snap.Encode(SKEncodedImageFormat.Png, 80))
            {
                _saveService.Save(data.AsStream());
            }
        }
Beispiel #3
0
 void Save()
 {
     if (!CanSave)
     {
         return;
     }
     saveService.Save(SelectedItems[0].Tab);
 }
Beispiel #4
0
        //20170209 add by liwei1 for P001-170203001 ===end===

        private void InsertMR(DateTime report_datetime, string category, string recommendedOperations, DependencyObjectCollection resultColl, object docId) //20170209 modi by liwei1 for P001-170124001 增加参数:docId
        {
            DataTable dt = QueryForMoReceiptReq(report_datetime, category, recommendedOperations, docId);                                                   //20170209 modi by liwei1 for P001-170124001 增加参数:docId

            ValidateParaFilDoc(dt);                                                                                                                         //20161213 add by shenbao for B001-161213006
            DataTable dt_d = QueryForMoReceipt_D(category, report_datetime, recommendedOperations);

            if (dt.Rows.Count > 0)
            {
                IQueryService    qrySrv      = GetService <IQueryService>();//20170405 add by wangrm for P001-170328001
                ICreateService   createSrv   = GetService <ICreateService>("MO_RECEIPT_REQUISTION");
                DependencyObject entity      = createSrv.Create() as DependencyObject;
                ISaveService     saveService = this.GetService <ISaveService>("MO_RECEIPT_REQUISTION");
                List <IGrouping <object, DataRow> > groupDt          = dt_d.AsEnumerable().GroupBy(a => (a.Field <object>("MO_RECEIPT_REQUISTION_ID"))).ToList();
                IEFNETStatusStatusService           efnetSrv         = this.GetService <IEFNETStatusStatusService>();
                IDocumentNumberGenerateService      docNumberService = this.GetService <IDocumentNumberGenerateService>("MO_RECEIPT_REQUISTION");
                foreach (DataRow dr in dt.Rows)
                {
                    DependencyObject           newEntity      = new DependencyObject(entity.DependencyObjectType);
                    DependencyObjectCollection newEntityDColl = newEntity["MO_RECEIPT_REQUISTION_D"] as DependencyObjectCollection;
                    AddToEntity(newEntity, dr, dt.Columns, false);
                    newEntity["DOC_NO"] = docNumberService.NextNumber(dr["DOC_ID"], dr["DOC_DATE"].ToDate().Date);
                    List <IGrouping <object, DataRow> > entityDColl = groupDt.Where(c => c.Key.Equals(dr["MO_RECEIPT_REQUISTION_ID"])).ToList();
                    foreach (IGrouping <object, DataRow> groupDColl in entityDColl)
                    {
                        foreach (DataRow dr_d in groupDColl)
                        {
                            DependencyObject newEntityD = new DependencyObject(newEntityDColl.ItemDependencyObjectType);
                            AddToEntity(newEntityD, dr_d, dt_d.Columns, true);
                            newEntityDColl.Add(newEntityD);
                        }
                    }
                    //20170428 add by wangyq for P001-170427001  ============begin==========
                    DependencyObject resultObj = resultColl.AddNew();
                    resultObj["doc_no"] = newEntity["DOC_NO"];
                    //20170428 add by wangyq for P001-170427001  ============end==========

                    //20170628 modi by zhangcn for P001-170327001 ===begin===
                    try {
                        SetIgnoreWarningTag();       //忽略警告
                        saveService.Save(newEntity); //希望触发保存校验
                    }
                    finally {
                        ResetIgnoreWarningTag();// 重置警告
                    }
                    //20170628 modi by zhangcn for P001-170327001 ===end===

                    //7.3自动签核
                    efnetSrv.GetFormFlow("MO_RECEIPT_REQUISTION.I01", dr["DOC_ID"], dr["Owner_Org_ROid"],
                                         new List <object>()
                    {
                        dr["MO_RECEIPT_REQUISTION_ID"]
                    });
                }
            }
        }
Beispiel #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="counting_type">盘点类型</param>
 /// <param name="site_no">营运据点</param>
 /// <param name="counting_no">盘点计划编号</param>
 /// <param name="scan"></param>
 public void UpdateCountingPlan(string counting_type, string site_no, string counting_no, DependencyObjectCollection scan)
 {
     if (string.IsNullOrEmpty(counting_no))
     {
         IInfoEncodeContainer infoContainer = this.GetService <IInfoEncodeContainer>();
         throw new BusinessRuleException(string.Format(infoContainer.GetMessage("A111201"), "counting_no"));
     }
     using (IConnectionService connectionService = this.GetService <IConnectionService>()) {
         _qurService = this.GetService <IQueryService>();
         CreateTempTable();           //创建临时表
         InsertToScan(site_no, scan); //临时表储存scan入参
         QueryNode queryScan                = QueryScan(counting_no);
         QueryNode querySumNode             = QuerySumForInsert(counting_no, queryScan);
         DependencyObjectCollection sumColl = _qurService.ExecuteDependencyObject(querySumNode);
         List <DependencyObject>    newList = new List <DependencyObject>();
         ISaveService saveService           = this.GetService <ISaveService>("COUNTING");
         if (sumColl.Count > 0)  //查询存在记录新增实体COUNTING
         {
             ICreateService   createSrv = GetService <ICreateService>("COUNTING");
             DependencyObject entity    = createSrv.Create() as DependencyObject;
             newList = InsertCOUNTING(counting_type, counting_no, sumColl, entity.DependencyObjectType);
         }
         ICreateService createSrvParaFil = this.GetService <ICreateService>("PARA_FIL");
         QueryNode      updateNode       = null;
         QueryNode      insertNode       = null;
         if (createSrvParaFil != null)   //表示该typekey存在
         {
             bool bcManagement = GetBcInventoryManagement();
             if (bcManagement)
             {
                 QueryNode querySumBarcodeNode = QuerySumBarcode(counting_no, queryScan);
                 updateNode = GetUpdateNode(counting_type, counting_no, querySumBarcodeNode);
                 insertNode = QueryNodeForInsert(counting_no, counting_type, querySumBarcodeNode);
             }
         }
         using (ITransactionService transActionService = this.GetService <ITransactionService>()) {
             if (newList.Count > 0)
             {
                 SetIgnoreWarningTag(true);
                 saveService.Save(newList.ToArray());
                 SetIgnoreWarningTag(false);
             }
             //更新条码盘点计划
             if (updateNode != null)  //启用条码库存管理更新
             {
                 _qurService.ExecuteNoQueryWithManageProperties(updateNode);
             }
             //新增条码盘点计划
             if (insertNode != null)  //启用条码库存管理更新
             {
                 _qurService.ExecuteNoQueryWithManageProperties(insertNode);
             }
             transActionService.Complete();
         }
     }
 }
        /// <summary>
        /// 不起作用
        /// </summary>
        private void saveBtn()
        {
            /*
             * // 构建保存操作参数:设置操作选项值,忽略交互提示
             * OperateOption saveOption = OperateOption.Create();
             * // 忽略交互提示
             * saveOption.SetIgnoreWarning(true);
             * saveOption.SetIgnoreInteractionFlag(true);
             */
            ISaveService saveService = ServiceHelper.GetService <ISaveService>();
            var          dataObjects = new DynamicObject[] { this.View.BillModel.DataObject };

            saveService.Save(this.Context, dataObjects);
        }
Beispiel #7
0
 public FileSetupPageViewModel(
     DirectoryListViewModel dirList,
     NotificationCenterViewModel notificationCenter,
     OpenFileDialogCommand openFile,
     SaveFileDialogCommand saveFile,
     ISaveService saveService
     ) : base("File Setup", PackIconKind.File)
 {
     this.DirList            = dirList;
     this.NotificationCenter = notificationCenter;
     OpenFile            = openFile;
     SaveFile            = saveFile;
     this.saveService    = saveService;
     this.SaveFileAction = (path) => saveService.Save(path);
 }
Beispiel #8
0
        public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
        {
            if (e.BarItemKey.Equals("tbsave"))
            {
                long entryid = 0;

                getTableName();
                Entity entity = this.View.BusinessInfo.GetEntity("FEntity");
                DynamicObjectCollection objs       = this.View.Model.GetEntityDataObject(entity);
                DynamicObject[]         lotMasters = null;
                if (!lotIds.IsEmpty() && !lotIds.Equals("0"))
                {
                    string    filter = string.Format("FLOTID IN ('{0}')", lotIds);
                    OQLFilter of     = OQLFilter.CreateHeadEntityFilter(filter);
                    lotMasters = BusinessDataServiceHelper.Load(this.Context, "BD_BatchMainFile", null, of);
                }
                foreach (DynamicObject obj in objs)
                {
                    value   = obj["F_QANo"];
                    entryid = Convert.ToInt64(obj["F_BEM_billentryid"]);
                    if (entryid == 0)
                    {
                        continue;
                    }
                    foreach (DynamicObject lotobj in lotMasters)
                    {
                        if (lotobj["id"].Equals(obj["FLOT_Id"]))
                        {
                            lotobj["F_QANo"] = obj["F_QANo"];
                        }
                    }

                    updateSqls.Add(string.Format(@"UPDATE  {0}  set F_QANo ='{1}'  WHERE fentryid  = {2}  ", tableName, value, entryid));
                }

                ISaveService service = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>();
                service.Save(this.Context, lotMasters);
                DBUtils.ExecuteBatch(this.Context, updateSqls, updateSqls.Count);
                //返回值到父窗口
                this.View.ReturnToParentWindow("true");
                this.View.Close();
            }
            base.AfterBarItemClick(e);
        }
        /// <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);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="employee_no">扫描人员</param>
        /// <param name="scan_type">扫描类型1.有箱条码 2.无箱条码</param>
        /// <param name="report_datetime">上传时间</param>
        /// <param name="picking_department_no">部门</param>
        /// <param name="recommended_operations">建议执行作业</param>
        /// <param name="recommended_function">A.新增  S.过帐</param>
        /// <param name="scan_doc_no">扫描单号</param>
        /// <param name="collScan"></param>
        public DependencyObjectCollection InertTransactionDoc(string employee_no, string scan_type, DateTime report_datetime,
                                                              string picking_department_no, string recommended_operations, string recommended_function,
                                                              string scan_doc_no, DependencyObjectCollection scanColl)
        {
            IInfoEncodeContainer InfoEncodeSrv = this.GetService <IInfoEncodeContainer>();

            if (Maths.IsEmpty(recommended_operations))
            {
                throw new BusinessRuleException(InfoEncodeSrv.GetMessage("A111201", "recommended_operations"));//‘入参【recommended_operations】未传值’
            }
            if (Maths.IsEmpty(recommended_function))
            {
                throw new BusinessRuleException(InfoEncodeSrv.GetMessage("A111201", "recommended_function"));//‘入参【recommended_function】未传值’
            }
            DependencyObjectType type = new DependencyObjectType("ReturnCollection");

            type.RegisterSimpleProperty("doc_no", typeof(string));
            DependencyObjectCollection Rtn = new DependencyObjectCollection(type);

            if (scanColl.Count > 0)
            {
                string stockAction = string.Empty;
                string view        = string.Empty;
                if (recommended_operations.StartsWith("11"))
                {
                    stockAction = "-1";
                    view        = "TRANSACTION_DOC.I02";
                }
                else if (recommended_operations.StartsWith("12"))
                {
                    stockAction = "1";
                    view        = "TRANSACTION_DOC.I01";
                }
                DependencyObjectCollection docColl = ValidateDocSet(stockAction, scanColl[0]["site_no"].ToStringExtension());
                if (docColl.Count <= 0)
                {
                    throw new BusinessRuleException(InfoEncodeSrv.GetMessage("A111275"));
                }
                DataTable dtScan       = CreateDtScan();
                DataTable dtScanDetail = CreateDtScanDetail();
                PrepareDtForInsertScan(employee_no, picking_department_no, scanColl, dtScan, dtScanDetail);
                using (IConnectionService connService = this.GetService <IConnectionService>()) {
                    _qurService = this.GetService <IQueryService>();
                    CreateTemp();
                    InsertTemp(dtScan, dtScanDetail);
                    List <DependencyObject> saveEntities = AddEntity(docColl[0]["DOC_ID"], docColl[0]["SEQUENCE_DIGIT"].ToInt32(), report_datetime, stockAction);
                    if (saveEntities.Count > 0)
                    {
                        using (ITransactionService transService = this.GetService <ITransactionService>()) {
                            InsertBCLine(report_datetime);//20170413 add by wangyq for P001-170412001 需要在保存服务之前,保存自动审核会需要回写
                            //保存单据
                            ISaveService saveSrv = this.GetService <ISaveService>("TRANSACTION_DOC");
                            saveSrv.Save(saveEntities.ToArray());

                            UpdateTD();//更新

                            //InsertBCLine(report_datetime);//20170413 mark by wangyq for P001-170412001

                            //EFNET签核
                            foreach (DependencyObject item in saveEntities)
                            {
                                IEFNETStatusStatusService efnetSrv = this.GetService <IEFNETStatusStatusService>();
                                efnetSrv.GetFormFlow(view, item["DOC_ID"], ((DependencyObject)item["Owner_Org"])["ROid"], new object[] { item["TRANSACTION_DOC_ID"] });
                            }
                            transService.Complete();
                        }
                        foreach (DependencyObject item in saveEntities)
                        {
                            DependencyObject obj = Rtn.AddNew();
                            obj["doc_no"] = item["DOC_NO"];
                        }
                    }
                }
            }
            return(Rtn);
        }
Beispiel #11
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);
        }
        /// <summary>
        /// 更新库存交易单单身
        /// </summary>
        /// <param name="employeeNo">扫描人员</param>
        /// <param name="scanType">扫描类型1.有箱条码 2.无箱条码</param>
        /// <param name="reportDatetime">上传时间</param>
        /// <param name="pickingDepartmentNo">领料部门</param>
        /// <param name="recommendedOperations">建议执行作业</param>
        /// <param name="recommendedFunction">A.新增  S.过帐</param>
        /// <param name="scanDocNo">扫描单号</param>
        /// <param name="collScan">参数集合</param>
        /// <returns>新生成的单号DocNo</returns>
        public DependencyObjectCollection DoUpdateTransactionDoc(string employeeNo, string scanType, DateTime reportDatetime,
                                                                 string pickingDepartmentNo, string recommendedOperations, string recommendedFunction,
                                                                 string scanDocNo, DependencyObjectCollection collScan)
        {
            #region 参数检查
            if (Maths.IsEmpty(recommendedOperations))
            {
                throw new BusinessRuleException(InfoEncodeSrv.GetMessage("A111201", "recommended_operations"));//‘入参【recommended_operations】未传值’
            }
            if (Maths.IsEmpty(recommendedFunction))
            {
                throw new BusinessRuleException(InfoEncodeSrv.GetMessage("A111201", "recommended_function"));//‘入参【recommended_function】未传值’
            }

            #endregion

            #region 准备临时表的列映射与数据
            _collDocNos = CreateReturnCollection();
            List <string> lstDocNos = new List <string>();
            _lstQueryProperties = new List <QueryProperty>();
            //DataTable dtTempScan = null;//临时表Scan的DataTable结构
            DataTable dtTempScanDetail = null;                                             //临时表ScanDetail的DataTable结构
            List <BulkCopyColumnMapping> lstColumnMappingsScanDetail = null;               //临时表ScanDetail的映射列
            CreateTempTableMapping(ref dtTempScanDetail, ref lstColumnMappingsScanDetail); //创建临时表#Table_scan的列映射
            InsertTempTableData(dtTempScanDetail, collScan, lstDocNos);                    //插入DataTable数据
            #endregion

            using (var transService = GetService <ITransactionService>()) {
                using (var myConnectionSr = GetService <IConnectionService>()) {
                    InitParameters();//初始化全局变量

                    #region 7.1更新出入库单实体

                    //创建临时表Scan与ScanDetail
                    CreateTempTableScanDetail();
                    _querySrv.BulkCopy(dtTempScanDetail, _TEMP_SCAN_DETAIL.Name, lstColumnMappingsScanDetail.ToArray()); //批量插入数据到临时表ScanDetail

                    int    decimalPlace = 8;                                                                             //金额小数位数
                    int    carryMode    = 1;                                                                             //金额取位模式
                    object companyId    = Maths.GuidDefaultValue();
                    DependencyObjectCollection collPalnt = QueryPlant();
                    if (collPalnt.Count > 0)
                    {
                        companyId = collPalnt[0]["COMPANY_ID"];

                        //调用系统参数服务 获取 记账本位币
                        object currencyId = _sysParameterSrv.GetValue("FUNCTION_CURRENCY_ID", companyId);

                        //Call 货币单价金额取位服务
                        ICurrencyPrecisionService currencyPrecisionSrv = GetServiceForThisTypeKey <ICurrencyPrecisionService>();
                        object[] arrPrecision = currencyPrecisionSrv.GetPrecision(companyId, currencyId);
                        decimalPlace = arrPrecision[0].ToInt32();
                        carryMode    = arrPrecision[1].ToInt32();
                    }

                    UpdateTransactionDocD(decimalPlace, carryMode); //更新库存交易单单身
                    UpdateTransactionDoc();                         //更新库存交易单单头
                    DependencyObjectCollection collParaFil = QueryParaFil();
                    if (collParaFil.Count > 0 && collParaFil[0]["BC_LINE_MANAGEMENT"].ToBoolean())
                    {
                        DeleteBcLine(); //删除条码交易明细 BC_LINE
                        InsertBcLine(); //插入条码交易明细 BC_LINE
                    }

                    #endregion

                    //7.2审核

                    //保存单据
                    DependencyObjectCollection collTransactionDoc = QueryDoc(lstDocNos);
                    IReadService readSrv  = GetService <IReadService>("TRANSACTION_DOC");
                    object[]     entities = readSrv.Read(collTransactionDoc.Select(c => c["TRANSACTION_DOC_ID"]).ToArray());
                    if (entities != null && entities.Length > 0)
                    {
                        ISaveService saveSrv = GetService <ISaveService>("TRANSACTION_DOC");
                        saveSrv.Save(entities);
                    }

                    //保存时没有自动审核的,需要重新审核

                    entities = readSrv.Read(collTransactionDoc.Where(c => c["AUTO_APPROVE"].ToBoolean() == false).Select(c => c["TRANSACTION_DOC_ID"]).ToArray());
                    IConfirmService confirmService = GetService <IConfirmService>("TRANSACTION_DOC");
                    ILogOnService   logOnSrv       = GetService <ILogOnService>();
                    foreach (DependencyObject obj in entities)
                    {
                        ConfirmContext context = new ConfirmContext(obj.Oid, logOnSrv.CurrentUserId, reportDatetime.ToDate());
                        confirmService.Execute(context);
                    }
                }

                transService.Complete(); //事务提交
            }
            return(_collDocNos);
        }
        private string InsertPoArrivalInspection(string receiptNo, DependencyObjectCollection receiptList, List <int> paiSequenceNumber, Dictionary <int, object> docIdDt)
        {
            //获取生成到货检验单基础数据
            DataTable poArrivalInspection = GetInsertPoArrivalInspection(receiptNo, paiSequenceNumber);
            //把查询数据以序号为Key,存入字典中。方便后期直接根据序号拿数据
            Dictionary <int, DataRow> poArrivalDictionary = new Dictionary <int, DataRow>();

            foreach (DataRow item in poArrivalInspection.Rows)
            {
                if (!poArrivalDictionary.ContainsKey(item["SequenceNumber"].ToInt32()))
                {
                    poArrivalDictionary.Add(item["SequenceNumber"].ToInt32(), item);
                }
            }
            //创建生成采购到货检验单缓存临时表
            DataTable poArrivalInspectionInfo = poArrivalInspection.Clone(); //复制表结构

            poArrivalInspectionInfo.TableName = "PO_ARRIVAL_INSPECTION";
            //创建生成采购到货检验单计数单身缓存临时表
            DataTable poArrivalInspectionDInfo = CreatePoArrivalInspectionDInfo();
            //创建生成采购到货检验单计量单身缓存临时表
            DataTable poArrivalInspectionD1Info = CreatePoArrivalInspectionD1Info();
            //创建计数品质检验不良原因缓存临时表
            DataTable defectiveReasonsAiId = CreateDefectiveReasonsAiIdInfo();

            IPrimaryKeyService             keyService              = GetService <IPrimaryKeyService>(TypeKey);                                                     //生成主键服务
            IDocumentNumberGenerateService docNumService           = GetService <IDocumentNumberGenerateService>("PO_ARRIVAL_INSPECTION");                         //自动编号服务
            ICreateInspectionService       createInspectionService = GetService <ICreateInspectionService>("PO_ARRIVAL_INSPECTION");                               //顺序检查服务
            IGenerateOrDeletePurchaseArivalQCResultService generatePurchaseArivalQc = GetService <IGenerateOrDeletePurchaseArivalQCResultService>("PO_QC_RESULT"); //生成/删除采购质检业务信息服务

            IItemQtyConversionService   itemQtyConversionService = GetService <IItemQtyConversionService>(TypeKey);
            ILogOnService               loginService             = GetService <ILogOnService>();
            List <DocmentInfo>          listDocuments            = new List <DocmentInfo>();
            Dictionary <string, string> salesReturnDocNo         = new Dictionary <string, string>(); //记录产生的单号用于批量生成的时候防止重复单号
            const decimal               defaultDecimal           = 0m;
            string resutQcNo = string.Empty;                                                          //返回结果单号

            //循环入参数据,分别给到货检验单、货检验单计数单身、货检验单计量单身身临时表插入数据
            foreach (DependencyObject receiptListItem in receiptList)
            {
                object poArrivalInspectionId = keyService.CreateId(); //主键
                if (poArrivalDictionary.ContainsKey(receiptListItem["seq"].ToInt32()))
                {
                    #region 到货检验单临时表插入数据
                    //获取生单基础数据
                    DataRow dr = poArrivalDictionary[receiptListItem["seq"].ToInt32()];

                    //获取单据性质
                    object docId = Maths.GuidDefaultValue();
                    if (docIdDt.ContainsKey(dr["SequenceNumber"].ToInt32()))
                    {
                        docId = docIdDt[dr["SequenceNumber"].ToInt32()];
                    }
                    if (dr["PURCHASE_TYPE"].ToStringExtension() == "1" || dr["PURCHASE_TYPE"].ToStringExtension() == "5")
                    {
                        dr["CATEGORY"] = "Q1";
                    }
                    else if (dr["PURCHASE_TYPE"].ToStringExtension() == "2" || dr["PURCHASE_TYPE"].ToStringExtension() == "3")
                    {
                        dr["CATEGORY"] = "Q2";
                    }

                    //计算列赋值
                    dr["PO_ARRIVAL_INSPECTION_ID"] = poArrivalInspectionId;                         //主键
                    dr["DOC_ID"]   = docId;                                                         //单据类型
                    dr["DOC_DATE"] = DateTime.Now.Date;                                             //单据日期

                    dr["DOC_NO"] = docNumService.NextNumber(dr["DOC_ID"], dr["DOC_DATE"].ToDate()); //单号
                    if (!salesReturnDocNo.ContainsKey(dr["DOC_NO"].ToString()))
                    {
                        salesReturnDocNo.Add(dr["DOC_NO"].ToString(), dr["DOC_NO"].ToString());
                    }
                    else
                    {
                        string oldDocNo = salesReturnDocNo[dr["DOC_NO"].ToString()]; //取得字典中存储的最大单号
                        string docNo    = NewDocNo(oldDocNo);                        //产生新单号
                        salesReturnDocNo[dr["DOC_NO"].ToString()] = docNo;           //更新字段中单号
                        dr["DOC_NO"] = docNo;                                        //当前笔单号重新赋值
                    }

                    object[] createInspection = createInspectionService.GetInspectionId(dr["ITEM_ID"],
                                                                                        dr["Owner_Org_ROid"],
                                                                                        dr["ITEM_FEATURE_ID"], dr["OPERATION_ID"]);
                    if (!Maths.IsEmpty(createInspection))
                    {
                        dr["INSPECTION_PLAN_ID"] = createInspection[0]; //质检方案ID
                        dr["INSPECTION_TIMES"]   = createInspection[1]; //最大抽样次数
                    }

                    dr["INSPECTION_QTY"]      = receiptListItem["receipt_qty"];                                                                                      //送检数量
                    dr["INSPECTION_DUE_DATE"] = Maths.AddTimeValue(dr["ARRIVAL_DATE"].ToDate(), 1,
                                                                   dr["INSPECT_DAYS"].ToInt32());                                                                    //检验期限
                    dr["INVENTORY_QTY"] = itemQtyConversionService.GetConvertedQty(dr["ITEM_ID"],
                                                                                   dr["INSPECTION_UNIT_ID"], dr["INSPECTION_QTY"].ToDecimal(), dr["STOCK_UNIT_ID"]); //库存单位数量
                    dr["SECOND_QTY"] = itemQtyConversionService.GetConvertedQty(dr["ITEM_ID"], dr["INSPECTION_UNIT_ID"],
                                                                                dr["INSPECTION_QTY"].ToDecimal(), dr["SECOND_UNIT_ID"]);                             //库存单位数量
                    dr["ACCEPTABLE_QTY"]  = receiptListItem["ok_qty"];                                                                                               //送检数量
                    dr["UNQUALIFIED_QTY"] = receiptListItem["unqualified_qty"];                                                                                      //不合格数量
                    dr["DESTROYED_QTY"]   = receiptListItem["checkdestroy_qty"];                                                                                     //破坏数量
                    //判定结果
                    if (receiptListItem["result_type"].ToStringExtension() == "Y")
                    {
                        dr["DECISION"] = "1";
                    }
                    else
                    {
                        dr["DECISION"] = "2";
                    }

                    //后道工序
                    if (!Maths.IsEmpty(dr["MO_ROUTING_D_ID"]))
                    {
                        DependencyObject moRouting = GetMoRouting(dr["MO_ROUTING_D_ID"]);
                        dr["TO_MO_ROUTING_D_ID"] = moRouting["MO_ROUTING_D_ID"];
                        dr["TO_OPERATION_ID"]    = moRouting["OPERATION_ID"];
                    }

                    dr["Owner_Emp"]  = GetEmployeeInfo(loginService.CurrentUserId);
                    dr["Owner_Dept"] = GetAdminUnitInfo(dr["Owner_Emp"]);
                    //系统管理字段
                    AddManagementData(dr, loginService);
                    poArrivalInspectionInfo.Rows.Add(dr.ItemArray);

                    #endregion

                    #region 到货检验单计数单身临时表插入数据

                    DependencyObjectCollection qcList = receiptListItem["qc_list"] as DependencyObjectCollection;
                    if (qcList == null)
                    {
                        continue;                 //不存在qc_list集合数据跳出循环
                    }
                    foreach (var qcListItem in qcList)
                    {
                        if (qcListItem["qc_seq"].ToInt32() == 0)
                        {
                            continue;                                     //序号为0的数据是默认数据只是为了json结构完整插入的,虚无插入E10系统
                        }
                        DataRow qcListDr = poArrivalInspectionDInfo.NewRow();
                        qcListDr["PO_ARRIVAL_INSPECTION_D_ID"] = keyService.CreateId(); //主键
                        qcListDr["ParentId"]           = poArrivalInspectionId;         //父主键
                        qcListDr["SEQUENCE"]           = qcListItem["qc_seq"];
                        qcListDr["DEFECT_CLASS"]       = qcListItem["defect_level"];
                        qcListDr["INSPECTION_QTY"]     = qcListItem["test_qty"];
                        qcListDr["INSPECTION_QQ"]      = qcListItem["return_qty"];
                        qcListDr["INSPECTION_ITEM_ID"] = GetInspectionItem(qcListItem["test_no"], dr["Owner_Org_ROid"]);
                        qcListDr["INSPECTION_AC"]      = qcListItem["acceptable_qty"];
                        qcListDr["INSPECTION_RE"]      = qcListItem["rejected_qty"];
                        if (receiptListItem["result_type"].ToStringExtension() == "Y")
                        {
                            qcListDr["DECISION"] = true;
                        }
                        else
                        {
                            qcListDr["DECISION"] = false;
                        }
                        qcListDr["IMPACT_RESULT"] = true;
                        qcListDr["REMARK"]        = string.Empty;

                        qcListDr["DEFECTIVE_REASONS_ID"] = Maths.GuidDefaultValue();
                        //系统管理字段
                        AddManagementData(qcListDr, loginService);


                        DependencyObjectCollection reasonlist = qcListItem["reason_list"] as DependencyObjectCollection;
                        if (reasonlist == null)
                        {
                            continue;
                        }
                        //defect_qty为0且reason_no为空的数据是默认数据只是为了json结构完整插入的,不需要插入E10系统
                        if (reasonlist.Count == 1 && (!Maths.IsEmpty(reasonlist[0]["reason_no"]) || reasonlist[0]["defect_qty"].ToInt32() != 0))
                        {
                            qcListDr["DEFECTIVE_REASONS_ID"] = GetDefectiveReasonsId(reasonlist[0]["reason_no"].ToStringExtension());
                        }
                        else
                        {
                            //defect_qty为0且reason_no为空的数据是默认数据只是为了json结构完整插入的,不需要插入E10系统
                            if (!Maths.IsEmpty(reasonlist[0]["reason_no"]) || reasonlist[0]["defect_qty"].ToInt32() != 0)
                            {
                                foreach (DependencyObject reasonlistItem in reasonlist)
                                {
                                    DataRow reasonlistDr = defectiveReasonsAiId.NewRow();
                                    reasonlistDr["DEFECTIVE_REASONS_AI_ID"] = keyService.CreateId();               //主键
                                    reasonlistDr["ParentId"]             = qcListDr["PO_ARRIVAL_INSPECTION_D_ID"]; //父主键
                                    reasonlistDr["DEFECTS"]              = reasonlistItem["defect_qty"];
                                    reasonlistDr["REMARK"]               = string.Empty;
                                    reasonlistDr["DEFECTIVE_REASONS_ID"] =
                                        GetDefectiveReasonsId(reasonlistItem["reason_no"].ToStringExtension());
                                    //系统管理字段
                                    AddManagementData(reasonlistDr, loginService);
                                    defectiveReasonsAiId.Rows.Add(reasonlistDr.ItemArray);

                                    //子单身第一笔时把不良原因主键赋值给单身不良原因
                                    if (reasonlist.IndexOf(reasonlistItem) == 0)
                                    {
                                        qcListDr["DEFECTIVE_REASONS_ID"] = reasonlistDr["DEFECTIVE_REASONS_ID"];
                                    }
                                }
                            }
                        }
                        //把对应数据添加至预生单缓存中
                        poArrivalInspectionDInfo.Rows.Add(qcListDr.ItemArray);
                    }

                    #endregion

                    #region 到货检验单计量单身临时表插入数据

                    DependencyObjectCollection collection =
                        createInspectionService.CreateInspection(dr["INSPECTION_PLAN_ID"], dr["OPERATION_ID"]);
                    foreach (DependencyObject item in collection)
                    {
                        if (item["INSPECTION_TYPE"].Equals("VI")) //collection.检验类型=‘VI’
                        {
                            DataRow itemDr = poArrivalInspectionD1Info.NewRow();
                            itemDr["PO_ARRIVAL_INSPECTION_D1_ID"] = keyService.CreateId();
                            itemDr["ParentId"] = poArrivalInspectionId;
                            itemDr["SEQUENCE"] = item["SEQUENCE"]; //检验顺序
                            DependencyObject inspectionPlantD = GetInspectionPlantD(dr["INSPECTION_PLAN_ID"],
                                                                                    item["INSPECTION_ITEM_ID"]);
                            itemDr["DEFECT_CLASS"]         = inspectionPlantD["DEFECT_CLASS"];
                            itemDr["INSPECTION_QTY"]       = defaultDecimal;
                            itemDr["INSPECTION_QQ"]        = defaultDecimal;
                            itemDr["DECISION"]             = false;
                            itemDr["IMPACT_RESULT"]        = inspectionPlantD["IMPACT_RESULT"];
                            itemDr["REMARK"]               = string.Empty;
                            itemDr["INSPECTION_ITEM_ID"]   = item["INSPECTION_ITEM_ID"]; //检验项目
                            itemDr["DEFECTIVE_REASONS_ID"] = Maths.GuidDefaultValue();
                            itemDr["ACCEPTANCE_CONSTANT"]  = defaultDecimal;
                            itemDr["SS"] = defaultDecimal;
                            itemDr["XX"] = defaultDecimal;
                            //系统管理字段
                            AddManagementData(itemDr, loginService);
                            poArrivalInspectionD1Info.Rows.Add(itemDr.ItemArray);
                        }
                    }

                    #endregion

                    //记录单据信息
                    DocmentInfo docmentInfo = new DocmentInfo();
                    docmentInfo.Id         = dr["PO_ARRIVAL_INSPECTION_ID"];
                    docmentInfo.OwnerOrgId = dr["Owner_Org_ROid"];
                    docmentInfo.DocId      = dr["DOC_ID"];
                    docmentInfo.DocNo      = dr["DOC_NO"].ToStringExtension();
                    listDocuments.Add(docmentInfo);

                    if (Maths.IsEmpty(resutQcNo))
                    {
                        resutQcNo = dr["DOC_NO"].ToStringExtension();
                    }
                    else
                    {
                        resutQcNo += "," + dr["DOC_NO"].ToStringExtension();
                    }
                }
            }
            #region 将数据统一插入数据库中

            using (ITransactionService trans = GetService <ITransactionService>()) {
                IQueryService querySrv = GetService <IQueryService>();
                //生成采购到货检验单
                if (poArrivalInspectionInfo.Rows.Count > 0)
                {
                    poArrivalInspectionInfo.Columns.Remove("SequenceNumber");
                    poArrivalInspectionInfo.Columns.Remove("ARRIVAL_DATE");
                    poArrivalInspectionInfo.Columns.Remove("INSPECT_DAYS");
                    poArrivalInspectionInfo.Columns.Remove("STOCK_UNIT_ID");
                    poArrivalInspectionInfo.Columns.Remove("SECOND_UNIT_ID");
                    poArrivalInspectionInfo.Columns.Remove("PURCHASE_TYPE");
                    BulkCopyAll(poArrivalInspectionInfo, querySrv);
                }
                //生成采购到货检验单计数单身
                if (poArrivalInspectionDInfo.Rows.Count > 0)
                {
                    BulkCopyAll(poArrivalInspectionDInfo, querySrv);
                }
                //生成采购到货检验单计量单身
                if (poArrivalInspectionD1Info.Rows.Count > 0)
                {
                    BulkCopyAll(poArrivalInspectionD1Info, querySrv);
                }
                //生成计数品质检验不良原因
                if (defectiveReasonsAiId.Rows.Count > 0)
                {
                    BulkCopyAll(defectiveReasonsAiId, querySrv);
                }

                //EFNET签核
                var infos = listDocuments.GroupBy(c => new { DOC_ID = c.DocId, OwnerOrgID = c.OwnerOrgId });
                foreach (var item in infos)
                {
                    IEFNETStatusStatusService efnetSrv = GetService <IEFNETStatusStatusService>();
                    efnetSrv.GetFormFlow("PO_ARRIVAL_INSPECTION.I01", item.Key.DOC_ID, item.Key.OwnerOrgID,
                                         item.Select(c => c.Id).ToArray());
                }

                //保存单据
                IReadService readSrv  = GetService <IReadService>("PO_ARRIVAL_INSPECTION");
                object[]     entities = readSrv.Read(listDocuments.Select(c => c.Id).Distinct().ToArray());
                if (entities != null && entities.Length > 0)
                {
                    ISaveService saveSrv = GetService <ISaveService>("PO_ARRIVAL_INSPECTION");
                    saveSrv.Save(entities);
                }

                trans.Complete();
            }

            #endregion
            return(resutQcNo);
        }
Beispiel #14
0
 public void SaveValue(DebuggableValueModel debuggableValue)
 {
     SaveService.Save(debuggableValue);
 }
Beispiel #15
0
		SaveCommandInit(ISaveService saveService, IAppWindow appWindow, IDocumentTabService documentTabService) {
			appWindow.MainWindowCommands.Add(ApplicationCommands.Save, (s, e) => saveService.Save(documentTabService.ActiveTab), (s, e) => e.CanExecute = saveService.CanSave(documentTabService.ActiveTab));
		}
Beispiel #16
0
 SaveCommandInit(ISaveService saveService, IAppWindow appWindow, IDocumentTabService documentTabService)
 {
     appWindow.MainWindowCommands.Add(ApplicationCommands.Save, (s, e) => saveService.Save(documentTabService.ActiveTab), (s, e) => e.CanExecute = saveService.CanSave(documentTabService.ActiveTab));
 }
Beispiel #17
0
        /// <summary>
        /// 审核结束自动下推(应付单下推付款申请单)
        /// </summary>
        /// <param name="e"></param>
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            try
            {
                string sql = string.Empty;
                if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
                {
                    foreach (DynamicObject item in e.DataEntitys)
                    {
                        //收款单id
                        string Fid  = item["Id"].ToString();
                        string sql2 = "";
                        //收款单源单明细
                        DynamicObjectCollection RECEIVEBILLSRCENTRYList = item["RECEIVEBILLSRCENTRY"] as DynamicObjectCollection;
                        foreach (var entry in RECEIVEBILLSRCENTRYList)
                        {
                            //销售订单明细内码
                            string FORDERENTRYID = entry["FSRCORDERENTRYID"].ToString();
                            //本次收款金额
                            decimal FREALRECAMOUNT = Convert.ToDecimal(entry["REALRECAMOUNT"].ToString());
                            if (!string.IsNullOrEmpty(FORDERENTRYID))
                            {
                                //查询采购订单
                                sql = string.Format(@"select a.FBILLNO,b.FENTRYID as 采购订单明细内码 ,f.F_YBG_BUSINESSMODEL as 业务模式  from  t_PUR_POOrder a  
                                                       inner join   t_PUR_POOrderEntry b on a.fID=b.FID 
                                                       inner join T_PUR_POORDERENTRY_LK c on c.FENTRYID=b.FENTRYID 
                                                       left join T_SAL_ORDERENTRY d on d.FENTRYID=c.FSID
                                                       left  join T_SAL_ORDER f on f.FID=d.FID 
                                                       where  FSID='{0}'", FORDERENTRYID);
                                DataSet   ds = DBServiceHelper.ExecuteDataSet(this.Context, sql);
                                DataTable dt = ds.Tables[0];
                                if (dt.Rows.Count > 0)
                                {
                                    for (int i = 0; i < dt.Rows.Count; i++)
                                    {
                                        string F_YBG_BUSINESSMODEL = dt.Rows[i]["采购订单明细内码"].ToString();
                                        if (F_YBG_BUSINESSMODEL == "01" || F_YBG_BUSINESSMODEL == "04") //挂靠的采用自动生成付款申请单
                                        {
                                            string POFENTRYID = dt.Rows[i]["采购订单明细内码"].ToString();
                                            if (string.IsNullOrEmpty(sql2))
                                            {
                                                sql2 += "  FPAYABLEENTRYID='" + POFENTRYID + "' ";
                                            }
                                            else
                                            {
                                                sql2 += "  or  FPAYABLEENTRYID='" + POFENTRYID + "' ";
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (!string.IsNullOrEmpty(sql2))
                        {
                            #region  应付单下推付款申请单
                            string           srcFormId  = "AP_Payable";  //应付单
                            string           destFormId = "CN_PAYAPPLY"; //付款申请单
                            IMetaDataService mService   = Kingdee.BOS.App.ServiceHelper.GetService <IMetaDataService>();
                            IViewService     vService   = Kingdee.BOS.App.ServiceHelper.GetService <IViewService>();
                            FormMetadata     destmeta   = mService.Load(this.Context, destFormId) as FormMetadata;
                            //转换规则的唯一标识
                            string ruleKey = "AP_PayableToPayApply";
                            //var rules = ConvertServiceHelper.GetConvertRules(Context, srcFormId, destFormId);
                            //var rule = rules.FirstOrDefault(t => t.IsDefault);
                            ConvertRuleElement     rule    = GetDefaultConvertRule(Context, srcFormId, destFormId, ruleKey);
                            List <ListSelectedRow> lstRows = new List <ListSelectedRow>();
                            string  strsql = "select a.FID , a.FENTRYID  from T_AP_PAYABLEPLAN  a left join T_AP_PAYABLE b on a.FID=b.FID   where b.FDOCUMENTSTATUS='C' and  (" + sql2 + ") ";
                            DataSet ds2    = DBServiceHelper.ExecuteDataSet(Context, strsql);
                            if (ds2.Tables[0].Rows.Count > 0)
                            {
                                HashSet <string> hasset = new HashSet <string>();
                                for (int j = 0; j < ds2.Tables[0].Rows.Count; j++)
                                {
                                    hasset.Add(ds2.Tables[0].Rows[j]["FID"].ToString());
                                    long entryId = Convert.ToInt64(ds2.Tables[0].Rows[j]["FENTRYID"]);
                                    //源单单据标识
                                    ListSelectedRow row = new ListSelectedRow(ds2.Tables[0].Rows[j]["FID"].ToString(), entryId.ToString(), 0, "AP_Payable");
                                    //源单单据体标识
                                    row.EntryEntityKey = "FEntityPlan";
                                    lstRows.Add(row);
                                }

                                PushArgs        pargs      = new PushArgs(rule, lstRows.ToArray());
                                IConvertService cvtService = Kingdee.BOS.App.ServiceHelper.GetService <IConvertService>();
                                OperateOption   option     = OperateOption.Create();
                                option.SetIgnoreWarning(true);
                                option.SetVariableValue("ignoreTransaction", false);
                                option.SetIgnoreInteractionFlag(true);
                                #region 提交审核
                                //OperateOption option2 = OperateOption.Create();
                                //option2.SetIgnoreWarning(true);
                                //option2.SetVariableValue("ignoreTransaction", true);
                                //foreach (var hid in hasset)
                                //{
                                //    //如果应付单没有提交先提交审核
                                //    IMetaDataService BomService = Kingdee.BOS.App.ServiceHelper.GetService<IMetaDataService>();
                                //    //应付单元素包
                                //    FormMetadata APMeta = BomService.Load(Context, "AP_Payable") as FormMetadata;
                                //    IViewService APVService = Kingdee.BOS.App.ServiceHelper.GetService<IViewService>();
                                //    //应付单数据包
                                //    DynamicObject APmd = APVService.LoadSingle(Context, hid, APMeta.BusinessInfo.GetDynamicObjectType());

                                //    DynamicObject[] dy = new DynamicObject[] { APmd };

                                //    object[] items = dy.Select(p => p["Id"]).ToArray();

                                //    ISubmitService submitService = Kingdee.BOS.App.ServiceHelper.GetService<ISubmitService>();
                                //    IOperationResult submitresult = submitService.Submit(Context, APMeta.BusinessInfo, items, "Submit", option2);

                                //    IAuditService auditService = Kingdee.BOS.App.ServiceHelper.GetService<IAuditService>();
                                //    IOperationResult auditresult = auditService.Audit(Context, APMeta.BusinessInfo, items, option2);
                                //}
                                #endregion

                                ConvertOperationResult cvtResult = cvtService.Push(Context, pargs, option, false);
                                if (cvtResult.IsSuccess)
                                {
                                    DynamicObject[] dylist = (from p in cvtResult.TargetDataEntities select p.DataEntity).ToArray();
                                    //修改应收单里面数据
                                    for (int K = 0; K < dylist.Length; K++)
                                    {
                                        //付款原因
                                        dylist[K]["F_YBG_Remarks"] = "供应商付款";
                                        //明细信息
                                        DynamicObjectCollection RECEIVEBILLENTRYList = dylist[K]["FPAYAPPLYENTRY"] as DynamicObjectCollection;
                                        foreach (var Entry in RECEIVEBILLENTRYList)
                                        {
                                            //结算方式
                                            BaseDataField FSETTLETYPEID = destmeta.BusinessInfo.GetField("FSETTLETYPEID") as BaseDataField;
                                            Entry["FSETTLETYPEID_Id"] = 4;
                                            Entry["FSETTLETYPEID"]    = vService.LoadSingle(Context, 4, FSETTLETYPEID.RefFormDynamicObjectType);
                                        }
                                    }
                                    //保存
                                    ISaveService     saveService = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>();
                                    IOperationResult saveresult  = saveService.Save(Context, destmeta.BusinessInfo, dylist, option);
                                    bool             reult       = CheckResult(saveresult, out string mssg);
                                    if (!reult)
                                    {
                                        throw new Exception("收款款单审核成功,生成付款申请单失败:");
                                    }
                                    else
                                    {
                                        //纪录核销的纪录
                                        OperateResultCollection operateResults = saveresult.OperateResult;
                                        string fnmber = operateResults[0].Number;
                                        string fid    = operateResults[0].PKValue.ToString();
                                    }
                                }
                            }
                            else
                            {
                                throw new KDException("", "应付单不存在或者未审核,下推付款申请单失败");
                            }
                            #endregion
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new KDException("", "应付单下推付款申请单失败:" + ex.ToString());
            }
        }
        public DependencyObjectCollection UpdateSalesIssue(string employeeNo, string scanType, DateTime reportDatetime, string pickingDepartmentNo
                                                           , string recommendedOperations, string recommendedFunction, string scanDocNo, DependencyObjectCollection collection)
        {
            DependencyObjectCollection rtnColl = CreateReturnCollection();

            #region 参数检查
            IInfoEncodeContainer encodeSrv = this.GetService <IInfoEncodeContainer>();
            if (Maths.IsEmpty(recommendedOperations))
            {
                throw new BusinessRuleException(encodeSrv.GetMessage("A111201", new object[] { "recommended_operations" }));
            }
            if (Maths.IsEmpty(recommendedFunction))
            {
                throw new BusinessRuleException(encodeSrv.GetMessage("A111201", new object[] { "recommended_function" }));
            }
            #endregion

            //创建临时表需要的DataTable和Mapping信息
            DataTable dtEntityD = new DataTable();
            List <BulkCopyColumnMapping> entityDMap = new List <BulkCopyColumnMapping>();
            CreateRelateTable(dtEntityD, entityDMap);
            List <string> docNos = new List <string>();  //记录单身的单号,保存时需要,可以避免后续再查

            //组织数据BulkCopy需要的DataTable数据
            InsertDataTable(dtEntityD, collection, docNos);
            if (dtEntityD.Rows.Count <= 0)
            {
                return(rtnColl);
            }

            #region 更新逻辑
            using (ITransactionService trans = this.GetService <ITransactionService>()) {
                using (IConnectionService connService = this.GetService <IConnectionService>()) {
                    IQueryService querySrv = this.GetService <IQueryService>();
                    //新增临时表
                    IDataEntityType dtTemp = CreateDTmpTable(querySrv);

                    //批量新增到临时表
                    querySrv.BulkCopy(dtEntityD, dtTemp.Name, entityDMap.ToArray());
                    //利用临时表批量更新相关数据
                    UpdateSalesIssueD(querySrv, dtTemp);

                    DataRow[] drs = dtEntityD.Select("BARCODE_NO<>\'\'");
                    if (drs.Length > 0)    //条码不为""的记录大于0时,才执行如下更新,避免多余的性能损失
                    {
                        ICreateService createService = this.GetService <ICreateService>("PARA_FIL");
                        if (createService != null)  //PARA_FIL实体存在,服务端可以这么判断
                        {
                            bool bcLintFlag = UtilsClass.IsBCLineManagement(querySrv);
                            if (bcLintFlag)
                            {
                                DeleteBCLine(querySrv, dtTemp);  //先删除
                                InsertBCLine(querySrv, dtTemp);  //再重新生成
                            }
                        }
                    }
                }

                //保存
                DependencyObjectCollection ids = GetSalesIssue(docNos);
                IReadService readSrv           = this.GetService <IReadService>("SALES_ISSUE");
                object[]     entities          = readSrv.Read(ids.Select(c => c["SALES_ISSUE_ID"]).ToArray());
                if (entities != null && entities.Length > 0)
                {
                    ISaveService saveSrv = this.GetService <ISaveService>("SALES_ISSUE");
                    saveSrv.Save(entities);
                }

                //保存时没有自动审核的,需要重新审核
                entities = readSrv.Read(ids.Where(c => !c["AUTO_APPROVE"].ToBoolean()).Select(c => c["SALES_ISSUE_ID"]).ToArray());
                IConfirmService confirmService = this.GetService <IConfirmService>("SALES_ISSUE");
                ILogOnService   logOnSrv       = this.GetService <ILogOnService>();
                foreach (DependencyObject obj in entities)
                {
                    ConfirmContext context = new ConfirmContext(obj.Oid, logOnSrv.CurrentUserId, reportDatetime.ToDate());
                    confirmService.Execute(context);
                }

                trans.Complete();
            }
            #endregion

            #region 组织返回结果

            foreach (string item in docNos)
            {
                DependencyObject obj = rtnColl.AddNew();
                obj["doc_no"] = item;
            }

            #endregion

            return(rtnColl);
        }
Beispiel #19
0
        /// <summary>
        /// 更新领退料单
        /// </summary>
        /// <param name="employeeNo">扫描人员</param>
        /// <param name="scanType">扫描类型 1.有箱条码 2.无箱条码</param>
        /// <param name="reportDatetime">上传时间</param>
        /// <param name="pickingDepartmentNo">领料部门</param>
        /// <param name="recommendedOperations">建议执行作业</param>
        /// <param name="recommendedFunction">A.新增  S.过帐</param>
        /// <param name="scanDocNo">扫描单号</param>
        /// <param name="collection">接口传入的领料单单身数据集合</param>
        public DependencyObjectCollection UpdateIssueReceipt(string employeeNo, string scanType, DateTime reportDatetime, string pickingDepartmentNo
                                                             , string recommendedOperations, string recommendedFunction, string scanDocNo, DependencyObjectCollection collection)
        {
            DependencyObjectCollection rtnColl = CreateReturnCollection();

            #region 参数检查
            if (Maths.IsEmpty(recommendedOperations))
            {
                throw new BusinessRuleException(EncodeSrv.GetMessage("A111201", new object[] { "recommended_operations" }));
            }
            if (Maths.IsEmpty(recommendedFunction))
            {
                throw new BusinessRuleException(EncodeSrv.GetMessage("A111201", new object[] { "recommended_function" }));
            }
            #endregion

            //创建临时表需要的DataTable和Mapping信息
            DataTable issueReceiptD = null;
            List <BulkCopyColumnMapping> issueReceiptDMap = null;
            this.CreateRelateTable(ref issueReceiptD,
                                   ref issueReceiptDMap);
            List <string> docNos = new List <string>();  //记录单身的单号,保存时需要,可以避免后续再查

            //组织数据BulkCopy需要的DataTable数据
            InsertDataTable(issueReceiptD, collection, docNos);

            #region 更新逻辑
            using (ITransactionService trans = this.GetService <ITransactionService>()) {
                IQueryService querySrv = this.GetService <IQueryService>();

                //新增临时表
                IDataEntityType issueReceiptDTmp = CreateIssueReceiptDTmpTable(querySrv);

                //批量新增到临时表
                querySrv.BulkCopy(issueReceiptD, issueReceiptDTmp.Name, issueReceiptDMap.ToArray());
                if (issueReceiptD.Rows.Count <= 00 || issueReceiptD.Rows.Count <= 0)  //没有数据值不再往下执行
                {
                    return(rtnColl);
                }
                DataRow[] drs = issueReceiptD.Select("BARCODE_NO<>\'\'");

                //利用临时表批量更新相关数据
                //20170905 add by wangyq for P001-170717001  =================begin===================
                if (recommendedOperations == "7-5")
                {
                    UpdateBcCheckStatus(querySrv, issueReceiptDTmp);
                }
                else
                {
                    //20170905 add by wangyq for P001-170717001  =================end===================
                    UpdateIssueReceiptD(querySrv, issueReceiptDTmp);
                }//20170905 add by wangyq for P001-170717001
                if (drs.Length > 0)  //条码不为""的记录大于0时,才执行如下更新,避免多余的性能损失
                {
                    bool bcLintFlag = UtilsClass.IsBCLineManagement(querySrv);
                    if (bcLintFlag)
                    {
                        DeleteBCLine(querySrv, issueReceiptDTmp);  //先删除
                        InsertBCLine(querySrv, issueReceiptDTmp);  //再重新生成
                    }
                }

                //保存
                DependencyObjectCollection ids = GetIssueReceipt(docNos);
                IReadService readSrv           = this.GetService <IReadService>("ISSUE_RECEIPT");
                object[]     entities          = readSrv.Read(ids.Select(c => c["ISSUE_RECEIPT_ID"]).ToArray());
                if (entities != null && entities.Length > 0)
                {
                    ISaveService saveSrv = this.GetService <ISaveService>("ISSUE_RECEIPT");
                    saveSrv.Save(entities);
                }

                //保存时没有自动审核的,需要重新审核
                entities = readSrv.Read(ids.Where(c => !c["AUTO_APPROVE"].ToBoolean()).Select(c => c["ISSUE_RECEIPT_ID"]).ToArray());
                IConfirmService confirmService = this.GetService <IConfirmService>("ISSUE_RECEIPT");
                ILogOnService   logOnSrv       = this.GetService <ILogOnService>();
                foreach (DependencyObject obj in entities)
                {
                    ConfirmContext context = new ConfirmContext(obj.Oid, logOnSrv.CurrentUserId, reportDatetime.ToDate());
                    confirmService.Execute(context);
                }

                trans.Complete();
            }
            #endregion

            #region 组织返回结果

            foreach (string item in docNos)
            {
                DependencyObject obj = rtnColl.AddNew();
                obj["doc_no"] = item;
            }

            #endregion

            return(rtnColl);
        }
Beispiel #20
0
        public override void ButtonClick(BOS.Core.DynamicForm.PlugIn.Args.ButtonClickEventArgs e)
        {
            base.ButtonClick(e);
            string PformId = this.View.BillBusinessInfo.GetForm().Id;

            switch (PformId)
            {
            case "STK_InStock":      //采购入库
                tableName = "T_STK_INSTOCKENTRY";
                break;

            case "STK_MISCELLANEOUS":    //其他入库
                tableName = "T_STK_MISCELLANEOUSENTRY";
                break;

            case "SP_InStock":    //简单生产入库
                tableName = "T_SP_INSTOCKENTRY";
                break;

            case "STK_InitInStock":    //期初采购入库
                tableName = "T_STK_INITINSTOCKENTRY";
                break;

            case "STK_OEMInStock":    //受托加工材料入库
                tableName = "T_STK_OEMINSTOCKENTRY";
                break;

            case "STK_InvInit":
                tableName = "T_STK_INVINITDETAIL";
                break;

            default: break;
            }

            //string a;
            //if ((a = e.Key.ToUpper()) != null)
            //{
            //    if (!(a == "FBTNCONFIRM"))
            //    {
            //        if (a == "FBTNCANCEL")
            //        {
            //            this.View.Close();
            //        }
            //    }
            //    else
            //    {
            //value = this.View.Model.GetValue("F_BEM_QANO");
            //if (value == null)
            //{
            //    this.View.ShowMessage("请输入质保书号");
            //    return;
            //}
            if (!lotIds.IsEmpty() && !lotIds.Equals("0"))
            {
                string    filter     = string.Format("FLOTID IN ('{0}')", lotIds);
                OQLFilter of         = OQLFilter.CreateHeadEntityFilter(filter);
                var       lotMasters = BusinessDataServiceHelper.Load(this.Context, "BD_BatchMainFile", null, of);
                foreach (var lot in lotMasters)
                {
                    lot["F_QANo"] = value;
                }
                ISaveService service = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>();
                service.Save(this.Context, lotMasters);
                updateSqls.Add(string.Format(@"UPDATE  {0}  set F_QANo ='{1}'  WHERE flot  in ('{2}')  ", tableName, value, lotIds));
            }


            if (!ids.IsEmpty())
            {
                updateSqls.Add(string.Format(@"UPDATE  {0}  set F_QANo ='{1}'  WHERE fid  in ('{2}')  ", tableName, value, ids));
            }
            else if (!entryIds.IsEmpty())
            {
                updateSqls.Add(string.Format(@"UPDATE  {0}  set F_QANo ='{1}'  WHERE fentryid  in ('{2}')  ", tableName, value, entryIds));
            }

            DBUtils.ExecuteBatch(this.Context, updateSqls, updateSqls.Count);

            //}
            //返回值到父窗口
            //  this.View.ReturnToParentWindow("true");
            this.View.Close();
        }
        public override void EndOperationTransaction(BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
        {
            lotIds.Clear();
            List <SqlObject> sqlList = new List <SqlObject>();

            foreach (var item in e.DataEntitys)
            {
                string formId = "";
                if (item.DynamicObjectType.Name.Equals("InvInit"))
                {
                    formId = "STK_InvInit";
                }
                else
                {
                    formId = item["FFormId"].ToString();
                }

                DynamicObjectCollection details = null;
                switch (formId)
                {
                case "STK_MISCELLANEOUS":
                    details = item["STK_MISCELLANEOUSENTRY"] as DynamicObjectCollection;
                    break;

                case "STK_InStock":
                    details = item["InStockEntry"] as DynamicObjectCollection;
                    break;

                case "SP_InStock":
                    details = item["Entity"] as DynamicObjectCollection;
                    break;

                case "STK_OEMInStock":
                    details = item["OEMInStockEntry"] as DynamicObjectCollection;
                    break;

                case "STK_InitInStock":
                    details = item["InitInStockEntry"] as DynamicObjectCollection;
                    break;

                case "STK_InvInit":
                    details = item["InvInitDetail"] as DynamicObjectCollection;
                    break;

                default: break;
                }
                if (details == null)
                {
                    return;
                }
                foreach (var entryItem in details)
                {
                    Object lotObj = entryItem["LOT"];
                    if (null != lotObj && Convert.ToInt16((lotObj as DynamicObject)["BizType"]) == 1)
                    {
                        sqlList.Add(this.getSqlParams(formId, entryItem, item));
                    }
                }
            }
            if (sqlList.Count > 0 && lotIds.Count > 0)
            {
                DBUtils.ExecuteBatch(this.Context, sqlList);
                string          filter     = string.Format("FLOTID IN ({0})", string.Join(",", lotIds));
                OQLFilter       of         = OQLFilter.CreateHeadEntityFilter(filter);
                DynamicObject[] lotMasters = BusinessDataServiceHelper.Load(this.Context, "BD_BatchMainFile", null, of);
                ISaveService    service    = Kingdee.BOS.App.ServiceHelper.GetService <ISaveService>();
                service.Save(this.Context, lotMasters);
            }
        }
Beispiel #22
0
 private void Store_TimerElasped()
 {
     saveService.Save(store.GetUsageKeeper());
 }