private void button2_Click(object sender, EventArgs e)
        {
            var           dt = Library.ConvertToDataTable(mrs);
            frmMainReport mr = new frmMainReport(this, dt, MyConstant.TypeReport.ReportMemberChange);

            mr.Show();
        }
Example #2
0
        /// <summary>
        /// พิมพ์ใบ Adjust
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            string        code   = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
            frmMainReport report = new frmMainReport(this, code);

            report.Show();
        }
Example #3
0
        /// <summary>
        /// พิมพ์
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                string code = textBoxDocNo.Text.Trim();
                using (SSLsEntities db = new SSLsEntities())
                {
                    var getDocOlder = db.StoreFrontValueDoc.SingleOrDefault(w => w.DocNo == code && w.Enable == true);
                    if (getDocOlder != null)
                    {
                        getDocOlder.PrintNumber     = getDocOlder.PrintNumber + 1;
                        db.Entry(getDocOlder).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    else
                    {
                        MessageBox.Show("ไม่ถูกต้อง");
                    }
                }

                frmMainReport mr = new frmMainReport(this, code);
                mr.Show();
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ถูกต้อง");
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            string code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
            // Open Paper WasteCN
            frmMainReport mr = new frmMainReport(this, code);

            mr.Show();
        }
Example #5
0
 private void button6_Click(object sender, EventArgs e)
 {
     try
     {
         /// รหัสใบออเดอร์
         string        code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[NoCN].Value.ToString();
         frmMainReport mr   = new frmMainReport(this, code);
         mr.Show();
     }
     catch (Exception)
     {
         MessageBox.Show("จำนวนเอกสารผิดพลาด");
     }
 }
 private void button4_Click(object sender, EventArgs e)
 {
     try
     {
         frmMainReport mr = new frmMainReport(this, ls);
         mr.Show();
         //string code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[NoCN].Value.ToString();
         //frmMainReport mr = new frmMainReport(this, code);
         //mr.Show();
     }
     catch (Exception)
     {
         MessageBox.Show("ไม่ถูกต้อง");
     }
 }
 private void button6_Click(object sender, EventArgs e)
 {
     try
     {
         /// รหัสใบออเดอร์
         string code = textBoxRcvNo.Text;
         if (code == "")
         {
             MessageBox.Show("ไม่พบเลขที่รับเข้า");
             return;
         }
         frmMainReport mr = new frmMainReport(this, code);
         mr.Show();
     }
     catch (Exception)
     {
         MessageBox.Show("จำนวนเอกสารผิดพลาด");
     }
 }
        /// <summary>
        /// พิมพ์ใบ A4 ออเดอร์ ที่เลือก
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                /// รหัสใบออเดอร์
                string code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString();
                frmMainReport mr = new frmMainReport(this, code);
                mr.Show();
                //int docQty = int.Parse(textBoxDocQty.Text.Trim());
                //var codeSelected = GetCodeOrderSelected();
                //PaperSaleOrderWarehouseViewer obj = new PaperSaleOrderWarehouseViewer(this, docQty, codeSelected);
                //obj.ShowDialog();
            }
            catch (Exception)
            {
                MessageBox.Show("จำนวนเอกสารผิดพลาด");
            }

        }
        private void button4_Click(object sender, EventArgs e)
        {
            if (row > -1)
            {
                DialogResult dr = MessageBox.Show("คุณต้องพิมพ์ซ้ำ ใช่หรือไม่ ?", "เเจ้งเพื่อทราบ", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                switch (dr)
                {
                case DialogResult.Yes:
                    Cursor.Current = Cursors.WaitCursor;
                    frmMainReport report = new frmMainReport(this, dataGridView1.Rows[row].Cells["Column1"].Value.ToString());
                    report.Show();
                    Cursor.Current = Cursors.Default;
                    break;

                case DialogResult.No:
                    break;
                }
            }
        }
        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();
            }
        }
Example #11
0
        public void BillingData()
        {
            Cursor.Current = Cursors.WaitCursor;
            using (SSLsEntities db = new SSLsEntities())
            {
                DateTime   dateS       = dateTimePickerStart.Value;
                DateTime   dateE       = dateTimePickerEnd.Value;
                int        checkCombo1 = 0;
                int        checkCombo2 = 0;
                List <int> fkProHd     = new List <int>();
                string     code1       = textBox1.Text.Trim();
                string     code2       = textBox2.Text.Trim();
                if (code1 == "")
                {
                    fkProHd = db.StoreFrontStock.Where(w => w.Enable == true).Select(w => w.FKProduct).Distinct().ToList();
                }
                else
                {
                    fkProHd = Library.GetAllProDtlId(code1, code2);
                }
                //if (comboBox1.Text != "ทั้งหมด")
                //{
                //    checkCombo1 = int.Parse(comboBox1.SelectedValue.ToString());
                //    checkCombo2 = int.Parse(comboBox2.SelectedValue.ToString());
                //    fkProHd = db.StoreFrontStock.Where(w => w.Enable == true).Select(w => w.FKProduct).Distinct().ToList();
                //}
                //else
                //{
                //    fkProHd = Library.GetAllProDtlId(code1, code2);
                //}
                //var txt1 = Singleton.SingletonProduct.Instance().ProductDetails.Where(ww => ww.Code == textBox1.Text & ww.Enable == true).Select(s => s.FKProduct).FirstOrDefault();

                //var txt2 = Singleton.SingletonProduct.Instance().ProductDetails.Where(ww => ww.Code == textBox2.Text & ww.Enable == true).Select(s => s.FKProduct).FirstOrDefault();
                // var listData = db.StoreFrontStockDetails.Where(w => w.Enable == true &&
                // fkProHd.Contains(w.StoreFrontStock.FKProduct) &&
                // DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(dateS) &&
                // DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(dateE) &&
                //(checkCombo1 == 0 && checkCombo2 == 0 ?
                //(w.StoreFrontStock.Products.FKProductGroup > 0) :
                //(w.StoreFrontStock.Products.FKProductGroup >= checkCombo1 &&
                //w.StoreFrontStock.Products.FKProductGroup <= checkCombo2))).ToList();
                var listData = db.StoreFrontStockDetails.Where(w => w.Enable == true &&
                                                               fkProHd.Contains(w.StoreFrontStock.FKProduct) &&
                                                               DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(dateS) &&
                                                               DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(dateE)
                                                               ).ToList();
                var list1 = listData
                            .GroupBy(g => new
                {
                    g.StoreFrontStock.Products.ProductDetails.OrderBy(w => w.PackSize).FirstOrDefault().Code,
                    g.StoreFrontStock.Products.ThaiName,
                    g.StoreFrontStock.FKProduct,
                    g.FKStoreFrontStock,
                    g.FKTransactionType,
                    UnitName = g.StoreFrontStock.Products.ProductDetails.Where(w => w.PackSize == 1).Select(ss => (ss.ProductUnit.Name == null ? "ไม่มี" : ss.ProductUnit.Name)).FirstOrDefault(),
                    ยอดยกมา  = 0,
                    ยอดยกไป  = 0,
                    Price    = 0
                })
                            .Select(s => new { ProductId = s.Key.FKProduct, Product = s.Key.Code + " " + s.Key.ThaiName, FKS = s.Key.FKStoreFrontStock, Id = s.Key.FKTransactionType, s.Key.UnitName, s.Key.ยอดยกมา, s.Key.ยอดยกไป, ActionQty = (s.Sum(ss => ss.ActionQty) == null ? 0 : s.Sum(ss => ss.ActionQty)), s.Key.Price }).GroupBy(g => new { g.ProductId, g.Product, g.UnitName, g.ยอดยกมา, g.ยอดยกไป, g.Price, g.Id })
                            .Select(s => new
                {
                    ProuctId     = s.Key.ProductId,
                    Product      = s.Key.Product,
                    UnitName     = s.Key.UnitName,
                    Summit       = s.Key.ยอดยกมา,
                    LiftUp       = s.Key.ยอดยกไป,
                    Price        = s.Key.Price,
                    Buy          = (s.Key.Id == 19 ? s.Sum(m => m.ActionQty) : 0),
                    SendVender   = (s.Key.Id == 3 ? s.Sum(m => m.ActionQty) : 0),
                    Sell         = (s.Key.Id == 2 ? s.Sum(m => m.ActionQty) : 0),
                    SellGive     = (s.Key.Id == 11 ? s.Sum(m => m.ActionQty) : 0),
                    Cn           = (s.Key.Id == 4 || s.Key.Id == 22 ? s.Sum(m => m.ActionQty) : 0),
                    CnGive       = (s.Key.Id == 12 ? s.Sum(m => m.ActionQty) : 0),
                    CnCancel     = (s.Key.Id == 5 ? s.Sum(m => m.ActionQty) : 0),
                    CnGiveCancel = (s.Key.Id == 17 ? s.Sum(m => m.ActionQty) : 0),
                    Rcv          = (s.Key.Id == 1 ? s.Sum(m => m.ActionQty) : 0),
                    RcvPo        = (s.Key.Id == 10 ? s.Sum(m => m.ActionQty) : 0),
                    OutUse       = (s.Key.Id == 14 ? s.Sum(m => m.ActionQty) : 0),
                    Out          = (s.Key.Id == 8 ? s.Sum(m => m.ActionQty) : 0),
                    AdjustCost   = (s.Key.Id == 20 ? s.Sum(m => m.ActionQty) : 0),
                    Tran         = (s.Key.Id == 9 ? s.Sum(m => m.ActionQty) : 0)
                }).GroupBy(g => new { g.ProuctId, g.Product, g.UnitName, g.Summit, g.LiftUp, g.Price })
                            .Select(s => new
                {
                    ProuctId     = s.Key.ProuctId,
                    Product      = s.Key.Product,
                    UnitName     = s.Key.UnitName,
                    Summit       = s.Key.Summit,
                    LiftUp       = s.Key.LiftUp,
                    Price        = s.Key.Price,
                    Buy          = s.Sum(ss => ss.Buy),
                    SendVender   = s.Sum(ss => ss.SendVender),
                    Sell         = s.Sum(ss => ss.Sell),
                    SellGive     = s.Sum(ss => ss.SellGive),
                    Cn           = s.Sum(ss => ss.Cn),
                    CnGive       = s.Sum(ss => ss.CnGive),
                    CnCancel     = s.Sum(ss => ss.CnCancel),
                    CnGiveCancel = s.Sum(ss => ss.CnGiveCancel),
                    Rcv          = s.Sum(ss => ss.Rcv),
                    RcvPo        = s.Sum(ss => ss.RcvPo),
                    OutUse       = s.Sum(ss => ss.OutUse),
                    Out          = s.Sum(ss => ss.Out),
                    AdjustCost   = s.Sum(ss => ss.AdjustCost),
                    Tran         = s.Sum(ss => ss.Tran)
                }).ToList();
                List <TransValue> ls = new List <TransValue>();
                int i           = 0;
                int countListpg = list1.Count();
                progressBar1.Minimum = 0;
                progressBar1.Maximum = countListpg;
                foreach (var item in list1)
                {
                    i++;
                    TransValue c = new TransValue();
                    c.ProuctId     = item.ProuctId.ToString();
                    c.Product      = item.Product.ToString();
                    c.UnitName     = item.UnitName;
                    c.Summit       = GetResult(item.ProuctId, dateS);
                    c.LiftUp       = GetBalance(item.ProuctId, dateS, dateE);
                    c.Price        = Library.GetAverage(item.ProuctId);
                    c.Buy          = item.Buy;
                    c.SendVender   = item.SendVender;
                    c.Sell         = item.Sell;
                    c.SellGive     = item.SellGive;
                    c.Cn           = item.Cn;
                    c.CnCancel     = item.CnCancel;
                    c.CnGiveCancel = item.CnGiveCancel;
                    c.Rcv          = item.Rcv;
                    c.RcvPo        = item.RcvPo;
                    c.OutUse       = item.OutUse;
                    c.Out          = item.Out;
                    c.AdjustCost   = item.AdjustCost;
                    c.Tran         = item.Tran;
                    ls.Add(c);
                    progressBar1.Value = i;
                    progressBar1.Refresh();
                }
                if (list1.Count > 0)
                {
                    string User, WhereDate, WhereProduct, WhereGroupP;
                    //User = Singleton.SingletonAuthen.Instance().Name;
                    User         = Singleton.SingletonAuthen.Instance().Name;
                    WhereDate    = Library.ConvertDateToThaiDate(dateS) + "  ถึง  " + Library.ConvertDateToThaiDate(dateE);
                    WhereProduct = (textBox1.Text == "" ? "ค้นหา รหัส Barcode สินค้าทั้งหมด" : "ค้นหา รหัส Barcode สินค้า : " + textBox1.Text + " ถึง " + textBox2.Text);
                    WhereGroupP  = (comboBox1.Text == "ทั้งหมด" ? "ค้นหา หมวดสินค้าทั้งหมด" : "ค้นหา หมวดสินค้า : " + comboBox1.Text + " ถึง " + comboBox2.Text);
                    DataTable     dt  = CodeFileDLL.ConvertToDataTable(ls);
                    frmMainReport frm = new frmMainReport(this, dt, User, WhereDate, WhereProduct, WhereGroupP);
                    Cursor.Current = Cursors.Default;
                    frm.Show();
                }
                else
                {
                    Cursor.Current = Cursors.Default;
                    MessageBox.Show("ไม่พบข้อมูล");
                }
            }
        }
