Beispiel #1
0
        /// <summary>
        /// Get inherited data for a CustomerInvoiceGroup
        /// </summary>
        /// <param name="cigId">The CustomerInvoiceGroup's ID</param>
        /// <returns>Returns the inherited data as CustomerInvoiceGroup</returns>
        public CustomerInvoiceGroup GetInvoiceMetaData(int cigId)
        {
            try
            {
                using (var entity = _trexContextProvider.TrexEntityContext)
                {
                    var group = (from cig in entity.CustomerInvoiceGroups
                                 join c in entity.Customers on cig.CustomerID equals c.CustomerID
                                 where (cig.CustomerInvoiceGroupID == cigId)
                                 select new { CustomerInvoiceGroup = cig, cig.Customer }).First();

                    var tmp = new CustomerInvoiceGroup();
                    tmp.Address1 = (group.CustomerInvoiceGroup.Address1 ?? group.Customer.StreetAddress);
                    tmp.Address2 = (group.CustomerInvoiceGroup.Address2 ?? group.Customer.Address2);

                    tmp.Attention = (group.CustomerInvoiceGroup.Attention ?? group.Customer.ContactName);

                    tmp.City       = (group.CustomerInvoiceGroup.City ?? group.Customer.City);
                    tmp.Country    = (group.CustomerInvoiceGroup.Country ?? group.Customer.Country);
                    tmp.CustomerID = group.CustomerInvoiceGroup.CustomerID;
                    tmp.ZipCode    = group.CustomerInvoiceGroup.ZipCode ?? group.Customer.ZipCode;

                    return(tmp);
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
                throw;
            }
        }
 private void OverwriteCig(Customer customer)
 {
     _dataService.GetCustomerInvoiceGroupByCustomerId(customer.CustomerID)
     .Subscribe(r =>
     {
         if (r.Count != 0)
         {
             CustomerInvoiceGroup cig = r.First(f => f.DefaultCig);
             cig.Label      = "Default";
             cig.Attention  = customer.ContactName;
             cig.Email      = customer.Email;
             cig.Address1   = customer.StreetAddress;
             cig.Address2   = customer.Address2;
             cig.Country    = customer.Country;
             cig.ZipCode    = customer.ZipCode;
             cig.City       = customer.City;
             cig.CustomerID = customer.CustomerID;
             cig.SendFormat = customer.SendFormat;
             cig.EmailCC    = customer.EmailCC;
             SaveCig(cig);
         }
         else
         {
             CreateNewCig();
         }
     });
 }
Beispiel #3
0
        public EditCustomerInvoiceGroupItemViewModel(CustomerInvoiceGroup cig)
        {
            CIG           = cig;
            RadioReadOnly = true;
            if (CIG.DefaultCig)
            {
                ReadOnly      = true;
                RadioReadOnly = false;
            }
            if (CIG.Label == null)
            {
                CIG.Label = null;
            }

            if (CIG.SendFormat == 1)
            {
                IsMail  = true;
                IsPrint = false;
            }
            else
            {
                IsPrint = true;
                IsMail  = false;
            }
        }
 public SendInvoiceEmailComposer(Invoice invoice, CustomerInvoiceGroup cig, IAppSettings appSettings)
 {
     Title        = "d60 Invoice: " + invoice.InvoiceID;
     IsHtml       = true;
     _cig         = cig;
     _appSettings = appSettings;
     _invoice     = invoice;
 }
        public void InsertInDatabase(CustomerInvoiceGroup group)
        {
            using (var db = _entityContext.TrexEntityContext)
            {
                db.CustomerInvoiceGroups.ApplyChanges(group);

                db.SaveChanges(SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave);
            }
        }
Beispiel #6
0
        /// <summary>
        /// Returns a CustomerInvoiceGroup with inherited template data
        /// </summary>
        /// <param name="id"></param>
        /// <param name="invoiceId">The invoice's ID</param>
        /// <returns>CustomerInvoiceGroup with inherited template data</returns>
        public CustomerInvoiceGroup GetCustomerInvoiceGroupsTemplateData(int id, int format)
        {
            try
            {
                using (var entity = _trexContextProvider.TrexEntityContext)
                {
                    var data = (from cig in entity.CustomerInvoiceGroups
                                join i in entity.Invoices on cig.CustomerInvoiceGroupID equals i.CustomerInvoiceGroupId
                                join c in entity.Customers on cig.CustomerID equals c.CustomerID
                                where i.ID == id
                                select cig).First();

                    ValidateFiles(format);

                    var tmp = new CustomerInvoiceGroup();
                    tmp = data;

                    if (format == 1)
                    {
                        var standardInvoiceToMail = entity.InvoiceTemplates.First(x => x.StandardInvoiceMail).TemplateId;
                        tmp.InvoiceTemplateIdMail = (data.InvoiceTemplateIdMail ?? standardInvoiceToMail);
                    }

                    if (format == 2)
                    {
                        var standardInvoiceToPrint = entity.InvoiceTemplates.First(x => x.StandardInvoicePrint).TemplateId;
                        tmp.InvoiceTemplateIdPrint = (data.InvoiceTemplateIdPrint ?? standardInvoiceToPrint);
                    }

                    if (format == 3)
                    {
                        var standardSpecificationToMail = entity.InvoiceTemplates.First(x => x.StandardSpecification).TemplateId;
                        tmp.SpecificationTemplateIdMail = (data.SpecificationTemplateIdMail ?? standardSpecificationToMail);
                    }

                    if (format == 4)
                    {
                        var standardCreditNoteToMail = entity.InvoiceTemplates.First(x => x.StandardCreditNoteMail).TemplateId;
                        tmp.CreditNoteTemplateIdMail = (data.CreditNoteTemplateIdMail ?? standardCreditNoteToMail);
                    }
                    if (format == 5)
                    {
                        var standardCreditNoteToPrint = entity.InvoiceTemplates.First(x => x.StandardCreditNotePrint).TemplateId;
                        tmp.CreditNoteTemplateIdPrint = (data.CreditNoteTemplateIdPrint ?? standardCreditNoteToPrint);
                    }

                    return(tmp);
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
                throw;
            }
        }
Beispiel #7
0
        /// <summary>
        /// Finds data and files for the invoice and sends it to assigned people
        /// </summary>
        /// <param name="invoiceId">The invoice's ID</param>
        /// <returns>True if succes, false if failure</returns>
        public bool SendInvoiceEmail(int invoiceId)
        {
            using (var context = _contextProvider.TrexEntityContext)
            {
                _cig = (from cig in context.CustomerInvoiceGroups.Include("Customer")
                        join i in context.Invoices on cig.CustomerInvoiceGroupID equals i.CustomerInvoiceGroupId
                        where i.ID == invoiceId
                        select cig).Single();

                _invoice = (from i in context.Invoices
                            where i.ID == invoiceId
                            select i).First();

                _customer = (from c in context.Customers
                             where c.CustomerID == _cig.CustomerID
                             select c).Single();
            }
            var emailComposer = new SendInvoiceEmailComposer(_invoice, _cig, _appSettings);


            emailComposer.Recipients.Add((_customer.Email ?? _cig.Email));

            string[] mailCC;

            if (!string.IsNullOrEmpty(_cig.EmailCC) && !string.IsNullOrWhiteSpace(_cig.EmailCC))
            {
                mailCC = _cig.EmailCC.Split(';');
                foreach (var s in mailCC)
                {
                    emailComposer.CcRecipients.Add(s);
                }
            }
            else if (!string.IsNullOrEmpty(_customer.EmailCC) && !string.IsNullOrWhiteSpace(_cig.EmailCC) && _cig.DefaultCig == true)
            {
                mailCC = _customer.EmailCC.Split(';');
                foreach (var s in mailCC)
                {
                    emailComposer.CcRecipients.Add(s);
                }
            }

            emailComposer.Attachments.Add(GetInvoiceFile(_invoice));

            if (!_invoice.IsCreditNote)
            {
                emailComposer.Attachments.Add(GetSpecFile(_invoice));
            }

            emailComposer.Sender = _appSettings.TrexInvoicetMail;

            return(_emailService.SendEmail(emailComposer));
        }
Beispiel #8
0
        public ServerResponse OverWriteCig(CustomerInvoiceGroup cig)
        {
            try
            {
                _customerInvoiceGroupService.OverwriteCig(cig);

                return(new ServerResponse("Data inserted succesfully", true));
            }
            catch (Exception ex)
            {
                LogError(ex);
                return(new ServerResponse("Data inserted failed", false));
            }
        }
Beispiel #9
0
        public ServerResponse SaveCIG(CustomerInvoiceGroup cig)
        {
            try
            {
                _customerInvoiceGroupService.InsertCustomerInvoiceGroupIntoDatabase(cig);

                return(new ServerResponse("Data inserted succesfully", true));
            }
            catch (Exception ex)
            {
                LogError(ex);
                return(new ServerResponse("Data inserted failed", false));
            }
        }
        public EditInvoiceViewModel(Invoice invoice, Customer customer, IDataService dataService)
        {
            _invoice               = invoice;
            _customer              = customer;
            _dataService           = dataService;
            _customerInvoiceGroups = new ObservableCollection <CustomerInvoiceGroup>();
            _customerInvoiceGroup  = new CustomerInvoiceGroup();
            SaveInvoiceCommand     = new DelegateCommand <object>(ExecuteSaveInvoice, CanExecuteSaveInvoice);
            CancelCommand          = new DelegateCommand <object>(ExecuteCancel, canExecuteCancel);

            GetAllCustomerInvoiceGroups();

            CustomerName      = customer.CustomerName;
            CanEditSendFormat = false;
        }
Beispiel #11
0
        public void SaveNewCig()
        {
            var cig = new CustomerInvoiceGroup {
                Label = "New Cig", CustomerID = 1, City = "New cig city"
            };

            _cigr.InsertInDatabase(cig);

            var cigs =
                (from customerInvoiceGroup in _databaseSetup.GetTrexConnection.TrexEntityContext.CustomerInvoiceGroups
                 where customerInvoiceGroup.Label == "New Cig"
                 select customerInvoiceGroup).First();

            Assert.AreEqual("New cig city", cigs.City);
        }
 private void SaveCig(CustomerInvoiceGroup cig)
 {
     _dataService.OverWriteCig(cig).Subscribe(s =>
     {
         if (s == null)
         {
             MessageBox.Show(
                 "The settings are properly not saved due to an error on the server",
                 "Error", MessageBoxButton.OK);
         }
         if (!s.Success)
         {
             MessageBox.Show(s.Response);
         }
     });
 }
        private void CreateNewCig()
        {
            var cig = new CustomerInvoiceGroup
            {
                Label      = "Default",
                Attention  = Customer.ContactName,
                Email      = Customer.Email,
                EmailCC    = Customer.EmailCC,
                Address1   = Customer.StreetAddress,
                Address2   = Customer.Address2,
                Country    = Customer.Country,
                City       = Customer.City,
                CustomerID = Customer.CustomerID,
                SendFormat = 1,
                DefaultCig = true
            };

            _dataService.SaveCustomerInvoiceGroup(cig);
        }
        public void OverwriteCig(CustomerInvoiceGroup cig)
        {
            using (var db = _entityContext.TrexEntityContext)
            {
                var cigdata = (from entity in db.CustomerInvoiceGroups
                               where entity.CustomerInvoiceGroupID == cig.CustomerInvoiceGroupID
                               select entity).First();

                cigdata.Attention  = cig.Attention;
                cigdata.City       = cig.City;
                cigdata.Email      = cig.Email;
                cigdata.EmailCC    = cig.EmailCC;
                cigdata.Country    = cig.Country;
                cigdata.ZipCode    = cig.ZipCode;
                cigdata.Address1   = cig.Address1;
                cigdata.Address2   = cig.Address2;
                cigdata.SendFormat = cig.SendFormat;
                cigdata.DefaultCig = cig.DefaultCig;
                cigdata.Label      = cig.Label;

                db.CustomerInvoiceGroups.ApplyChanges(cigdata);
                db.SaveChanges();
            }
        }
 public void OverwriteCig(CustomerInvoiceGroup cig)
 {
     _customerInvoiceGroupRepository.OverwriteCig(cig);
 }
Beispiel #16
0
        public override Dictionary <string, string> MapData(Invoice invoice)
        {
            const string moneySpecifier = "N";
            const string format         = "dd/MM/yyyy";

            _metaData = _invoiceService.GetInvoiceMetaData(invoice.CustomerInvoiceGroupId);

            ValidateMapInput(StartDate, invoice.StartDate.ToString(format));
            ValidateMapInput(EndDate, invoice.EndDate.ToString(format));

            if (invoice.Attention == null)
            {
                ValidateMapInput(Attention, _metaData.Attention); //Contactperson
            }
            else
            {
                ValidateMapInput(Attention, invoice.Attention);
            }

            ValidateMapInput(CustomerAddress, _metaData.Address1);
            ValidateMapInput(City, _metaData.City);
            ValidateMapInput(ZIP, _metaData.ZipCode);
            ValidateMapInput(Country, _metaData.Country);
            ValidateMapInput(CustomerName, invoice.CustomerInvoiceGroup.Customer.CustomerName);

            double ExclVat = CalculateExclVat(invoice);
            double vat     = CalculateVat(invoice);

            ValidateMapInput(VATBase, ExclVat.ToString(moneySpecifier));
            ValidateMapInput(VATOfTotal, vat.ToString(moneySpecifier));
            ValidateMapInput(TotalDkk, (ExclVat + vat).ToString(moneySpecifier));

            ValidateMapInput(InvoiceDate, invoice.InvoiceDate.ToShortDateString());
            if (invoice.DueDate != null)
            {
                ValidateMapInput(DueDate, invoice.DueDate.Value.ToShortDateString());
            }
            ValidateMapInput(InvoiceNumber, invoice.InvoiceID.ToString());
            ValidateMapInput(CustomerID, _metaData.CustomerID.ToString());

            if (!invoice.IsCreditNote)
            {
                ValidateMapInput(InvoiceNumberBold, invoice.InvoiceID.ToString());
            }

            ValidateMapInput(Regarding, (string.IsNullOrEmpty(invoice.Regarding) ? "" : invoice.Regarding));

            if (invoice.IsCreditNote)
            {
                using (var entity = _contextProvider.TrexEntityContext)
                {
                    int?id = (from i in entity.Invoices
                              where i.ID == invoice.InvoiceLinkId
                              select i.InvoiceID).First();

                    ValidateMapInput(InvoiceParent, id.ToString());
                }
            }

            return(MapDataInput);
        }
Beispiel #17
0
 public IObservable <ServerResponse> SaveCustomerInvoiceGroup(CustomerInvoiceGroup cig)
 {
     return(_saveCustomerInvoiceGroup(cig).ObserveOnDispatcher());
 }
Beispiel #18
0
 public IObservable <ServerResponse> OverWriteCig(CustomerInvoiceGroup cig)
 {
     return(_overWriteCig(cig).ObserveOnDispatcher());
 }
 public void InsertCustomerInvoiceGroupIntoDatabase(CustomerInvoiceGroup group)
 {
     _customerInvoiceGroupRepository.InsertInDatabase(group);
 }