private bool UpdateX(PLTransaction plTrans, List<DOFWObjRelData> listObjRel, DOPhieuX DOX) { bool flag = false; ITonKho data = (ITonKho)DOX; long ky_id = KhoTonKhoHelp.GetKy(plTrans, data.GetNgayPhatSinh()); //Danh sách tạo từ DB (trường hợp update) List<DOFWObjRelData> listObjRelDB = KhoTonKhoHelp.GetDataDesDB(plTrans, DOX,ky_id); if (listObjRel.Count > 0) { foreach (DOFWObjRelData ObjRel in listObjRel) { if (KhoTonKhoHelp.Check_Exist_ID(plTrans,ky_id, ObjRel.HH_ID, ObjRel.TINH_TRANG_HH, ObjRel.DES_ID, ObjRel.DES_TYPE)) { flag = DAFWObjRelData.I.Update(plTrans, ObjRel, true,ky_id); foreach (DOFWObjRelData _ObjRel in listObjRelDB) { if ((ObjRel.DES_ID == _ObjRel.DES_ID) && (ObjRel.DES_TYPE == _ObjRel.DES_TYPE) && (ObjRel.HH_ID == _ObjRel.HH_ID) && (ObjRel.TINH_TRANG_HH == _ObjRel.TINH_TRANG_HH)) { ObjRel.SO_LG -= _ObjRel.SO_LG; ObjRel.TONG_TR_LG -= _ObjRel.TONG_TR_LG; } } } else { flag = DAFWObjRelData.I.Update(plTrans, ObjRel, false,ky_id); } if (flag == false) { plTrans.Rollback(); return flag; } else { //Cập nhật tồn kho từ kỳ hiện tại trở về sau KhoTonKhoHelp.CapNhatNhapXuatChuyen(plTrans, ObjRel, 1,ky_id); } } if (listObjRelDB.Count > 0) { //Kiểm tra trường hợp update loại bỏ 1 số hàng hóa khỏi phiếu //Khi đó ta phải loại bỏ luôn các hàng hóa trong bảng phát sinh tồn kho foreach (DOFWObjRelData ObjRel in listObjRelDB) { //Nếu không tìm thấy đối tượng trong danh sách //-> người dùng đã loại bỏ hàng hóa đó ra khỏi lưới if (!KhoTonKhoHelp.Check_DOFWObjRelDataInList(listObjRel, ObjRel)) { flag = DAFWObjRelData.I.DeleteDetail(plTrans, ObjRel,ky_id); if (flag == false) { plTrans.Rollback(); return flag; } } } } } return flag; }
/// <summary> /// Lấy dữ liệu gốc từ DB /// </summary> /// <param name="plTrans">Đối tượng PLTransaction</param> /// <param name="DOX">Đối tượng DOPhieuX</param> /// <returns>Danh sách các đối tượng DOFWObjRelData</returns> public static List<DOFWObjRelData> GetDataDesDB(PLTransaction plTrans, DOPhieuX DOX,long ky_id) { List<DOFWObjRelData> listObjRel = new List<DOFWObjRelData>(); try { ITonKho data = (ITonKho)DOX; //long ky_id = KhoTonKhoHelp.GetKy(plTrans, data.GetNgayPhatSinh()); DataSet ds = plTrans.LoadDataSet("kho_ton_kho_" + ky_id, "DES_ID", DOX.GetID()); foreach (DataRow dr in ds.Tables[0].Rows) { DOFWObjRelData ObjRel = new DOFWObjRelData(); ObjRel.ID_TEM = HelpNumber.ParseInt64(dr["ID_TEM"]); ObjRel.SRC_ID = HelpNumber.ParseInt64(dr["SRC_ID"]); ObjRel.SRC_TYPE = HelpNumber.ParseInt64(dr["SRC_TYPE"]); ObjRel.DES_ID = HelpNumber.ParseInt64(dr["DES_ID"]); ObjRel.DES_TYPE = HelpNumber.ParseInt64(dr["DES_TYPE"]); ObjRel.HH_ID = HelpNumber.ParseInt64(dr["HH_ID"]); ObjRel.SO_LG = HelpNumber.ParseDecimal(dr["SO_LG"]); ObjRel.TONG_TR_LG = HelpNumber.ParseDecimal(dr["TONG_TR_LG"]); ObjRel.NGUOI_CAP_NHAT = HelpNumber.ParseInt64(dr["NGUOI_CAP_NHAT"]); ObjRel.NGAY_CAP_NHAT = (DateTime?)DateTime.Parse(dr["NGAY_CAP_NHAT"].ToString()); ObjRel.NGUOI_PHAT_SINH = HelpNumber.ParseInt64(dr["NGUOI_PHAT_SINH"]); ObjRel.NGAY_PHAT_SINH = (DateTime?)DateTime.Parse(dr["NGAY_PHAT_SINH"].ToString()); ObjRel.INOUT1 = dr["INOUT1"].ToString(); ObjRel.KHO_ID1 = HelpNumber.ParseInt64(dr["KHO_ID1"]); ObjRel.INOUT2 = dr["INOUT2"].ToString(); ObjRel.KHO_ID2 = HelpNumber.ParseInt64(dr["KHO_ID2"]); ObjRel.DON_VI_TINH = HelpNumber.ParseInt64(dr["DON_VI_TINH"]); ObjRel.GIA = HelpNumber.ParseDecimal(dr["GIA"]); ObjRel.TINH_TRANG_HH = HelpNumber.ParseInt64(dr["TINH_TRANG_HH"]); listObjRel.Add(ObjRel); } return listObjRel; } catch (Exception ex) { plTrans.Rollback(); PLException.AddException(ex); return listObjRel; } }
/// <summary> /// Lấy tên bảng, cột của 1 loại phiếu chỉ định (Support cho GetData và GetDataDes) /// </summary> /// <param name="loaiphieu_id">Loại phiếu</param> /// <returns>DataSet chứa 1 DataTable miêu tả tên bảng và các cột</returns> private static DataSet Get_TableColumnMap(PLTransaction plTrans, long loaiphieu_id) { try { DbCommand cmd_Select = plTrans.db.GetStoredProcCommand("FW_TON_KHO_LAY_TEN_BANG_COT"); plTrans.db.AddInParameter(cmd_Select, "@LOAI_PHIEU_ID", DbType.Int64, loaiphieu_id); DataSet ds = new DataSet(); plTrans.LoadDataSet(ds, cmd_Select); return ds; } catch (Exception ex) { plTrans.Rollback(); PLException.AddException(ex); return null; } }
/// <summary> /// Lấy dữ liệu chuẩn bị cho việc lưu DB /// </summary> /// <param name="Src">Loại phiếu Src</param> /// <param name="SrcID">ID phiếu Src</param> /// <param name="DOX">Đối tượng DOPhieuX</param> /// <returns>Danh sách các đối tượng DOFWObjRelData</returns> public static List<DOFWObjRelData> GetData(PLTransaction plTrans, long Src, long SrcID, DOPhieuX DOX) { List<DOFWObjRelData> listObjRel = new List<DOFWObjRelData>(); try { ITonKho data = (ITonKho)DOX; DataSet ds_hanghoa = data.GetTonKho().DataSet; DataSet PinMap_ds = Get_TableColumnMap(plTrans, DOX.GetPhieuType().GetTypeID()); if (PinMap_ds != null && PinMap_ds.Tables.Count > 0) { DataTable PinMap = PinMap_ds.Tables[0]; string HangHoa_ID = PinMap.Rows[0]["PIN_HANG_HOA"] != null ? PinMap.Rows[0]["PIN_HANG_HOA"].ToString().Trim() : ""; string SoLuong = PinMap.Rows[0]["PIN_SO_LUONG"] != null ? PinMap.Rows[0]["PIN_SO_LUONG"].ToString().Trim() : ""; string TrongLuong = PinMap.Rows[0]["PIN_TRONG_LUONG"] != null ? PinMap.Rows[0]["PIN_TRONG_LUONG"].ToString().Trim() : ""; string DonGia = PinMap.Rows[0]["PIN_DON_GIA"] != null ? PinMap.Rows[0]["PIN_DON_GIA"].ToString().Trim() : ""; string TTHTK_ID = PinMap.Rows[0]["PIN_TTHTK"] != null ? PinMap.Rows[0]["PIN_TTHTK"].ToString().Trim() : ""; if (HangHoa_ID != "" && ds_hanghoa.Tables.Count > 0 && ds_hanghoa.Tables[0].Columns.Contains(HangHoa_ID)) { foreach (DataRow dr in ds_hanghoa.Tables[0].Rows) { DOFWObjRelData ObjRel = new DOFWObjRelData(); ObjRel.SRC_ID = SrcID; ObjRel.SRC_TYPE = Src; ObjRel.DES_ID = DOX.GetID(); ObjRel.DES_TYPE = DOX.GetPhieuType().GetTypeID(); ObjRel.HH_ID = HelpNumber.ParseInt64(dr[HangHoa_ID]); if (SoLuong != "" && ds_hanghoa.Tables[0].Columns.Contains(SoLuong)) ObjRel.SO_LG = HelpNumber.ParseDecimal(dr[SoLuong]); if (TrongLuong != "" && ds_hanghoa.Tables[0].Columns.Contains(TrongLuong)) ObjRel.TONG_TR_LG = HelpNumber.ParseDecimal(dr[TrongLuong]); ObjRel.NGUOI_CAP_NHAT = data.GetNguoiCapNhat(); ObjRel.NGAY_CAP_NHAT = data.GetNgayCapNhat(); ObjRel.NGUOI_PHAT_SINH = data.GetNguoiPhatSinh(); ObjRel.NGAY_PHAT_SINH = data.GetNgayPhatSinh(); string inout1 = PinMap.Rows[0]["INOUT1"].ToString();//INOUT1FromType(plTrans, ObjRel.DES_TYPE); if (inout1 != "") { ObjRel.INOUT1 = inout1; if (inout1 == "OUT" || inout1 == "IN") ObjRel.KHO_ID1 = data.GetKho1(); } else ObjRel.INOUT1 = ""; string inout2 = PinMap.Rows[0]["INOUT2"].ToString();//INOUT2FromType(plTrans, ObjRel.DES_TYPE); if (inout2 == "OUT" || inout2 == "IN") { ObjRel.INOUT2 = inout2; ObjRel.KHO_ID2 = data.GetKho2(); } else ObjRel.INOUT2 = ""; long dvt_id = DVTFromHH_ID(plTrans, ObjRel.HH_ID); if (dvt_id != -1) ObjRel.DON_VI_TINH = dvt_id; if (DonGia != "" && ds_hanghoa.Tables[0].Columns.Contains(DonGia)) ObjRel.GIA = HelpNumber.ParseDecimal(dr[DonGia]); if (TTHTK_ID != "" && ds_hanghoa.Tables[0].Columns.Contains(TTHTK_ID)) ObjRel.TINH_TRANG_HH = HelpNumber.ParseInt64(dr[TTHTK_ID]); ObjRel.GHI_CHU = dr["GHI_CHU"] != null ? dr["GHI_CHU"].ToString() : ""; listObjRel.Add(ObjRel); } return listObjRel; } else return listObjRel; } else return listObjRel; } catch (Exception ex) { plTrans.Rollback(); PLException.AddException(ex); return listObjRel; } }