protected virtual void PMRate_RowPersisting(PXCache sender, PXRowPersistingEventArgs e) { PMRate row = (PMRate)e.Row; if (null != row.StartDate && null != row.EndDate && row.StartDate > row.EndDate) { sender.RaiseExceptionHandling <PMRate.endDate>(row, row.EndDate, new PXSetPropertyException(CR.Messages.EndDateLessThanStartDate)); } }
private bool IsOverlaping(IList <PMRate> rates, PMRate x) { foreach (PMRate y in rates) { if (IsOverlaping(x, y)) { return(true); } } return(false); }
private bool IsOverlaping(PMRate x, PMRate y) { if (x.StartDate == null && x.EndDate == null) { return(true); } else if (x.StartDate == null && x.EndDate != null) { if (y.StartDate == null) { return(true); } else { return(y.StartDate.Value.Date < x.EndDate.Value.Date); } } else if (x.StartDate != null && x.EndDate == null) { if (y.EndDate == null) { return(true); } else { return(y.EndDate.Value.Date > x.StartDate.Value.Date); } } else { if (y.StartDate == null || y.EndDate == null) { return(true); } else { if (x.StartDate.Value.Date <= y.StartDate.Value.Date) { return(y.StartDate.Value.Date < x.EndDate.Value.Date); } else { return(x.StartDate.Value.Date < y.EndDate.Value.Date); } } } }
protected virtual decimal?GetRate(PMRateDefinition rd) { bool isApplicable = true; if (rd.Project == true) { if (!IsProjectFit(rd.RateDefinitionID, tran.ProjectID)) { isApplicable = false; } } if (rd.Task == true) { if (!IsTaskFit(rd.RateDefinitionID, tran.ProjectID, tran.TaskID)) { isApplicable = false; } } if (rd.AccountGroup == true) { if (!IsAccountGroupFit(rd.RateDefinitionID, tran.AccountGroupID)) { isApplicable = false; } } if (rd.RateItem == true) { if (!IsItemFit(rd.RateDefinitionID, tran.InventoryID)) { isApplicable = false; } } if (rd.Employee == true) { if (!IsEmployeeFit(rd.RateDefinitionID, tran.ResourceID)) { isApplicable = false; } } if (isApplicable) { PXSelectBase <PMRate> select = new PXSelect <PMRate, Where <PMRate.rateDefinitionID, Equal <Required <PMRate.rateDefinitionID> >, And <Where <PMRate.startDate, LessEqual <Required <PMRate.startDate> >, And2 <Where <PMRate.endDate, GreaterEqual <Required <PMRate.endDate> > >, Or <PMRate.endDate, IsNull> > > > > >(graph); PMRate rate = select.Select(rd.RateDefinitionID, tran.Date, tran.Date); trace.AppendFormat(" Searching Rate for Date:{0}", tran.Date); if (rate != null) { return(rate.Rate); } else { return(null); } } else { return(null); } }