Example #12
0
        private void SaveCommit()
        {
            try
            {
                CNWarehouse cnw = new CNWarehouse();
                cnw.Code          = textBoxCode.Text;
                cnw.Enable        = true;
                cnw.Description   = textBoxDesc.Text;
                cnw.CreateDate    = DateTime.Now;
                cnw.CreateBy      = Singleton.SingletonAuthen.Instance().Id;
                cnw.UpdateDate    = DateTime.Now;
                cnw.UpdateBy      = Singleton.SingletonAuthen.Instance().Id;
                cnw.FKWasteReason = _WasteReason;
                decimal qtyPiece = 0;
                List <CNWarehouseDetails> details = new List <CNWarehouseDetails>();
                CNWarehouseDetails        detail;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    detail = new CNWarehouseDetails();

                    detail.Enable           = true;
                    detail.Description      = dataGridView1.Rows[i].Cells[colDescription].Value.ToString();
                    detail.CreateDate       = DateTime.Now;
                    detail.CreateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.UpdateDate       = DateTime.Now;
                    detail.UpdateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.FKProductDetails = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    detail.Qty = decimal.Parse(dataGridView1.Rows[i].Cells[colQtyCN].Value.ToString());
                    if (detail.Qty < 1)
                    {
                        continue;
                    }
                    qtyPiece           += decimal.Parse(dataGridView1.Rows[i].Cells[colQtyCN].Value.ToString()) * decimal.Parse(dataGridView1.Rows[i].Cells[colPZ].Value.ToString());
                    detail.PricePerUnit = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    detail.BeforeVat    = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString()) * detail.Qty;
                    detail.Vat          = ((detail.BeforeVat * detail.Qty) * MyConstant.MyVat.Vat) / 100;
                    detail.TotalPrice   = detail.BeforeVat + detail.Vat;
                    details.Add(detail);
                    //if (i >= dataGridView1.Rows.Count - 2) break;
                }
                cnw.FKVendor           = _VendorId;
                cnw.DocDate            = DateTime.Now;
                cnw.DocRefer           = textBoxDocRefer.Text;
                cnw.TotalQty           = qtyPiece;
                cnw.TotalQtyUnit       = decimal.Parse(textBoxQtyUnit.Text);
                cnw.TotalUnVat         = decimal.Parse(textBoxTotalUnVat.Text);
                cnw.TotalBeforeVat     = decimal.Parse(textBoxTotalBeforeVat.Text);
                cnw.TotalVat           = decimal.Parse(textBoxTotalVat.Text);
                cnw.TotalBalance       = cnw.TotalUnVat + cnw.TotalBeforeVat;
                cnw.CNWarehouseDetails = details;

                using (SSLsEntities db = new SSLsEntities())
                {
                    db.CNWarehouse.Add(cnw);
                    db.SaveChanges();
                    // ManageStock Wms
                    //Library.MakeValueForUpdateStockWms(details);
                    MessageBox.Show("บันทึกเรียบร้อย " + cnw.Code);
                    // Add To Details ก่อน
                    // WasteWarehouse ห้องของเสียจัดเก็บ
                    // WasteWarehouseDetails
                    foreach (var item in details)
                    {
                        WasteWarehouseDetails dtl = new WasteWarehouseDetails();
                        dtl.ConfirmCNBy   = null;
                        dtl.ConfirmCNDate = null;
                        var getProdDtl = Singleton.SingletonProduct.Instance().ProductDetails.SingleOrDefault(w => w.Id == item.FKProductDetails);
                        dtl.CostOnly         = getProdDtl.CostOnly;
                        dtl.CreateBy         = item.CreateBy;
                        dtl.CreateDate       = DateTime.Now;
                        dtl.Description      = "ส่งคืนห้องของเสีย ให้ผู้จำหน่าย";
                        dtl.DocReference     = cnw.Code;
                        dtl.Enable           = true;
                        dtl.FKProductDetails = item.FKProductDetails;
                        var lastTrans = db.WasteWarehouseDetails.Where(w => w.FKProductDetails == item.FKProductDetails && w.Enable == true)
                                        .OrderByDescending(w => w.CreateDate).FirstOrDefault();
                        dtl.FKWasteWarehouse = lastTrans.FKWasteWarehouse;
                        dtl.IsInOrOut        = false;
                        dtl.LastResultPiece  = 0;
                        dtl.LastResultUnit   = 0;
                        dtl.Packsize         = getProdDtl.PackSize;
                        dtl.QtyPiece         = item.Qty * dtl.Packsize;
                        dtl.QtyUnit          = item.Qty;
                        dtl.SellPrice        = getProdDtl.SellPrice;
                        dtl.UpdateBy         = item.CreateBy;
                        dtl.UpdateDate       = DateTime.Now;
                        db.WasteWarehouseDetails.Add(dtl);
                        db.SaveChanges();

                        // Update HD
                        var wasteWarehouseHD = db.WasteWarehouse.SingleOrDefault(w => w.Id == lastTrans.FKWasteWarehouse);
                        wasteWarehouseHD.QtyPiece        = wasteWarehouseHD.QtyPiece - dtl.QtyPiece;
                        wasteWarehouseHD.QtyUnit         = wasteWarehouseHD.QtyUnit - dtl.QtyUnit;
                        db.Entry(wasteWarehouseHD).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
                // Update ห้องของเสีย
                //Library.AddWasteWarehouse(details, cnw.Code);

                // Open Paper WasteCN
                //PaperCNWasteViewer obj = new PaperCNWasteViewer(this, cnw.Code);
                //obj.ShowDialog();
                frmMainReport mr = new frmMainReport(this, cnw.Code);
                mr.Show();
                ResetForm();
            }
            catch (Exception)
            {
                MessageBox.Show("พบข้อมผิดพลาด");
            }
        }
Example #13
0
        /// <summary>
        /// ออกรายงานเป็น Paper
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click_1(object sender, EventArgs e)
        {
            try
            {
                var dt = Library.ConvertToDataTable(lsReport.
                                                    Select(s => new
                {
                    TotalMale   = textBoxMale.Text == "" || textBoxMale.Text == null ? "0" : textBoxMale.Text,
                    TotalFemale = textBoxFemale.Text == "" || textBoxFemale.Text == null ? "0" : textBoxFemale.Text,
                    TotalgetFromBeforeBudget = textBoxTotalFromBefore.Text == "" || textBoxTotalFromBefore.Text == null ? "0" : textBoxTotalFromBefore.Text,
                    TotalgetAddThisYear      = textBoxTotalAddThisYear.Text == "" || textBoxTotalAddThisYear.Text == null ? "0" : textBoxTotalAddThisYear.Text,
                    TotalMemberShare         = textBoxTotalBalance.Text == "" || textBoxTotalBalance.Text == null ? "0" : textBoxTotalBalance.Text,
                    TotalremoveValue         = textBoxTotalResign.Text == "" || textBoxTotalResign.Text == null ? "0" : textBoxTotalResign.Text,
                    Number = s.Number,
                    Group  = s.Group,
                    Code   = s.Code,
                    Name   = s.Name,
                    Sex    = s.Sex,
                    getFromBeforeBudget = s.getFromBeforeBudget,
                    getAddThisYear      = s.getAddThisYear,
                    removeValue         = s.removeValue,
                    removeDate          = s.removeDate,
                    MemberShare         = s.MemberShare,
                    TotalList           = TotalList
                }).ToList());
                frmMainReport mr = new frmMainReport(this, dt);
                mr.Show();
            }
            catch (Exception)
            {
                MessageBox.Show("จำนวนเอกสารผิดพลาด");
            }

            //int row = 45;
            //int number = 1;
            //List<MemberReportPaper> objs = new List<MemberReportPaper>();
            //int countMale = 0;
            //int countFemale = 0;
            //int totalMale = 0;
            //int totalFemale = 0;
            //decimal sumAfterYear = 0;
            //decimal sumAddPoint = 0;
            //for (int i = 0; i < dataGridView1.Rows.Count; i++)
            //{
            //    objs.Add(new MemberReportPaper()
            //    {
            //        Number = (i + 1) + "",
            //        Code = dataGridView1.Rows[i].Cells[colCode].Value.ToString(),
            //        Name = dataGridView1.Rows[i].Cells[colName].Value.ToString(),
            //        Sex = dataGridView1.Rows[i].Cells[colSex].Value.ToString(),
            //        GetAfterYear = dataGridView1.Rows[i].Cells[colGetAfterYear].Value.ToString(),
            //        AddPoint = dataGridView1.Rows[i].Cells[colAddPoint].Value.ToString(),
            //        Resign = dataGridView1.Rows[i].Cells[colResign].Value.ToString(),
            //        ResignDate = dataGridView1.Rows[i].Cells[colResignDate].Value.ToString(),
            //        Total = dataGridView1.Rows[i].Cells[colTotal].Value.ToString(),
            //    });
            //    if (dataGridView1.Rows[i].Cells[colSex].Value.ToString() == "ชาย")
            //    {
            //        countMale++;
            //    }
            //    else
            //    {
            //        countFemale++;
            //    }
            //    sumAfterYear += decimal.Parse(dataGridView1.Rows[i].Cells[colGetAfterYear].Value.ToString());
            //    sumAddPoint += decimal.Parse(dataGridView1.Rows[i].Cells[colAddPoint].Value.ToString());

            //    if (number == row)
            //    {
            //        totalMale = totalMale + countMale;
            //        totalFemale = totalMale + countFemale;
            //        number = 1;
            //        // add summary
            //        objs.Add(new MemberReportPaper()
            //        {
            //            Number = "----",
            //            Code = "รวม",
            //            Name = "หญิง = " + countFemale + " ชาย = " + countFemale,
            //            Sex = "-",
            //            GetAfterYear = Library.ConvertDecimalToStringForm(sumAfterYear),
            //            AddPoint = Library.ConvertDecimalToStringForm(sumAddPoint),
            //            Resign = dataGridView1.Rows[i].Cells[colResign].Value.ToString(),
            //            ResignDate = "-----------",
            //            Total = dataGridView1.Rows[i].Cells[colTotal].Value.ToString(),
            //        });
            //    }
            //    number++;
            //}
        }
