Exemplo n.º 1
0
        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();
                    }
                }
            }
        }
Exemplo n.º 2
0
        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());
            }
        }