Exemplo n.º 1
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);

            if (e.DataEntitys.Count() < 1)
            {
                return;
            }
            var dataEntities = e.DataEntitys.ToArray();

            foreach (DynamicObject dataEntry in dataEntities)
            {
                DynamicObject BillEntry = dataEntry["BillEntry"].AsType <DynamicObjectCollection>().First();
                //获取收货通知数据
                string OrginBillNo  = BillEntry["OriginBillNo"].ToString();
                string OriginFormId = "BAH_WMS_InNotice";

                FormMetadata          meta       = MetaDataServiceHelper.Load(this.Context, OriginFormId) as FormMetadata;
                QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                queryParam.FormId       = OriginFormId;
                queryParam.BusinessInfo = meta.BusinessInfo;

                queryParam.FilterClauseWihtKey = string.Format(" {0} = '{1}' ", meta.BusinessInfo.GetBillNoField().Key, OrginBillNo);

                var objs = BusinessDataServiceHelper.Load(this.Context, meta.BusinessInfo.GetDynamicObjectType(), queryParam);

                if (objs[0]["FBAHGenTargetStatus"].ToString().Equals('B') == true)
                {
                    throw new Exception(string.Format("编号为{0}的收货通知已生成目标单据,不允许反审核!", OrginBillNo));
                }
            }
        }
