/// <summary>
        /// double click เลือกรายการ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex < 0 || e.RowIndex < 0)
            {
                return;
            }
            SSLsEntities db = new SSLsEntities();

            try
            {
                int currentRow = dataGridView1.CurrentRow.Index;
                int currentId  = int.Parse(dataGridView1.Rows[currentRow].Cells[0].Value.ToString());
                var data       = db.POHeader.Include("PODetail.ProductDetails.Products.ProductVatType").Include("Vendor.POCostType").SingleOrDefault(w => w.Id == currentId);

                PODetailsDialog obj = new PODetailsDialog(data);
                obj.ShowDialog();
            }
            catch (Exception ex)
            {
            }
            finally
            {
                db.Dispose();
            }
        }
        /// <summary>
        /// ปิดสถานะ จะปิดได้ ต้อง enable == true และต้องมีการรับเข้า > 0%
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button5_Click(object sender, EventArgs e)
        {
            SSLsEntities    db = new SSLsEntities();
            WH_TRATEntities wh = new WH_TRATEntities();

            try
            {
                int currentRow = dataGridView1.CurrentRow.Index;
                int currentId  = int.Parse(dataGridView1.Rows[currentRow].Cells[0].Value.ToString());
                var data       = db.POHeader.SingleOrDefault(w => w.Id == currentId);
                if (data.Enable == false)
                {
                    MessageBox.Show("PO นี้ยกเลิกไปแล้ว");
                }
                else if (data.FKPOStatus == MyConstant.POStatus.RCVComplete || data.FKPOStatus == MyConstant.POStatus.RCVNotComplete_ButEnd)
                {
                    MessageBox.Show("PO นี้ ปิดสถานะแล้ว");
                }
                else if (data.FKPOStatus == MyConstant.POStatus.NotRCV)
                {
                    MessageBox.Show("PO นี้ ไม่เคยรับเข้ามาก่อน ไม่สามารถปิดได้");
                }
                else
                {
                    //
                    DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?",
                                                      "คำเตือนจากระบบ", MessageBoxButtons.YesNo);
                    switch (dr)
                    {
                    case DialogResult.Yes:
                        data.UpdateDate      = DateTime.Now;
                        data.UpdateBy        = Singleton.SingletonAuthen.Instance().Id;
                        data.FKPOStatus      = MyConstant.POStatus.RCVNotComplete_ButEnd;
                        db.Entry(data).State = EntityState.Modified;

                        var poOrder = wh.PS_PO_ORDER.FirstOrDefault(w => w.ENABLE == true && w.PO_NO == data.PONo);
                        poOrder.CONFIRMRCV      = DateTime.Now;
                        wh.Entry(poOrder).State = EntityState.Modified;

                        wh.SaveChanges();
                        db.SaveChanges();
                        Search();
                        break;

                    case DialogResult.No:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("พบข้อผิดพลาด ในการเลือกรายการ");
            }
            finally
            {
                db.Dispose();
                wh.Dispose();
            }
        }
        /// <summary>
        /// ยกเลิก PO ทีละ 1 PO
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            SSLsEntities db = new SSLsEntities();

            try
            {
                int currentRow = dataGridView1.CurrentRow.Index;
                int currentId  = int.Parse(dataGridView1.Rows[currentRow].Cells[0].Value.ToString());
                var data       = db.POHeader.SingleOrDefault(w => w.Id == currentId);
                if (data.Enable == false)
                {
                    MessageBox.Show("PO นี้ยกเลิกไปแล้ว");
                }
                else if (data.FKPOStatus == MyConstant.POStatus.RCVComplete || data.FKPOStatus == MyConstant.POStatus.RCVNotComplete_ButEnd)
                {
                    MessageBox.Show("PO นี้ ปิดสถานะแล้ว");
                }
                else if (data.FKPOStatus == MyConstant.POStatus.RCVNotEnd)
                {
                    MessageBox.Show("PO นี้ อยู่ในระหว่างรับเข้า");
                }
                else
                {
                    //
                    DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?",
                                                      "คำเตือนจากระบบ", MessageBoxButtons.YesNo);
                    switch (dr)
                    {
                    case DialogResult.Yes:
                        data.UpdateDate      = DateTime.Now;
                        data.UpdateBy        = Singleton.SingletonAuthen.Instance().Id;
                        data.Enable          = false;
                        db.Entry(data).State = EntityState.Modified;
                        db.SaveChanges();
                        Search();
                        break;

                    case DialogResult.No:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("พบข้อผิดพลาด ในการเลือกรายการ");
            }
            finally
            {
                db.Dispose();
            }
        }
예제 #4
0
        /// <summary>
        /// ยืนยันชำระหนี้
        /// </summary>
        private void SaveCommit()
        {
            SSLsEntities db = new SSLsEntities();

            try
            {
                foreach (var item in stackDebtor)
                {
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                db.Dispose();
            }
        }
예제 #5
0
        /// <summary>
        /// บันทึกรับเข้า และ เพิ่ม Stock Card Wms
        /// </summary>
        private void SaveCommit()
        {
            SSLsEntities db = new SSLsEntities();

            try
            {
                int    currentYear  = DateTime.Now.Year;
                int    currentMonth = DateTime.Now.Month;
                var    running      = db.PORcv.Where(w => w.CreateDate.Year == currentYear && w.CreateDate.Month == currentMonth).Count() + 1;
                string code         = SingletonThisBudgetYear.Instance().ThisYear.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(running, 4);

                PORcv rcv = new PORcv();
                rcv.FKPOHeader   = _po.Id;
                rcv.Code         = MyConstant.PrefixForGenerateCode.RCVPOS + code;
                rcv.PORefer      = "" + rcv.Code;
                rcv.Description  = textBoxRemark.Text;
                rcv.Enable       = true;
                rcv.CreateDate   = DateTime.Now;
                rcv.CreateBy     = SingletonAuthen.Instance().Id;
                rcv.UpdateDate   = DateTime.Now;
                rcv.UpdateBy     = SingletonAuthen.Instance().Id;
                rcv.DiscountKey  = textBoxDiscountKey.Text;
                rcv.DiscountBath = decimal.Parse(textBoxDiscountBath.Text);
                rcv.TotalBUnVat  = decimal.Parse(textBoxTotalUnVat.Text);
                rcv.TotalBHasVat = decimal.Parse(textBoxTotalHasVat.Text);
                rcv.TotalVat     = decimal.Parse(textBoxTotalVat.Text);
                rcv.TotalGift    = _totalGift;
                rcv.DriverName   = textBoxDriverName.Text;
                rcv.InvoiceNo    = textBoxInvoice.Text;
                rcv.InvoiceDate  = (DateTime)Library.ConvertTHToENDate(textBoxInvoiceDate.Text);
                if (_idTransport == 0)
                {
                    _idTransport        = MyConstant.Transport.NotChoose;
                    rcv.TransportRemark = "ไม่เลือกบริษัทขนส่ง";
                }
                rcv.FKTransport = _idTransport;
                // details
                //List<PORcvDetails> details = new List<PORcvDetails>();
                PORcvDetails detail;
                decimal      rcvAndGift = 0;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    detail            = new PORcvDetails();
                    detail.Enable     = true;
                    detail.CreateDate = DateTime.Now;
                    detail.CreateBy   = SingletonAuthen.Instance().Id;
                    detail.UpdateDate = DateTime.Now;
                    detail.UpdateBy   = SingletonAuthen.Instance().Id;
                    string proCode = dataGridView1.Rows[i].Cells[colCode].Value.ToString();
                    var    product = Singleton.SingletonProduct.Instance().ProductDetails.FirstOrDefault(w => w.Code == proCode);
                    detail.FKProductDtl   = product.Id;
                    detail.SequenceNumber = int.Parse(dataGridView1.Rows[i].Cells[colNumber].Value.ToString());
                    // รับเข้าในครั้งนี้
                    detail.RcvQuantity = decimal.Parse(dataGridView1.Rows[i].Cells[colQtyRcv].Value.ToString());

                    if (_po.Vendor.FKPOCostType == MyConstant.POCostType.CostOnly) // ตรวจสอบการ ยึดราคาทุน
                    {
                        detail.CurrentCost = product.CostOnly;
                    }
                    else if (_po.Vendor.FKPOCostType == MyConstant.POCostType.CostAndVat)
                    {
                        detail.CurrentCost = product.CostAndVat;
                    }
                    else
                    {
                        detail.CurrentCost = product.CostAndVat;
                    }
                    detail.QtyOnPO      = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    detail.NewCost      = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    detail.DiscountKey  = dataGridView1.Rows[i].Cells[colDiscountKey].Value.ToString();
                    detail.DiscountBath = decimal.Parse(dataGridView1.Rows[i].Cells[colDiscountBath].Value.ToString());
                    detail.TotalPrice   = decimal.Parse(dataGridView1.Rows[i].Cells[colTotal].Value.ToString());
                    detail.GiftOnPo     = decimal.Parse(dataGridView1.Rows[i].Cells[colGiftOnPo].Value.ToString());
                    detail.GiftQty      = decimal.Parse(dataGridView1.Rows[i].Cells[colGift].Value.ToString());
                    rcv.PORcvDetails.Add(detail);

                    decimal rcvComplet = decimal.Parse(dataGridView1.Rows[i].Cells[colQtyRcvComplete].Value.ToString());
                    // ยอดรับเข้าครั้งนี้ = ยอดรับเข้า+ของแถม
                    rcvAndGift = detail.GiftQty + detail.RcvQuantity;

                    #region Manage WmsStock //////////////////////////////// ใช้ Library ManageStock แทนละ///////////////////////////////////////////////////////
                    /// จัดการ stock card
                    //int productId = product.FKProduct;
                    ///// get wmsStock
                    //var wmsStock = db.WmsStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == productId);
                    //if (wmsStock != null) // ถ้าเคยตั้ง stock แล้ว
                    //{
                    //    ProductDetails productDtl = product;
                    //    /// check wmsStockDetail เอาตัวล่าสุด
                    //    WmsStockDetail wmsDtl = wmsStock.WmsStockDetail.OrderByDescending(w => w.CreateDate).FirstOrDefault(w => w.Enable == true && w.FKProductDetail == productDtl.Id);
                    //    decimal thisResultQty = 0;
                    //    if (wmsDtl != null)
                    //    {
                    //        // ถ้ามีใน wms stock detail แล้ว
                    //        // modify WmsStockDetail
                    //        WmsStockDetail wmsStockDetail = new WmsStockDetail();
                    //        wmsStockDetail.FKItemRemark = MyConstant.ItemRemark.Nornal;
                    //        wmsStockDetail.FKProductDetail = productDtl.Id;
                    //        wmsStockDetail.FKTransaction = MyConstant.WmsTransaction.RCV;
                    //        wmsStockDetail.FKWmsStock = wmsStock.Id;
                    //        wmsStockDetail.CreateDate = DateTime.Now;
                    //        wmsStockDetail.CreateBy = SingletonAuthen.Instance().Id;
                    //        wmsStockDetail.UpdateDate = DateTime.Now;
                    //        wmsStockDetail.UpdateBy = SingletonAuthen.Instance().Id;
                    //        wmsStockDetail.Enable = true;
                    //        wmsStockDetail.Description = "รับเข้าด้วย PO";
                    //        wmsStockDetail.PackSize = productDtl.PackSize;
                    //        wmsStockDetail.ActionQtyUnit = rcvAndGift;
                    //        wmsStockDetail.ActionQty = rcvAndGift * productDtl.PackSize;
                    //        /// Result จะได้ ของยกยอดมา + ของรับเข้าล่าสุด
                    //        wmsStockDetail.ResultQtyUnit = wmsDtl.ResultQtyUnit + rcvAndGift;
                    //        wmsStockDetail.ResultQty = (wmsDtl.ResultQtyUnit + rcvAndGift) * productDtl.PackSize;
                    //        thisResultQty = wmsStockDetail.ResultQty;
                    //        db.WmsStockDetail.Add(wmsStockDetail);
                    //    }
                    //    else // ถ้าไม่มีใน
                    //    {
                    //        // add new WmsStock
                    //        WmsStockDetail wmsStockDetail = new WmsStockDetail();
                    //        wmsStockDetail.FKItemRemark = MyConstant.ItemRemark.Nornal;
                    //        wmsStockDetail.FKProductDetail = productDtl.Id;
                    //        wmsStockDetail.FKTransaction = MyConstant.WmsTransaction.RCV;
                    //        wmsStockDetail.FKWmsStock = wmsStock.Id;
                    //        wmsStockDetail.CreateDate = DateTime.Now;
                    //        wmsStockDetail.CreateBy = SingletonAuthen.Instance().Id;
                    //        wmsStockDetail.UpdateDate = DateTime.Now;
                    //        wmsStockDetail.UpdateBy = SingletonAuthen.Instance().Id;
                    //        wmsStockDetail.Enable = true;
                    //        wmsStockDetail.Description = "รับเข้าด้วย PO";
                    //        wmsStockDetail.PackSize = productDtl.PackSize;
                    //        wmsStockDetail.ActionQtyUnit = rcvAndGift;
                    //        wmsStockDetail.ActionQty = rcvAndGift * productDtl.PackSize;
                    //        /// Result จะได้ ของยกยอดมา + ของรับเข้าล่าสุด
                    //        wmsStockDetail.ResultQtyUnit =  rcvAndGift;
                    //        wmsStockDetail.ResultQty = rcvAndGift * productDtl.PackSize;
                    //        thisResultQty = wmsStockDetail.ResultQty;
                    //        db.WmsStockDetail.Add(wmsStockDetail);
                    //    }

                    //    // Update WmsStock
                    //    wmsStock.OldQty = wmsStock.CurrentQty;
                    //    wmsStock.CurrentQty = thisResultQty;
                    //    wmsStock.UpdateDate = DateTime.Now;
                    //    wmsStock.UpdateBy = SingletonAuthen.Instance().Id;
                    //    db.Entry(wmsStock).State = EntityState.Modified;

                    //}
                    //else // กรณีไม่เคยมีใน Stock
                    //{
                    //    /// ต้อง new stock ใหม่
                    //    // ต้องดัก การ initial Stock ตั้งแต่ new Product
                    //}
                    #endregion
                }
                db.PORcv.Add(rcv);
                List <PORcvDetails> rcvDtl = rcv.PORcvDetails.ToList();
                //Library.MakeValueForUpdateStockWms(rcvDtl);
                // update po status = 3 เคยมีการรับเข้าแล้ว เชคว่าครบแล้วหรือไม่
                var     po              = db.POHeader.SingleOrDefault(w => w.Id == _po.Id);
                decimal checkRcvQty     = 0;
                decimal checkRcvGiftQty = 0;
                foreach (var item in po.PODetail.Where(w => w.Enable == true).ToList())
                {
                    // ดึง
                    var getProductRcv = rcv.PORcvDetails.FirstOrDefault(w => w.FKProductDtl == item.FKProductDetail);
                    item.RcvQty          = item.RcvQty + getProductRcv.RcvQuantity;
                    item.RcvGiftQty      = item.RcvGiftQty + getProductRcv.GiftQty;
                    db.Entry(item).State = EntityState.Modified;

                    checkRcvQty     = checkRcvQty + item.RcvQty;
                    checkRcvGiftQty = checkRcvGiftQty + item.RcvGiftQty;
                }
                if ((checkRcvQty + checkRcvGiftQty) == (po.TotalQty + po.TotalGift))
                {
                    // ถ้ารับเข้าครบ แปลว่า Complete
                    po.FKPOStatus = MyConstant.POStatus.RCVComplete;
                }
                else
                {
                    po.FKPOStatus = MyConstant.POStatus.RCVNotEnd;
                }
                db.Entry(po).State = EntityState.Modified;

                db.SaveChanges();
                // reset form
                ResetRcv();
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ถูกต้อง พบข้อผิดพลาด กรุณาติดต่อ admin");
            }
            finally
            {
                db.Dispose();
            }
        }
예제 #6
0
        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            SSLsEntities db = new SSLsEntities();

            try
            {
                if (hasCellBeenEdited && dataGridView1.CurrentCell.ColumnIndex != dataGridView1.ColumnCount - 10)
                {
                    int    desiredColumn = dataGridView1.CurrentCell.ColumnIndex + 2;
                    int    desiredRow    = dataGridView1.CurrentCell.RowIndex - 1;
                    string _Code         = dataGridView1.Rows[desiredRow].Cells[colCode].Value.ToString().Replace(" ", "");
                    var    data          = db.ProductDetails.FirstOrDefault(w => w.Enable == true && w.Code == _Code);

                    if (desiredColumn == 3)
                    {
                        dataGridView1.CurrentCell = dataGridView1[desiredColumn, desiredRow];
                        hasCellBeenEdited         = false;

                        if (_Code == null)
                        {
                        }
                        else
                        {
                            if (data == null)
                            {
                                MessageBox.Show("ไม่พบรหัสสินค้า " + _Code + " ในระบบกรุณาตรวจสอบอีกครั้ง", "คำเตือนจากระบบ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                dataGridView1.Rows[desiredRow].Cells[colCode].Value = null;
                                SendKeys.Send("{LEFT}");
                                SendKeys.Send("{LEFT}");
                                return;
                            }
                            else
                            {
                                setGridView(desiredRow, data);
                            }
                        }
                    }
                    else
                    {
                        SumCalRow();
                        return;

                        desiredRow++;
                        dataGridView1.CurrentCell = dataGridView1[desiredColumn, desiredRow];
                        hasCellBeenEdited         = false;
                        setGridView(desiredRow, data);
                    }
                }
                else if (hasCellBeenEdited && dataGridView1.CurrentCell.ColumnIndex == dataGridView1.ColumnCount - 10)
                {
                    int desiredColumn = 1;
                    int desiredRow    = dataGridView1.CurrentCell.RowIndex;

                    dataGridView1.CurrentCell = dataGridView1[desiredColumn, desiredRow];
                    hasCellBeenEdited         = false;
                }
                // set value
                //decimal qty1 = decimal.Parse(dataGridView1.Rows[desiredRow].Cells[colQty1].Value.ToString());
                //return;
                SumCalRow();
            }
            catch (Exception)
            {
            }
            finally
            {
                db.Dispose();
            }
        }
        private void SaveCommit()
        {
            SSLsEntities db = new SSLsEntities();

            try
            {
                var rcvOld = db.PORcv.SingleOrDefault(w => w.Enable == true && w.Code == textBoxRcvNo.Text);

                rcvOld.PORefer     = rcvOld.PORefer + "," + textBoxPONo.Text;
                rcvOld.Description = textBoxDesc.Text;

                rcvOld.UpdateDate   = DateTime.Now;
                rcvOld.UpdateBy     = SingletonAuthen.Instance().Id;
                rcvOld.DiscountKey  = textBoxDiscountKey.Text;
                rcvOld.DiscountBath = decimal.Parse(textBoxDiscountBath.Text);
                rcvOld.TotalBUnVat  = decimal.Parse(textBoxTotalUnVat.Text);
                rcvOld.TotalBHasVat = decimal.Parse(textBoxTotalHasVat.Text);
                rcvOld.TotalVat     = decimal.Parse(textBoxTotalVat.Text);
                rcvOld.TotalGift    = _totalGift;

                // details
                //List<PORcvDetails> details = new List<PORcvDetails>();
                PORcvDetails detail;
                decimal      rcvAndGift = 0;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    detail            = new PORcvDetails();
                    detail.Enable     = true;
                    detail.CreateDate = DateTime.Now;
                    detail.CreateBy   = SingletonAuthen.Instance().Id;
                    detail.UpdateDate = DateTime.Now;
                    detail.UpdateBy   = SingletonAuthen.Instance().Id;
                    string proCode = dataGridView1.Rows[i].Cells[colCode].Value.ToString();
                    var    product = Singleton.SingletonProduct.Instance().ProductDetails.FirstOrDefault(w => w.Code == proCode);
                    detail.FKProductDtl   = product.Id;
                    detail.SequenceNumber = int.Parse(dataGridView1.Rows[i].Cells[colNumber].Value.ToString());
                    // รับเข้าในครั้งนี้
                    detail.RcvQuantity = decimal.Parse(dataGridView1.Rows[i].Cells[colQtyRcv].Value.ToString());

                    if (_po.Vendor.FKPOCostType == MyConstant.POCostType.CostOnly) // ตรวจสอบการ ยึดราคาทุน
                    {
                        detail.CurrentCost = product.CostOnly;
                    }
                    else if (_po.Vendor.FKPOCostType == MyConstant.POCostType.CostAndVat)
                    {
                        detail.CurrentCost = product.CostAndVat;
                    }
                    else
                    {
                        detail.CurrentCost = product.CostAndVat;
                    }
                    detail.QtyOnPO        = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    detail.NewCost        = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    detail.DiscountKey    = dataGridView1.Rows[i].Cells[colDiscountKey].Value.ToString();
                    detail.DiscountBath   = decimal.Parse(dataGridView1.Rows[i].Cells[colDiscountBath].Value.ToString());
                    detail.TotalPrice     = decimal.Parse(dataGridView1.Rows[i].Cells[colTotal].Value.ToString());
                    detail.GiftOnPo       = decimal.Parse(dataGridView1.Rows[i].Cells[colGiftOnPo].Value.ToString());
                    detail.GiftQty        = decimal.Parse(dataGridView1.Rows[i].Cells[colGift].Value.ToString());
                    detail.SequenceNumber = int.Parse(dataGridView1.Rows[i].Cells[colNumber].Value.ToString());
                    int idPO = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    // ยอดรับเข้าครั้งนี้ = ยอดรับเข้า+ของแถม
                    rcvAndGift = detail.GiftQty + detail.RcvQuantity;
                    if (idPO != 0)
                    {
                        rcvOld.PORcvDetails.Add(detail);

                        var getProductRcv = db.PODetail.FirstOrDefault(w => w.Id == idPO);
                        getProductRcv.RcvQty          = detail.GiftQty;
                        getProductRcv.RcvGiftQty      = rcvAndGift;
                        db.Entry(getProductRcv).State = EntityState.Modified;
                    }

                    decimal rcvComplet = decimal.Parse(dataGridView1.Rows[i].Cells[colQtyRcvComplete].Value.ToString());
                }
                db.Entry(rcvOld).State = EntityState.Modified;

                //List<PORcvDetails> rcvDtl = rcv.PORcvDetails.ToList();
                //Library.MakeValueForUpdateStockWms(rcvDtl);
                // update po status = 3 เคยมีการรับเข้าแล้ว เชคว่าครบแล้วหรือไม่
                var     po              = db.POHeader.SingleOrDefault(w => w.Id == _po.Id);
                decimal checkRcvQty     = 0;
                decimal checkRcvGiftQty = 0;
                //foreach (var item in po.PODetail.Where(w => w.Enable == true).ToList())
                //{
                //    // ดึง
                //    var getProductRcv = rcvOld.PORcvDetails.FirstOrDefault(w => w.FKProductDtl == item.FKProductDetail);
                //    item.RcvQty = item.RcvQty + getProductRcv.RcvQuantity;
                //    item.RcvGiftQty = item.RcvGiftQty + getProductRcv.GiftQty;
                //    db.Entry(item).State = EntityState.Modified;

                //    checkRcvQty = checkRcvQty + item.RcvQty;
                //    checkRcvGiftQty = checkRcvGiftQty + item.RcvGiftQty;
                //}
                //if ((checkRcvQty + checkRcvGiftQty) == (po.TotalQty + po.TotalGift))
                //{
                //    // ถ้ารับเข้าครบ แปลว่า Complete
                //    po.FKPOStatus = MyConstant.POStatus.RCVComplete;
                //}
                //else
                //{
                //    po.FKPOStatus = MyConstant.POStatus.RCVNotEnd;
                //}

                po.FKPOStatus      = MyConstant.POStatus.RCVNotEnd;
                db.Entry(po).State = EntityState.Modified;
                db.SaveChanges();
                // reset form

                frmMainReport mr = new frmMainReport(this, textBoxRcvNo.Text);
                mr.Show();
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ถูกต้อง พบข้อผิดพลาด กรุณาติดต่อ admin");
            }
            finally
            {
                db.Dispose();
            }
        }
        /// <summary>
        /// หลังจากยืนยัน จะต้อง add เข้า pos ด้วย เพราะเป็นการจบการขาย เชื่อ
        /// </summary>
        /// <param name="stackDocNo"></param>
        private void ConfirmOrder(IEnumerable<string> stackDocNo)
        {
            SSLsEntities dbS = new SSLsEntities();
            try
            {
                using (SSLsEntities db = new SSLsEntities())
                {
                    PosHeader pos;
                    List<PosDetails> details;
                    foreach (var item in stackDocNo)
                    {
                        pos = new PosHeader();
                        details = new List<PosDetails>();

                        var order = db.SaleOrderWarehouse.Include("SaleOrderWarehouseDtl.ProductDetails.Products.ProductVatType").SingleOrDefault(w => w.Code == item && w.Enable == true && w.InvoiceNo == null && w.ConfirmOrderDate == null);
                        // call library tin tin
                        DataTable dataMap = Library.ConvertToDataTable(MapSaleOrderWHForLibrary(order));
                        //TradPickBigCar(string tb_cusno, string tb_sentno, string tb_po_distcount, string tb_statusno, int UserId, string tb_costall, string detail, DataTable dt, string invoice)
                        //TradPickBigCar(order.FKMember.ToString(), order.FKBranch.ToString(), 0 + "", "ยืนยัน", int.Parse(order.CreateBy), order.TotalBalance.ToString(), order.Description, dataMap, order.Code);

                        var ds = db.SaleOrderWarehouseDtl.Where(w => w.Enable == true & w.SaleOrderWarehouse.Enable == true &
                        w.ProductDetails.Enable == true & w.ProductDetails.Products.Enable == true &
                        w.SaleOrderWarehouse.InvoiceNoWH == null & w.SaleOrderWarehouse.Code == item)
                        .Select(s => new { PRODUCT_ID = s.ProductDetails.Products.FKRowID, PRODUCT_NO = s.ProductDetails.Code, PRODUCT_NAME = s.ProductDetails.Name, UNIT_NAME = s.ProductDetails.ProductUnit.Name, QTY = s.Qty, GIVEAWAY = "0", COST = s.PricePerUnit, DISCOUNT = (s.PercentDiscount + s.BathDiscount), COST_TOTAL = s.TotalPrice }).ToList();
                        DataTable dt = Library.ConvertToDataTable(ds);

                        foreach (DataRow row in dt.Rows)
                        {
                            Console.WriteLine(row["PRODUCT_NO"].ToString());
                        }
                        if (dt.Rows.Count > 0)
                        {
                            var dshd = db.SaleOrderWarehouseDtl.Where(w => w.Enable == true & w.SaleOrderWarehouse.Enable == true & w.ProductDetails.Enable == true & w.ProductDetails.Products.Enable == true & w.SaleOrderWarehouse.InvoiceNoWH == null & w.SaleOrderWarehouse.Code == item).FirstOrDefault();
                            if (dshd != null)
                            {
                                var check = Library.TradPickBigCar(dshd.SaleOrderWarehouse.Member.Code.ToString(), "1", "0", "1", int.Parse(dshd.SaleOrderWarehouse.CreateBy), dshd.SaleOrderWarehouse.TotalBeforeVat.ToString(), dshd.SaleOrderWarehouse.Description.ToString(), dt, dshd.SaleOrderWarehouse.Code.ToString());

                                if (check == "OK")
                                {
                                    Console.WriteLine(check);
                                }
                                else
                                {
                                    Console.WriteLine(check);
                                }
                            }
                        }

                        // call เสด ReCal
                        Recal(order.Code);
                        /// ถ้า ไป เชคกะ จารตินแล้ว ไม่ได้ของ จิงๆ ก็ คอนเฟิมไปนะแหละ    
                        List<SaleOrderWarehouseDtl> getNewList = dbS.SaleOrderWarehouseDtl.Where(w => w.Enable == true && w.FKSaleOrderWarehouse == order.Id).ToList();
                        if (getNewList.Sum(w => w.QtyAllow) == 0)
                        {
                            order.FKSaleOrderWarehouseStatus = MyConstant.SaleOrderWarehouseStatus.ConfirmOrder;
                            order.UpdateDate = DateTime.Now;
                            order.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                            order.ConfirmOrderDate = DateTime.Now;
                            order.ConfirmOrderBy = Singleton.SingletonAuthen.Instance().Id;
                            db.Entry(order).State = EntityState.Modified;
                            db.SaveChanges();
                            return;
                        }
                        // Add To Pos   
                        pos.Qty = getNewList.Sum(w => w.QtyAllow);
                        pos.QtyList = getNewList.Count();
                        pos.TotalCost = 0;
                        pos.FKPosType = MyConstant.POsType.Creadit;
                        pos.FKPosMachine = _posMachine.Id;
                        pos.FKBudgetYear = Singleton.SingletonThisBudgetYear.Instance().ThisYear.Id;
                        pos.PrintSequence = 0;
                        foreach (var dtl in getNewList)
                        {
                            PosDetails dd = new PosDetails();
                            dd.Enable = true;
                            dd.Description = "รถใหญ่";
                            dd.CreateDate = DateTime.Now;
                            dd.CreateBy = Singleton.SingletonAuthen.Instance().Id;
                            dd.UpdateDate = DateTime.Now;
                            dd.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                            dd.FKProductDetails = dtl.FKProductDtl;
                            dd.Qty = dtl.QtyAllow;
                            dd.Cost = dtl.ProductDetails.CostAndVat;
                            dd.PricePerUnit = dtl.PricePerUnit;
                            dd.DiscountCoupon = 0;
                            dd.DiscountShop = dtl.BathDiscount;
                            if (dtl.QtyAllow < dd.Qty)
                            {
                                // ถ้าไม่ได้ตามเป้า 
                                dd.DiscountShop = 0;
                            }
                            dd.TotalPrice = dtl.TotalPrice;
                            if (dtl.ProductDetails.Products.ProductVatType.Id == MyConstant.ProductVatType.HasVat)
                            {
                                decimal removeVat = dd.TotalPrice * MyConstant.MyVat.Vat / MyConstant.MyVat.VatRemove;
                                dd.TotalBeforeVat = dd.TotalPrice - removeVat;
                                dd.TotalVat = removeVat;
                            }
                            else
                            {
                                dd.TotalBeforeVat = dd.TotalPrice;
                                dd.TotalVat = 0;
                            }
                            dd.IsPromotion = false;
                            details.Add(dd);
                        }
                        var posCode = Library.GetGeneratePosNo(this._posMachine);
                        pos.InvoiceNo = posCode;
                        pos.Enable = true;
                        pos.Description = order.Description;
                        pos.CreateDate = DateTime.Now;
                        pos.CreateBy = Singleton.SingletonAuthen.Instance().Id;
                        pos.UpdateDate = DateTime.Now;
                        pos.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                        pos.FKMember = order.FKMember;
                        pos.FKDebtor = order.FKDebtor;
                        pos.TotalBalance = order.TotalBalance;
                        pos.PayDate = null;
                        pos.TotalVat = order.TotalVat;
                        pos.TotaNoVat = order.TotaNoVat;
                        pos.Total = order.Total;
                        pos.TotalDiscountCoupon = 0;
                        pos.TotalDiscountShop = 0;
                        pos.TotalBeforeVat = order.TotalBeforeVat;
                        pos.Discount = 0;
                        pos.Cash = order.TotalBalance;
                        pos.Change = 0;
                        pos.TotalDiscountShop = details.Sum(w => w.DiscountShop);
                        pos.PosDetails = details;
                        //pos.Total = getNewList.Sum(w => w.QtyAllow);
                        order.FKSaleOrderWarehouseStatus = MyConstant.SaleOrderWarehouseStatus.ConfirmOrder;
                        order.UpdateDate = DateTime.Now;
                        order.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                        order.ConfirmOrderDate = DateTime.Now;
                        order.ConfirmOrderBy = Singleton.SingletonAuthen.Instance().Id;
                        order.InvoiceNo = posCode;

                        // add to post เพื่อขาย
                        db.PosHeader.Add(pos);
                        // อีพเดท สถาน
                        db.Entry(order).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    LoadGrid();
                }
            }
            catch (Exception)
            {

            }
            finally
            {
                dbS.Dispose();
            }

        }