修改销售订单保存时提示F_CXSFBG列存在的问题,
新增销售订单保存时自动带出历史单价
This commit is contained in:
parent
3078bcdd0b
commit
65d5bde9f6
@ -247,6 +247,7 @@
|
||||
<Compile Include="Sal_OutStock\AbstractOperationServicePlugIn.cs" />
|
||||
<Compile Include="Sal_OutStock\AnAuditFLogisticsBillNo.cs" />
|
||||
<Compile Include="SAL_RETURNNOTICE\AuditPushPLM.cs" />
|
||||
<Compile Include="Services\SaleOrderService.cs" />
|
||||
<Compile Include="SQL\SqlManage.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using GZ_KD_Parino.Common;
|
||||
using GZ_KD_Parino.Services;
|
||||
using GZ_KD_Parino.SQL;
|
||||
using Kingdee.BOS.App;
|
||||
using Kingdee.BOS.App.Data;
|
||||
@ -14,8 +15,7 @@ using System.Data;
|
||||
|
||||
namespace GZ_KD_Parino.Sal_Order
|
||||
{
|
||||
[HotUpdate]
|
||||
[Description("销售订单--更新纸质合同号")]
|
||||
[Description("销售订单--更新纸质合同号"), HotUpdate]
|
||||
|
||||
public class Save : AbstractOperationServicePlugIn
|
||||
{
|
||||
@ -40,7 +40,11 @@ namespace GZ_KD_Parino.Sal_Order
|
||||
e.FieldKeys.Add("FBILLTYPEID");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 保存后事件,保存事务结束后
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
||||
{
|
||||
base.AfterExecuteOperationTransaction(e);
|
||||
@ -103,10 +107,12 @@ namespace GZ_KD_Parino.Sal_Order
|
||||
throw new Exception($"商机名称:{F_BON["Name"].ToString()},不存在对应的工程项目。");
|
||||
}
|
||||
fid = sqlDS1[0]["FID"].ToString();
|
||||
string F_contractnumberSQL1 = string.Format(@"UPDATE T_BAS_PREBDONE_L SET FNAME = '{0}',F_CXSFBG = 1 WHERE fid in (SELECT FID FROM T_BAS_PREBDONE WHERE FNUMBER = '{1}' AND FUSEORGID = '{2}' )", Convert.ToString(F_BON["Name"]), FlexNumber, SalZZFid);
|
||||
|
||||
// 更新项目名称
|
||||
string F_contractnumberSQL1 = string.Format(@"UPDATE T_BAS_PREBDONE_L SET FNAME = '{0}' WHERE fid in (SELECT FID FROM T_BAS_PREBDONE WHERE FNUMBER = '{1}' AND FUSEORGID = '{2}' )", Convert.ToString(F_BON["Name"]), FlexNumber, SalZZFid);
|
||||
DBUtils.ExecuteDynamicObject(ctx, F_contractnumberSQL1.ToString(), null, null, CommandType.Text, null);
|
||||
|
||||
// 更新项目状态
|
||||
var F_contractnumberSQL2 = string.Format(@"UPDATE T_BAS_PREBDONE SET F_CXSFBG = 1 WHERE FNUMBER = '{0}' AND FUSEORGID = '{1}'", FlexNumber, SalZZFid);
|
||||
DBUtils.ExecuteDynamicObject(ctx, F_contractnumberSQL2.ToString(), null, null, CommandType.Text, null);
|
||||
|
||||
//获取元数据服务
|
||||
IMetaDataService metaDataService = ServiceHelper.GetService<IMetaDataService>();
|
||||
@ -151,5 +157,52 @@ namespace GZ_KD_Parino.Sal_Order
|
||||
SqlManage.UpdateItemData(this.Context, Convert.ToString(Billobj["Id"]), FlexNumber);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始保存插件
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public override void BeforeDoSaveExecute(BeforeDoSaveExecuteEventArgs e)
|
||||
{
|
||||
base.BeforeDoSaveExecute(e);
|
||||
foreach (var billObj in e.DataEntities)
|
||||
{
|
||||
var cust = billObj["CustId"] as DynamicObject;
|
||||
var saleOrg = billObj["SaleOrgId"] as DynamicObject;
|
||||
var F_BON = billObj["F_BON"] as DynamicObject;
|
||||
// 客户
|
||||
var custId = cust["Id"].ToString();
|
||||
// 销售组织
|
||||
var saleOrgId = saleOrg["Id"].ToString();
|
||||
// 商机项目
|
||||
var F_BONId = F_BON["Id"].ToString();
|
||||
var createDate = billObj["CreateDate"];
|
||||
var date = DateTime.Now;
|
||||
if (createDate != null)
|
||||
{
|
||||
date = Convert.ToDateTime(createDate);
|
||||
}
|
||||
var saleEntryList = billObj["SaleOrderEntry"] as DynamicObjectCollection;
|
||||
|
||||
var saleOrderService = new SaleOrderService(this.Context);
|
||||
|
||||
// TODO 销售订单,根据组织+客户+商机名称#+物料代码带出最近一次历史销售含税单价,取当前日期前,
|
||||
// 审核日期最大的销售订单含税单价,日期越大表示离当前日期越近
|
||||
foreach (var item in saleEntryList)
|
||||
{
|
||||
var material = item["MaterialId"] as DynamicObject;
|
||||
var materialId = material["Id"].ToString();
|
||||
var historyOrder = saleOrderService.GetHistoryOrder(saleOrgId, custId, F_BONId, materialId, date);
|
||||
if (historyOrder == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var historyUnitPrice = Convert.ToDecimal(historyOrder["FTAXPRICE"]);
|
||||
// 更新历史单价
|
||||
item["F_LSDJ"] = historyUnitPrice;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
57
GZ_KD_Parino/Services/SaleOrderService.cs
Normal file
57
GZ_KD_Parino/Services/SaleOrderService.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Orm.DataEntity;
|
||||
using Kingdee.BOS.ServiceHelper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GZ_KD_Parino.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 销售订单服务类
|
||||
/// </summary>
|
||||
public class SaleOrderService
|
||||
{
|
||||
private Context ctx;
|
||||
public SaleOrderService(Context ctx)
|
||||
{
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 销售订单获取历史单价
|
||||
/// 销售订单,根据组织+客户+商机名称#+物料代码带出最近一次历史销售含税单价,
|
||||
/// 取当前日期前,审核日期最大的销售订单含税单价,日期越大表示离当前日期越近
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public DynamicObject GetHistoryOrder(string orgId, string custId, string bonId, string materialId, DateTime createDate)
|
||||
{
|
||||
var sql = $@"/*dialect*/SELECT
|
||||
TOP 1 t1e_f.*
|
||||
FROM
|
||||
T_SAL_ORDER t1
|
||||
INNER JOIN T_SAL_ORDERENTRY t1e ON t1.FID = t1e.FID
|
||||
INNER JOIN T_SAL_ORDERENTRY_F t1e_f ON t1e.FENTRYID = t1e_f.FENTRYID
|
||||
WHERE
|
||||
1 = 1
|
||||
AND t1.FDOCUMENTSTATUS = 'C' -- 已审核
|
||||
AND t1.FCANCELSTATUS = 'A' -- 未作废
|
||||
AND t1.FAPPROVEDATE < '{createDate.ToString("yyyy-MM-dd HH:mm:ss")}'
|
||||
AND t1.FSALEORGID = '{orgId}'
|
||||
AND t1.FCUSTID = '{custId}'
|
||||
AND t1.F_BON = '{bonId}'
|
||||
AND t1e.FMATERIALID = '{materialId}'
|
||||
ORDER BY
|
||||
t1.FCREATEDATE DESC
|
||||
";
|
||||
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
|
||||
if (result.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return result[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user