コード例 #1
0
        public static Invoice StandardInvoice()
        {
            var invoice = new Invoice(
                DateTime.Now,
                DateTime.Now,
                new MonetaryValue(100000, "CO"),
                CustomerMother.Random());

            var product = ProductMother.MartilloProductWithStock();

            invoice.AddItem(
                name: product.Name,
                productId: product.Id,
                taxDescription: product.TaxDescription,
                unitPrice: product.Price,
                unitTax: product.Tax,
                quantity: new QuantityValue(2, "UM"));

            product = ProductMother.TaladroProductWithStock();
            invoice.AddItem(
                name: product.Name,
                productId: product.Id,
                taxDescription: product.TaxDescription,
                unitPrice: product.Price,
                unitTax: product.Tax,
                quantity: new QuantityValue(1, "UM"));

            return(invoice);
        }
コード例 #2
0
        public double CalculateTotal()
        {
            var invoice = new Invoice(new Customer("Jim's Autobody", "AB", "Canada"));
            invoice.AddItem(new Item("Wheel", 4, 395.66));
            invoice.AddItem(new Item("Brake", 2, 144.38));
            invoice.AddItem(new Item("Light", 2, 6.99));

            var invoiceTotaler = new TaxedInvoiceTotaler();
            return invoiceTotaler.CalculateFor(invoice);
        }
コード例 #3
0
        private Invoice CreateInvoice(string aInvName, string aRecName, string aRecEmail, int aRows, double aRate)
        {
            DateTime now  = DateTime.Now;
            string   date = String.Format("{0:MMMMM yyyy}", now);

            //Create Receiver from
            Company company = new Company();

            company.Name     = aRecName;
            company.Email    = aRecEmail;
            company.Address1 = "59 Paisley Street";
            company.Address2 = "Footscray, Victoria";
            company.Postcode = "3011";
            company.Country  = "Australia";

            //Create Transaction
            Invoice invoice = new Invoice(now, 14);

            invoice.Company   = company;
            invoice.Sender    = new Sender();
            invoice.InvoiceNo = aInvName;

            //Create Item
            Item item = new Item("Emprevo monthly subscription" + " - " + date, aRows.ToString(), (aRows * aRate).ToString());

            invoice.AddItem(item);

            return(invoice);
        }
コード例 #4
0
        protected override void ProcessDemo()
        {
            var invoice = new Invoice(new List <InvoicePosition>
            {
                new InvoicePosition("PC", 2999),
                new InvoicePosition("Keyboard", 299)
            });

            invoice.Process();
            invoice.AddItem(new InvoicePosition("Mouse", 59));
            invoice.Process();
            invoice.Process();
            invoice.AddItem(new InvoicePosition("Monitor", 799));
            invoice.Process();
            invoice.Process();
        }
コード例 #5
0
        private void TestSingleRental(IBillable rental)
        {
            var invoice = new Invoice();

            invoice.AddItem(rental);
            Assert.AreEqual(1, invoice.ItemCount);
            Assert.AreEqual(rental.UnitPrice * rental.Units, invoice.TotalPrice);
        }
コード例 #6
0
ファイル: InvoiceTests.cs プロジェクト: Arkimbauer/cokaido
        public void ShippingShouldBeAddedIfAddressIsNotInEurope()
        {
            var address  = new Address(new Country(false));
            var customer = new Customer(address);

            var invoice = new Invoice(customer);

            invoice.AddItem(new InvoiceItem("Product X", 1, 100));

            Assert.AreEqual(100 + Invoice.SHIPPING_COST_OUTSIDE_EU, invoice.TotalPrice);
        }
