private void SaleOrderWarehouseListForm_Load(object sender, EventArgs e)
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                this._pc = PhysicalAddressPOS.ShowNetworkInterfaces();
                var b = SingletonAuthen.Instance().MyBranch.Id;
                var pcs = db.PosMachine.Where(w => w.Enable == true && w.FKBranch == b).ToList();
                //var checkPC = pcs.FirstOrDefault(w => w.EthernetPhysicalAddress == pc.EthernetAddress || w.WirelessPhysicalAddress == pc.WirelessAddress && w.Enable == true && w.FKBranch == b);
                var checkPC = pcs.FirstOrDefault(w => w.ComputerName == _pc.ComputerName && w.Enable == true && w.FKBranch == b);
                if (checkPC != null)
                {
                    // แสดงว่า เครื่อง เคยบันทึกการตั้งค่าแล้ว
                    _posMachine = checkPC;
                }
                else
                {
                    MessageBox.Show("ไม่พบการตั้งค่าหมายเลขเครื่อง กรุณาติดต่อ Admin");
                }
            }

            DataGridViewCheckBoxColumn ColumnCheckBox = new DataGridViewCheckBoxColumn();
            ColumnCheckBox.Width = width_columcheckbox;
            ColumnCheckBox.DataPropertyName = "Select";
            //dataGridView1.Columns.Add(ColumnCheckBox);
            Rectangle rect = dataGridView1.GetCellDisplayRectangle(colCheckAll, -1, true);
            ckBox.Size = new Size(14, 14);
            rect.X = rect.Location.X + (rect.Width / 2) - (ckBox.Width / 2);
            rect.Y += 3;
            ckBox.Location = rect.Location;
            this.ckBox.CheckedChanged += new EventHandler(this.ckBox_CheckedChanged);
            dataGridView1.Controls.Add(ckBox);
            dataGridView1.Columns[colCheckAll].Frozen = false;

            LoadGrid();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
            toolStripStatusLabel2.Text = "ผู้ใช้งาน : " + SingletonAuthen.Instance().Name + " |";
            //เวลาเข้าใช้งาน: 23.00 น. |
            toolStripStatusLabel1.Text = "เข้าใช้เมื่อ: " + Library.ConvertDateToThaiDate(DateTime.Now, true) + " น. |";
            using (SSLsEntities db = new SSLsEntities())
            {
                //toolStripStatusLabel5.Text = db.Database.Connection.ConnectionString;
                System.Data.SqlClient.SqlConnectionStringBuilder connBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder();

                connBuilder.ConnectionString = db.Database.Connection.ConnectionString;

                string server = connBuilder.DataSource;
                toolStripStatusLabel5.Text = "| SERVER: " + server;//-> this gives you the Server name.
                string database = connBuilder.InitialCatalog;
            }
            System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
            FileVersionInfo            fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
            string version = fvi.FileVersion;

            LibraryUI.AddNewMenuAndDisable(menuStrip1);
            try
            {
                toolStripStatusVersion.Text = "Version Name : " + ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString() + " |";
            }
            catch
            {
            }


            //CheckPromorionstop();

            //int[] values = { 85, 30, 45, 96, 20, 0, 74, 60, 45, 101 };
        }
 private void button4_Click(object sender, EventArgs e)
 {
     try
     {
         DialogResult dialogResult = MessageBox.Show("ยืนยันทำรายการใช่หรือไม่", "Some Title", MessageBoxButtons.YesNo);
         if (dialogResult == DialogResult.Yes)
         {
             using (SSLsEntities db = new SSLsEntities())
             {
                 var data = db.Member.Where(w => w.Id == RowId & w.Enable == true & w.ResignDate != null).FirstOrDefault();
                 if (data != null)
                 {
                     data.UpdateDate = Library.DateTimeServer();
                     data.UpdateBy   = SingletonAuthen.Instance().Id;
                     data.ResignDate = dateTimePicker1.Value;
                     db.SaveChanges();
                 }
             }
             Singleton.SingletonMember.SetInstance();
             MessageBox.Show("Complete", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                PriceSchedule ps           = new PriceSchedule();
                int           currentYear  = DateTime.Now.Year;
                int           currentMonth = DateTime.Now.Month;
                var           pro          = db.PriceSchedule.Where(w => w.CreateDate.Year == currentYear && w.CreateDate.Month == currentMonth).Count() + 1;
                string        proCodeGen   = SingletonThisBudgetYear.Instance().ThisYear.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(pro, 3);

                ps.Code        = proCodeGen;
                ps.Enable      = true;
                ps.Name        = textBoxProName.Text;
                ps.Description = textBoxRemark.Text;
                ps.CreateDate  = DateTime.Now;
                ps.CreateBy    = SingletonAuthen.Instance().Id;
                ps.UpdateDate  = DateTime.Now;
                ps.UpdateBy    = SingletonAuthen.Instance().Id;
                ps.FKCampaign  = MyConstant.CampaignType.FullyAmountAndDiscount;
                // dd/MM/yyyy
                string[] date = dateTimePickerStart.Text.Split('/');
                ps.StartDate = Library.ConvertDateTime(date[0], date[1], date[2]);
                //ps.StartDate = DateTime.Parse(dateTimePickerStart.Text);
                date       = dateTimePickerEnd.Text.Split('/');
                ps.EndDate = Library.ConvertDateTime(date[0], date[1], date[2]);
                //ps.EndDate = DateTime.Parse(dateTimePickerEnd.Text);
                ps.Limited   = 0;
                ps.Notice    = textBoxProNotice.Text;
                ps.FullPrice = decimal.Parse(textBoxProAmount.Text);
                ps.FullQty   = 0;
                ps.Discount  = decimal.Parse(textBoxProDiscount.Text);
                ps.IsStop    = false;
                List <SellingPrice> details = new List <SellingPrice>();
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    details.Add(new SellingPrice()
                    {
                        CreateBy        = SingletonAuthen.Instance().Id,
                        CreateDate      = DateTime.Now,
                        Description     = dataGridView1.Rows[i].Cells[colRemark].Value.ToString(),
                        Enable          = true,
                        FKProduct       = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString()),
                        GetCurrentPrice = decimal.Parse(dataGridView1.Rows[i].Cells[colCurrentPrice].Value.ToString()),
                        Name            = textBoxProName.Text,
                        SpecialPrice    = 0,
                        UpdateDate      = DateTime.Now,
                        UpdateBy        = SingletonAuthen.Instance().Id
                    });
                    if (i >= dataGridView1.Rows.Count - 2)
                    {
                        break;
                    }
                }
                ps.SellingPrice = details;
                db.PriceSchedule.Add(ps);
                db.SaveChanges();
            }
            // reset all
            ResetForm();
        }
        /// <summary>
        /// บันทึกการแก้ไข โดยไล่ Disable ตัวเดิมทิ้งให้หมด แล้ว add ใหม่
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button6_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?", "คำเตือนจากระบบ", MessageBoxButtons.YesNo);

            switch (dr)
            {
            case DialogResult.Yes:
                using (SSLsEntities db = new SSLsEntities())
                {
                    var order = db.SaleOrderWarehouse.SingleOrDefault(w => w.Code == code);
                    foreach (var item in order.SaleOrderWarehouseDtl.Where(w => w.Enable == true).ToList())
                    {
                        item.UpdateDate      = DateTime.Now;
                        item.UpdateBy        = SingletonAuthen.Instance().Id;
                        item.Enable          = false;
                        db.Entry(item).State = EntityState.Modified;
                    }
                    List <SaleOrderWarehouseDtl> details = new List <SaleOrderWarehouseDtl>();
                    SaleOrderWarehouseDtl        detail;
                    decimal discountList = 0;
                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        detail = new SaleOrderWarehouseDtl();
                        detail.FKSaleOrderWarehouse = order.Id;
                        detail.Enable       = true;
                        detail.Description  = dataGridView1.Rows[i].Cells[colRemark].Value.ToString();
                        detail.CreateDate   = DateTime.Now;
                        detail.CreateBy     = SingletonAuthen.Instance().Id;
                        detail.UpdateDate   = DateTime.Now;
                        detail.UpdateBy     = SingletonAuthen.Instance().Id;
                        detail.FKProductDtl = 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[colPricePerUnit].Value.ToString()); // จำนวนหน่วย
                        detail.BathDiscount = decimal.Parse(dataGridView1.Rows[i].Cells[colDiscount].Value.ToString());     // จำนวนเงินส่วนลด
                        detail.TotalPrice   = decimal.Parse(dataGridView1.Rows[i].Cells[colTotalPrice].Value.ToString());   // จำนวนเงิน หลังหักส่วนลด
                        details.Add(detail);
                        discountList += decimal.Parse(dataGridView1.Rows[i].Cells[colDiscount].Value.ToString());
                        if (i >= dataGridView1.Rows.Count - 2)
                        {
                            break;
                        }
                    }
                    db.SaleOrderWarehouseDtl.AddRange(details);
                    order.TotalDiscountInList = discountList;     // วนใน ลิส
                    order.TotalBalance        = decimal.Parse(textBoxTotalBalance.Text);
                    order.UpdateDate          = DateTime.Now;
                    order.UpdateBy            = SingletonAuthen.Instance().Id;
                    db.Entry(order).State     = EntityState.Modified;
                    db.SaveChanges();
                    saleOrderWarehouseListForm.LoadGrid();
                    this.Dispose();
                }
                break;

            case DialogResult.No:
                break;
            }
        }
