diff --git a/CPRNIMS.Domain/Contracts/PO/IPurchaseOrder.cs b/CPRNIMS.Domain/Contracts/PO/IPurchaseOrder.cs index 1cfb4ef..ed4c275 100644 --- a/CPRNIMS.Domain/Contracts/PO/IPurchaseOrder.cs +++ b/CPRNIMS.Domain/Contracts/PO/IPurchaseOrder.cs @@ -41,7 +41,8 @@ namespace CPRNIMS.Domain.Contracts.PO Task> GetCreatedPO(PODto pODto); Task> GetPOItemDetail(PODto pODto); Task> GetMyCreatedPO(PODto pODto); - Task> GetIncoterms(PODto itemDto); + Task> GetIncoterms(PODto itemDto); + Task> GetIncotermsByName(PODto itemDto); Task> GetPRPOSummaryReport(PODto itemDto); Task> GetPRPOSummaryItem(PODto itemDto); PODto CreatePoDto(POVM PODto, byte docRequirementId, int otherChargesId, long prDetailsId diff --git a/CPRNIMS.Domain/Services/PO/PurchaseOrder.cs b/CPRNIMS.Domain/Services/PO/PurchaseOrder.cs index 47fe2ff..04042fb 100644 --- a/CPRNIMS.Domain/Services/PO/PurchaseOrder.cs +++ b/CPRNIMS.Domain/Services/PO/PurchaseOrder.cs @@ -1,6 +1,7 @@ using CPRNIMS.Domain.Contracts.PO; using CPRNIMS.Infrastructure.Database; using CPRNIMS.Infrastructure.Dto.PO; +using CPRNIMS.Infrastructure.Dto.PR; using CPRNIMS.Infrastructure.Entities.Canvass; using CPRNIMS.Infrastructure.Entities.Common; using CPRNIMS.Infrastructure.Entities.LocalDb.NonInvent; @@ -57,7 +58,15 @@ namespace CPRNIMS.Domain.Services.PO } public async Task> GetIncoterms(PODto itemDto) { - return await _dbContext.Incoterms.ToListAsync(); + return await _dbContext.Incoterms + .ToListAsync(); + } + public async Task> GetIncotermsByName(PODto itemDto) + { + return await _dbContext.Incoterms + .Where(t => t.IncotermsName.Contains(itemDto.IncotermsName)) + .AsNoTracking() + .ToListAsync(); } public async Task> GetOtherCharges(PODto itemDto) { @@ -259,6 +268,7 @@ namespace CPRNIMS.Domain.Services.PO { var allItems = await _dbContext.PaymentTerms .Where(t => t.PaymentTerms.Contains(pODto.PaymentTerms)) + .AsNoTracking() .ToListAsync(); return allItems ?? new List(); diff --git a/CPRNIMS.Domain/UIContracts/PO/IPurchaseOrder.cs b/CPRNIMS.Domain/UIContracts/PO/IPurchaseOrder.cs index fc84e34..254db89 100644 --- a/CPRNIMS.Domain/UIContracts/PO/IPurchaseOrder.cs +++ b/CPRNIMS.Domain/UIContracts/PO/IPurchaseOrder.cs @@ -41,6 +41,7 @@ namespace CPRNIMS.Domain.UIContracts.PO Task?> GetPortOfDischarge(User user, POVM viewModels); Task?> GetIncomingShipment(User user, POVM viewModels); Task?> GetPOListByTerm(User user, POVM viewModels); + Task?> GetIncotermsByName(User user, POVM viewModels); #endregion #region Post Put Task PostApprovedSupplier(User user, POVM viewModel); diff --git a/CPRNIMS.Domain/UIServices/PO/PurchaseOrder.cs b/CPRNIMS.Domain/UIServices/PO/PurchaseOrder.cs index 8ba3416..022d028 100644 --- a/CPRNIMS.Domain/UIServices/PO/PurchaseOrder.cs +++ b/CPRNIMS.Domain/UIServices/PO/PurchaseOrder.cs @@ -127,6 +127,11 @@ namespace CPRNIMS.Domain.UIServices.PO #region Get + public async Task?> GetIncotermsByName(User user, POVM viewModel) + { + return await SendGetApiRequest(user, viewModel, + _configuration["LLI:NonInvent:POMgmt:GetIncotermsByName"]); + } public async Task?> GetPOListByTerm(User user, POVM viewModel) { return await SendGetApiRequest(user, viewModel, diff --git a/CPRNIMS.WebApi/Controllers/PO/POMgmtController.cs b/CPRNIMS.WebApi/Controllers/PO/POMgmtController.cs index 883f6c0..c3fb22a 100644 --- a/CPRNIMS.WebApi/Controllers/PO/POMgmtController.cs +++ b/CPRNIMS.WebApi/Controllers/PO/POMgmtController.cs @@ -330,6 +330,14 @@ namespace CPRNIMS.WebApi.Controllers.PO nameof(GetIncoterms),false ); } + [HttpPost("GetIncotermsByName")] + public async Task GetIncotermsByName(PODto itemDto) + { + return await ExecuteWithErrorHandling( + () => _purchaseOrder.GetIncotermsByName(itemDto), + nameof(GetIncoterms), false + ); + } [HttpPost("GetPOItemDetail")] public async Task GetPOItemDetail(PODto PODto) { diff --git a/CPRNIMS.WebApps/Controllers/PO/POMgmtController.cs b/CPRNIMS.WebApps/Controllers/PO/POMgmtController.cs index 526a82f..71803ed 100644 --- a/CPRNIMS.WebApps/Controllers/PO/POMgmtController.cs +++ b/CPRNIMS.WebApps/Controllers/PO/POMgmtController.cs @@ -449,6 +449,23 @@ namespace CPRNIMS.WebApps.Controllers.PO response = await _purchaseOrder.GetPOItemDetail(GetUser(), viewModels); return GetResponse(response); } + public async Task GetIncotermsByName(string query) + { + var viewModels = new POVM(); + viewModels.IncotermsName = query; + response = await _purchaseOrder.GetIncotermsByName(GetUser(), viewModels); + if (response == null) + { + response = new List(); + } + var formattedData = response.Select(item => new + { + label = item.IncotermsName, + value = item.IncotermsId + }); + + return Json(new { success = true, data = formattedData }); + } public async Task GetIncoterms(POVM viewModels) { response = await _purchaseOrder.GetIncoterms(GetUser(), viewModels); diff --git a/CPRNIMS.WebApps/Views/Components/POMgmt/CustomPO/ImportElem.cshtml b/CPRNIMS.WebApps/Views/Components/POMgmt/CustomPO/ImportElem.cshtml index eb1e801..d80a76a 100644 --- a/CPRNIMS.WebApps/Views/Components/POMgmt/CustomPO/ImportElem.cshtml +++ b/CPRNIMS.WebApps/Views/Components/POMgmt/CustomPO/ImportElem.cshtml @@ -80,8 +80,8 @@ - + + diff --git a/CPRNIMS.WebApps/Views/Shared/PagesView/PO/_POScripts.cshtml b/CPRNIMS.WebApps/Views/Shared/PagesView/PO/_POScripts.cshtml index cea4ba0..4ee81d2 100644 --- a/CPRNIMS.WebApps/Views/Shared/PagesView/PO/_POScripts.cshtml +++ b/CPRNIMS.WebApps/Views/Shared/PagesView/PO/_POScripts.cshtml @@ -5,7 +5,7 @@
- + @@ -18,11 +18,11 @@ - + - + diff --git a/CPRNIMS.WebApps/appsettings.json b/CPRNIMS.WebApps/appsettings.json index f7e946e..6e84068 100644 --- a/CPRNIMS.WebApps/appsettings.json +++ b/CPRNIMS.WebApps/appsettings.json @@ -45,6 +45,7 @@ "GetDepartment": "api/ItemMgmt/GetDepartment/", "GetItemLocalization": "api/ItemMgmt/GetItemLocalization/", "GetItemCateg": "api/ItemMgmt/GetItemCateg/", + "GetProjectCodeByTerm": "api/ItemMgmt/GetProjectCodeByTerm/", "GetItemCart": "api/ItemMgmt/GetItemCart/", "PostPutItem": "api/ItemMgmt/PostPutItem/", "PutItemDetail": "api/ItemMgmt/PutItemDetail/", @@ -58,15 +59,21 @@ "PutItemDetail": "api/PRMgmt/PutItemDetail/", "PutSupplierAlterOffer": "api/PRMgmt/PutSupplierAlterOffer/", "PRItemRemoval": "api/PRMgmt/PRItemRemoval/", + "PostPutAttachment": "api/PRMgmt/PostPutAttachment/", "ApprovedSelectedPRItem": "api/PRMgmt/ApprovedSelectedPRItem/", + "PostPutProjectCode": "api/PRMgmt/PostPutProjectCode/", "GetAllPR": "api/PRMgmt/GetAllPR/", + "GetApprovedPR": "api/PRMgmt/GetApprovedPR/", + "GetRemovedPR": "api/PRMgmt/GetRemovedPR/", "GetPRArchived": "api/PRMgmt/GetPRArchived/", "GetMyPR": "api/PRMgmt/GetMyPR/", "GetApproverName": "api/PRMgmt/GetApproverName/", + "GetApproverNameByPRNo": "api/PRMgmt/GetApproverNameByPRNo/", "GetPRListByPRNo": "api/PRMgmt/GetPRListByPRNo/", "GetDashBoard": "api/PRMgmt/GetDashBoard/", "GetPRStatusById": "api/PRMgmt/GetPRStatusById/", "GetPRByRRId": "api/PRMgmt/GetPRByRRId/", + "GetProjectCodes": "api/PRMgmt/GetProjectCodes/", "GetPRDetailByPRNo": "api/PRMgmt/GetPRDetailByPRNo/", "GetDetailedPRTracking": "api/PRMgmt/GetDetailedPRTracking/", "GetSupplierAlternativeOffer": "api/PRMgmt/GetSupplierAlternativeOffer/", @@ -142,9 +149,12 @@ "GetMyCreatedPO": "api/POMgmt/GetMyCreatedPO/", "GetPOItemDetail": "api/POMgmt/GetPOItemDetail/", "GetIncoterms": "api/POMgmt/GetIncoterms/", + "GetPOListByTerm": "api/POMgmt/GetPOListByTerm/", + "GetPOFormData": "api/POMgmt/GetPOFormData/", "GetPRPOSummaryReport": "api/POMgmt/GetPRPOSummaryReport/", "GetPRPOSummaryItem": "api/POMgmt/GetPRPOSummaryItem/", "GetIndexCard": "api/POMgmt/GetIndexCard/", + "GetIncotermsByName": "api/POMgmt/GetIncotermsByName/", "GetPortOfDischarge": "api/POMgmt/GetPortOfDischarge/", "GetIncomingShipment": "api/POMgmt/GetIncomingShipment/" }, diff --git a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV3.js b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV4.js similarity index 96% rename from CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV3.js rename to CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV4.js index 63a7305..9cfcd01 100644 --- a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV3.js +++ b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ApiV4.js @@ -16,6 +16,7 @@ GetSupplierBidById: "/POMgmt/GetSupplierBidById", GetPortOfDischarge: "/POMgmt/GetPortOfDischarge", GetPOListByTerm: "/POMgmt/GetPOListByTerm", + GetIncotermsByName: "/POMgmt/GetIncotermsByName", PutPOCancel: "/POMgmt/PutPOCancel", PutPOItemDetail: "/POMgmt/PutPOItemDetail", diff --git a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV3.js b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV4.js similarity index 94% rename from CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV3.js rename to CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV4.js index 3c96b98..b4d4e00 100644 --- a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV3.js +++ b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/ComponentsV4.js @@ -51,6 +51,9 @@ async function customFormPOElemComponent(id) { $("#C-paymentTerms").off('keyup').on('keyup', function () { populateTerms(); }); + $("#incotermsName").off('keyup').on('keyup', function () { + popIncotermsByName(); + }); resolve(); }, error: function (xhr, status, error) { @@ -64,7 +67,6 @@ async function customFormPOElemComponent(id) { await populatePOElem(id); // 3. NOW read from those inputs - populateIncoterms(); getPONoType(id); getPOType(id); diff --git a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/CustomPOV6.js b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/CustomPOV6.js index 6a47a6c..5cc525b 100644 --- a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/CustomPOV6.js +++ b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/CustomPOV6.js @@ -22,7 +22,6 @@ }); }); - async function fetchAndPopulatePOFormData(poType, poId = null) { loader = $('#overlay, #loader').css('z-index', 1060); @@ -77,12 +76,9 @@ async function fetchAndPopulatePOFormData(poType, poId = null) { $('#finalAmount').val(d.header.finalAmountPHP || 0); $('#grossAmount').val(d.header.grossAmountPHP || 0); - console.log('d.header.incotermsName', d.header.incotermsName); - $('#incoTermsId').val(d.header.incotermsId); $('#incotermsName').val(d.header.incotermsName || ''); - } // --- DataTable: Line Items --- @@ -128,6 +124,7 @@ async function fetchAndPopulatePOFormData(poType, poId = null) { } function enablePONoAutocomplete() { poDataTable.clear().draw(); + document.getElementById('customPOHeading').innerHTML = 'Custom P.O. Modification'; customFormPOElemComponent(4); document.getElementById("poNo").removeAttribute("readonly"); @@ -135,7 +132,6 @@ function enablePONoAutocomplete() { document.getElementById("poNo").focus(); document.getElementById("poType").value = "0"; popPONo(); - } // ===================================================================== // UTILITIES diff --git a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV3.js b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV4.js similarity index 86% rename from CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV3.js rename to CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV4.js index d7d4438..6d2420a 100644 --- a/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV3.js +++ b/CPRNIMS.WebApps/wwwroot/JsFunctions/PO/PopulateDopdownV4.js @@ -33,7 +33,7 @@ $('#poTypeId').val(ui.item.value2); populatePOModificationForm(ui.item.value2); - populateIncoterms(); + fetchAndPopulatePOFormData(ui.item.value2,ui.item.value); $("#supplierName").off('keyup').on('keyup', function () { @@ -80,6 +80,10 @@ async function populatePOModificationForm(id) { $("#C-paymentTerms").off('keyup').on('keyup', function () { populateTerms(); }); + $("#incotermsName").off('keyup').on('keyup', function () { + popIncotermsByName(); + }); + resolve(); }, error: function (xhr, status, error) { @@ -151,6 +155,52 @@ function populateIncoterms() { } }); } +function popIncotermsByName() { + $("#incotermsName").autocomplete({ + source: function (request, response) { + $.ajax({ + url: endpoint.GetIncotermsByName, + data: { query: request.term }, + success: function (result) { + if (result && result.success && Array.isArray(result.data)) { + + var formattedData = result.data.map(item => ({ + label: item.label || '', + value: item.value !== undefined && item.value !== null ? item.value.toString() : '' + })); + + response(formattedData); + } else { + console.error('Invalid data format received:', result); + response([]); + } + } + }); + }, + minLength: 2, + select: function (event, ui) { + $('#incotermsName').val(ui.item.label); + $('#incoTermsId').val(ui.item.value); + return false; + }, + focus: function (event, ui) { + event.preventDefault(); + }, + open: function () { + var dropdown = $(".ui-autocomplete"); + dropdown.css({ + "max-height": "200px", + "overflow-y": "auto" + }); + }, + messages: { + noResults: '', + results: function (count) { + return count + (count > 1 ? ' results' : ' result'); + } + } + }); +} function popTerms() { $("#P-paymentTerms").autocomplete({ source: function (request, response) {