Inheritance: ClosedItem
示例#1
0
        public async Task <SoldItem> GetSoldItemById(int?soldItemId)
        {
            var result         = string.Empty;
            var soldItemResult = new SoldItem();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(this.soldItemServiceBase);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var urlAddress = soldItemServiceBase + soldItemId;

                HttpResponseMessage response = await client.GetAsync(urlAddress).ConfigureAwait(continueOnCapturedContext: false);

                if (response.IsSuccessStatusCode)
                {
                    result = await response.Content.ReadAsStringAsync();
                }

                try
                {
                    soldItemResult = JsonConvert.DeserializeObject <SoldItem>(result);
                }
                catch (Exception e)
                {
                    throw new Exception($"Error: {e.StackTrace}");
                }
            }

            return(soldItemResult);
        }
示例#2
0
        public JObject Post([FromBody] SoldItem soldItem)
        {
            // Add a new SoldItem to the "Database"

#if DEBUG
            // Print POST Request
            Console.WriteLine("POST " + ROUTE);
#endif

            // When soldItem is not given or incorrect
            if (soldItem == null || soldItem.ArticleNumber == null || soldItem.ArticleNumber.Equals(""))
            {
                return(new JObject(
                           new JProperty("status", 1),
                           new JProperty("description", "You have to provide a valid JSON Object of the article in the POST request body.For an example have a look at the documentation.")
                           ));
            }

            Database.addSoldItem(soldItem);

            return(new JObject(
                       new JProperty("status", 0),
                       new JProperty("description", "Article " + soldItem.ArticleNumber + " was sold for " + soldItem.SalesPrice + "€.")
                       ));
        }
示例#3
0
        public void AssignPrice_CorrectValue_ReturnItem()
        {
            SoldItem item = new SoldItem(1, 1.5, 1);

            Assert.That(item.Price, Is.EqualTo(1.5));
            Assert.That(item.Quantity, Is.EqualTo(1));
        }
示例#4
0
        // get list of SoldItems using configured Database connection
        public static List <SoldItem> GetSoldItems(Invoice invoice)
        {
            List <SoldItem> items = new List <SoldItem>();

            try
            {
                OdbcCommand scmd = new OdbcCommand("SELECT i.Ref, i.ItemCode, j.Description, i.InvoiceNo, i.Quantity, i.UnitPrice FROM solditem i, item j WHERE i.ItemCode=j.ItemCode AND i.InvoiceNo = ?", DBConnection.getConnection());
                scmd.Parameters.Add("@invoice", OdbcType.Int).Value = invoice.InvoiceNo;
                OdbcDataReader sdr = scmd.ExecuteReader();
                while (sdr.Read())
                {
                    SoldItem solditem = new SoldItem();
                    solditem.Ref = Convert.ToInt32(sdr["Ref"]);
                    Item item = new Item();
                    item.ItemCode      = Convert.ToInt32(sdr["ItemCode"]);
                    item.Description   = sdr["Description"].ToString();
                    solditem.Item      = item;
                    solditem.Invoice   = invoice;
                    solditem.Quantity  = Convert.ToInt32(sdr["Quantity"]);
                    solditem.UnitPrice = Convert.ToDouble(sdr["UnitPrice"]);
                    items.Add(solditem);
                }
                sdr.Close();
            }
            catch (Exception ex)
            {
                SetErrMsg(ex.Message);
            }
            return(items);
        }
