コード例 #1
0
        private async void btnFinish_Click(object sender, EventArgs e)
        {
            List <CommonContract> list = await SAContract.GetAllContracts("Direct Sale");

            if (list.Count > 1 || list.Count == 0)
            {
                MessageBox.Show("Can not find direct sale user!");
                return;
            }

            CommonSale s = new CommonSale();

            s.BuyerId   = list.First().PartnerId;
            s.SellerId  = (DataHolder.Owner.OwnerId);
            s.SoldItems = new List <CommonSoldItem>();


            foreach (DataGridViewRow row in dgvSoldGoods.Rows)
            {
                var index = (int)row.Cells[6].Value;
                KeyValuePair <int, decimal> pair = DataHolder.Settings.VatSettingsByGroup.FirstOrDefault(p => p.Key == index);
                var item = new CommonSoldItem();
                if (row.Cells[5].Value != null)
                {
                    item.Price    = (1 + pair.Value) * decimal.Parse(row.Cells[3].Value.ToString());
                    item.Quantity = int.Parse(row.Cells[1].Value.ToString());
                    item.ItemId   = (Guid)row.Cells[5].Value;

                    s.SoldItems.Add(item);
                }
            }

            var sale = await SASale.PostCreateDirectSale(s);

            if (sale == null)
            {
                errorLabel.Visible = true;
                errorLabel.Text    = "not_enough_quantity";
            }
            else
            {
                ClearAll();
            }

            SalesReceiptForm form = new SalesReceiptForm(sale);

            if (form.ShowDialog() == DialogResult.OK)
            {
            }
        }
コード例 #2
0
        internal static List <CommonSale> GetAllSales(string search)
        {
            DatabaseEntities entities   = new DatabaseEntities();
            List <Sale>      allDbSales = new List <Sale>();

            if (search.IsEmpty())
            {
                allDbSales = entities.Sales.ToList();
            }
            else
            {
                allDbSales = entities.Sales
                             .Include(p => p.Partner)
                             .Where(p => p.Partner.CompanyName.Contains(search))
                             .ToList();
            }

            List <CommonSale> allSales = new List <CommonSale>();

            foreach (var dbSale in allDbSales)
            {
                CommonSale sale = new CommonSale();
                sale.BuyerId          = dbSale.BuyerId;
                sale.Date             = dbSale.Date;
                sale.InvoiceId        = dbSale.Document?.InvoiceNumber.ToString();
                sale.SaleId           = dbSale.SaleId;
                sale.SellerId         = dbSale.SellerId;
                sale.Type             = dbSale.Type;
                sale.PaymentCompleted = dbSale.PaymentCompleted;
                allSales.Add(sale);

                sale.SoldItems = new List <CommonSoldItem>();
                foreach (var h in dbSale.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);
                }
                sale.BuyerCompanyName = dbSale.Partner.CompanyName;
            }
            return(allSales);
        }
コード例 #3
0
        private async void btnGenerateInvoice_Click(object sender, EventArgs e)
        {
            //cbSearchContract.SelectedIndex = -1;
            CommonSale s = new CommonSale();

            s.BuyerId   = ((CommonContract)cbSearchContract.SelectedItem).PartnerId;
            s.SellerId  = DataHolder.PrimeryMol.MolId;//remove
            s.SellerId  = (DataHolder.Owner.OwnerId);
            s.SoldItems = new List <CommonSoldItem>();

            foreach (DataGridViewRow row in dgvSoldGoods.Rows)
            {
                var index = (int)row.Cells[6].Value;
                KeyValuePair <int, decimal> pair = DataHolder.Settings.VatSettingsByGroup.FirstOrDefault(p => p.Key == index);
                var item = new CommonSoldItem();
                if (row.Cells[5].Value != null)
                {
                    item.Price    = (1 + pair.Value) * decimal.Parse(row.Cells[3].Value.ToString());
                    item.Quantity = int.Parse(row.Cells[1].Value.ToString());
                    item.ItemId   = (Guid)row.Cells[5].Value;

                    s.SoldItems.Add(item);
                }
            }

            var sale = await SASale.PostCreateWholeSale(s);

            if (sale == null)
            {
                MessageBox.Show("Sale not saved!");
                return;
            }
            ClearAll();



            InvoiceTemplateForm form = new InvoiceTemplateForm(sale);

            if (form.ShowDialog() == DialogResult.OK)
            {
            }
        }
コード例 #4
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);
            }
        }