public RouteListWageCalculationService(EmployeeWageParameter wageParameter, IRouteListWageCalculationSource source)
        {
            this.wageParameter = wageParameter ?? throw new ArgumentNullException(nameof(wageParameter));
            this.source        = source ?? throw new ArgumentNullException(nameof(source));

            if (source.DriverOfOurCar && wageParameter.WageParameterItemForOurCars != null)
            {
                SetWageCalculationService(wageParameter.WageParameterItemForOurCars);
            }
            else
            {
                SetWageCalculationService(wageParameter.WageParameterItem);
            }
        }
Exemplo n.º 2
0
        public void WageCalculationForNoWage_ReturnsZero()
        {
            // arrange
            ManualWageParameterItem         manualWage = Substitute.For <ManualWageParameterItem>();
            IRouteListWageCalculationSource src        = Substitute.For <IRouteListWageCalculationSource>();

            IRouteListWageCalculationService manualWageCalculationService = new RouteListManualWageCalculationService(
                manualWage,
                src
                );

            // act
            var result = manualWageCalculationService.CalculateWage();

            // assert
            Assert.That(result.Wage, Is.EqualTo(0));
            Assert.That(result.FixedWage, Is.EqualTo(0));
            Assert.That(result.WageDistrictLevelRate, Is.Null);
        }
        public void WageCalculationForRouteListWithFixedWage()
        {
            // arrange
            FixedWageParameterItem fixedWage = Substitute.For <FixedWageParameterItem>();

            fixedWage.RouteListFixedWage.Returns(1112);
            IRouteListWageCalculationSource src = Substitute.For <IRouteListWageCalculationSource>();

            IRouteListWageCalculationService wageCalculationService = new RouteListFixedWageCalculationService(
                fixedWage,
                src
                );

            // act
            var result = wageCalculationService.CalculateWage();

            // assert
            Assert.That(result.Wage, Is.EqualTo(1112));
            Assert.That(result.FixedWage, Is.EqualTo(1112));
            Assert.That(result.WageDistrictLevelRate, Is.Null);
        }
 public RouteListPercentWageCalculationService(PercentWageParameterItem wageParameterItem, IRouteListWageCalculationSource wageCalculationSource)
 {
     this.wageParameterItem     = wageParameterItem ?? throw new ArgumentNullException(nameof(wageParameterItem));
     this.wageCalculationSource = wageCalculationSource ?? throw new ArgumentNullException(nameof(wageCalculationSource));
 }
Exemplo n.º 5
0
        public IRouteListWageCalculationService ActualizeWageParameterAndGetCalculationService(IUnitOfWork uow, Employee employee, IRouteListWageCalculationSource source)
        {
            if (uow == null)
            {
                throw new ArgumentNullException(nameof(uow));
            }
            if (employee == null)
            {
                throw new ArgumentNullException(nameof(employee));
            }
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            //Не пересчитывать зарплату для МЛ до этой даты
            if (source.RouteListDate <= wageParametersProvider.DontRecalculateWagesForRouteListsBefore)
            {
                return(new WageCalculationServiceForOldRouteLists(source));
            }

            ActualizeWageParameter(uow, source.RouteListId, employee, source.DriverOfOurCar);

            EmployeeWageParameter actualWageParameter = employee.GetActualWageParameter(source.RouteListDate);

            return(new RouteListWageCalculationService(actualWageParameter, source));
        }
Exemplo n.º 6
0
 public WageCalculationServiceForOldRouteLists(IRouteListWageCalculationSource src)
 {
     this.src = src ?? throw new ArgumentNullException(nameof(src));
 }
Exemplo n.º 7
0
 public RouteListOldRatesWageCalculationService(OldRatesWageParameterItem wageParameterItem, IRouteListWageCalculationSource source)
 {
     this.wageParameterItem = wageParameterItem ?? throw new ArgumentNullException(nameof(wageParameterItem));
     this.source            = source ?? throw new ArgumentNullException(nameof(source));
 }
Exemplo n.º 8
0
        public void WageCalculationForServiceRouteList()
        {
            // arrange
            PercentWageParameterItem percentWage = new PercentWageParameterItem {
                PercentWageType = PercentWageTypes.Service
            };

            var orderItemWageCalculationSource1 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource1.ActualCount.Returns(12);
            orderItemWageCalculationSource1.Price.Returns(500);
            orderItemWageCalculationSource1.PercentForMaster.Returns(10);
            orderItemWageCalculationSource1.IsMasterNomenclature.Returns(true);

            var orderItemWageCalculationSource2 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource2.InitialCount.Returns(13);
            orderItemWageCalculationSource2.Price.Returns(1020);
            orderItemWageCalculationSource2.IsMasterNomenclature.Returns(true);

            var orderItemWageCalculationSource3 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource3.ActualCount.Returns(11);
            orderItemWageCalculationSource3.Price.Returns(10);
            orderItemWageCalculationSource3.IsMasterNomenclature.Returns(false);

            var orderItemWageCalculationSource4 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource4.ActualCount.Returns(1);
            orderItemWageCalculationSource4.Price.Returns(1000);
            orderItemWageCalculationSource4.PercentForMaster.Returns(50);
            orderItemWageCalculationSource4.IsMasterNomenclature.Returns(true);

            var routeListItemWageCalculationSource1 = Substitute.For <IRouteListItemWageCalculationSource>();

            routeListItemWageCalculationSource1.OrderItemsSource.Returns(
                new List <IOrderItemWageCalculationSource> {
                orderItemWageCalculationSource1,
                orderItemWageCalculationSource2,
                orderItemWageCalculationSource3
            }
                );

            var routeListItemWageCalculationSource2 = Substitute.For <IRouteListItemWageCalculationSource>();

            routeListItemWageCalculationSource2.OrderItemsSource.Returns(
                new List <IOrderItemWageCalculationSource> {
                orderItemWageCalculationSource4
            }
                );

            IRouteListWageCalculationSource src = Substitute.For <IRouteListWageCalculationSource>();

            src.ItemSources.Returns(
                new List <IRouteListItemWageCalculationSource> {
                routeListItemWageCalculationSource1,
                routeListItemWageCalculationSource2
            }
                );

            IRouteListWageCalculationService percentWageCalculationService = new RouteListPercentWageCalculationService(
                percentWage,
                src
                );

            // act
            var result = percentWageCalculationService.CalculateWage();

            // assert
            Assert.That(result.Wage, Is.EqualTo(1100));
            Assert.That(result.FixedWage, Is.EqualTo(0));
            Assert.That(result.WageDistrictLevelRate, Is.Null);
        }
