Exemple #1
0
        private async Task <SaleDetailViewModel> GetGoodsSale(int shopId, string billDate, string goodsName)
        {
            var tempDate  = DateTime.Parse(billDate);
            var fristDate = tempDate.AddDays(1 - DateTime.Now.Day).Date;                             //当月第一天
            var lastDate  = tempDate.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddSeconds(-1); // 当月最后一天

            var queryableOrder = from o in _context.OrderRecords
                                 where o.ShopId == shopId && o.Status == 10 && (o.OrderDate > fristDate && o.OrderDate < lastDate)
                                 select o.Id;

            var orderIds = await queryableOrder.ToArrayAsync();

            var queryableGoods = from o in _context.OrderRecordDetails
                                 where orderIds.Contains(o.OrderId) &&
                                 (string.IsNullOrEmpty(goodsName) || o.Name.StartsWith(goodsName))
                                 group o by new { o.GoodsId, o.Name } into g
                select new SaleDetailRow
            {
                GoodsId     = g.Key.GoodsId,
                GoodsName   = g.Key.Name,
                SaleCount   = g.Sum(sc => sc.Num),
                TotalAmount = g.Sum(ta => ta.Num * ta.Price)
            };

            var model = new SaleDetailViewModel
            {
                BillDate       = billDate,
                ShopId         = shopId,
                GoodsName      = goodsName,
                SaleDetailRows = await queryableGoods.ToListAsync()
            };

            return(model);
        }
        public ActionResult Create()
        {
            string code = _saleManager.GetLastSaleCode();


            string year = DateTime.Parse(DateTime.Now.ToString()).Year.ToString();

            if (code == null)
            {
                code = year + "-0001";
            }
            else
            {
                string[] afterSplit = code.Split('-');

                string serialNo = afterSplit[afterSplit.Length - 1];
                int    number   = int.Parse(serialNo);
                code = year + "-" + (++number).ToString("D" + serialNo.Length);
            }


            SaleDetailViewModel model = new SaleDetailViewModel
            {
                Customers  = _customerManager.GetAll(),
                Categories = _categoryManager.GetAll(),
                Products   = _productManager.GetAll(),
                SaleDetail = new SaleDetail(),
                Code       = code
            };

            return(View(model));
        }
 public CustomerProductViewModel(SaleDetailViewModel x, string productName, double salePrice)
 {
     Total = x.Total;
     Quantity = x.Quantity;
     ProductName = x.ProductDetailName;
     InvoiceNumber = x.SaleOrderNo;
     Price = x.SalePricePerUnit;
 }
        public async Task <ActionResult> Calculate(SaleDetailViewModel saleDetail)

        {
            if (!ModelState.IsValid)
            {
                string messages = string.Join("; ", ModelState.Values
                                              .SelectMany(x => x.Errors)
                                              .Select(x => x.ErrorMessage));

                _logger.LogError(messages);

                return(BadRequest(messages));
            }

            try
            {
                using (var client = new HttpClient())
                {
                    // This should come from IConfiguration.
                    var url = _configuration["ApiBaseUrl"];
                    client.BaseAddress = new Uri(url);

                    string        saleData    = JsonConvert.SerializeObject(saleDetail);
                    StringContent httpContent = new StringContent(saleData, Encoding.UTF8, "application/json");

                    //HTTP POST
                    var response = await client.PostAsync(client.BaseAddress + "/shares/calculate-fifo-method", httpContent);

                    if (response.IsSuccessStatusCode)
                    {
                        var responseContent = await response.Content.ReadAsStringAsync();

                        var shareInfoResponse = JsonConvert.DeserializeObject <ShareInfoViewModel>(responseContent);

                        return(View("ShareInfo", shareInfoResponse));
                    }
                    else
                    {
                        var message = await response.Content.ReadAsStringAsync();

                        _logger.LogError(message);
                        return(BadRequest(message));
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex.StackTrace);
                return(BadRequest(ex.StackTrace));
            }
        }
 public HistoryViewModel(SaleDetailViewModel model, string productName, double salePrice)
 {
     Id              = model.Id;
     Date            = model.Modified;
     Type            = "Sale";
     Total           = model.Total;
     Quantity        = model.Quantity;
     Paid            = model.PaidAmount;
     Due             = model.DueAmount;
     UnitPrice       = salePrice;
     ProductName     = productName;
     ProductDetailId = model.ProductDetailId;
     SaleId          = model.SaleId;
     InvoiceNumber   = model.SaleOrderNo;
     OrderState      = model.OrderState;
     State           = model.OrderState.ToString();
 }
Exemple #6
0
        public async Task <IActionResult> ExportSales(int shopId, string billDate)
        {
            string   sWebRootFolder = _hostingEnvironment.WebRootPath;
            string   sFileName      = $"{Guid.NewGuid()}.xlsx";
            FileInfo file           = new FileInfo(Path.Combine(sWebRootFolder, sFileName));

            using (ExcelPackage package = new ExcelPackage(file))
            {
                // 添加worksheet
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(billDate);

                worksheet.Cells[1, 1, 1, 4].Merge = true;

                worksheet.Cells[1, 1].Value = billDate + "销售统计单";

                worksheet.Row(1).Height                    = 35;
                worksheet.Row(1).Style.Font.Size           = 16;
                worksheet.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                worksheet.Row(1).Style.VerticalAlignment   = ExcelVerticalAlignment.Center;

                worksheet.Cells[2, 1].Value = "编号";
                worksheet.Cells[2, 2].Value = "商品名称";
                worksheet.Cells[2, 3].Value = "销售数量";
                worksheet.Cells[2, 4].Value = "销售总额";

                worksheet.Column(4).Style.Numberformat.Format = "0.00";

                SaleDetailViewModel model = await GetGoodsSale(shopId, billDate, null);

                for (int i = 0; i < model.SaleDetailRows.Count; i++)
                {
                    var index = i + 3;
                    worksheet.Cells["A" + index].Value = model.SaleDetailRows[i].GoodsId;
                    worksheet.Cells["B" + index].Value = model.SaleDetailRows[i].GoodsName;
                    worksheet.Cells["C" + index].Value = model.SaleDetailRows[i].SaleCount;
                    worksheet.Cells["D" + index].Value = model.SaleDetailRows[i].TotalAmount;
                }

                package.Save();
            }
            return(File(sFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", billDate + ".xlsx"));
        }
Exemple #7
0
        public async Task <IActionResult> SaleDetail(int shopId, string billDate, string goodsName)
        {
            SaleDetailViewModel model = await GetGoodsSale(shopId, billDate, goodsName);

            return(View(model));
        }
Exemple #8
0
 public SaleDetailPage(SaleDetailViewModel vm)
 {
     InitializeComponent();
     BindingContext = vm;
 }
Exemple #9
0
        private void btnPayment_Click(object sender, EventArgs e)
        {
            if (rbCash.Checked == true)
            {
                paidMoney = decimal.Parse(txtOdenenPara.Text);
            }


            new SaleRepo().SalesBusiness(pType, products, paidMoney, _totalPrice, out this.id, out remainderOfMoney, nuSellQuantity.Value);
            #region stock düşümü
            var prods = new ProductRepo().GetAll();
            foreach (var prod in prods)
            {
                foreach (ListViewItem item in lvBuyList.Items)
                {
                    if (item.Text == prod.Barcode)
                    {
                        prod.StockQuantity = prod.StockQuantity - Convert.ToDecimal(item.SubItems[2].Text);
                    }
                }
            }
            int a = new ProductRepo().Update();
            #endregion
            lblRemainderOfMoney.Text = remainderOfMoney.ToString();
            MessageBox.Show($"Fiş numarasi : {id}, Yine bekleriz..");

            #region pdf
            /// --------------------pdf için düzenlenecek
            Sale       sale = new Sale();
            SaleDetail sd   = new SaleDetail();
            List <SaleDetailViewModel> saleDetailViewModels = new List <SaleDetailViewModel>();
            SaleViewModel saleViewModel = new SaleViewModel()
            {
                id             = sale.Id,
                PaymentTypes   = sale.PaymentTypes,
                SaleDetailList = saleDetailViewModels
            };
            SaleDetailViewModel saleDetailViewModel = new SaleDetailViewModel()
            {
                id          = sd.Id,
                id2         = sd.Id2,
                ProductName = sd.ProductName,
                Quantity    = sd.Quantity,
                TotalPrice  = sd.TotalPrice
            };

            using (SaveFileDialog sfd = new SaveFileDialog()
            {
                Filter = "PDF File|*.pdf", ValidateNames = true
            })
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    Document doc = new Document(PageSize.A5.Rotate());
                    try
                    {
                        PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
                        doc.Open();
                        var urunsatis = lvBuyList.Items;


                        doc.Add(new Paragraph("Wissen \nBesiktas/ISTANBUL \nKuloglu Mh., Barbaros Blv. Yildiz IS Hani No:9"));
                        doc.Add(new Paragraph($"\nFis No:{id}\nTarih:{sale.CreatedDate}\n"));
                        doc.Add(new Paragraph("\nÜrün Listesi\n------------------------------------------------------\n"));
                        foreach (var item in products)
                        {
                            doc.Add(new Paragraph(item.ToString()));
                        }
                        //foreach (var item in urunsatis)
                        //{
                        //    //doc.Add(new Paragraph(Convert.ToString(ProductName.ToList())));
                        //    doc.Add(new Paragraph(item.ToString()));
                        //}
                        if (rbCash.Checked == true)
                        {
                            pymnt = "Nakit ";

                            doc.Add(new Paragraph($"------------------------------------------------------\nAlinan Para: {txtOdenenPara.Text}\nPara Üstü:{Convert.ToDecimal(lblRemainderOfMoney.Text):c2}"));
                        }
                        else if (rbCreditCard.Checked == true)
                        {
                            pymnt = "Kredi Kartı";
                            doc.Add(new Paragraph($"------------------------------------------------------\nAlinan Para: {lblTotalPrice.Text}"));
                        }

                        doc.Add(new Paragraph($"\nÖdeme Yöntemi : {pymnt}"));
                        doc.Add(new Paragraph($"\nTutar : {lblTotalPrice.Text:c2}"));
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    finally
                    {
                        doc.Close();
                    }
                }
            #endregion
        }