public SalaryVoucherResponse SetSalaryVouchers(SalaryVoucherRequest request) { var response = new SalaryVoucherResponse(); string currencyCode = ""; decimal exchangeRate = 1; #region Ghi sổ if (request.LoadOptions.Contains("SaveSalaryVoucher")) { // Lấy voucherType là thực chi var voucherType = VoucherTypeDao.GetVoucherTypeByCode("SalaryVoucher") ?? new VoucherTypeEntity(); // Lấy tất cả các loại khoản lương nhân viên List <EmployeeEntity> employees = EmployeeDao.GetEmployeesForSalaryInMonthAndRefNo(request.PostedDate, request.RefNo); var obj = SalaryVoucherDao.GetSalaryVoucherMonthDate(request.PostedDate).FirstOrDefault(); if (obj != null) { currencyCode = obj.CurrencyCode; exchangeRate = obj.ExchangeRate; } //string[] words = request.PostedDate.Split('/');//Chuyển lại ngày tháng cho hợp lý trên C# # SQL DateTime postedDate = Convert.ToDateTime(request.PostedDate); var depositEntity = new DepositEntity() { RefId = 0, RefTypeId = request.ReftypeId, // RefDate = postedDate, //DateTime.Parse(words[1] + "/" + words[0] + "/" + words[2]), RefNo = request.RefNo, PostedDate = postedDate, //DateTime.Parse(words[1] + "/" + words[0] + "/" + words[2]), AccountingObjectType = 1, AccountingObjectId = null, Trader = "", CustomerId = null, VendorId = null, EmployeeId = null, // mapper.EmployeeId, BankAccountCode = "112", CurrencyCode = currencyCode, ExchangeRate = exchangeRate, TotalAmountOc = 0, // employeePayItem.Amount, TotalAmountExchange = 0, // employeePayItem.Amount, JournalMemo = "Chứng từ lương tháng " + postedDate.Month + "/" + postedDate.Year, }; depositEntity.DepositDetails = new List <DepositDetailEntity>(); var cashEntity = new CashEntity { RefId = 0, RefTypeId = request.ReftypeId, // RefNo = request.RefNo, RefDate = postedDate, //DateTime.Parse(words[1] + "/" + words[0] + "/" + words[2]), PostedDate = postedDate, //DateTime.Parse(words[1] + "/" + words[0] + "/" + words[2]), AccountingObjectId = null, CustomerId = null, VendorId = null, Trader = "", CurrencyCode = currencyCode, ExchangeRate = exchangeRate, TotalAmount = 0, TotalAmountExchange = 0, AccountNumber = "", JournalMemo = "Chứng từ lương tháng " + postedDate.Month + "/" + postedDate.Year, DocumentInclude = "", AccountingObjectType = 1, EmployeeId = null, }; cashEntity.CashDetails = new List <CashDetailEntity>(); foreach (var employee in employees) { //Từng nhân viên - từng khoảng lương - tiền tương ứng. IList <EmployeePayItemEntity> listPayItems = EmployeePayItemDao.GetEmployeeForViewtEmployeePayItem(employee.EmployeeId, postedDate, exchangeRate); foreach (var employeePayItemEntity in listPayItems) { var payItems = PayItemDao.GetPayItem(employeePayItemEntity.PayItemId); //Chi if (payItems != null && (payItems.CreditAccountCode ?? "").StartsWith("111")) { // khởi tạo phieu chi chi tiết CashDetailEntity cashDetailEntity = new CashDetailEntity() { RefDetailId = 0, RefId = 0, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, Description = payItems.PayItemName + " tháng " + postedDate.Month + "/" + postedDate.Year, AmountOc = employeePayItemEntity.Amount, AmountExchange = employeePayItemEntity.AmountExchange, VoucherTypeId = null, //voucherType.VoucherTypeId, BudgetSourceCode = payItems.BudgetSourceCode, BudgetItemCode = payItems.BudgetItemCode, AccountingObjectId = null, // dùng tạm MergerFundId để lưu payitemid MergerFundId = payItems.PayItemId }; bool flag = false; for (int i = 0; i < cashEntity.CashDetails.Count; i++) { if (cashEntity.CashDetails[i].MergerFundId == cashDetailEntity.MergerFundId && cashEntity.CashDetails[i].CorrespondingAccountNumber == cashDetailEntity.CorrespondingAccountNumber && cashEntity.CashDetails[i].AccountNumber == cashDetailEntity.AccountNumber && cashEntity.CashDetails[i].BudgetItemCode == cashDetailEntity.BudgetItemCode && cashEntity.CashDetails[i].BudgetSourceCode == cashDetailEntity.BudgetSourceCode) { cashEntity.CashDetails[i].AmountOc = cashEntity.CashDetails[i].AmountOc + cashDetailEntity.AmountOc; cashEntity.CashDetails[i].AmountExchange = cashEntity.CashDetails[i].AmountExchange + cashDetailEntity.AmountExchange; flag = true; } } if (flag == false) { if (cashDetailEntity.AmountOc > 0) { cashEntity.CashDetails.Add(cashDetailEntity); } } //Tính lại TotalAmountOc - TotalAmountExchange cashEntity.TotalAmount = cashEntity.TotalAmount + cashDetailEntity.AmountOc; cashEntity.TotalAmountExchange = cashEntity.TotalAmountExchange + cashDetailEntity.AmountExchange; //Get Bank Acount cashEntity.AccountNumber = payItems.CreditAccountCode; } //Nợ if (payItems != null && (payItems.CreditAccountCode ?? "").StartsWith("112")) { DepositDetailEntity depositDetailEntity = new DepositDetailEntity() { RefDetailId = request.ReftypeId, RefId = 0, Description = payItems.PayItemName + " tháng " + postedDate.Month + "/" + postedDate.Year, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, AmountOc = employeePayItemEntity.Amount, AmountExchange = employeePayItemEntity.AmountExchange, VoucherTypeId = null, //voucherType.VoucherTypeId, BudgetSourceCode = payItems.BudgetSourceCode, AccountingObjectId = null, BudgetItemCode = payItems.BudgetItemCode, // dùng tạm MergerFundId để lưu payitemid MergerFundId = payItems.PayItemId }; bool flag = false; for (int i = 0; i < depositEntity.DepositDetails.Count; i++) { // old //if (depositEntity.DepositDetails[i].CorrespondingAccountNumber == depositDetailEntity.CorrespondingAccountNumber && depositEntity.DepositDetails[i].BudgetItemCode == depositDetailEntity.BudgetItemCode && depositEntity.DepositDetails[i].BudgetSourceCode == depositDetailEntity.BudgetSourceCode) //{ // depositEntity.DepositDetails[i].AmountOc = depositEntity.DepositDetails[i].AmountOc + depositDetailEntity.AmountOc; // depositEntity.DepositDetails[i].AmountExchange = depositEntity.DepositDetails[i].AmountExchange + depositDetailEntity.AmountExchange; // flag = true; //} if (depositEntity.DepositDetails[i].MergerFundId == depositDetailEntity.MergerFundId && depositEntity.DepositDetails[i].CorrespondingAccountNumber == depositDetailEntity.CorrespondingAccountNumber && depositEntity.DepositDetails[i].BudgetItemCode == depositDetailEntity.BudgetItemCode && depositEntity.DepositDetails[i].BudgetSourceCode == depositDetailEntity.BudgetSourceCode) { depositEntity.DepositDetails[i].AmountOc = depositEntity.DepositDetails[i].AmountOc + depositDetailEntity.AmountOc; depositEntity.DepositDetails[i].AmountExchange = depositEntity.DepositDetails[i].AmountExchange + depositDetailEntity.AmountExchange; flag = true; } } if (flag == false) { if (depositDetailEntity.AmountOc > 0) { depositEntity.DepositDetails.Add(depositDetailEntity); } } //Tính lại TotalAmountOc - TotalAmountExchange depositEntity.TotalAmountOc = depositEntity.TotalAmountOc + depositDetailEntity.AmountOc; depositEntity.TotalAmountExchange = depositEntity.TotalAmountExchange + depositDetailEntity.AmountExchange; //Get bank Acount depositEntity.BankAccountCode = payItems.CreditAccountCode; } } } // xóa MergerFundId đi không thì lưu nó lỗi á cashEntity.CashDetails.Select(c => { c.MergerFundId = null; return(c); }).ToList(); depositEntity.DepositDetails.Select(c => { c.MergerFundId = null; return(c); }).ToList(); long?cashId = null; long?depositId = null; //Insert chứng từ phiếu chi var cashRequest = new CashRequest(); var oCashFacade = new CashFacade(); cashRequest.Action = PersistType.Insert; cashRequest.CashEntity = cashEntity; // sinh định khoản đồng thời cashRequest.isAutoGenerateParallel = true; if (cashRequest.CashEntity.TotalAmount > 0) { var cashResponse = oCashFacade.SetCashes(cashRequest); cashId = cashResponse.RefId; } //Insert chứng từ giấy báo nợ var depositRequest = new DepositRequest(); var oDepositFacade = new DepositFacade(); depositRequest.Action = PersistType.Insert; depositRequest.Deposit = depositEntity; if (depositRequest.Deposit.TotalAmountOc > 0) { var depositRespone = oDepositFacade.SetDeposits(depositRequest, true); depositId = depositRespone.RefId; } // update id phiếu chi, thu tiền gửi vào bảng string updateEmployeePayroll = SalaryVoucherDao.Update_EmployeePayroll_Voucher(request.RefNo, cashId, depositId); } #endregion #region Hủy tính ghi sổ + tính lương if (request.LoadOptions.Contains("CancelSalaryVoucher")) { var obj = SalaryVoucherDao.GetSalaryVoucherMonthDateIsPostedDate(request.PostedDate).FirstOrDefault(); if (obj != null) { currencyCode = obj.CurrencyCode; } var cashRequest = new CashRequest(); var oCashFacade = new CashFacade(); cashRequest.Action = PersistType.Delete; cashRequest.CashEntity = CashDao.GetCash(SalaryVoucherDao.GetEmployeePayroll_VoucherID(request.RefNo, 201)); //CashDao.GetCashBySalary(request.ReftypeId, request.PostedDate, request.RefNo, currencyCode); var depositRequest = new DepositRequest(); var oDepositFacade = new DepositFacade(); depositRequest.Action = PersistType.Delete; depositRequest.Deposit = DepositDao.GetDeposit(SalaryVoucherDao.GetEmployeePayroll_VoucherID(request.RefNo, 301)); //DepositDao.GetDepositsBySalary(request.ReftypeId, request.PostedDate, request.RefNo, currencyCode); //Xóa chứng từ lương ở phiểu chi if (cashRequest.CashEntity != null) { cashRequest.RefId = cashRequest.CashEntity.RefId; cashRequest.CashEntity.CashDetails = CashDetailDao.GetCashDetailsByCash(cashRequest.CashEntity.RefId); if (cashRequest.CashEntity.CashDetails != null) { oCashFacade.SetCashes(cashRequest); response.Message = CashDao.DeleteEmployeePayroll(cashRequest.CashEntity.RefNo, cashRequest.CashEntity.PostedDate.Month + "/" + cashRequest.CashEntity.PostedDate.Day + "/" + cashRequest.CashEntity.PostedDate.Year); } } //Xóa chứng từ lương ở giấy báo nợ if (depositRequest.Deposit != null) { depositRequest.RefId = depositRequest.Deposit.RefId; depositRequest.Deposit.DepositDetails = DepositDetailDao.GetDepositDetailsByDeposit(depositRequest.Deposit.RefId); if (depositRequest.Deposit.DepositDetails != null) { oDepositFacade.SetDeposits(depositRequest); response.Message = DepositDao.DeleteEmployeePayroll(depositRequest.Deposit.RefNo, depositRequest.Deposit.PostedDate.Value.Month + "/" + depositRequest.Deposit.PostedDate.Value.Day + "/" + depositRequest.Deposit.PostedDate.Value.Year); } } } #endregion #region Hủy tính lương if (request.LoadOptions.Contains("CancelCalc")) { response.Message = SalaryVoucherDao.CanclCalc(request.PostedDate, request.RefNo); } #endregion return(response); }
/// <summary> /// Set the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>SalaryResponse.</returns> public SalaryResponse SetSalaries(SalaryRequest request) { var response = new SalaryResponse(); var obJourentryAccount = new JournalEntryAccountEntity(); IList <JournalEntryAccountEntity> listJournalEntryAccountEntity = new List <JournalEntryAccountEntity>(); IList <AccountBalanceEntity> listAccountBalanceEntity = new List <AccountBalanceEntity>(); var mapper = request.Salary; if (request.Action != PersistType.Delete) { if (!mapper.Validate()) { foreach (string error in mapper.ValidationErrors) { response.Message += error + Environment.NewLine; } response.Acknowledge = AcknowledgeType.Failure; return(response); } } try { if (request.LoadOptions.Contains("CalSalary")) { var lstDeposit = SalaryDao.GetSalaryByRefNo(mapper.RefNo); if (lstDeposit.Count > 0) { response.Message = "Đã tồn tại số chứng từ " + mapper.RefNo + " !"; response.Acknowledge = AcknowledgeType.Failure; return(response); } foreach (var employees in mapper.Employees) { mapper.EmployeeId = employees.EmployeeId; response.SalaryId = SalaryDao.CalSalary(mapper); } var autoNumber = AutoNumberDao.GetAutoNumberByRefType(600); //------------------------------------------------------------------ //LinhMC 29/11/2014 //Lưu giá trị số tự động tăng theo loại tiền //--------------------------------------------------------------- if (request.Salary.CurrencyCode == "USD") { autoNumber.Value += 1; } else { autoNumber.ValueLocalCurency += 1; } response.Message = AutoNumberDao.UpdateAutoNumber(autoNumber); } if (request.LoadOptions.Contains("SavePostedSalary")) { /* Danh sách các khoản lương * Nhân viên liên kết Danh sách các khoản lương * Lưu Chứng từ lương: Nhân viên lấy từ lấy các khoản lương theo nhân viên==> tổng số tiền lương * ==> Đồng thời lưu vào chứng từ Phiếu chi hoặc Giấy báo Nợ đặt mặc định RefType=600 vs Số chứng từ (RefNo) và ngày chứng từ lương * ==> Khi lưu chứng từ Phiếu Chi hoặc Giấy báo Có được lưu dựa trên cách lưu của Phiếu Chi hoặc Giấy Báo Có * ==> Để xác định chứng từ là Phiếu Chi hay Giấy báo Nợ phải dựa báo TK có trên Danh mục khoản lương */ var depositEntity = new DepositEntity() { RefId = 0, RefTypeId = mapper.RefTypeId,// RefDate = mapper.RefDate, RefNo = mapper.RefNo, PostedDate = mapper.PostedDate, AccountingObjectType = 0, AccountingObjectId = null, Trader = "", CustomerId = null, VendorId = null, EmployeeId = null,// mapper.EmployeeId, BankAccountCode = "112", CurrencyCode = mapper.CurrencyCode, ExchangeRate = mapper.ExchangeRate, TotalAmountOc = 0, // employeePayItem.Amount, TotalAmountExchange = 0, // employeePayItem.Amount, JournalMemo = "Chứng từ lương tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, }; depositEntity.DepositDetails = new List <DepositDetailEntity>(); var cashEntity = new CashEntity { RefId = 0, RefTypeId = mapper.RefTypeId,// RefNo = mapper.RefNo, RefDate = mapper.RefDate, PostedDate = mapper.PostedDate, AccountingObjectId = null, CustomerId = null, VendorId = null, Trader = "", CurrencyCode = mapper.CurrencyCode, ExchangeRate = mapper.ExchangeRate, TotalAmount = 0, TotalAmountExchange = 0, AccountNumber = "", JournalMemo = "Chứng từ lương tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, DocumentInclude = "", AccountingObjectType = 2, // CashDetails = cashDetails; EmployeeId = null, }; cashEntity.CashDetails = new List <CashDetailEntity>(); // var lstDeposit = SalaryDao.GetSalaryByRefNo(mapper.RefNo); //if (lstDeposit.Count > 0) //{ // response.Message = "Đã tồn tại số chứng từ " + mapper.RefNo + " !"; // response.Acknowledge = AcknowledgeType.Failure; // return response; //} // var Cash mapper.Employees = EmployeeDao.GetEmployeesForSalary(mapper.RefDate, mapper.RefNo); foreach (var employee in mapper.Employees) { //Tính lại lương cho nhân viên trước khi ghi sổ mapper.EmployeeId = employee.EmployeeId; response.SalaryId = SalaryDao.CalSalary(mapper); //Từng nhân viên - từng khoảng lương - tiền tương ứng. IList <EmployeePayItemEntity> listPayItems = EmployeePayItemDao.GetEmployeeForViewtEmployeePayItem(employee.EmployeeId, mapper.RefDate, mapper.ExchangeRate); // mapper.EmployeePayItemId = EmployeePayItemDao.GetEmployeePayItemsByEmployeeId(employee.EmployeeId); foreach (var employeePayItemEntity in listPayItems) { mapper.EmployeePayItemId = employeePayItemEntity.EmployeePayItemId; var payItems = PayItemDao.GetPayItem(employeePayItemEntity.PayItemId); //Chi if (payItems.CreditAccountCode.Substring(0, 3).Contains("111")) { // khởi tạo phieu chi chi tiết CashDetailEntity cashDetailEntity = new CashDetailEntity() { RefDetailId = 0, RefId = 0, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, Description = payItems.PayItemName + " tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, AmountOc = employeePayItemEntity.Amount * mapper.ExchangeRate, AmountExchange = employeePayItemEntity.Amount, VoucherTypeId = null, BudgetSourceCode = payItems.BudgetSourceCode, BudgetItemCode = payItems.BudgetItemCode, AccountingObjectId = null, MergerFundId = null }; bool flag = false; for (int i = 0; i < cashEntity.CashDetails.Count; i++) { if (cashEntity.CashDetails[i].CorrespondingAccountNumber == cashDetailEntity.CorrespondingAccountNumber && cashEntity.CashDetails[i].AccountNumber == cashDetailEntity.AccountNumber && cashEntity.CashDetails[i].BudgetItemCode == cashDetailEntity.BudgetItemCode && cashEntity.CashDetails[i].BudgetSourceCode == cashDetailEntity.BudgetSourceCode) { cashEntity.CashDetails[i].AmountOc = cashEntity.CashDetails[i].AmountOc + cashDetailEntity.AmountOc; cashEntity.CashDetails[i].AmountExchange = cashEntity.CashDetails[i].AmountExchange + cashDetailEntity.AmountExchange; flag = true; } } if (flag == false) { if (cashDetailEntity.AmountOc > 0) { cashEntity.CashDetails.Add(cashDetailEntity); } } //Tính lại TotalAmountOc - TotalAmountExchange cashEntity.TotalAmount = cashEntity.TotalAmount + cashDetailEntity.AmountOc; cashEntity.TotalAmountExchange = cashEntity.TotalAmountExchange + cashDetailEntity.AmountExchange; //Get Bank Acount cashEntity.AccountNumber = payItems.CreditAccountCode; } //Nợ if (payItems.CreditAccountCode.Substring(0, 3).Contains("112") == true) { DepositDetailEntity depositDetailEntity = new DepositDetailEntity() { RefDetailId = mapper.RefTypeId, RefId = 0, Description = payItems.PayItemName + " tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, AmountOc = employeePayItemEntity.Amount * mapper.ExchangeRate, AmountExchange = employeePayItemEntity.Amount, VoucherTypeId = 1, BudgetSourceCode = payItems.BudgetSourceCode, AccountingObjectId = null, BudgetItemCode = payItems.BudgetItemCode, //DepartmentId = mapper.DepartmentId, MergerFundId = null }; bool flag = false; for (int i = 0; i < depositEntity.DepositDetails.Count; i++) { if (depositEntity.DepositDetails[i].CorrespondingAccountNumber == depositDetailEntity.CorrespondingAccountNumber && depositEntity.DepositDetails[i].BudgetItemCode == depositDetailEntity.BudgetItemCode && depositEntity.DepositDetails[i].BudgetSourceCode == depositDetailEntity.BudgetSourceCode) { depositEntity.DepositDetails[i].AmountOc = depositEntity.DepositDetails[i].AmountOc + depositDetailEntity.AmountOc; depositEntity.DepositDetails[i].AmountExchange = depositEntity.DepositDetails[i].AmountExchange + depositDetailEntity.AmountExchange; flag = true; } } if (flag == false) { if (depositDetailEntity.AmountOc > 0) { depositEntity.DepositDetails.Add(depositDetailEntity); } } //Tính lại TotalAmountOc - TotalAmountExchange depositEntity.TotalAmountOc = depositEntity.TotalAmountOc + depositDetailEntity.AmountOc; depositEntity.TotalAmountExchange = depositEntity.TotalAmountExchange + depositDetailEntity.AmountExchange; //Get bank Acount depositEntity.BankAccountCode = payItems.CreditAccountCode; } } } var autoNumber = AutoNumberDao.GetAutoNumberByRefType(600); //------------------------------------------------------------------ //LinhMC 29/11/2014 //Lưu giá trị số tự động tăng theo loại tiền //--------------------------------------------------------------- if (request.Salary.CurrencyCode == "USD") { autoNumber.Value += 1; } else { autoNumber.ValueLocalCurency += 1; } response.Message = AutoNumberDao.UpdateAutoNumber(autoNumber); // insert or update giấy báo nợ { var checkDepositEntity = DepositDao.GetDepositByRefdateAndReftype(depositEntity); if (checkDepositEntity == null) { if (depositEntity.DepositDetails.Count > 0) { var depositRequest = new DepositRequest(); var oDepositFacade = new DepositFacade(); depositRequest.Action = PersistType.Insert; depositRequest.Deposit = depositEntity; oDepositFacade.SetDeposits(depositRequest); } } //Sẽ không còn trường hợp này nữa //else //{ // //Update CheckDepositEntity with amuont depositEntity,.. // checkDepositEntity.DepositDetails = new List<DepositDetailEntity>(); // checkDepositEntity.RefDate = depositEntity.RefDate; // checkDepositEntity.RefNo = depositEntity.RefNo; // checkDepositEntity.ExchangeRate = depositEntity.ExchangeRate; // checkDepositEntity.CurrencyCode = depositEntity.CurrencyCode; // checkDepositEntity.ExchangeRate = depositEntity.ExchangeRate; // checkDepositEntity.TotalAmountOc = depositEntity.TotalAmountOc; // checkDepositEntity.TotalAmountExchange = depositEntity.TotalAmountExchange; // checkDepositEntity.BankAccountCode = depositEntity.BankAccountCode; // //Thêm các details mới+ // foreach (var depositDetail in depositEntity.DepositDetails) // { // if (!depositDetail.Validate()) // { // foreach (string error in depositDetail.ValidationErrors) // response.Message += error + Environment.NewLine; // response.Acknowledge = AcknowledgeType.Failure; // return response; // } // depositDetail.RefId = checkDepositEntity.RefId; // checkDepositEntity.DepositDetails.Add(depositDetail); // } // var depositRequest = new DepositRequest(); // var oDepositFacade = new DepositFacade(); // depositRequest.Action = PersistType.Update; // depositRequest.Deposit = checkDepositEntity; // oDepositFacade.SetDeposits(depositRequest); //} } // Insert phieu chi //if (cashEntity.CashDetails.Count > 0) //{ var checkCashEntity = CashDao.GetCashByRefdateAndReftype(cashEntity); if (checkCashEntity == null) { if (cashEntity.CashDetails.Count > 0) { var cashRequest = new CashRequest(); var oCashFacade = new CashFacade(); cashRequest.Action = PersistType.Insert; cashRequest.CashEntity = cashEntity; oCashFacade.SetCashes(cashRequest); } } //Sẽ không có trường hợp này nữa //else //{ // //Update // checkCashEntity.CashDetails = new List<CashDetailEntity>(); // checkCashEntity.RefDate = cashEntity.RefDate; // checkCashEntity.RefNo = cashEntity.RefNo; // checkCashEntity.ExchangeRate = cashEntity.ExchangeRate; // checkCashEntity.CurrencyCode = cashEntity.CurrencyCode; // checkCashEntity.ExchangeRate = cashEntity.ExchangeRate; // checkCashEntity.TotalAmount = cashEntity.TotalAmount; // checkCashEntity.TotalAmountExchange = cashEntity.TotalAmountExchange; // checkCashEntity.AccountNumber = cashEntity.AccountNumber; // //Thêm các details mới+ // foreach (var cashDetail in cashEntity.CashDetails) // { // if (!cashDetail.Validate()) // { // foreach (string error in cashDetail.ValidationErrors) // response.Message += error + Environment.NewLine; // response.Acknowledge = AcknowledgeType.Failure; // return response; // } // cashDetail.RefId = checkCashEntity.RefId; // checkCashEntity.CashDetails.Add(cashDetail); // } // var cashRequest = new CashRequest(); // var oCashFacade = new CashFacade(); // cashRequest.Action = PersistType.Update; // cashRequest.CashEntity = checkCashEntity; // oCashFacade.SetCashes(cashRequest); //} } if (request.LoadOptions.Contains("CheckCalSalaryState")) { var salaries = SalaryDao.GetSalaryByRefDateAndEmployId(mapper.RefDate, mapper.EmployeeId); if (salaries.Count > 0) { response.Acknowledge = AcknowledgeType.Success; response.Message = @"Nhân viên đã được tính lương !"; response.Salary = salaries[0]; return(response); } response.Message = null; } if (request.LoadOptions.Contains("CheckCalSalaryPostedState")) { var salaries = SalaryDao.GetSalaryPostedByRefDateAndEmployId(mapper.RefDate, mapper.EmployeeId); if (salaries.Count > 0) { response.Acknowledge = AcknowledgeType.Success; response.Message = @"Nhân viên đã được tính lương !"; response.Salary = salaries[0]; return(response); } response.Message = null; } if (request.LoadOptions.Contains("DeleteCalSalary")) { //foreach (var employee in mapper.Employees) //{ // mapper.EmployeeId = employee.EmployeeId; // response.SalaryId = SalaryDao.DeleteCalSalary(mapper); //} var depositEntity = new DepositEntity() { RefId = 0, RefTypeId = mapper.RefTypeId,// RefDate = mapper.RefDate, RefNo = mapper.RefNo, PostedDate = mapper.PostedDate, AccountingObjectType = 0, AccountingObjectId = null, Trader = "", CustomerId = null, VendorId = null, EmployeeId = null,// mapper.EmployeeId, BankAccountCode = "112", CurrencyCode = mapper.CurrencyCode, ExchangeRate = mapper.ExchangeRate, TotalAmountOc = 0, // employeePayItem.Amount, TotalAmountExchange = 0, // employeePayItem.Amount, JournalMemo = "Chứng từ lương tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, }; depositEntity.DepositDetails = new List <DepositDetailEntity>(); var cashEntity = new CashEntity() { RefId = 0, RefTypeId = mapper.RefTypeId,// RefNo = mapper.RefNo, RefDate = mapper.RefDate, PostedDate = mapper.PostedDate, AccountingObjectId = null, CustomerId = null, VendorId = null, Trader = "", CurrencyCode = mapper.CurrencyCode, ExchangeRate = mapper.ExchangeRate, TotalAmount = 0, TotalAmountExchange = 0, AccountNumber = "", JournalMemo = "Chứng từ lương tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, DocumentInclude = "", AccountingObjectType = 2, // CashDetails = cashDetails; EmployeeId = null, }; cashEntity.CashDetails = new List <CashDetailEntity>(); // var Cash foreach (var employee in mapper.Employees) { //Xóa EmployeePayroll mapper.EmployeeId = employee.EmployeeId; response.SalaryId = SalaryDao.DeleteCalSalary(mapper); //End Xóa EmployeePayroll //Từng nhân viên - từng khoảng lương - tiền tương ứng. IList <EmployeePayItemEntity> listPayItems = EmployeePayItemDao.GetEmployeePayItemsByEmployeeId(employee.EmployeeId); foreach (var employeePayItemEntity in listPayItems) { mapper.EmployeePayItemId = employeePayItemEntity.EmployeePayItemId; var payItems = PayItemDao.GetPayItem(employeePayItemEntity.PayItemId); //Chi if (payItems.CreditAccountCode.Substring(0, 3).Contains("111")) { // khởi tạo phieu chi chi tiết var cashDetailEntity = new CashDetailEntity() { RefDetailId = 0, RefId = 0, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, Description = payItems.PayItemName + " tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, AmountOc = employeePayItemEntity.Amount, AmountExchange = employeePayItemEntity.Amount / mapper.ExchangeRate, VoucherTypeId = null, BudgetSourceCode = payItems.BudgetSourceCode, BudgetItemCode = payItems.BudgetItemCode, AccountingObjectId = null, MergerFundId = null }; bool flag = false; for (int i = 0; i < cashEntity.CashDetails.Count; i++) { if (cashEntity.CashDetails[i].CorrespondingAccountNumber == cashDetailEntity.CorrespondingAccountNumber && cashEntity.CashDetails[i].AccountNumber == cashDetailEntity.AccountNumber && cashEntity.CashDetails[i].BudgetItemCode == cashDetailEntity.BudgetItemCode && cashEntity.CashDetails[i].BudgetSourceCode == cashDetailEntity.BudgetSourceCode) { cashEntity.CashDetails[i].AmountOc = cashEntity.CashDetails[i].AmountOc + cashDetailEntity.AmountOc; cashEntity.CashDetails[i].AmountExchange = cashEntity.CashDetails[i].AmountExchange + cashDetailEntity.AmountExchange; flag = true; // break; } } if (flag == false) { cashEntity.CashDetails.Add(cashDetailEntity); } //Tính lại TotalAmountOc - TotalAmountExchange cashEntity.TotalAmount = cashEntity.TotalAmount + cashDetailEntity.AmountOc; cashEntity.TotalAmountExchange = cashEntity.TotalAmountExchange + cashDetailEntity.AmountExchange; //Get Bank Acount cashEntity.AccountNumber = payItems.CreditAccountCode; } //Nợ if (payItems.CreditAccountCode.Substring(0, 3).Contains("112")) { var depositDetailEntity = new DepositDetailEntity() { RefDetailId = mapper.RefTypeId, RefId = 0, Description = payItems.PayItemName + " tháng " + mapper.RefDate.Month + "/" + mapper.RefDate.Year, AccountNumber = payItems.DebitAccountCode, CorrespondingAccountNumber = payItems.CreditAccountCode, AmountOc = employeePayItemEntity.Amount, AmountExchange = employeePayItemEntity.Amount / mapper.ExchangeRate, VoucherTypeId = 1, BudgetSourceCode = payItems.BudgetSourceCode, AccountingObjectId = null, BudgetItemCode = payItems.BudgetItemCode, // DepartmentId = mapper.DepartmentId, MergerFundId = null }; bool flag = false; for (int i = 0; i < depositEntity.DepositDetails.Count; i++) { if (depositEntity.DepositDetails[i].CorrespondingAccountNumber == depositDetailEntity.CorrespondingAccountNumber && depositEntity.DepositDetails[i].BudgetItemCode == depositDetailEntity.BudgetItemCode && depositEntity.DepositDetails[i].BudgetSourceCode == depositDetailEntity.BudgetSourceCode) { depositEntity.DepositDetails[i].AmountOc = depositEntity.DepositDetails[i].AmountOc + depositDetailEntity.AmountOc; depositEntity.DepositDetails[i].AmountExchange = depositEntity.DepositDetails[i].AmountExchange + depositDetailEntity.AmountExchange; flag = true; // break; } } if (flag == false) { depositEntity.DepositDetails.Add(depositDetailEntity); } //Tính lại TotalAmountOc - TotalAmountExchange depositEntity.TotalAmountOc = depositEntity.TotalAmountOc + depositDetailEntity.AmountOc; depositEntity.TotalAmountExchange = depositEntity.TotalAmountExchange + depositDetailEntity.AmountExchange; //Get bank Acount depositEntity.BankAccountCode = payItems.CreditAccountCode; } } } var cashRequest = new CashRequest(); var oCashFacade = new CashFacade(); cashRequest.Action = PersistType.Delete; var cashForDelete = CashDao.GetCashByRefdateAndReftype(cashEntity); if (cashForDelete != null) { cashRequest.RefId = cashForDelete.RefId; cashRequest.RefTypeId = cashForDelete.RefTypeId; // cashRequest.CashEntity = cashEntity; oCashFacade.SetCashes(cashRequest); } var depositRequest = new DepositRequest(); var oDepositFacade = new DepositFacade(); depositRequest.Action = PersistType.Delete; var depositForDelete = DepositDao.GetDepositByRefdateAndReftype(depositEntity); if (depositForDelete != null) { depositRequest.RefId = depositForDelete.RefId; depositRequest.RefType = depositForDelete.RefTypeId; // depositRequest.Deposit = depositEntity; oDepositFacade.SetDeposits(depositRequest); } } } catch (Exception ex) { response.Acknowledge = AcknowledgeType.Failure; response.Message = ex.Message; return(response); } response.Acknowledge = response.Message != null ? AcknowledgeType.Failure : AcknowledgeType.Success; return(response); }