示例#6
0
        private void PaperCNWasteViewer_Load(object sender, EventArgs e)
        {
            var         thisBranch = SingletonAuthen.Instance().MyBranch;
            BranchValue bv         = new BranchValue();

            bv.BranchName      = thisBranch.Name + " สาขา " + thisBranch.BranchNo;
            bv.BranchAddress   = thisBranch.Address;
            bv.BranchTax       = "เลขประจำตัวผู้เสียภาษี " + thisBranch.TaxNo;
            bv.BranchTelAndFax = "โทรศัพท์ " + thisBranch.Tel + " แฟกซ์ " + thisBranch.Fax;


            WasteDocValue wv = new WasteDocValue();

            wv.DocNo = code;
            List <WasteDocDetails> wds = new List <WasteDocDetails>();

            using (SSLsEntities db = new SSLsEntities())
            {
                var data = db.CNWarehouse.SingleOrDefault(w => w.Code == code);
                wv.DocDate      = Library.ConvertDateToThaiDate(data.DocDate);
                wv.DocReference = data.DocRefer;
                wv.PrintDate    = Library.ConvertDateToThaiDate(DateTime.Now);

                wv.VendorCode    = data.Vendor.Code;
                wv.VendorName    = data.Vendor.Name;
                wv.VendorAddress = data.Vendor.Address;
                int     i         = 1;
                decimal totalCost = 0;
                foreach (var item in data.CNWarehouseDetails.Where(w => w.Enable == true).ToList())
                {
                    wds.Add(new WasteDocDetails()
                    {
                        Number      = i + "",
                        ProductCode = item.ProductDetails.Code,
                        ProductName = item.ProductDetails.Products.ThaiName,
                        ProductUnit = item.ProductDetails.ProductUnit.Name,
                        Qty         = Library.ConvertDecimalToStringForm(item.Qty),
                        CostPerUnit = Library.ConvertDecimalToStringForm(item.PricePerUnit),
                        TotalCost   = Library.ConvertDecimalToStringForm(item.TotalPrice)
                    });
                    i++;
                    totalCost += item.PricePerUnit;
                }
                wv.TotalUnit    = Library.ConvertDecimalToStringForm(data.TotalQtyUnit);
                wv.TotalCost    = Library.ConvertDecimalToStringForm(data.TotalBalance);
                wv.TotalBalance = Library.ConvertDecimalToStringForm(data.TotalBalance);
            }
            BranchValueBindingSource.DataSource     = bv;
            WasteDocValueBindingSource.DataSource   = wv;
            WasteDocDetailsBindingSource.DataSource = wds;
            this.reportViewer1.RefreshReport();
        }
 private void SaveConfirm()
 {
     using (SSLsEntities db = new SSLsEntities())
     {
         string code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
         var    data = db.CNWarehouse.SingleOrDefault(w => w.Enable == true && w.Code == code);
         data.ConfirmCNDate   = DateTime.Now;
         data.ConfirmCNBy     = SingletonAuthen.Instance().Id;
         db.Entry(data).State = EntityState.Modified;
         db.SaveChanges();
         SearchData();
     }
 }
 /// <summary>
 /// ตรวจสอบ Promotion หยุดทำงาน
 /// </summary>
 private void CheckPromorionstop()
 {
     using (SSLsEntities db = new SSLsEntities())
     {
         var      dateQuery  = db.Database.SqlQuery <DateTime>("SELECT getdate()");
         DateTime serverDate = dateQuery.AsEnumerable().First();
         var      dateCheck  = db.PriceScheduleCheck.FirstOrDefault(w => DbFunctions.TruncateTime(w.DateCheck) == DbFunctions.TruncateTime(serverDate));
         if (dateCheck.IsCheck == false)
         {
             // ถ้าวันนี้ ยังไม่เชค ก็เชค
             dateCheck.IsCheck         = true;
             dateCheck.CheckDate       = serverDate;
             dateCheck.CheckBy         = SingletonAuthen.Instance().Id;
             db.Entry(dateCheck).State = EntityState.Modified;
             var priceSchedule = db.PriceSchedule.Where(w => w.Enable == true && w.IsStop == false);
             foreach (var item in priceSchedule)
             {
                 if (serverDate > item.EndDate)
                 {
                     // ถ้าวันนี้ มากกว่า วันสิ้นสุด
                     // โปรโมชั่น ควร Stop ลง
                     item.IsStop          = true;
                     item.StopReason      = "Stop By Code";
                     item.UpdateDate      = DateTime.Now;
                     item.UpdateBy        = SingletonAuthen.Instance().Id;
                     db.Entry(item).State = EntityState.Modified;
                 }
             }
             db.SaveChanges();
         }
         else
         {
             // ถ้าวันนี้ เชคแล้ว ปล่อยผ่าน
         }
         //int days = 1000;
         //for (int i = 0; i < days; i++)
         //{
         //    PriceScheduleCheck f = new PriceScheduleCheck();
         //    f.DateCheck = DateTime.Now.AddDays(i + 1);
         //    f.IsCheck = false;
         //    db.PriceScheduleCheck.Add(f);
         //}
         //db.SaveChanges();
     }
 }
        private void PaperSaleOrderWarehouseViewer_Load(object sender, EventArgs e)
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                var thisBranch = SingletonAuthen.Instance().MyBranch;
                List <SaleOrderWarehouseList> objs = new List <SaleOrderWarehouseList>();
                SaleOrderWarehouseList        obj;
                var data = db.SaleOrderWarehouse.Where(w => codeSelected.Contains(w.Code)).ToList();
                foreach (var item in data)
                {
                    obj            = new SaleOrderWarehouseList();
                    obj.BranchName = thisBranch.Name + " สาขา " + thisBranch.BranchNo;
                    obj.DebtorCode = item.Debtor.Code;

                    obj.MemberCode = item.Member.Code;
                    obj.DocNo      = item.Code;
                    List <SaleOrderWarehouseList.Details> details = new List <SaleOrderWarehouseList.Details>();
                    int i = 1;
                    foreach (var dtl in item.SaleOrderWarehouseDtl.Where(w => w.Enable == true))
                    {
                        details.Add(new SaleOrderWarehouseList.Details()
                        {
                            Number = i + "",
                            Code   = dtl.ProductDetails.Code
                        });
                        i++;
                    }
                    obj.DataDetails = details;
                    objs.Add(obj);
                }
                SaleOrderWarehouseListBindingSource.DataSource = objs;
                this.reportViewer1.RefreshReport();
            }

            //bv.BranchName = thisBranch.Name + " สาขา " + thisBranch.BranchNo;
            //bv.BranchAddress = thisBranch.Address;
            //bv.BranchTax = "เลขประจำตัวผู้เสียภาษี " + thisBranch.TaxNo;
            //bv.BranchTelAndFax = "โทรศัพท์ " + thisBranch.Tel + " แฟกซ์ " + thisBranch.Fax;

            //BranchValueBindingSource.DataSource = branch;
            //this.reportViewer1.RefreshReport();
        }
        /// <summary>
        /// ลบสมาชิก ออกจากระบบ Disable ทั้ง HD Details
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///
        private void button3_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?",
                                              "คำเตือนจากระบบ", MessageBoxButtons.YesNo);

            switch (dr)
            {
            case DialogResult.Yes:
                int index  = dataGridView1.CurrentRow.Index;
                int id     = int.Parse(dataGridView1.Rows[index].Cells[col1Id].Value.ToString());
                var member = Singleton.SingletonMember.Instance().Members.SingleOrDefault(w => w.Id == id);
                Singleton.SingletonMember.Instance().Members.Remove(member);
                using (SSLsEntities db = new SSLsEntities())
                {
                    var data = db.Member.SingleOrDefault(w => w.Id == id);
                    data.UpdateDate      = DateTime.Now;
                    data.UpdateBy        = SingletonAuthen.Instance().Id;
                    data.Enable          = false;
                    db.Entry(data).State = EntityState.Modified;

                    foreach (var item in data.MemberShare.Where(w => w.Enable == true))
                    {
                        item.UpdateDate      = DateTime.Now;
                        item.UpdateBy        = SingletonAuthen.Instance().Id;
                        item.Enable          = false;
                        db.Entry(item).State = EntityState.Modified;
                    }
                    db.SaveChanges();
                }
                reload();
                break;

            case DialogResult.No:
                break;
            }
        }
        /// <summary>
        /// Main Process Store Front Transaction
        /// </summary>
        /// <param name="list">map มา และกรุ๊ปมา ให้เรียบร้อย</param>
        public static void POsTransactionProcess(List <ObjectPOsTransaction> list)
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                decimal actionQty     = 0;
                decimal actionQtyUnit = 0;
                foreach (var item in list)
                {
                    PosStock        headerStock = db.PosStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == item.ProductDetail.FKProduct);
                    TransactionType transaction = SingletonPOsTransaction.Instance().TransactionTypes.SingleOrDefault(w => w.Id == item.FKTransaction);
                    if (transaction.IsPlus)
                    {
                        // แสดงว่า ค่า +
                        actionQtyUnit = item.ActionQty;                               // จำนวนหน่วย
                        actionQty     = item.ActionQty * item.ProductDetail.PackSize; // จำนวน เล็กสุด ชิ้น
                    }
                    else
                    {
                        actionQtyUnit = -item.ActionQty;                               // จำนวนหน่วย
                        actionQty     = -item.ActionQty * item.ProductDetail.PackSize; // จำนวน เล็กสุด ชิ้น
                    }
                    // ถ้าไม่มีใน pos store front
                    if (headerStock == null)
                    {
                        // is add
                        headerStock             = new PosStock();
                        headerStock.Name        = item.ProductDetail.Name;
                        headerStock.Description = "Auto Add";
                        headerStock.CreateDate  = DateTime.Now;
                        headerStock.CreateBy    = SingletonAuthen.Instance().Id;
                        headerStock.UpdateDate  = DateTime.Now;
                        headerStock.UpdateBy    = SingletonAuthen.Instance().Id;
                        headerStock.Enable      = true;
                        headerStock.CurrentQty  = actionQty;
                        headerStock.FKProduct   = item.ProductDetail.FKProduct;

                        // details
                        PosStockDetails details = new PosStockDetails();
                        details.Description       = transaction.Name;
                        details.CreateDate        = DateTime.Now;
                        details.CreateBy          = SingletonAuthen.Instance().Id;
                        details.UpdateBy          = SingletonAuthen.Instance().Id;
                        details.UpdateDate        = DateTime.Now;
                        details.Enable            = true;
                        details.FKTransactionType = item.FKTransaction;
                        details.ActionQty         = actionQty;
                        details.ActionQtyUnit     = actionQtyUnit;
                        details.FKProductDetails  = item.ProductDetail.Id;

                        headerStock.PosStockDetails.Add(details);
                        db.PosStock.Add(headerStock);
                    }
                    else // ถ้ามีแล้วใน store front
                    {
                        // add transaction ก่อน
                        PosStockDetails details = new PosStockDetails();
                        details.Description       = transaction.Name;
                        details.CreateDate        = DateTime.Now;
                        details.CreateBy          = SingletonAuthen.Instance().Id;
                        details.UpdateBy          = SingletonAuthen.Instance().Id;
                        details.UpdateDate        = DateTime.Now;
                        details.Enable            = true;
                        details.FKTransactionType = item.FKTransaction;
                        details.ActionQty         = actionQty;
                        details.ActionQtyUnit     = actionQtyUnit;
                        details.FKProductDetails  = item.ProductDetail.Id;
                        details.FKPosStock        = headerStock.Id;
                        db.PosStockDetails.Add(details);
                        // is Update header
                        headerStock.UpdateDate      = DateTime.Now;
                        headerStock.UpdateBy        = SingletonAuthen.Instance().Id;
                        headerStock.CurrentQty      = headerStock.CurrentQty + actionQty;
                        db.Entry(headerStock).State = EntityState.Modified;
                    }
                }
                db.SaveChanges();
            }
        }
