Beispiel #1
0
        public bool Update(DatabaseFB db, DbTransaction dbTrans, DOPhieuX DOX)
        {
            //Dữ liệu cần cập nhật vào KHO TON KHO từ KhoTonKho
            Object obj = DOX.GetAttr(KhoPhieuLienQuan.AttrName);
            PLTransaction plTrans = new PLTransaction(db, dbTrans);

            if (obj != null)
            {
                DOPhieuLienQuan PLQ = (DOPhieuLienQuan)obj;

                DOObjRel1N Obj1N = PLQ.Obj1N;
                if (Obj1N != null)
                {
                    //Danh sách tạo từ chương trình
                    List<DOFWObjRelData> listObjRel = KhoTonKhoHelp.GetData(
                        plTrans, Obj1N.OBJ_SRC_TYPE, Obj1N.OBJ_SRC_ID, DOX);
                    return UpdateX(plTrans, listObjRel, DOX);
                }
            }
            else
            {
                //Danh sách tạo từ chương trình
                List<DOFWObjRelData> listObjRel = KhoTonKhoHelp.GetData(
                    plTrans, 0, 0, DOX);
                return UpdateX(plTrans, listObjRel, DOX);
            }
            return true;
        }
Beispiel #2
0
        public bool Delete(DatabaseFB db, DbTransaction dbTrans, DOPhieuX DOX)
        {
            ITonKho data = (ITonKho)DOX;
            long ky_id = KhoTonKhoHelp.GetKy(new PLTransaction(db, dbTrans), data.GetNgayPhatSinh());
            PLTransaction plTrans = new PLTransaction(db, dbTrans);
            //Danh sách tạo từ chương trình
            List<DOFWObjRelData> listObjRel = KhoTonKhoHelp.GetData(plTrans, 0, 0, DOX);

            //Cập nhật tồn kho từ kỳ hiện tại trở về sau
            foreach (DOFWObjRelData ObjRel in listObjRel)
                KhoTonKhoHelp.CapNhatNhapXuatChuyen(plTrans, ObjRel, 3,ky_id);

            //Xóa phiếu phát sinh
            return DAFWObjRelData.I.Delete(new PLTransaction(db, dbTrans),
                ky_id, DOX.GetID(), DOX.GetPhieuType().GetTypeID());
        }
 /// <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;
     }
 }
Beispiel #4
0
        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 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;
            }
        }