Example #14
0
        /// <summary>
        /// แบบมีมูลค่า
        /// </summary>
        public void BindingInOutValue()
        {
            //try
            //{
            Cursor.Current = Cursors.WaitCursor;
            var               time_S      = dateTimePicker_S.Value;
            var               time_E      = dateTimePicker_E.Value;
            string            dateStart   = time_S.ToString("yyyyMMdd");
            List <InOutValue> lsGetResult = new List <InOutValue>();

            using (SSLsEntities db = new SSLsEntities())
            {
                List <int> fkPro = new List <int>();
                if (checkBoxProduct.Checked == true)
                {
                    // ถ้าเลือกทั้งหมด
                    fkPro = Library.GetAllProDtlId("", "");
                }
                else
                {
                    fkPro = Library.GetAllProDtlId(txt_p_S.Text.Trim(), txt_p_E.Text.Trim());
                }

                var getOnView = db.View_GetFrontStockByProductDate.Where(w => DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(time_S) &&
                                                                         DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(time_E)).OrderBy(w => w.CreateDate).ToList();
                var getForProduct = getOnView.Where(w => fkPro.Contains(w.FKProduct)).OrderBy(w => w.FKProduct).ToList();

                List <C_ProductRawInOut> stackDetails = new List <C_ProductRawInOut>();
                int countListpg = fkPro.Count();
                progressBar1.Minimum = 0;
                progressBar1.Maximum = countListpg;
                int      i        = 0;
                DateTime startPro = DateTime.Now;
                var      aa       = Library.GetQueryยอดยกมา(dateStart, "0", "999999999999999");
                foreach (var item in fkPro)
                {
                    List <View_GetFrontStockByProductDate> dataGet = getForProduct.Where(w => w.FKProduct == item).OrderBy(w => w.CreateDate).ToList();
                    decimal movementAvg = 0;
                    decimal balance     = 0;
                    i++;
                    if (dataGet.Count == 0)
                    {
                        progressBar1.Value = i;
                        progressBar1.Refresh();
                        Console.WriteLine("******* " + fkPro.Count + " " + item + " " + i + " " + getForProduct.Count());
                        continue;
                    }
                    //decimal resultForProHD = Library.GetResult(item, time_S);
                    decimal resultForProHD = decimal.Parse(aa.SingleOrDefault(w => w.FKProduct == item).qty);
                    movementAvg = Library.GetAverage(item);

                    lsGetResult.Add(new InOutValue() // ยอดยกมา
                    {
                        CreateDate   = "",
                        DocNo        = "ยอดยกมา",
                        DocDtlNumber = "",
                        ProductName  = "",
                        Pz           = "",
                        InQty        = "",
                        InCost       = "",
                        InValue      = "",
                        OutQty       = "",
                        OutCost      = "",
                        OutValue     = "",
                        BalQty       = Library.ConvertDecimalToStringForm(resultForProHD),
                        BalCost      = Library.ConvertDecimalToStringForm(movementAvg),
                        BalValue     = Library.ConvertDecimalToStringForm(movementAvg * resultForProHD),
                        DocDesc      = "ยกมาจาก " + Library.ConvertDateToThaiDate(time_S)
                    });
                    balance = movementAvg * resultForProHD;

                    decimal sumPlus         = 0;
                    decimal sumMinus        = 0;
                    decimal sumTotalInCost  = 0;
                    decimal sumTotalOutCost = 0;
                    foreach (var trans in dataGet.OrderBy(w => w.Barcode).ToList()) // transactions
                    {
                        decimal plus  = 0;
                        decimal minus = 0;
                        sumTotalInCost  = 0;
                        sumTotalOutCost = 0;
                        if (trans.IsPlus == true)
                        {
                            plus           = trans.ActionQty;
                            resultForProHD = resultForProHD + plus;
                            // bal value in 1 transation
                            //movementAvg = trans.CostOnlyPerUnit;
                            sumTotalInCost = movementAvg * plus;
                            balance        = balance + sumTotalInCost;
                        }
                        else
                        {
                            minus          = trans.ActionQty;
                            resultForProHD = resultForProHD - minus;
                            // bal value in 1 transation
                            sumTotalOutCost = movementAvg * minus; // มูลค่าจ่าย
                            balance         = balance - sumTotalOutCost;
                        }
                        sumPlus  += plus;
                        sumMinus += minus;
                        //balance = movementAvg * resultForProHD;
                        ///////// use movement average
                        lsGetResult.Add(new InOutValue()
                        {
                            CreateDate   = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                            DocNo        = trans.DocNo,
                            DocDtlNumber = trans.DocDtlNumber + "",
                            ProductName  = trans.Code + " " + trans.ThaiName + " " + trans.Unit + "x" + ((int)trans.PackSize),
                            Pz           = ((int)trans.PackSize) + "",
                            InQty        = Library.ConvertDecimalToStringForm(plus),
                            InCost       = Library.ConvertDecimalToStringForm(movementAvg),
                            InValue      = Library.ConvertDecimalToStringForm(plus * movementAvg),
                            OutQty       = Library.ConvertDecimalToStringForm(minus),
                            OutCost      = Library.ConvertDecimalToStringForm(movementAvg),
                            OutValue     = Library.ConvertDecimalToStringForm(minus * movementAvg),
                            BalQty       = Library.ConvertDecimalToStringForm(resultForProHD),
                            BalCost      = Library.ConvertDecimalToStringForm(movementAvg),
                            BalValue     = Library.ConvertDecimalToStringForm(balance),
                            DocDesc      = trans.TransName,
                            FKTrans      = trans.FKTransactionType
                        });
                        /////////////////// old logic
                        //lsGetResult.Add(new InOutValue()
                        //{
                        //    CreateDate = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                        //    DocNo = trans.DocNo,
                        //    DocDtlNumber = trans.DocDtlNumber + "",
                        //    ProductName = trans.ProductDetails.Code + " " + trans.ProductDetails.Products.ThaiName + " " + trans.ProductDetails.ProductUnit.Name + "x" + ((int)trans.PackSize),
                        //    Pz = ((int)trans.PackSize) + "",
                        //    InQty = Library.ConvertDecimalToStringForm(plus),
                        //    InCost = Library.ConvertDecimalToStringForm(trans.CostOnlyPerUnit),
                        //    InValue = Library.ConvertDecimalToStringForm((trans.CostOnlyPerUnit / trans.PackSize) * plus),
                        //    OutQty = Library.ConvertDecimalToStringForm(minus),
                        //    OutCost = Library.ConvertDecimalToStringForm(trans.CostOnlyPerUnit),
                        //    OutValue = Library.ConvertDecimalToStringForm((trans.CostOnlyPerUnit / trans.PackSize) * minus),
                        //    BalQty = Library.ConvertDecimalToStringForm(resultForProHD),
                        //    BalCost = Library.ConvertDecimalToStringForm(Library.GetAverage(item)),
                        //    BalValue = Library.ConvertDecimalToStringForm(Library.GetAverage(item) * resultForProHD),
                        //    DocDesc = trans.TransactionType.Name,
                        //    FKTrans = trans.FKTransactionType
                        //});
                        sumTotalInCost  += trans.CostOnlyPerUnit * plus;
                        sumTotalOutCost += trans.CostOnlyPerUnit * minus;
                        getForProduct.Remove(trans);
                    }

                    lsGetResult.Add(new InOutValue() // ยอดยกไป
                    {
                        CreateDate   = "",
                        DocNo        = "ยอดยกไป",
                        DocDtlNumber = "",
                        ProductName  = "",
                        Pz           = "",
                        InQty        = "",
                        InCost       = "",
                        InValue      = "",
                        OutQty       = "",
                        OutCost      = "",
                        OutValue     = "",
                        BalQty       = Library.ConvertDecimalToStringForm(resultForProHD),
                        BalCost      = Library.ConvertDecimalToStringForm(Library.GetAverage(item)),
                        BalValue     = Library.ConvertDecimalToStringForm(Library.GetAverage(item) * resultForProHD),
                        DocDesc      = "ยกไป " + Library.ConvertDateToThaiDate(time_E)
                    });
                    lsGetResult.Add(new InOutValue() // ยอดยกไป
                    {
                        CreateDate   = "",
                        DocNo        = "",
                        DocDtlNumber = "",
                        ProductName  = "",
                        Pz           = "",
                        InQty        = "",
                        InCost       = "",
                        InValue      = "",
                        OutQty       = "",
                        OutCost      = "",
                        OutValue     = "",
                        BalQty       = "",
                        BalCost      = "",
                        BalValue     = "",
                        DocDesc      = "",
                    });
                    progressBar1.Value = i;
                    progressBar1.Refresh();

                    Console.WriteLine("******* " + fkPro.Count + " " + item + " " + i + " " + getForProduct.Count());
                }
                Console.WriteLine(startPro + " " + DateTime.Now);
                //foreach (var item in fkPro)
                //{
                //    decimal movementAvg = 0;
                //    decimal balance = 0;
                //    i++;
                //    List<StoreFrontStockDetails> details = db.StoreFrontStockDetails
                //    .Where(w => w.StoreFrontStock.FKProduct == item && w.StoreFrontStock.Enable == true && w.Enable == true &&
                //  DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(time_S) &&
                //    DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(time_E)
                //  ).OrderBy(w => w.CreateDate).ToList();

                //    if (details.Count == 0)
                //    {
                //        progressBar1.Value = i;
                //        progressBar1.Refresh();
                //        continue;
                //    }
                //    decimal resultForProHD = Library.GetResult(item, time_S);
                //    movementAvg = Library.GetAverage(item);

                //    lsGetResult.Add(new InOutValue() // ยอดยกมา
                //    {
                //        CreateDate = "",
                //        DocNo = "ยอดยกมา",
                //        DocDtlNumber = "",
                //        ProductName = "",
                //        Pz = "",
                //        InQty = "",
                //        InCost = "",
                //        InValue = "",
                //        OutQty = "",
                //        OutCost = "",
                //        OutValue = "",
                //        BalQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //        BalCost = Library.ConvertDecimalToStringForm(movementAvg),
                //        BalValue = Library.ConvertDecimalToStringForm(movementAvg * resultForProHD),
                //        DocDesc = "ยกมาจาก " + Library.ConvertDateToThaiDate(time_S)
                //    });

                //    balance = movementAvg * resultForProHD;

                //    decimal sumPlus = 0;
                //    decimal sumMinus = 0;
                //    decimal sumTotalInCost = 0;
                //    decimal sumTotalOutCost = 0;
                //    foreach (var trans in details.OrderBy(w => w.Barcode).ToList()) // transactions
                //    {
                //        decimal plus = 0;
                //        decimal minus = 0;
                //        sumTotalInCost = 0;
                //        sumTotalOutCost = 0;
                //        if (trans.TransactionType.IsPlus == true)
                //        {
                //            plus = trans.ActionQty;
                //            resultForProHD = resultForProHD + plus;
                //            // bal value in 1 transation
                //            movementAvg = trans.CostOnlyPerUnit;
                //            sumTotalInCost = movementAvg * plus;
                //            balance = balance + sumTotalInCost;
                //        }
                //        else
                //        {
                //            minus = trans.ActionQty;
                //            resultForProHD = resultForProHD - minus;
                //            // bal value in 1 transation
                //            sumTotalOutCost = movementAvg * minus; // มูลค่าจ่าย
                //            balance = balance - sumTotalOutCost;
                //        }
                //        sumPlus += plus;
                //        sumMinus += minus;
                //        //balance = movementAvg * resultForProHD;
                //        ///////// use movement average
                //        lsGetResult.Add(new InOutValue()
                //        {
                //            CreateDate = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                //            DocNo = trans.DocNo,
                //            DocDtlNumber = trans.DocDtlNumber + "",
                //            ProductName = trans.ProductDetails.Code + " " + trans.ProductDetails.Products.ThaiName + " " + trans.ProductDetails.ProductUnit.Name + "x" + ((int)trans.PackSize),
                //            Pz = ((int)trans.PackSize) + "",
                //            InQty = Library.ConvertDecimalToStringForm(plus),
                //            InCost = Library.ConvertDecimalToStringForm(movementAvg),
                //            InValue = Library.ConvertDecimalToStringForm(plus * movementAvg),
                //            OutQty = Library.ConvertDecimalToStringForm(minus),
                //            OutCost = Library.ConvertDecimalToStringForm(movementAvg),
                //            OutValue = Library.ConvertDecimalToStringForm(minus * movementAvg),
                //            BalQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //            BalCost = Library.ConvertDecimalToStringForm(movementAvg),
                //            BalValue = Library.ConvertDecimalToStringForm(balance),
                //            DocDesc = trans.TransactionType.Name,
                //            FKTrans = trans.FKTransactionType
                //        });
                //        /////////////////// old logic
                //        //lsGetResult.Add(new InOutValue()
                //        //{
                //        //    CreateDate = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                //        //    DocNo = trans.DocNo,
                //        //    DocDtlNumber = trans.DocDtlNumber + "",
                //        //    ProductName = trans.ProductDetails.Code + " " + trans.ProductDetails.Products.ThaiName + " " + trans.ProductDetails.ProductUnit.Name + "x" + ((int)trans.PackSize),
                //        //    Pz = ((int)trans.PackSize) + "",
                //        //    InQty = Library.ConvertDecimalToStringForm(plus),
                //        //    InCost = Library.ConvertDecimalToStringForm(trans.CostOnlyPerUnit),
                //        //    InValue = Library.ConvertDecimalToStringForm((trans.CostOnlyPerUnit / trans.PackSize) * plus),
                //        //    OutQty = Library.ConvertDecimalToStringForm(minus),
                //        //    OutCost = Library.ConvertDecimalToStringForm(trans.CostOnlyPerUnit),
                //        //    OutValue = Library.ConvertDecimalToStringForm((trans.CostOnlyPerUnit / trans.PackSize) * minus),
                //        //    BalQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //        //    BalCost = Library.ConvertDecimalToStringForm(Library.GetAverage(item)),
                //        //    BalValue = Library.ConvertDecimalToStringForm(Library.GetAverage(item) * resultForProHD),
                //        //    DocDesc = trans.TransactionType.Name,
                //        //    FKTrans = trans.FKTransactionType
                //        //});
                //        sumTotalInCost += trans.CostOnlyPerUnit * plus;
                //        sumTotalOutCost += trans.CostOnlyPerUnit * minus;
                //    }

                //    lsGetResult.Add(new InOutValue() // ยอดยกไป
                //    {
                //        CreateDate = "",
                //        DocNo = "ยอดยกไป",
                //        DocDtlNumber = "",
                //        ProductName = "",
                //        Pz = "",
                //        InQty = "",
                //        InCost = "",
                //        InValue = "",
                //        OutQty = "",
                //        OutCost = "",
                //        OutValue = "",
                //        BalQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //        BalCost = Library.ConvertDecimalToStringForm(Library.GetAverage(item)),
                //        BalValue = Library.ConvertDecimalToStringForm(Library.GetAverage(item) * resultForProHD),
                //        DocDesc = "ยกไป " + Library.ConvertDateToThaiDate(time_E)
                //    });

                //    lsGetResult.Add(new InOutValue() // ยอดยกไป
                //    {
                //        CreateDate = "",
                //        DocNo = "",
                //        DocDtlNumber = "",
                //        ProductName = "",
                //        Pz = "",
                //        InQty = "",
                //        InCost = "",
                //        InValue = "",
                //        OutQty = "",
                //        OutCost = "",
                //        OutValue = "",
                //        BalQty = "",
                //        BalCost = "",
                //        BalValue = "",
                //        DocDesc = "",
                //    });
                //    progressBar1.Value = i;
                //    progressBar1.Refresh();
                //}

                var countList = lsGetResult.Where(w => w.DocNo != "ยอดยกมา" && w.DocNo != "สรุปรวม").Count();

                dataGridView1.DataSource = lsGetResult;
                dataGridView1.Refresh();

                var dt = Library.ConvertToDataTable(lsGetResult.Select(s =>
                                                                       new
                {
                    CreateDate = s.CreateDate,
                    DocNo      = s.DocNo == "ยอดยกมา" || s.DocNo == "สรุปรวม" ? s.DocNo : s.DocNo + "- " + s.DocDtlNumber,
                    DocName    = s.DocNo == "ยอดยกมา" || s.DocNo == "สรุปรวม" ? "" : s.ProductName,
                    InQty      = s.InQty == "0.00" ? "" : s.InQty,
                    InCost     = s.InQty == "0.00" ? "" : s.InCost,
                    InValue    = s.InQty == "0.00" ? "" : s.InValue,
                    OutQty     = s.OutQty == "0.00" ? "" : s.OutQty,
                    OutCost    = s.OutQty == "0.00" ? "" : s.OutCost,
                    OutValue   = s.OutQty == "0.00" ? "" : s.OutValue,
                    BalQty     = s.BalQty == "0.00" ? "" : s.BalQty,
                    BalCost    = s.BalQty == "0.00" ? "" : s.BalCost,
                    BalValue   = s.BalQty == "0.00" ? "" : s.BalValue,
                    ReferDoc   = s.FKTrans == MyConstant.PosTransaction.Selling ? "" : s.DocDesc,
                    countList  = countList,
                    Date_S     = Library.ConvertDateToThaiDate(time_S),
                    Date_E     = Library.ConvertDateToThaiDate(time_E),
                    Product_S  = txt_p_S.Text == "" || txt_p_S.Text == null ? "ทั้งหมด" : txt_p_S.Text,
                    Product_E  = txt_p_E.Text == "" || txt_p_E.Text == null ? "ทั้งหมด" : txt_p_E.Text,
                }).ToList());
                lb_msg.Text = "ระบบประมวลผลสำเร็จ";
                this.Refresh();
                Cursor.Current = Cursors.Default;
                frmMainReport mr = new frmMainReport(this, dt, true);
                mr.Show();
            }

            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "แจ้งเตือนจากระบบ!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }
        void bildingDataCostAndSellPrice(string Code_S, string Code_E)
        {
            //try
            //{
            DateTime dateS = dateTimePicker_S.Value;
            var      aaa   = comboBox_S.Text;

            Cursor.Current = Cursors.WaitCursor;
            int             i     = 0;
            List <LefClass> lssfs = new List <LefClass>();

            using (SSLsEntities db = new SSLsEntities())
            {
                int        pid_S;
                int        pid_E;
                int        comBo_S = int.Parse(comboBox_S.SelectedValue.ToString());
                int        comBo_E = int.Parse(comboBox_E.SelectedValue.ToString());
                List <int> fkPro   = new List <int>();
                if (checkBoxProduct.Checked == true)
                {
                    // เลือกทั้งหมด
                    pid_S = 0;
                    pid_E = 0;
                    fkPro = db.StoreFrontStock.Where(w => w.Enable == true).Select(w => w.FKProduct).Distinct().ToList();
                }
                else
                {
                    pid_S = getIdProduct_S(Code_S);
                    pid_E = getIdProduct_E(Code_E);
                    fkPro = Library.GetAllProDtlId(Code_S, Code_E);
                }


                List <StoreFrontStock> sfs = db.StoreFrontStock.Where(w => w.Enable == true && fkPro.Contains(w.FKProduct) &&
                                                                      (comBo_S <= comBo_E ? // เงื่อนไขนี้เพื่อ บางครั้ง กลุ่มสินค้า ที่หามา id เริ่มต้นค้นหาน้อยกว่า ทำให้หาไม่เจอ เลยสับกัน
                                                                       ((comBo_S == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup >= comBo_S) && (comBo_E == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup <= comBo_E)) :
                                                                       ((comBo_E == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup >= comBo_E) && (comBo_S == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup <= comBo_S)))).ToList();
                int countListpg = sfs.Count();
                progressBar1.Minimum = 0;
                progressBar1.Maximum = countListpg;
                var dateString = dateS.AddDays(1).ToString("yyyyMMdd");
                //var aa = db.fn_GetResultDate(dateString, "0", "999999999999999").ToList();
                var aa = Library.GetQueryยอดยกมา(dateString, "0", "999999999999999");
                foreach (var item in sfs)
                {
                    i++;
                    LefClass c = new LefClass();
                    c.WareHouse = "หน้าร้าน";
                    if (item.Products.Enable == false)
                    {
                        progressBar1.Value = i;
                        progressBar1.Refresh();
                        continue;
                    }
                    if (item.Products.ProductDetails.OrderBy(od => od.PackSize).FirstOrDefault() == null)
                    {
                        progressBar1.Value = i;
                        progressBar1.Refresh();
                        continue;
                    }
                    c.ProductBarCode = item.Products.ProductDetails.OrderBy(od => od.PackSize).FirstOrDefault().Code;
                    c.ProductCode    = item.Products.Code;
                    c.ProductName    = item.Products.ThaiName;
                    //c.CurrentQty = Library.GetResult(item.FKProduct, dateS.AddDays(1));
                    var getProd = aa.SingleOrDefault(w => w.FKProduct == item.FKProduct);
                    if (getProd == null)
                    {
                        progressBar1.Value = i;
                        progressBar1.Refresh();
                        continue;
                    }
                    c.CurrentQty = decimal.Parse(getProd.qty);
                    c.Unit       = item.Products.ProductDetails.OrderBy(od => od.PackSize).Select(ss => (ss.ProductUnit.Name == null ? "ไม่มี" : ss.ProductUnit.Name)).FirstOrDefault();
                    c.CurrUnit   = Library.ConvertDecimalToStringForm(c.CurrentQty) + " " + c.Unit;
                    //c.Price = Library.GetAverage(item.FKProduct);
                    c.Price            = decimal.Parse(getProd.Cost);
                    c.ResidualValue    = c.CurrentQty * c.Price;
                    c.FKProduct        = item.Products.Id;
                    c.SellPricePerUnit = Library.ConvertDecimalToStringForm(Library.GetSellPriceOnly(item.FKProduct, dateS));
                    //c.SellPricePerUnit = "1";
                    c.SellPriceTotal = Library.ConvertDecimalToStringForm(decimal.Parse(c.SellPricePerUnit) * c.CurrentQty);
                    lssfs.Add(c);
                    progressBar1.Value = i;
                    progressBar1.Refresh();
                    //if (item.FKProduct == 60018)
                    //{
                    //    break;
                    //}
                }
            }

            var sumQty           = lssfs.Sum(w => w.CurrentQty);
            var sumPrice         = lssfs.Sum(w => w.Price);
            var sumResidualValue = lssfs.Sum(w => w.ResidualValue);
            var countList        = lssfs.Count();
            var sumTotal         = lssfs.Sum(w => decimal.Parse(w.SellPriceTotal));
            var bilding2Report   = lssfs.Select(a =>
                                                new
            {
                WareHouse         = "หน้าร้าน",
                ProductCode       = a.ProductBarCode,
                ProductName       = a.ProductName,
                CurrentQty        = a.CurrentQty,
                CurrUnit          = a.CurrUnit,
                Unit              = a.Unit,
                Price             = a.Price,
                ResidualValue     = a.ResidualValue,
                sumQty            = sumQty,
                sumPrice          = sumPrice,
                sumResidualValue  = sumResidualValue,
                SellPricePerUnit  = a.SellPricePerUnit,
                SellPriceTotal    = a.SellPriceTotal,
                countList         = countList,
                TimeNow           = Library.ConvertDateToThaiDate(dateS),
                Product_S         = Code_S == "" || Code_S == null ? "ทั้งหมด" : Code_S,
                Product_E         = Code_E == "" || Code_E == null ? "ทั้งหมด" : Code_E,
                ProductGroup_S    = comboBox_S.Text,
                ProductGroup_E    = comboBox_E.Text,
                sumSellPriceTotal = sumTotal
            }).ToList();

            var           dt = Library.ConvertToDataTable(bilding2Report);
            frmMainReport mr = new frmMainReport(this, dt, MyConstant.TypeReport.LeftInStockVat);

            mr.Show();

            lb_msg.Text = "ระบบประมวลผลสำเร็จ";
            this.Refresh();
            Cursor.Current = Cursors.Default;
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "แจ้งเตือนจากระบบ!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    throw;
            //}
        }
        // พิมพ์ใบเสร็จ yymmdd000001
        private void button2_Click(object sender, EventArgs e)
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                string  memberNo = nolabel.Text;
                var     getMem   = db.MemberChangeMoney25601.SingleOrDefault(w => w.หมายเลข == memberNo);
                decimal upcupon  = 0;
                if (invlabel.Text == "-")// ยังไม่พิมพ์
                {
                    string userId     = Singleton.SingletonAuthen.Instance().Id;
                    int    qtyReceipt = db.MemberChangeMoney25601.Where(w => w.PrintDate != null && w.PrintBy == userId).Count();
                    string running    = (qtyReceipt + 1).ToString("D5");
                    string receiptno  = "61";

                    getMem.PrintDate   = DateTime.Now;
                    getMem.PrintBy     = Singleton.SingletonAuthen.Instance().Id;
                    getMem.PrintNumber = 1;
                    //ปี เช่น 61
                    //ประเภท ใบเสร็จ สด = 1 คูปอง = 2
                    //เดือน เช่น 03
                    //วัน เช่น 29
                    //รหัสพนักงาน เช่น 112
                    //ลำดับเฉพาะพนักงาน 0001

                    //ตัวอย่าง จ่ายสด 61 1 03 29 112 00001
                    //ตัวอย่าง จ่ายคูปอง 61 2 03 29 11 2 00002

                    if (radioButton1.Checked == true)
                    {
                        // สด
                        getMem.GetType   = 1;
                        getMem.GetAmount = decimal.Parse(label10.Text);
                        upcupon          = 0;
                        receiptno        = receiptno + "1";
                    }
                    else
                    {
                        // คูปอง
                        getMem.GetType   = 2;
                        getMem.GetAmount = decimal.Parse(label11.Text);
                        upcupon          = decimal.Parse(dataGridView1.Rows[6].Cells[1].Value.ToString());
                        receiptno        = receiptno + "2";
                    }

                    receiptno        = receiptno + "" + DateTime.Now.ToString("MMdd") + userId + running;
                    getMem.ReceiptNo = receiptno;
                }
                else
                {
                    DialogResult dr = MessageBox.Show("ใบเสร็จนี้พิมพ์ไปแล้ว คุณต้องการพิมพ์ซ้ำ ใช่หรือไม่ ?",
                                                      "คำเตือนจากระบบ", MessageBoxButtons.YesNo);
                    switch (dr)
                    {
                    case DialogResult.Yes:

                        break;

                    case DialogResult.No:
                        return;
                    }
                    getMem.PrintNumber = getMem.PrintNumber + 1;
                }
                db.Entry(getMem).State = EntityState.Modified;
                db.SaveChanges();

                // print
                MemberChange2560 receiptPaper = new MemberChange2560();
                receiptPaper.No         = getMem.ReceiptNo;
                receiptPaper.NameMember = getMem.__อ_สก_ล;
                receiptPaper.NoMemeber  = getMem.หมายเลข;
                receiptPaper.Date       = Library.ConvertDateToThaiDate(DateTime.Now, true);
                receiptPaper.User       = Library.GetFullNameUserById(getMem.PrintBy);
                receiptPaper.PrintDate  = Library.ConvertDateToThaiDate(getMem.PrintDate, true);
                receiptPaper.UserPrint  = Library.GetFullNameUserById(Singleton.SingletonAuthen.Instance().Id);

                receiptPaper.BroughtForward        = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[0].Cells[1].Value.ToString()));
                receiptPaper.Current               = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[1].Cells[1].Value.ToString()));
                receiptPaper.BetweenYear           = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[2].Cells[1].Value.ToString()));
                receiptPaper.AverageBroughtForward = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[3].Cells[1].Value.ToString()));
                receiptPaper.AverageCurrent        = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[4].Cells[1].Value.ToString()));
                receiptPaper.AverageCoupon         = Library.ConvertDecimalToStringForm(decimal.Parse(dataGridView1.Rows[5].Cells[1].Value.ToString()));
                receiptPaper.UpCoupon              = Library.ConvertDecimalToStringForm(upcupon);
                if (getMem.GetType == 1)
                {
                    receiptPaper.NameAverageCoupon = "เฉลี่ยคืนเป็น เงินสด";
                    receiptPaper.RecipientCoupon   = "ผู้รับเงินสด";
                }
                else
                {
                    receiptPaper.NameAverageCoupon = "เฉลี่ยคืนเป็น คูปอง";
                    receiptPaper.RecipientCoupon   = "ผู้รับคูปอง";
                }
                receiptPaper.TotalAmount = Library.ConvertDecimalToStringForm(getMem.GetAmount);

                List <MemberChange2560> dividends = new List <MemberChange2560>();
                dividends.Add(receiptPaper);
                frmMainReport mr = new frmMainReport(this, dividends);
                mr.Show();
            }
        }
        void bildingData(string Code_S, string Code_E)
        {
            //try
            //{
            var      dateRun = DateTime.Now;
            DateTime dateS   = dateTimePicker_S.Value;
            var      aaa     = comboBox_S.Text;

            Cursor.Current = Cursors.WaitCursor;
            int             i     = 0;
            List <LefClass> lssfs = new List <LefClass>();

            using (SSLsEntities db = new SSLsEntities())
            {
                int comBo_S = int.Parse(comboBox_S.SelectedValue.ToString());
                int comBo_E = int.Parse(comboBox_E.SelectedValue.ToString());
                //List<int> fkPro = Library.GetAllProDtlId(Code_S, Code_E);
                //IQueryable<fn_GetResultDate_Result4> getVal;
                if (checkBoxProduct.Checked == true)
                {
                    // เลือกทั้งหมด
                    //fkPro = db.StoreFrontStock.Where(w => w.Enable == true).Select(w => w.FKProduct).Distinct().ToList();
                    Code_S = "0";
                    Code_E = "999999999999999";
                }
                else
                {
                    Code_S = txt_p_S.Text.Trim();
                    Code_E = txt_p_E.Text.Trim();
                    //pid_S = getIdProduct_S(Code_S);
                    //pid_E = getIdProduct_E(Code_E);
                }
                //List<StoreFrontStock> sfs = new List<StoreFrontStock>();
                //sfs = db.StoreFrontStock.Where(w => w.Enable == true && fkPro.Contains(w.FKProduct)).ToList();

                //List<StoreFrontStock> sfs = db.StoreFrontStock.Where(w => w.Enable == true && fkPro.Contains(w.FKProduct) &&
                //(comBo_S <= comBo_E ?  // เงื่อนไขนี้เพื่อ บางครั้ง กลุ่มสินค้า ที่หามา id เริ่มต้นค้นหาน้อยกว่า ทำให้หาไม่เจอ เลยสับกัน
                //((comBo_S == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup >= comBo_S) && (comBo_E == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup <= comBo_E)) :
                //((comBo_E == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup >= comBo_E) && (comBo_S == 0 ? w.Products.FKProductGroup > 0 : w.Products.FKProductGroup <= comBo_S)))).ToList();
                var dateString = dateS.AddDays(1).ToString("yyyyMMdd");
                //var aa = db.fn_GetResultDate(dateString, Code_S, Code_E).ToList();
                var aa          = Library.GetQueryยอดยกมา(dateString, Code_S, Code_E).ToList();
                int countListpg = aa.Count();
                progressBar1.Minimum = 0;
                progressBar1.Maximum = countListpg;
                LefClass c;
                //List<fn_GetResultDate> getValueResult = new List<fn_GetResultDate>();
                var checkFront = db.View_CheckFront_01_11_17.ToList();
                //var getVal = ggr.Select(s => new { s.Id, s.ThaiName, s.qty, s.Cost }).ToList();
                foreach (var item in aa)
                {
                    i++;
                    c = new LefClass();
                    try
                    {
                        //var getFirst = item.Products.ProductDetails.OrderBy(od => od.PackSize).FirstOrDefault();
                        c.WareHouse      = "หน้าร้าน";
                        c.ProductBarCode = item.Code;
                        c.ProductCode    = item.Code;
                        c.ProductName    = item.Thainame;
                        //if (item.Cost == 0)
                        //{
                        //    //c.Price = Singleton.SingletonProduct.Instance().ProductDetails.Where(w => w.FKProduct == item.Id).OrderBy(w => w.PackSize).FirstOrDefault().CostOnly;
                        //    c.Price = item.Cost;
                        //}
                        //else
                        //{
                        //    c.Price = (decimal)item.Cost;
                        //}
                        c.Price      = decimal.Parse(item.Cost);
                        c.CurrentQty = decimal.Parse(item.qty);
                        c.Unit       = item.Unit;

                        //c.Unit = Singleton.SingletonProduct.Instance().ProductDetails.Where(w => w.FKProduct == item.Id).OrderBy(w => w.PackSize).FirstOrDefault().ProductUnit.Name;
                        ////c.CurrentQty = Library.GetResult(item.FKProduct, dateS.AddDays(1));
                        //var getr = getVal.FirstOrDefault(w => w.Id == item.FKProduct);
                        //getVal.Remove(getr);
                        //decimal res = 0;
                        //if (getr == null)
                        //{
                        //    res = 0;
                        //    c.Price = getFirst.CostOnly;
                        //}
                        //else
                        //{
                        //    res = (decimal)getr.qty;
                        //    if (getr.Cost == 0)
                        //    {
                        //        c.Price = getFirst.CostOnly;
                        //    }
                        //    else
                        //    {
                        //        c.Price = getr.Cost;
                        //    }
                        //}
                        //c.CurrentQty = res;
                        //c.Unit = getFirst.ProductUnit.Name;
                        //c.CurrUnit = Library.ConvertDecimalToStringForm(c.CurrentQty) + " " + c.Unit;
                        c.CurrUnit = Library.ConvertDecimalToStringForm(c.CurrentQty) + " " + c.Unit;
                        ////c.Price = Library.GetAverage(item.FKProduct);

                        c.ResidualValue    = c.CurrentQty * c.Price;
                        c.FKProduct        = (int)item.FKProduct;
                        c.SellPricePerUnit = "0";
                        c.SellPriceTotal   = "0";
                        var    checkDoc = checkFront.Where(w => w.FKProduct == item.FKProduct).ToList();
                        string docStr   = "";
                        foreach (var doc in checkDoc)
                        {
                            docStr = doc.DocNo + " (" + doc.Number + ") " + docStr;
                        }
                        c.Description = docStr;
                        lssfs.Add(c);
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("*************** Error ");
                    }
                    progressBar1.Value = i;
                    progressBar1.Refresh();
                    Console.WriteLine("*************** " + item.FKProduct);
                }
            }

            dataGridView1.DataSource = lssfs;
            dataGridView1.Refresh();

            var sumQty           = lssfs.Sum(w => w.CurrentQty);
            var sumPrice         = lssfs.Sum(w => w.Price);
            var sumResidualValue = lssfs.Sum(w => w.ResidualValue);
            var countList        = lssfs.Count();

            var bilding2Report = lssfs.Select(a =>
                                              new
            {
                WareHouse        = "หน้าร้าน",
                ProductCode      = a.ProductBarCode,
                ProductName      = a.ProductName,
                CurrentQty       = a.CurrentQty,
                CurrUnit         = a.CurrUnit,
                Unit             = a.Unit,
                Price            = a.Price,
                ResidualValue    = a.ResidualValue,
                sumQty           = sumQty,
                sumPrice         = sumPrice,
                sumResidualValue = sumResidualValue,
                SellPricePerUit  = 0,
                SellPriceTotal   = 0,
                countList        = countList,
                TimeNow          = Library.ConvertDateToThaiDate(dateS),
                Product_S        = Code_S == "" || Code_S == null ? "ทั้งหมด" : Code_S,
                Product_E        = Code_E == "" || Code_E == null ? "ทั้งหมด" : Code_E,
                ProductGroup_S   = comboBox_S.Text,
                ProductGroup_E   = comboBox_E.Text
            }).ToList();

            MessageBox.Show((DateTime.Now - dateRun).Minutes + " นาที");

            var           dt = Library.ConvertToDataTable(bilding2Report);
            frmMainReport mr = new frmMainReport(this, dt);

            mr.Show();

            lb_msg.Text = "ระบบประมวลผลสำเร็จ";
            this.Refresh();
            Cursor.Current = Cursors.Default;
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "แจ้งเตือนจากระบบ!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    throw;
            //}
        }
        private void SaveCommit()
        {
            try
            {
                CNWarehouse cnw = new CNWarehouse();

                cnw.Enable        = true;
                cnw.Description   = textBoxDesc.Text;
                cnw.CreateDate    = DateTime.Now;
                cnw.CreateBy      = Singleton.SingletonAuthen.Instance().Id;
                cnw.UpdateDate    = DateTime.Now;
                cnw.UpdateBy      = Singleton.SingletonAuthen.Instance().Id;
                cnw.FKWasteReason = _WasteReason;
                decimal qtyPiece = 0;
                List <CNWarehouseDetails> details = new List <CNWarehouseDetails>();
                CNWarehouseDetails        detail;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    var code = dataGridView1.Rows[i].Cells[colCode].Value;
                    if (code == null)
                    {
                        continue;
                    }
                    detail                  = new CNWarehouseDetails();
                    qtyPiece               += decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString()) * decimal.Parse(dataGridView1.Rows[i].Cells[colPZ].Value.ToString());
                    detail.Enable           = true;
                    detail.Description      = dataGridView1.Rows[i].Cells[colDescription].Value.ToString();
                    detail.CreateDate       = DateTime.Now;
                    detail.CreateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.UpdateDate       = DateTime.Now;
                    detail.UpdateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.FKProductDetails = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    detail.Qty              = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    detail.PricePerUnit     = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    detail.BeforeVat        = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString()) * detail.Qty;
                    detail.Vat              = 0;
                    detail.TotalPrice       = detail.BeforeVat + detail.Vat;
                    details.Add(detail);
                    //if (i >= dataGridView1.Rows.Count - 2) break;
                }
                cnw.FKVendor           = _VendorId;
                cnw.DocDate            = DateTime.Now;
                cnw.DocRefer           = textBoxDocRefer.Text;
                cnw.TotalQty           = qtyPiece;
                cnw.TotalQtyUnit       = decimal.Parse(textBoxQtyUnit.Text);
                cnw.TotalUnVat         = decimal.Parse(textBoxTotalUnVat.Text);
                cnw.TotalBeforeVat     = decimal.Parse(textBoxTotalBeforeVat.Text);
                cnw.TotalVat           = decimal.Parse(textBoxTotalVat.Text);
                cnw.TotalBalance       = decimal.Parse(textBoxTotalBalance.Text);
                cnw.CNWarehouseDetails = details;

                using (SSLsEntities db = new SSLsEntities())
                {
                    int        currentYear  = DateTime.Now.Year;
                    int        currentMonth = DateTime.Now.Month;
                    var        getCNCode    = db.CNWarehouse.Where(w => w.CreateDate.Year == currentYear && w.CreateDate.Month == currentMonth).Count() + 1;
                    BudgetYear budget       = Singleton.SingletonThisBudgetYear.Instance().ThisYear;
                    //Branch branch = Singleton.SingletonP
                    var code = MyConstant.PrefixForGenerateCode.GoodsReturnCN + "" + budget.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(getCNCode, 4);
                    cnw.Code = code;
                    db.CNWarehouse.Add(cnw);
                    db.SaveChanges();
                    // ManageStock Wms
                    //Library.MakeValueForUpdateStockWms(details);
                    MessageBox.Show("บันทึกเรียบร้อย " + cnw.Code);

                    frmMainReport mr = new frmMainReport(this, code);
                    mr.Show();

                    ResetForm();
                }
            }
            catch (Exception)
            {
                MessageBox.Show("พบข้อมผิดพลาด");
            }
        }
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                int    count   = db.GetGoodsStoreFront.Where(w => w.CreateDate.Year == DateTime.Now.Year && w.CreateDate.Month == DateTime.Now.Month).Count() + 1;
                string docCode = MyConstant.PrefixForGenerateCode.GetGoodsForUse + Singleton.SingletonThisBudgetYear.Instance().ThisYear.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(count, 4);

                GetGoodsStoreFront gg = new GetGoodsStoreFront();
                List <GetGoodsStoreFrontDetails> details = new List <GetGoodsStoreFrontDetails>();
                GetGoodsStoreFrontDetails        detail;
                gg.Enable       = true;
                gg.Code         = docCode;
                gg.CreateDate   = DateTime.Now;
                gg.CreateBy     = Singleton.SingletonAuthen.Instance().Id;
                gg.UpdateDate   = DateTime.Now;
                gg.UpdateBy     = Singleton.SingletonAuthen.Instance().Id;
                gg.TotalQtyUnit = decimal.Parse(textBoxQtyUnit.Text);
                gg.TotalBalance = decimal.Parse(textBoxTotalBalance.Text);
                gg.Description  = textBoxDesc.Text;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    var code = dataGridView1.Rows[i].Cells[colCode].Value;
                    if (code == null)
                    {
                        continue;
                    }
                    code = code.ToString();

                    detail                  = new GetGoodsStoreFrontDetails();
                    detail.Enable           = true;
                    detail.Description      = dataGridView1.Rows[i].Cells[colLocation].Value.ToString();
                    detail.CreateDate       = DateTime.Now;
                    detail.CreateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.UpdateDate       = DateTime.Now;
                    detail.UpdateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.FKProductDetails = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    var prodDtl = Singleton.SingletonProduct.Instance().ProductDetails.SingleOrDefault(w => w.Id == detail.FKProductDetails);

                    detail.Qty              = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    detail.CostPerUnit      = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    detail.SellPricePerUnit = prodDtl.SellPrice;
                    details.Add(detail);
                    gg.GetGoodsStoreFrontDetails.Add(detail);

                    // check product นี้ว่ามีในหน้าร้านหรือไม่ ถ้าไม่มีแสดงว่า ไม่เคยเบิกเติมหน้าร้าน เดี่ยวจะมีปันหา
                    var getTransactionPos = db.StoreFrontStockDetails.FirstOrDefault(w => w.Enable == true && w.FKProductDetails == detail.FKProductDetails);
                    if (getTransactionPos == null) // ถ้าไม่มีตัวตนในหน้าร้าน แปลว่า ของไม่มีการเบิกเติม แต่มีสินค้ายุ่จริง
                    {
                        MessageBox.Show("" + code + " " + prodDtl.Products.ThaiName + "(" + prodDtl.ProductUnit.Name + ") " + "ไม่มีในระบบ ไม่สามารถเบิกใช้ได้ กรุณาติดต่อ admin");
                        return;
                    }
                }
                db.GetGoodsStoreFront.Add(gg);
                /// add To Transaction
                int j = 1;
                foreach (var item in details)
                {
                    var prodDtl = SingletonProduct.Instance().ProductDetails.SingleOrDefault(w => w.Id == item.FKProductDetails);
                    StoreFrontStockDetails addDtl = new StoreFrontStockDetails();
                    addDtl.DocNo        = gg.Code;
                    addDtl.DocDtlNumber = j;
                    addDtl.Description  = "เบิกหน้าร้าน ใช้เอง";
                    addDtl.CreateDate   = DateTime.Now;
                    addDtl.CreateBy     = SingletonAuthen.Instance().Id;
                    addDtl.UpdateDate   = DateTime.Now;
                    addDtl.UpdateBy     = SingletonAuthen.Instance().Id;
                    addDtl.Enable       = true;
                    addDtl.ActionQty    = prodDtl.PackSize * item.Qty; // จำนวนหน่วย * pz
                    var stockHD = db.StoreFrontStock.FirstOrDefault(w => w.FKProduct == prodDtl.FKProduct && w.Enable == true);
                    addDtl.FKStoreFrontStock = stockHD.Id;
                    addDtl.FKTransactionType = MyConstant.PosTransaction.GGF;
                    addDtl.Barcode           = prodDtl.Code;
                    addDtl.Name             = prodDtl.Products.ThaiName;
                    addDtl.FKProductDetails = prodDtl.Id;
                    addDtl.ResultQty        = 0;

                    addDtl.PackSize          = prodDtl.PackSize;
                    addDtl.DocRefer          = "-";
                    addDtl.DocReferDtlNumber = 0;
                    addDtl.CostOnlyPerUnit   = prodDtl.CostOnly;
                    addDtl.SellPricePerUnit  = prodDtl.SellPrice;
                    db.StoreFrontStockDetails.Add(addDtl);
                    j++;
                }

                db.SaveChanges();
                // open paper
                frmMainReport report = new frmMainReport(this, gg.Code);
                report.Show();
                dataGridView1.Rows.Clear();
                dataGridView1.Refresh();

                dataGridView1.Rows.Add(1);
                count              = db.GetGoodsStoreFront.Where(w => w.CreateDate.Year == DateTime.Now.Year && w.CreateDate.Month == DateTime.Now.Month).Count() + 1;
                docCode            = MyConstant.PrefixForGenerateCode.GetGoodsForUse + Singleton.SingletonThisBudgetYear.Instance().ThisYear.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(count, 4);
                textBoxTOCode.Text = docCode;
                textBoxTODate.Text = Library.ConvertDateToThaiDate(DateTime.Now);
            }
        }
        public void BillingData()
        {
            //try
            //{
            Cursor.Current = Cursors.WaitCursor;
            List <ObjItemList> objs    = new List <ObjItemList>();
            DateTime           dateS   = dateTimePickerStart.Value;
            DateTime           dateE   = dateTimePickerEnd.Value;
            DateTime           dateRun = DateTime.Now;

            using (SSLsEntities db = new SSLsEntities())
            {
                string queryString = @"SELECT        dbo.View_SumSKUCheck_01_11_17.SKU, wms.Products.Code, wms.Products.ThaiName, dbo.View_SumSKUCheck_01_11_17.CheckQtyPiece, 
                         dbo.View_SumSKUCheck_01_11_17.CostValue / dbo.View_SumSKUCheck_01_11_17.CheckQtyPiece AS CostAvg, 
                         dbo.View_SumSKUCheck_01_11_17.SellValue / dbo.View_SumSKUCheck_01_11_17.CheckQtyPiece AS SellAvg
                            FROM            dbo.View_SumSKUCheck_01_11_17 LEFT OUTER JOIN
                         wms.Products ON dbo.View_SumSKUCheck_01_11_17.SKU = wms.Products.Id";
                var    getdata     = db.Database.ExecuteEntities <GetCountStock>(queryString);
                var    checkFront  = db.View_CheckFront_01_11_17.ToList();

                string docS = textBox1.Text;
                string docE = textBox2.Text;

                var         vDon = db.V_DifStockCount02.ToList();
                ObjItemList obj;
                int         countListpg = getdata.Count();
                Console.WriteLine("count = " + countListpg);

                progressBar1.Value   = 0;
                progressBar1.Minimum = 0;
                progressBar1.Maximum = getdata.Count();
                int i          = 1;
                var dateString = dateS.ToString("yyyyMMdd");
                var aa         = Library.GetQueryยอดยกมา(dateString, "0", "999999999999999");
                List <TransactionType> transType = new List <TransactionType>();
                transType = db.TransactionType.Where(w => w.Enable == true).ToList();
                List <int> fktransP = new List <int>();
                fktransP = transType.Where(w => w.IsPlus == true).Select(w => w.Id).ToList <int>();
                List <int> fktransM = new List <int>();
                fktransP = transType.Where(w => w.IsPlus == false).Select(w => w.Id).ToList <int>();
                foreach (var item in getdata)
                {
                    progressBar1.Value = progressBar1.Value + 1;

                    var prodGet = Singleton.SingletonProduct.Instance().Products.SingleOrDefault(w => w.Id == item.SKU);
                    obj = new ObjItemList();
                    var getResultDate = aa.SingleOrDefault(w => w.FKProduct == item.SKU);
                    obj.Number     = i + "";
                    obj.ItemName   = item.ThaiName;
                    obj.SKU        = item.SKU;
                    obj.Code       = item.Code;
                    obj.CheckStock = Library.ConvertDecimalToStringForm(item.CheckQtyPiece);
                    var don = vDon.SingleOrDefault(w => w.FKProduct == item.SKU);
                    obj.TotalStock           = Library.ConvertDecimalToStringForm(decimal.Parse(getResultDate.qty));
                    obj.DiffQty              = Library.ConvertDecimalToStringForm(item.CheckQtyPiece - decimal.Parse(obj.TotalStock));
                    obj.CostPerUnit          = Library.ConvertDecimalToStringForm(item.CostAvg);
                    obj.TotalCost            = Library.ConvertDecimalToStringForm(item.CostAvg * (item.CheckQtyPiece - decimal.Parse(obj.TotalStock)));
                    obj.SellPerUnit          = Library.ConvertDecimalToStringForm(item.SellAvg);
                    obj.TotalSell            = Library.ConvertDecimalToStringForm(decimal.Parse(obj.SellPerUnit) * decimal.Parse(obj.DiffQty));
                    obj.DiffPrice            = Library.ConvertDecimalToStringForm(decimal.Parse(obj.SellPerUnit) - decimal.Parse(obj.CostPerUnit));
                    obj.decimal_TotalCost    = item.CostAvg * decimal.Parse(obj.DiffQty);
                    obj.decimal_TotalSell    = decimal.Parse(obj.TotalSell);
                    obj.decimal_TotalCheck  += decimal.Parse(obj.CheckStock);
                    obj.decimal_TotalResult += decimal.Parse(obj.TotalStock);
                    var    checkDoc = checkFront.Where(w => w.FKProduct == item.SKU).ToList();
                    string docStr   = "";
                    foreach (var doc in checkDoc)
                    {
                        docStr = doc.DocNo + " (" + doc.Number + ") " + docStr;
                    }
                    obj.Description = docStr;
                    objs.Add(obj);
                    i++;

                    // ********** ปรับปรุง ***************************************************
                    //    StoreFrontStockDetails detail = new StoreFrontStockDetails();
                    //    detail.DocNo = "-";
                    //    detail.DocDtlNumber = 0;
                    //    detail.Description = "ปรับปรุงหน้าร้าน28/04/2018";
                    //    detail.CreateDate = DateTime.Parse("2018-04-27 23:58:00");
                    //    detail.CreateBy = "admin";
                    //    detail.UpdateDate = DateTime.Now;
                    //    detail.UpdateBy = "admin";
                    //    detail.Enable = true;
                    //    var fkStore = db.StoreFrontStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == item.SKU);
                    //    if (fkStore == null)
                    //    {
                    //        using (SSLsEntities db1 = new SSLsEntities())
                    //        {

                    //            // add to
                    //            StoreFrontStock storefrontHD = new StoreFrontStock();
                    //            storefrontHD = new StoreFrontStock();
                    //            storefrontHD.Description = "add new";
                    //            storefrontHD.CreateDate = DateTime.Now;
                    //            storefrontHD.CreateBy = Singleton.SingletonAuthen.Instance().Id;
                    //            storefrontHD.UpdateDate = DateTime.Now;
                    //            storefrontHD.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                    //            storefrontHD.Enable = true;
                    //            storefrontHD.CurrentQty = 0;
                    //            storefrontHD.FKProduct = item.SKU;
                    //            db1.StoreFrontStock.Add(storefrontHD);
                    //            db1.SaveChanges();
                    //            fkStore = db.StoreFrontStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == item.SKU);
                    //        }

                    //    }
                    //    if (decimal.Parse(obj.DiffQty) > 0) // ผลต่างเป็น + ต้องทำปรับเข้า =25
                    //    {
                    //        detail.ActionQty = decimal.Parse(obj.DiffQty);
                    //        detail.FKTransactionType = 25;
                    //    }
                    //    else if (decimal.Parse(obj.DiffQty) < 0)// ผลต่างเป็น - ต้องทำจ่ายออก  =24
                    //    {
                    //        detail.ActionQty = decimal.Parse(obj.DiffQty) * -1;
                    //        detail.FKTransactionType = 24;
                    //    }
                    //    else // 0 ไม่ทำไร
                    //    {
                    //        continue;
                    //    }
                    //    detail.FKStoreFrontStock = fkStore.Id;
                    //    detail.Barcode = obj.Code;
                    //    detail.Name = "-";
                    //    detail.FKProductDetails = prodGet.ProductDetails.OrderBy(w => w.PackSize).FirstOrDefault(w => w.Enable == true).Id;
                    //    detail.ResultQty = 0;
                    //    detail.PackSize = prodGet.ProductDetails.OrderBy(w => w.PackSize).FirstOrDefault(w => w.Enable == true).PackSize;
                    //    detail.CostOnlyPerUnit = decimal.Parse(obj.CostPerUnit);
                    //    detail.SellPricePerUnit = decimal.Parse(obj.SellPerUnit);
                    //    db.StoreFrontStockDetails.Add(detail);
                    //    Console.WriteLine("fkProHD " + item.SKU + " " + detail.ActionQty + " type=" + detail.FKTransactionType);
                }
                //db.SaveChanges();
                // ********** ปรับปรุง
            }
            dataGridView1.DataSource = objs;
            dataGridView1.Refresh();
            MessageBox.Show("ใช้เวลาโปรเซส " + Library.ConvertDateToThaiDate(dateRun, true) + " ถึง " + Library.ConvertDateToThaiDate(DateTime.Now, true));
            var Date_S         = Library.ConvertDateToThaiDate(dateS);
            var Date_E         = Library.ConvertDateToThaiDate(dateE);
            var countList      = objs.Where(w => w.Number != null).Count();
            var sumTotalCost   = Library.ConvertDecimalToStringForm(objs.Sum(s => s.decimal_TotalCost));
            var sumTotalSell   = Library.ConvertDecimalToStringForm(objs.Sum(s => s.decimal_TotalSell));
            var sumTotalResult = Library.ConvertDecimalToStringForm(objs.Sum(s => s.decimal_TotalResult));
            var sumTotalCheck  = Library.ConvertDecimalToStringForm(objs.Sum(s => s.decimal_TotalCheck));
            var sumTotalDiff   = Library.ConvertDecimalToStringForm(objs.Sum(s => decimal.Parse(s.DiffQty)));


            var getReport = objs.Select(w => new
            {
                Number         = w.Number,
                ItemName       = w.ItemName,
                Code           = w.Code,
                CheckStock     = w.CheckStock,
                TotalStock     = w.TotalStock,
                DiffQty        = w.DiffQty,
                CostPerUnit    = w.CostPerUnit,
                TotalCost      = w.TotalCost,
                Date_S         = Date_S,
                Date_E         = Date_E,
                Doc_S          = textBox1.Text,
                Doc_E          = textBox2.Text,
                countList      = countList,
                sumTotalCost   = sumTotalCost,
                SellPerUnit    = w.SellPerUnit,
                TotalSell      = w.TotalSell,
                sumTotalSell   = sumTotalSell,
                SumTotalCheck  = sumTotalCheck,
                SumTotalResult = sumTotalResult,
                SumTotalDiff   = sumTotalDiff,
                DiffPrice      = w.DiffPrice
            });

            var           dt = Library.ConvertToDataTable(getReport.ToList());
            frmMainReport mr = new frmMainReport(this, dt);

            mr.Show();

            lb_msg.Text = "ระบบประมวลผลสำเร็จ";
            this.Refresh();

            Cursor.Current = Cursors.Default;
            //}
            //catch (Exception ex)
            //{
            //    Cursor.Current = Cursors.Default;
            //    MessageBox.Show(ex.Message, "แจ้งเตือนจากระบบ!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    throw;
            //}
        }
