Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        private bool IsOverlaping(IList <PMRate> rates, PMRate x)
        {
            foreach (PMRate y in rates)
            {
                if (IsOverlaping(x, y))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #3
0
 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);
             }
         }
     }
 }
Beispiel #4
0
        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);
            }
        }