Exemplo n.º 2
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);
            if (e.SelectedRows == null || e.SelectedRows.Count <ExtendedDataEntity>() <= 0)
            {
                return;
            }
            foreach (ExtendedDataEntity current in e.SelectedRows)
            {
                DynamicObjectCollection SaleOrderEntry = current.DataEntity["FEntity"] as DynamicObjectCollection;

                //原因:之前业务A、B 值都为整数,业务上没有小数,处理方案 代码预定保存的时候给去掉
                foreach (DynamicObject entry in SaleOrderEntry)
                {
                    if (entry["F_YJ_TEXT5"] != null)
                    {
                        string[] splits = Convert.ToString(entry["F_YJ_TEXT5"]).Split('.');
                        entry["F_YJ_TEXT5"] = splits[0];
                    }
                    if (entry["F_YJ_TEXT6"] != null)
                    {
                        string[] splits = Convert.ToString(entry["F_YJ_TEXT6"]).Split('.');
                        entry["F_YJ_TEXT6"] = splits[0];
                    }
                    if (entry["F_YJ_TEXT7"] != null)
                    {
                        string[] splits = Convert.ToString(entry["F_YJ_TEXT7"]).Split('.');
                        entry["F_YJ_TEXT7"] = splits[0];
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);
            string          strSql = "INSERT INTO t_demo_purServTest(FID,FNAME,FCREATEDATE) VALUES(@ID,@NAME,@CREATEDATE)";
            List <SqlParam> paras  = new List <SqlParam> {
                new SqlParam("@ID", KDDbType.Int32, DateTime.Now.Second),
                new SqlParam("@Name", KDDbType.String, "BeforeExecuteOperationTransaction"),
                new SqlParam("@CREATEDATE", KDDbType.DateTime, DateTime.Now)
            };

            DBUtils.Execute(this.Context, strSql, paras);
        }
Exemplo n.º 4
0
 public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
 {
     oldvaluesfoItem = new List <Dictionary <string, string> >();
     //newvaluesfoItem = new List<Dictionary<string, string>>();
     string[] arr = new string[e.SelectedRows.Count()];
     //DynamicObject[] newData = new DynamicObject[e.SelectedRows.Count()];
     for (int i = 0; i < arr.Length; i++)
     {
         //获取新值的DataEntity
         //newData[i] = e.SelectedRows.ElementAt(i).DataEntity;
         arr[i] = e.SelectedRows.ElementAt(i).DataEntity["id"].ToString();
     }
     DynamicObject[] oldData = BusinessDataServiceHelper.Load(this.Context, arr, BusinessInfo.GetDynamicObjectType());
     GetOldOrNewDataList(oldData, oldvaluesfoItem);
 }
Exemplo n.º 5
0
        /// <summary>
        /// 开始获取选中单据信息
        /// </summary>
        /// <param name="e"></param>
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);

            selectedRows = e.SelectedRows.Select(s => s.DataEntity);

            foreach (DynamicObject dy in selectedRows)
            {
                string Id = Convert.ToString(dy["Id"]);

                DynamicObject checkObejct = Utils.LoadFIDBillObject(this.Context, "PRD_INSTOCK", Id);

                string RKTZD = Convert.ToString(checkObejct["F_SZXY_RKTZD"]);

                if (!RKTZD.IsNullOrEmptyOrWhiteSpace()) IdList.Add(RKTZD);

            }
        }
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);
            decimal allamount = 0;

            foreach (ExtendedDataEntity extended in e.SelectedRows)
            {
                DynamicObject dy = extended.DataEntity;

                DynamicObjectCollection docPriceEntity = dy["SaleOrderEntry"] as DynamicObjectCollection;

                foreach (DynamicObject HHentity in docPriceEntity)
                {
                    if (HHentity["FAllAmount_ZR"] != null)
                    {
                        decimal amount = decimal.Parse(Convert.ToString(HHentity["FAllAmount_ZR"]));
                        allamount = allamount + amount;
                    }
                }

                if (dy["FALLdiscount"] != null)
                {
                    decimal discount = decimal.Parse(dy["FALLdiscount"].ToString());
                    decimal rpamount = decimal.Parse(dy["FRPAMOUNT"].ToString());
                    if (rpamount < discount)
                    {
                        //e.CancelMessage = "本次折扣使用总金额不能大于返利余额,终止操作执行!";
                        throw new KDBusinessException("", "本次折扣使用总金额不能大于返利余额,终止操作执行!");
                        //e.Cancel = true;
                    }
                    else
                    {
                        //decimal amountL = allamount * (decimal)0.4;

                        //if (amountL < discount)
                        //{
                        //    throw new KDBusinessException("", "本次折扣使用总金额不能超过此订单总金额百分之40,终止操作执行!");
                        //}
                    }
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// 执行订单保存操作之前
        /// </summary>
        /// <param name="e"></param>
        /// 客户id = e.SelectedRows[0][DataEntity][custId_Id]
        /// 整单金额 = e.SelectedRows[0][DataEntity][SaleOrderFinance][0][BillAllAmount]
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            string  cust_id   = null;
            decimal allAmount = 0;

            foreach (ExtendedDataEntity extended in e.SelectedRows)
            {
                DynamicObject           entity  = extended.DataEntity;
                DynamicObjectCollection finance = entity["SaleOrderFinance"] as DynamicObjectCollection;
                cust_id = entity["CustId_Id"].ToString();

                foreach (DynamicObject fin in finance)
                {
                    allAmount = Convert.ToDecimal(fin["BillAllAmount"]);
                }
            }

            e.Cancel        = true;
            e.CancelMessage = string.Format("客户id:{0}, 整单金额: {1}, 客户额度:{2}, 客户全部应收: {3}", cust_id, allAmount, LoaCredit(cust_id), $"{LoadCustAR(cust_id):N}");
        }
        /// <summary>
        /// 开始获取选中单据信息
        /// </summary>
        /// <param name="e"></param>
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);

            selectedRows = e.SelectedRows.Select(s => s.DataEntity);
        }