コード例 #7
0
        /// <summary>
        /// Caso de uso "Crear factura"
        /// </summary>
        /// <param name="date"></param>
        /// <param name="expirationDate"></param>
        /// <param name="totalReceived"></param>
        /// <param name="productInputs"></param>
        /// <param name="customer"></param>
        /// <returns></returns>
        /// <exception cref="CustomerNotFound"></exception>
        /// <exception cref="ProductNotFound"></exception>
        public InvoiceViewModel Create(
            DateTime date,
            DateTime expirationDate,
            MonetaryValue totalReceived,
            int customerId,
            IEnumerable <ProductInputModel> productInputs)
        {
            var customer = customerRepository.GetById(customerId);

            if (customer is null)
            {
                throw new CustomerNotFound();
            }

            // se crea la factura
            var invoice = new Invoice(
                date: date,
                expirationDate: expirationDate,
                totalReceived: totalReceived,
                customer: customer);

            // se agregan los productos.
            var productsUpdates = new List <Product>();

            foreach (var productInput in productInputs)
            {
                var product = productRepository.GetById(productInput.ProductId);

                if (product == null)
                {
                    throw new ProductNotFound();
                }

                invoice.AddItem(
                    name: product.Name,
                    productId: product.Id,
                    taxDescription: product.TaxDescription,
                    unitPrice: product.Price,
                    unitTax: product.Tax,
                    quantity: productInput.Quantity);

                product.AdjustStock(
                    new QuantityValue(productInput.Quantity.Value * (-1), productInput.Quantity.UnitMeasurement),
                    "Sale");

                productsUpdates.Add(product);
            }

            repository.Insert(invoice);
            productRepository.Update(productsUpdates);

            return(mapper.Map <InvoiceViewModel>(invoice));
        }
コード例 #8
0
ファイル: InvoiceService.cs プロジェクト: AlexanderKrustev/KK
        public void CreateInvoice(InvoiceBm invoiceBm, string[] items)
        {
            Invoice entityInvoice = Mapper.Map <InvoiceBm, Invoice>(invoiceBm);

            foreach (var item in items)
            {
                Item entityItem = this.Context.Items.Find(int.Parse(item));
                entityInvoice.AddItem(entityItem);
            }
            this.Context.Invoices.Add(entityInvoice);
            this.Context.SaveChanges();
        }
コード例 #9
0
        public void ShouldApplyFamilyRentalDiscountWhen3To5Rentals()
        {
            var rental  = new RentalByHour(1);
            var invoice = new Invoice();

            // 0-2 rentals. Should not apply discount.
            Assert.IsFalse(invoice.AppliesForFamilyRentalDiscount);
            invoice.AddItem(rental);
            Assert.IsFalse(invoice.AppliesForFamilyRentalDiscount);
            invoice.AddItem(rental);
            Assert.IsFalse(invoice.AppliesForFamilyRentalDiscount);

            // 3-5 rentals. Should apply discount.
            invoice.AddItem(rental);
            Assert.IsTrue(invoice.AppliesForFamilyRentalDiscount);
            invoice.AddItem(rental);
            Assert.IsTrue(invoice.AppliesForFamilyRentalDiscount);
            invoice.AddItem(rental);
            Assert.IsTrue(invoice.AppliesForFamilyRentalDiscount);

            // 6+ rentals. Should not apply discount.
            for (int i = 0; i < 5; i++)
            {
                invoice.AddItem(rental);
                Assert.IsFalse(invoice.AppliesForFamilyRentalDiscount);
            }
        }
コード例 #10
0
        public static void Do()
        {
            Console.WriteLine(" == Adapter Pattern == ");
            India india = new India(new WorkAbroad());

            Console.WriteLine(india.StartWork());

            Console.WriteLine(" == Bridge Pattern == ");
            Invoice invoice = new Invoice();

            invoice.SetCustomer("Acem");
            invoice.SetId("AES77");

            InvoiceItem item1 = new InvoiceItem();

            item1.SetValues("Item 1", 1, 45, 70);
            invoice.AddItem(item1);
            InvoiceItem item2 = new InvoiceItem();

            item2.SetValues("Item 2", 10, 35, 700);
            invoice.AddItem(item2);
            InvoiceItem item3 = new InvoiceItem();

            item3.SetValues("Item 3", 5, 57, 90);
            invoice.AddItem(item3);
            Console.WriteLine("Invoice Total=" + invoice.GetTotal());


            Console.WriteLine(" == Decorator Pattern == ");
            ClassTeacher t1 = new ClassTeacher();

            t1.SetName("Teacher 1");
            Console.WriteLine(t1.GetName() + " Designation = " + t1.GetDesignation());
            ClassTeacher t2 = new ClassTeacher();

            t2.SetName("Teacher 2");
            Console.WriteLine(t2.GetName() + " Designation = " + t2.GetDesignation());
        }
