/// <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; } } } } } }
/// <summary>قانون مقداردهی به شبکاری و ضریب دادن به شبکاری C14</summary> public override void R2001(AssignedRule MyRule) { //15 شبکاری //16 تعداد شبکاری GetLog(MyRule, DebugRuleState.Before, 16, 15); PairableScndCnpValue.AppendPairToScndCnpValue(new PairableScndCnpValuePair(MyRule["First", this.RuleCalculateDate].ToInt(), MyRule["Second", this.RuleCalculateDate].ToInt()), this.DoConcept(14)); this.DoConcept(16).Value = 1; this.DoConcept(15); if (this.DoConcept(15).Value > 0) { float coEfficient = MyRule["Third", this.RuleCalculateDate].ToInt() / 100f; float i = this.DoConcept(15).Value *coEfficient; ((PairableScndCnpValue)this.DoConcept(15)).IncreaseValue((int)Math.Round(i)); } GetLog(MyRule, DebugRuleState.After, 16, 15); }