0
This commit is contained in:
parent
3a2c12479e
commit
7789d7daaa
@ -446,6 +446,7 @@
|
|||||||
</Target>
|
</Target>
|
||||||
<Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
|
<Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>copy $(TargetPath) "D:\kingdee\K3Cloud\WebSite\Bin\$(TargetFileName)"</PostBuildEvent>
|
<PostBuildEvent>
|
||||||
|
</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@ -28,13 +28,12 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
|
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
|
||||||
{
|
{
|
||||||
base.BeforeExecuteOperationTransaction(e);
|
base.BeforeExecuteOperationTransaction(e);
|
||||||
// 销售订单服务
|
|
||||||
var saleOrderService = new SaleOrderService(this.Context);
|
|
||||||
foreach (var bill in e.SelectedRows)
|
foreach (var bill in e.SelectedRows)
|
||||||
{
|
{
|
||||||
|
|
||||||
var org = bill["SALEORGID"] as DynamicObject;
|
var org = bill["SALEORGID"] as DynamicObject;
|
||||||
var orgId = org["Id"].ToString(); // 销售订单
|
var orgId = org["Id"].ToString(); // 销售组织
|
||||||
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
||||||
// 根据合同号分组
|
// 根据合同号分组
|
||||||
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
||||||
@ -42,51 +41,92 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
{
|
{
|
||||||
// 纸质合同号
|
// 纸质合同号
|
||||||
var contractNo = group.Key;
|
var contractNo = group.Key;
|
||||||
// 发票单体价税合计原币
|
|
||||||
var SumALLAMOUNTFOR = group.Sum(n => Convert.ToDecimal(n["ALLAMOUNTFOR"]));
|
|
||||||
|
|
||||||
|
// 销售订单服务
|
||||||
|
var saleOrderService = new SaleOrderService(this.Context);
|
||||||
// TODO 根据组织和纸质合同号查找销售订单
|
// TODO 根据组织和纸质合同号查找销售订单
|
||||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||||
if (saleOrderList.Count == 0)
|
if (saleOrderList.Count == 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
|
||||||
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
|
||||||
var saleOrder = saleOrderList[0];
|
var saleOrder = saleOrderList[0];
|
||||||
// 销售订单价税合计(原币)
|
// 源纸质合同号
|
||||||
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
var srcContractNo = saleOrder["F_SOURPAPERCONTRACT"].ToString();
|
||||||
// 销售订单累计开票金额(原币)
|
// 校验源单是否超额
|
||||||
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
|
var srcVerifResult = ExcessVerification(orgId, srcContractNo, 0);
|
||||||
// 销售订单退货金额(原币)
|
if (srcVerifResult != null)
|
||||||
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo);
|
|
||||||
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
|
||||||
// 销售订单退货金额(原币)
|
|
||||||
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
|
||||||
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
|
||||||
if (saleOrderAmount - saleOrderReturnAmount < saleOrderINVOICEAMOUNT + SumALLAMOUNTFOR)
|
|
||||||
{
|
{
|
||||||
//有错误信息
|
//有错误信息
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
IOperationResult operationResult = new OperationResult();
|
IOperationResult operationResult = new OperationResult();
|
||||||
operationResult.OperateResult.Add(new OperateResult()
|
operationResult.OperateResult.Add(srcVerifResult);
|
||||||
{
|
this.OperationResult.MergeResult(operationResult);
|
||||||
PKValue = "1",
|
}
|
||||||
Name = "检查开票金额是否超额",
|
// 发票单体价税合计原币
|
||||||
MessageType = MessageType.FatalError,
|
var SumALLAMOUNTFOR = group.Sum(n => Convert.ToDecimal(n["ALLAMOUNTFOR"]));
|
||||||
Message = string.Format($@" 销售纸质合同号:'{contractNo}',
|
// TODO 校验是否超额
|
||||||
|
var verifResult = ExcessVerification(orgId, contractNo, SumALLAMOUNTFOR);
|
||||||
|
if (verifResult != null)
|
||||||
|
{
|
||||||
|
//有错误信息
|
||||||
|
e.Cancel = true;
|
||||||
|
IOperationResult operationResult = new OperationResult();
|
||||||
|
operationResult.OperateResult.Add(verifResult);
|
||||||
|
this.OperationResult.MergeResult(operationResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 超额校验,如果校验不通过会返回OperateResult实例,通过返回null
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="orgId">销售组织</param>
|
||||||
|
/// <param name="contractNo">合同号</param>
|
||||||
|
/// <param name="amount">开票金额</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private OperateResult ExcessVerification(string orgId, string contractNo, decimal amount)
|
||||||
|
{
|
||||||
|
// 销售订单服务
|
||||||
|
var saleOrderService = new SaleOrderService(this.Context);
|
||||||
|
// TODO 根据组织和纸质合同号查找销售订单
|
||||||
|
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||||
|
if (saleOrderList.Count == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
||||||
|
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
||||||
|
var saleOrder = saleOrderList[0];
|
||||||
|
// 销售订单价税合计(原币)
|
||||||
|
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
||||||
|
// 销售订单累计开票金额(原币)
|
||||||
|
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
|
||||||
|
// 销售订单退货金额(原币)
|
||||||
|
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo);
|
||||||
|
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
||||||
|
// 销售订单退货金额(原币)
|
||||||
|
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
||||||
|
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
||||||
|
if (saleOrderAmount - saleOrderReturnAmount < saleOrderINVOICEAMOUNT + amount)
|
||||||
|
{
|
||||||
|
return new OperateResult()
|
||||||
|
{
|
||||||
|
PKValue = "1",
|
||||||
|
Name = "检查开票金额是否超额",
|
||||||
|
MessageType = MessageType.FatalError,
|
||||||
|
Message = string.Format($@" 销售纸质合同号:'{contractNo}',
|
||||||
销售订单:'{saleOrderNoString}' , 开票超额。
|
销售订单:'{saleOrderNoString}' , 开票超额。
|
||||||
不满足条件:整单可开票金额 >= 累计开票金额 + 本次开票金额。
|
不满足条件:整单可开票金额 >= 累计开票金额 + 本次开票金额。
|
||||||
整单可开票金额:{(saleOrderAmount - saleOrderReturnAmountK3Cloud - saleOrderReturnAmountK3).ToString("0.00")},
|
整单可开票金额:{(saleOrderAmount - saleOrderReturnAmountK3Cloud - saleOrderReturnAmountK3).ToString("0.00")},
|
||||||
累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},
|
累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},
|
||||||
本次开票金额:{SumALLAMOUNTFOR.ToString("0.00")}"),
|
本次开票金额:{amount.ToString("0.00")}"),
|
||||||
SuccessStatus = false
|
SuccessStatus = false
|
||||||
});
|
};
|
||||||
this.OperationResult.MergeResult(operationResult);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user