private void SaveDataAsync(bool newmode) { int ID; var bm = new BomModel(); List <BOMTransModel> btmlist = new List <BOMTransModel>(); bool IsSaved = false; if (!ValidateData()) { return; } BomModel bom = new BomModel(); using (var db = new KontoContext()) { using (var _tran = db.Database.BeginTransaction()) { try { if (this.PrimaryKey != 0) { bm = db.Boms.Find(this.PrimaryKey); } bm.VoucherDate = Convert.ToInt32(voucherDateEdit.DateTime.ToString("yyyyMMdd")); bm.IsActive = true; bm.DivisionId = divLookUpEdit.EditValue != null?Convert.ToInt32(divLookUpEdit.EditValue) : 0; bm.ProductId = QualityLookup.Properties.SelectedValue != null?Convert.ToInt32(QualityLookup.Properties.SelectedValue) : 0; bm.VoucherId = voucherLookup1.SelectedValue != null?Convert.ToInt32(voucherLookup1.SelectedValue) : 0; bm.VoucherNo = voucherNoTextEdit.Text != null?Convert.ToString(voucherNoTextEdit.Text) : ""; bm.Remark = remarkTextEdit.Text != string.Empty ? remarkTextEdit.Text : ""; bm.IsDeleted = false; bm.IsActive = true; bm.Description = Convert.ToString(ordertypeLookUpEdit1.EditValue); bm.TargetQty = Convert.ToDecimal(targetQtyButtonEdit.EditValue); if (bm.Id == 0) { bm.CompId = KontoGlobals.CompanyId; bm.YearId = KontoGlobals.YearId; bm.BranchId = KontoGlobals.BranchId; db.Boms.Add(bm); db.SaveChanges(); } var _bomtarns = new List <BOMTransModel>(); foreach (var item in PFormula) { var btm = new BOMTransModel(); if (item.Id > 0) { btm = db.BOMTranses.Find(item.Id); } btm.BOMId = bm.Id; btm.UomId = item.UomId; btm.ProductId = item.ProductId; btm.ColorId = item.ColorId; btm.BaseQty = item.BaseQty; btm.RequireQty = item.RequireQty; btm.Stock = item.Stock; btm.Remark1 = item.Remark1; btm.Rate = item.Rate; btm.ShortQty = item.ShortQty; btm.Amount = item.Amount; btm.TransType = 1; btm.IsDeleted = false; btm.IsActive = true; if (btm.Id == 0) { db.BOMTranses.Add(btm); } _bomtarns.Add(btm); } foreach (var item in bomOrderDtos) { var btm = new BOMTransModel(); if (item.Id > 0) { btm = db.BOMTranses.Find(item.Id); } btm.ProductId = item.ProductId; btm.UomId = item.EmpId; btm.OrderTransId = item.OrderTransId; btm.AccId = item.AccId; btm.BaseQty = item.Qty; btm.Stock = item.StockQty; btm.ShortQty = item.Balance; btm.Remark1 = item.Remark1; btm.Remark2 = item.Remark2; btm.TransType = 2; btm.IsDeleted = false; btm.IsActive = true; if (btm.Id == 0) { btm.BOMId = bm.Id; db.BOMTranses.Add(btm); } } db.SaveChanges(); var stk = db.StockTranses.Where(k => k.MasterRefId == bm.RowId).ToList(); if (stk != null) { db.StockTranses.RemoveRange(stk); } // for stock effect from bom comsumuption & productoin if (BomPara.Auto_Consumption_And_Production) { var pdorg = db.Products.Find(bm.ProductId); if (pdorg.StockReq == "Yes") { StockEffect.Stock_Bom_Prod_Entry(bm, db); } foreach (var item in _bomtarns) { var pd = db.Products.Find(item.ProductId); if (pd.StockReq == "No") { continue; } StockEffect.Stock_Bom_Issue_Entry(bm, db, item); } } db.SaveChanges(); var repid = db.Barcodes.DefaultIfEmpty().Max(x => x == null ? 0 : x.ReportId) + 1; bool IsBarcodeGenerated = false; if (this.PrimaryKey == 0 && MessageBox.Show("Generate Barcode. for Cutting.?", "Barcode", MessageBoxButtons.YesNo) == DialogResult.Yes) { var bcs = bomOrderDtos.Where(x => x.Balance > 0).ToList(); foreach (var item in bcs) { var bc = new BarcodeModel() { CompId = KontoGlobals.CompanyId, EmpId = item.EmpId, IsActive = true, IsDeleted = false, OrderTransId = item.OrderTransId, PcsNo = 1, AccId = item.AccId, Qty = Convert.ToInt32(item.Balance), ProductId = item.ProductId, RefId = bm.Id, ReportId = repid, IsLayer = true }; bc.BarcodeNo = GetNextBarcodeNo(db); //String.Format("{0:d9}", (DateTime.Now.Ticks / 10) % 1000000000); // KontoUtils.GetUniqueKey(8); db.Barcodes.Add(bc); } if (bcs.Count == 0) { var bc = new BarcodeModel() { CompId = KontoGlobals.CompanyId, IsActive = true, IsDeleted = false, PcsNo = 1, EmpId = 0, Qty = Convert.ToInt32(targetQtyButtonEdit.EditValue), ProductId = Convert.ToInt32(QualityLookup.Properties.SelectedValue), RefId = bm.Id, ReportId = repid, IsLayer = true }; bc.BarcodeNo = GetNextBarcodeNo(db); //String.Format("{0:d9}", (DateTime.Now.Ticks / 10) % 1000000000); //KontoUtils.GetUniqueKey(8); db.Barcodes.Add(bc); } db.SaveChanges(); IsBarcodeGenerated = true; } _tran.Commit(); MessageBoxAdv.Show("Record Save Successfully.."); if (this.PrimaryKey == 0 && IsBarcodeGenerated && MessageBox.Show("Print Barcode ... ?", "Print !", MessageBoxButtons.YesNo) == DialogResult.Yes) { PrintBarcode(repid); } this.ResetPage(); this.NewRec(); } catch (Exception ex) { _tran.Rollback(); Log.Error(ex, "BOM Save"); MessageBoxAdv.Show(this, "Error While Save !!", "Exception ", ex.ToString()); } if (this.OpenForLookup) { this.Close(); this.Dispose(); } } } }
private void GetForumla() { try { if (this.PrimaryKey != 0) { return; } if (string.IsNullOrEmpty(ordertypeLookUpEdit1.Text)) { return; } if (string.IsNullOrEmpty(targetQtyButtonEdit.Text)) { return; } if (Convert.ToInt32(QualityLookup.Properties.SelectedValue) == 0) { return; } var _qty = Convert.ToDecimal(targetQtyButtonEdit.Text); var pid = Convert.ToInt32(QualityLookup.Properties.SelectedValue); using (var db = new KontoContext()) { PFormula = (from p in db.PFormulas join pd in db.Products on p.RefProductId equals pd.Id join cl in db.ColorModels on p.ColorId equals cl.Id into j1 from j2 in j1.DefaultIfEmpty() where p.ProductId == pid select new BomTransDto { ProductName = pd.ProductName, ProductId = (int)p.RefProductId, BaseQty = ordertypeLookUpEdit1.EditValue.ToString() == "Bulk" ? p.Cut : p.Qty, Rate = p.Rate, Amount = p.Total, UomId = (int)p.UomId, RequireQty = ordertypeLookUpEdit1.EditValue.ToString() == "Bulk" ? _qty * p.Cut : _qty * p.Qty, Remark1 = p.Remark, ColorId = p.ColorId, ColorName = j2.ColorName }).ToList(); foreach (var item in PFormula) { item.Stock = StockEffect.GetStock(item.ProductId); if (item.Stock - item.RequireQty > 0) { item.ShortQty = 0; } else { item.ShortQty = item.RequireQty - item.Stock; } } gridControl1.DataSource = PFormula; gridControl1.RefreshDataSource(); } } catch (Exception ex) { Log.Error(ex, "bom Quality Lookup chane"); MessageBox.Show(ex.ToString()); } }