/// <summary>مفهوم غيبت خالص ساعتي</summary> /// <param name="Result"></param> /// <remarks>شناسه اين مفهوم در تعاريف بعدي سي و شش-36 درنظر گرفته شده است</remarks> public override void C3001(BaseScndCnpValue Result, SecondaryConcept MyConcept) { Result.Value = 0; PairableScndCnpValue.ClearPairsValue(Result); ProceedTraffic proceedTraffic = this.Person.GetProceedTraficByDate(this.ConceptCalculateDate); if (proceedTraffic.IsFilled && this.DoConcept(1090).Value == 0 && this.DoConcept(2005).Value == 0 && this.DoConcept(1091).Value == 0 && this.DoConcept(2026).Value == 0) { if (this.Person.GetShiftByDate(this.ConceptCalculateDate).ShiftType != ShiftTypesEnum.OVERTIME) { if (this.Person.GetShiftByDate(this.ConceptCalculateDate).Value > 0 && proceedTraffic != null && (proceedTraffic.HasHourlyItem || (!proceedTraffic.HasHourlyItem && !proceedTraffic.HasDailyItem))) { ((PairableScndCnpValue)Result).AddPairs(Operation.Differance(this.Person.GetShiftByDate(this.ConceptCalculateDate), proceedTraffic)); } else if (this.Person.GetShiftByDate(this.ConceptCalculateDate).Value > 0 && proceedTraffic == null) { ((PairableScndCnpValue)Result).AppendPairs(this.Person.GetShiftByDate(this.ConceptCalculateDate).Pairs); } else { Result.Value = 0; } } else { Result.Value = 0; } } }
/// <summary>مفهوم تاخير خالص ساعتي</summary> /// <param name="Result"></param> /// <remarks>شناسه اين مفهوم در تعاريف بعدي چهل و دو-42 درنظر گرفته شده است</remarks> public virtual void C3010(BaseScndCnpValue Result, SecondaryConcept MyConcept) { Result.Value = 0; PairableScndCnpValue.ClearPairsValue(Result); ProceedTraffic proceedTraffic = Person.GetProceedTraficByDate(this.ConceptCalculateDate); this.DoConcept(3038).Value = 0; if (this.DoConcept(1090).Value == 0 && this.DoConcept(2005).Value == 0 && this.DoConcept(1091).Value == 0) { PairableScndCnpValue absent = (PairableScndCnpValue)this.DoConcept(3001); BaseShift shift = this.Person.GetShiftByDate(this.ConceptCalculateDate); if (absent != null && shift != null && absent.PairCount != 0 && shift.PairCount != 0) { if (proceedTraffic != null && proceedTraffic.Pairs.Where(x => x.IsFilled).Count() > 0 && Operation.Intersect(this.Person.GetShiftByDate(this.ConceptCalculateDate), proceedTraffic).Value > 0) { IPair pair = proceedTraffic.Pairs.Where(x => x.IsFilled).OrderBy(x => x.From).First(); //ShiftPair firstShiftPair = shift.Pairs.OrderBy(x => x.From).First(); foreach (ShiftPair shiftPair in shift.Pairs.OrderBy(x => x.From).ToList()) { PairableScndCnpValue p = Operation.Intersect(shiftPair, absent); if (p.PairCount > 0 && p.Pairs.OrderBy(x => x.From).Last().To == shiftPair.To) { //PairableScndCnpValue val = Operation.Differance(p.Pairs.OrderBy(x => x.From).First(), pair); PairableScndCnpValue.AppendPairToScndCnpValue(p.Pairs.Last(), Result); this.DoConcept(3038).Value += 1; //break; } } } else { //در نظر گرفتن کل غیبت foreach (ShiftPair shiftPair in shift.Pairs.OrderBy(x => x.From).ToList()) { PairableScndCnpValue p = Operation.Intersect(shiftPair, absent); if (p.PairCount > 0 && p.Pairs.OrderBy(x => x.From).First().From == shiftPair.From) { PairableScndCnpValue.AppendPairToScndCnpValue(p.Pairs.OrderBy(x => x.From).First(), Result); this.DoConcept(3038).Value += 1; } } } } } }