Example #21
0
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                StoreFrontTransferWaste sft = new StoreFrontTransferWaste();
                sft.Enable      = true;
                sft.Code        = textBoxCode.Text;
                sft.CreateDate  = DateTime.Now;
                sft.CreateBy    = SingletonAuthen.Instance().Id;
                sft.Description = textBoxRemark.Text;
                sft.UpdateDate  = DateTime.Now;
                sft.UpdateBy    = SingletonAuthen.Instance().Id;
                decimal qtyPiece = 0;
                List <StoreFrontTransferWasteDtl> details = new List <StoreFrontTransferWasteDtl>();
                StoreFrontTransferWasteDtl        detail;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    var code = dataGridView1.Rows[i].Cells[colCode].Value;
                    if (code == null)
                    {
                        continue;
                    }
                    detail                  = new StoreFrontTransferWasteDtl();
                    qtyPiece               += decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString()) * decimal.Parse(dataGridView1.Rows[i].Cells[colPZ].Value.ToString());
                    detail.Enable           = true;
                    detail.Description      = dataGridView1.Rows[i].Cells[colDescription].Value.ToString();
                    detail.CreateDate       = DateTime.Now;
                    detail.CreateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.UpdateDate       = DateTime.Now;
                    detail.UpdateBy         = Singleton.SingletonAuthen.Instance().Id;
                    detail.FKProductDetails = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    detail.Qty              = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    detail.CostPerUnit      = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    details.Add(detail);
                    //if (i >= dataGridView1.Rows.Count - 2) break;
                }
                sft.TotalQty     = qtyPiece;
                sft.TotalQtyUnit = details.Sum(w => w.Qty);

                sft.FKWarehouse   = MyConstant.WareHouse.StoreFront;
                sft.FKWasteReason = _WasteReason;
                sft.StoreFrontTransferWasteDtl = details;
                db.StoreFrontTransferWaste.Add(sft);
                db.SaveChanges();

                // + ห้องของเสีย
                // Initisl waste warehouse ก่อน
                List <int>            fkProDtl = details.Select(w => w.FKProductDetails).Distinct().ToList <int>();
                List <int>            fkPro    = Singleton.SingletonProduct.Instance().ProductDetails.Where(w => fkProDtl.Contains(w.Id)).Select(w => w.FKProduct).Distinct().ToList <int>();
                List <WasteWarehouse> wss      = new List <WasteWarehouse>();
                foreach (var item in fkPro)
                {
                    var data = db.WasteWarehouse.FirstOrDefault(w => w.FKProduct == item && w.Enable == true);
                    if (data == null)
                    {
                        WasteWarehouse ws = new WasteWarehouse();
                        ws.FKProduct   = item;
                        ws.FKWarehouse = MyConstant.WareHouse.WasteWarehouse;
                        ws.QtyPiece    = 0;
                        ws.QtyUnit     = 0;
                        ws.Description = "Auto Detect";
                        ws.Enable      = true;
                        ws.CreateDate  = DateTime.Now;
                        ws.CreateBy    = Singleton.SingletonAuthen.Instance().Id;
                        ws.UpdateDate  = DateTime.Now;
                        ws.UpdateBy    = Singleton.SingletonAuthen.Instance().Id;
                        wss.Add(ws);
                    }
                }
                db.WasteWarehouse.AddRange(wss);
                db.SaveChanges();
                /// จัดการ stock
                /// -storefront
                //Library.MakeValueForUpdateStockPos(details); // อันเดิม ยกเลิก
                /// + warehouse
                ///Library.MakeValueForUpdateStockWms(details);
                /// + ห้องของเสีย
                Library.AddWasteWarehouse(details, sft.Code);
                // print ใบ ของเสียหน้าร้าน สู่ ห้องของเสีย
                // Initisl หน้าร้าน ก่อน เผื่อยังไม่มี
                List <StoreFrontStock> stocks = new List <StoreFrontStock>();
                foreach (var item in fkPro)
                {
                    var data = db.StoreFrontStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == item);
                    if (data == null)
                    {
                        stocks.Add(new StoreFrontStock()
                        {
                            CreateDate  = DateTime.Now,
                            CreateBy    = SingletonAuthen.Instance().Id,
                            UpdateDate  = DateTime.Now,
                            UpdateBy    = SingletonAuthen.Instance().Id,
                            Enable      = true,
                            CurrentQty  = 0,
                            FKProduct   = item,
                            Description = "พบของเสียห้านร้าน"
                        });
                    }
                }
                db.StoreFrontStock.AddRange(stocks);
                db.SaveChanges();
                // - หน้าร้าน
                int number = 1;
                foreach (var item in details)
                {
                    var proDtl  = Singleton.SingletonProduct.Instance().ProductDetails.SingleOrDefault(w => w.Id == item.FKProductDetails && w.Enable == true);
                    var stockHD = db.StoreFrontStock.FirstOrDefault(w => w.FKProduct == proDtl.FKProduct && w.Enable == true);
                    StoreFrontStockDetails addDtl = new StoreFrontStockDetails();
                    addDtl.DocNo             = sft.Code;
                    addDtl.DocDtlNumber      = number;
                    addDtl.Description       = "ของเสียหน้าร้าน";
                    addDtl.CreateDate        = DateTime.Now;
                    addDtl.CreateBy          = SingletonAuthen.Instance().Id;
                    addDtl.UpdateDate        = DateTime.Now;
                    addDtl.UpdateBy          = SingletonAuthen.Instance().Id;
                    addDtl.Enable            = true;
                    addDtl.ActionQty         = item.Qty * proDtl.PackSize;
                    addDtl.FKStoreFrontStock = stockHD.Id;
                    addDtl.FKTransactionType = MyConstant.PosTransaction.CNToWarehouse;
                    addDtl.Barcode           = proDtl.Code;
                    addDtl.Name             = proDtl.Products.ThaiName;
                    addDtl.FKProductDetails = item.FKProductDetails;
                    addDtl.ResultQty        = addDtl.ActionQty;
                    var lastAction = db.StoreFrontStockDetails.OrderByDescending(w => w.CreateDate).FirstOrDefault(w => w.FKProductDetails == item.FKProductDetails && w.Enable == true);
                    if (lastAction != null)
                    {
                        addDtl.ResultQty = lastAction.ResultQty - addDtl.ActionQty;
                    }
                    addDtl.PackSize          = proDtl.PackSize;
                    addDtl.DocRefer          = "-";
                    addDtl.DocReferDtlNumber = 0;
                    addDtl.CostOnlyPerUnit   = proDtl.CostOnly;
                    addDtl.SellPricePerUnit  = proDtl.SellPrice;

                    stockHD.CurrentQty      = stockHD.CurrentQty - addDtl.ActionQty;
                    db.Entry(stockHD).State = EntityState.Modified;

                    db.StoreFrontStockDetails.Add(addDtl);
                    db.SaveChanges();
                    number++;
                }

                try
                {
                    /// ใบของเสียหน้าร้าน
                    frmMainReport mr = new frmMainReport(this, sft.Code);
                    mr.Show();
                }
                catch (Exception)
                {
                    MessageBox.Show("จำนวนเอกสารผิดพลาด");
                }

                this.Dispose();
            }
        }