示例#5
0
        public SoldItem GetSoldItemById(int id)
        {
            var soldItemById = new SoldItem();

            using (MySqlConnection conn = GetConnection())
            {
                conn.Open();
                MySqlCommand cmd = new MySqlCommand(Queries.GetSoldItemById, conn);
                cmd.Parameters.Add("@id", MySqlDbType.Int16).Value = id;

                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        soldItemById.SoldItemId  = Convert.ToInt32(reader["SoldItemId"]);
                        soldItemById.Title       = reader["Title"].ToString();
                        soldItemById.Category    = reader["Category"].ToString();
                        soldItemById.Price       = Convert.ToDecimal(reader["Price"]);
                        soldItemById.MadeYear    = reader["MadeYear"].ToString();
                        soldItemById.Description = reader["Description"].ToString();
                        soldItemById.UserId      = Convert.ToInt32(reader["UserId"]);
                    }
                }
            }
            return(soldItemById);
        }
        private void Add(viewProductDetail Sender, SoldItem Receiver)
        {
            // one row will be added in the Sold Items Table and the transferred product will be decreased
            Receiver.ProductName   = Sender.ProductName;
            Receiver.Strength      = Sender.Strength;
            Receiver.GenericName   = Sender.GenericName;
            Receiver.Quantity      = int.Parse(txtQuantity.Text);
            Receiver.PackSize      = Sender.PackSize;
            Receiver.QtyPackSize   = Sender.QtyPackSize;
            Receiver.ReorderLevel  = Sender.ReorderLevel;
            Receiver.BatchNo       = Sender.BatchNo;
            Receiver.ExpiryDate    = Sender.ExpiryDate;
            Receiver.DateSold      = dpDateSold.SelectedDate == null ? DateTime.Today : dpDateSold.SelectedDate;
            Receiver.Location      = Sender.Location;
            Receiver.MajorSupplier = Sender.MajorSupplier;
            Receiver.Origin        = Sender.Origin;
            Receiver.CostPerUnit   = Sender.CostPerUnit;
            Receiver.TotalCost     = Receiver.Quantity * Receiver.QtyPackSize * Receiver.CostPerUnit;

            Sender.Quantity  = Sender.Quantity - int.Parse(txtQuantity.Text);
            Sender.TotalCost = Sender.Quantity * Sender.QtyPackSize * Sender.CostPerUnit;
            db.SaveChanges();

            db.SoldItems.Add(Receiver);
            db.SaveChanges();
        }
        private void btnTransfer_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (EditId == -1)
                {
                    MessageBox.Show("Please Select a row first.", "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                SoldItem          Receiver = new SoldItem();
                viewProductDetail Sender   = new viewProductDetail();

                Sender = GetStockItems()[EditId];

                if (int.Parse(txtQuantity.Text) > Sender.Quantity)
                {
                    MessageBox.Show("Mentioned Quantity is more than the total quantity.", "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                this.Add(Sender, Receiver);

                this.RefreshDataGrid();
                this.ClearFields();
                btnSold.Visibility = Visibility.Visible;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.StackTrace); }
        }
        public ActionResult <SoldItem> CreateSoldItem(SoldItem SoldItem)
        {
            //var SoldItemEntity = _mapper.Map<Entities.SoldItem>(SoldItem);
            _SoldItemRepository.AddSoldItem(SoldItem);
            _SoldItemRepository.Save();

            //var SoldItemReturn = _mapper.Map<SoldItemDto>(SoldItemEntity);
            return(CreatedAtRoute("GetSoldItem", new { SoldItemId = SoldItem.Id }, SoldItem));
        }
示例#9
0
        private void Adv_ItemSelected(object sender, ItemInfoHolder e)
        {
            Console.WriteLine("add item here");

            using (var p = new POSEntities())
            {
                var targetSale = p.Sales.FirstOrDefault(x => x.Id == sale.Id);

                var newSoldItem = new SoldItem();

                InventoryItem Inv = null;

                if (!string.IsNullOrEmpty(e.Serial))
                {
                    Inv = p.InventoryItems.FirstOrDefault(x => x.SerialNumber == e.Serial);
                }
                else
                {
                    Inv = p.InventoryItems.FirstOrDefault(x => x.Product.Item.Name == e.Name && x.Product.Supplier.Name == e.Supplier);
                }

                //Console.WriteLine(Inv.Product.Item.Name);
                newSoldItem.SaleId       = sale.Id;
                newSoldItem.Product      = p.Products.FirstOrDefault(x => x.Item.Name == e.Name && x.Supplier.Name == e.Supplier);
                newSoldItem.SerialNumber = e.Serial;
                int rem = -1;

                newSoldItem.Quantity  = calculateQuantity(e.Quantity, Inv.Quantity, out rem);
                newSoldItem.ItemPrice = e.SellingPrice;
                newSoldItem.Discount  = e.discount;
                Console.WriteLine(rem);
                if (rem == 0)
                {
                    p.InventoryItems.Remove(Inv);
                }
                else if (rem > 0)
                {
                    Inv.Quantity = rem;
                }

                p.SoldItems.Add(newSoldItem);
                p.SaveChanges();

                OnSave?.Invoke(this, null);

                itemsTable.Rows.Add(newSoldItem.Id,
                                    newSoldItem.Product.Item.Name,
                                    newSoldItem.SerialNumber,
                                    newSoldItem.Quantity,
                                    string.Format("₱ {0:n}", newSoldItem.ItemPrice),
                                    newSoldItem.Discount,
                                    string.Format("₱ {0:n}", (newSoldItem.Quantity * newSoldItem.ItemPrice) * ((100 - newSoldItem.Discount) / 100)),
                                    newSoldItem.Product.Supplier?.Name,
                                    "Return Item");
            }
        }
示例#10
0
        private void SoldItemToListViewItem(ListView listview, SoldItem item)
        {
            // add solditem to list view
            ListViewItem listItem;

            listItem = listview.Items.Add(String.Format("ITM{0:0000}", item.Item.ItemCode));
            listItem.SubItems.Add(item.Item.Description);
            listItem.SubItems.Add(item.Quantity.ToString());
            listItem.SubItems.Add(String.Format("{0:f}", item.UnitPrice));
            listItem.SubItems.Add(String.Format("{0:f}", (Convert.ToDouble(item.Quantity) * item.UnitPrice)));
        }
        public IActionResult Create(string title, string category, decimal price, string madeYear, string description)
        {
            int userId = Int32.Parse(User.FindFirst("UserId").Value);

            SoldItem soldItem = new SoldItem()
            {
                Title = title, Category = category, Price = price, MadeYear = madeYear, Description = description, UserId = userId
            };

            sellBuyClient.CreateSoldItem(soldItem);
            return(RedirectToAction("Index", "Home"));
        }
示例#12
0
        public ActionResult Report([Bind(Include = "Date")] DateTime reportDate)
        {
            IDictionary <Ingredient, int> IngredientsUsed = Calculations.IngredientsUsedForWeek();
            IList <double> WeeklyProfit = Calculations.WeeklyProfit(IngredientsUsed);
            WeeklyReport   weeklyReport = new WeeklyReport(IngredientsUsed, WeeklyProfit);

            weeklyReport.Date = reportDate;

            if (ModelState.IsValid)
            {
                db.WeeklyReports.Add(weeklyReport);
                db.SaveChanges();
            }

            foreach (var item in IngredientsUsed)
            {
                UsedIngredient ingredient = new UsedIngredient
                {
                    Index        = Guid.NewGuid(),
                    ReportDate   = reportDate,
                    Report       = db.WeeklyReports.FirstOrDefault(s => s.Date == reportDate),
                    IngredientId = item.Key.Id,
                    Ingredient   = db.Ingredients.FirstOrDefault(s => s.Id == item.Key.Id),
                    AmountUsed   = item.Value
                };
                if (ModelState.IsValid)
                {
                    db.UsedIngredients.Add(ingredient);
                }
                db.Ingredients.FirstOrDefault(s => s.Id == item.Key.Id).Quantity -= item.Value;
            }

            foreach (var item in db.MenuItems)
            {
                SoldItem sold = new SoldItem
                {
                    ReportDate = reportDate,
                    Report     = db.WeeklyReports.FirstOrDefault(s => s.Date == reportDate),
                    MenuItemId = item.ID,
                    MenuItem   = db.MenuItems.FirstOrDefault(s => s.ID == item.ID),
                    AmountUsed = (int)item.QuantitySold
                };
                if (ModelState.IsValid)
                {
                    sold.Index = Guid.NewGuid();
                    db.SoldItems.Add(sold);
                }
                item.QuantitySold = 0;
            }
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public void AddSoldItem(SoldItem SoldItem)
        {
            if (SoldItem == null)
            {
                throw new ArgumentNullException(nameof(SoldItem));
            }
            // always set the UserId to the passed-in UserId
            _context.SoldItems.Add(SoldItem);

            var item = _context.Items.Where(c => c.Id == SoldItem.ItemId).FirstOrDefault();

            item.IsSold = true;
            _context.Items.Update(item);
        }
示例#14
0
        public async void CreateSoldItem(SoldItem soldItem)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(this.soldItemServiceBase);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var json = JsonConvert.SerializeObject(soldItem);

                HttpResponseMessage response = await client.PostAsync(soldItemServiceBase, new StringContent(json, Encoding.UTF8, "application/json"));

                response.EnsureSuccessStatusCode();
            }
        }