Exemplo n.º 9
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            if (e.SelectedRows == null || e.SelectedRows.Count <ExtendedDataEntity>() <= 0)
            {
                return;
            }
            foreach (ExtendedDataEntity current in e.SelectedRows)
            {
                DynamicObjectCollection SaleOrderEntry = current.DataEntity["SaleOrderEntry"] as DynamicObjectCollection;


                foreach (DynamicObject entry in SaleOrderEntry)
                {
                    if (entry["MaterialId"] != null)
                    {
                        // MaterialId
                        string strSql      = "";
                        String FNUMBER     = "";
                        String FMATERIALID = "";
                        FNUMBER     = Convert.ToString(((DynamicObject)entry["MaterialId"])["Number"]);
                        FMATERIALID = Convert.ToString(((DynamicObject)entry["MaterialId"])["Id"]);
                        string Strm = "0";
                        string Stra = "0";
                        string Strb = "0";
                        string Strc = "0";
                        string Strd = "0";
                        if (getElementLength(FNUMBER, ".") >= 3)
                        {
                            Strm = getElement(FNUMBER, 0, ".") + "." + getElement(FNUMBER, 1, ".") + "." + getElement(FNUMBER, 2, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 4)
                        {
                            Stra = getElement(FNUMBER, 3, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 5)
                        {
                            Strb = getElement(FNUMBER, 4, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 6)
                        {
                            Strc = getElement(FNUMBER, 5, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 7)
                        {
                            Strd = getElement(FNUMBER, 6, ".");
                        }

                        if (Stra.Equals("5"))
                        {
                            Stra = "6";
                        }
                        if (Stra.Equals("6"))
                        {
                            Stra = "5";
                        }

                        string Strm1 = "0";
                        string Stra1 = "0";
                        string Strb1 = "0";
                        string Strc1 = "0";
                        string Strd1 = "0";
                        if (getElementLength(FNUMBER, ".") >= 4)
                        {
                            Strm1 = getElement(FNUMBER, 0, ".") + "." + getElement(FNUMBER, 1, ".") + "." + getElement(FNUMBER, 2, ".") + "." + getElement(FNUMBER, 3, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 5)
                        {
                            Stra1 = getElement(FNUMBER, 4, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 6)
                        {
                            Strb1 = getElement(FNUMBER, 5, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 7)
                        {
                            Strc1 = getElement(FNUMBER, 6, ".");
                        }
                        if (getElementLength(FNUMBER, ".") >= 8)
                        {
                            Strd1 = getElement(FNUMBER, 7, ".");
                        }


                        strSql = string.Format(@"/*dialect*/select FCOSTITEMSTPYE,FPROJECTUNIT,FAREAFORMULA,FMATERIALRANGE,FNAME,FORDEROFVALUE ,F_PAEZ_DECIMAL saleprice from T_PAEZ_MRelatedType tpm 
inner join T_PAEZ_MRelatedTypeEntry tpme on tpm.FID=tpme.FID 
inner join PAEZ_t_Cust_Entry100011 a on tpme.FAREAFORMULA=a.fid
inner join PAEZ_t_Cust_Entry100011_L b on a.fid=b.fid where FMATERIALRANGE='{0}' or FMATERIALRANGE='{1}' ", Strm, Strm1);
                        DynamicObjectCollection Col = DBUtils.ExecuteDynamicObject(this.Context, strSql);
                        if (Col.Count() > 1)
                        {
                        }
                        else if (Col.Count() == 0)
                        {
                        }
                        else if (Col.Count() == 1)
                        {
                            entry["TaxPrice"] = Convert.ToDecimal(Col[0]["saleprice"]);


                            entry["Price"] = Col[0]["saleprice"];
                        }
                    }
                }
            }
        }
Exemplo n.º 10
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);
            var documentStatusField = this.BusinessInfo.GetField(this.BusinessInfo.GetForm().DocumentStatusFieldKey).AsType <BillStatusField>();

            //如果数据状态是审核中,需先执行撤销操作。
            {
                var dataEntities = e.SelectedRows
                                   .Select(row => row.DataEntity)
                                   .Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.Approving()))
                                   .ToArray();
                if (dataEntities.Any())
                {
                    var result = dataEntities.CancelAssign(this.Context, this.BusinessInfo, this.Option);
                    if (!result.IsSuccess)
                    {
                        e.Cancel        = true;
                        e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage());
                        this.OperationResult.MergeResult(result);
                    } //end if
                }     //end if
            }

            //如果数据状态是已审核,需先执行反审核操作。
            {
                var dataEntities = e.SelectedRows
                                   .Select(row => row.DataEntity)
                                   .Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.Approved()))
                                   .ToArray();
                if (dataEntities.Any())
                {
                    var result = dataEntities.UnAudit(this.Context, this.BusinessInfo, this.Option);
                    if (!result.IsSuccess)
                    {
                        e.Cancel        = true;
                        e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage());
                        this.OperationResult.MergeResult(result);
                    } //end if
                }     //end if
            }

            //如果无需中断,则执行暂存+保存操作。
            if (!e.Cancel)
            {
                var dataEntities = e.SelectedRows
                                   .Select(row => row.DataEntity)
                                   .ToArray();

                //记下重新审核的数据
                var reCreatedDataEntities = dataEntities.Where(data => data.FieldProperty <string>(documentStatusField).EqualsIgnoreCase(DocumentStatus.Instance.ReCreated()))
                                            .ToArray();

                //暂存
                if (this.Option.GetCutoffOperation().Adaptive(number => number.IsNullOrEmptyOrWhiteSpace() ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Draft.ToString()) ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Save.ToString()) ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Submit.ToString()) ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Audit.ToString())))
                {
                    if (!this.Option.GetOutOfTransaction())
                    {
                        dataEntities.ForEach(data => documentStatusField.DynamicProperty.SetValue(data, DocumentStatus.Instance.Draft()));
                    }
                    dataEntities.Draft(this.Context, this.BusinessInfo, this.Option).Adaptive(result =>
                    {
                        if (!result.IsSuccess)
                        {
                            this.OperationResult.MergeResult(result);
                        }
                    });
                }//end if

                //保存
                if (this.Option.GetOutOfTransaction() &&
                    this.Option.GetCutoffOperation().Adaptive(number => number.IsNullOrEmptyOrWhiteSpace() ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Save.ToString()) ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Submit.ToString()) ||
                                                              number.EqualsIgnoreCase(FormOperationEnum.Audit.ToString())))
                {
                    reCreatedDataEntities.ForEach(data => documentStatusField.DynamicProperty.SetValue(data, DocumentStatus.Instance.ReCreated()));
                    dataEntities.Save(this.Context, this.BusinessInfo, this.Option).Adaptive(result =>
                    {
                        if (!result.IsSuccess)
                        {
                            e.Cancel        = true;
                            e.CancelMessage = string.Concat(e.CancelMessage, result.GetResultMessage());
                            this.OperationResult.MergeResult(result);
                        } //end if
                    });
                }         //end if
            }             //end if
        }                 //end method
