public void Send_invoice_only_once()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            payer.ContactGroupOwner
            .AddContactGroup(ContactGroupType.Invoice)
            .AddContact(ContactType.Email, "*****@*****.**");
            payer.InvoiceSettings.EmailInvoice = true;
            Save(payer);
            var invoice = payer.BuildInvoices(DateTime.Today, new Period(DateTime.Today)).Single();

            Save(invoice);

            Flush();
            Close();

            task.Execute();

            var message = messages.FirstOrDefault(m => m.Body.Contains(String.Format("Счет №{0}", invoice.Id)));

            Assert.That(message, Is.Not.Null);
            messages.Clear();
            task.Execute();

            message = messages.FirstOrDefault(m => m.Body.Contains(String.Format("Счет №{0}", invoice.Id)));
            Assert.That(message, Is.Null, "Отправили счет повторно");
        }
        public void Double_saved_payments_processing()
        {
            var payers = session.Query <Payer>().Where(p => p.INN == "361911638854").ToList();

            payers.Each(p => {
                p.INN = null;
                session.Save(p);
            });

            var payer = DataMother.CreatePayerForBillingDocumentTest();

            payer.INN = "361911638854";
            session.Save(payer);
            session.Flush();

            var file = "../../../TestData/1c.txt";

            using (var stream = File.OpenRead(file))
                Context.Session["payments"] = Payment.Parse(file, stream);

            Reopen();
            controller.SavePayments();

            try {
                Reopen();
                controller.SavePayments();
            }
            catch (SessionExpiredException) {
            }

            session.Refresh(payer);
            Assert.That(payer.Balance, Is.EqualTo(3000));
        }
        public void Notify_abount_modification()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice = new Invoice(payer, DateTime.Now);

            invoice.Parts.Add(new InvoicePart(invoice, "Мониторинг оптового фармрынка за декабрь", 500, 2, DateTime.Now));
            session.Save(invoice);

            var oldValue = invoice.Period.Clone();
            var newValue = new Period(DateTime.Today.Year + 1, invoice.Period.Interval);

            Request.Params.Add("invoice.Period.Year", newValue.Year.ToString());
            Request.Params.Add("invoice.Period.Interval", newValue.Interval.ToString());
            Request.Params.Add("invoice.Parts[0].Id", invoice.Parts[0].Id.ToString());
            Request.HttpMethod = "POST";
            controller.Edit(invoice.Id);
            controller.SendMails();

            var errors = controller.Validator.GetErrorSummary(invoice);

            Assert.AreEqual(0, errors.ErrorsCount, errors.ErrorMessages.Implode());
            Assert.AreEqual(1, Emails.Count);
            var email = Emails[0];

            Assert.AreEqual("Изменен счет", Emails[0].Subject);
            Assert.That(email.Body, Is.StringContaining(String.Format("Параметр Период изменился с {0} на {1}", oldValue, newValue)));
        }
Ejemplo n.º 4
0
 public void Setup()
 {
     payer             = DataMother.CreatePayerForBillingDocumentTest();
     payer.AutoInvoice = InvoiceType.Auto;
     session.Save(payer);
     Flush();
     filter = new DocumentBuilderFilter();
 }
        public void Setup()
        {
            payer = DataMother.CreatePayerForBillingDocumentTest();

            controller = new RevisionActsController();
            referer    = "https://stat.analit.net/Adm/";
            Prepare(controller, "RevisionActs", "Mail");
        }
 public void Setup()
 {
     payer       = DataMother.CreatePayerForBillingDocumentTest();
     payment     = new Payment(payer);
     payment.Sum = 800;
     payment.RegisterPayment();
     session.Save(payment);
 }
Ejemplo n.º 7
0
        public void Update_payer_balance()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var payment = new Payment(payer);

            payment.Sum = 800;
            session.Save(payment);
            Assert.That(payer.Balance, Is.EqualTo(800));
        }