示例#15
0
        private void cmdAdd_Click(object sender, EventArgs e)
        {
            ListViewItem SelectedItem;
            double       price;
            Item         item;
            SoldItem     solditem;

            Control[] Fld = { cmbItems };
            if (validation.validate(Fld)) //validate inputs
            {
                item = items[cmbItems.SelectedIndex];
                if (!isAlready(String.Format("ITM{0:0000}", item.ItemCode))) //check item Already added
                {
                    if (item.Quantity >= txtQuantity.Value)                  // Check required quantity available in stoc
                    {
                        solditem = new SoldItem();                           //Initialized new item
                        price    = (txtDiscount.Enabled) ? (item.UnitPrice - ((Convert.ToDouble(txtDiscount.Value) / 100) * item.UnitPrice)) : item.UnitPrice;
                        itemcount++;
                        SelectedItem = lstItems.Items.Add(itemcount.ToString());
                        SelectedItem.SubItems.Add(String.Format("ITM{0:0000}", item.ItemCode));
                        SelectedItem.SubItems.Add(item.Description);
                        solditem.Item      = item;
                        solditem.UnitPrice = price;
                        solditem.Quantity  = Convert.ToInt32(txtQuantity.Value);
                        solditems.Add(solditem);
                        SelectedItem.SubItems.Add(txtQuantity.Value.ToString());
                        SelectedItem.SubItems.Add(String.Format("{0:0.00}", price));
                        SelectedItem.SubItems.Add(String.Format("{0:0.00}", price * Convert.ToDouble(txtQuantity.Value)));
                    }
                    else
                    {
                        // show error message if required quantity not available
                        MessageBox.Show(("Required quantity not in stock!\nRequired=" + txtQuantity.Value.ToString() + "\nAvalable=" + item.Quantity.ToString()), "Quantity", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    // show error message if item already added
                    MessageBox.Show("Item Already in Bucket List!, if you want to adjust quantity, remove it and add again", "Item", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                UpdateTotal(); // update total
            }
            else
            {
                MessageBox.Show(validation.getMessage(), "Validation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);  // show error message if validation error occurs
            }
        }
示例#16
0
        // inserts a Sold item using configured Database connection
        public static int InsertSoldItem(SoldItem item)
        {
            int i = 0;

            try
            {
                OdbcCommand scmd = new OdbcCommand("INSERT INTO solditem (ItemCode, InvoiceNo, Quantity, UnitPrice) VALUES(?,?,?,?)", DBConnection.getConnection());
                scmd.Parameters.Add("@ItemCode", OdbcType.Int).Value     = item.Item.ItemCode;
                scmd.Parameters.Add("@InvoiceNo", OdbcType.Int).Value    = item.Invoice.InvoiceNo;
                scmd.Parameters.Add("@Quantity", OdbcType.Int).Value     = item.Quantity;
                scmd.Parameters.Add("@UnitPrice", OdbcType.Double).Value = item.UnitPrice;
                i = scmd.ExecuteNonQuery();
                //item.Ref = GetLastInsert();
            }
            catch (Exception e)
            {
                SetErrMsg(e.Message);
            }
            return(i);
        }
示例#17
0
        public void CreateSoldItem(SoldItem soldItem)
        {
            try
            {
                using (MySqlConnection conn = GetConnection())
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand(Queries.CreateSoldItem, conn);
                    cmd.Parameters.Add("@title", MySqlDbType.VarChar).Value       = soldItem.Title;
                    cmd.Parameters.Add("@category", MySqlDbType.VarChar).Value    = soldItem.Category;
                    cmd.Parameters.Add("@price", MySqlDbType.Decimal).Value       = soldItem.Price;
                    cmd.Parameters.Add("@madeYear", MySqlDbType.Year).Value       = soldItem.MadeYear;
                    cmd.Parameters.Add("@description", MySqlDbType.VarChar).Value = soldItem.Description;
                    cmd.Parameters.Add("@userId", MySqlDbType.Int16).Value        = soldItem.UserId;

                    cmd.ExecuteReader();
                }
            }
            catch (Exception e)
            {
            }
        }
示例#18
0
        public void Test12_InsertInvoice()
        {
            double total = 0;

            solditem_a           = new SoldItem();
            solditem_a.Item      = items[0];
            solditem_a.UnitPrice = items[0].UnitPrice;
            solditem_a.Quantity  = 2;
            total               += solditem_a.UnitPrice * solditem_a.Quantity;
            solditem_b           = new SoldItem();
            solditem_b.Item      = items[1];
            solditem_b.UnitPrice = items[1].UnitPrice;
            solditem_b.Quantity  = 12;
            total               += solditem_b.UnitPrice * solditem_b.Quantity;

            invoice          = new Invoice();
            invoice.Customer = customers[0];
            invoice.IsPaid   = false;
            invoice.IsCredit = true;
            invoice.Total    = total;

            Assert.AreEqual(1, DataAccess.InsertInvoice(invoice));
        }
示例#19
0
        internal static CommonSale CreateSale(CommonSale sale, int documentType, bool isWhole = false)
        {
            try
            {
                bool             checker  = true;
                DatabaseEntities entities = new DatabaseEntities();
                foreach (var item in sale.SoldItems)
                {
                    WarehouseItem whItem = entities.WarehouseItems.FirstOrDefault(p => p.ItemId == item.ItemId);
                    if (whItem?.Quantity < item.Quantity)
                    {
                        checker = false;
                    }
                }

                if (checker)
                {
                    foreach (var item in sale.SoldItems)
                    {
                        WarehouseItem whItem = entities.WarehouseItems.FirstOrDefault(p => p.ItemId == item.ItemId);
                        if (whItem != null)
                        {
                            whItem.Quantity = whItem.Quantity.Value - item.Quantity;
                            entities.WarehouseItems.Attach(whItem);
                            var entry = entities.Entry(whItem);
                            entry.Property(e => e.Quantity).IsModified = true;
                        }
                    }

                    Sale s = new Sale();
                    s.BuyerId    = sale.BuyerId;
                    s.Date       = DateTime.Now;
                    s.DocumentId = null;
                    s.SellerId   = sale.SellerId;
                    s.SoldItems  = new List <SoldItem>();
                    Guid tempGuid = NewGuid();
                    s.SaleId = tempGuid;
                    ////
                    //// FIX payment completed after payment completed interface is ready. for now all are true;
                    ////
                    s.PaymentCompleted = true;
                    ////
                    ////
                    /////
                    foreach (var item in sale.SoldItems)
                    {
                        var i = new SoldItem
                        {
                            ItemId     = item.ItemId,
                            Price      = item.Price * 100,
                            Quantity   = item.Quantity,
                            SaleId     = s.SaleId,
                            SoldItemId = NewGuid()
                        };

                        s.SoldItems.Add(i);
                    }

                    if (isWhole)
                    {
                        var document = new Document();
                        document.PartnerId    = s.BuyerId;
                        document.OwnerId      = s.SellerId;
                        document.SaleId       = s.SaleId;
                        document.InvoiceId    = NewGuid();
                        document.DocumentType = documentType;
                        DocumentTypeCounter docType = entities.DocumentTypeCounters.FirstOrDefault(p => p.DocumentType == documentType);
                        if (docType != null)
                        {
                            Counter currentCounter = docType.Counter;
                            document.InvoiceNumber       = currentCounter.CurrentNumber + 1 ?? 1;
                            currentCounter.CurrentNumber = document.InvoiceNumber;
                            entities.Counters.Attach(currentCounter);
                            var entry = entities.Entry(currentCounter);
                            entry.Property(e => e.CurrentNumber).IsModified = true;
                            entities.SaveChanges();
                        }


                        Partner partner = entities.Partners.FirstOrDefault(p => p.PartnerId == s.BuyerId);

                        if (partner != null)
                        {
                            document.BuyerAddress     = partner.Address;
                            document.BuyerBulstat     = partner.Bulstat;
                            document.BuyerCompanyName = partner.CompanyName;
                            document.BuyerVATNumber   = partner.VATNumber;
                            MOL mol = entities.MOLs.FirstOrDefault(p => p.OwnerId == partner.PartnerId);
                            document.BuyerMol = mol != null ? $"{mol.FirstName} {mol.LastName}" : "";
                            decimal counter = 0;
                            foreach (var item in s.SoldItems)
                            {
                                WarehouseItem whItem = entities.WarehouseItems.FirstOrDefault(p => p.ItemId == item.ItemId);
                                counter += ((decimal)whItem.SellingPriceCent.Value / 100) * item.Quantity;
                            }
                            partner.Sum += counter;
                            List <PartnerDiscount> discount = entities.PartnerDiscounts.ToList();
                            foreach (PartnerDiscount t in discount)
                            {
                                if (partner.Sum >= t.RangeFrom && partner.Sum <= t.RangeTo)
                                {
                                    if (partner.PartnerType == t.PartnerType)
                                    {
                                        document.DiscountPercent = t.Discount;
                                    }
                                    else
                                    {
                                        partner.PartnerType      = t.PartnerType;
                                        document.DiscountPercent = t.Discount;
                                    }
                                }
                            }
                            entities.Partners.Attach(partner);
                            var entry = entities.Entry(partner);
                            entry.Property(e => e.Sum).IsModified         = true;
                            entry.Property(e => e.PartnerType).IsModified = true;
                            entities.SaveChanges();
                        }
                        Owner owner = entities.Owners.First();
                        document.OwnerAddress     = owner.Address;
                        document.OwnerBank        = owner.Bank;
                        document.OwnerBulstat     = owner.Bulstat;
                        document.OwnerIBAN        = owner.IBAN;
                        document.OwnerCompanyName = owner.CompanyName;
                        document.OwnerSwiftCode   = owner.SWIFTCode;
                        document.OwnerVATNumber   = owner.VATNumber;
                        MOL mol2 = entities.MOLs.FirstOrDefault(p => p.OwnerId == owner.OwnerId && p.IsPrimary);
                        if (mol2 != null)
                        {
                            document.OwnerMol = $"{mol2.FirstName} {mol2.LastName}";
                        }

                        s.Document = document;
                    }

                    entities.Sales.Add(s);
                    entities.SaveChanges();

                    sale.Date     = s.Date;
                    sale.BuyerId  = s.BuyerId;
                    sale.SaleId   = s.SaleId;
                    sale.SellerId = s.SellerId;
                    sale.Type     = s.Type;
                    if (isWhole)
                    {
                        sale.InvoiceId = s.Document.InvoiceNumber.ToString();
                    }

                    sale.SoldItems = new List <CommonSoldItem>();
                    //// FIx payment completed
                    sale.PaymentCompleted = true;

                    foreach (var h in s.SoldItems)
                    {
                        var item = new CommonSoldItem();
                        item.ItemId   = h.ItemId;
                        item.Price    = h.Price;
                        item.Quantity = h.Quantity;
                        item.SaleId   = h.SaleId;
                        sale.SoldItems.Add(item);
                    }
                    return(sale);
                }
                return(null);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
示例#20
0
        public void Post([FromBody] SoldItem soldItem)
        {
            ISoldItemRepository repository = HttpContext.RequestServices.GetService(typeof(SoldItemRepository)) as SoldItemRepository;

            repository.CreateSoldItem(soldItem);
        }
示例#21
0
        private void sell_Click(object sender, EventArgs e)
        {
            if (cartTable.RowCount == 0)
            {
                return;
            }
            if (string.IsNullOrEmpty(soldTo.Text))
            {
                MessageBox.Show("Customer cannot be empty");
                return;
            }
            if (MessageBox.Show("Are you sure you want to continue?", "Sale is about to be made.", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.No)
            {
                return;
            }
            using (var p = new POSEntities())
            {
                Sale newSale = new Sale();

                string username = UserManager.instance.currentLogin.Username;
                newSale.Login = p.Logins.FirstOrDefault(x => x.Username == username);

                Customer customer = p.Customers.FirstOrDefault(x => x.Name == soldTo.Text);
                newSale.CustomerId = customer.Id;

                newSale.Date           = DateTime.Now;
                newSale.AmountRecieved = amountRecieved.Value;
                newSale.SaleType       = saleType.Text;

                p.Sales.Add(newSale);

                for (int i = 0; i < cartTable.RowCount; i++)
                {
                    SoldItem s = new SoldItem();

                    var cartColumns = cartTable.Rows[i].Cells;
                    var itemId      = cartColumns[0].Value.ToString();
                    var itemSupp    = cartColumns[7].Value?.ToString();
                    var serial      = cartColumns[1].Value?.ToString();

                    s.Discount     = Convert.ToDecimal(cartColumns[5].Value);
                    s.SerialNumber = serial;
                    s.Quantity     = Convert.ToInt32(cartColumns[3].Value);
                    s.ItemPrice    = Convert.ToDecimal(cartColumns[4].Value);

                    s.Product = p.Products.FirstOrDefault(x => x.Item.Barcode == itemId && x.Supplier.Name == itemSupp);
                    //s.ItemName = cartColumns[2].Value.ToString();
                    //s.ItemSupplier = itemSupp;
                    ///Console.WriteLine(newSale.Id);
                    s.SaleId = newSale.Id;

                    var inventoryItem = p.InventoryItems.FirstOrDefault(x => x.Product.ItemId == itemId && x.Product.Supplier.Name == itemSupp && x.SerialNumber == serial);
                    if (inventoryItem != null && inventoryItem.Product.Item.Type == ItemType.Quantifiable.ToString())
                    {
                        inventoryItem.Quantity -= s.Quantity;

                        if (inventoryItem.Quantity == 0)
                        {
                            p.InventoryItems.Remove(inventoryItem);
                        }
                    }

                    p.SoldItems.Add(s);
                }

                p.SaveChanges();

                saleId = newSale.Id;
                OnSave?.Invoke(this, null);
                //MessageBox.Show("Sold Items.");
                if (isPrintReceipt.Checked)
                {
                    try
                    {
                        printDoc.Print();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Printing failed!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }

                this.Close();
            }
        }
示例#22
0
 public Task <ServiceResult> AddSoldItem(SoldItem model)
 {
     throw new NotImplementedException();
 }