protected void btnCancel_Click(object sender, EventArgs e) { int periodId = Convert.ToInt32(Request.QueryString["ID"]); PayPeriod pp = new PayPeriod(); using (var db = new RentBikeEntities()) { var item = db.PayPeriods.FirstOrDefault(s => s.ID == periodId); pp = item; } Response.Redirect(string.Format("FormContractUpdate.aspx?ID={0}", pp.CONTRACT_ID)); }
private void LoadGrid(PayPeriod pp) { List <InOut> payList = new List <InOut>(); using (var db = new RentBikeEntities()) { var itemLst = db.InOuts.Where(s => s.PERIOD_ID == pp.ID && s.IN_AMOUNT != 0).ToList(); rptContractInOut.DataSource = itemLst; rptContractInOut.DataBind(); } }
protected override void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { // LOAD PAYPERIOD int periodId = Convert.ToInt32(Request.QueryString["ID"]); PayPeriod pp = new PayPeriod(); using (var db = new RentBikeEntities()) { var item = db.PayPeriods.Where(s => s.ID == periodId).FirstOrDefault(); pp = item; PeriodDate = item.PAY_DATE; } LoadGrid(pp); LoadPaidAmountAndTheLeft(pp); // DISPLAY SREEN hplContract.NavigateUrl = string.Format("FormContractUpdate.aspx?ID={0}", pp.CONTRACT_ID); hplContract.Text = "Xem chi tiết hợp đồng"; Store st = new Store(); using (var db = new RentBikeEntities()) { var contract = db.Contracts.Where(c => c.ID == pp.CONTRACT_ID).FirstOrDefault(); if (contract != null) { STORE_ID = contract.STORE_ID; var item = db.Stores.Where(s => s.ID == contract.STORE_ID).FirstOrDefault(); if (item != null) { st = item; txtStore.Text = st.NAME; txtStore.Enabled = false; } var customer = db.Customers.FirstOrDefault(c => c.ID == contract.CUSTOMER_ID); if (customer != null) { CustomerName = customer.NAME; } } } using (var db = new RentBikeEntities()) { var item = db.CONTRACT_FULL_VW.FirstOrDefault(itm => itm.ID == pp.CONTRACT_ID && itm.ACTIVE == true); int inoutType = 0; switch (item.RENT_TYPE_NAME) { case "Cho thuê xe": inoutType = 14; break; case "Cho thuê thiết bị văn phòng": inoutType = 15; break; case "Cho thuê mặt hàng khác": inoutType = 16; break; } var inouttypelist = db.InOutTypes.Where(s => s.IS_CONTRACT == true && s.ACTIVE == true).ToList(); ddInOutType.DataSource = inouttypelist; ddInOutType.DataTextField = "NAME"; ddInOutType.DataValueField = "ID"; ddInOutType.DataBind(); ddInOutType.SelectedValue = inoutType.ToString(); //txtIncome.Text = pp.ACTUAL_PAY.ToString(); // } } //Disable UI for Admin account if (IS_ADMIN) { pnlTable.Enabled = false; } }
private void LoadPaidAmountAndTheLeft(PayPeriod pp) { List <InOut> lst = new List <InOut>(); List <PayPeriod> lst1 = new List <PayPeriod>(); decimal total = 0; decimal remain = 0; decimal amountLeft = 0; decimal totalAmountLeft = 0; using (var db = new RentBikeEntities()) { var result = db.InOuts.Where(itm => itm.CONTRACT_ID == pp.CONTRACT_ID && itm.PERIOD_ID == pp.ID).ToList(); foreach (InOut io in result) { total += io.IN_AMOUNT; total -= io.OUT_AMOUNT; } var lstPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == pp.CONTRACT_ID).ToList(); if (lstPeriod != null) { if (pp.ID == lstPeriod[0].ID) { remain = 0; } else { decimal totalPerAmount = 0; decimal totalActualPay = 0; foreach (PayPeriod pay in lstPeriod) { if (pay.ID < pp.ID) { totalPerAmount = totalPerAmount + pay.AMOUNT_PER_PERIOD; totalActualPay = totalActualPay + pay.ACTUAL_PAY; } } if (totalActualPay > totalPerAmount) { remain = totalActualPay - totalPerAmount; } } decimal totalAmountPeriod = lstPeriod.Where(c => c.PAY_DATE <= DateTime.Today).Select(c => c.AMOUNT_PER_PERIOD).DefaultIfEmpty(0).Sum(); decimal totalAmountPaid = lstPeriod.Where(c => c.PAY_DATE <= DateTime.Today).Select(c => c.ACTUAL_PAY).DefaultIfEmpty(0).Sum(); totalAmountLeft = totalAmountPeriod - totalAmountPaid <= 0 ? 0 : totalAmountPeriod - totalAmountPaid; } if (pp.AMOUNT_PER_PERIOD - total > 0) { amountLeft = pp.AMOUNT_PER_PERIOD - total - remain <= 0 ? 0 : pp.AMOUNT_PER_PERIOD - total - remain; } } Label lblAmountPerDay = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountPerDay"); lblAmountPerDay.Text = string.Format("{0:0,0}", pp.AMOUNT_PER_PERIOD); Label lblTotalPaid = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblTotalPaid"); lblTotalPaid.Text = string.Format("{0:0,0}", total); Label lblAmountRemain = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountRemain"); lblAmountRemain.Text = string.Format("{0:0,0}", remain); Label lblAmountLeft = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountLeft"); lblAmountLeft.Text = txtIncome.Text = string.Format("{0:0,0}", amountLeft); Label lblTotalAmoutLeft = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblTotalAmoutLeft"); lblTotalAmoutLeft.Text = string.Format("{0:0,0}", totalAmountLeft); }
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 override void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { // LOAD PAYPERIOD int periodId = Convert.ToInt32(Request.QueryString["ID"]); PayPeriod pp = new PayPeriod(); using (var db = new RentBikeEntities()) { var item = db.PayPeriods.Where(s => s.ID == periodId).FirstOrDefault(); pp = item; PeriodDate = item.PAY_DATE; } LoadGrid(pp); LoadPaidAmountAndTheLeft(pp); // DISPLAY SREEN hplContract.NavigateUrl = string.Format("FormContractUpdate.aspx?ID={0}", pp.CONTRACT_ID); hplContract.Text = "Xem chi tiết hợp đồng"; Store st = new Store(); using (var db = new RentBikeEntities()) { var contract = db.Contracts.Where(c => c.ID == pp.CONTRACT_ID).FirstOrDefault(); if (contract != null) { STORE_ID = contract.STORE_ID; var item = db.Stores.Where(s => s.ID == contract.STORE_ID).FirstOrDefault(); if (item != null) { st = item; txtStore.Text = st.NAME; txtStore.Enabled = false; } var customer = db.Customers.FirstOrDefault(c =>c.ID == contract.CUSTOMER_ID); if (customer != null) CustomerName = customer.NAME; } } using (var db = new RentBikeEntities()) { var item = db.CONTRACT_FULL_VW.FirstOrDefault(itm => itm.ID == pp.CONTRACT_ID && itm.ACTIVE == true); int inoutType = 0; switch (item.RENT_TYPE_NAME) { case "Cho thuê xe": inoutType = 14; break; case "Cho thuê thiết bị văn phòng": inoutType = 15; break; case "Cho thuê mặt hàng khác": inoutType = 16; break; } var inouttypelist = db.InOutTypes.Where(s => s.IS_CONTRACT == true && s.ACTIVE == true).ToList(); ddInOutType.DataSource = inouttypelist; ddInOutType.DataTextField = "NAME"; ddInOutType.DataValueField = "ID"; ddInOutType.DataBind(); ddInOutType.SelectedValue = inoutType.ToString(); //txtIncome.Text = pp.ACTUAL_PAY.ToString(); // } } //Disable UI for Admin account if (IS_ADMIN) pnlTable.Enabled = false; }
private void LoadPaidAmountAndTheLeft(PayPeriod pp) { List<InOut> lst = new List<InOut>(); List<PayPeriod> lst1 = new List<PayPeriod>(); decimal total = 0; decimal remain = 0; decimal amountLeft = 0; decimal totalAmountLeft = 0; using (var db = new RentBikeEntities()) { var result = db.InOuts.Where(itm => itm.CONTRACT_ID == pp.CONTRACT_ID && itm.PERIOD_ID == pp.ID).ToList(); foreach (InOut io in result) { total += io.IN_AMOUNT; total -= io.OUT_AMOUNT; } var lstPeriod = db.PayPeriods.Where(c => c.CONTRACT_ID == pp.CONTRACT_ID).ToList(); if (lstPeriod != null) { if (pp.ID == lstPeriod[0].ID) { remain = 0; } else { decimal totalPerAmount = 0; decimal totalActualPay = 0; foreach (PayPeriod pay in lstPeriod) { if (pay.ID < pp.ID) { totalPerAmount = totalPerAmount + pay.AMOUNT_PER_PERIOD; totalActualPay = totalActualPay + pay.ACTUAL_PAY; } } if (totalActualPay > totalPerAmount) remain = totalActualPay - totalPerAmount; } decimal totalAmountPeriod = lstPeriod.Where(c => c.PAY_DATE <= DateTime.Today).Select(c => c.AMOUNT_PER_PERIOD).DefaultIfEmpty(0).Sum(); decimal totalAmountPaid = lstPeriod.Where(c => c.PAY_DATE <= DateTime.Today).Select(c => c.ACTUAL_PAY).DefaultIfEmpty(0).Sum(); totalAmountLeft = totalAmountPeriod - totalAmountPaid <= 0 ? 0 : totalAmountPeriod - totalAmountPaid; } if (pp.AMOUNT_PER_PERIOD - total > 0) { amountLeft = pp.AMOUNT_PER_PERIOD - total - remain <= 0 ? 0 : pp.AMOUNT_PER_PERIOD - total - remain; } } Label lblAmountPerDay = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountPerDay"); lblAmountPerDay.Text = string.Format("{0:0,0}", pp.AMOUNT_PER_PERIOD); Label lblTotalPaid = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblTotalPaid"); lblTotalPaid.Text = string.Format("{0:0,0}", total); Label lblAmountRemain = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountRemain"); lblAmountRemain.Text = string.Format("{0:0,0}", remain); Label lblAmountLeft = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblAmountLeft"); lblAmountLeft.Text = txtIncome.Text = string.Format("{0:0,0}", amountLeft); Label lblTotalAmoutLeft = (Label)rptContractInOut.Controls[rptContractInOut.Controls.Count - 1].Controls[0].FindControl("lblTotalAmoutLeft"); lblTotalAmoutLeft.Text = string.Format("{0:0,0}", totalAmountLeft); }
private void LoadGrid(PayPeriod pp) { List<InOut> payList = new List<InOut>(); using (var db = new RentBikeEntities()) { var itemLst = db.InOuts.Where(s => s.PERIOD_ID == pp.ID && s.IN_AMOUNT != 0).ToList(); rptContractInOut.DataSource = itemLst; rptContractInOut.DataBind(); } }
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); } }