/// <summary> /// Chuyển đổi đơn vị quản lý, nhung KHÔNG cho phép kèm tình trạng, /// chuyển tình trạng dùng hàm riêng /// </summary> /// <param name="quanly_moi"></param> /// <param name="sudung_moi"></param> /// <param name="vitri_moi"></param> /// <param name="phong_moi"></param> /// <param name="chungtu_ngay_moi"></param> /// <param name="chungtu_sohieu_moi"></param> /// <param name="soluong_moi"></param> /// <param name="ghichu_moi"></param> /// <param name="ngay_moi"></param> /// <returns></returns> public CTTaiSan chuyenDonVi( DonVi donviquanly_moi, DonVi donvisudung_moi, ViTri vitri_moi, Phong phong_moi, CTTaiSan cttaisan_parent_moi, ChungTu chungtu_moi, int soluong_moi = -1, String ghichu_moi = "", DateTime?ngay_moi = null) { Boolean re = true; //Kiem tra rang buoc //So luong chuyen phai hop le if (soluong_moi > this.soluong) { return(null); } //tự chuyển đổi if (soluong_moi < 0) { soluong_moi = this.soluong; } CTTaiSan final = null; //begin business Boolean cungdonviquanly = donviquanly != null && donviquanly_moi != null && donviquanly.id == donviquanly_moi.id; #region Chuyển toàn bộ //Chuyen toan bo if (soluong_moi <= 0 || soluong_moi == this.soluong) { //cung don vi quan ly if (cungdonviquanly) { //chi update lai this this.chungtu = chungtu_moi; this.donvisudung = donvisudung_moi; this.ghichu = ghichu_moi; this.ngay = ngay_moi; this.parent = cttaisan_parent_moi; this.phong = phong_moi; this.vitri = vitri_moi; re = re && this.update() > 0; final = this; } //khac don vi quan ly else { //Step 1: Tao CTTS moi -> add CTTaiSan ctts = new CTTaiSan(); ctts.chungtu = chungtu_moi; ctts.donviquanly = donviquanly_moi; ctts.donvisudung = donvisudung_moi; ctts.ghichu = ghichu_moi; ctts.mota = this.mota; ctts.ngay = ngay_moi; ctts.nguongoc = "[Hệ thống tự động tạo: chuyển từ " + (this.donviquanly == null ? "(null)" : this.donviquanly.niceName()) + " sang " + (donviquanly_moi == null ? "(null)" : donviquanly_moi.niceName()) + "]"; ctts.parent = cttaisan_parent_moi; ctts.phong = phong_moi; ctts.soluong = this.soluong; ctts.subId = this.subId; ctts.taisan = this.taisan; ctts.tinhtrang = this.tinhtrang; ctts.vitri = vitri_moi; re = re && ctts.add_khongGhiLogTangGiam() > 0; //Step 2: ghi log tang tai san cho ctts moi them LogTangGiamTaiSan log = ctts.generateLogTangGiamTaiSan(); log.tang_giam = 0; log.tang_giam_donvi = 1; log.chuyenden_chuyendi = 1; re = re && log.add() > 0; //Step 3: Update lai soluong cho this=0 -> update this.chungtu = chungtu_moi; this.ghichu = ghichu_moi; this.soluong = 0; this.nguongoc = ctts.nguongoc; re = re && this.update() > 0; //Step 4: ghi nhan su giam cho this LogTangGiamTaiSan log2 = this.generateLogTangGiamTaiSan(); log2.soluong = soluong_moi;//importance!!!không dùng this.soluong log2.tang_giam = 0; log2.tang_giam_donvi = -1; log2.chuyenden_chuyendi = -1; re = re && log2.add() > 0; final = ctts; } //end return(final);// re ? 1 : -1; } #endregion #region Chuyển 1 phần số lượng else //Chuyen 1 phan so luong { CTTaiSan ctts = null; //cung don vi quan ly if (cungdonviquanly) { //Tao CTTS moi ctts = new CTTaiSan(); ctts.chungtu = chungtu_moi; ctts.donvisudung = donvisudung_moi; ctts.ghichu = ghichu_moi; ctts.mota = this.mota; ctts.ngay = ngay_moi; ctts.nguongoc = "[Hệ thống tự động tạo: phân bổ nội " + (this.donviquanly == null ? "(null)" : this.donviquanly.niceName()) + "]"; ctts.parent = cttaisan_parent_moi; ctts.phong = phong_moi; ctts.soluong = soluong_moi;//importance!!! ctts.subId = this.subId; ctts.taisan = this.taisan; ctts.tinhtrang = this.tinhtrang; ctts.vitri = vitri_moi; ctts.add_khongGhiLogTangGiam(); //cap nhat lai soluong cho this this.chungtu = chungtu_moi; this.ghichu = ghichu_moi; this.soluong -= soluong_moi;//importance!!! this.nguongoc = nguongoc; this.update(); //KHONG ghi log tang giam } //khac don vi quan ly else { //Step 1: Tao CTTS moi -> add ctts = new CTTaiSan(); ctts.chungtu = chungtu_moi; ctts.donviquanly = donviquanly_moi; ctts.donvisudung = donvisudung_moi; ctts.ghichu = ghichu_moi; ctts.mota = this.mota; ctts.ngay = ngay_moi; ctts.nguongoc = "[Hệ thống tự động tạo: chuyển từ \"" + (this.donviquanly == null ? "null" : this.donviquanly.niceName()) + "\" sang \"" + (donviquanly_moi == null ? "null" : donviquanly_moi.niceName()) + "\"]"; ctts.parent = cttaisan_parent_moi; ctts.phong = phong_moi; ctts.soluong = soluong_moi;//importance!!! ctts.subId = this.subId; ctts.taisan = this.taisan; ctts.tinhtrang = this.tinhtrang; ctts.vitri = vitri_moi; ctts.add_khongGhiLogTangGiam(); //Step 2: ghi log tang tai san cho ctts moi them LogTangGiamTaiSan log = ctts.generateLogTangGiamTaiSan(); log.tang_giam = 0; log.tang_giam_donvi = 1; log.chuyenden_chuyendi = 1; log.add(); //Step 3: Update lai soluong cho this -> update this.chungtu = chungtu_moi; this.soluong -= soluong_moi;//importance!!! this.nguongoc = ctts.nguongoc; this.ghichu = ghichu_moi; this.update(); //Step 4: ghi nhan su giam cho this LogTangGiamTaiSan log2 = this.generateLogTangGiamTaiSan(); log2.soluong = soluong_moi;//importance!!!Không dùng this.soluong log2.tang_giam = 0; log2.tang_giam_donvi = -1; log2.chuyenden_chuyendi = -1; log2.add(); } final = ctts; } #endregion return(final);// re ? 1 : -1; }
/// <summary> /// Chuyển tình trạng, vd báo giảm tài sản khi -> Thanh lý (Thanh lý.giam_taisan = true) /// </summary> /// <returns></returns> public CTTaiSan chuyenTinhTrang( ChungTu chungtu_moi, TinhTrang tinhtrang_moi, int soluong_moi = -1, String ghichu_moi = "") { CTTaiSan final = null; Boolean re = true; //xét ràng buộc if (tinhtrang_moi == null) { return(null); } if (soluong_moi > this.soluong) { return(null); } if (soluong_moi < 0) { soluong_moi = this.soluong; } //this đã bị báo là giảm tài sản rồi, không cho chuyển ngược lại if (this.tinhtrang.giam_taisan) { return(null); } //begin common business this.chungtu = chungtu_moi; this.ghichu = ghichu_moi; //chuyển toàn bộ if (soluong >= this.soluong) { this.tinhtrang = tinhtrang_moi; re = re && this.update() > 0; //nếu tình trạng hiểu là sự giảm => ghi log sự giảm cho toàn trường if (tinhtrang_moi.giam_taisan) { LogTangGiamTaiSan log = this.generateLogTangGiamTaiSan(); log.tang_giam = -1; log.tang_giam_donvi = -1; log.chuyenden_chuyendi = 0;//importance, do chỉ là đổi tình trạng trong cùng 1 đơn vị re = re && log.add() > 0; } final = this; } //chuyển một phần else { this.soluong -= soluong_moi; re = re && this.update() > 0; //Thêm mới CTTS //Step 1: Tao CTTS moi -> add CTTaiSan ctts = new CTTaiSan(); ctts.chungtu = chungtu_moi; ctts.donviquanly = this.donviquanly; ctts.donvisudung = this.donvisudung; ctts.ghichu = ghichu_moi; ctts.mota = this.mota; ctts.ngay = this.ngay; ctts.nguongoc = ""; ctts.parent = this.parent; ctts.phong = this.phong; ctts.soluong = soluong_moi; ctts.subId = this.subId; ctts.taisan = this.taisan; ctts.tinhtrang = tinhtrang_moi; ctts.vitri = this.vitri; re = re && ctts.add_khongGhiLogTangGiam() > 0; //nếu tình trạng hiểu là sự giảm => ghi log sự giảm cho toàn trường if (tinhtrang_moi.giam_taisan) { LogTangGiamTaiSan log = ctts.generateLogTangGiamTaiSan(); log.tang_giam = -1; log.tang_giam_donvi = -1; log.chuyenden_chuyendi = 0;//importance, do chỉ là đổi tình trạng trong cùng 1 đơn vị re = re && log.add() > 0; } final = ctts; } //end return(final);// re ? 1 : -1; }