Compare commits
12 Commits
0212355b60
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f3d5f50f1 | ||
|
|
c33b6fa817 | ||
| e6cad1ce9d | |||
| 2bf48230f3 | |||
| e748b0eef5 | |||
| 0dbacffcf3 | |||
| 9bb3fb4696 | |||
| 3237265dfd | |||
| 5881d9e9c7 | |||
| 0f875c3f5b | |||
| 1d53dd3b1e | |||
| 097a0080da |
@@ -25,6 +25,7 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOM
|
|||||||
var Billobj = Row.DataEntity;
|
var Billobj = Row.DataEntity;
|
||||||
//获取生产用料清单的组织
|
//获取生产用料清单的组织
|
||||||
var PPBOMFPrdOrgFname = SqlManage.SqlManage.GetPRD_PPBOMFWorkshopID(this.Context, Convert.ToString(Billobj["ID"]));
|
var PPBOMFPrdOrgFname = SqlManage.SqlManage.GetPRD_PPBOMFWorkshopID(this.Context, Convert.ToString(Billobj["ID"]));
|
||||||
|
|
||||||
if (PPBOMFPrdOrgFname[0]["OEGFNAME"].ToString() == "珠海派诺")
|
if (PPBOMFPrdOrgFname[0]["OEGFNAME"].ToString() == "珠海派诺")
|
||||||
{
|
{
|
||||||
//获取生产用料清单的生产车间
|
//获取生产用料清单的生产车间
|
||||||
@@ -36,7 +37,7 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOM
|
|||||||
var PPBOMFStockFNameS = SqlManage.SqlManage.GetPRD_PPBOMFStockID(this.Context, Convert.ToString(PPBOMFWorkshopFname[0]["FID"]));
|
var PPBOMFStockFNameS = SqlManage.SqlManage.GetPRD_PPBOMFStockID(this.Context, Convert.ToString(PPBOMFWorkshopFname[0]["FID"]));
|
||||||
foreach (var PPBOMFStockFName in PPBOMFStockFNameS)
|
foreach (var PPBOMFStockFName in PPBOMFStockFNameS)
|
||||||
{
|
{
|
||||||
if (PPBOMFStockFName["FNAME"].ToString() == "半成品仓")
|
if (PPBOMFStockFName["FNAME"].ToString() == "半成品仓" || PPBOMFStockFName["FNAME"].ToString() == "成品仓" || PPBOMFStockFName["FNAME"].ToString() == "组装测试包装车间仓库")
|
||||||
{
|
{
|
||||||
SqlManage.SqlManage.UpdatePRD_PPBOMFIsKeyComponent(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
SqlManage.SqlManage.UpdatePRD_PPBOMFIsKeyComponent(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
||||||
}
|
}
|
||||||
@@ -46,14 +47,18 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOM
|
|||||||
}
|
}
|
||||||
if (PPBOMFStockFName["FNAME"].ToString() == "包装结构件仓" || PPBOMFStockFName["FNAME"].ToString() == "装配结构件仓")
|
if (PPBOMFStockFName["FNAME"].ToString() == "包装结构件仓" || PPBOMFStockFName["FNAME"].ToString() == "装配结构件仓")
|
||||||
{
|
{
|
||||||
SqlManage.SqlManage.UpdatePRD_PPBOMFIssueTypeAndFBackFlushType(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]), Convert.ToString(PPBOMFWorkshopFname[0]["FPrdOrgId"]));
|
//SqlManage.SqlManage.UpdatePRD_PPBOMFIssueTypeAndFBackFlushType(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]), Convert.ToString(PPBOMFWorkshopFname[0]["FPrdOrgId"]));
|
||||||
SqlManage.SqlManage.UpdateFSRCTRANSSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
//SqlManage.SqlManage.UpdateFSRCTRANSSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
||||||
SqlManage.SqlManage.UpdateFSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
SqlManage.SqlManage.UpdateFSTOCKID(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
||||||
}
|
}
|
||||||
|
if (PPBOMFStockFName["FNAME"].ToString() == "装配结构件仓") {
|
||||||
|
//针对装配结构件仓:E.02 / E.07.00 / E.12开头物料发料方式设置为不发料,其他物料全部设置为直接发料
|
||||||
|
SqlManage.SqlManage.UpdateFSTOCKID_1(this.Context, Convert.ToString(PPBOMFStockFName["FENTRYID"]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//当物料为M开头,发料方式设置为调拨倒冲,倒冲时机设置为入库倒冲,拨出组织设置为珠海派诺,拨出组织为空,
|
//当物料为M开头,发料方式设置为调拨倒冲,倒冲时机设置为入库倒冲,拨出组织设置为珠海派诺,拨出组织为空,
|
||||||
//仓库设置为 : 68
|
//仓库设置为 : 68
|
||||||
SqlManage.SqlManage.UpdatePRD_PPBOMLIkeM(this.Context, Convert.ToString(Billobj["Id"]));
|
//SqlManage.SqlManage.UpdatePRD_PPBOMLIkeM(this.Context, Convert.ToString(Billobj["Id"]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +72,10 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOM
|
|||||||
SqlManage.SqlManage.UpdatePRD_PPBOMFIDFIsKeyComponent(this.Context, PPBOMFPrdOrgFname[0]["FID"].ToString());
|
SqlManage.SqlManage.UpdatePRD_PPBOMFIDFIsKeyComponent(this.Context, PPBOMFPrdOrgFname[0]["FID"].ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//设置物料编码为E.01.00.00052 编码设置发料方式为不发料
|
||||||
|
SqlManage.SqlManage.UpdateWLE(this.Context, Convert.ToString(Billobj["ID"]));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,9 +94,11 @@ namespace GZ_LTHPilot_ORDER.PRD_PPBOMCHANGE
|
|||||||
变更类型为变更后,将分子赋值为0*/
|
变更类型为变更后,将分子赋值为0*/
|
||||||
if (Convert.ToString(entityObj["ChangeType"]) == "3")
|
if (Convert.ToString(entityObj["ChangeType"]) == "3")
|
||||||
{
|
{
|
||||||
|
//this.View.ShowMessage("12345");
|
||||||
//变更类型为变更后,分子赋值为0
|
//变更类型为变更后,分子赋值为0
|
||||||
this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1);
|
this.View.Model.SetValue("FNumerator", 0, Convert.ToInt32(entityObj["Seq"]) - 1);
|
||||||
}
|
this.View.Model.SetValue("FIssueType", 7, Convert.ToInt32(entityObj["Seq"]) - 1);
|
||||||
|
}
|
||||||
/*变更类型为新增,将物料编码替换为动态窗口选择的物料FID*/
|
/*变更类型为新增,将物料编码替换为动态窗口选择的物料FID*/
|
||||||
if (Convert.ToString(entityObj["ChangeType"]) == "1")
|
if (Convert.ToString(entityObj["ChangeType"]) == "1")
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
@@ -57,12 +57,28 @@ namespace GZ_LTHPilot_ORDER.SqlManage
|
|||||||
//返回对象
|
//返回对象
|
||||||
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//生产用料清单明细物料编码为E.01.00.00052 编码设置发料方式为不发料
|
||||||
|
public static void UpdateWLE(Context ctx, string FENTRYID)
|
||||||
|
{
|
||||||
|
string sql = string.Format(@"/*dialect*/
|
||||||
|
UPDATE B
|
||||||
|
SET B.FIssueType = '1'
|
||||||
|
FROM T_PRD_PPBOMENTRY A
|
||||||
|
INNER JOIN T_BD_MATERIAL C ON A.FMATERIALID = C.FMATERIALID AND C.FNUMBER = 'E.01.00.00052'
|
||||||
|
INNER JOIN T_PRD_PPBOMENTRY_C B ON A.FID = B.FID
|
||||||
|
WHERE A.FID = '{0}'
|
||||||
|
", FENTRYID);
|
||||||
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//生产用料清单明细为半成品仓,更改是否关键件字段
|
//生产用料清单明细为半成品仓,更改是否关键件字段
|
||||||
public static void UpdatePRD_PPBOMFIsKeyComponent(Context ctx, string FENTRYID)
|
public static void UpdatePRD_PPBOMFIsKeyComponent(Context ctx, string FENTRYID)
|
||||||
{
|
{
|
||||||
string sql = string.Format(@"/*dialect*/
|
string sql = string.Format(@"/*dialect*/
|
||||||
update T_PRD_PPBOMENTRY_C
|
update T_PRD_PPBOMENTRY_C
|
||||||
SET FIsKeyComponent = '1'
|
SET FIssueType = '1'
|
||||||
WHERE FENTRYID = '{0}'
|
WHERE FENTRYID = '{0}'
|
||||||
", FENTRYID);
|
", FENTRYID);
|
||||||
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
@@ -97,23 +113,38 @@ namespace GZ_LTHPilot_ORDER.SqlManage
|
|||||||
", FENTRYID);
|
", FENTRYID);
|
||||||
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
}
|
}
|
||||||
//生产用料清单明细为包装结构件仓和装配结构件仓,更改完拔出仓库为仓库,修改仓库为仓库编码为68的
|
//生产用料清单明细为包装结构件仓和装配结构件仓,发料方式更改为直接领料
|
||||||
public static void UpdateFSTOCKID(Context ctx, string FENTRYID)
|
public static void UpdateFSTOCKID(Context ctx, string FENTRYID)
|
||||||
{
|
{
|
||||||
string sql = string.Format(@"/*dialect*/
|
string sql = string.Format(@"/*dialect*/
|
||||||
update T_PRD_PPBOMENTRY_C
|
update T_PRD_PPBOMENTRY_C
|
||||||
SET FSTOCKID = '1442951'
|
SET FIssueType = '1'
|
||||||
WHERE FENTRYID = '{0}'
|
WHERE FENTRYID = '{0}'
|
||||||
", FENTRYID);
|
", FENTRYID);
|
||||||
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
}
|
}
|
||||||
|
public static void UpdateFSTOCKID_1(Context ctx, string FENTRYID)
|
||||||
|
{
|
||||||
|
string sql = string.Format(@"/*dialect*/
|
||||||
|
UPDATE C
|
||||||
|
SET C.FIssueType = '7'
|
||||||
|
FROM T_PRD_PPBOMENTRY A
|
||||||
|
INNER JOIN T_BD_MATERIAL B ON A.FMATERIALID = B.FMATERIALID
|
||||||
|
INNER JOIN T_PRD_PPBOMENTRY_C C ON A.FENTRYID = C.FENTRYID
|
||||||
|
WHERE C.FENTRYID = '{0}'
|
||||||
|
AND (B.FNUMBER LIKE 'E.02%' OR B.FNUMBER LIKE 'E.07.00%' OR B.FNUMBER LIKE 'E.12%')
|
||||||
|
", FENTRYID);
|
||||||
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//生产用料清单生产组织为珠海派诺,生产车间为:焊接车间、贴片车间、储能车间;生产车间,更改是否关键件字段,过滤条件为FID
|
//生产用料清单生产组织为珠海派诺,生产车间为:焊接车间、贴片车间、储能车间;生产车间,更改是否关键件字段,过滤条件为FID
|
||||||
public static void UpdatePRD_PPBOMFIDFIsKeyComponent(Context ctx, string FID)
|
public static void UpdatePRD_PPBOMFIDFIsKeyComponent(Context ctx, string FID)
|
||||||
{
|
{
|
||||||
string sql = string.Format(@"/*dialect*/
|
string sql = string.Format(@"/*dialect*/
|
||||||
update T_PRD_PPBOMENTRY_C
|
update T_PRD_PPBOMENTRY_C
|
||||||
SET FIsKeyComponent = '1'
|
SET FIssueType = '1'
|
||||||
WHERE FID = '{0}'
|
WHERE FID = '{0}'
|
||||||
", FID);
|
", FID);
|
||||||
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
@@ -152,7 +183,7 @@ namespace GZ_LTHPilot_ORDER.SqlManage
|
|||||||
{
|
{
|
||||||
string sql = string.Format(@"/*dialect*/
|
string sql = string.Format(@"/*dialect*/
|
||||||
update T_SUB_PPBOMENTRY_C
|
update T_SUB_PPBOMENTRY_C
|
||||||
SET FIsKeyComponent = '1'
|
SET FIssueType = '1'
|
||||||
WHERE FID = '{0}'
|
WHERE FID = '{0}'
|
||||||
", FID);
|
", FID);
|
||||||
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
|
||||||
|
|||||||
@@ -330,5 +330,42 @@ WHERE
|
|||||||
var sql = string.Format(sqlTemp, orgId, contractNo, k3retrunAmount, retrunAmount, orderAmount);
|
var sql = string.Format(sqlTemp, orgId, contractNo, k3retrunAmount, retrunAmount, orderAmount);
|
||||||
return DBServiceHelper.Execute(ctx, sql);
|
return DBServiceHelper.Execute(ctx, sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取已提交发票金额
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="orgId"></param>
|
||||||
|
/// <param name="contractNo"></param>
|
||||||
|
/// <param name="billIds"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal decimal GetSubmitedAmount(string orgId, string contractNo, List<string> billIds)
|
||||||
|
{
|
||||||
|
var billIdFilter = string.Empty;
|
||||||
|
if (billIds != null && billIds.Count > 0)
|
||||||
|
{
|
||||||
|
var billIdString = string.Join(",", billIds.Select(n => "'" + n + "'"));
|
||||||
|
billIdFilter = $@" AND t1.FID NOT IN ({billIdString}) ";
|
||||||
|
}
|
||||||
|
var sqlTemp = $@"/*dialect*/SELECT
|
||||||
|
ISNULL (SUM(t1e.FALLAMOUNTFOR), 0) AS SubmitAmount
|
||||||
|
FROM
|
||||||
|
T_IV_SALESIC t1
|
||||||
|
LEFT JOIN T_IV_SALESICENTRY t1e ON t1.FID = t1e.FID
|
||||||
|
LEFT JOIN T_IV_SALESICENTRY_O t1e_O ON t1e.FENTRYID = t1e_O.FENTRYID
|
||||||
|
WHERE
|
||||||
|
1 = 1
|
||||||
|
AND t1.FDOCUMENTSTATUS = 'B'
|
||||||
|
AND t1e.F_CONTRACTNO = '{contractNo}'
|
||||||
|
AND t1.FSALEORGID = '{orgId}'
|
||||||
|
{billIdFilter}
|
||||||
|
";
|
||||||
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
||||||
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
||||||
|
if (result.Count == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Convert.ToDecimal(result[0]["SubmitAmount"]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using Kingdee.BOS.Util;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Diagnostics.Contracts;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -24,45 +25,82 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
e.FieldKeys.Add("FSALEORGID");
|
e.FieldKeys.Add("FSALEORGID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class SALESIC
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 组织Id
|
||||||
|
/// </summary>
|
||||||
|
public string OrgId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 纸质合同号
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 价税合计原币
|
||||||
|
/// </summary>
|
||||||
|
public decimal AllAmountFor { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单据Id
|
||||||
|
/// </summary>
|
||||||
|
public string BillId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
|
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
|
||||||
{
|
{
|
||||||
base.BeforeExecuteOperationTransaction(e);
|
base.BeforeExecuteOperationTransaction(e);
|
||||||
|
var entryListUnion = new List<SALESIC>();
|
||||||
foreach (var bill in e.SelectedRows)
|
foreach (var bill in e.SelectedRows)
|
||||||
{
|
{
|
||||||
|
var billId = bill["Id"].ToString();
|
||||||
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());
|
foreach (var item in entryList)
|
||||||
foreach (var group in grouped)
|
|
||||||
{
|
{
|
||||||
// 纸质合同号
|
entryListUnion.Add(new SALESIC()
|
||||||
var contractNo = group.Key;
|
|
||||||
// 校验原单是否超额
|
|
||||||
var srcVerifResult = SrcExcessVerification(orgId, contractNo);
|
|
||||||
if (srcVerifResult != null)
|
|
||||||
{
|
{
|
||||||
//有错误信息
|
BillId = billId,
|
||||||
e.Cancel = true;
|
OrgId = orgId,
|
||||||
IOperationResult operationResult = new OperationResult();
|
ContractNo = item["F_contractno"].ToString(),
|
||||||
operationResult.OperateResult.Add(srcVerifResult);
|
AllAmountFor = Convert.ToDecimal(item["ALLAMOUNTFOR"])
|
||||||
this.OperationResult.MergeResult(operationResult);
|
});
|
||||||
}
|
}
|
||||||
// 发票单体价税合计原币
|
}
|
||||||
var SumALLAMOUNTFOR = group.Sum(n => Convert.ToDecimal(n["ALLAMOUNTFOR"]));
|
var entryGrouped = entryListUnion.GroupBy(n => new
|
||||||
// TODO 校验是否超额
|
{
|
||||||
var verifResult = ExcessVerification(orgId, contractNo, SumALLAMOUNTFOR);
|
n.ContractNo,
|
||||||
if (verifResult != null)
|
n.OrgId
|
||||||
{
|
});
|
||||||
//有错误信息
|
foreach (var item in entryGrouped)
|
||||||
e.Cancel = true;
|
{
|
||||||
IOperationResult operationResult = new OperationResult();
|
// 纸质合同号
|
||||||
operationResult.OperateResult.Add(verifResult);
|
var contractNo = item.Key.ContractNo;
|
||||||
this.OperationResult.MergeResult(operationResult);
|
var orgId = item.Key.OrgId;
|
||||||
}
|
// 校验原单是否超额
|
||||||
|
var srcVerifResult = SrcExcessVerification(orgId, contractNo);
|
||||||
|
if (srcVerifResult != null)
|
||||||
|
{
|
||||||
|
//有错误信息
|
||||||
|
e.Cancel = true;
|
||||||
|
IOperationResult operationResult = new OperationResult();
|
||||||
|
operationResult.OperateResult.Add(srcVerifResult);
|
||||||
|
this.OperationResult.MergeResult(operationResult);
|
||||||
|
}
|
||||||
|
// 发票单体价税合计原币
|
||||||
|
var SumALLAMOUNTFOR = item.Sum(n => n.AllAmountFor);
|
||||||
|
var billIds = item.Select(n => n.BillId).ToList();
|
||||||
|
// TODO 校验是否超额
|
||||||
|
var verifResult = ExcessVerification(orgId, contractNo, SumALLAMOUNTFOR, billIds);
|
||||||
|
if (verifResult != null)
|
||||||
|
{
|
||||||
|
//有错误信息
|
||||||
|
e.Cancel = true;
|
||||||
|
IOperationResult operationResult = new OperationResult();
|
||||||
|
operationResult.OperateResult.Add(verifResult);
|
||||||
|
this.OperationResult.MergeResult(operationResult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,7 +131,7 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// 校验源单是否超额
|
// 校验源单是否超额
|
||||||
var srcVerifResult = ExcessVerification(orgId, srcContractNo, 0);
|
var srcVerifResult = ExcessVerification(orgId, srcContractNo, 0, null);
|
||||||
if (srcVerifResult != null)
|
if (srcVerifResult != null)
|
||||||
{
|
{
|
||||||
return srcVerifResult;
|
return srcVerifResult;
|
||||||
@@ -109,8 +147,9 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
/// <param name="orgId">销售组织</param>
|
/// <param name="orgId">销售组织</param>
|
||||||
/// <param name="contractNo">合同号</param>
|
/// <param name="contractNo">合同号</param>
|
||||||
/// <param name="amount">开票金额</param>
|
/// <param name="amount">开票金额</param>
|
||||||
|
/// <param name="billIds">本次操作单据ID</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private OperateResult ExcessVerification(string orgId, string contractNo, decimal amount)
|
private OperateResult ExcessVerification(string orgId, string contractNo, decimal amount, List<string> billIds)
|
||||||
{
|
{
|
||||||
// 销售订单服务
|
// 销售订单服务
|
||||||
var saleOrderService = new SaleOrderService(this.Context);
|
var saleOrderService = new SaleOrderService(this.Context);
|
||||||
@@ -123,6 +162,8 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
||||||
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
||||||
var saleOrder = saleOrderList[0];
|
var saleOrder = saleOrderList[0];
|
||||||
|
// 已提交发票金额(原币)
|
||||||
|
var submitedAmount = saleOrderService.GetSubmitedAmount(orgId, contractNo, billIds);
|
||||||
// 销售订单价税合计(原币)
|
// 销售订单价税合计(原币)
|
||||||
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
||||||
// 销售订单累计开票金额(原币)
|
// 销售订单累计开票金额(原币)
|
||||||
@@ -132,8 +173,8 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
||||||
// 销售订单退货金额(原币)
|
// 销售订单退货金额(原币)
|
||||||
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
||||||
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
// 校验销售订单累计开票金额 + 本次开票金额 + 已提交发票金额 <= 销售订单价税合计
|
||||||
if (saleOrderAmount - saleOrderReturnAmount < saleOrderINVOICEAMOUNT + amount)
|
if ((saleOrderAmount - saleOrderReturnAmount < saleOrderINVOICEAMOUNT + amount + submitedAmount) && amount >= 0)
|
||||||
{
|
{
|
||||||
return new OperateResult()
|
return new OperateResult()
|
||||||
{
|
{
|
||||||
@@ -142,10 +183,11 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
MessageType = MessageType.FatalError,
|
MessageType = MessageType.FatalError,
|
||||||
Message = string.Format($@" 销售纸质合同号:'{contractNo}',
|
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")},
|
||||||
本次开票金额:{amount.ToString("0.00")}"),
|
本次开票金额:{amount.ToString("0.00")},
|
||||||
|
已提交金额:{submitedAmount.ToString("0.00")}"),
|
||||||
SuccessStatus = false
|
SuccessStatus = false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user