コード例 #11
0
        public void Do_Not_Add_Date_To_Items_If_Date_Is_On_Or_After_CreateDate_Of_Current_Month()
        {
            //Arrange
            var invoice = new Invoice("", new Customer(), new DateTime(2021, 2, 12));

            invoice.AddItem(new MaintenanceInvoiceItem(new DateTime(2021, 2, 23), 1));

            var expected = "Item falls outside the range of valid dates for this invoice";

            //Act
            var actual = invoice.ValidationMessage;

            //Assert
            Assert.AreEqual(expected, actual);
        }
コード例 #12
0
        public void CanCalculateInvoiceTotalWithoutDiscount()
        {
            var invoice = new Invoice();
            var rentals = new List <IBillable>
            {
                new RentalByDay(1),
                new RentalByHour(1),
            };

            rentals.ForEach(r => invoice.AddItem(r));
            Assert.AreEqual(2, invoice.ItemCount);
            Assert.IsFalse(invoice.AppliesForFamilyRentalDiscount);
            var expectedTotal = rentals.Sum(r => r.Units * r.UnitPrice);

            Assert.AreEqual(expectedTotal, invoice.SubTotalPrice);
            Assert.AreEqual(expectedTotal, invoice.TotalPrice);
        }
コード例 #13
0
        private void btnAddItem_Click(object sender, EventArgs e)
        {
            AddItem frmAddItem = new AddItem();

            DialogResult dr = frmAddItem.ShowDialog(this);

            if (dr == DialogResult.Cancel)
            {
                frmAddItem.Close();
            }
            else if (dr == DialogResult.OK)
            {
                IProduct newProduct = ProductFactory.GetProduct(frmAddItem.GetCategory(), frmAddItem.GetName(), frmAddItem.GetPrice());
                billObj.AddItem(newProduct);
                UpdateBill();
                frmAddItem.Close();
            }
        }
コード例 #14
0
        private void Reformat()
        {
            //Creating invoice model

            DateTime now  = DateTime.Now;
            string   date = String.Format("{0:MMMMM yyyy}", now);

            //Create Receiver from
            Company company = new Company();

            company.Name     = "Tester";
            company.Email    = "*****@*****.**";
            company.Address1 = "59 Paisley Street";
            company.Address2 = "Footscray, Victoria";
            company.Postcode = "3011";
            company.Country  = "Australia";

            //Create Transaction
            Invoice invoice = new Invoice(now, 14);

            invoice.Company   = company;
            invoice.Sender    = new Sender();
            invoice.InvoiceNo = "Tester";

            //Create Item
            Item item = new Item("Emprevo monthly subscription" + " - " + date, "55", "4");

            invoice.AddItem(item);

            //Saving invoice data to company
            company.InvoiceNo           = invoice.InvoiceNo;
            company.RecentDate          = invoice.InvoiceDate;
            company.RecentActiveWorkers = "55";
            company.RecentTotal         = invoice.Total;
            company.RecentRate          = "4";

            InvoiceBL bl = new InvoiceBL();
            //Upload the content of file to cloud

            GCPAdapter adapter = new GCPAdapter();

            adapter.UploadObject("apiemprevo.appspot.com", "Test" + ".pdf", "application/pdf", bl.CreateInvoiceMemoryStream(invoice));
        }
コード例 #15
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            decimal amount, tip;

            amount = decimal.TryParse(AmountField.Text, out amount) ? amount : 1;
            tip    = decimal.TryParse(GratuityField.Text, out tip) ? tip : 0;

            var invoice = new Invoice(null);

            invoice.AddItem("Amount", decimal.One, amount, "", "");
            if (tip > 0)
            {
                invoice.GratuityAmount = tip;
            }

            RetailSDK.WpfContentGridForUi = (Grid)Content;
            var transaction = RetailSDK.CreateTransaction(invoice);

            transaction.Begin();
        }
コード例 #16
0
        public void Add_Date_To_Items_If_Date_Is_A_Day_Before_CreateDate_Of_Current_Month()
        {
            //Arrange
            var invoice = new Invoice("", new Customer(), new DateTime(2021, 2, 12));
            var item    = new MaintenanceInvoiceItem(new DateTime(2021, 2, 22), 1);

            invoice.AddItem(item);

            var list = new List <InvoiceItem>();

            list.Add(item);

            var expected = list;

            //Act;
            var actual = invoice.RetrieveItems().ToList();

            //Assert
            CollectionAssert.AreEqual(expected, actual);
        }
