Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
     }
 }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
 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);
			}
		}
Ejemplo n.º 9
0
 /// <remarks/>
 public void SetStoreSettingsAsync(int userId, string settingsName, StoreSettings settings) {
     this.SetStoreSettingsAsync(userId, settingsName, settings, null);
 }
Ejemplo n.º 10
0
 /// <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);
 }
Ejemplo n.º 11
0
 public int SetStoreSettings(int userId, string settingsName, StoreSettings settings) {
     object[] results = this.Invoke("SetStoreSettings", new object[] {
                 userId,
                 settingsName,
                 settings});
     return ((int)(results[0]));
 }
Ejemplo n.º 12
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);
                }
            }
        }
Ejemplo n.º 13
0
 public static int SetStoreSettings(string settingsName, StoreSettings settings)
 {
     return EC.Services.Storehouse.SetStoreSettings(PanelSecurity.SelectedUserId, settingsName, 
         settings);
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 /// <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);
 }
Ejemplo n.º 16
0
 public int SetStoreSettings(int userId, string settingsName, StoreSettings settings)
 {
     return(StorehouseController.SetStoreSettings(userId, settingsName, settings));
 }
Ejemplo n.º 17
0
 public int SetStoreSettings(int userId, string settingsName, StoreSettings settings)
 {
     return StorehouseController.SetStoreSettings(userId, settingsName, settings);
 }