private void btn_Save_Click(object sender, EventArgs e) { if (txt_DocNoTran.Text == "") { MessageBox.Show("คุณยังไม่ได้กรอกข้อมูล [เลขที่เอกสารโอน] ...กรุณากรอกข้อมูลก่อนทำการบันทึก", "ข้อมูลไม่ครบ", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (gridView1.RowCount > 0) { if (DEntRun == null) { Utility.MessageError("ไม่พบข้อมูล [เลข Running] กรุณาทำการเลือกข้อมูล Running ใหม่อีกครั้งครับ"); return; } //------ Check การเปลี่ยน Running if (Fn_CheckRunningChange(Convert.ToInt32(_RunningID), _Menu_ID) == false)//True : มีการเปลี่ยน Running พร้อม Reset เป็น 0 { return; } if (Utility.MessageQuestion("คุณต้องการที่จะทำการโอนข้อมูลหรือไม่... กด Yes เพื่อยินยันการโอน?") == DialogResult.No) { return; } List <Stock_TranferArInvoice> Item_Source = (List <Stock_TranferArInvoice>)gridView1.DataSource; string TranDocNo = txt_DocNoTran.Text.Trim(); DateTime TranDate = dtp_Tranfer.DateTime; string sRunningCurrent = ""; List <Stock_TranferArInvoice> Item_Result = new List <Stock_TranferArInvoice>(); foreach (Stock_TranferArInvoice ItemSet in Item_Source) { ItemSet.Tran_DocNo = TranDocNo; ItemSet.Tran_DocDate = TranDate; ItemSet.QtyRemain = ItemSet.Qty - ItemSet.QtyActual; // [Qty] - [QtyActual] ItemSet.Tran_StatusClear = 0; //0 : รายการปกติ ยอดคงค้างใช้คำนวณ 1 : รายการที่ถูกยกเลิก ยอดคงค้างจะไม่คำนวณ ItemSet.Status = ItemSet.QtyRemain == 0 ? 0 : 1; //0 : โอนสำเร็จ 1 : ค้างโอน 2 : ยกเลิก //ItemSet.Tran_Attribute01 = ItemSet.Tran_Attribute01; ItemSet.Tran_UpdateBy = Utility._UserDB; ItemSet.Tran_UpdateDate = DateTime.Now; ItemSet.Tran_CreateBy = Utility._UserDB; ItemSet.Tran_CreateDate = DateTime.Now; //ItemSet.Tran_Attribute01 = "Delete Test where Tran_DocNo=('sdsdsd-0102-3')"; Item_Result.Add(ItemSet); } List <Stock_TranferAccrual> ItemLog = new List <Stock_TranferAccrual>(); foreach (Stock_TranferArInvoice Iset in Item_Result) { Stock_TranferAccrual ILog = new Stock_TranferAccrual(); ILog.TranferAccrual_Date = Iset.Tran_DocDate; ILog.TranferAccual_QtyReam = Iset.QtyActual; ILog.Tran_DocNo = Iset.Tran_DocNo; ILog.Tran_DocDate = Iset.Tran_DocDate; ILog.DocNo = Iset.DocNo; ILog.ItemCode = Iset.ItemCode; ILog.DocDate = Iset.DocDate; ILog.ArCode = Iset.ArCode; ILog.SaleCode = Iset.SaleCode; ILog.MyDescription = Iset.MyDescription; ILog.ItemName = Iset.ItemName; ILog.WHCode = Iset.WHCode; ILog.ShelfCode = Iset.ShelfCode; ILog.Qty = Iset.Qty; ILog.QtyActual = Iset.QtyActual; ILog.QtyRemain = Iset.QtyRemain; ILog.Price = Iset.Price; ILog.Amount = Iset.Amount; ILog.UnitCode = Iset.UnitCode; ILog.LineNumber = Iset.LineNumber; ILog.Tran_StatusClear = Iset.Tran_StatusClear; ILog.Tran_Attribute01 = Iset.Tran_Attribute01; ILog.Tran_Attribute02 = Iset.Tran_Attribute02; ILog.Tran_Attribute03 = Iset.Tran_Attribute03; ILog.Tran_Attribute04 = Iset.Tran_Attribute04; ILog.Tran_Attribute05 = Iset.Tran_Attribute05; ILog.Status = Iset.Status; ILog.Tran_CreateBy = Iset.Tran_CreateBy; ILog.Tran_CreateDate = Iset.Tran_CreateDate; ILog.Tran_UpdateBy = Iset.Tran_UpdateBy; ILog.Tran_UpdateDate = Iset.Tran_UpdateDate; ItemLog.Add(ILog); } try { using (var srv = new StockTranferArInvoiceService(Utility.ConnSDB)) { using (var srv2 = new StockTranferAccrualService(Utility.ConnSDB)) { if (srv.CheckUseDocNo(TranDocNo) == false) { if (Utility.MessageQuestion("ข้อมูลการโอน : " + TranDocNo + " ถูกใช้บันทึกไปแล้ว\nคุณต้องการทำการบันทึกหรือไม่...โดยระบบจะทำการ Running รหัสเอกสารลำดับต่อไป") == DialogResult.Yes) { //::::::::::: Manage Running Duplicate [Start] ::::::::::::::::::::::: using (var db2 = new DocumentRunningService(Utility.ConnSDB)) { DEntRun = db2.GetRunning(Convert.ToInt32(_RunningID), _Menu_ID); do { DEntRun = db2.SetNextRunning(DEntRun); //---- IncreaseNextNumber 1 sRunningCurrent = Db_Run.GetRunningDisplay(DEntRun); } while (!srv.CheckUseDocNo(sRunningCurrent)); //วนเช็ค Running และ Update Running ไปเรื่อยๆจนกว่าจะเจอ Running ที่ไม่ได้ใช้ foreach (var item in Item_Result) { item.Tran_DocNo = sRunningCurrent; } } //::::::::::: Manage Running Duplicate [END] ::::::::::::::::::::::: } else { return; } } bool result = srv.Insert(Item_Result, DEntRun); bool result_log = srv2.Insert(ItemLog); if (result && result_log) { Utility.MessageInformation("บันทึกข้อมูลเรียบร้อย..."); //Fn_ScreenClear(); Fn_ClearData(); } else { Utility.MessageError("ไม่สามารถบันทึกข้อมูลได้...เนื่องจาก : " + srv.ErrorMessage); Utility.MessageError("ไม่สามารถบันทึกข้อมูลได้...เนื่องจาก : " + srv2.ErrorMessage); } } } } catch (ApplicationException ex) { Utility.MessageError("Error : " + ex.Message); if (ex.InnerException != null) { Utility.MessageError("Error Inner : " + ex.InnerException.Message); } } } }