/// <summary> /// Get Milestone billing lines /// </summary> /// <param name="id">Milestone Id</param> /// <returns>Milestone billing lines view</returns> public ActionResult GetMilestoneBillingLines(int id) { var milestone = new Milestone(); try { //Get milestone details var milestoneService = new MilestoneService(); MilestoneVO milestoneVO = milestoneService.GetMilestoneById(id); if (milestoneVO == null) { ModelState.AddModelError("", String.Format(Constants.ITEM_NOT_FOUND, Constants.MILESTONE)); } else { milestone = new Milestone(milestoneVO) { MilestoneStatusList = GetMilestoneStatusList() }; FillMilestoneBillingLines(milestone, milestone.MilestoneBillingLines); } } catch (Exception e) { ModelState.AddModelError("", e.Message); } return(PartialView("_BillingLines", milestone)); }
/// <summary> /// Convert milestone value object to Approve maintenance model /// </summary> /// <param name="milestoneVO">The milestoneVO object</param> public ApproveMaintenance(MilestoneVO milestoneVO) { ID = milestoneVO.ID; CompanyId = milestoneVO.CompanyID; CompanyName = milestoneVO.CompanyName; DivisionName = milestoneVO.DivisionName; InvoiceCustomer = milestoneVO.InvoiceCustomerName; ContractNumber = milestoneVO.ContractNumber; InvoiceDate = milestoneVO.InvoiceDate; ApprovalRequired = milestoneVO.ApprovedByCustomer; ApprovalRequired = milestoneVO.IsApprovalRequired; MilestoneStatusId = milestoneVO.MilestoneStatusID; MilestoneStatusName = milestoneVO.MilestoneStatusName; ActivityName = milestoneVO.ActivityName; Percentage = milestoneVO.Percentage; Amount = milestoneVO.Amount; ApprovedStatus = milestoneVO.ApprovedStatus; IsApproved = milestoneVO.IsApproved; MilestoneDescription = milestoneVO.MilestoneStatusDescription; BillingLines = milestoneVO.BillingLines; //MilestoneBillingLines = milestoneVO.MilestoneBillingLines; foreach (var milestoneBillingLineVo in milestoneVO.MilestoneBillingLineVos) { MilestoneBillingLines.Add(new MilestoneBillingLine(milestoneBillingLineVo)); } milestone = new Milestone(); }
/// <summary> /// Gets invoice milestone details for invoice file generation /// </summary> /// <param name="invoiceHeaderVO">Header details</param> /// <param name="invoiceGLDetail">GL coding details</param> /// <param name="fromDate">from date</param> /// <param name="toDate">to date</param> /// <returns></returns> public MilestoneVO GetMilestoneDetails(InvoiceHeaderVO invoiceHeaderVO, InvoiceGLDetailVO invoiceGLDetails, DateTime fromDate, DateTime toDate) { Milestone milestones = mdbDataContext.Milestones.FirstOrDefault(m => m.ID == invoiceGLDetails.MilestoneId && !m.IsDeleted); //Where(m => m.ContractLineID == invoiceGlDetailVO.ContractLineId // && m.ContractID == invoiceHeaderVO.ContractId // && m.ContractMaintenance.ID == invoiceGlDetailVO.ContractMaintenanceId && // m.MilestoneStatusID == Convert.ToInt32(Constants.MilestoneStatus.IN_PROGRESS) // 4 In Progress // && m.ContractMaintenance.IsGrouped == null && // (m.EstimatedDate >= fromDate && // m.EstimatedDate <= toDate) // && !m.IsDeleted).ToList(); //foreach (var milestone in milestones) //{ MilestoneVO milestoneVO = new MilestoneVO(milestones); //} return(milestoneVO); //Get milestone details for contract & contract lines //List<Milestone> milestones = mdbDataContext.Milestones. // Where(m => m.ContractLineID == invoiceGLDetail.ContractLineId // && m.ContractID == invoiceHeaderVO.ContractId // && m.ContractMaintenance.ID == invoiceGLDetail.ContractMaintenanceId && // m.MilestoneStatusID == Convert.ToInt32(Constants.MilestoneStatus.IN_PROGRESS) // 4 In Progress // && m.ContractMaintenance.IsGrouped == null && // (m.EstimatedDate >= fromDate && // m.EstimatedDate <= toDate) // && !m.IsDeleted).ToList(); //return milestones.Select(milestone => new MilestoneVO(milestone)).ToList(); }
public ActionResult MilestoneSave(MODEL.Milestone model) { try { MilestoneService milestoneService = new MilestoneService(); if (ModelState.IsValid) { //Get user id int?userId = Session.GetUserId(); //MilestoneVO milestoneVO = new MilestoneVO(model, userId); MilestoneVO milestoneVO = model.Transpose(userId); milestoneService.SaveMilestone(milestoneVO); return(new HttpStatusCodeResult(200)); } else { throw new ApplicationException(String.Format(Constants.CANNOT_SAVE, Constants.MILESTONE)); } } catch (ApplicationException e) { return(new HttpStatusCodeAndErrorResult(500, e.Message)); } }
/// <summary> /// Gets the Milestone Billing Line based on Milestone /// </summary> /// <param name="milestoneVO">Value object of milestone</param> /// <returns></returns> public List <MilestoneBillingLineVO> GetMilestoneBillingLines(MilestoneVO milestoneVO) { List <MilestoneBillingLine> milestoneBillingLines = mdbDataContext.MilestoneBillingLines.Where( b => b.MilestoneID == milestoneVO.ID && b.ContractID == milestoneVO.ContractID && !b.IsDeleted).ToList(); List <MilestoneBillingLineVO> milestoneBillingLineVos = milestoneBillingLines.Select(milestoneBillingLine => new MilestoneBillingLineVO(milestoneBillingLine)).ToList(); return(milestoneBillingLineVos); }
private IEnumerator HoldCharacter(Character character, MilestoneVO milestoneVO) { float waitingTime = TIME_TO_PASS_UNIT / mainModel.MovingSpeed; Debug.Log("waitingTime: " + waitingTime); yield return(new WaitForSeconds(waitingTime)); //recursive call processMilestonesByCharacter(character); }
protected void processMilestonesByCharacter(Character character) { MilestoneVO[] milestones = mainModel.RoundResultsByPlayerId[character.PlayerData.id].milestones; //if there is milestone available we need to process it if (milestones.Length > 0) { //shifting first element from the milestones array MilestoneVO currentMilestoneVO = milestones[0]; int remainingLength = milestones.Length - 1; MilestoneVO[] remainingMilestones = new MilestoneVO[remainingLength]; Array.Copy(milestones, 1, remainingMilestones, 0, remainingLength); mainModel.RoundResultsByPlayerId[character.PlayerData.id].milestones = remainingMilestones; //processing the element switch (currentMilestoneVO.type) { case MilestoneType.INIT: { Vector3 newPosition = currentMilestoneVO.position; character.transform.position = new Vector3(newPosition.x * camera.unitSize, newPosition.y * camera.unitSize, newPosition.z); processMilestonesByCharacter(character); break; } case MilestoneType.MOVE: case MilestoneType.BOOST: { StartCoroutine(MoveCharacter(character, currentMilestoneVO)); break; } case MilestoneType.BLOCK: { StartCoroutine(HoldCharacter(character, currentMilestoneVO)); break; } default: { break; } } currentMilestoneVO = null; return; } //if there is no milestone available - it means all character's milestones have been processed _characterMilestonesProcessedCounter++; if (_characterMilestonesProcessedCounter == _characters.Length) { _characterMilestonesProcessedCounter = 0; Messenger.Broadcast(ViewEvent.COMPLETE); } }
/// <summary> /// Save the milestone /// </summary> /// <param name="milestoneVO">Value object of milestone</param> public void SaveMilestone(MilestoneVO milestoneVO) { if (milestoneVO.ID != 0) { //Update Existing Record Milestone selectedMilestone = mdbDataContext.Milestones.SingleOrDefault(c => c.ID == milestoneVO.ID); selectedMilestone.ContractID = milestoneVO.ContractID; selectedMilestone.ContractLineID = milestoneVO.ContractLineID; selectedMilestone.MaintenanceID = milestoneVO.ContractMaintenanceID; selectedMilestone.EstimatedDate = milestoneVO.InvoiceDate; selectedMilestone.RenewalStartDate = milestoneVO.RenewalStartDate; selectedMilestone.RenewalEndDate = milestoneVO.RenewalEndDate; selectedMilestone.Amount = milestoneVO.Amount; selectedMilestone.IsApproved = milestoneVO.IsApproved; selectedMilestone.MilestoneStatusID = milestoneVO.MilestoneStatusID; selectedMilestone.MilestoneStatus = milestoneVO.MilestoneStatusName; selectedMilestone.LastUpdatedBy = milestoneVO.LastUpdatedByUserId; selectedMilestone.LastUpdatedDate = DateTime.Now; //ContractMaintenance maintenance = mdbDataContext.ContractMaintenances.SingleOrDefault(cm => cm.ID == milestoneVO.ContractMaintenanceID); //maintenance.Comment = milestoneVO.Comments; //Save contract maintenace lines foreach (var item in milestoneVO.MilestoneBillingLineVos) { MilestoneBillingLine milestoneBillingLine = selectedMilestone.MilestoneBillingLines.ToList().Find(x => x.ID == item.ID && x.ID != 0); if (milestoneBillingLine != null) { milestoneBillingLine.LineText = !string.IsNullOrEmpty(item.LineText) ? item.LineText.Trim() : item.LineText; milestoneBillingLine.LineSequance = item.LineSequance; milestoneBillingLine.ContractID = milestoneVO.ContractID; milestoneBillingLine.MilestoneID = milestoneVO.ID; milestoneBillingLine.LastUpdatedBy = milestoneVO.LastUpdatedByUserId; milestoneBillingLine.LastUpdatedDate = DateTime.Now; } else { selectedMilestone.MilestoneBillingLines.Add(new MilestoneBillingLine() { LineText = !string.IsNullOrEmpty(item.LineText) ? item.LineText.Trim() : item.LineText, LineSequance = item.LineSequance, ContractID = milestoneVO.ContractID, MilestoneID = milestoneVO.ID, CreatedBy = milestoneVO.CreatedByUserId, CreationDate = DateTime.Now }); } } mdbDataContext.SubmitChanges(); } }
/// <summary> /// Get milestone details by Id /// </summary> /// <param name="milestoneId">milestone id</param> /// <returns>Milestone details</returns> public MilestoneVO GetMilestoneById(int milestoneId) { Milestone milestone = mdbDataContext.Milestones.SingleOrDefault(c => c.ID == milestoneId); MilestoneVO milestoneVO = null; if (milestone != null) { milestoneVO = new MilestoneVO(milestone); } return(milestoneVO); }
/// <summary> /// Create nominal line /// </summary> /// <param name="invoiceHeaderVO">Invoice header value object</param> /// <param name="nominalLine">Nominal line</param> /// <param name="milestone">Milestone object</param> private void CreateNominalLine(InvoiceHeaderVO invoiceHeaderVO, InvoiceGLDetailVO nominalLine, MilestoneVO milestone) { nominalLine.TaxCode = invoiceHeaderVO.VatCode; nominalLine.Value = milestone.Amount; nominalLine.RenewalStartDate = String.Format("{0:ddMMyyyy}", milestone.RenewalStartDate.Value); nominalLine.RenewalEndDate = String.Format("{0:ddMMyyyy}", milestone.RenewalEndDate.Value); nominalLine.ContractDetails = invoiceHeaderVO.CompanyId == 159 ? "N,D," : "Y,D,"; nominalLine.ContractDetails += nominalLine.RenewalStartDate + " to " + nominalLine.RenewalEndDate + ",M" + milestone.ID; nominalLine.GroupId = milestone.GroupId; nominalLine.PeriodFrequencyId = milestone.PeriodFrequencyId; }
/// <summary> /// Update milestone details from Approve Maintenance screen /// </summary> /// <param name="milestoneVO">Value object of Milestone</param> public void UpdateMilestone(MilestoneVO milestoneVO) { if (milestoneVO.ID != 0) { //Update Existing Record Milestone selectedMilestone = mdbDataContext.Milestones.SingleOrDefault(c => c.ID == milestoneVO.ID); if (selectedMilestone != null) { selectedMilestone.Amount = milestoneVO.Amount; selectedMilestone.IsApproved = milestoneVO.IsApproved; selectedMilestone.MilestoneStatusID = milestoneVO.MilestoneStatusID; selectedMilestone.LastUpdatedBy = milestoneVO.LastUpdatedByUserId; selectedMilestone.LastUpdatedDate = DateTime.Now; mdbDataContext.SubmitChanges(); } } }
public Milestone(MilestoneVO milestoneVO) : this() { ID = milestoneVO.ID; OldMilestoneID = milestoneVO.OldMilestoneID; CompanyID = milestoneVO.CompanyID; CompanyName = milestoneVO.CompanyName; ContractNumber = milestoneVO.ContractNumber; ContractID = milestoneVO.ContractID; ContractLineID = milestoneVO.ContractLineID; ContractMaintenanceID = milestoneVO.ContractMaintenanceID; MilestoneStatusID = milestoneVO.MilestoneStatusID; MilestoneStatus = milestoneVO.MilestoneStatusName; MilestoneStatusDescription = milestoneVO.MilestoneStatusDescription; InvoiceDate = milestoneVO.InvoiceDate; Amount = milestoneVO.Amount; RenewalEndDate = milestoneVO.RenewalEndDate.HasValue ? milestoneVO.RenewalEndDate : null; RenewalStartDate = milestoneVO.RenewalStartDate.HasValue ? milestoneVO.RenewalStartDate : null; Description = milestoneVO.Description; Percentage = milestoneVO.Percentage; IndexRate = milestoneVO.IndexRate; PreviousValue = milestoneVO.PreviousValue; PreviousLine = milestoneVO.PreviousLine; IsApprovalRequired = milestoneVO.IsApprovalRequired; ApprovedStatus = milestoneVO.ApprovedStatus; ApprovedBy = milestoneVO.ApprovedBy; ApprovedByCustomer = milestoneVO.ApprovedByCustomer; CustomerApprovedStatus = milestoneVO.CustomerApprovedStatus; ConditionType = milestoneVO.ConditionType; SLT_OUR_REF_2 = milestoneVO.SLT_OUR_REF_2; CompanyName = milestoneVO.CompanyName; InvoiceCustomerName = milestoneVO.InvoiceCustomerName; ContractNumber = milestoneVO.ContractNumber; ActivityName = milestoneVO.ActivityName; IsApproved = milestoneVO.IsApproved; Comments = milestoneVO.Comments; UpliftForMilestone = milestoneVO.UpliftForMilestone; ActualBillDate = milestoneVO.ActualBillDate; foreach (var item in milestoneVO.MilestoneBillingLineVos) { MilestoneBillingLines.Add(new MilestoneBillingLine(item)); } }
/// <summary> /// Return list of milestone of grouped contract maintenance lines /// </summary> /// <param name="invoiceHeaderVO">The invoice header deatils</param> /// <param name="invoiceGLDetail">The coding line deatils</param> /// <param name="fromDate">From date</param> /// <param name="toDate">To date</param> /// <returns></returns> public List <MilestoneVO> GetGroupedMilestoneDetails(InvoiceHeaderVO invoiceHeaderVO, List <InvoiceGLDetailVO> invoiceGLDetail, DateTime fromDate, DateTime toDate) { List <MilestoneVO> milestoneVos = new List <MilestoneVO>(); foreach (var invoiceGlDetailVO in invoiceGLDetail) { //Get milestone details for contract & contract lines List <Milestone> milestones = mdbDataContext.Milestones. Where(m => m.ContractLineID == invoiceGlDetailVO.ContractLineId && m.ContractID == invoiceHeaderVO.ContractId && m.MilestoneStatusID == Convert.ToInt32(Constants.MilestoneStatus.IN_PROGRESS) && // 4 In Progress (m.EstimatedDate >= fromDate && m.EstimatedDate <= toDate) && m.ContractMaintenance.IsGrouped == true && m.ContractMaintenance.GroupId == invoiceGlDetailVO.GroupId && m.ContractMaintenance.ChargeFrequencyID == invoiceGlDetailVO.PeriodFrequencyId && !m.IsDeleted).ToList(); foreach (var milestone in milestones) { MilestoneVO milestoneVO = new MilestoneVO(milestone); MilestoneVO mlVO = milestoneVos.Find(m => m.ID == milestoneVO.ID); if (mlVO == null) { milestoneVos.Add(milestoneVO); } } } //var gpMilestones = (from milestone in milestoneVos // select new // { // milestone.ContractLineID, // milestone.GroupId, // milestone.PeriodFrequencyId // }).GroupBy(g => new {g.ContractLineID, g.GroupId, g.PeriodFrequencyId}).ToList(); //return gpMilestones; return(milestoneVos); //return milestones.Select(milestone => new MilestoneVO(milestone)).ToList(); }
/// <summary> /// Transpose model milestone object to milestone value object /// </summary> /// <param name="contractMaintenance"></param> public MilestoneVO Transpose(int?userId) { MilestoneVO milestoneVO = new MilestoneVO(); milestoneVO.ID = this.ID; milestoneVO.OldMilestoneID = this.OldMilestoneID; milestoneVO.ContractID = this.ContractID; milestoneVO.ContractLineID = this.ContractLineID; milestoneVO.ContractMaintenanceID = this.ContractMaintenanceID; milestoneVO.MilestoneStatusID = this.MilestoneStatusID; milestoneVO.MilestoneStatusDescription = this.MilestoneStatusDescription; milestoneVO.MilestoneStatusName = this.MilestoneStatus; milestoneVO.InvoiceDate = this.InvoiceDate; milestoneVO.Amount = this.Amount; milestoneVO.RenewalEndDate = this.RenewalEndDate; milestoneVO.RenewalStartDate = this.RenewalStartDate; milestoneVO.CreatedByUserId = userId; milestoneVO.LastUpdatedByUserId = userId; milestoneVO.Description = this.Description; milestoneVO.Percentage = this.Percentage; milestoneVO.IndexRate = this.IndexRate; milestoneVO.PreviousValue = this.PreviousValue; milestoneVO.PreviousLine = this.PreviousLine; milestoneVO.IsApprovalRequired = this.IsApprovalRequired; milestoneVO.ApprovedStatus = this.ApprovedStatus; milestoneVO.ApprovedBy = this.ApprovedBy; milestoneVO.ApprovedByCustomer = this.ApprovedByCustomer; milestoneVO.CustomerApprovedStatus = this.CustomerApprovedStatus; milestoneVO.ConditionType = this.ConditionType; milestoneVO.SLT_OUR_REF_2 = this.SLT_OUR_REF_2; milestoneVO.IsApproved = this.IsApproved; milestoneVO.Comments = this.Comments; milestoneVO.UpliftForMilestone = this.UpliftForMilestone; FillBillingLines(this); milestoneVO.MilestoneBillingLineVos = MilestoneBillingLineVos; return(milestoneVO); }
/// <summary> /// Saves Billing Line /// </summary> /// <param name="milestoneVO">MilestoneVo to save</param> public void SaveBillingLine(MilestoneVO milestoneVO) { if (milestoneVO != null) { ContractMaintenance maintenance = mdbDataContext.ContractMaintenances.SingleOrDefault(cm => cm.ID == milestoneVO.ContractMaintenanceID); //maintenance.Comment = milestoneVO.Comments; maintenance.Comment = !string.IsNullOrEmpty(milestoneVO.Comments) ? milestoneVO.Comments.Trim() : milestoneVO.Comments; //Save milestone billing details foreach (var item in milestoneVO.MilestoneBillingLineVos) { MilestoneBillingLine milestoneBillingLine = mdbDataContext.MilestoneBillingLines.SingleOrDefault(b => b.ID == item.ID && !b.IsDeleted); if (milestoneBillingLine != null) { milestoneBillingLine.LineText = !string.IsNullOrEmpty(item.LineText) ? item.LineText.Trim() : item.LineText; milestoneBillingLine.LineSequance = item.LineSequance; milestoneBillingLine.ContractID = milestoneVO.ContractID; milestoneBillingLine.MilestoneID = milestoneVO.ID; milestoneBillingLine.LastUpdatedBy = milestoneVO.LastUpdatedByUserId; milestoneBillingLine.LastUpdatedDate = DateTime.Now; } else { MilestoneBillingLine newMilestoneBillingLine = new MilestoneBillingLine { LineText = !string.IsNullOrEmpty(item.LineText) ? item.LineText.Trim() : item.LineText, LineSequance = item.LineSequance, ContractID = milestoneVO.ContractID, MilestoneID = milestoneVO.ID, CreatedBy = milestoneVO.CreatedByUserId, CreationDate = DateTime.Now }; mdbDataContext.MilestoneBillingLines.InsertOnSubmit(newMilestoneBillingLine); } } mdbDataContext.SubmitChanges(); } }
/// <summary> /// Return default billing /// </summary> /// <param name="contractId"></param> /// <param name="groupId"></param> /// <param name="periodFrequencyId"></param> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> public MilestoneVO GetDefaultBillingLine(int contractId, int?groupId, int periodFrequencyId, DateTime fromDate, DateTime toDate) { Milestone milestone = mdbDataContext.Milestones.FirstOrDefault( m => m.ContractID == contractId && m.ContractMaintenance.GroupId == groupId && m.ContractMaintenance.ChargeFrequencyID == periodFrequencyId && m.ContractMaintenance.IsDefaultLineInGroup == true && !m.IsDeleted && !m.ContractMaintenance.IsDeleted && m.EstimatedDate >= fromDate && m.EstimatedDate <= toDate); #region Khushboo MilestoneVO milestoneVO = null; if (milestone != null) { //MilestoneVO milestoneVO = new MilestoneVO(milestone); milestoneVO = new MilestoneVO(milestone); //return milestoneVO; } else { //Billing line tag of that particular(original billing text) billing line Milestone milestoneOfParticularBillingLine = mdbDataContext.Milestones.FirstOrDefault( m => m.ContractID == contractId && m.ContractMaintenance.GroupId == groupId && m.ContractMaintenance.ChargeFrequencyID == periodFrequencyId && !m.IsDeleted && !m.ContractMaintenance.IsDeleted && m.EstimatedDate >= fromDate && m.EstimatedDate <= toDate); milestoneVO = new MilestoneVO(milestoneOfParticularBillingLine); //return null; } return(milestoneVO); #endregion }
protected IEnumerator MoveCharacter(Character character, MilestoneVO milestoneVO) { //calculating target position and a distance to it in pixels Vector3 startPosition = character.Position; Vector3 endPosition = milestoneVO.position * camera.unitSize; float totalDistance = Vector3.Distance(startPosition, endPosition); //assuming we have constant time to pass one unit (let's say 1 sec for simplicity) //than total time to pass all distance in units is equal to a total distance in units divided by speed //so float totalTime = ((totalDistance / camera.unitSize) * TIME_TO_PASS_UNIT) / (mainModel.MovingSpeed * milestoneVO.speed); float startTime = Time.time; float timePassed = Time.time - startTime; //updating position smoothly while (totalTime > timePassed) { Vector3 newPosition = Vector3.Lerp(startPosition, endPosition, timePassed / totalTime); character.transform.position = newPosition; //if it is User's character recently moved we need camera to be centered at the character's position if (character.PlayerData.id == mainModel.User.id) { Vector3 position = character.transform.position; position.x += character.GetComponent <SpriteRenderer>().bounds.size.x / 2; Messenger <Vector3> .Broadcast(ViewEvent.POSITION_UPDATED, position); } timePassed = Time.time - startTime; yield return(null); } //recursive call processMilestonesByCharacter(character); }
/// <summary> /// Process invoice details - N & X line /// </summary> /// <param name="invoiceDetails">Invoice details object</param> /// <param name="invoiceHeaderVO">Invoice header object</param> /// <param name="fromDate">from date</param> /// <param name="toDate">to date</param> /// <returns></returns> private List <InvoiceDetailVO> ProcessInvoiceDetails(List <InvoiceGLDetailVO> invoiceDetails, InvoiceHeaderVO invoiceHeaderVO, DateTime fromDate, DateTime toDate) { var invoiceDetailVos = new List <InvoiceDetailVO>(); //Process only grouped billing details/ milestone lines invoiceDetailVos.AddRange(ProcessGroupedBillingLines(invoiceDetails, invoiceHeaderVO, fromDate, toDate)); // process line for ungrouped milestone & billing details foreach (var invoiceGlDetail in invoiceDetails) { if (invoiceGlDetail.IsGrouped != true) { // Get milestone details MilestoneVO milestoneVos = approveMaintenanceDAL.GetMilestoneDetails(invoiceHeaderVO, invoiceGlDetail, fromDate, toDate); //foreach (var milestoneVo in milestoneVos) //{ if (milestoneVos.IsGrouped == null || milestoneVos.IsGrouped == false) { InvoiceDetailVO invoiceDetailVO = new InvoiceDetailVO(); // Create clone object of GL line object InvoiceGLDetailVO nominalLine = new InvoiceGLDetailVO(invoiceGlDetail); if (ValidateJobCode(invoiceHeaderVO, nominalLine) == false) { //ARBS-144-to have customer name and customer code in error file string error = String.Format(Constants.JOB_CODE_MISSING + "'" + invoiceHeaderVO.ContractNumber + "', " + "Company - '" + invoiceHeaderVO.CompanyId + " - " + invoiceHeaderVO.CompanyName + " , Customer Name - " + invoiceHeaderVO.CustomerName + " , Customer Code - " + invoiceHeaderVO.CustomerCode + "'"); if (!errorList.Contains(error)) { errorList.Add(error); } isValid = false; } CreateNominalLine(invoiceHeaderVO, nominalLine, milestoneVos); //glDetail.TaxCode = invoiceHeaderVO.VatCode; //glDetail.Value = milestoneVo.Amount; //glDetail.RenewalStartDate = String.Format("{0:ddMMyyyy}", // milestoneVo.RenewalStartDate.Value); //glDetail.RenewalEndDate = String.Format("{0:ddMMyyyy}", milestoneVo.RenewalEndDate.Value); //glDetail.ContractDetails = invoiceHeaderVO.CompanyId == 159 ? "N,D," : "Y,D,"; //glDetail.ContractDetails += glDetail.RenewalStartDate + " to " + // glDetail.RenewalEndDate + ",M" + milestoneVo.ID; //Add GL details to invoice header //invoiceDetailVO.InvoiceGlDetails = glDetail; if (!invoiceDetailVO.NominalLinesList.Contains(nominalLine)) { invoiceDetailVO.NominalLinesList.Add(nominalLine); } string billingLines = milestoneVos.MilestoneBillingLineVos.Aggregate(string.Empty, (current, billingLine) => current + billingLine.LineText); //Generate Billing line details for - extra line for invoice flat file if (string.IsNullOrEmpty(billingLines)) { string error = String.Format(Constants.MISSING_BILLING_LINES + "'" + invoiceHeaderVO.ContractNumber + "'," + "Company - '" + invoiceHeaderVO.CompanyId + "'"); if (!errorList.Contains(error)) { errorList.Add(error); } } InvoiceBillingLineVO invoiceBillingLine = new InvoiceBillingLineVO(milestoneVos.MilestoneBillingLineVos); invoiceBillingLine.VatCode = invoiceHeaderVO.VatCode; invoiceBillingLine.Amount = milestoneVos.Amount; invoiceBillingLine.Qty = milestoneVos.QTY; invoiceBillingLine.UnitPrice = Convert.ToDecimal(String.Format(Constants.STRING_FORMAT_FOR_NUMERIC_VALUE, (milestoneVos.Amount / invoiceBillingLine.Qty))); invoiceDetailVO.isCreaditInvoice = nominalLine.Value < 0; invoiceDetailVO.InvoiceBillingLines = invoiceBillingLine; invoiceDetailVos.Add(invoiceDetailVO); //} } } } // Invoice details associated with header return(invoiceDetailVos); }
/// <summary> /// Save the milestone /// </summary> /// <param name="milestoneVO">Value object of milestone</param> public void SaveMilestone(MilestoneVO milestoneVO) { milestoneDAL.SaveMilestone(milestoneVO); }
/// <summary> /// Update milestone details from Approve Maintenance screen /// </summary> /// <param name="milestoneVO"></param> public void UpdateMilestone(MilestoneVO milestoneVO) { milestoneDAL.UpdateMilestone(milestoneVO); }
/// <summary> /// Gets milestone billing lines associated with milestone /// </summary> /// <param name="milestoneVO"></param> /// <returns></returns> public List <MilestoneBillingLineVO> GetMilestoneBillingLines(MilestoneVO milestoneVO) { return(milestoneDAL.GetMilestoneBillingLines(milestoneVO)); }
/// <summary> /// Save billing lines from Approve mainatenance screen. /// </summary> /// <param name="milestoneVO"></param> public void SaveBillingLines(MilestoneVO milestoneVO) { milestoneDAL.SaveBillingLine(milestoneVO); }
/// <summary> /// Process grouped billing lines with milestone /// </summary> /// <param name="invoiceDetails"></param> /// <param name="invoiceHeaderVO"></param> /// <param name="fromDate"></param> /// <param name="toDate"></param> /// <returns></returns> private List <InvoiceDetailVO> ProcessGroupedBillingLines(List <InvoiceGLDetailVO> invoiceDetails, InvoiceHeaderVO invoiceHeaderVO, DateTime fromDate, DateTime toDate) { List <InvoiceDetailVO> invoiceDetailVos = new List <InvoiceDetailVO>(); List <MilestoneVO> milestoneVoList = approveMaintenanceDAL.GetGroupedMilestoneDetails(invoiceHeaderVO, invoiceDetails, fromDate, toDate); //Get milestone details by group var groupedMilestones = (from milestone in milestoneVoList select new { milestone.ContractMaintenanceID, milestone.ContractLineID, milestone.ID, milestone.GroupId, milestone.PeriodFrequencyId }).GroupBy(g => new { g.GroupId, g.PeriodFrequencyId }).ToList(); // How many nonimal line per group foreach (var groupedMilestone in groupedMilestones) { InvoiceDetailVO invoiceDetail = new InvoiceDetailVO(); List <InvoiceGLDetailVO> nominalLineVos = new List <InvoiceGLDetailVO>(); int totalQty = 0; foreach (var item in groupedMilestone) { InvoiceGLDetailVO nominalLine = invoiceDetails.FirstOrDefault(c => c.ContractLineId == item.ContractLineID && c.ContractMaintenanceId == item.ContractMaintenanceID && c.MilestoneId == item.ID && c.GroupId == groupedMilestone.Key.GroupId && c.PeriodFrequencyId == groupedMilestone.Key.PeriodFrequencyId); MilestoneVO milestone = milestoneVoList.FirstOrDefault(m => m.ID == item.ID && m.GroupId == groupedMilestone.Key.GroupId && m.PeriodFrequencyId == groupedMilestone.Key.PeriodFrequencyId); if (milestone != null) { InvoiceGLDetailVO invoiceGlDetailVO = new InvoiceGLDetailVO(nominalLine); CreateNominalLine(invoiceHeaderVO, invoiceGlDetailVO, milestone); totalQty += milestone.QTY; nominalLineVos.Add(invoiceGlDetailVO); } } // Check how many coding lines are grouped based on period frequency and group id //var grpedMilestoneVo = milestoneVoList.Where(m => m.GroupId == groupedMilestone.Key.GroupId // && // m.PeriodFrequencyId == // groupedMilestone.Key.PeriodFrequencyId) // .GroupBy(g => g.ContractMaintenanceID).ToList(); //foreach (var nLine in grpedMilestoneVo) //{ // InvoiceGLDetailVO nominalLine = // invoiceDetails.FirstOrDefault(c => c.ContractMaintenanceId == nLine.Key && // c.GroupId == groupedMilestone.Key.GroupId && // c.PeriodFrequencyId == groupedMilestone.Key.PeriodFrequencyId); // InvoiceGLDetailVO invoiceGlDetailVO = new InvoiceGLDetailVO(nominalLine); // //InvoiceGLDetailVO nominalLine = // // approveMaintenanceDAL.GetContractLineBasedOnContractMaintenanceId(nLine.Key); // MilestoneVO milestone = // milestoneVoList.FirstOrDefault(m => m.ContractLineID == invoiceGlDetailVO.ContractLineId // && m.ContractMaintenanceID == nLine.Key && // m.IsGrouped == true // && m.PeriodFrequencyId == groupedMilestone.Key.PeriodFrequencyId // && m.GroupId == groupedMilestone.Key.GroupId); // CreateNominalLine(invoiceHeaderVO, invoiceGlDetailVO, milestone); // totalQty += milestone.QTY; // nominalLineVos.Add(invoiceGlDetailVO); //} MilestoneVO defaultPrintingBillingLine = milestoneVoList.FirstOrDefault(m => m.GroupId == groupedMilestone.Key.GroupId && m.PeriodFrequencyId == groupedMilestone.Key.PeriodFrequencyId && m.IsDefaultLineInGroup == true); //If default print line milestone not found in milestone list then get default milestone line database if (defaultPrintingBillingLine == null) { MilestoneVO milestoneVO = approveMaintenanceDAL.GetDefaultBillingLine(nominalLineVos[0].ContractId, nominalLineVos[0].GroupId, nominalLineVos[0].PeriodFrequencyId, fromDate, toDate); if (milestoneVO == null) { string error = String.Format(Constants.MILESTONE_MISSING + "'" + invoiceHeaderVO.ContractNumber + "'," + "Company - '" + invoiceHeaderVO.CompanyId + "'"); if (!errorList.Contains(error)) { errorList.Add(error); } } else { defaultPrintingBillingLine = milestoneVO; string billingLines = defaultPrintingBillingLine.MilestoneBillingLineVos.Aggregate(string.Empty, (current, billingLine) => current + billingLine .LineText); //Generate Billing line details for - extra line for invoice flat file if (string.IsNullOrEmpty(billingLines)) { string error = String.Format(Constants.MISSING_BILLING_LINES + "'" + invoiceHeaderVO.ContractNumber + "'," + "Company - '" + invoiceHeaderVO.CompanyId + "'"); errorList.Add(error); } } } //To check defaultPrintingLine is not null if (defaultPrintingBillingLine != null) { string billingLines = defaultPrintingBillingLine.MilestoneBillingLineVos.Aggregate(string.Empty, (current, billingLine) => current + billingLine .LineText); //Generate Billing line details for - extra line for invoice flat file if (string.IsNullOrEmpty(billingLines)) { string error = String.Format(Constants.MISSING_BILLING_LINES + "'" + invoiceHeaderVO.ContractNumber + "'," + "Company - '" + invoiceHeaderVO.CompanyId + "'"); if (!errorList.Contains(error)) { errorList.Add(error); } } decimal amount = nominalLineVos.Sum(nLine => nLine.Value); invoiceDetail.isCreaditInvoice = amount < 0; InvoiceBillingLineVO invoiceBillingLine = new InvoiceBillingLineVO(defaultPrintingBillingLine.MilestoneBillingLineVos); invoiceBillingLine.VatCode = invoiceHeaderVO.VatCode; invoiceBillingLine.Amount = amount; //defaultPrintingBillingLine.Amount; invoiceBillingLine.Qty = totalQty; //defaultPrintingBillingLine.QTY; invoiceBillingLine.UnitPrice = Convert.ToDecimal(String.Format(Constants.STRING_FORMAT_FOR_NUMERIC_VALUE, (amount / invoiceBillingLine.Qty))); //Add nominal line invoiceDetail.NominalLinesList = nominalLineVos; // Add X line billing printing line invoiceDetail.InvoiceBillingLines = invoiceBillingLine; //Add N & X line details in header invoiceDetailVos.Add(invoiceDetail); } } return(invoiceDetailVos); }