| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Admin.NET.Plugin.AiDOP.Supply;
- using Xunit;
- namespace Admin.NET.Plugin.AiDOP.Tests.S3.Supply;
- public class PurchaseRequestMigrationFlowTests
- {
- [Fact]
- public void MergeGeneratedRequests_WhenSameSupplierItemAndWeek_MergesQuantities()
- {
- var service = new PurchaseRequestMergeService();
- var requests = new List<PurchaseRequestMain>
- {
- CreateRequest(1, new DateTime(2026, 5, 11), requireGoods: 0, qty: 10),
- CreateRequest(2, new DateTime(2026, 5, 13), requireGoods: 0, qty: 15)
- };
- var result = service.MergeGeneratedRequests(requests);
- var merged = Assert.Single(result.Requests);
- Assert.Equal(2, result.OriginalCount);
- Assert.Equal(1, result.MergedCount);
- Assert.Equal(1, result.ReducedCount);
- Assert.Equal(25, merged.PrRqty);
- Assert.Equal(new DateTime(2026, 5, 11), merged.PrSsendDate);
- }
- [Fact]
- public void MergeGeneratedRequests_WhenRequireGoodsDiffers_DoesNotMerge()
- {
- var service = new PurchaseRequestMergeService();
- var requests = new List<PurchaseRequestMain>
- {
- CreateRequest(1, new DateTime(2026, 5, 11), requireGoods: 0, qty: 10),
- CreateRequest(2, new DateTime(2026, 5, 13), requireGoods: 1, qty: 15)
- };
- var result = service.MergeGeneratedRequests(requests);
- Assert.Equal(2, result.Requests.Count);
- Assert.Equal(0, result.ReducedCount);
- }
- [Fact]
- public void MergeGeneratedRequests_WhenDifferentWeek_DoesNotMerge()
- {
- var service = new PurchaseRequestMergeService();
- var requests = new List<PurchaseRequestMain>
- {
- CreateRequest(1, new DateTime(2026, 5, 17), requireGoods: 0, qty: 10),
- CreateRequest(2, new DateTime(2026, 5, 18), requireGoods: 0, qty: 15)
- };
- var result = service.MergeGeneratedRequests(requests);
- Assert.Equal(2, result.Requests.Count);
- Assert.Equal(0, result.ReducedCount);
- }
- [Fact]
- public void SelectPushCandidates_WhenNormalPrHasBillNo_ReturnsOnlySapQadCandidates()
- {
- var requests = new List<PurchaseRequestMain>
- {
- CreateRequest(1, new DateTime(2026, 5, 11), requireGoods: 0, qty: 10, billNo: "PR001"),
- CreateRequest(2, new DateTime(2026, 5, 11), requireGoods: 1, qty: 10, billNo: "PR002"),
- CreateRequest(3, new DateTime(2026, 5, 11), requireGoods: 0, qty: 10, billNo: null),
- CreateRequest(4, new DateTime(2026, 5, 11), requireGoods: 0, qty: 10, billNo: " ")
- };
- var candidates = PurchaseRequestExternalPushService.SelectPushCandidates(requests);
- var candidate = Assert.Single(candidates);
- Assert.Equal(1, candidate.Id);
- Assert.Equal("PR001", candidate.PrBillNo);
- }
- private static PurchaseRequestMain CreateRequest(long id, DateTime sendDate, int requireGoods, decimal qty, string? billNo = "PR")
- {
- return new PurchaseRequestMain
- {
- Id = id,
- TenantId = 1000,
- CompanyId = 10,
- FactoryId = 20,
- IcitemId = 30,
- PrPurchaseId = 40,
- SupplierType = "标准",
- IsRequireGoods = requireGoods,
- PrBillNo = billNo,
- PrRqty = qty,
- PrAqty = qty,
- PrSqty = qty,
- PrSsendDate = sendDate,
- PrSarriveDate = sendDate.AddDays(3),
- CreateTime = sendDate.AddHours(8)
- };
- }
- }
|