public static void Process(EMailAccountSyncFilter filter, List <EMailSyncAccount> accounts, Object uid, string screenid) { //Check that process is singleton foreach (RowTaskInfo info in PXLongOperation.GetTaskList()) { if (Object.Equals(uid, info.NativeKey)) { continue; } PXLongRunStatus status = PXLongOperation.GetStatus(info.NativeKey); if (status != PXLongRunStatus.InProcess) { continue; } string company = PXLogin.ExtractCompany(info.User); string screen = (info.Screen ?? String.Empty).Replace(".", ""); if (screen == screenid && company == PXAccess.GetCompanyName()) { throw new PXException(ErrorMessages.PrevOperationNotCompleteYet); } } EmailsSyncMaint graph = CreateInstance <EmailsSyncMaint>(); using (new PXUTCTimeZoneScope()) { graph.ProcessInternal(new ProcessingContext(filter, accounts, graph.GetPolicies())); } }
public static void UpdateDatabase(TDCustomizationPlugin plugin, ref List <Tuple <string, object[]> > errors) { string companyName = PXAccess.GetCompanyName(); NonStockItemMaint graph = PXGraph.CreateInstance <NonStockItemMaint>(); InventoryItem item; INItemClass itemClass; try { itemClass = PXSelectReadonly <INItemClass, Where <INItemClass.itemClassCD, Equal <Required <INItemClass.itemClassCD> > > > .Select(graph, "EXPENSES"); if (itemClass != null) { item = graph.Item.Insert(); item.InventoryCD = "CLEANROOM"; item = graph.Item.Update(item); item.ItemClassID = itemClass.ItemClassID; item = graph.ItemSettings.Update(item); item.TaxCategoryID = "EXEMPT"; item = graph.ItemSettings.Update(item); item.Descr = "House Cleaning Service"; item = graph.ItemSettings.Update(item); graph.Save.Press(); graph.Clear(); } } catch (Exception) { errors.Add(new Tuple <string, object[]>(TDMessages.ErrorInsertingItems, new object[] { companyName })); } }
protected virtual void RequestSSToken() { PMSetup pmSetupRow = PXSelect <PMSetup> .Select(Base); PMSetupSSExt pmSetupSSExtRow = PXCache <PMSetup> .GetExtension <PMSetupSSExt>(pmSetupRow); string loginScopeCompany = PXDatabase.Companies.Length > 0 ? PXAccess.GetCompanyName() : String.Empty; string currentScope = String.Format(",{0},{1}", Base.Accessinfo.UserName, loginScopeCompany); if (pmSetupSSExtRow != null && pmSetupSSExtRow.UsrSmartsheetClientID != null) { string smartsheetRedirect = SmartsheetConstants.SSCodeRequest.ENDPOINT; smartsheetRedirect += SmartsheetConstants.SSCodeRequest.RESPONSE_TYPE; smartsheetRedirect += SmartsheetConstants.SSCodeRequest.CLIENT_ID + pmSetupSSExtRow.UsrSmartsheetClientID; smartsheetRedirect += SmartsheetConstants.SSCodeRequest.SCOPE; smartsheetRedirect += SmartsheetConstants.SSCodeRequest.STATE + currentScope; throw new PXRedirectToUrlException(smartsheetRedirect, PXBaseRedirectException.WindowMode.InlineWindow, string.Empty, false); } else { throw new PXException(SmartsheetConstants.Messages.SMARTSHEET_ID_MISSING); } }
private void AuthenticateAdobeSignAccount(ESignAccount account) { var companyId = PXAccess.GetCompanyName(); var client = AdobeSignClientBuilder.BuildUnauthorized(account, companyId); PXLongOperation.StartOperation(this, () => { var loginUrl = client.Authentication.GetLoginPageUrl(); throw new PXRedirectToUrlException(loginUrl, PXBaseRedirectException.WindowMode.InlineWindow, string.Empty, false); }); }
public static void UpdateDatabase(USCustomizationPlugin plugin, ref List <Tuple <string, object[]> > errors) { string companyName = PXAccess.GetCompanyName(); try { //Insert UpScouts here or something } catch (Exception) { errors.Add(new Tuple <string, object[]>(USMessages.ErrorInsertingUpScouts, new object[] { companyName })); } }
private User GetUser(MembershipUserExt user) { if (user != null) { return(new User { Id = user.ProviderUserKey.ToString(), DisplayName = user.DisplayName, UserName = user.UserName + "@" + PXAccess.GetCompanyName() }); } return(null); }
public string GetUrl() { string webHookUrl = ""; var setup = graph.SurveySetup.Current; if (setup.WebHookID.HasValue) { string str = (graph.CompanyService.IsMultiCompany ? PXAccess.GetCompanyName() : graph.CompanyService.GetSingleCompanyLoginName()); string[] returnUrl = new string[] { _returnUrl, "/", str, "/", null }; returnUrl[4] = setup.WebHookID.ToString(); webHookUrl = string.Concat(returnUrl); } return(webHookUrl); }
public static void OnPublished(USCustomizationPlugin plugin, ref List <Tuple <string, object[]> > errors) { string companyName = PXAccess.GetCompanyName(); plugin.WriteLog(PXLocalizer.LocalizeFormatWithKey(USMessages.SomePluginRunning, typeof(USMessages).FullName, companyName)); //Select an Account that is Active PXDataRecord record = PXDatabase.SelectSingle <Account>(new PXDataFieldValue <Account.active>(PXDbType.Bit, true)); if (record == null) { errors.Add(new Tuple <string, object[]>(USMessages.NoActiveAccounts, new object[] { companyName })); } }
private IDisposable GetAdminScope() { var userName = "******"; if (PXDatabase.Companies.Length > 0) { var company = PXAccess.GetCompanyName(); if (string.IsNullOrEmpty(company)) { company = PXDatabase.Companies[0]; } userName = userName + "@" + company; } return(new PXLoginScope(userName)); }
/// <summary> /// Defines the LoginScope to be used for the WebHooks /// </summary> /// <returns></returns> private IDisposable GetUserScope() { //todo: For now we will use admin but we will want to throttle back to a // user with restricted access as to reduce any risk of attack. // perhaps this can be configured in the Surveys Preferences/Setup page. var userName = "******"; if (PXDatabase.Companies.Length > 0) { var company = PXAccess.GetCompanyName(); if (string.IsNullOrEmpty(company)) { company = PXDatabase.Companies[0]; } userName = userName + "@" + company; } return(new PXLoginScope(userName)); }
public CBAPIService(String endpoint, string version) { EntityHelper = ServiceLocator.Current.GetInstance <Func <string, string, IEntityHelper> >()(endpoint, version); string userName = "******"; if (PXDatabase.Companies.Length > 0) { var company = PXAccess.GetCompanyName(); if (string.IsNullOrEmpty(company)) { company = PXDatabase.Companies[0]; } userName = userName + "@" + company; } LoginScope = new PXLoginScope(userName, PXAccess.GetAdministratorRoles()); CultureScope = new PX.Common.PXInvariantCultureScope(); if (PXContext.GetSlot <System.Web.SessionState.ISessionStateItemCollection>() == null) { PXContext.SetSlot <System.Web.SessionState.ISessionStateItemCollection>(new System.Web.SessionState.SessionStateItemCollection()); } }
public static string GetSyncUrl(HttpContext context, string userId) { String externalLink; externalLink = context.Request.GetWebsiteUrl().TrimEnd('/'); externalLink += PX.Common.PXUrl.ToAbsoluteUrl(String.Format("~/calendarSync.ics?{0}={1}&{2}={3}", _CALENDAR_SETTINGS_KEY, userId, _COMPANY_KEY, PXAccess.GetCompanyName())); return(externalLink); }
public static string GetSyncUrl(string protocol, string host, string appPath, string userId) { return(string.Format("{0}://{1}{2}/calendarSync.ics?{3}={4}&{5}={6}", protocol, host, appPath, _CALENDAR_SETTINGS_KEY, userId, _COMPANY_KEY, PXAccess.GetCompanyName())); }
/// <summary> Update Shipment Tracking Info </summary> public virtual bool UpdateShipmentTrackingInfo(List <LUMWarehouseImportProcess> warehouseData) { var isAllSuccess = true; var logData = SelectFrom <LUMWarehouseImportProcessLog> .View.Select(this).RowCast <LUMWarehouseImportProcessLog>(); foreach (var row in warehouseData) { try { var _soOrder = SelectFrom <SOOrder> .Where <SOOrder.orderNbr.IsEqual <P.AsString> > .View.Select(this, row.Erporder).RowCast <SOOrder>()?.FirstOrDefault(); #region Check is already updated if (logData.Any(x => x.Erporder == row.Erporder && x.ShipmentID == row.ShipmentID && (x.IsProcess ?? false))) { //this.ImportShipmentList.Delete(row); continue; } #endregion #region Check SOOrder is Exists if (_soOrder == null) { throw new Exception("SOOrder is not exists"); } #endregion #region Check data if (string.IsNullOrEmpty(row.Erporder) || row.Erporder == "null") { throw new Exception("ERP Order Nbr can not be empty!"); } if (string.IsNullOrEmpty(row.Carrier) || row.Carrier == "null") { throw new Exception("Carrier can not be empty!"); } if (!row.ShipmentDate.HasValue) { throw new Exception("Shipment Date can not be empty!"); } if (string.IsNullOrEmpty(row.TrackingNbr) || row.TrackingNbr == "null") { throw new Exception("Tracking Nbr can not be empty!"); } #endregion if (_soOrder.OrderType == "FM") { var setup = this.MiddlewareSetup.Select().RowCast <LUMMiddleWareSetup>().FirstOrDefault(); var shippingCarrier = row.Carrier; var _merchant = string.IsNullOrEmpty(PXAccess.GetCompanyName()?.Split(' ')[1]) ? "us" : PXAccess.GetCompanyName()?.Split(' ')[1].ToLower() == "uk" ? "gb" : PXAccess.GetCompanyName()?.Split(' ')[1].ToLower(); MiddleWare_Shipment metaData = new MiddleWare_Shipment() { merchant = _merchant, amazon_order_id = _soOrder.CustomerOrderNbr, shipment_date = row.ShipmentDate?.ToString("yyyy-MM-dd hh:mm:ss"), shipping_method = "Standard", carrier = shippingCarrier, tracking_number = row.TrackingNbr }; // Update FBM var updateResult = MiddleWareHelper.CallMiddleWareToUpdateFBM(setup, metaData); // Check HttpStatusCode if (updateResult.StatusCode != System.Net.HttpStatusCode.OK) { throw new PXException($"Update MiddleWare FBM fail , Code = {updateResult.StatusCode}"); } // Check Response status var updateModel = JsonConvert.DeserializeObject <MiddleWare_Response>(updateResult.ContentResult); if (!updateModel.Status) { throw new PXException($"Update Middleware FBM fail, Msg = {updateModel.Message}"); } // update SOOrder_UsrSendToMiddleware var soorderGraph = PXGraph.CreateInstance <SOOrderEntry>(); _soOrder.GetExtension <SOOrderExt>().UsrSendToMiddleware = true; soorderGraph.Document.Update(_soOrder); soorderGraph.Save.Press(); InsertLog(row, true, string.Empty); } else { var _soOrderShipment = SelectFrom <SOOrderShipment> .Where <SOOrderShipment.orderNbr.IsEqual <P.AsString> .And <SOOrderShipment.orderType.IsEqual <P.AsString> > > .View.Select(this, _soOrder.OrderNbr, _soOrder.OrderType).RowCast <SOOrderShipment>()?.FirstOrDefault(); #region Check SOOrderShipment is Exists if (_soOrderShipment == null) { throw new Exception("SOOrder need to create Shipment first!"); } #endregion var _soShipment = SelectFrom <SOShipment> .Where <SOShipment.shipmentNbr.IsEqual <P.AsString> > .View.Select(this, _soOrderShipment?.ShipmentNbr).RowCast <SOShipment>().FirstOrDefault(); #region Check SOShipment is Exists if (_soShipment == null) { throw new Exception("Shipment is not exists!"); } #endregion // Update Shipment var shipmentGraph = PXGraph.CreateInstance <SOShipmentEntry>(); _soShipment.GetExtension <SOShipmentExt>().UsrTrackingNbr = row.TrackingNbr; _soShipment.GetExtension <SOShipmentExt>().UsrCarrier = row.Carrier; shipmentGraph.Document.Update(_soShipment); shipmentGraph.Save.Press(); InsertLog(row, true, string.Empty); } } catch (Exception ex) { isAllSuccess = false; InsertLog(row, false, ex.Message); } } return(isAllSuccess); }
protected virtual IEnumerable LumCallDCLShipemnt(PXAdapter adapter, [PXDate] DateTime?shipDate, [PXInt] int?siteID, [SOOperation.List] string operation) { try { var _soOrder = adapter.Get <SOOrder>().ToList()[0]; // Get DCL SO. Data(正式:order_number = SO.OrderNbr) //var dclOrders = JsonConvert.DeserializeObject<OrderResponse>( // DCLHelper.CallDCLToGetSOByOrderNumbers( // this.DCLSetup.Select().RowCast<LUMVendCntrlSetup>().FirstOrDefault(), soOrder.OrderNbr).ContentResult); // Get DCL SO. Data(理論上資料一定存在,因為Process Order已經先篩選了) var dclOrders = JsonConvert.DeserializeObject <OrderResponse>( DCLHelper.CallDCLToGetSOByOrderNumbers( this.DCLSetup.Select().RowCast <LUMVendCntrlSetup>().FirstOrDefault(), _soOrder.CustomerRefNbr).ContentResult); if (dclOrders.orders == null) { throw new Exception("Can not Mapping DCL Data"); } if (!dclOrders.orders.Any(x => x.order_stage == 60)) { throw new Exception("DCL Order stage is not Fully Shipped"); } if (_soOrder.OrderType == "FM") { var setup = this.MiddlewareSetup.Select().RowCast <LUMMiddleWareSetup>().FirstOrDefault(); var shippingCarrier = dclOrders.orders.FirstOrDefault()?.shipping_carrier; var packagesInfo = dclOrders.orders.FirstOrDefault().shipments.SelectMany(x => x.packages); var _merchant = string.IsNullOrEmpty(PXAccess.GetCompanyName()?.Split(' ')[1]) ? "us" : PXAccess.GetCompanyName()?.Split(' ')[1].ToLower() == "uk" ? "gb" : PXAccess.GetCompanyName()?.Split(' ')[1].ToLower(); MiddleWare_Shipment metaData = new MiddleWare_Shipment() { merchant = _merchant, amazon_order_id = dclOrders.orders.FirstOrDefault().po_number, shipment_date = dclOrders.orders.FirstOrDefault()?.shipments?.FirstOrDefault()?.ship_date + " 00:00:00", shipping_method = "Standard", carrier = shippingCarrier, tracking_number = string.Join("|", packagesInfo.Select(x => x.tracking_number)) }; // Update FBM var updateResult = MiddleWareHelper.CallMiddleWareToUpdateFBM(setup, metaData); // Check HttpStatusCode if (updateResult.StatusCode != System.Net.HttpStatusCode.OK) { throw new PXException($"Update MiddleWare FBM fail , Code = {updateResult.StatusCode}"); } // Check Response status var updateModel = JsonConvert.DeserializeObject <MiddleWare_Response>(updateResult.ContentResult); if (!updateModel.Status) { throw new PXException($"Update Middleware FBM fail, Msg = {updateModel.Message}"); } _soOrder.GetExtension <SOOrderExt>().UsrSendToMiddleware = true; Base.Document.Update(_soOrder); Base.Save.Press(); } else { using (PXTransactionScope sc = new PXTransactionScope()) { Base.CreateShipmentIssue(adapter, shipDate, siteID); var processResult = PXProcessing <SOOrder> .GetItemMessage(); if (processResult.ErrorLevel != PXErrorLevel.RowInfo) { return(adapter.Get()); } // Create SOShipment Graph var graph = PXGraph.CreateInstance <SOShipmentEntry>(); // Find SOShipment var _soOrderShipments = FbqlSelect <SelectFromBase <SOOrderShipment, TypeArrayOf <IFbqlJoin> .Empty> .Where <BqlChainableConditionBase <TypeArrayOf <IBqlBinary> .FilledWith <And <Compare <SOOrderShipment.orderType, Equal <P.AsString> > > > > .And <BqlOperand <SOOrderShipment.orderNbr, IBqlString> .IsEqual <P.AsString> > >, SOOrderShipment> .View.Select(Base, _soOrder.OrderType, _soOrder.OrderNbr) .RowCast <SOOrderShipment>(); foreach (var refItem in _soOrderShipments) { // Create new Adapter var newAdapter = new PXAdapter(graph.Document) { Searches = new Object[] { refItem.ShipmentNbr } }; // Select Current Shipment var _soShipment = newAdapter.Get <SOShipment>().ToList()[0]; try { // Get Carrier and TrackingNbr var shippingCarrier = dclOrders.orders.FirstOrDefault().shipping_carrier; var packagesInfo = dclOrders.orders.FirstOrDefault().shipments.SelectMany(x => x.packages); _soShipment.GetExtension <SOShipmentExt>().UsrCarrier = shippingCarrier; _soShipment.GetExtension <SOShipmentExt>().UsrTrackingNbr = string.Join("|", packagesInfo.Select(x => x.tracking_number)); _soShipment.ShipmentDesc = $"Carrier: {shippingCarrier}|" + $"TrackingNbr: {string.Join("|", packagesInfo.Select(x => x.tracking_number))}"; if (_soShipment.ShipmentDesc.Length > 256) { _soShipment.ShipmentDesc = _soShipment.ShipmentDesc.Substring(0, 255); } } catch (Exception e) { _soShipment.ShipmentDesc = e.Message; } // Update Data graph.Document.Update(_soShipment); // Remove Hold graph.releaseFromHold.PressButton(newAdapter); // Confirm Shipment graph.confirmShipmentAction.PressButton(newAdapter); // Prepare Invoice For 3D Orders try { if (_soOrder.OrderType == "3D") { newAdapter.AllowRedirect = true; graph.createInvoice.PressButton(newAdapter); } } catch (PXRedirectRequiredException ex) { SOInvoiceEntry invoiceEntry = ex.Graph as SOInvoiceEntry; var soTax = SelectFrom <SOTaxTran> .Where <SOTaxTran.orderNbr.IsEqual <P.AsString> .And <SOTaxTran.orderType.IsEqual <P.AsString> > > .View.Select(Base, _soOrder.OrderNbr, _soOrder.OrderType) .RowCast <SOTaxTran>().FirstOrDefault(); var balance = invoiceEntry.Document.Current.CuryDocBal; var refNbr = invoiceEntry.Document.Current.RefNbr; var invTax = SelectFrom <ARTaxTran> .Where <ARTaxTran.refNbr.IsEqual <P.AsString> > .View.Select(Base, refNbr).RowCast <ARTaxTran>().FirstOrDefault(); var adjd = SelectFrom <ARAdjust2> .Where <ARAdjust2.adjdRefNbr.IsEqual <P.AsString> > .View.Select(Base, refNbr).RowCast <ARAdjust2>().FirstOrDefault(); if (soTax != null) { // setting Tax invoiceEntry.Taxes.SetValueExt <ARTaxTran.curyTaxAmt>(invTax, soTax.CuryTaxAmt); invoiceEntry.Taxes.Update(invTax); // setting Document invoiceEntry.Document.SetValueExt <ARInvoice.curyTaxTotal>(invoiceEntry.Document.Current, soTax.CuryTaxAmt); invoiceEntry.Document.SetValueExt <ARInvoice.curyDocBal>(invoiceEntry.Document.Current, balance + (soTax.CuryTaxAmt ?? 0)); invoiceEntry.Document.Update(invoiceEntry.Document.Current); invoiceEntry.Adjustments.SetValueExt <ARAdjust2.curyAdjdAmt>(adjd, adjd.CuryAdjdAmt + (soTax.CuryTaxAmt ?? 0)); invoiceEntry.Adjustments.Update(adjd); invoiceEntry.releaseFromCreditHold.Press(); invoiceEntry.Save.Press(); } } catch (Exception ex) { throw new Exception(ex.Message); } } sc.Complete(); } } } catch (Exception e) { PXProcessing.SetError <SOOrder>(e.Message); } return(adapter.Get()); }