新增K3退货金额、云星空退货金额、整单可开票金额
This commit is contained in:
@@ -19,6 +19,9 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
{
|
||||
base.OnPreparePropertys(e);
|
||||
e.FieldKeys.Add("F_PaperNumber");
|
||||
e.FieldKeys.Add("F_contractno");
|
||||
e.FieldKeys.Add("FALLAMOUNTFOR");
|
||||
e.FieldKeys.Add("FSALEORGID");
|
||||
}
|
||||
|
||||
|
||||
@@ -32,28 +35,34 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
foreach (var bill in e.DataEntitys)
|
||||
{
|
||||
var org = bill["SALEORGID"] as DynamicObject;
|
||||
var orgId = org["Id"].ToString(); // 销售订单
|
||||
var contractNo = bill["F_PaperNumber"].ToString(); // 纸质合同号
|
||||
var orgId = org["Id"].ToString(); // 销售组织
|
||||
|
||||
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
||||
// 根据合同号分组
|
||||
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
||||
|
||||
// 销售订单服务
|
||||
var saleOrderService = new SaleOrderService(this.Context);
|
||||
// TODO 根据组织和纸质合同号查找销售订单
|
||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||
if (saleOrderList.Count == 0)
|
||||
{
|
||||
//var errInfo = string.Format("纸质合同号:{0},没有找到对应的销售订单,请检查销售订单是否已审核,或者被作废", contractNo);
|
||||
//throw new Exception(errInfo);
|
||||
continue;
|
||||
}
|
||||
if (saleOrderList.Count > 1)
|
||||
{
|
||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
||||
throw new Exception(errInfo);
|
||||
}
|
||||
var saleOrder = saleOrderList[0];
|
||||
// 发票服务
|
||||
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
||||
// TODO 刷新销售订单单头的累计开票金额
|
||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||
foreach (var group in grouped)
|
||||
{
|
||||
// 纸质合同号
|
||||
var contractNo = group.Key;
|
||||
|
||||
// TODO 根据组织和纸质合同号查找销售订单
|
||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||
if (saleOrderList.Count == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (var saleOrder in saleOrderList)
|
||||
{
|
||||
|
||||
// TODO 刷新销售订单单头的累计开票金额
|
||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,23 +51,17 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (saleOrderList.Count > 1)
|
||||
{
|
||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
||||
throw new Exception(errInfo);
|
||||
}
|
||||
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
||||
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
||||
var saleOrder = saleOrderList[0];
|
||||
// 销售订单Id
|
||||
var saleOrderId = saleOrder["FID"].ToString();
|
||||
var saleOrderNo = saleOrder["FBILLNO"].ToString();
|
||||
// 销售订单价税合计(原币)
|
||||
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(saleOrderId);
|
||||
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
||||
// 销售订单累计开票金额(原币)
|
||||
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
|
||||
// 销售订单退货金额(原币)
|
||||
var rate = saleOrder["FEXCHANGERATE"].ToString();
|
||||
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(saleOrderNo);
|
||||
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(contractNo, rate);
|
||||
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo);
|
||||
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
||||
// 销售订单退货金额(原币)
|
||||
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
||||
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
||||
if (saleOrderAmount < saleOrderINVOICEAMOUNT + SumALLAMOUNTFOR - saleOrderReturnAmount)
|
||||
@@ -80,7 +74,12 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
PKValue = "1",
|
||||
Name = "检查开票金额是否超额",
|
||||
MessageType = MessageType.FatalError,
|
||||
Message = string.Format($@"销售订单:'{saleOrderNo}' , 纸质合同号:'{contractNo}', 开票超额。 不满足条件:销售订单价税合计 >= 累计开票金额 + 本次开票金额 - 退货金额。销售订单价税合计:{saleOrderAmount.ToString("0.00")}, 累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},本次开票金额:{SumALLAMOUNTFOR.ToString("0.00")},退货金额:{saleOrderReturnAmountK3Cloud.ToString("0.00")},K3退货金额:{saleOrderReturnAmountK3.ToString("0.00")}
|
||||
Message = string.Format($@" 销售纸质合同号:'{contractNo}',
|
||||
销售订单:'{saleOrderNoString}' , 开票超额。
|
||||
不满足条件:整单可开票金额 >= 累计开票金额 + 本次开票金额。
|
||||
整单可开票金额:{(saleOrderAmount - saleOrderReturnAmountK3Cloud - saleOrderReturnAmountK3).ToString("0.00")},
|
||||
累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},
|
||||
本次开票金额:{SumALLAMOUNTFOR.ToString("0.00")},
|
||||
|
||||
"),
|
||||
SuccessStatus = false
|
||||
|
||||
@@ -19,8 +19,12 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
{
|
||||
base.OnPreparePropertys(e);
|
||||
e.FieldKeys.Add("F_PaperNumber");
|
||||
e.FieldKeys.Add("F_contractno");
|
||||
e.FieldKeys.Add("FALLAMOUNTFOR");
|
||||
e.FieldKeys.Add("FSALEORGID");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 审核插件执行后插件、事务提交后事件
|
||||
/// </summary>
|
||||
@@ -31,27 +35,34 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
||||
foreach (var bill in e.DataEntitys)
|
||||
{
|
||||
var org = bill["SALEORGID"] as DynamicObject;
|
||||
var orgId = org["Id"].ToString(); // 销售订单
|
||||
var contractNo = bill["F_PaperNumber"].ToString(); // 纸质合同号
|
||||
var orgId = org["Id"].ToString(); // 销售组织
|
||||
|
||||
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
||||
// 根据合同号分组
|
||||
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
||||
|
||||
// 销售订单服务
|
||||
var saleOrderService = new SaleOrderService(this.Context);
|
||||
// TODO 根据组织和纸质合同号查找销售订单
|
||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||
if (saleOrderList.Count == 0)
|
||||
{
|
||||
|
||||
continue;
|
||||
}
|
||||
if (saleOrderList.Count > 1)
|
||||
{
|
||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
||||
throw new Exception(errInfo);
|
||||
}
|
||||
var saleOrder = saleOrderList[0];
|
||||
// 发票服务
|
||||
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
||||
// TODO 刷新销售订单单头的累计开票金额
|
||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||
foreach (var group in grouped)
|
||||
{
|
||||
// 纸质合同号
|
||||
var contractNo = group.Key;
|
||||
|
||||
// TODO 根据组织和纸质合同号查找销售订单
|
||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||
if (saleOrderList.Count == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (var saleOrder in saleOrderList)
|
||||
{
|
||||
|
||||
// TODO 刷新销售订单单头的累计开票金额
|
||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user