コード例 #17
0
        public void ProcessMessage(IHandlerContext <CreateInvoiceCommand> context)
        {
            // simulate slow processing
            Thread.Sleep(1000);

            var message = context.Message;

            var invoice = new Invoice(message.OrderId)
            {
                AccountContact = new InvoiceAccountContact(message.AccountContactName, message.AccountContactEMail)
            };

            foreach (var item in message.Items)
            {
                invoice.AddItem(item.Description, item.Price);
            }

            invoice.GenerateInvoiceNumber();

            using (_databaseContextFactory.Create(InvoicingData.ConnectionStringName))
            {
                _repository.Add(invoice);
            }

            var orderCreatedEvent = new InvoiceCreatedEvent
            {
                InvoiceId           = invoice.Id,
                InvoiceNumber       = invoice.InvoiceNumber,
                InvoiceDate         = invoice.InvoiceDate,
                AccountContactName  = message.AccountContactName,
                AccountContactEMail = message.AccountContactEMail
            };

            orderCreatedEvent.Items.AddRange(message.Items);

            context.Publish(orderCreatedEvent);
        }
コード例 #18
0
        Invoice WalkInvoiceSearchRet(IInvoiceRet InvoiceRet)
        {
            Invoice invoice = new Invoice();

            if (InvoiceRet == null)
            {
                return(null);
            }
            invoice.TxnID        = InvoiceRet.TxnID.GetValue().ToString();
            invoice.TimeCreated  = (DateTime)InvoiceRet.TimeCreated.GetValue();
            invoice.TimeModified = (DateTime)InvoiceRet.TimeModified.GetValue();
            invoice.EditSequence = (string)InvoiceRet.EditSequence.GetValue();
            if (InvoiceRet.RefNumber != null)
            {
                invoice.ID = InvoiceRet.RefNumber.GetValue();
            }
            if (InvoiceRet.TxnNumber != null)
            {
                invoice.TxnNumber = InvoiceRet.TxnNumber.GetValue().ToString();
            }
            //Get value of FullName
            if (InvoiceRet.CustomerRef.FullName != null)
            {
                invoice.CustomerName = (string)InvoiceRet.CustomerRef.FullName.GetValue();
            }
            if (InvoiceRet.ClassRef != null)
            {
                //Get value of FullName
                if (InvoiceRet.ClassRef.FullName != null)
                {
                    invoice.ClassRef = (string)InvoiceRet.ClassRef.FullName.GetValue();
                }
            }
            //Discount Items
            if (InvoiceRet.DiscountLineRet != null)
            {
                if (InvoiceRet.DiscountLineRet.AccountRef != null)
                {
                    invoice.DiscountAccountRef = InvoiceRet.DiscountLineRet.AccountRef.FullName.GetValue();
                }
            }



            #region attributes

            if (InvoiceRet.BillAddress != null)
            {
                ///Get value of Addr1
                if (InvoiceRet.BillAddress.Addr1 != null)
                {
                    invoice.BillAddress1 = (string)InvoiceRet.BillAddress.Addr1.GetValue();
                }
                ////Get value of Addr2

                ////Get value of City
                if (InvoiceRet.BillAddress.City != null)
                {
                    invoice.City = (string)InvoiceRet.BillAddress.City.GetValue();
                }
                ////Get value of State
                if (InvoiceRet.BillAddress.State != null)
                {
                    invoice.State = (string)InvoiceRet.BillAddress.State.GetValue();
                }
                ////Get value of PostalCode
                if (InvoiceRet.BillAddress.PostalCode != null)
                {
                    invoice.PostalCode = (string)InvoiceRet.BillAddress.PostalCode.GetValue();
                }
                ////Get value of Country
                if (InvoiceRet.BillAddress.Country != null)
                {
                    invoice.Country = (string)InvoiceRet.BillAddress.Country.GetValue();
                }
                ////Get value of Note
            }

            invoice.Amount = InvoiceRet.BalanceRemaining.GetValue().ToString();

            if (InvoiceRet.ShipAddress != null)
            {
                ////Get value of Addr1
                if (InvoiceRet.ShipAddress.Addr1 != null)
                {
                    invoice.ShipAddress = (string)InvoiceRet.ShipAddress.Addr1.GetValue();
                }

                ////Get value of City
                if (InvoiceRet.ShipAddress.City != null)
                {
                    invoice.Ship_City = (string)InvoiceRet.ShipAddress.City.GetValue();
                }
                ////Get value of State
                if (InvoiceRet.ShipAddress.State != null)
                {
                    invoice.Ship_State = (string)InvoiceRet.ShipAddress.State.GetValue();
                }
                ////Get value of PostalCode
                if (InvoiceRet.ShipAddress.PostalCode != null)
                {
                    invoice.Ship_PostalCode = (string)InvoiceRet.ShipAddress.PostalCode.GetValue();
                }
                ////Get value of Country
                if (InvoiceRet.ShipAddress.Country != null)
                {
                    invoice.Ship_Country = (string)InvoiceRet.ShipAddress.Country.GetValue();
                }
            }


            ////Get value of DueDate
            if (InvoiceRet.DueDate != null)
            {
                invoice.DueDate = (DateTime)InvoiceRet.DueDate.GetValue();
            }

            //if (InvoiceRet.FOB != null)
            // {
            //= (string)InvoiceRet.FOB.GetValue();

            //}
            ////Get value of ShipDate
            if (InvoiceRet.ShipDate != null)
            {
                invoice.ShipDate = (DateTime)InvoiceRet.ShipDate.GetValue();
            }

            ////Get value of Memo
            if (InvoiceRet.Memo != null)
            {
                invoice.Memo = (string)InvoiceRet.Memo.GetValue();
            }
            ////Get value of IsPaid
            if (InvoiceRet.IsPaid != null)
            {
                //{
                invoice.IsPaid = (bool)InvoiceRet.IsPaid.GetValue();
            }

            //}


            ////Get value of Amount
            //double Amount88 = (double)LinkedTxn.Amount.GetValue();

            //}

            //}
            if (InvoiceRet.ORInvoiceLineRetList != null)
            {
                invoice.lineitem = new List <InvoiceLineItem>();
            }

            //{
            for (int i = 0; i < InvoiceRet.ORInvoiceLineRetList.Count; i++)
            {
                IORInvoiceLineRet ORInvoiceLineRet = InvoiceRet.ORInvoiceLineRetList.GetAt(i);
                InvoiceLineItem   item             = new InvoiceLineItem();
                if (ORInvoiceLineRet.InvoiceLineRet != null)
                {
                    ////Get value of TxnLineID
                    item.TxnLineID = (string)ORInvoiceLineRet.InvoiceLineRet.TxnLineID.GetValue();
                    if (ORInvoiceLineRet.InvoiceLineRet.ItemRef != null)
                    {
                        if (ORInvoiceLineRet.InvoiceLineRet.ItemRef.FullName != null)
                        {
                            item.Item = (string)ORInvoiceLineRet.InvoiceLineRet.ItemRef.FullName.GetValue();
                        }
                    }
                    ////Get value of Desc
                    if (ORInvoiceLineRet.InvoiceLineRet.Desc != null)
                    {
                        item.Desc = (string)ORInvoiceLineRet.InvoiceLineRet.Desc.GetValue();
                    }
                    ////Get value of Quantity
                    if (ORInvoiceLineRet.InvoiceLineRet.Quantity != null)
                    {
                        item.Quantity = (int)ORInvoiceLineRet.InvoiceLineRet.Quantity.GetValue();
                    }

                    //}
                    if (ORInvoiceLineRet.InvoiceLineRet.ClassRef != null)
                    {
                        ////Get value of FullName
                        if (ORInvoiceLineRet.InvoiceLineRet.ClassRef.FullName != null)
                        {
                            //{
                            item.ClassRef = (string)ORInvoiceLineRet.InvoiceLineRet.ClassRef.FullName.GetValue();
                        }
                    }

                    //}
                    ////Get value of Amount
                    if (ORInvoiceLineRet.InvoiceLineRet.Amount != null)
                    {
                        item.Amount = (double)ORInvoiceLineRet.InvoiceLineRet.Amount.GetValue();
                    }

                    invoice.AddItem(item);
                }
            }
            #endregion

            return(invoice);
        }
コード例 #19
0
 private static TransactionContext CreateTxContext(decimal amount)
 {
     var invoice = new Invoice(null);
     invoice.AddItem("Amount", decimal.One, amount, "", "");
     return RetailSDK.CreateTransaction(invoice);
 }