fix(ClientBlack): 支持删除未生效黑名单记录
- 未提交、新增已拒绝的黑名单记录可直接删除,不进入删除审批 - 已加入、删除已拒绝仍按原逻辑发起删除审批 - 新增审批中、删除审批中仍禁止删除 - 补充未生效状态可直接删除的状态机单测,45/45 通过
This commit is contained in:
@@ -41,6 +41,18 @@ namespace YLErp.Modules.ClientModule.Tests
|
|||||||
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanRequestRemoval(state));
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanRequestRemoval(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DataTestMethod]
|
||||||
|
[DataRow(client_black.未提交, true)]
|
||||||
|
[DataRow(client_black.新增已拒绝, true)]
|
||||||
|
[DataRow(client_black.新增审批中, false)]
|
||||||
|
[DataRow(client_black.已加入, false)]
|
||||||
|
[DataRow(client_black.删除审批中, false)]
|
||||||
|
[DataRow(client_black.删除已拒绝, false)]
|
||||||
|
public void CanDeleteDraft_OnlyNeverEffectiveStatesCanDeleteDirectly(string state, bool expected)
|
||||||
|
{
|
||||||
|
Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanDeleteDraft(state));
|
||||||
|
}
|
||||||
|
|
||||||
[DataTestMethod]
|
[DataTestMethod]
|
||||||
[DataRow(client_black.新增审批中, 1, true)]
|
[DataRow(client_black.新增审批中, 1, true)]
|
||||||
[DataRow(client_black.删除审批中, 1, true)]
|
[DataRow(client_black.删除审批中, 1, true)]
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ namespace YLErp.Modules.ClientModule
|
|||||||
return state == client_black.已加入 || state == client_black.删除已拒绝;
|
return state == client_black.已加入 || state == client_black.删除已拒绝;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool CanDeleteDraft(string state)
|
||||||
|
{
|
||||||
|
return state == client_black.未提交 || state == client_black.新增已拒绝;
|
||||||
|
}
|
||||||
|
|
||||||
public static ClientBlackRemovalResult GetRemovalResult(bool hasApprovalProcess)
|
public static ClientBlackRemovalResult GetRemovalResult(bool hasApprovalProcess)
|
||||||
{
|
{
|
||||||
return hasApprovalProcess
|
return hasApprovalProcess
|
||||||
|
|||||||
@@ -131,6 +131,13 @@ namespace YLErp.Modules.ClientModule
|
|||||||
var hasProcess = ProcessList().Any();
|
var hasProcess = ProcessList().Any();
|
||||||
foreach (var row in rows)
|
foreach (var row in rows)
|
||||||
{
|
{
|
||||||
|
if (ClientBlackApprovalPolicy.CanDeleteDraft(row.State))
|
||||||
|
{
|
||||||
|
DbContext.client_black.Remove(row);
|
||||||
|
ClientBlackCategoryLog(row.id, "已删除");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!ClientBlackApprovalPolicy.CanRequestRemoval(row.State))
|
if (!ClientBlackApprovalPolicy.CanRequestRemoval(row.State))
|
||||||
{
|
{
|
||||||
throw new ServiceException($"黑名单客户{row.Name}当前状态不允许移出");
|
throw new ServiceException($"黑名单客户{row.Name}当前状态不允许移出");
|
||||||
|
|||||||
Reference in New Issue
Block a user