public FormSaleOrderReport(crptSaleOrder rpt) { InitializeComponent(); crystalReportSaleOrder.ReportSource = rpt; }
private void btnSave_Click(object sender, EventArgs e) { var salrOrder = new SaleOrder { SaleOrderId = txtSaleOrderID.Text, SaleDate = Convert.ToDateTime(Convert.ToDateTime(dateSaleOrder.Text).ToShortDateString()), CusId = Convert.ToInt32(txtCustomerID.Text), UserId = CurrentUser.GetCurrentUserId, SaleType = SaleType.SaleOrder, SubTotal = float.Parse(txtSubtotal.Text.Replace("$", "")), DisPercent = float.Parse(txtDiscountP.Text.Replace("%", "")), DisAmount = float.Parse(txtDisAmount.Text.Replace("$", "")), Balance = float.Parse(txtBalance.Text.Replace("$", "")), Deposit = float.Parse(txtDeposit.Text.Replace("$", "")), GrandTotal = float.Parse(txtGrandTotal.Text.Replace("$", "")), Status = "New", Note = "" }; _appContext.SaleOrders.Add(salrOrder); for (var rowIndex = 0; rowIndex < dataGridView1.RowCount - 1; rowIndex++) { var per = dataGridView1.Rows[rowIndex].Cells[7].Value.ToString(); var vat = dataGridView1.Rows[rowIndex].Cells[9].Value.ToString(); var pr = dataGridView1.Rows[rowIndex].Cells[10].Value.ToString(); var am = dataGridView1.Rows[rowIndex].Cells[11].Value.ToString(); var saleOrderItem = new SaleOrderItem { SaleOrderId = txtSaleOrderID.Text, ProductId = int.Parse(dataGridView1.Rows[rowIndex].Cells[0].Value.ToString()), Qty = int.Parse(dataGridView1.Rows[rowIndex].Cells[6].Value.ToString()), DisPercent = float.Parse(per.Replace("%", null)), VatPercent = float.Parse(vat.Replace("%", null)), Price = float.Parse(pr.Replace("$", null)), Amount = float.Parse(am.Replace("$", null)), WarehouseId = Convert.ToInt32(txtWarehouseId.Text), Note = dataGridView1.Rows[rowIndex].Cells[12].Value.ToString() }; _appContext.SaleOrderItems.Add(saleOrderItem); } _appContext.SaveChanges(); var dialog = MessageBox.Show(@"Do you want print Report?", @"Information", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (dialog == DialogResult.Yes) { var so = _appContext.SaleOrders .Where(id => id.SaleOrderId.Equals(txtSaleOrderID.Text)) .Include(u => u.User) .Include(c => c.Customer) .Select(s => new { SaleOrderId = s.SaleOrderId, Percent = s.DisPercent, DisA = s.DisAmount, UserName = s.User.UserNmae, CustomerName = s.Customer.Name, Balanc = s.Balance, Deposit = s.Deposit, SubTotal = s.SubTotal, GrandTotal = s.GrandTotal }) .ToList(); var soi = _appContext.SaleOrderItems .Where(id => id.SaleOrderId.Equals(txtSaleOrderID.Text)) .Include(p => p.Product) .Include(c => c.Product.Category) .Include(m => m.Product.Measure) .Include(w => w.Warehouse) .Select(i => new { ProId = i.ProductId, ProNameEn = i.Product.NameEn, ProNameKh = i.Product.NameKh, Measure = i.Product.Measure.Name, Category = i.Product.Category.Name, Qty = i.Qty, Percent = i.DisPercent, VAT = i.VatPercent, Price = i.Price, Amount = i.Amount }) .ToList(); var dtSaleOrder = new DataTable(); using (var reader = ObjectReader.Create(so)) { dtSaleOrder.Load(reader); } dtSaleOrder.TableName = "SaleOrder"; var dtSaleOrderItem = new DataTable(); using (var reader = ObjectReader.Create(soi)) { dtSaleOrderItem.Load(reader); } dtSaleOrderItem.TableName = "SaleOrderItem"; var ds = new dsSaleOrder(); ds.Merge(dtSaleOrder); ds.Merge(dtSaleOrderItem); var crpt = new crptSaleOrder(); crpt.SetDataSource(ds); var frmReport = new FormSaleOrderReport(crpt); frmReport.ShowDialog(); } }