public void CancelOverdueServices() { // load store settings StoreSettings settings = StorehouseController.GetStoreSettings(SecurityContext.User.UserId, StoreSettings.SYSTEM_SETTINGS); // int threshold = Convert.ToInt32(settings["SvcCancelThreshold"]); // TimeSpan ts = new TimeSpan(threshold, 0, 0, 0); // calculate actual suspend date DateTime dueDate = DateTime.Now.Subtract(ts); // lookup for overdue invoices List <InvoiceItem> items = InvoiceController.GetInvoicesItemsOverdue(SecurityContext.User.UserId, dueDate); // TRACE TaskManager.Write("Cancel overdue services"); TaskManager.WriteParameter("Items found", items.Count); // foreach (InvoiceItem item in items) { try { TaskManager.Write("Cancelling service"); // cancelling GenericSvcResult result = CancelService(item.ServiceId, true); // LOG ERROR if (!result.Succeed) { TaskManager.WriteError(result.Error); if (!String.IsNullOrEmpty(result.ErrorCode)) { TaskManager.WriteParameter("Error code", result.ErrorCode); } TaskManager.WriteParameter("Result code", result.ResultCode); // go to next item continue; } // TaskManager.Write("Cancelled"); } catch (Exception ex) { TaskManager.WriteError(ex); } } }
protected static int SendSystemNotification(string settingsName, ContractAccount recipient, Hashtable items, string htmlKeyName, string textKeyName) { // load e-mail template StoreSettings settings = StorehouseController.GetStoreSettings(ES.SecurityContext.User.UserId, settingsName); // bool htmlMail = (recipient[ContractAccount.MAIL_FORMAT] == "HTML"); string email = recipient[ContractAccount.EMAIL]; // string messageBody = htmlMail ? settings[htmlKeyName] : settings[textKeyName]; Template tmp = new Template(messageBody); if (items != null) { foreach (string key in items.Keys) { tmp[key] = items[key]; } } StringWriter writer = new StringWriter(); try { tmp.Evaluate(writer); } catch (ParserException ex) { writer.WriteLine(String.Format("Error in template (Line {0}, Column {1}): {2}", ex.Line, ex.Column, ex.Message)); } // evaluate message body messageBody = writer.ToString(); return(ES.MailHelper.SendMessage(settings["From"], email, settings["CC"], settings["Subject"], messageBody, htmlMail)); }
public static int AddInvoice(string contractId, List <InvoiceItem> invoiceLines, KeyValueBunch extraArgs) { ContractAccount account = ContractSystem.ContractController.GetContractAccountSettings(contractId); // read customer tax Taxation tax = GetCustomerTaxation(contractId, account[ContractAccount.COUNTRY], account[ContractAccount.STATE]); int taxationId = (tax == null) ? -1 : tax.TaxationId; // Calculate invoice amounts decimal totalAmount = 0, subTotalAmount = 0, taxAmount = 0; CalculateInvoiceChargeAmounts(tax, invoiceLines, out totalAmount, out subTotalAmount, out taxAmount); // align svcs suspend date int[] svcs = new int[invoiceLines.Count]; for (int i = 0; i < invoiceLines.Count; i++) { svcs[i] = invoiceLines[i].ServiceId; } DateTime sdateAligned = ServiceController.GetSvcsSuspendDateAligned(svcs, DateTime.Now); // StoreSettings settings = StorehouseController.GetStoreSettings(ES.SecurityContext.User.UserId, StoreSettings.SYSTEM_SETTINGS); // get invoice grace period in days int gracePeriod = Common.Utils.Utils.ParseInt(settings["InvoiceGracePeriod"], 0); // if (gracePeriod < 0) { gracePeriod = 0; } // DateTime created = DateTime.Now; DateTime dueDate = sdateAligned.AddDays(gracePeriod); // return(AddInvoice(contractId, created, dueDate, taxationId, totalAmount, subTotalAmount, taxAmount, invoiceLines, extraArgs)); }
private void SaveWelcomeMessage() { try { StoreSettings settings = new StoreSettings(); // settings["HtmlText"] = txtWelcomeMsg.Text; // int result = StorehouseHelper.SetStoreSettings(StoreSettings.WELCOME_MESSAGE, settings); // if (result < 0) { ShowResultMessage(result); return; } // RedirectToBrowsePage(); } catch (Exception ex) { ShowErrorMessage("SAVE_WELCOME_MSG", ex); } }
private void SaveTermsAndConds() { try { StoreSettings settings = new StoreSettings(); // settings["StatementTemplate"] = txtTermsAndConds.Text; // int result = StorehouseHelper.SetStoreSettings(StoreSettings.TERMS_AND_CONDITIONS, settings); // if (result < 0) { ShowResultMessage(result); // return; } // RedirectToBrowsePage(); } catch (Exception ex) { ShowErrorMessage("SAVE_TC_TEMPLATE", ex); } }
internal static RoutineResult SetNotificationTemplate(int userId, string settingsName, string fromEmail, string ccEmail, string subject, string htmlBody, string textBody) { // RoutineResult result = new RoutineResult(); // SecurityResult sec_result = CheckAccountNotDemoAndActive(); // if (!sec_result.Success) { result.Succeed = false; result.ResultCode = sec_result.ResultCode; // return result; } // 1. Check notification subject correctness // try { Template tm = new Template(subject); tm.CheckSyntax(); } catch (ParserException parserEx) { result.Succeed = false; // result.ResultCode = EcommerceErrorCodes.ERROR_NTFY_SUBJECT_TEMPLATE; // result.Message = "Line: " + parserEx.Line + "; Column: " + parserEx.Column + ";"; // return result; } // 2. Check notification HTML body correctness try { Template tm = new Template(htmlBody); tm.CheckSyntax(); } catch (ParserException parserEx) { result.Succeed = false; // result.ResultCode = EcommerceErrorCodes.ERROR_NTFY_HTML_TEMPLATE; // result.Message = "Line: " + parserEx.Line + "; Column: " + parserEx.Column + ";"; // return result; } // 3. Check notification Plain Text body correctness try { Template tm = new Template(textBody); tm.CheckSyntax(); } catch (ParserException parserEx) { result.Succeed = false; // result.ResultCode = EcommerceErrorCodes.ERROR_NTFY_TEXT_TEMPLATE; // result.Message = "Line: " + parserEx.Line + "; Column: " + parserEx.Column + ";"; // return result; } // StoreSettings settings = new StoreSettings(); // settings["From"] = fromEmail; // settings["CC"] = ccEmail; // settings["Subject"] = subject; // settings["HtmlBody"] = htmlBody; // settings["TextBody"] = textBody; // result.ResultCode = SetStoreSettings(userId, settingsName, settings); // if (result.ResultCode < 0) result.Succeed = false; else result.Succeed = true; // return result; }
public static int SetStoreSettings(int userId, string settingsName, StoreSettings settings) { SecurityResult result = CheckAccountNotDemoAndActive(); // if (!result.Success) return result.ResultCode; // string xml = SettingsHelper.ConvertObjectSettings(settings.KeyValueArray); // return EcommerceProvider.SetStoreSettings(SecurityContext.User.UserId, userId, settingsName, xml); }
private void SaveProvisioningSettings() { if (!Page.IsValid) return; try { StoreSettings settings = new StoreSettings(); // settings["SvcInvoiceThreshold"] = txtSvcsInvoiceThreshold.Text.Trim(); // settings["SvcCancelThreshold"] = txtSvcsCancelThreshold.Text.Trim(); // settings["InvoiceNumberFormat"] = txtInvoiceNumFormat.Text.Trim(); // settings["InvoiceGracePeriod"] = txtGracePeriod.Text.Trim(); // settings["BaseCurrency"] = txtBaseCurrency.Text.Trim(); // settings["SecurePayments"] = rblUseSSL.SelectedValue; // int result = StorehouseHelper.SetStoreSettings(StoreSettings.SYSTEM_SETTINGS, settings); // if (result < 0) { ShowResultMessage(result); // return; } // RedirectToBrowsePage(); } catch (Exception ex) { ShowErrorMessage("SAVE_PROV_SETTINGS", ex); } }
/// <remarks/> public void SetStoreSettingsAsync(int userId, string settingsName, StoreSettings settings) { this.SetStoreSettingsAsync(userId, settingsName, settings, null); }
/// <remarks/> public System.IAsyncResult BeginSetStoreSettings(int userId, string settingsName, StoreSettings settings, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("SetStoreSettings", new object[] { userId, settingsName, settings}, callback, asyncState); }
public int SetStoreSettings(int userId, string settingsName, StoreSettings settings) { object[] results = this.Invoke("SetStoreSettings", new object[] { userId, settingsName, settings}); return ((int)(results[0])); }
public void InvoiceActiveServices() { DateTime dateTimeNow = DateTime.Now; // load store settings StoreSettings settings = StorehouseController.GetStoreSettings(SecurityContext.User.UserId, StoreSettings.SYSTEM_SETTINGS); // int threshold = Convert.ToInt32(settings["SvcInvoiceThreshold"]); // get expiring services today List <Service> services = ServiceController.GetServicesToInvoice(SecurityContext.User.UserId, dateTimeNow, threshold); // group services by users Dictionary <string, List <int> > usersServices = new Dictionary <string, List <int> >(); // iterate foreach (Service service in services) { if (!usersServices.ContainsKey(service.ContractId)) { usersServices.Add(service.ContractId, new List <int>()); } usersServices[service.ContractId].Add(service.ServiceId); } // generate invoice per contract foreach (string contractId in usersServices.Keys) { try { TaskManager.Write("Creating invoice"); // TRACE Contract contract = ContractSystem.ContractController.GetContract(contractId); ContractAccount account = ContractSystem.ContractController.GetContractAccountSettings(contractId); TaskManager.WriteParameter("ContractID", contractId); TaskManager.WriteParameter("Username", account[ContractAccount.USERNAME]); // List <int> userSvcs = usersServices[contractId]; // build invoice items List <InvoiceItem> invoiceLines = InvoiceController.CalculateInvoiceLinesForServices(userSvcs); // int resultCode = InvoiceController.AddInvoice(contractId, invoiceLines, null); // if (resultCode < 1) { TaskManager.WriteParameter("ResultCode", resultCode); continue; } // if (ServiceController.SetUsageRecordsClosed(userSvcs.ToArray()) != 0) { TaskManager.WriteWarning("Unable to close usage records automatically"); } // TRACE TaskManager.WriteParameter("InvoiceID", resultCode); TaskManager.Write("Succeed"); } catch (Exception ex) { TaskManager.WriteError(ex); } } }
public static int SetStoreSettings(string settingsName, StoreSettings settings) { return EC.Services.Storehouse.SetStoreSettings(PanelSecurity.SelectedUserId, settingsName, settings); }
internal static string GetCustomerInvoiceFormattedInternally(Contract contract, int invoiceId, ContractAccount accountSettings, string cultureName) { // Invoice invoiceInfo = GetCustomerInvoiceInternally(invoiceId); // impersonate ES.SecurityContext.SetThreadPrincipal(contract.ResellerId); // load settings StoreSettings settings = StorehouseController.GetStoreSettings(contract.ResellerId, StoreSettings.NEW_INVOICE); // string templateBody = settings["HtmlBody"]; // Taxation invoiceTax = StorehouseController.GetTaxation(contract.ResellerId, invoiceInfo.TaxationId); // List <InvoiceItem> invoiceLines = GetCustomerInvoiceItems(invoiceId); Dictionary <int, Service> invoiceServices = ServiceController.GetServicesDictionary(invoiceLines); // Template tm = new Template(templateBody); tm["Invoice"] = invoiceInfo; tm["InvoiceLines"] = invoiceLines; tm["InvoiceServices"] = invoiceServices; tm["Customer"] = accountSettings; tm["Tax"] = invoiceTax; StringWriter writer = new StringWriter(); try { // Preserve an original thread culture CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture; // if (!String.IsNullOrEmpty(cultureName)) { try { CultureInfo formattingCulture = new CultureInfo(cultureName); // Empty currency symbol to supporty 3-letters ISO format // hardcorded in HTML templates formattingCulture.NumberFormat.CurrencySymbol = String.Empty; // Set formatting culture Thread.CurrentThread.CurrentCulture = formattingCulture; } catch (Exception ex) { TaskManager.WriteWarning("Wrong culture name has been provided. Culture name: {0}.", cultureName); TaskManager.WriteWarning(ex.StackTrace); TaskManager.WriteWarning(ex.Message); } } // Process template tm.Evaluate(writer); templateBody = writer.ToString(); // Revert the original thread's culture back Thread.CurrentThread.CurrentCulture = originalCulture; } catch (ParserException ex) { return(String.Format("Error in template (Line {0}, Column {1}): {2}", ex.Line, ex.Column, ex.Message)); } return(templateBody); }
/// <remarks/> public void SetStoreSettingsAsync(int userId, string settingsName, StoreSettings settings, object userState) { if ((this.SetStoreSettingsOperationCompleted == null)) { this.SetStoreSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetStoreSettingsOperationCompleted); } this.InvokeAsync("SetStoreSettings", new object[] { userId, settingsName, settings}, this.SetStoreSettingsOperationCompleted, userState); }
public int SetStoreSettings(int userId, string settingsName, StoreSettings settings) { return(StorehouseController.SetStoreSettings(userId, settingsName, settings)); }
public int SetStoreSettings(int userId, string settingsName, StoreSettings settings) { return StorehouseController.SetStoreSettings(userId, settingsName, settings); }