示例#12
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
                    );
                }
            }
        }
示例#13
0
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                List <ProductDetails> list = SingletonProduct.Instance().ProductDetails.Where(w => w.Enable == true).ToList();
                var        getProdDetails  = list.Where(w => w.Enable == true && w.FKProduct == fk2).ToList();
                List <int> disId           = new List <int>();

                // ต้องมี pz 1 ยุ่ในฐาน
                if (dataGridView1.Rows.Count > 0)
                {
                    bool checkPz1 = false;
                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        decimal pz = decimal.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString());
                        if (pz == 1)
                        {
                            checkPz1 = true;
                        }
                    }
                    if (!checkPz1) // not allow
                    {
                        MessageBox.Show("ต้องเหลือ packsize 1 ไว้");
                        return;
                    }
                }

                for (int i = 0; i < dataGridView2.Rows.Count; i++)
                {
                    int     id       = int.Parse(dataGridView2.Rows[i].Cells[0].Value.ToString());
                    string  code     = dataGridView2.Rows[i].Cells[1].Value.ToString();
                    decimal pz       = decimal.Parse(dataGridView2.Rows[i].Cells[2].Value.ToString());
                    decimal costOnly = decimal.Parse(dataGridView2.Rows[i].Cells[4].Value.ToString());
                    // id check new
                    if (getProdDetails.SingleOrDefault(w => w.Id == id) != null)
                    {
                        continue;
                    }
                    else
                    {
                        // add new
                        var            oldProd = list.FirstOrDefault(w => w.Enable == true && w.Id == id);
                        ProductDetails details = new ProductDetails();
                        details.Code            = code;
                        details.Name            = "-";
                        details.Description     = "ย้ายฐานจาก : " + fk1;
                        details.PackSize        = pz;
                        details.CostOnly        = costOnly;
                        details.CostAndVat      = oldProd.CostAndVat;
                        details.CostVat         = oldProd.CostVat;
                        details.IsPrintLabel    = oldProd.IsPrintLabel;
                        details.SellPrice       = oldProd.SellPrice;
                        details.FKProduct       = fk2;
                        details.FKUnit          = oldProd.FKUnit;
                        details.SpecialQtyPiece = oldProd.SpecialQtyPiece;
                        details.SetPallet       = oldProd.SetPallet;
                        details.PalletRow       = oldProd.PalletRow;
                        details.PalletLevel     = oldProd.PalletLevel;
                        details.PalletTotal     = oldProd.PalletTotal;
                        details.CreateDate      = DateTime.Now;
                        details.CreateBy        = SingletonAuthen.Instance().Id;
                        details.UpdateDate      = DateTime.Now;
                        details.UpdateBy        = SingletonAuthen.Instance().Id;
                        details.Enable          = true;
                        db.ProductDetails.Add(details);
                        // disable old
                        var getOld = db.ProductDetails.SingleOrDefault(w => w.Id == id);
                        getOld.Enable          = false;
                        getOld.Description     = "ถูกย้ายไป : " + fk2;
                        db.Entry(getOld).State = EntityState.Modified;
                    }
                }

                // check การย้ายฐาน
                if (dataGridView1.Rows.Count == 0)
                {
                    // แปลว่ามีการย้ายทั้งฐาน ต้อง เพิ่ม transactions
                    decimal getResultProduct1 = decimal.Parse(qtyLb1.Text);
                    if (getResultProduct1 < 0)
                    {
                        // add transactions
                        getResultProduct1 = Math.Abs(getResultProduct1);
                    }
                    else if (getResultProduct1 > 0) // พบสินค้าหน้าร้าน ห้ามย้ายฐานทั้งหมด
                    {
                        MessageBox.Show("ไม่สามารถย้ายฐานทั้งหมดได้ ยังมีสินค้าค้างอยู่หน้าร้าน");
                        return;
                    }
                }
                else
                {
                }
                //db.SaveChanges();
            }
            this.Dispose();
        }
        private void SaveCommit()
        {
            SSLsEntities db = new SSLsEntities();

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

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

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

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

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

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

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

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

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

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

                frmMainReport mr = new frmMainReport(this, textBoxRcvNo.Text);
                mr.Show();
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ถูกต้อง พบข้อผิดพลาด กรุณาติดต่อ admin");
            }
            finally
            {
                db.Dispose();
            }
        }
        /// <summary>
        /// ยืนยัน จะตัด stock หน้าร้าน
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            var stackCode = GetAllCodeForAction();

            using (SSLsEntities db = new SSLsEntities())
            {
                foreach (var item in stackCode)
                {
                    var data = db.StoreFrontTransferOut.SingleOrDefault(w => w.Code == item);
                    if (data.Enable == false)
                    {
                        MessageBox.Show(item + " ถูกยกเลิกไปแล้ว");
                        return;
                    }
                    else if (data.ConfirmDate != null)
                    {
                        MessageBox.Show(item + " ยืนยันไปแล้ว");
                        return;
                    }
                }
                DialogResult dr = MessageBox.Show("ยืนยันทำรายการ ?",
                                                  "คำเตือนจากระบบ", MessageBoxButtons.YesNo);
                switch (dr)
                {
                case DialogResult.Yes:
                    foreach (var item in stackCode)
                    {
                        var data = db.StoreFrontTransferOut.SingleOrDefault(w => w.Code == item);
                        data.ConfirmDate     = DateTime.Now;
                        data.ConfirmBy       = Singleton.SingletonAuthen.Instance().Id;
                        db.Entry(data).State = EntityState.Modified;
                    }
                    db.SaveChanges();
                    // ตัดสต๊อก
                    // Initisl หน้าร้าน ก่อน เผื่อยังไม่มี
                    List <StoreFrontStock> stocks = new List <StoreFrontStock>();
                    foreach (var item in stackCode)
                    {
                        var        data  = db.StoreFrontTransferOut.SingleOrDefault(w => w.Code == item);
                        List <int> fkPro = data.StoreFrontTransferOutDtl.Select(w => w.ProductDetails.FKProduct).ToList().Distinct().ToList <int>();
                        foreach (var fk in fkPro)
                        {
                            var stock = db.StoreFrontStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == fk);
                            if (stock == null)
                            {
                                stocks.Add(new StoreFrontStock()
                                {
                                    CreateDate  = DateTime.Now,
                                    CreateBy    = SingletonAuthen.Instance().Id,
                                    UpdateDate  = DateTime.Now,
                                    UpdateBy    = SingletonAuthen.Instance().Id,
                                    Enable      = true,
                                    CurrentQty  = 0,
                                    FKProduct   = fk,
                                    Description = "พบการโอนสาขา"
                                });
                            }
                        }
                        db.StoreFrontStock.AddRange(stocks);
                        db.SaveChanges();
                    }

                    // - หน้าร้าน
                    //List<StoreFrontStockDetails> addDtl = new List<StoreFrontStockDetails>();

                    foreach (var item in stackCode)
                    {
                        var data   = db.StoreFrontTransferOut.SingleOrDefault(w => w.Code == item);
                        int number = 1;
                        foreach (var getDtl in data.StoreFrontTransferOutDtl.Where(w => w.Enable == true).ToList())
                        {
                            var proDtl  = Singleton.SingletonProduct.Instance().ProductDetails.SingleOrDefault(w => w.Id == getDtl.FKProductDetails && w.Enable == true);
                            var stockHD = db.StoreFrontStock.FirstOrDefault(w => w.FKProduct == proDtl.FKProduct && w.Enable == true);
                            StoreFrontStockDetails addDtl = new StoreFrontStockDetails();
                            addDtl.DocNo             = data.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         = getDtl.Qty * proDtl.PackSize;
                            addDtl.FKStoreFrontStock = stockHD.Id;
                            addDtl.FKTransactionType = MyConstant.PosTransaction.TransferStoreFrontToBranch;
                            addDtl.Barcode           = proDtl.Code;
                            addDtl.Name             = proDtl.Products.ThaiName;
                            addDtl.FKProductDetails = getDtl.FKProductDetails;
                            addDtl.ResultQty        = addDtl.ActionQty;
                            var lastAction = db.StoreFrontStockDetails.OrderByDescending(w => w.CreateDate).FirstOrDefault(w => w.FKProductDetails == getDtl.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++;
                        }
                    }

                    ReloadGrid();
                    break;

                case DialogResult.No:
                    break;
                }
            }

            //string code = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString();
            //using (SSLsEntities db = new SSLsEntities())
            //{
            //    var data = db.StoreFrontTransferOut.SingleOrDefault(w => w.Code == code);
            //    if (data.Enable == true && data.ConfirmDate == null)
            //    {
            //        DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?", "คำเตือนจากระบบ", MessageBoxButtons.YesNo);
            //        switch (dr)
            //        {
            //            case DialogResult.Yes:
            //                /// ยืนยัน
            //                data.ConfirmDate = DateTime.Now;
            //                data.ConfirmBy = Singleton.SingletonAuthen.Instance().Id;
            //                data.UpdateDate = DateTime.Now;
            //                data.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
            //                db.Entry(data).State = EntityState.Modified;
            //                db.SaveChanges();
            //                /// Update Stock Version เก่า
            //                //Library.MakeValueForUpdateStockPos(data.StoreFrontTransferOutDtl.Where(w => w.Enable == true).ToList());

            //                ///// StoreFrontStock
            //                foreach (var item in data.StoreFrontTransferOutDtl.Where(w => w.Enable == true).ToList())
            //                {
            //                    // add to StoreFrontStockDetails
            //                    var prodtl = Singleton.SingletonProduct.Instance().ProductDetails
            //                        .SingleOrDefault(w => w.Enable == true && w.Id == item.FKProductDetails);
            //                    // check in header
            //                    var storeFrontStock = db.StoreFrontStock.FirstOrDefault(w => w.Enable == true && w.FKProduct == prodtl.FKProduct);

            //                }
            //                ReloadGrid();
            //                break;
            //            case DialogResult.No:
            //                break;
            //        }
            //    }
            //    else
            //    {
            //        MessageBox.Show("ไม่สามารถยกเลิกได้");
            //    }
            //}
        }
        /// <summary>
        /// 1. check invoice no
        /// 2. check invoice date****
        /// 3. check vendor****
        /// 4. ต้องเลือก อย่างน้อย 1 PO เพื่อ save
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            string invoice = textBoxInvoiceNo.Text.Trim();

            if (invoice == "")
            {
                MessageBox.Show("กรุณากรอก ใบกำกับภาษี/ใบส่ง");
                return;
            }
            try
            {
                DateTime?invoiceDate = Library.ConvertTHToENDate(textBoxInvoiceDate.Text);
                if (invoiceDate == null)
                {
                    MessageBox.Show("วันที่ Invoice ไม่ถูกต้อง (Need Date English United Kingdom)");
                    return;
                }
                else
                {
                }
                Console.WriteLine(invoiceDate);
            }
            catch (Exception)
            {
                Console.WriteLine("Error");
                return;
            }
            //if (_VendorId == 0)
            //{
            //    MessageBox.Show("กรุณาเลือก ผู้จำหน่าย");
            //    return;
            //}

            if (listBoxPolist.Items.Count == 0)
            {
                MessageBox.Show("กรุณาเลือก อย่างน้อย 1 PO");
                return;
            }
            string poInList = listBoxPolist.Items[0].ToString();

            DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?",
                                              "คำเตือนจากระบบ", MessageBoxButtons.YesNo);

            switch (dr)
            {
            case DialogResult.Yes:
                string rcvNo = textBoxRcvNo.Text;

                #region กรณีแก้ไข
                if (rcvNo != "")
                {
                    using (SSLsEntities db = new SSLsEntities())
                    {
                        var rcv = db.PORcv.SingleOrDefault(w => w.Enable == true && w.Code == rcvNo);
                        rcv.InvoiceNo   = textBoxInvoiceNo.Text;
                        rcv.InvoiceDate = (DateTime)Library.ConvertTHToENDate(textBoxInvoiceDate.Text);
                        rcv.FKVendor    = _VendorId;
                        string[] listPO = listBoxPolist.Items.OfType <string>().ToArray();
                        rcv.PORefer     = string.Join(",", listPO);
                        rcv.Description = textBoxDesc.Text;

                        rcv.UpdateDate   = DateTime.Now;
                        rcv.UpdateBy     = SingletonAuthen.Instance().Id;
                        rcv.DiscountKey  = textBoxDis.Text;
                        rcv.DiscountBath = decimal.Parse(textBoxDis.Text);
                        rcv.TotalBUnVat  = decimal.Parse(textBoxUnVat.Text);
                        rcv.TotalBHasVat = decimal.Parse(textBoxHasVat.Text);
                        rcv.TotalVat     = decimal.Parse(textBoxVat.Text);
                        // details
                        List <PORcvDetails> details = new List <PORcvDetails>();
                        PORcvDetails        detail;
                        for (int row = 0; row < dataGridView1.Rows.Count; row++)
                        {
                            int     idpo        = int.Parse(dataGridView1.Rows[row].Cells[colIdPo].Value.ToString());
                            int     idProd      = int.Parse(dataGridView1.Rows[row].Cells[colIdProd].Value.ToString());
                            int     number      = int.Parse(dataGridView1.Rows[row].Cells[colNumber].Value.ToString());
                            string  barcode     = dataGridView1.Rows[row].Cells[colCode].Value.ToString();
                            decimal rcvComplete = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvComplete].Value.ToString());
                            string  name        = dataGridView1.Rows[row].Cells[colName].Value.ToString();
                            decimal pz          = decimal.Parse(dataGridView1.Rows[row].Cells[colPz].Value.ToString());
                            string  unit        = dataGridView1.Rows[row].Cells[colUnit].Value.ToString();
                            decimal qty         = decimal.Parse(dataGridView1.Rows[row].Cells[colQty].Value.ToString());
                            decimal gift        = decimal.Parse(dataGridView1.Rows[row].Cells[colGift].Value.ToString());
                            decimal rcvQty      = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvQty].Value.ToString());
                            decimal rcvGift     = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvGift].Value.ToString());
                            decimal price       = decimal.Parse(dataGridView1.Rows[row].Cells[colPrice].Value.ToString());
                            decimal total       = decimal.Parse(dataGridView1.Rows[row].Cells[colTotal].Value.ToString());
                            int     poDtlId     = int.Parse(dataGridView1.Rows[row].Cells[colPODtlId].Value.ToString());
                            // ถ้ามีแล้ว ก็อัพเดท
                            var getDtlRcv = db.PORcvDetails.SingleOrDefault(w => w.Enable == true && w.FKPoDetails == poDtlId);
                            if (getDtlRcv != null)
                            {
                                getDtlRcv.FKProductDtl   = idProd;
                                getDtlRcv.SequenceNumber = number;
                                getDtlRcv.RcvQuantity    = rcvQty;
                                getDtlRcv.GiftQty        = rcvGift;
                                getDtlRcv.NewCost        = price;
                                getDtlRcv.CurrentCost    = price;
                                getDtlRcv.TotalPrice     = total;
                                if ((rcvGift + rcvQty + rcvComplete) == qty + gift)
                                {
                                    getDtlRcv.IsComplete = true;
                                }
                                else
                                {
                                    getDtlRcv.IsComplete = false;
                                }
                                getDtlRcv.RcvComplete     = rcvGift + rcvQty + rcvComplete;
                                db.Entry(getDtlRcv).State = EntityState.Modified;
                            }
                            else     // ถ้าไมีมี
                            {
                                detail                = new PORcvDetails();
                                detail.FKPORcv        = rcv.Id;
                                detail.CreateDate     = DateTime.Now;
                                detail.CreateBy       = Singleton.SingletonAuthen.Instance().Id;
                                detail.UpdateDate     = DateTime.Now;
                                detail.UpdateBy       = Singleton.SingletonAuthen.Instance().Id;
                                detail.Description    = "-";
                                detail.Enable         = true;
                                detail.FKProductDtl   = idProd;
                                detail.SequenceNumber = number;
                                detail.QtyOnPO        = qty;
                                detail.RcvQuantity    = rcvQty;
                                detail.CurrentCost    = price;
                                detail.NewCost        = price;
                                detail.DiscountKey    = 0 + "";
                                detail.DiscountBath   = 0;
                                detail.TotalPrice     = total;
                                detail.GiftOnPo       = gift;
                                detail.GiftQty        = rcvGift; // รับเข้าของแถม
                                detail.FKPoDetails    = poDtlId;
                                if ((rcvGift + rcvQty + rcvComplete) == qty + gift)
                                {
                                    detail.IsComplete = true;
                                }
                                else
                                {
                                    detail.IsComplete = false;
                                }
                                detail.RcvComplete = detail.RcvComplete + rcvGift + rcvQty;
                                detail.FKPOHeader  = idpo;
                                //if (rcvGift + rcvQty > 0)
                                //{
                                //    details.Add(detail);
                                //}
                                db.PORcvDetails.Add(detail);
                            }
                        }
                        db.SaveChanges();
                    }
                    return;
                }
                #endregion
                ///////////////////////////////////////////////////////////////////////////////////////////////////
                #region กรณีเพิ่ม
                using (SSLsEntities db = new SSLsEntities())
                {
                    int    currentYear  = DateTime.Now.Year;
                    int    currentMonth = DateTime.Now.Month;
                    var    running      = db.PORcv.Where(w => w.CreateDate.Year == currentYear && w.CreateDate.Month == currentMonth).Count() + 1;
                    string code         = SingletonThisBudgetYear.Instance().ThisYear.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(running, 4);

                    //string poInList = listBoxPolist.Items[0].ToString();
                    var   getPo = db.POHeader.SingleOrDefault(w => w.Enable == true && w.PONo == poInList);
                    PORcv rcv   = new PORcv();
                    rcv.FKPOHeader   = getPo.Id;
                    rcv.Code         = MyConstant.PrefixForGenerateCode.RCVPOS + code;
                    rcv.Description  = textBoxDesc.Text;
                    rcv.Enable       = true;
                    rcv.CreateDate   = DateTime.Now;
                    rcv.CreateBy     = SingletonAuthen.Instance().Id;
                    rcv.UpdateDate   = DateTime.Now;
                    rcv.UpdateBy     = SingletonAuthen.Instance().Id;
                    rcv.DiscountKey  = textBoxDis.Text;
                    rcv.DiscountBath = decimal.Parse(textBoxDis.Text);
                    rcv.TotalBUnVat  = decimal.Parse(textBoxUnVat.Text);
                    rcv.TotalBHasVat = decimal.Parse(textBoxHasVat.Text);
                    rcv.TotalVat     = decimal.Parse(textBoxVat.Text);
                    rcv.TotalGift    = 0;
                    rcv.InvoiceNo    = textBoxInvoiceNo.Text;
                    rcv.InvoiceDate  = (DateTime)Library.ConvertTHToENDate(textBoxInvoiceDate.Text);
                    string[] listPO = listBoxPolist.Items.OfType <string>().ToArray();
                    rcv.PORefer     = string.Join(",", listPO);
                    rcv.FKTransport = MyConstant.Transport.NotChoose;
                    rcv.PrintNumber = 0;
                    rcv.FKVendor    = _VendorId;
                    if (_VendorId == 0)
                    {
                        rcv.FKVendor = null;
                    }

                    // details
                    List <PORcvDetails> details = new List <PORcvDetails>();
                    PORcvDetails        detail;
                    for (int row = 0; row < dataGridView1.Rows.Count; row++)
                    {
                        detail = new PORcvDetails();
                        int     idpo        = int.Parse(dataGridView1.Rows[row].Cells[colIdPo].Value.ToString());
                        int     idProd      = int.Parse(dataGridView1.Rows[row].Cells[colIdProd].Value.ToString());
                        int     number      = int.Parse(dataGridView1.Rows[row].Cells[colNumber].Value.ToString());
                        string  barcode     = dataGridView1.Rows[row].Cells[colCode].Value.ToString();
                        decimal rcvComplete = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvComplete].Value.ToString());
                        string  name        = dataGridView1.Rows[row].Cells[colName].Value.ToString();
                        decimal pz          = decimal.Parse(dataGridView1.Rows[row].Cells[colPz].Value.ToString());
                        string  unit        = dataGridView1.Rows[row].Cells[colUnit].Value.ToString();
                        decimal qty         = decimal.Parse(dataGridView1.Rows[row].Cells[colQty].Value.ToString());
                        decimal gift        = decimal.Parse(dataGridView1.Rows[row].Cells[colGift].Value.ToString());
                        decimal rcvQty      = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvQty].Value.ToString());
                        decimal rcvGift     = decimal.Parse(dataGridView1.Rows[row].Cells[colRcvGift].Value.ToString());
                        decimal price       = decimal.Parse(dataGridView1.Rows[row].Cells[colPrice].Value.ToString());
                        decimal total       = decimal.Parse(dataGridView1.Rows[row].Cells[colTotal].Value.ToString());
                        int     poDtlId     = int.Parse(dataGridView1.Rows[row].Cells[colPODtlId].Value.ToString());

                        detail.CreateDate     = DateTime.Now;
                        detail.CreateBy       = SingletonAuthen.Instance().Id;
                        detail.UpdateDate     = DateTime.Now;
                        detail.UpdateBy       = SingletonAuthen.Instance().Id;
                        detail.Description    = "-";
                        detail.Enable         = true;
                        detail.FKProductDtl   = idProd;
                        detail.SequenceNumber = number;
                        detail.QtyOnPO        = qty;
                        detail.RcvQuantity    = rcvQty;
                        detail.CurrentCost    = price;
                        detail.NewCost        = price;
                        detail.DiscountKey    = 0 + "";
                        detail.DiscountBath   = 0;
                        detail.TotalPrice     = total;
                        detail.GiftOnPo       = gift;
                        detail.GiftQty        = rcvGift; // รับเข้าของแถม
                        detail.FKPoDetails    = poDtlId;
                        if ((rcvGift + rcvQty + rcvComplete) == qty)
                        {
                            detail.IsComplete = true;
                        }
                        else
                        {
                            detail.IsComplete = false;
                        }
                        detail.RcvComplete = rcvGift + rcvQty;
                        detail.FKPOHeader  = idpo;
                        details.Add(detail);
                        //if (rcvGift + rcvQty > 0)
                        //{
                        //    details.Add(detail);
                        //}
                    }
                    rcv.PORcvDetails = details;
                    db.PORcv.Add(rcv);
                    db.SaveChanges();
                    MessageBox.Show("บันทึก " + rcv.Code + "เรียบร้อย");
                }
                #endregion

                break;

            case DialogResult.No:
                break;
            }
        }
        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);
            }
        }
        private void SaveCommit()
        {
            var thisBudget = SingletonThisBudgetYear.Instance().ThisYear;

            using (SSLsEntities db = new SSLsEntities())
            {
                int    currentYear  = DateTime.Now.Year;
                int    currentMonth = DateTime.Now.Month;
                var    pro          = db.PriceSchedule.Where(w => w.CreateDate.Year == currentYear && w.CreateDate.Month == currentMonth).Count() + 1;
                string code         = thisBudget.CodeYear + DateTime.Now.ToString("MM") + Library.GenerateCodeFormCount(pro, 3);

                PriceSchedule header = new PriceSchedule();
                header.Code        = code;
                header.Enable      = true;
                header.Name        = textBoxProName.Text;
                header.Description = textBoxRemark.Text;
                header.CreateDate  = DateTime.Now;
                header.CreateBy    = SingletonAuthen.Instance().Id;
                header.UpdateBy    = SingletonAuthen.Instance().Id;
                header.UpdateDate  = DateTime.Now;
                header.FKCampaign  = MyConstant.CampaignType.FullyQtyAndGift;
                header.StartDate   = dateTimePickerStart.Value;
                header.EndDate     = dateTimePickerEnd.Value;
                header.Limited     = 0;
                header.Notice      = textBoxProNotice.Text;
                header.FullPrice   = 0;
                header.FullQty     = 0;
                header.Discount    = 0;
                header.IsStop      = false;
                header.StopReason  = null;

                /// ต้อง Row เท่ากัน
                if (dataGridView1.Rows.Count == dataGridView2.Rows.Count)
                {
                    SellingPrice        selling;
                    SellingPriceDetails details;
                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    {
                        selling                 = new SellingPrice();
                        selling.CreateDate      = DateTime.Now;
                        selling.CreateBy        = SingletonAuthen.Instance().Id;
                        selling.Enable          = true;
                        selling.Name            = header.Name;
                        selling.Description     = null;
                        selling.UpdateDate      = DateTime.Now;
                        selling.UpdateBy        = SingletonAuthen.Instance().Id;
                        selling.FKProduct       = int.Parse(dataGridView1.Rows[i].Cells[col1Id].Value.ToString());
                        selling.GetCurrentPrice = decimal.Parse(dataGridView1.Rows[i].Cells[col1Price].Value.ToString());
                        selling.SpecialPrice    = 0;
                        selling.FullyQty        = decimal.Parse(dataGridView1.Rows[i].Cells[col1Qty].Value.ToString());

                        /// ส่วนของแถม
                        details                 = new SellingPriceDetails();
                        details.Enable          = true;
                        details.Name            = header.Name;
                        details.CreateDate      = DateTime.Now;
                        details.CreateBy        = SingletonAuthen.Instance().Id;
                        details.UpdateDate      = DateTime.Now;
                        details.UpdateBy        = SingletonAuthen.Instance().Id;
                        details.FKProduct       = int.Parse(dataGridView2.Rows[i].Cells[col2Id].Value.ToString());
                        details.GiftQty         = decimal.Parse(dataGridView2.Rows[i].Cells[col2Qty].Value.ToString());
                        details.GetCurrentPrice = decimal.Parse(dataGridView2.Rows[i].Cells[col2Price].Value.ToString());
                        details.SpecialPrice    = 0;

                        selling.SellingPriceDetails.Add(details);
                        header.SellingPrice.Add(selling);
                        if (i >= dataGridView1.Rows.Count - 2)
                        {
                            break;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("พบข้อผิดพลาดกรุณาตรวจสอบดูอีกครั้ง");
                }
                db.PriceSchedule.Add(header);
                db.SaveChanges();
                // reset all
                ResetForm();
            }
        }
        /// <summary>
        /// แก้ไข PO ที่ยังไม่ approve เราจะ Disable  details ทอ้งทั้งหมด และ add new details ใหม่
        /// </summary>
        private void SaveCommit()
        {
            using (SSLsEntities db = new SSLsEntities())
            {
                var hd = db.POHeader.SingleOrDefault(w => w.Id == _id);
                hd.UpdateDate = DateTime.Now;
                hd.UpdateBy = SingletonAuthen.Instance().Id;
                if (discountPercent)
                {
                    hd.DiscountBath = Library.ConvertDecimalToStringForm(Library.CalPercentByValue(hd.TotalHasVat + hd.TotalUnVat, decimal.Parse(textBoxDiscountInvoice.Text))); // แปลงจากคีย์ % เป็น บาท
                    hd.DiscountPercent = textBoxDiscountInvoice.Text + " %";
                }
                else
                {
                    hd.DiscountBath = textBoxDiscountInvoice.Text.Replace("บ", "");
                    //hd.DiscountPercent = hd.TotalDiscount + ""; // แปลงเงินบาทเป็น % 
                    hd.DiscountPercent = Library.GetPercentFromDiscountBath(decimal.Parse(hd.DiscountBath), hd.TotalHasVat + hd.TotalUnVat) + " %";
                }
                hd.DiscountInput = textBoxDiscountInvoice.Text;
                hd.TotalPrice = decimal.Parse(textBoxTotal.Text);
                hd.TotalHasVat = decimal.Parse(textBoxTotalHasVat.Text);
                hd.TotalUnVat = decimal.Parse(textBoxTotalUnVat.Text);
                hd.TotalDiscount = decimal.Parse(textBoxTotalDiscountInvoice.Text);
                hd.TotalPriceDiscount = decimal.Parse(textBoxTotalAfterDis.Text);
                hd.TotalVat = decimal.Parse(textBoxTotalVat.Text);
                hd.TotalBalance = decimal.Parse(textBoxTotalBalance.Text);
                /// disable old
                foreach (var item in hd.PODetail)
                {
                    if (item.Enable == true)
                    {
                        item.Enable = false;
                        item.UpdateDate = DateTime.Now;
                        item.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                        db.Entry(item).State = EntityState.Modified;
                    }
                }
                /// add new
                //List<PODetail> details = new List<PODetail>();
                PODetail detail;
                decimal costOnly = 0;
                decimal costAndVat = 0;
                decimal totalCost = 0;
                decimal totalQty = 0;
                decimal totalGift = 0;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    detail = new PODetail();
                    costOnly = decimal.Parse(dataGridView1.Rows[i].Cells[colCostPerUnit].Value.ToString());
                    costAndVat = decimal.Parse(dataGridView1.Rows[i].Cells[colCostVatPerUnit].Value.ToString());
                    if (_poCostType == MyConstant.POCostType.CostOnly)
                    {
                        totalCost = costOnly * decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    }
                    else
                    {
                        totalCost = costAndVat * decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    }

                    detail.Qty = decimal.Parse(dataGridView1.Rows[i].Cells[colQty].Value.ToString());
                    totalQty += detail.Qty;

                    detail.GiftQty = decimal.Parse(dataGridView1.Rows[i].Cells[colGift].Value.ToString());
                    totalGift += detail.GiftQty;

                    detail.CostOnly = costOnly;
                    detail.CostAndVat = costAndVat;
                    detail.DiscountInput = dataGridView1.Rows[i].Cells[colDiscount].Value.ToString();
                    detail.DiscountBath = decimal.Parse(dataGridView1.Rows[i].Cells[colDiscountBath].Value.ToString());
                    detail.TotalCost = totalCost - decimal.Parse(dataGridView1.Rows[i].Cells[colDiscountBath].Value.ToString());
                    detail.CreateDate = DateTime.Now;
                    detail.CreateBy = SingletonAuthen.Instance().Id;
                    detail.UpdateDate = DateTime.Now;
                    detail.UpdateBy = SingletonAuthen.Instance().Id;
                    detail.Enable = true;
                    //detail.RcvQty = 0;
                    detail.FKProductDetail = int.Parse(dataGridView1.Rows[i].Cells[colFKProDtlId].Value.ToString());
                    if (dataGridView1.Rows[i].Cells[colInterface].Value != null)
                    {
                        string interfaceDate = dataGridView1.Rows[i].Cells[colInterface].Value.ToString();
                        detail.InterfaceDate = DateTime.Parse(interfaceDate);
                    }
                    //int id = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                    if (dataGridView1.Rows[i].Cells[colId].Value != null)
                    {
                        int id = int.Parse(dataGridView1.Rows[i].Cells[colId].Value.ToString());
                        detail.RcvQty = hd.PODetail.SingleOrDefault(w => w.Id == id).RcvQty;
                        detail.RcvGiftQty = hd.PODetail.SingleOrDefault(w => w.Id == id).RcvGiftQty;
                    }
                    detail.Sequence = hd.SequenceEdit;
                    hd.PODetail.Add(detail);
                    if (i >= dataGridView1.Rows.Count - 2) break;
                }
                hd.TotalQty = totalQty;
                hd.TotalGift = totalGift;
                db.SaveChanges();
                MainReportViewer mr = new MainReportViewer(this, _id);
                mr.ShowDialog();

            }
        }
示例#20
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();
            }
        }
