修改销售订单保存时提示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\AbstractOperationServicePlugIn.cs" />
|
||||||
<Compile Include="Sal_OutStock\AnAuditFLogisticsBillNo.cs" />
|
<Compile Include="Sal_OutStock\AnAuditFLogisticsBillNo.cs" />
|
||||||
<Compile Include="SAL_RETURNNOTICE\AuditPushPLM.cs" />
|
<Compile Include="SAL_RETURNNOTICE\AuditPushPLM.cs" />
|
||||||
|
<Compile Include="Services\SaleOrderService.cs" />
|
||||||
<Compile Include="SQL\SqlManage.cs" />
|
<Compile Include="SQL\SqlManage.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using GZ_KD_Parino.Common;
|
using GZ_KD_Parino.Common;
|
||||||
|
using GZ_KD_Parino.Services;
|
||||||
using GZ_KD_Parino.SQL;
|
using GZ_KD_Parino.SQL;
|
||||||
using Kingdee.BOS.App;
|
using Kingdee.BOS.App;
|
||||||
using Kingdee.BOS.App.Data;
|
using Kingdee.BOS.App.Data;
|
||||||
@ -14,8 +15,7 @@ using System.Data;
|
|||||||
|
|
||||||
namespace GZ_KD_Parino.Sal_Order
|
namespace GZ_KD_Parino.Sal_Order
|
||||||
{
|
{
|
||||||
[HotUpdate]
|
[Description("销售订单--更新纸质合同号"), HotUpdate]
|
||||||
[Description("销售订单--更新纸质合同号")]
|
|
||||||
|
|
||||||
public class Save : AbstractOperationServicePlugIn
|
public class Save : AbstractOperationServicePlugIn
|
||||||
{
|
{
|
||||||
@ -40,7 +40,11 @@ namespace GZ_KD_Parino.Sal_Order
|
|||||||
e.FieldKeys.Add("FBILLTYPEID");
|
e.FieldKeys.Add("FBILLTYPEID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存后事件,保存事务结束后
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
/// <exception cref="Exception"></exception>
|
||||||
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
||||||
{
|
{
|
||||||
base.AfterExecuteOperationTransaction(e);
|
base.AfterExecuteOperationTransaction(e);
|
||||||
@ -103,10 +107,12 @@ namespace GZ_KD_Parino.Sal_Order
|
|||||||
throw new Exception($"商机名称:{F_BON["Name"].ToString()},不存在对应的工程项目。");
|
throw new Exception($"商机名称:{F_BON["Name"].ToString()},不存在对应的工程项目。");
|
||||||
}
|
}
|
||||||
fid = sqlDS1[0]["FID"].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);
|
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>();
|
IMetaDataService metaDataService = ServiceHelper.GetService<IMetaDataService>();
|
||||||
@ -151,5 +157,52 @@ namespace GZ_KD_Parino.Sal_Order
|
|||||||
SqlManage.UpdateItemData(this.Context, Convert.ToString(Billobj["Id"]), FlexNumber);
|
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