Exemplo n.º 9
0
        public void WageCalculationForRouteListWithDelivery()
        {
            // arrange
            PercentWageParameterItem percentWage = new PercentWageParameterItem {
                PercentWageType  = PercentWageTypes.RouteList,
                RouteListPercent = 50
            };

            var orderItemWageCalculationSource1 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource1.ActualCount.Returns(10);
            orderItemWageCalculationSource1.Price.Returns(50);
            orderItemWageCalculationSource1.DiscountMoney.Returns(100);

            var orderItemWageCalculationSource2 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource2.InitialCount.Returns(5);
            orderItemWageCalculationSource2.Price.Returns(100);
            orderItemWageCalculationSource2.DiscountMoney.Returns(50);

            var orderItemWageCalculationSource3 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource3.ActualCount.Returns(15);
            orderItemWageCalculationSource3.Price.Returns(100);
            orderItemWageCalculationSource3.DiscountMoney.Returns(300);

            var orderItemWageCalculationSource4 = Substitute.For <IOrderItemWageCalculationSource>();

            orderItemWageCalculationSource4.InitialCount.Returns(1);
            orderItemWageCalculationSource4.Price.Returns(1000);
            orderItemWageCalculationSource4.DiscountMoney.Returns(500);

            var orderDepositItemWageCalculationSource1 = Substitute.For <IOrderDepositItemWageCalculationSource>();

            orderDepositItemWageCalculationSource1.ActualCount.Returns(3);
            orderDepositItemWageCalculationSource1.Deposit.Returns(150);

            var orderDepositItemWageCalculationSource2 = Substitute.For <IOrderDepositItemWageCalculationSource>();

            orderDepositItemWageCalculationSource2.InitialCount.Returns(5);
            orderDepositItemWageCalculationSource2.Deposit.Returns(75);

            var orderDepositItemWageCalculationSource3 = Substitute.For <IOrderDepositItemWageCalculationSource>();

            orderDepositItemWageCalculationSource3.ActualCount.Returns(4);
            orderDepositItemWageCalculationSource3.Deposit.Returns(400);

            var orderDepositItemWageCalculationSource4 = Substitute.For <IOrderDepositItemWageCalculationSource>();

            orderDepositItemWageCalculationSource4.InitialCount.Returns(1);
            orderDepositItemWageCalculationSource4.Deposit.Returns(100);

            var routeListItemWageCalculationSource1 = Substitute.For <IRouteListItemWageCalculationSource>();

            routeListItemWageCalculationSource1.OrderItemsSource.Returns(
                new List <IOrderItemWageCalculationSource> {
                orderItemWageCalculationSource1,
                orderItemWageCalculationSource2
            }
                );

            routeListItemWageCalculationSource1.OrderDepositItemsSource.Returns(
                new List <IOrderDepositItemWageCalculationSource> {
                orderDepositItemWageCalculationSource1,
                orderDepositItemWageCalculationSource2
            }
                );

            var routeListItemWageCalculationSource2 = Substitute.For <IRouteListItemWageCalculationSource>();

            routeListItemWageCalculationSource2.OrderItemsSource.Returns(
                new List <IOrderItemWageCalculationSource> {
                orderItemWageCalculationSource3,
                orderItemWageCalculationSource4
            }
                );

            routeListItemWageCalculationSource2.OrderDepositItemsSource.Returns(
                new List <IOrderDepositItemWageCalculationSource> {
                orderDepositItemWageCalculationSource3,
                orderDepositItemWageCalculationSource4
            }
                );

            IRouteListWageCalculationSource src = Substitute.For <IRouteListWageCalculationSource>();

            src.ItemSources.Returns(
                new List <IRouteListItemWageCalculationSource> {
                routeListItemWageCalculationSource1,
                routeListItemWageCalculationSource2
            }
                );

            IRouteListWageCalculationService percentWageCalculationService = new RouteListPercentWageCalculationService(
                percentWage,
                src
                );

            // act
            var result = percentWageCalculationService.CalculateWage();

            // assert
            Assert.That(result.Wage, Is.EqualTo(12.5));
            Assert.That(result.FixedWage, Is.EqualTo(0));
            Assert.That(result.WageDistrictLevelRate, Is.Null);
        }