示例#21
0
        /// <summary>
        /// บันทึกรับเข้า และ เพิ่ม Stock Card Wms
        /// </summary>
        private void SaveCommit()
        {
            SSLsEntities db = new SSLsEntities();

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

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

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

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

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

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

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

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

                db.SaveChanges();
                // reset form
                ResetRcv();
            }
            catch (Exception)
            {
                MessageBox.Show("ไม่ถูกต้อง พบข้อผิดพลาด กรุณาติดต่อ admin");
            }
            finally
            {
                db.Dispose();
            }
        }
        /// <summary>
        /// Add Member
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("คุณต้องการบันทึกข้อมูล ใช่หรือไม่ ?",
                                              "คำเตือนจากระบบ", MessageBoxButtons.YesNo);

            switch (dr)
            {
            case DialogResult.Yes:
                // แปลว่า add new
                if (textBoxId.Text == "")
                {
                    SaveCommit();
                    reload();
                }
                else
                {
                    // edit
                    using (SSLsEntities db = new SSLsEntities())
                    {
                        int    id     = int.Parse(textBoxId.Text.ToString());
                        Member member = new Member();
                        //member = Singleton.SingletonMember.Instance().Members.SingleOrDefault(w => w.Id == id);
                        member = db.Member.SingleOrDefault(w => w.Id == id);
                        if (radioButtonRemove.Checked == true)
                        {
                            // ถ้าถอนหุ้น วิ่งไปอัพเดท
                            member.IsRemoveShared = true;
                            member.ResignDate     = DateTime.Now;
                            //foreach (var item in member.MemberShare.Where(w => w.Enable == true))
                            //{
                            //    item.UpdateDate = DateTime.Now;
                            //    item.UpdateBy = Singleton.SingletonAuthen.Instance().Id;
                            //    item.Enable = false;
                            //    db.Entry(item).State = EntityState.Modified;
                            //}
                        }
                        else
                        {
                            member.Name       = textBoxName.Text;
                            member.Code       = textBoxCode.Text.Trim();
                            member.CreateDate = (DateTime)Library.ConvertTHToENDate(maskedTextBoxMemberCreate.Text);

                            if (radioButtonFemale.Checked == true)
                            {
                                member.FKSex = MyConstant.Sex.Female;
                            }
                            else
                            {
                                member.FKSex = MyConstant.Sex.male;
                            }
                            member.TaxId = textBoxTax.Text;
                            var date = Library.ConvertTHToENDate(textBoxBirthDate.Text);
                            if (date == null)
                            {
                                MessageBox.Show("วันเกิดไม่ถูกต้อง");
                                return;
                            }
                            else
                            {
                                member.BirthDate = date.Value;
                            }
                            member.Tel     = textBoxTel.Text;
                            member.Age     = decimal.Parse(textBoxAge.Text);
                            member.Address = textBoxAddress.Text;
                            // หุ้นมากกว่า 0 ถึงเพิ่ม
                            if (this.value > 0)
                            {
                                MemberShare ms = new MemberShare();
                                ms.Enable = true;
                                var dateC = Library.ConvertTHToENDate(maskedTextBoxCreateDate.Text);
                                if (dateC == null)
                                {
                                    MessageBox.Show("วันที่เพิ่มหุ้นไม่ถูกต้อง");
                                    return;
                                }
                                ms.CreateDate   = dateC.Value;
                                ms.CreateBy     = Singleton.SingletonAuthen.Instance().Id;
                                ms.UpdateDate   = DateTime.Now;
                                ms.UpdateBy     = Singleton.SingletonAuthen.Instance().Id;
                                ms.FKShare      = MyConstant.Shared.General;
                                ms.FKBudgetYear = Singleton.SingletonThisBudgetYear.Instance().ThisYear.Id;
                                ms.Qty          = value;
                                ms.FKMember     = member.Id;
                                //ms.FKAgeOfShare = this.fkAgeOfShared;
                                ms.FKAgeOfShare = CheckAgeOfShared(ms.CreateDate);
                                db.MemberShare.Add(ms);
                                //db.SaveChanges();
                            }
                            // check edit share
                            for (int i = 0; i < dataGridView2.Rows.Count; i++)
                            {
                                int idShared = int.Parse(dataGridView2.Rows[i].Cells[0].Value.ToString());
                                if (idShared != 0)
                                {
                                    // หุ้น
                                    decimal     shareVal  = decimal.Parse(dataGridView2.Rows[i].Cells[1].Value.ToString());
                                    MemberShare shareEdit = member.MemberShare.SingleOrDefault(w => w.Id == idShared);
                                    if (shareVal < 1)     // ใส่ 0 เพื่อต้องการ ลบ หุ้นออก *Disable
                                    {
                                        shareEdit.Enable     = false;
                                        shareEdit.UpdateDate = DateTime.Now;
                                        shareEdit.UpdateBy   = SingletonAuthen.Instance().Id;
                                    }
                                    else if (shareEdit.Qty != shareVal)
                                    {
                                        // แปลว่าแก้ไข จำนวนหุ้น ให้อัพเดท
                                        shareEdit.Qty        = shareVal;
                                        shareEdit.UpdateDate = DateTime.Now;
                                        shareEdit.UpdateBy   = SingletonAuthen.Instance().Id;
                                    }
                                    db.Entry(shareEdit).State = EntityState.Modified;
                                }
                            }
                        }
                        //db.Member.Attach(member);
                        member.UpdateDate      = DateTime.Now;
                        member.UpdateBy        = Singleton.SingletonAuthen.Instance().Id;
                        db.Entry(member).State = EntityState.Modified;

                        db.SaveChanges();
                        var members = Singleton.SingletonMember.Instance().Members;
                        member = members.SingleOrDefault(w => w.Id == id);
                        members.Remove(member);
                        var lastEditMember = db.Member.Include("Sex").Include("MemberShare.Share").Include("MemberShare.AgeOfShare")
                                             .SingleOrDefault(w => w.Id == member.Id);
                        members.Add(lastEditMember);
                        this.value         = 0;
                        this.fkAgeOfShared = 0;
                        reload();
                    }
                }
                break;

            case DialogResult.No:
                break;
            }
        }