Example #22
0
        public void bbildingDatauilding()
        {
            //try
            //{
            Cursor.Current = Cursors.WaitCursor;
            var    time_S                        = dateTimePicker_S.Value;
            var    time_E                        = dateTimePicker_E.Value;
            string dateStart                     = time_S.ToString("yyyyMMdd");
            List <C_ProductRawInOut> ls          = new List <C_ProductRawInOut>();
            List <C_ProductRawInOut> lsGetResult = new List <C_ProductRawInOut>();

            using (SSLsEntities db = new SSLsEntities())
            {
                //int fkPro = db.ProductDetails.Where(w => w.Code == _Code && w.Enable == true)
                //    .ToList().Select(sl => sl.FKProduct).Distinct().FirstOrDefault();
                List <int> fkPro = new List <int>();
                if (checkBoxProduct.Checked == true)
                {
                    // ถ้าเลือกทั้งหมด
                    fkPro = Library.GetAllProDtlId("", "");
                }
                else
                {
                    fkPro = Library.GetAllProDtlId(txt_p_S.Text.Trim(), txt_p_E.Text.Trim());
                }
                //fkPro.Add(41550);
                //fkPro.Add(41557);
                //string fkProductConcat = string.Join(",", fkPro);
                var getOnView = db.View_GetFrontStockByProductDate.Where(w => DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(time_S) &&
                                                                         DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(time_E)).OrderBy(w => w.CreateDate).ToList();
                var getForProduct = getOnView.Where(w => fkPro.Contains(w.FKProduct)).OrderBy(w => w.FKProduct).ToList();
                //List<C_ProductRawInOut> stackDetails = new List<C_ProductRawInOut>();
                /// อ้างอิง วิว View_GetFrontStockByProductDate สามารถเชคได้
                //                string query = @"SELECT TOP (100) PERCENT pos.StoreFrontStock.FKProduct, pos.StoreFrontStockDetails.CreateDate, CONVERT(varchar, pos.StoreFrontStockDetails.CreateDate, 112) AS DateCreate, pos.StoreFrontStockDetails.Barcode,
                //                         pos.StoreFrontStockDetails.FKProductDetails, pos.StoreFrontStockDetails.ActionQty, pos.StoreFrontStockDetails.PackSize, pos.StoreFrontStockDetails.DocNo, pos.StoreFrontStockDetails.DocDtlNumber,
                //                         pos.StoreFrontStockDetails.DocRefer, pos.StoreFrontStockDetails.DocReferDtlNumber, wms.ProductDetails.Code, wms.ProductUnit.Name AS Unit, pos.TransactionType.IsPlus, pos.TransactionType.Name AS TransName
                //FROM            pos.StoreFrontStockDetails INNER JOIN
                //                         pos.StoreFrontStock ON pos.StoreFrontStockDetails.FKStoreFrontStock = pos.StoreFrontStock.Id INNER JOIN
                //                         wms.ProductDetails ON pos.StoreFrontStockDetails.FKProductDetails = wms.ProductDetails.Id INNER JOIN
                //                         wms.ProductUnit ON wms.ProductDetails.FKUnit = wms.ProductUnit.Id AND wms.ProductDetails.FKUnit = wms.ProductUnit.Id INNER JOIN
                //                         pos.TransactionType ON pos.StoreFrontStockDetails.FKTransactionType = pos.TransactionType.Id AND pos.StoreFrontStockDetails.FKTransactionType = pos.TransactionType.Id
                //WHERE        (pos.StoreFrontStockDetails.Enable = 1) AND (pos.StoreFrontStock.Enable = 1) AND (CONVERT(varchar, pos.StoreFrontStockDetails.CreateDate, 112) BETWEEN '@dateStart' AND '20171201') AND
                //                         (pos.StoreFrontStock.FKProduct IN (41550, 41557))";

                //                SqlConnection sqlConn = new SqlConnection(db.Database.Connection.ConnectionString);
                //                sqlConn.Open();
                //                SqlCommand cmd = new SqlCommand(query, sqlConn);
                //                // pass param
                //                cmd.Parameters.AddWithValue("@dateStart", "dateStart");
                //cmd.Parameters.Add("@DateS", SqlDbType.VarChar);
                //cmd.Parameters["@DateS"].Value = time_S.ToString("yyyyMMdd");

                //cmd.Parameters.Add("@DateE", SqlDbType.VarChar);
                //cmd.Parameters["@DateE"].Value = time_E.ToString("yyyyMMdd");

                //cmd.Parameters.Add("@fkProductConcat", SqlDbType.Int);
                //cmd.Parameters["@fkProductConcat"].Value = fkPro;
                //Console.WriteLine(fkProductConcat);
                //SqlDataAdapter da = new SqlDataAdapter(cmd);
                //DataTable datatable = new DataTable();
                //da.Fill(datatable);
                //sqlConn.Close();
                //List<Map_GetFrontStockByProductDate> models = new List<Map_GetFrontStockByProductDate>();
                //foreach (DataRow row in datatable.Rows)
                //{
                //    var values = row.ItemArray;
                //    var map = new Map_GetFrontStockByProductDate();
                //    //string a = values[10].ToString();
                //    map.FKProduct = int.Parse(values[0].ToString());
                //    map.CreateDate = DateTime.Parse(values[1].ToString());
                //    map.DateCreate = values[2].ToString();
                //    map.Barcode = values[3].ToString();
                //    map.FKProductDetails = int.Parse(values[4].ToString());
                //    map.ActionQty = decimal.Parse(values[5].ToString());
                //    map.PackSize = decimal.Parse(values[6].ToString());
                //    map.DocNo = values[7].ToString();
                //    map.DocDtlNumber = values[8] == null ? 0 : int.Parse(values[8].ToString());
                //    map.DocRefer = values[9].ToString();
                //    map.DocReferDtlNumber = values[10].ToString() == "" ? 0 : int.Parse(values[10].ToString());
                //    map.Code = values[11].ToString();
                //    map.Unit = values[12].ToString();
                //    map.IsPlus = bool.Parse(values[13].ToString());
                //    map.TransName = values[14].ToString();
                //    models.Add(map);
                //}

                int countListpg = getForProduct.Count();
                progressBar1.Minimum = 0;
                progressBar1.Maximum = fkPro.Count();
                int i = 0;
                //var aa = db.fn_GetResultDate(dateStart, "0", "999999999999999").ToList();
                var      aa       = Library.GetQueryยอดยกมา(dateStart, "0", "999999999999999");
                DateTime startPro = DateTime.Now;
                //var sortNew = getForProduct.OrderBy(w => w.DateCreate).ToList();
                foreach (var item in fkPro)
                {
                    i++;
                    List <View_GetFrontStockByProductDate> dataGet = getForProduct.Where(w => w.FKProduct == item).OrderBy(w => w.CreateDate).ToList();
                    if (dataGet.Count == 0)
                    {
                        progressBar1.Value = i;
                        progressBar1.Refresh();
                        Console.WriteLine("******* " + fkPro.Count + " " + item + " " + i + " " + getForProduct.Count());
                        continue;
                    }
                    //decimal resultForProHD = Library.GetResult(item, time_S);
                    decimal resultForProHD = decimal.Parse(aa.FirstOrDefault(w => w.FKProduct == item).qty);
                    lsGetResult.Add(new C_ProductRawInOut() // ยอดยกมา
                    {
                        CreateDate        = "",
                        ActionQty_P       = "",
                        ActionQty_D       = "",
                        BalanceQty        = Library.ConvertDecimalToStringForm(resultForProHD),
                        DocDescription    = "",
                        DocDtlNumber      = "",
                        DocNo             = "ยอดยกมา",
                        DocReferDtlNumber = "",
                        PackSize          = "",
                        ProductName       = "",
                        ProductNo         = "",
                        ProductUnit       = "",
                        ReferDoc          = ""
                    });

                    decimal sumPlus  = 0;
                    decimal sumMinus = 0;

                    foreach (var trans in dataGet) // transactions
                    {
                        decimal plus  = 0;
                        decimal minus = 0;

                        if (trans.IsPlus == true)
                        {
                            plus           = trans.ActionQty;
                            resultForProHD = resultForProHD + plus;
                        }
                        else
                        {
                            minus          = trans.ActionQty;
                            resultForProHD = resultForProHD - minus;
                        }
                        sumPlus  += plus;
                        sumMinus += minus;
                        lsGetResult.Add(new C_ProductRawInOut() // transactions
                        {
                            CreateDate        = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                            ActionQty_P       = Library.ConvertDecimalToStringForm(plus),
                            ActionQty_D       = Library.ConvertDecimalToStringForm(minus),
                            BalanceQty        = Library.ConvertDecimalToStringForm(resultForProHD),
                            DocDescription    = "",
                            DocDtlNumber      = trans.DocDtlNumber + "",
                            DocNo             = trans.DocNo,
                            DocReferDtlNumber = trans.DocReferDtlNumber + "",
                            PackSize          = trans.PackSize + "",
                            ProductNo         = trans.Code,
                            ProductName       = trans.ThaiName,
                            ProductUnit       = trans.Unit,
                            ReferDoc          = trans.DocRefer
                        });
                        getForProduct.Remove(trans);
                    }
                    lsGetResult.Add(new C_ProductRawInOut() // ยอดยกไป
                    {
                        CreateDate        = "",
                        ActionQty_P       = Library.ConvertDecimalToStringForm(sumPlus),
                        ActionQty_D       = Library.ConvertDecimalToStringForm(sumMinus),
                        BalanceQty        = Library.ConvertDecimalToStringForm(resultForProHD),
                        DocDescription    = "",
                        DocDtlNumber      = "",
                        DocNo             = "สรุปรวม",
                        DocReferDtlNumber = "",
                        PackSize          = "",
                        ProductName       = "",
                        ProductNo         = "",
                        ProductUnit       = "",
                        ReferDoc          = ""
                    });

                    progressBar1.Value = i;
                    progressBar1.Refresh();
                    Console.WriteLine("******* " + fkPro.Count + " " + item + " " + i + " " + getForProduct.Count());
                }
                Console.WriteLine(startPro + " " + DateTime.Now);
                //foreach (var item in fkPro)
                //{
                //    i++;
                //    List<StoreFrontStockDetails> details = db.StoreFrontStockDetails
                //    .Where(w => w.StoreFrontStock.FKProduct == item && w.StoreFrontStock.Enable == true && w.Enable == true &&
                //  DbFunctions.TruncateTime(w.CreateDate) >= DbFunctions.TruncateTime(time_S) &&
                //    DbFunctions.TruncateTime(w.CreateDate) <= DbFunctions.TruncateTime(time_E)
                //  ).OrderBy(w => w.CreateDate).ToList();

                //    if (details.Count == 0)
                //    {
                //        progressBar1.Value = i;
                //        progressBar1.Refresh();
                //        continue;
                //    }
                //    decimal resultForProHD = Library.GetResult(item, time_S);
                //    lsGetResult.Add(new C_ProductRawInOut() // ยอดยกมา
                //    {
                //        CreateDate = "",
                //        ActionQty_P = "",
                //        ActionQty_D = "",
                //        BalanceQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //        DocDescription = "",
                //        DocDtlNumber = "",
                //        DocNo = "ยอดยกมา",
                //        DocReferDtlNumber = "",
                //        PackSize = "",
                //        ProductName = "",
                //        ProductNo = "",
                //        ProductUnit = "",
                //        ReferDoc = ""
                //    });

                //    decimal sumPlus = 0;
                //    decimal sumMinus = 0;

                //    foreach (var trans in details) // transactions
                //    {
                //        decimal plus = 0;
                //        decimal minus = 0;

                //        if (trans.TransactionType.IsPlus == true)
                //        {
                //            plus = trans.ActionQty;
                //            resultForProHD = resultForProHD + plus;
                //        }
                //        else
                //        {
                //            minus = trans.ActionQty;
                //            resultForProHD = resultForProHD - minus;
                //        }
                //        sumPlus += plus;
                //        sumMinus += minus;
                //        lsGetResult.Add(new C_ProductRawInOut() // transactions
                //        {
                //            CreateDate = Library.ConvertDateToThaiDate(trans.CreateDate, true),
                //            ActionQty_P = Library.ConvertDecimalToStringForm(plus),
                //            ActionQty_D = Library.ConvertDecimalToStringForm(minus),
                //            BalanceQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //            DocDescription = "",
                //            DocDtlNumber = trans.DocDtlNumber + "",
                //            DocNo = trans.DocNo,
                //            DocReferDtlNumber = trans.DocReferDtlNumber + "",
                //            PackSize = trans.PackSize + "",
                //            ProductNo = trans.ProductDetails.Code,
                //            ProductName = trans.ProductDetails.Products.ThaiName,
                //            ProductUnit = trans.ProductDetails.ProductUnit.Name,
                //            ReferDoc = trans.DocRefer
                //        });

                //    }
                //    lsGetResult.Add(new C_ProductRawInOut() // ยอดยกไป
                //    {
                //        CreateDate = "",
                //        ActionQty_P = Library.ConvertDecimalToStringForm(sumPlus),
                //        ActionQty_D = Library.ConvertDecimalToStringForm(sumMinus),
                //        BalanceQty = Library.ConvertDecimalToStringForm(resultForProHD),
                //        DocDescription = "",
                //        DocDtlNumber = "",
                //        DocNo = "สรุปรวม",
                //        DocReferDtlNumber = "",
                //        PackSize = "",
                //        ProductName = "",
                //        ProductNo = "",
                //        ProductUnit = "",
                //        ReferDoc = ""
                //    });

                //    progressBar1.Value = i;
                //    progressBar1.Refresh();
                //}

                var countList = lsGetResult.Where(w => w.DocNo != "ยอดยกมา" && w.DocNo != "สรุปรวม").Count();

                dataGridView1.DataSource = lsGetResult;
                dataGridView1.Refresh();

                var dt = Library.ConvertToDataTable(lsGetResult.Select(s =>
                                                                       new
                {
                    CreateDate  = s.CreateDate,
                    DocNo       = s.DocNo == "ยอดยกมา" || s.DocNo == "สรุปรวม" ? s.DocNo : s.DocNo + "- " + s.DocDtlNumber,
                    DocName     = s.DocNo == "ยอดยกมา" || s.DocNo == "สรุปรวม" ? "" : s.ProductNo + " " + s.ProductName + " " + s.ProductUnit + " x " + s.PackSize,
                    ActionQty_P = s.ActionQty_P,
                    ActionQty_D = s.ActionQty_D,
                    BalanceQty  = s.BalanceQty,
                    ReferDoc    = s.ReferDoc == "" || s.ReferDoc == null ? "" : s.ReferDoc + "- " + s.DocReferDtlNumber,
                    countList   = countList,
                    Date_S      = Library.ConvertDateToThaiDate(dateTimePicker_S.Value),
                    Date_E      = Library.ConvertDateToThaiDate(dateTimePicker_E.Value),
                    Product_S   = txt_p_S.Text == "" || txt_p_S.Text == null ? "ทั้งหมด" : txt_p_S.Text,
                    Product_E   = txt_p_E.Text == "" || txt_p_E.Text == null ? "ทั้งหมด" : txt_p_E.Text
                }).ToList());
                lb_msg.Text = "ระบบประมวลผลสำเร็จ";
                this.Refresh();
                Cursor.Current = Cursors.Default;
                frmMainReport mr = new frmMainReport(this, dt, false);
                mr.Show();
            }

            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "แจ้งเตือนจากระบบ!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }
Example #23
0
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                int currentYear  = DateTime.Now.Year;
                int currentMonth = DateTime.Now.Month;
                var adjust       = db.AdjustStoreFront.Where(w => w.UpdateDate.Year == currentYear && w.UpdateDate.Month == currentMonth).Count() + 1;

                //Branch branch = Singleton.SingletonP
                string code = MyConstant.PrefixForGenerateCode.AdjustStoreFront + DateTime.Now.ToString("yy") + "" + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(adjust, 4);

                // adjust
                AdjustStoreFront obj = new AdjustStoreFront();
                obj.Code         = code;
                obj.Enable       = true;
                obj.Description  = textBoxDesc.Text;
                obj.CreateDate   = DateTime.Now;
                obj.CreateBy     = Singleton.SingletonAuthen.Instance().Id;
                obj.UpdateDate   = DateTime.Now;
                obj.UpdateBy     = Singleton.SingletonAuthen.Instance().Id;
                obj.TotalBalance = dtl.CostOnly * decimal.Parse(textBoxQtyAd.Text);
                obj.TotalQtyUnit = decimal.Parse(textBoxQtyAd.Text);

                List <AdjustStoreFrontDetail> adDtl = new List <AdjustStoreFrontDetail>();
                adDtl.Add(new AdjustStoreFrontDetail()
                {
                    Enable           = true,
                    Description      = "",
                    CreateDate       = DateTime.Now,
                    CreateBy         = obj.CreateBy,
                    UpdateDate       = DateTime.Now,
                    UpdateBy         = obj.CreateBy,
                    FKProductDetails = dtl.Id,
                    Qty              = decimal.Parse(textBoxQtyAd.Text),
                    CostPerUnit      = dtl.CostOnly,
                    SellPricePerUnit = dtl.SellPrice
                });
                obj.AdjustStoreFrontDetail = adDtl;
                db.AdjustStoreFront.Add(obj);

                // stock
                StoreFrontStockDetails addDtl = new StoreFrontStockDetails();
                addDtl.DocNo        = code;
                addDtl.DocDtlNumber = 1;
                addDtl.Description  = "Adjust หน้าร้าน";
                addDtl.CreateDate   = DateTime.Now;
                addDtl.CreateBy     = SingletonAuthen.Instance().Id;
                addDtl.UpdateDate   = DateTime.Now;
                addDtl.UpdateBy     = SingletonAuthen.Instance().Id;
                addDtl.Enable       = true;
                addDtl.ActionQty    = decimal.Parse(textBoxQtyAd.Text) * dtl.PackSize;
                var stockHD = db.StoreFrontStock.FirstOrDefault(w => w.FKProduct == dtl.FKProduct && w.Enable == true);
                addDtl.FKStoreFrontStock = stockHD.Id;
                addDtl.FKTransactionType = MyConstant.PosTransaction.ADJ;
                addDtl.Barcode           = textBoxCode.Text;
                addDtl.Name             = dtl.Products.ThaiName;
                addDtl.FKProductDetails = dtl.Id;
                addDtl.ResultQty        = addDtl.ActionQty;

                addDtl.PackSize          = dtl.PackSize;
                addDtl.DocRefer          = "-";
                addDtl.DocReferDtlNumber = 0;
                addDtl.CostOnlyPerUnit   = dtl.CostOnly;
                addDtl.SellPricePerUnit  = dtl.SellPrice;

                db.StoreFrontStockDetails.Add(addDtl);
                db.SaveChanges();

                // open paper
                frmMainReport report = new frmMainReport(this, code);
                report.Show();
                dataGridView1.Rows.Clear();
                dataGridView1.Refresh();
                var data = db.AdjustStoreFront.OrderBy(w => w.CreateDate).Where(w => w.Enable == true).ToList();
                foreach (var item in data)
                {
                    dataGridView1.Rows.Add
                    (
                        item.Code,
                        Library.ConvertDateToThaiDate(item.CreateDate),
                        Library.GetFullNameUserById(item.CreateBy),
                        item.TotalQtyUnit,
                        item.TotalBalance,
                        item.Description
                    );
                }
            }
        }