protected virtual void FinalizeDO() { SOOrder row = Base.Document.Current; SOOrderExt rowExt = PXCache <SOOrder> .GetExtension <SOOrderExt>(row); string soNumber = row.OrderNbr; string actualEffortResult = actualEffort(row.OrderNbr); if (actualEffortResult != "OK") { throw new PXException(actualEffortResult); } string finalizeDOResult = finalizeEllipseProject(row.OrderNbr); if (finalizeDOResult != "OK") { throw new PXException(finalizeDOResult); } Base.Document.Cache.SetValueExt <SOOrderExt.usrFinalized>(row, true); Base.Document.Cache.Update(row); //Base.Caches[typeof(SOOrder)].SetValueExt<SOOrderExt.usrFinalized>(row, true); //Base.Caches[typeof(SOOrder)].Update(rowExt); Base.Save.Press(); }
protected virtual void SOOrder_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { SOOrder row = (SOOrder)e.Row; if (row == null) { return; } SOOrderExt sOOrderExt = row.GetExtension <SOOrderExt>(); this.finalizeDO.SetEnabled(row.OrderType == SOOrderTypeConstants.SalesOrder && row.Status == SOOrderStatus.Completed && row.Hold == false && sOOrderExt.UsrFinalized == false); }
protected void createICPOAction() { Base.Save.Press(); var curCompanyID = PXInstanceHelper.CurrentCompany; var curUserName = PXLogin.ExtractUsername(PXContext.PXIdentity.IdentityName); //A.By using LMICCustomer table to identify the destination tenant of PO need to be created var curSOOrder = (SOOrder)Base.Caches[typeof(SOOrder)].Current; var curLMICCustomer = PXSelect <LMICCustomer, Where <LMICCustomer.customerID, Equal <Required <LMICCustomer.customerID> > > > .Select(Base, curSOOrder.CustomerID).TopFirst; //B.Go to the destination tenant, and ensure vendor is defined in LMICVendor.If not, throw error message “The vendor is not defined in destination tenant”. var curCompanyName = PXLogin.ExtractCompany(PXContext.PXIdentity.IdentityName); var curLMICVendor = new LMICVendor(); try { using (PXLoginScope pXLoginScope = new PXLoginScope($"{curUserName}@{curLMICCustomer.LoginName}")) { curLMICVendor = PXSelect <LMICVendor, Where <LMICVendor.tenantID, Equal <Required <LMICVendor.tenantID> > > > .Select(PXGraph.CreateInstance <POOrderEntry>(), curCompanyID).TopFirst; } } catch (Exception) { throw new PXException("Please try again."); } /*Get InventoryCD in each line*/ var inventoryCDList = new List <string>(); foreach (SOLine line in Base.Transactions.Cache.Cached) { inventoryCDList.Add(PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(Base, line.InventoryID).TopFirst?.InventoryCD); } if (curLMICCustomer != null) { if (curLMICVendor != null) { try { PXLongOperation.StartOperation(Base, () => { var SOOrderCustomerOrderNbr = string.Empty; //C.Create a purchase order in destination tenant by uing the following mapping. using (PXLoginScope pXLoginScope = new PXLoginScope($"{curUserName}@{curLMICCustomer.LoginName}")) { POOrderEntry pOOrderEntry = PXGraph.CreateInstance <POOrderEntry>(); /* PO Header */ POOrder pOOrder = new POOrder(); pOOrder = pOOrderEntry.Document.Insert(pOOrder); pOOrder.BranchID = curLMICVendor.BranchID; pOOrder.VendorID = curLMICVendor.VendorID; pOOrderEntry.Document.Cache.RaiseFieldUpdated <POOrder.vendorID>(pOOrder, pOOrder.VendorID); pOOrder.VendorRefNbr = curSOOrder.OrderNbr; pOOrder.OrderDate = curSOOrder.OrderDate; pOOrder.OrderDesc = "IC PO | " + curCompanyName + " | " + curSOOrder.OrderNbr; /* PO Line */ int i = 0; foreach (SOLine line in Base.Transactions.Cache.Cached) { POLine pOLine = new POLine(); var tempInventoryID = PXSelect <InventoryItem, Where <InventoryItem.inventoryCD, Equal <Required <InventoryItem.inventoryCD> > > > .Select(pOOrderEntry, inventoryCDList[i])?.TopFirst?.InventoryID; pOLine.InventoryID = tempInventoryID == null ? PXSelect <INItemXRef, Where <INItemXRef.alternateID, Equal <Required <INItemXRef.alternateID> > > > .Select(pOOrderEntry, inventoryCDList[i])?.TopFirst?.InventoryID : tempInventoryID; pOLine.OrderQty = line.OrderQty; pOLine = pOOrderEntry.Transactions.Insert(pOLine); pOLine.CuryUnitCost = line.CuryUnitPrice; pOLine = pOOrderEntry.Transactions.Update(pOLine); i++; } //D.If the PO is saved successfully, please update the following fields // - POOrder, ICSOCreated = true POOrderExt pOOrderExt = pOOrder.GetExtension <POOrderExt>(); pOOrderExt.UsrICSOCreated = true; pOOrderEntry.Document.Update(pOOrder); pOOrderEntry.Actions.PressSave(); SOOrderCustomerOrderNbr = pOOrder.OrderNbr; } //D.If the PO is saved successfully, please update the following fields // - SOOrder, ICPOCreated = true; Customer Order Nbr = POOrder.OrderNbr SOOrderExt sOOrderExt = curSOOrder.GetExtension <SOOrderExt>(); sOOrderExt.UsrICPOCreated = true; curSOOrder.CustomerOrderNbr = SOOrderCustomerOrderNbr; Base.Document.Update(curSOOrder); Base.Save.Press(); }); } catch (Exception) { throw new PXException("Please try again."); } } else { throw new PXException("The vendor is not defined in destination tenant"); } } }
public virtual IEnumerable createDO(SOOrder sOOrder) { bool modifyFlag = false; SOOrderExt sOOrderExt = sOOrder.GetExtension <SOOrderExt>(); if (sOOrder.OrderNbr == null) { return(null); } try { ClientConversation.authenticate(userName, password); loggedIn = true; } catch (Exception ex) { loggedIn = false; throw new PXException(ex.Message); } if (loggedIn == true) { string createProjectResult = createProject(sOOrder); if (createProjectResult != "OK") { if (createProjectResult.Trim().Contains("PROJECT ALREADY EXISTS")) { string modifyProjectResult = modifyProject(sOOrder); modifyFlag = true; if (modifyProjectResult != "OK") { throw new PXException(modifyProjectResult); } } else { throw new PXException(createProjectResult); } } if (!modifyFlag) { string authoriseProjectResult = authoriseProject(sOOrder); if (authoriseProjectResult != "OK") { throw new PXException(authoriseProjectResult); } } string modifyProjectRefCodesResult = modifyProjectRefCodes(sOOrder); if (modifyProjectRefCodesResult != "OK") { throw new PXException(modifyProjectRefCodesResult); } string createProjectEstimateResult = createProjectEstimate(sOOrder); if (createProjectEstimateResult != "OK") { throw new PXException(createProjectEstimateResult); } string recordProjectActualsResult = recordProjectActuals(sOOrder); if (recordProjectActualsResult != "OK") { throw new PXException(recordProjectActualsResult); } } return(null); }