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(); }
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")); }
public async Task <IActionResult> SaleDetail(int shopId, string billDate, string goodsName) { SaleDetailViewModel model = await GetGoodsSale(shopId, billDate, goodsName); return(View(model)); }
public SaleDetailPage(SaleDetailViewModel vm) { InitializeComponent(); BindingContext = vm; }
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 }