Ejemplo n.º 8
0
        private Invoice CreateInvoice()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice = new Invoice(payer, new Period(2011, Interval.January), new DateTime(2010, 12, 27));
            var group   = invoice.Payer.ContactGroupOwner.AddContactGroup(ContactGroupType.Invoice);

            group.AddContact(ContactType.Email, "*****@*****.**");
            session.Save(invoice);
            return(invoice);
        }
Ejemplo n.º 9
0
        public void Setup()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice = new Invoice(payer, DateTime.Now);

            invoice.Parts.Add(new InvoicePart(invoice, "Мониторинг оптового фармрынка", 500, 1, DateTime.Now));
            session.Save(invoice);
            act = new Act(DateTime.Now, invoice);
            session.Save(act);
        }
Ejemplo n.º 10
0
        public void NotSendEmptyMessageTest()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            Open(payer);
            ClickButton("Принять");
            AssertText("Это поле необходимо заполнить.");
            browser.TextField(Find.ByName("messageText")).TypeText("Тестовое сообщение");
            ClickButton("Принять");
            AssertText("Тестовое сообщение");
        }
Ejemplo n.º 11
0
        public void Delete_payer_dialog()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            Open(payer);
            Click("Удалить Плательщика");
            AssertText("Введите причину удаления");
            Click("Продолжить");
            AssertText("Это поле необходимо заполнить.");
            Css("#CommentField").AppendText("123456");
            Click("Продолжить");
        }
Ejemplo n.º 12
0
        public void Custom_invoice()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            Open(payer);
            Click("Новый счет");
            Css("#invoice_date").Value           = DateTime.Now;
            Css("#invoice_bills[0]_Name").Value  = "Информационные услуги за октябрь";
            Css("#invoice_bills[0]_Cost").Value  = "500";
            Css("#invoice_bills[0]_Count").Value = "1";
            Click("Сохранить");
        }
        public void Do_not_include_payer_that_was_not_registred()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            var period = DateTime.Now.AddMonths(-1).ToPeriod();
            var filter = new PayerFilter(session)
            {
                SearchWithoutDocuments = true, Period = period, DocumentType = DocumentType.Invoice
            };
            var items = filter.Find();

            Assert.That(items.Select(i => i.PayerId).ToArray(), Is.Not.Contains(payer.Id));
        }
        public void Setup()
        {
            payer = DataMother.CreatePayerForBillingDocumentTest();
            var invoices = payer.BuildInvoices(new DateTime(2011, 12, 10), new Period(2011, Interval.December))
                           .Concat(payer.BuildInvoices(new DateTime(2012, 1, 10), new Period(2012, Interval.January)))
                           .ToArray();

            invoices.SelectMany(i => i.Parts).Each(p => p.Process());

            Save(invoices);

            Flush();
        }
Ejemplo n.º 15
0
        public void Create_act()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            Open(payer);
            Click("Доп. акт");
            AssertText("Формирование дополнительного акта");
            Css("#act_Date").Value           = DateTime.Now.ToShortDateString();
            Css("#act_parts_0__name").Value  = "Информационные услуги за октябрь";
            Css("#act_parts_0__cost").Value  = "800";
            Css("#act_parts_0__count").Value = "2";
            Click("Сохранить");
            AssertText("Акт сформирован");
        }
Ejemplo n.º 16
0
        public void Before_save_if_begin_balance_changed_update_balance()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            payer.BeginBalance = 1000;
            session.Save(payer);
            session.Flush();
            Assert.That(payer.Balance, Is.EqualTo(1000));
            payer.Balance      = 2000;
            payer.BeginBalance = -500;
            session.Save(payer);
            session.Flush();
            Assert.That(payer.Balance, Is.EqualTo(500));
        }
        public void Update_payer_balance()
        {
            var payer     = DataMother.CreatePayerForBillingDocumentTest();
            var operation = new BalanceOperation(payer);

            operation.Type        = OperationType.DebtRelief;
            operation.Description = "Возврат средств";
            operation.Sum         = 1000;
            session.Save(operation);

            Flush();
            Reopen();

            payer = session.Load <Payer>(payer.Id);
            Assert.That(payer.Balance, Is.EqualTo(1000));
        }