Exemplo n.º 11
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);

            IEnumerable <ExtendedDataEntity> extendedDataEntities = e.SelectedRows;

            foreach (ExtendedDataEntity extendedDataEntity in extendedDataEntities)
            {
                DynamicObject billInfo = extendedDataEntity.DataEntity;

                DynamicObject bomInfor = billInfo["FBOMID"] as DynamicObject;
                if (bomInfor == null)
                {
                    continue;
                }

                DynamicObjectCollection subItemInfo = bomInfor["TreeEntity"] as DynamicObjectCollection;
                if (subItemInfo == null || subItemInfo.Count == 0)
                {
                    continue;
                }

                DynamicObjectCollection entryRows = billInfo["PPBomEntry"] as DynamicObjectCollection;
                if (entryRows == null || entryRows.Count == 0)
                {
                    continue;
                }

                foreach (var item in entryRows)
                {
                    decimal qty = Convert.ToDecimal(item["FJNUnitEnzymes"]);
                    if (qty > 0)
                    {
                        continue;
                    }

                    var subQty = subItemInfo.FirstOrDefault(f => f["MATERIALIDCHILD_Id"].ToString() == item["MaterialID_Id"].ToString() &&
                                                            f["AuxPropID_Id"].ToString() == item["AuxPropId_Id"].ToString());
                    if (subQty != null)
                    {
                        var jnqty  = Convert.ToDecimal(subQty["FJNCompanyEA"]);
                        var bomQty = Convert.ToDecimal(item["F_JN_BOMQty"]);

                        item["FJNUnitEnzymes"]    = jnqty;
                        item["F_JN_EnzymeSumQty"] = jnqty * bomQty;

                        continue;
                    }

                    subQty = subItemInfo.FirstOrDefault(f => f["MATERIALIDCHILD_Id"].ToString() == item["MaterialID_Id"].ToString());
                    if (subQty != null)
                    {
                        var jnqty  = Convert.ToDecimal(subQty["FJNCompanyEA"]);
                        var bomQty = Convert.ToDecimal(item["F_JN_BOMQty"]);

                        item["FJNUnitEnzymes"]    = jnqty;
                        item["F_JN_EnzymeSumQty"] = jnqty * bomQty;
                    }
                }
            }
        }
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);
            HashSet <string> poBillNos    = new HashSet <string>();
            Entity           entity       = this.BusinessInfo.GetEntity("FInStockEntry");
            Entity           linkEntry    = this.BusinessInfo.GetEntity("FInStockEntry_Link");
            Field            fldSrcFormId = this.BusinessInfo.GetField("FSRCBILLTYPEID");
            Field            fldSrcBillNo = this.BusinessInfo.GetField("FSrcBillNo");

            // 对单据体进行循环,取关联的源单编号
            foreach (var billObj in e.SelectedRows)
            {
                DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                                                    as DynamicObjectCollection;
                foreach (var entryRow in entryRows)
                {
                    string srcFormId    = fldSrcFormId.DynamicProperty.GetValue <string>(entryRow);
                    string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue <string>(entryRow);
                    if (string.IsNullOrWhiteSpace(srcFormId) || !srcFormId.EqualsIgnoreCase(POFormId))
                    {// 源单不是采购订单,略过
                        continue;
                    }
                    // 源单编号已经登记,不再重复记录,略过
                    if (poBillNos.Contains(srcSrcBillNo))
                    {
                        continue;
                    }
                    // Link已经记录了源单信息,略过
                    DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow)
                                                       as DynamicObjectCollection;
                    if (linkRows.Count > 0)
                    {
                        continue;
                    }
                    poBillNos.Add(srcSrcBillNo);
                }
            }
            if (poBillNos.Count == 0)
            {
                return;
            }
            DynamicObject[] poObjs = this.LoadPurchaseOrder(poBillNos);
            if (poObjs == null || poObjs.Length == 0)
            {
                return;
            }
            Dictionary <string, Dictionary <string, DynamicObject> > dctAllBills = this.BuildDictionary(poObjs);
            string srcTableNumber = this.GetPOEntryTableNumber();
            List <DynamicObject> allNewLinkRows = new List <DynamicObject>();

            // 循环单据体,为单据体,建立起源单关联信息:
            foreach (var billObj in e.SelectedRows)
            {
                DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                                                    as DynamicObjectCollection;
                foreach (var entryRow in entryRows)
                {
                    string srcFormId    = fldSrcFormId.DynamicProperty.GetValue <string>(entryRow);
                    string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue <string>(entryRow);
                    if (string.IsNullOrWhiteSpace(srcFormId) || !srcFormId.EqualsIgnoreCase(POFormId))
                    {// 源单不是采购订单,略过
                        continue;
                    }
                    Dictionary <string, DynamicObject> dctOneBill = null;
                    if (dctAllBills.TryGetValue(srcSrcBillNo, out dctOneBill) == false)
                    {
                        continue;
                    }
                    DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject;
                    if (materialObj == null)
                    {
                        continue;
                    }
                    string        materialNumber = Convert.ToString(materialObj["number"]);
                    DynamicObject srcRow         = null;
                    if (dctOneBill.TryGetValue(materialNumber, out srcRow) == false)
                    {
                        continue;
                    }
                    // Link已经记录了源单信息,略过
                    DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) as DynamicObjectCollection;
                    if (linkRows.Count > 0)
                    {
                        continue;
                    }
                    DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType);
                    linkRow["STableName"] = srcTableNumber;
                    this.FillLinkRow(srcRow, entryRow, linkRow);
                    linkRows.Add(linkRow);
                    allNewLinkRows.Add(linkRow);
                }
            }
            // 为新建的源单关联信息,设置内码
            IDBService dbService = ServiceHelper.GetService <IDBService>();

            dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
        }
Exemplo n.º 13
0
 public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
 {
     base.BeforeExecuteOperationTransaction(e);
 }