private void CreateNewStore() { using (TransactionScope scope = new TransactionScope()) { Store st = new Store(); st.NAME = txtName.Text.Trim(); st.ADDRESS = txtAddress.Text.Trim(); st.CITY_ID = Convert.ToInt32(ddlCity.SelectedValue); st.PHONE = txtPhone.Text.Trim(); st.FAX = string.Empty; st.START_CAPITAL = Convert.ToDecimal(txtStartCapital.Text); //st.CURRENT_CAPITAL = Convert.ToDecimal(txtCurrentCapital.Text); //st.APPLY_DATE = Convert.ToDateTime(txtApplyDate.Text); //st.REVENUE_BEFORE_APPLY = Convert.ToDecimal(txtTotalRevenueBefore.Text); //st.TOTAL_COST_BEFORE = Convert.ToDecimal(txtTotalCostBefore.Text); //st.TOTAL_INVESMENT_BEFORE = Convert.ToDecimal(txtTotalInvesmentBefore.Text); st.REGISTER_DATE = Convert.ToDateTime(txtRegisterDate.Text); st.ACTIVE = rdbActive.Checked; st.NOTE = txtNote.Text.Trim(); st.SEARCH_TEXT = string.Format("{0} {1} {2}", st.NAME, st.ADDRESS, st.PHONE); using (var rb = new RentBikeEntities()) { rb.Stores.Add(st); rb.SaveChanges(); } using (var rb1 = new RentBikeEntities()) { var item = rb1.InOutTypes.FirstOrDefault(s =>s.NAME == "Nhập vốn"); InOut io = new InOut(); io.IN_AMOUNT = Convert.ToDecimal(txtStartCapital.Text.Replace(",", string.Empty)); io.OUT_AMOUNT = 0; io.CONTRACT_ID = -1; io.PERIOD_ID = -1; io.RENT_TYPE_ID = -1; io.PERIOD_DATE = DateTime.Now; io.MORE_INFO = "Vốn đầu tư ban đầu khi đăng ký cửa hàng"; io.STORE_ID = st.ID; io.INOUT_TYPE_ID = item.ID; io.INOUT_DATE = DateTime.Now; io.SEARCH_TEXT = string.Format("{0} {1} ngày {2}", io.MORE_INFO, io.IN_AMOUNT, io.INOUT_DATE); rb1.InOuts.Add(io); rb1.SaveChanges(); StoreFee sf = new StoreFee(); sf.STORE_ID = st.ID; sf.FEE_PERCENT = 0; rb1.StoreFees.Add(sf); rb1.SaveChanges(); } WriteLog(Constants.ACTION_CREATE_STORE, false); scope.Complete(); } }
protected void btnSave_Click(object sender, EventArgs e) { // SAVE INOUT int periodId = Convert.ToInt32(Request.QueryString["ID"]); using (var db = new RentBikeEntities()) { if (!string.IsNullOrEmpty(txtIncome.Text)) { var pp = db.PayPeriods.FirstOrDefault(s => s.ID == periodId); pp.ACTUAL_PAY = Convert.ToDecimal(txtIncome.Text) + pp.ACTUAL_PAY; db.SaveChanges(); var contract = db.Contracts.FirstOrDefault(c => c.ID == pp.CONTRACT_ID && c.CONTRACT_STATUS == true); List <PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == pp.CONTRACT_ID).ToList(); decimal totalActualPay = payList.Select(c => c.ACTUAL_PAY).DefaultIfEmpty(0).Sum(); decimal totalPlanPay = payList.Select(c => c.AMOUNT_PER_PERIOD).DefaultIfEmpty(0).Sum(); if (totalActualPay > totalPlanPay) { CommonList.CreatePayPeriod(db, contract.ID, payList.LastOrDefault(), false); } InOut io = new InOut(); io.IN_AMOUNT = Convert.ToDecimal(txtIncome.Text); io.OUT_AMOUNT = 0; io.CONTRACT_ID = pp.CONTRACT_ID; io.PERIOD_ID = pp.ID; io.RENT_TYPE_ID = contract.RENT_TYPE_ID; io.INOUT_TYPE_ID = Convert.ToInt32(ddInOutType.SelectedValue); io.PERIOD_DATE = pp.PAY_DATE; io.MORE_INFO = txtMoreInfo.Text.Trim(); io.STORE_ID = Convert.ToInt32(Session["store_id"]); io.SEARCH_TEXT = string.Format("{0} ", io.MORE_INFO); io.INOUT_DATE = DateTime.Now; io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io); db.SaveChanges(); var customer = db.Customers.FirstOrDefault(c => c.ID == contract.CUSTOMER_ID); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện thu phí kỳ hạn ngày {2} của hợp đồng {3} số tiền {4} vào lúc {5}", Convert.ToString(Session["username"]), STORE_NAME, pp.PAY_DATE.ToString("dd/MM/yyyy"), customer.NAME, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); Response.Redirect("FormContractUpdate.aspx?ID=" + pp.CONTRACT_ID, false); } } }
protected void btnSave_Click(object sender, EventArgs e) { // SAVE INOUT int periodId = Convert.ToInt32(Request.QueryString["ID"]); using (var db = new RentBikeEntities()) { if (!string.IsNullOrEmpty(txtIncome.Text)) { var pp = db.PayPeriods.FirstOrDefault(s => s.ID == periodId); pp.ACTUAL_PAY = Convert.ToDecimal(txtIncome.Text) + pp.ACTUAL_PAY; db.SaveChanges(); var contract = db.Contracts.FirstOrDefault(c => c.ID == pp.CONTRACT_ID && c.CONTRACT_STATUS == true); List<PayPeriod> payList = db.PayPeriods.Where(c => c.CONTRACT_ID == pp.CONTRACT_ID).ToList(); decimal totalActualPay = payList.Select(c => c.ACTUAL_PAY).DefaultIfEmpty(0).Sum(); decimal totalPlanPay = payList.Select(c => c.AMOUNT_PER_PERIOD).DefaultIfEmpty(0).Sum(); if (totalActualPay > totalPlanPay) { CommonList.CreatePayPeriod(db, contract.ID, payList.LastOrDefault(), false); } InOut io = new InOut(); io.IN_AMOUNT = Convert.ToDecimal(txtIncome.Text); io.OUT_AMOUNT = 0; io.CONTRACT_ID = pp.CONTRACT_ID; io.PERIOD_ID = pp.ID; io.RENT_TYPE_ID = contract.RENT_TYPE_ID; io.INOUT_TYPE_ID = Convert.ToInt32(ddInOutType.SelectedValue); io.PERIOD_DATE = pp.PAY_DATE; io.MORE_INFO = txtMoreInfo.Text.Trim(); io.STORE_ID = Convert.ToInt32(Session["store_id"]); io.SEARCH_TEXT = string.Format("{0} ", io.MORE_INFO); io.INOUT_DATE = DateTime.Now; io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io); db.SaveChanges(); var customer = db.Customers.FirstOrDefault(c => c.ID == contract.CUSTOMER_ID); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện thu phí kỳ hạn ngày {2} của hợp đồng {3} số tiền {4} vào lúc {5}", Convert.ToString(Session["username"]), STORE_NAME, pp.PAY_DATE.ToString("dd/MM/yyyy"), customer.NAME, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); Response.Redirect("FormContractUpdate.aspx?ID=" + pp.CONTRACT_ID, false); } } }
protected void btnSave_Click(object sender, EventArgs e) { using (TransactionScope trans = new TransactionScope()) { int contractId = Convert.ToInt32(Request.QueryString["ID"]); using (var db = new RentBikeEntities()) { var con = db.CONTRACT_FULL_VW.FirstOrDefault(c => c.ID == contractId && c.ACTIVE == true); string closedContractName = string.Empty; switch (con.RENT_TYPE_ID) { case 1: closedContractName = "Thanh lý thuê xe"; break; case 2: closedContractName = "Thanh lý thuê thiết bị"; break; default: closedContractName = "Thanh lý thuê khác"; break; } // INOUT --> IN amount InOut io1 = new InOut(); io1.IN_AMOUNT = con.CONTRACT_AMOUNT; io1.OUT_AMOUNT = 0; io1.CONTRACT_ID = con.ID; io1.PERIOD_ID = -1; io1.PERIOD_DATE = new DateTime(1, 1, 1); io1.RENT_TYPE_ID = con.RENT_TYPE_ID; var item = db.InOutTypes.FirstOrDefault(s => s.NAME == "Thanh lý"); io1.INOUT_TYPE_ID = item.ID; io1.MORE_INFO = txtMoreInfo.Text.Trim(); io1.STORE_ID = con.STORE_ID; io1.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, closedContractName, txtMoreInfo.Text.Trim()); io1.INOUT_DATE = DateTime.Now; io1.CREATED_BY = Session["username"].ToString(); io1.CREATED_DATE = DateTime.Now; io1.UPDATED_BY = Session["username"].ToString(); io1.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io1); // IN --> Rent Fee if (!string.IsNullOrEmpty(txtRealIncome.Text)) { decimal realInAmount = Convert.ToDecimal(txtRealIncome.Text.Replace(",", string.Empty)); if (realInAmount > 0) { InOut io2 = new InOut(); string feeName = string.Empty; switch (con.RENT_TYPE_NAME) { case "Cho thuê xe": feeName = "Phí thuê xe"; break; case "Cho thuê thiết bị văn phòng": feeName = "Phí thuê thiết bị"; break; case "Cho thuê mặt hàng khác": feeName = "Phí khác"; break; } item = db.InOutTypes.First(s => s.NAME == feeName); io2.INOUT_TYPE_ID = item.ID; io2.RENT_TYPE_ID = con.RENT_TYPE_ID; io2.CONTRACT_ID = con.ID; io2.IN_AMOUNT = realInAmount; io2.OUT_AMOUNT = 0; io2.MORE_INFO = txtMoreInfo.Text; io2.PERIOD_DATE = DateTime.Now; io2.STORE_ID = con.STORE_ID; io2.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, feeName, txtMoreInfo.Text.Trim()); io2.INOUT_DATE = DateTime.Now; io2.CREATED_BY = Session["username"].ToString(); io2.CREATED_DATE = DateTime.Now; io2.UPDATED_BY = Session["username"].ToString(); io2.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io2); } } //Out --> Return redundant fee if the client comes before deadline date. if (!string.IsNullOrEmpty(txtReduceAmount.Text)) { decimal reduceAmount = Convert.ToDecimal(txtReduceAmount.Text.Replace(",", string.Empty)); if (reduceAmount > 0) { InOut io3 = new InOut(); item = db.InOutTypes.FirstOrDefault(s => s.NAME == "Trả lại phí thừa"); io3.INOUT_TYPE_ID = item.ID; io3.RENT_TYPE_ID = con.RENT_TYPE_ID; io3.CONTRACT_ID = con.ID; io3.IN_AMOUNT = 0; io3.OUT_AMOUNT = reduceAmount; io3.RENT_TYPE_ID = con.RENT_TYPE_ID; io3.MORE_INFO = txtMoreInfo.Text.Trim(); io3.PERIOD_DATE = DateTime.Now; io3.STORE_ID = con.STORE_ID; io3.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, "Trả lại phí thừa", txtMoreInfo.Text.Trim()); io3.INOUT_DATE = DateTime.Now; io3.CREATED_BY = Session["username"].ToString(); io3.CREATED_DATE = DateTime.Now; io3.UPDATED_BY = Session["username"].ToString(); io3.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io3); } } db.SaveChanges(); // Writelog string rentTypeNameClosed = string.Empty; switch (con.RENT_TYPE_ID) { case 1: rentTypeNameClosed = "thuê xe"; break; case 2: rentTypeNameClosed = "thuê thiết bị"; break; default: rentTypeNameClosed = "thuê khác"; break; } var customer = db.Customers.FirstOrDefault(c => c.ID == con.CUSTOMER_ID); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện thanh lý hợp đồng {2} của khách hàng {3} vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, rentTypeNameClosed, customer.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CLOSE_CONTRACT, message, false); } using (var db = new RentBikeEntities()) { // Update status contract var con = db.Contracts.FirstOrDefault(c => c.ID == contractId); con.CONTRACT_STATUS = false; con.CLOSE_CONTRACT_DATE = DateTime.Now; // Insert History row ContractHistory ch = new ContractHistory(); ch.CONTRACT_ID = con.ID; ch.CONTRACT_NO = con.CONTRACT_NO; ch.CUSTOMER_ID = con.CUSTOMER_ID; ch.CONTRACT_AMOUNT = con.CONTRACT_AMOUNT; ch.DETAIL = con.DETAIL; ch.RENT_DATE = con.RENT_DATE; ch.END_DATE = con.END_DATE; ch.FEE_PER_DAY = con.FEE_PER_DAY; ch.ITEM_LICENSE_NO = con.ITEM_LICENSE_NO; ch.ITEM_TYPE = con.ITEM_TYPE; ch.NOTE = con.NOTE; ch.REFERENCE_NAME = con.REFERENCE_NAME; ch.RENT_TYPE_ID = con.RENT_TYPE_ID; ch.SERIAL_1 = con.SERIAL_1; ch.SERIAL_2 = con.SERIAL_2; ch.STORE_ID = con.STORE_ID; ch.SEARCH_TEXT = con.SEARCH_TEXT; ch.PAY_FEE_MESSAGE = string.Empty; ch.CLOSE_CONTRACT_DATE = DateTime.Now; ch.REFERENCE_PHONE = con.REFERENCE_PHONE; ch.SCHOOL_NAME = con.SCHOOL_NAME; ch.CLASS_NAME = con.CLASS_NAME; ch.IMPLEMENTER = con.IMPLEMENTER; ch.BACK_TO_DOCUMENTS = con.BACK_TO_DOCUMENTS; ch.PHOTO_1 = con.PHOTO_1; ch.THUMBNAIL_PHOTO_1 = con.THUMBNAIL_PHOTO_1; ch.PHOTO_2 = con.PHOTO_2; ch.THUMBNAIL_PHOTO_2 = con.THUMBNAIL_PHOTO_2; ch.PHOTO_3 = con.PHOTO_3; ch.THUMBNAIL_PHOTO_3 = con.THUMBNAIL_PHOTO_3; ch.PHOTO_4 = con.PHOTO_4; ch.THUMBNAIL_PHOTO_4 = con.THUMBNAIL_PHOTO_4; ch.PHOTO_5 = con.PHOTO_5; ch.THUMBNAIL_PHOTO_5 = con.THUMBNAIL_PHOTO_5; ch.CREATED_BY = Session["username"].ToString(); ch.CREATED_DATE = DateTime.Now; ch.UPDATED_BY = Session["username"].ToString(); ch.UPDATED_DATE = DateTime.Now; if (CommonList.IsBadContract(db, contractId)) { con.IS_BAD_CONTRACT = ch.IS_BAD_CONTRACT = true; } db.ContractHistories.Add(ch); db.SaveChanges(); trans.Complete(); } } Response.Redirect("FormContractManagement.aspx"); }
protected void btnSave_Click(object sender, EventArgs e) { string result = ValidateFields(); if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } using (TransactionScope ts = new TransactionScope()) { using (var db = new RentBikeEntities()) { string message = string.Empty; InOut io = db.InOuts.FirstOrDefault(c =>c.ID == inOutId); if (io == null) { io = new InOut(); io.INOUT_TYPE_ID = Convert.ToInt32(ddlInOutFee.SelectedValue); io.MORE_INFO = txtMoreInfo.Text.Trim(); io.CONTRACT_ID = -1; io.PERIOD_ID = -1; io.RENT_TYPE_ID = -1; io.PERIOD_DATE = new DateTime(1, 1, 1); if (ddlStore.Enabled == false) { io.STORE_ID = STORE_ID; } else { io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } var item = db.InOutTypes.FirstOrDefault(s =>s.ID == io.INOUT_TYPE_ID); if (item.IS_INCOME) { io.IN_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); io.OUT_AMOUNT = 0; message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } else { io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } io.INOUT_DATE = Convert.ToDateTime(txtFeeDate.Text); io.SEARCH_TEXT = string.Format("{0} {1} {2}", io.INOUT_DATE, io.MORE_INFO, item.NAME); io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); } else { io.INOUT_TYPE_ID = Convert.ToInt32(ddlInOutFee.SelectedValue); io.INOUT_DATE = Convert.ToDateTime(txtFeeDate.Text); io.MORE_INFO = txtMoreInfo.Text.Trim(); if (ddlStore.Enabled == false) { io.STORE_ID = Convert.ToInt32(Session["store_id"]); } else { io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } var item = db.InOutTypes.FirstOrDefault(s =>s.ID == io.INOUT_TYPE_ID); if (item.IS_INCOME) { io.IN_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); io.OUT_AMOUNT = 0; message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } else { io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } io.SEARCH_TEXT = string.Format("{0} {1} {2}", io.INOUT_DATE, io.MORE_INFO, item.NAME); io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); } db.SaveChanges(); } ts.Complete(); } Response.Redirect("FormDailyIncomeOutcome.aspx", false); }
protected void btnSave_Click(object sender, EventArgs e) { string result = ValidateFields(); if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } using (TransactionScope ts = new TransactionScope()) { using (var db = new RentBikeEntities()) { string message = string.Empty; InOut io = db.InOuts.FirstOrDefault(c => c.ID == inOutId); if (io == null) { io = new InOut(); io.INOUT_TYPE_ID = Convert.ToInt32(ddlInOutFee.SelectedValue); io.MORE_INFO = txtMoreInfo.Text.Trim(); io.CONTRACT_ID = -1; io.PERIOD_ID = -1; io.RENT_TYPE_ID = -1; io.PERIOD_DATE = new DateTime(1, 1, 1); if (ddlStore.Enabled == false) { io.STORE_ID = STORE_ID; } else { io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } var item = db.InOutTypes.FirstOrDefault(s => s.ID == io.INOUT_TYPE_ID); if (item.IS_INCOME) { io.IN_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); io.OUT_AMOUNT = 0; message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } else { io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } io.INOUT_DATE = Convert.ToDateTime(txtFeeDate.Text); io.SEARCH_TEXT = string.Format("{0} {1} {2}", io.INOUT_DATE, io.MORE_INFO, item.NAME); io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); } else { io.INOUT_TYPE_ID = Convert.ToInt32(ddlInOutFee.SelectedValue); io.INOUT_DATE = Convert.ToDateTime(txtFeeDate.Text); io.MORE_INFO = txtMoreInfo.Text.Trim(); if (ddlStore.Enabled == false) { io.STORE_ID = Convert.ToInt32(Session["store_id"]); } else { io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } var item = db.InOutTypes.FirstOrDefault(s => s.ID == io.INOUT_TYPE_ID); if (item.IS_INCOME) { io.IN_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); io.OUT_AMOUNT = 0; message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } else { io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtFeeAmount.Text.Trim()); message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa {2} ({3}) vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, ddlInOutFee.SelectedItem.Text, Helper.FormatedAsCurrency(io.IN_AMOUNT), DateTime.Now); } io.SEARCH_TEXT = string.Format("{0} {1} {2}", io.INOUT_DATE, io.MORE_INFO, item.NAME); io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_INOUT, message, false); } db.SaveChanges(); } ts.Complete(); } Response.Redirect("FormDailyIncomeOutcome.aspx", false); }
protected void btnSave_Click(object sender, EventArgs e) { try { using (TransactionScope ts = new TransactionScope()) { string id = Request.QueryString["ID"]; string copy = Request.QueryString["copy"]; string result = ValidateFields(); int cusid = 0; if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } if (string.IsNullOrEmpty(id) || (!string.IsNullOrEmpty(copy) && copy == "1")) // NEW { Contract contract = CommonList.GetContractByLicenseNo(txtLicenseNumber.Text.Trim()); if (contract != null) { // Initialize StringWriter instance. StringWriter stringWriter = new StringWriter(); // Put HtmlTextWriter in using block because it needs to call Dispose. using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter)) { writer.Write("Số CMTND/GPLX này hiện tại đã đăng ký hợp đồng "); writer.AddAttribute(HtmlTextWriterAttribute.Href, string.Format("FormContractUpdate.aspx?ID={0}&sID={1}", contract.ID, contract.STORE_ID)); writer.RenderBeginTag(HtmlTextWriterTag.A); // Start of A writer.Write(contract.CONTRACT_NO); writer.RenderEndTag(); //End of A lblMessage.Text = stringWriter.ToString(); return; } } Customer cusItem = null; using (var db = new RentBikeEntities()) { bool IsNewCust = false; cusItem = db.Customers.FirstOrDefault(c => c.LICENSE_NO == txtLicenseNumber.Text.Trim() && c.NAME == txtCustomerName.Text.Trim()); if (cusItem == null) { IsNewCust = true; cusItem = new Customer(); } cusItem.NAME = txtCustomerName.Text.Trim(); cusItem.BIRTH_DAY = DateTime.ParseExact(txtBirthDay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_NO = txtLicenseNumber.Text.Trim(); cusItem.LICENSE_RANGE_DATE = DateTime.ParseExact(txtRangeDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_RANGE_PLACE = txtPlaceDate.Text.Trim(); cusItem.PHONE = txtPhone.Text.Trim(); cusItem.PERMANENT_RESIDENCE = txtPermanentResidence.Text.Trim(); cusItem.CURRENT_RESIDENCE = txtCurrentResidence.Text.Trim(); if (IsNewCust) { db.Customers.Add(cusItem); } db.SaveChanges(); cusid = cusItem.ID; } // New Contract Contract item = new Contract(); item.RENT_TYPE_ID = Convert.ToInt32(ddlRentType.SelectedValue); item.FEE_PER_DAY = Math.Round(Convert.ToDecimal(txtFeePerDay.Text.Replace(",", string.Empty))); if (!string.IsNullOrEmpty(txtRentDate.Text)) { item.RENT_DATE = DateTime.ParseExact(txtRentDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } else item.RENT_DATE = DateTime.Now; if (!string.IsNullOrEmpty(txtEndDate.Text)) { item.END_DATE = DateTime.ParseExact(txtEndDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } else item.END_DATE = item.RENT_DATE.AddDays(29); item.EXTEND_END_DATE = item.END_DATE; item.CLOSE_CONTRACT_DATE = new DateTime(1, 1, 1); item.PAY_FEE_MESSAGE = string.Empty; item.NOTE = txtNote.Text; item.REFERENCE_ID = -1; item.REFERENCE_NAME = txtReferencePerson.Text.Trim(); item.ITEM_TYPE = txtItemName.Text.Trim(); item.ITEM_LICENSE_NO = txtItemLicenseNo.Text.Trim(); item.SERIAL_1 = txtSerial1.Text.Trim(); item.SERIAL_2 = txtSerial2.Text.Trim(); item.REFERENCE_PHONE = txtReferencePhone.Text.Trim(); item.SCHOOL_NAME = txtSchool.Text.Trim(); item.CLASS_NAME = txtClass.Text.Trim(); item.IMPLEMENTER = txtImplementer.Text.Trim(); item.BACK_TO_DOCUMENTS = txtBackDocument.Text.Trim(); item.DETAIL = txtItemDetail.Text.Trim(); item.CUSTOMER_ID = cusid; item.CONTRACT_STATUS = true; item.CONTRACT_AMOUNT = Convert.ToDecimal(txtAmount.Text.Replace(",", string.Empty)); item.CREATED_BY = Session["username"].ToString(); item.CREATED_DATE = DateTime.Now; item.UPDATED_BY = Session["username"].ToString(); item.UPDATED_DATE = DateTime.Now; //item.CONTRACT_NO = txtContractNo.Text.Trim(); if (ddlStore.Enabled == true) item.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); else item.STORE_ID = Convert.ToInt32(Session["store_id"]); item.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}", txtCustomerName.Text.Trim(), txtBirthDay.Text.Trim(), txtLicenseNumber.Text.Trim(), txtRangeDate.Text.Trim(), txtPermanentResidence.Text.Trim(), txtCurrentResidence.Text.Trim(), txtPhone.Text.Trim(), item.CONTRACT_NO, item.RENT_DATE.ToString("dd/MM/yyyy")); SavePhoto(item); using (var db = new RentBikeEntities()) { db.Contracts.Add(item); db.SaveChanges(); DateTime periodTime = DateTime.Today; if (!string.IsNullOrEmpty(txtRentDate.Text)) { periodTime = DateTime.ParseExact(txtRentDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } PayPeriod newPeriod = new PayPeriod(); newPeriod.PAY_DATE = periodTime; CommonList.CreatePayPeriod(db, item.ID, newPeriod, true); } InOut io = new InOut(); io.CONTRACT_ID = item.ID; io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtAmount.Text); io.RENT_TYPE_ID = Convert.ToInt32(ddlRentType.SelectedValue); io.PERIOD_DATE = DateTime.Now; io.MORE_INFO = string.Format("Cho khách {0} thuê: {1} ngày {2} trị giá {3}", txtCustomerName.Text.Trim(), txtItemName.Text.Trim(), DateTime.Now.ToString("dd/MM/yyyy"), txtAmount.Text.Trim()); if (ddlStore.Enabled == true) io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); else io.STORE_ID = Convert.ToInt32(Session["store_id"]); io.SEARCH_TEXT = string.Format("{0} ", io.MORE_INFO); io.INOUT_DATE = DateTime.Now; io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; io.INOUT_TYPE_ID = CommonList.GetInoutTypeFromRentType(Helper.parseInt(ddlRentType.SelectedValue)); using (var rbdb = new RentBikeEntities()) { rbdb.InOuts.Add(io); rbdb.SaveChanges(); CommonList.AutoExtendPeriod(rbdb, item.ID); } string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện làm hợp đồng cho khách hàng {2} vào lúc {3}", Convert.ToString(Session["username"]), STORE_NAME, cusItem.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_CONTRACT, message, false); ts.Complete(); } else // EDIT { result = ValidatePermission(); if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } int contractId = Helper.parseInt(id); bool bUpdateInOutAndPeriod = false; using (var db = new RentBikeEntities()) { var item = db.Contracts.FirstOrDefault(itm => itm.ID == contractId); int rentTypeId = Helper.parseInt(ddlRentType.SelectedValue); decimal contractAmount = Convert.ToDecimal(txtAmount.Text); decimal feePerDay = Convert.ToDecimal(txtFeePerDay.Text); if (contractAmount != item.CONTRACT_AMOUNT || rentTypeId != item.RENT_TYPE_ID || feePerDay != item.FEE_PER_DAY) bUpdateInOutAndPeriod = true; if (bUpdateInOutAndPeriod) { //Update for contract record only. int inOutTypeId = CommonList.GetInoutTypeFromRentType(item.RENT_TYPE_ID); var inOut = db.InOuts.FirstOrDefault(c => c.CONTRACT_ID == contractId && c.INOUT_TYPE_ID == inOutTypeId); if (inOut != null) { // SAVE INOUT inOut.OUT_AMOUNT = contractAmount; inOut.RENT_TYPE_ID = rentTypeId; inOut.INOUT_TYPE_ID = CommonList.GetInoutTypeFromRentType(rentTypeId); inOut.MORE_INFO = inOut.SEARCH_TEXT = string.Format("Cho khách {0} thuê: {1} ngày {2} trị giá {3}", txtCustomerName.Text.Trim(), txtItemName.Text.Trim(), DateTime.Now.ToString("dd/MM/yyyy"), txtAmount.Text.Trim()); inOut.UPDATED_BY = Session["username"].ToString(); inOut.UPDATED_DATE = DateTime.Now; } //Update for others in out record of the contract var listInOut = db.InOuts.Where(c => c.CONTRACT_ID == contractId && c.RENT_TYPE_ID == item.RENT_TYPE_ID).ToList(); foreach (var io in listInOut) { io.RENT_TYPE_ID = rentTypeId; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; } //Update for 3 first PayPeriod records List<PayPeriod> listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contractId).ToList(); foreach (var pp in listPayPeriod.Take(3)) { pp.AMOUNT_PER_PERIOD = feePerDay * 10; } //Update for remain PayPeriod records int multipleFee = Convert.ToInt32(Decimal.Floor(contractAmount / 100000)); decimal increateFeeCar = (feePerDay * 10) + (multipleFee * 50 * 10); decimal increateFeeEquip = (feePerDay * 10) + (multipleFee * 100 * 10); decimal increateFeeOther = (feePerDay * 10); foreach (var pp in listPayPeriod.Skip(3)) { switch (rentTypeId) { case 1: if (((feePerDay / multipleFee) * 10) < 4000) pp.AMOUNT_PER_PERIOD = increateFeeCar; else pp.AMOUNT_PER_PERIOD = feePerDay * 10; break; case 2: if (((feePerDay / multipleFee) * 10) < 6000) pp.AMOUNT_PER_PERIOD = increateFeeEquip; else pp.AMOUNT_PER_PERIOD = feePerDay * 10; break; default: pp.AMOUNT_PER_PERIOD = increateFeeOther; break; } } } //Update contract infor item.NOTE = txtNote.Text; item.REFERENCE_ID = -1; item.REFERENCE_NAME = txtReferencePerson.Text.Trim(); item.ITEM_TYPE = txtItemName.Text.Trim(); item.ITEM_LICENSE_NO = txtItemLicenseNo.Text.Trim(); item.RENT_TYPE_ID = Helper.parseInt(ddlRentType.SelectedValue); item.CONTRACT_AMOUNT = Convert.ToDecimal(txtAmount.Text); item.FEE_PER_DAY = Convert.ToDecimal(txtFeePerDay.Text); item.SERIAL_1 = txtSerial1.Text.Trim(); item.SERIAL_2 = txtSerial2.Text.Trim(); item.REFERENCE_PHONE = txtReferencePhone.Text.Trim(); item.SCHOOL_NAME = txtSchool.Text.Trim(); item.CLASS_NAME = txtClass.Text.Trim(); item.IMPLEMENTER = txtImplementer.Text.Trim(); item.BACK_TO_DOCUMENTS = txtBackDocument.Text.Trim(); item.DETAIL = txtItemDetail.Text.Trim(); item.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}", txtCustomerName.Text.Trim(), txtBirthDay.Text.Trim(), txtLicenseNumber.Text.Trim(), txtRangeDate.Text.Trim(), txtPermanentResidence.Text.Trim(), txtCurrentResidence.Text.Trim(), txtPhone.Text.Trim(), item.CONTRACT_NO, item.RENT_DATE.ToString("dd/MM/yyyy")); item.UPDATED_BY = Session["username"].ToString(); item.UPDATED_DATE = DateTime.Now; //Contract photo SavePhoto(item); //Update customer infor var cusItem = db.Customers.FirstOrDefault(c => c.ID == item.CUSTOMER_ID); if (cusItem != null) { cusItem.NAME = txtCustomerName.Text.Trim(); cusItem.BIRTH_DAY = DateTime.ParseExact(txtBirthDay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_NO = txtLicenseNumber.Text.Trim(); cusItem.LICENSE_RANGE_DATE = DateTime.ParseExact(txtRangeDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_RANGE_PLACE = txtPlaceDate.Text.Trim(); cusItem.PHONE = txtPhone.Text.Trim(); cusItem.PERMANENT_RESIDENCE = txtPermanentResidence.Text.Trim(); cusItem.CURRENT_RESIDENCE = txtCurrentResidence.Text.Trim(); } db.SaveChanges(); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa hợp đồng của khách hàng {2} vào lúc {3}", Convert.ToString(Session["username"]), STORE_NAME, cusItem.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_UPDATE_CONTRACT, message, false); } ts.Complete(); } Response.Redirect("FormContractManagement.aspx", false); } } catch (Exception ex) { lblMessage.Text = ex.Message; lblMessage.CssClass = "text-center text-danger"; Logger.Log(ex.Message); } }
protected void btnSave_Click(object sender, EventArgs e) { using (TransactionScope trans = new TransactionScope()) { int contractId = Convert.ToInt32(Request.QueryString["ID"]); using (var db = new RentBikeEntities()) { var con = db.CONTRACT_FULL_VW.FirstOrDefault(c => c.ID == contractId && c.ACTIVE == true); string closedContractName = string.Empty; switch (con.RENT_TYPE_ID) { case 1: closedContractName = "Thanh lý thuê xe"; break; case 2: closedContractName = "Thanh lý thuê thiết bị"; break; default: closedContractName = "Thanh lý thuê khác"; break; } // INOUT --> IN amount InOut io1 = new InOut(); io1.IN_AMOUNT = con.CONTRACT_AMOUNT; io1.OUT_AMOUNT = 0; io1.CONTRACT_ID = con.ID; io1.PERIOD_ID = -1; io1.PERIOD_DATE = new DateTime(1, 1, 1); io1.RENT_TYPE_ID = con.RENT_TYPE_ID; var item = db.InOutTypes.FirstOrDefault(s =>s.NAME == "Thanh lý"); io1.INOUT_TYPE_ID = item.ID; io1.MORE_INFO = txtMoreInfo.Text.Trim(); io1.STORE_ID = con.STORE_ID; io1.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, closedContractName, txtMoreInfo.Text.Trim()); io1.INOUT_DATE = DateTime.Now; io1.CREATED_BY = Session["username"].ToString(); io1.CREATED_DATE = DateTime.Now; io1.UPDATED_BY = Session["username"].ToString(); io1.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io1); // IN --> Rent Fee if (!string.IsNullOrEmpty(txtRealIncome.Text)) { decimal realInAmount = Convert.ToDecimal(txtRealIncome.Text.Replace(",", string.Empty)); if (realInAmount > 0) { InOut io2 = new InOut(); string feeName = string.Empty; switch (con.RENT_TYPE_NAME) { case "Cho thuê xe": feeName = "Phí thuê xe"; break; case "Cho thuê thiết bị văn phòng": feeName = "Phí thuê thiết bị"; break; case "Cho thuê mặt hàng khác": feeName = "Phí khác"; break; } item = db.InOutTypes.First(s =>s.NAME == feeName); io2.INOUT_TYPE_ID = item.ID; io2.RENT_TYPE_ID = con.RENT_TYPE_ID; io2.CONTRACT_ID = con.ID; io2.IN_AMOUNT = realInAmount; io2.OUT_AMOUNT = 0; io2.MORE_INFO = txtMoreInfo.Text; io2.PERIOD_DATE = DateTime.Now; io2.STORE_ID = con.STORE_ID; io2.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, feeName, txtMoreInfo.Text.Trim()); io2.INOUT_DATE = DateTime.Now; io2.CREATED_BY = Session["username"].ToString(); io2.CREATED_DATE = DateTime.Now; io2.UPDATED_BY = Session["username"].ToString(); io2.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io2); } } //Out --> Return redundant fee if the client comes before deadline date. if (!string.IsNullOrEmpty(txtReduceAmount.Text)) { decimal reduceAmount = Convert.ToDecimal(txtReduceAmount.Text.Replace(",", string.Empty)); if (reduceAmount > 0) { InOut io3 = new InOut(); item = db.InOutTypes.FirstOrDefault(s =>s.NAME == "Trả lại phí thừa"); io3.INOUT_TYPE_ID = item.ID; io3.RENT_TYPE_ID = con.RENT_TYPE_ID; io3.CONTRACT_ID = con.ID; io3.IN_AMOUNT = 0; io3.OUT_AMOUNT = reduceAmount; io3.RENT_TYPE_ID = con.RENT_TYPE_ID; io3.MORE_INFO = txtMoreInfo.Text.Trim(); io3.PERIOD_DATE = DateTime.Now; io3.STORE_ID = con.STORE_ID; io3.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4}", con.CONTRACT_NO, con.CUSTOMER_NAME, con.STORE_NAME, "Trả lại phí thừa", txtMoreInfo.Text.Trim()); io3.INOUT_DATE = DateTime.Now; io3.CREATED_BY = Session["username"].ToString(); io3.CREATED_DATE = DateTime.Now; io3.UPDATED_BY = Session["username"].ToString(); io3.UPDATED_DATE = DateTime.Now; db.InOuts.Add(io3); } } db.SaveChanges(); // Writelog string rentTypeNameClosed = string.Empty; switch (con.RENT_TYPE_ID) { case 1: rentTypeNameClosed = "thuê xe"; break; case 2: rentTypeNameClosed = "thuê thiết bị"; break; default: rentTypeNameClosed = "thuê khác"; break; } var customer = db.Customers.FirstOrDefault(c => c.ID == con.CUSTOMER_ID); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện thanh lý hợp đồng {2} của khách hàng {3} vào lúc {4}", Convert.ToString(Session["username"]), STORE_NAME, rentTypeNameClosed, customer.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CLOSE_CONTRACT, message, false); } using (var db = new RentBikeEntities()) { // Update status contract var con = db.Contracts.FirstOrDefault(c =>c.ID == contractId); con.CONTRACT_STATUS = false; con.CLOSE_CONTRACT_DATE = DateTime.Now; // Insert History row ContractHistory ch = new ContractHistory(); ch.CONTRACT_ID = con.ID; ch.CONTRACT_NO = con.CONTRACT_NO; ch.CUSTOMER_ID = con.CUSTOMER_ID; ch.CONTRACT_AMOUNT = con.CONTRACT_AMOUNT; ch.DETAIL = con.DETAIL; ch.RENT_DATE = con.RENT_DATE; ch.END_DATE = con.END_DATE; ch.FEE_PER_DAY = con.FEE_PER_DAY; ch.ITEM_LICENSE_NO = con.ITEM_LICENSE_NO; ch.ITEM_TYPE = con.ITEM_TYPE; ch.NOTE = con.NOTE; ch.REFERENCE_NAME = con.REFERENCE_NAME; ch.RENT_TYPE_ID = con.RENT_TYPE_ID; ch.SERIAL_1 = con.SERIAL_1; ch.SERIAL_2 = con.SERIAL_2; ch.STORE_ID = con.STORE_ID; ch.SEARCH_TEXT = con.SEARCH_TEXT; ch.PAY_FEE_MESSAGE = string.Empty; ch.CLOSE_CONTRACT_DATE = DateTime.Now; ch.REFERENCE_PHONE = con.REFERENCE_PHONE; ch.SCHOOL_NAME = con.SCHOOL_NAME; ch.CLASS_NAME = con.CLASS_NAME; ch.IMPLEMENTER = con.IMPLEMENTER; ch.BACK_TO_DOCUMENTS = con.BACK_TO_DOCUMENTS; ch.PHOTO_1 = con.PHOTO_1; ch.THUMBNAIL_PHOTO_1 = con.THUMBNAIL_PHOTO_1; ch.PHOTO_2 = con.PHOTO_2; ch.THUMBNAIL_PHOTO_2 = con.THUMBNAIL_PHOTO_2; ch.PHOTO_3 = con.PHOTO_3; ch.THUMBNAIL_PHOTO_3 = con.THUMBNAIL_PHOTO_3; ch.PHOTO_4 = con.PHOTO_4; ch.THUMBNAIL_PHOTO_4 = con.THUMBNAIL_PHOTO_4; ch.PHOTO_5 = con.PHOTO_5; ch.THUMBNAIL_PHOTO_5 = con.THUMBNAIL_PHOTO_5; ch.CREATED_BY = Session["username"].ToString(); ch.CREATED_DATE = DateTime.Now; ch.UPDATED_BY = Session["username"].ToString(); ch.UPDATED_DATE = DateTime.Now; if (CommonList.IsBadContract(db, contractId)) { con.IS_BAD_CONTRACT = ch.IS_BAD_CONTRACT = true; } db.ContractHistories.Add(ch); db.SaveChanges(); trans.Complete(); } } Response.Redirect("FormContractManagement.aspx"); }
protected void btnSave_Click(object sender, EventArgs e) { try { using (TransactionScope ts = new TransactionScope()) { string id = Request.QueryString["ID"]; string copy = Request.QueryString["copy"]; string result = ValidateFields(); int cusid = 0; if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } if (string.IsNullOrEmpty(id) || (!string.IsNullOrEmpty(copy) && copy == "1")) // NEW { Contract contract = CommonList.GetContractByLicenseNo(txtLicenseNumber.Text.Trim()); if (contract != null) { // Initialize StringWriter instance. StringWriter stringWriter = new StringWriter(); // Put HtmlTextWriter in using block because it needs to call Dispose. using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter)) { writer.Write("Số CMTND/GPLX này hiện tại đã đăng ký hợp đồng "); writer.AddAttribute(HtmlTextWriterAttribute.Href, string.Format("FormContractUpdate.aspx?ID={0}&sID={1}", contract.ID, contract.STORE_ID)); writer.RenderBeginTag(HtmlTextWriterTag.A); // Start of A writer.Write(contract.CONTRACT_NO); writer.RenderEndTag(); //End of A lblMessage.Text = stringWriter.ToString(); return; } } Customer cusItem = null; using (var db = new RentBikeEntities()) { bool IsNewCust = false; cusItem = db.Customers.FirstOrDefault(c => c.LICENSE_NO == txtLicenseNumber.Text.Trim() && c.NAME == txtCustomerName.Text.Trim()); if (cusItem == null) { IsNewCust = true; cusItem = new Customer(); } cusItem.NAME = txtCustomerName.Text.Trim(); cusItem.BIRTH_DAY = DateTime.ParseExact(txtBirthDay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_NO = txtLicenseNumber.Text.Trim(); cusItem.LICENSE_RANGE_DATE = DateTime.ParseExact(txtRangeDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_RANGE_PLACE = txtPlaceDate.Text.Trim(); cusItem.PHONE = txtPhone.Text.Trim(); cusItem.PERMANENT_RESIDENCE = txtPermanentResidence.Text.Trim(); cusItem.CURRENT_RESIDENCE = txtCurrentResidence.Text.Trim(); if (IsNewCust) { db.Customers.Add(cusItem); } db.SaveChanges(); cusid = cusItem.ID; } // New Contract Contract item = new Contract(); item.RENT_TYPE_ID = Convert.ToInt32(ddlRentType.SelectedValue); item.FEE_PER_DAY = Math.Round(Convert.ToDecimal(txtFeePerDay.Text.Replace(",", string.Empty))); if (!string.IsNullOrEmpty(txtRentDate.Text)) { item.RENT_DATE = DateTime.ParseExact(txtRentDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } else { item.RENT_DATE = DateTime.Now; } if (!string.IsNullOrEmpty(txtEndDate.Text)) { item.END_DATE = DateTime.ParseExact(txtEndDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } else { item.END_DATE = item.RENT_DATE.AddDays(29); } item.EXTEND_END_DATE = item.END_DATE; item.CLOSE_CONTRACT_DATE = new DateTime(1, 1, 1); item.PAY_FEE_MESSAGE = string.Empty; item.NOTE = txtNote.Text; item.REFERENCE_ID = -1; item.REFERENCE_NAME = txtReferencePerson.Text.Trim(); item.ITEM_TYPE = txtItemName.Text.Trim(); item.ITEM_LICENSE_NO = txtItemLicenseNo.Text.Trim(); item.SERIAL_1 = txtSerial1.Text.Trim(); item.SERIAL_2 = txtSerial2.Text.Trim(); item.REFERENCE_PHONE = txtReferencePhone.Text.Trim(); item.SCHOOL_NAME = txtSchool.Text.Trim(); item.CLASS_NAME = txtClass.Text.Trim(); item.IMPLEMENTER = txtImplementer.Text.Trim(); item.BACK_TO_DOCUMENTS = txtBackDocument.Text.Trim(); item.DETAIL = txtItemDetail.Text.Trim(); item.CUSTOMER_ID = cusid; item.CONTRACT_STATUS = true; item.CONTRACT_AMOUNT = Convert.ToDecimal(txtAmount.Text.Replace(",", string.Empty)); item.CREATED_BY = Session["username"].ToString(); item.CREATED_DATE = DateTime.Now; item.UPDATED_BY = Session["username"].ToString(); item.UPDATED_DATE = DateTime.Now; //item.CONTRACT_NO = txtContractNo.Text.Trim(); if (ddlStore.Enabled == true) { item.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } else { item.STORE_ID = Convert.ToInt32(Session["store_id"]); } item.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}", txtCustomerName.Text.Trim(), txtBirthDay.Text.Trim(), txtLicenseNumber.Text.Trim(), txtRangeDate.Text.Trim(), txtPermanentResidence.Text.Trim(), txtCurrentResidence.Text.Trim(), txtPhone.Text.Trim(), item.CONTRACT_NO, item.RENT_DATE.ToString("dd/MM/yyyy")); SavePhoto(item); using (var db = new RentBikeEntities()) { db.Contracts.Add(item); db.SaveChanges(); DateTime periodTime = DateTime.Today; if (!string.IsNullOrEmpty(txtRentDate.Text)) { periodTime = DateTime.ParseExact(txtRentDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); } PayPeriod newPeriod = new PayPeriod(); newPeriod.PAY_DATE = periodTime; CommonList.CreatePayPeriod(db, item.ID, newPeriod, true); } InOut io = new InOut(); io.CONTRACT_ID = item.ID; io.IN_AMOUNT = 0; io.OUT_AMOUNT = Convert.ToDecimal(txtAmount.Text); io.RENT_TYPE_ID = Convert.ToInt32(ddlRentType.SelectedValue); io.PERIOD_DATE = DateTime.Now; io.MORE_INFO = string.Format("Cho khách {0} thuê: {1} ngày {2} trị giá {3}", txtCustomerName.Text.Trim(), txtItemName.Text.Trim(), DateTime.Now.ToString("dd/MM/yyyy"), txtAmount.Text.Trim()); if (ddlStore.Enabled == true) { io.STORE_ID = Convert.ToInt32(ddlStore.SelectedValue); } else { io.STORE_ID = Convert.ToInt32(Session["store_id"]); } io.SEARCH_TEXT = string.Format("{0} ", io.MORE_INFO); io.INOUT_DATE = DateTime.Now; io.CREATED_BY = Session["username"].ToString(); io.CREATED_DATE = DateTime.Now; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; io.INOUT_TYPE_ID = CommonList.GetInoutTypeFromRentType(Helper.parseInt(ddlRentType.SelectedValue)); using (var rbdb = new RentBikeEntities()) { rbdb.InOuts.Add(io); rbdb.SaveChanges(); CommonList.AutoExtendPeriod(rbdb, item.ID); } string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện làm hợp đồng cho khách hàng {2} vào lúc {3}", Convert.ToString(Session["username"]), STORE_NAME, cusItem.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_CREATE_CONTRACT, message, false); ts.Complete(); } else // EDIT { result = ValidatePermission(); if (!string.IsNullOrEmpty(result)) { lblMessage.Text = result; return; } int contractId = Helper.parseInt(id); bool bUpdateInOutAndPeriod = false; using (var db = new RentBikeEntities()) { var item = db.Contracts.FirstOrDefault(itm => itm.ID == contractId); int rentTypeId = Helper.parseInt(ddlRentType.SelectedValue); decimal contractAmount = Convert.ToDecimal(txtAmount.Text); decimal feePerDay = Convert.ToDecimal(txtFeePerDay.Text); if (contractAmount != item.CONTRACT_AMOUNT || rentTypeId != item.RENT_TYPE_ID || feePerDay != item.FEE_PER_DAY) { bUpdateInOutAndPeriod = true; } if (bUpdateInOutAndPeriod) { //Update for contract record only. int inOutTypeId = CommonList.GetInoutTypeFromRentType(item.RENT_TYPE_ID); var inOut = db.InOuts.FirstOrDefault(c => c.CONTRACT_ID == contractId && c.INOUT_TYPE_ID == inOutTypeId); if (inOut != null) { // SAVE INOUT inOut.OUT_AMOUNT = contractAmount; inOut.RENT_TYPE_ID = rentTypeId; inOut.INOUT_TYPE_ID = CommonList.GetInoutTypeFromRentType(rentTypeId); inOut.MORE_INFO = inOut.SEARCH_TEXT = string.Format("Cho khách {0} thuê: {1} ngày {2} trị giá {3}", txtCustomerName.Text.Trim(), txtItemName.Text.Trim(), DateTime.Now.ToString("dd/MM/yyyy"), txtAmount.Text.Trim()); inOut.UPDATED_BY = Session["username"].ToString(); inOut.UPDATED_DATE = DateTime.Now; } //Update for others in out record of the contract var listInOut = db.InOuts.Where(c => c.CONTRACT_ID == contractId && c.RENT_TYPE_ID == item.RENT_TYPE_ID).ToList(); foreach (var io in listInOut) { io.RENT_TYPE_ID = rentTypeId; io.UPDATED_BY = Session["username"].ToString(); io.UPDATED_DATE = DateTime.Now; } //Update for 3 first PayPeriod records List <PayPeriod> listPayPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == contractId).ToList(); foreach (var pp in listPayPeriod.Take(3)) { pp.AMOUNT_PER_PERIOD = feePerDay * 10; } //Update for remain PayPeriod records int multipleFee = Convert.ToInt32(Decimal.Floor(contractAmount / 100000)); decimal increateFeeCar = (feePerDay * 10) + (multipleFee * 50 * 10); decimal increateFeeEquip = (feePerDay * 10) + (multipleFee * 100 * 10); decimal increateFeeOther = (feePerDay * 10); foreach (var pp in listPayPeriod.Skip(3)) { switch (rentTypeId) { case 1: if (((feePerDay / multipleFee) * 10) < 4000) { pp.AMOUNT_PER_PERIOD = increateFeeCar; } else { pp.AMOUNT_PER_PERIOD = feePerDay * 10; } break; case 2: if (((feePerDay / multipleFee) * 10) < 6000) { pp.AMOUNT_PER_PERIOD = increateFeeEquip; } else { pp.AMOUNT_PER_PERIOD = feePerDay * 10; } break; default: pp.AMOUNT_PER_PERIOD = increateFeeOther; break; } } } //Update contract infor item.NOTE = txtNote.Text; item.REFERENCE_ID = -1; item.REFERENCE_NAME = txtReferencePerson.Text.Trim(); item.ITEM_TYPE = txtItemName.Text.Trim(); item.ITEM_LICENSE_NO = txtItemLicenseNo.Text.Trim(); item.RENT_TYPE_ID = Helper.parseInt(ddlRentType.SelectedValue); item.CONTRACT_AMOUNT = Convert.ToDecimal(txtAmount.Text); item.FEE_PER_DAY = Convert.ToDecimal(txtFeePerDay.Text); item.SERIAL_1 = txtSerial1.Text.Trim(); item.SERIAL_2 = txtSerial2.Text.Trim(); item.REFERENCE_PHONE = txtReferencePhone.Text.Trim(); item.SCHOOL_NAME = txtSchool.Text.Trim(); item.CLASS_NAME = txtClass.Text.Trim(); item.IMPLEMENTER = txtImplementer.Text.Trim(); item.BACK_TO_DOCUMENTS = txtBackDocument.Text.Trim(); item.DETAIL = txtItemDetail.Text.Trim(); item.SEARCH_TEXT = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}", txtCustomerName.Text.Trim(), txtBirthDay.Text.Trim(), txtLicenseNumber.Text.Trim(), txtRangeDate.Text.Trim(), txtPermanentResidence.Text.Trim(), txtCurrentResidence.Text.Trim(), txtPhone.Text.Trim(), item.CONTRACT_NO, item.RENT_DATE.ToString("dd/MM/yyyy")); item.UPDATED_BY = Session["username"].ToString(); item.UPDATED_DATE = DateTime.Now; //Contract photo SavePhoto(item); //Update customer infor var cusItem = db.Customers.FirstOrDefault(c => c.ID == item.CUSTOMER_ID); if (cusItem != null) { cusItem.NAME = txtCustomerName.Text.Trim(); cusItem.BIRTH_DAY = DateTime.ParseExact(txtBirthDay.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_NO = txtLicenseNumber.Text.Trim(); cusItem.LICENSE_RANGE_DATE = DateTime.ParseExact(txtRangeDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture); cusItem.LICENSE_RANGE_PLACE = txtPlaceDate.Text.Trim(); cusItem.PHONE = txtPhone.Text.Trim(); cusItem.PERMANENT_RESIDENCE = txtPermanentResidence.Text.Trim(); cusItem.CURRENT_RESIDENCE = txtCurrentResidence.Text.Trim(); } db.SaveChanges(); string message = string.Format("Tài khoản {0} cửa hàng {1} thực hiện chỉnh sửa hợp đồng của khách hàng {2} vào lúc {3}", Convert.ToString(Session["username"]), STORE_NAME, cusItem.NAME, DateTime.Now); Helper.WriteLog(Convert.ToString(Session["username"]), STORE_NAME, Constants.ACTION_UPDATE_CONTRACT, message, false); } ts.Complete(); } Response.Redirect("FormContractManagement.aspx", false); } } catch (Exception ex) { lblMessage.Text = ex.Message; lblMessage.CssClass = "text-center text-danger"; Logger.Log(ex.Message); } }