Ejemplo n.º 18
0
        public void Show_balance_summary()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice = new Invoice(payer, new Period(2011, Interval.January), new DateTime(2011, 1, 11));

            session.Save(invoice);
            var payment = new Payment(payer, new DateTime(2011, 1, 15), 800);

            session.Save(payment);

            Open(payer);
            AssertText("плательщик");
            Click(String.Format(@"Платежи/Счета {0}", invoice.Period.Year));
            Thread.Sleep(1000);
            AssertText("11.01.2011");
            AssertText("15.01.2011");
        }
        public void Try_find_by_payer_id()
        {
            var payer1   = payer;
            var payer2   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice1 = new Invoice(payer1, new Period(2010, Interval.December), DateTime.Now);

            session.Save(invoice1);
            var invoice2 = new Invoice(payer2, new Period(2010, Interval.December), DateTime.Now);

            session.Save(invoice2);

            var filter = new PayerDocumentFilter {
                SearchText = new[] { payer1, payer2 }.Implode(p => p.Id)
            };
            var invoices = filter.Find <Invoice>(session);

            Assert.That(invoices, Is.EquivalentTo(new[] { invoice1, invoice2 }));
        }
        public void Search_payer_without_document()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            var period = DateTime.Now.ToPeriod();
            var filter = new PayerFilter(session)
            {
                SearchWithoutDocuments = true, Period = period, DocumentType = DocumentType.Invoice
            };
            var items = filter.Find();

            Assert.Contains(payer.Id, items.Select(i => i.PayerId).ToArray());

            Save(payer.BuildInvoices(DateTime.Now, period));
            Flush();

            items = filter.Find();
            Assert.That(items.Select(i => i.PayerId).ToArray(), Is.Not.Contains(payer.Id));
        }
        public void Search_by_payer_name()
        {
            var payer = DataMother.CreatePayerForBillingDocumentTest();

            payer.Name = "Тестовый плательщик " + payer.Id;
            var payment = new Payment(payer, DateTime.Now, 800);

            session.Save(payment);
            var filter = new PaymentFilter(session)
            {
                SearchText = "Тестовый плательщик " + payer.Id
            };

            session.Flush();
            var payments = filter.Find();

            Assert.That(payments.Count, Is.EqualTo(1));
            Assert.That(payments[0].Id, Is.EqualTo(payment.Id));
        }
Ejemplo n.º 22
0
        public void Do_not_build_duplicate_document()
        {
            var payer   = DataMother.CreatePayerForBillingDocumentTest();
            var invoice = new Invoice(payer, new Period(2010, Interval.December), DateTime.Now);

            session.Save(invoice);

            var acts = Act.Build(new List <Invoice> {
                invoice
            }, DateTime.Now);

            acts.Each(a => session.Save(a));

            Assert.That(acts.Count(), Is.EqualTo(1));

            acts = Act.Build(new List <Invoice> {
                invoice
            }, DateTime.Now);
            Assert.That(acts.Count(), Is.EqualTo(0));
        }
Ejemplo n.º 23
0
        public void Ignore_inn_from_black_list()
        {
            var payer     = DataMother.CreatePayerForBillingDocumentTest();
            var recipient = session.Query <Recipient>().First();

            payer.INN = DataMother.RandomInn();
            new IgnoredInn(payer.INN).Save();
            session.Save(payer);

            var payments = new List <Payment> {
                new Payment {
                    Sum             = 800,
                    RecipientClient = new Payment.BankClient(recipient.Name, recipient.INN, recipient.BankAccountNumber),
                    PayerClient     = new Payment.BankClient(payer.Name, payer.INN, "")
                }
            };

            var identifyPayments = Payment.Identify(payments);

            Assert.That(identifyPayments.First().Payer, Is.Null);
        }
