This commit is contained in:
PastSaid
2023-12-15 09:08:09 +08:00
parent a44ce28933
commit ea90726158
13 changed files with 262 additions and 234 deletions

View File

@@ -2,6 +2,7 @@
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
@@ -25,7 +26,7 @@ namespace UseGetFmaterialData
public override void BeforeSave(BeforeSaveEventArgs e)
{
base.BeforeSave(e);
this.View.ShowMessage("插件触发了保存前事件BeforeSave");
if (OrgIdCheck())
{
Entity details = null;
@@ -37,7 +38,7 @@ namespace UseGetFmaterialData
//直接调拨单 明细表
if (this.View.UserParameterKey.Equals("STK_TransferDirect"))
details = this.View.BusinessInfo.GetEntity("FBillEntry");
IOperationResult opResult = new OperationResult();
if (details != null)
{
var entrys = this.View.Model.GetEntityDataObject(details);
@@ -46,14 +47,35 @@ namespace UseGetFmaterialData
{
var tempValue2 = this.View.Model.GetValue("FDATE");
var dateValue = tempValue2.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue2.ToString();
foreach (var entry in entrys)
{
var rowIndex = this.View.Model.GetRowIndex(details, entry);
var tempValue = entry["MaterialId_Id"];
var rowValue = tempValue.IsNullOrEmptyOrWhiteSpace() ? string.Empty : tempValue.ToString();
UpdReferPriceAndExplain(dateValue, rowValue, rowIndex);
string errMsg = string.Empty;
UpdReferPriceAndExplain(dateValue, rowValue, rowIndex, ref errMsg);
if (!errMsg.IsNullOrEmpty())
{
var number = (entry["MaterialId"] as DynamicObject)["Number"];
opResult.OperateResult.Add(new OperateResult
{
Name = number.ToString(),
Message = errMsg,
SuccessStatus = false
});
}
}
TotalReferAmount(entrys, details);
if (opResult.OperateResult.Any())
{
e.Cancel = true;
this.View.ShowOperateResult(opResult.OperateResult);
}
}
}
}
@@ -95,6 +117,7 @@ namespace UseGetFmaterialData
try
{
this.View.Model.SetValue("F_GAT_Decimal1", total);
//参考金额汇总
this.View.Model.SetValue("FTotalReferAmount", total);
}
catch
@@ -102,6 +125,7 @@ namespace UseGetFmaterialData
try
{
this.View.Model.SetValue("FTotalReferAmount", total);
//参考金额汇总
this.View.Model.SetValue("F_GAT_Decimal1", total);
}
catch { }
@@ -131,12 +155,13 @@ namespace UseGetFmaterialData
/// <param name="date">表头日期</param>
/// <param name="materialId">子表物料id物料编码</param>
/// <param name="row"></param>
private void UpdReferPriceAndExplain(string date, string materialId, int row)
private void UpdReferPriceAndExplain(string date, string materialId, int row, ref string errMsg)
{
var isHasEmpty = false;
var returnFlag = false;
if (date.IsNullOrEmptyOrWhiteSpace())
returnFlag = true;
isHasEmpty = returnFlag = true;
if (!returnFlag && (materialId.IsNullOrEmptyOrWhiteSpace() || materialId.Equals("0")))
returnFlag = true;
@@ -175,6 +200,52 @@ namespace UseGetFmaterialData
//参考方向
this.View.Model.SetValue("FExplain", dataSet[0]["FNOTE"], row);
if (price == 0 || amount == 0)
{
errMsg = "物料没有找到参考单价与参考金额或数量为0";
return;
}
var cSql = $@"
SELECT top 1
A.FBILLNO,C.FTAXPRICE
FROM
T_STK_INSTOCK A
INNER JOIN T_STK_INSTOCKENTRY B ON A.FID =B.FID
INNER JOIN T_STK_INSTOCKENTRY_F C ON C.FENTRYID = B.FENTRYID
WHERE
A.FDOCUMENTSTATUS = 'C'
AND A.FCANCELSTATUS = 'A'
AND A.FSTOCKORGID = 101542
AND B.FMATERIALID = {materialId}
AND FDATE<= '{date}'
AND FAPPROVEDATE <= '{date}'
ORDER BY
FDATE DESC,FAPPROVEDATE DESC ";
var inDataSet = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{cSql}");
if (inDataSet.Any())
{
var taxPrice = inDataSet[0]["FTAXPRICE"].ToDecimalR();
if (taxPrice == 0)
{
errMsg = "物料没有找到采购入库单单价";
return;
}
var xAbs = Math.Abs((price - taxPrice) / taxPrice);
if (xAbs > 0.05M)
{
errMsg = "物料采购入库单价与参考单价相差值不能大于5%";
return;
}
}
else
{
errMsg = "物料没有找到采购入库单";
return;
}
}
else
{
@@ -186,8 +257,10 @@ namespace UseGetFmaterialData
//this.View.Model.SetValue("FReferAmountM", 0, row);
//参考方向
this.View.Model.SetValue("FExplain", "没有找到价格", row);
}
}
}
}
}

View File

@@ -7,6 +7,7 @@ using Kingdee.BOS.Core.Metadata.Util;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using static System.Net.WebRequestMethods;