using Gatedge.K3.Pilot.PlugIn.Services.DBService; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using Kingdee.K3.BD.NewCode.Core.Utils; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order { [HotUpdate, Description("销售订单_表单插件")] public class Bill : AbstractBillPlugIn { public override void DataChanged(DataChangedEventArgs e) { base.DataChanged(e); //物料 if (e.Field.Key.EqualsIgnoreCase("FMaterialId")) { this.Model.SetValue("F_AGREEPRICE", 0, e.Row); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", 0, e.Row); this.Model.SetValue("F_BigCustDiscRate", 0, e.Row); var materialId_Id = e.NewValue.Long2Int(); if (materialId_Id == 0) return; var custId_Id = this.View.Model.DataObject["CustId_Id"].Long2Int(); if (custId_Id == 0) return; var dal = new BDCustPriceDAL(this.Context); var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var resData = dal.GetMaterialPrice(materialId_Id, custId_Id, dateTime); if (resData != null && resData.Count > 0) { var data = resData[0]; // 协议价 var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, e.Row); // 大客户结算价 var F_BIGCUSTSETTLEPRICE = data["F_BIGCUSTSETTLEPRICE"].Convert(); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", F_BIGCUSTSETTLEPRICE, e.Row); //大客户折扣率 var F_BigCustDiscRate = data["F_BIGCUSTDISCRATE"].Convert(); this.Model.SetValue("F_BigCustDiscRate", F_BigCustDiscRate, e.Row); } } //客户 if (e.Field.Key.EqualsIgnoreCase("FCustID")) { var custId_Id = e.NewValue.Long2Int(); var dal = new BDCustPriceDAL(this.Context); var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var details = this.View.BusinessInfo.GetEntity("FSaleOrderEntry"); if (details != null) { var entrys = this.View.Model.GetEntityDataObject(details); foreach (var entry in entrys) { var rowIndex = this.View.Model.GetRowIndex(details, entry); var materialId_Id = entry["MaterialId_Id"].Long2Int(); this.Model.SetValue("F_AGREEPRICE", 0, rowIndex); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", 0, rowIndex); this.Model.SetValue("F_BigCustDiscRate", 0, rowIndex); var F_SettlementP = 0M; if (materialId_Id > 0 && custId_Id > 0) { var resData = dal.GetMaterialPrice(materialId_Id, custId_Id, dateTime); if (resData != null && resData.Count > 0) { var data = resData[0]; // 协议价 var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, rowIndex); // 大客户结算价 var F_BIGCUSTSETTLEPRICE = data["F_BIGCUSTSETTLEPRICE"].Convert(); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", F_BIGCUSTSETTLEPRICE, rowIndex); //大客户折扣率 var F_BigCustDiscRate = data["F_BIGCUSTDISCRATE"].Convert(); this.Model.SetValue("F_BigCustDiscRate", F_BigCustDiscRate, rowIndex); F_SettlementP = F_BIGCUSTSETTLEPRICE * (F_BigCustDiscRate == 0 ? 1 : (F_BigCustDiscRate / 100)); } } if (F_SettlementP != 0) { this.Model.SetValue("F_SettlementP", F_SettlementP, rowIndex); } else if(materialId_Id > 0) { var materialId = entry["MaterialId"] as DynamicObject; this.Model.SetValue("F_SettlementP", materialId["F_JSJ"].Convert(), rowIndex); } } } } } } }