Ejemplo n.º 24
0
        public void Identify_payment()
        {
            var payer     = DataMother.CreatePayerForBillingDocumentTest();
            var recipient = session.Query <Recipient>().First();

            payer.INN = DataMother.RandomInn();
            session.Save(payer);

            var payments = new List <Payment> {
                new Payment {
                    Sum             = 800,
                    RecipientClient = new Payment.BankClient(recipient.Name, recipient.INN, recipient.BankAccountNumber),
                    PayerClient     = new Payment.BankClient(payer.Name, payer.INN, "")
                }
            };

            session.Flush();

            var identifyPayments = Payment.Identify(payments);

            Assert.That(identifyPayments.First().Payer, Is.EqualTo(payer));
        }
Ejemplo n.º 25
0
 public void Setup()
 {
     payer = DataMother.CreatePayerForBillingDocumentTest();
     ad    = new Advertising(payer);
     session.Save(ad);
 }
 public void Setup()
 {
     payer = DataMother.CreatePayerForBillingDocumentTest();
 }
Ejemplo n.º 27
0
        public void BeAccountedUpdate()
        {
            //подготовка данных
            var otherResult = session.Query <Account>().Where(s => s.FreePeriodEnd == SystemTime.Now().Date.AddDays(-13)).ToList();

            otherResult.Each(s => {
                s.FreePeriodEnd = SystemTime.Now().Date;
                session.Save(s);
            });

            var allResult = new List <Account>();
            var client    = DataMother.CreateTestClientWithUser();
            var payer     = DataMother.CreatePayerForBillingDocumentTest();

            client.Payers.Add(payer);
            session.Save(payer);
            payer.Addresses.Each(s => {
                allResult.Add(s.Accounting);
            });
            allResult.AddRange(payer.GetAccounts());
            payer = DataMother.CreatePayerForBillingDocumentTest();
            client.Payers.Add(payer);
            session.Save(payer);
            session.Save(client);
            payer.Addresses.Each(s => {
                allResult.Add(s.Accounting);
            });
            allResult.AddRange(payer.GetAccounts());
            Reopen();

            allResult.Each(s => {
                s.IsFree        = true;
                s.BeAccounted   = false;
                s.FreePeriodEnd = null;
                session.Save(s);
            });

            var itemCountA = (allResult.Count > 10 ? 10 : allResult.Count);

            for (int i = 0; i < itemCountA; i++)
            {
                allResult[i].WriteTime     = SystemTime.Now().Date.AddDays(-14);
                allResult[i].FreePeriodEnd = SystemTime.Now().Date.AddDays(-13);
                allResult[i].BeAccounted   = true;
                session.Save(allResult[i]);
            }

            var timeToUpdate = ConfigurationManager.AppSettings["BeAccountedUpdateAt"]
                               .Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
            var timeToSendMailHour    = int.Parse(timeToUpdate[0]);
            var timeToSendMailMinutes = timeToUpdate.Length > 1 ? int.Parse(timeToUpdate[1]) : 0;
            var mailTime = SystemTime.Now().Date.AddHours(timeToSendMailHour).AddMinutes(timeToSendMailMinutes);

            SystemTime.Now = () => mailTime.AddMinutes(10);

            Reopen();
            task.Execute();
            Reopen();

            allResult = session.Query <Account>().Where(s => s.FreePeriodEnd == SystemTime.Now().Date.AddDays(-13)).ToList();

            Assert.IsTrue(allResult.Count == itemCountA);
            for (int i = 0; i < itemCountA; i++)
            {
                session.Refresh(allResult[i]);
                Assert.IsTrue(allResult[i].BeAccounted == false);
            }
        }
 public void Setup()
 {
     payer   = DataMother.CreatePayerForBillingDocumentTest();
     invoice = new Invoice(payer, new Period(2011, Interval.January), new DateTime(2010, 12, 27));
     session.Save(invoice);
 }
 public void Setup()
 {
     payer     = DataMother.CreatePayerForBillingDocumentTest();
     processor = new InvoicePartTask(session);
 }