/// <summary>
        /// Calculation generic
        /// </summary>
        /// <param name="calculateParams"></param>
        /// <returns></returns>
        public async Task <ICalculateResult> CalculateAsync(ICalculateParams calculateParams)
        {
            //result instance
            var calculateGenericResult = new CalculateGenericResult();
            var genericParams          = calculateParams as CalculateGenericParams;

            var calculateOverdraftParams = new CalculateOverdraftParams()
            {
                DeleteAccumulates = true,
                SaveOverdraft     = false,
                IdentityWorkID    = genericParams.IdentityWorkID,
                InstanceID        = genericParams.InstanceID,
                OverdraftID       = genericParams.OverdraftID.Value,
                ResetCalculation  = false,
            };

            var overdraftCalculationManager = new OverdraftCalculationManager();
            await overdraftCalculationManager.CalculateAsync(calculateOverdraftParams);

            var calculateResult = overdraftCalculationManager.CalculateFormula(genericParams.Formula);

            calculateGenericResult.Result             = calculateResult.Result;
            calculateGenericResult.ResultText         = calculateResult.ResultText;
            calculateGenericResult.CalculateArguments = calculateResult.CalculateArguments;

            return(calculateGenericResult);
        }
Beispiel #2
0
        public async Task <CalculateOverdraftResult> CalculateOverdraftAsync(CalculateOverdraftParams calculateOverdraftParams)
        {
            ICalculationManager calculationManager = new OverdraftCalculationManager();
            var calculationResult = await calculationManager.CalculateAsync(calculateOverdraftParams) as CalculateOverdraftResult;

            return(calculationResult);
        }
        private async Task <Overdraft> Calculate(Overdraft actualOverdraft, Guid identityWorkID, Guid instanceID, Guid user)
        {
            var mgr    = new OverdraftCalculationManager();
            var result = await mgr.CalculateAsync(new CalculateOverdraftParams()
            {
                IdentityWorkID    = identityWorkID,
                InstanceID        = instanceID,
                DeleteAccumulates = false,
                OverdraftID       = actualOverdraft.ID,
                ResetCalculation  = false,
                UserID            = user
            });

            return((result as CalculateOverdraftResult).OverdraftResult);
        }
Beispiel #4
0
        public async Task TM_229_()
        {
            using var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);

            //Arrange
            var identityWorkId = Guid.NewGuid();
            var instanceID     = Guid.NewGuid();

            var diarySalary = 250M;
            var fixedSBC    = 261.30M;

            //creates overdraft
            var overdraft = await new PayrollStampingManagerUT().CreateRealOverdraftAsync(
                identityWorkId, instanceID, diarySalary, fixedSBC);

            ICalculateParams calculateByOverdraftParams = new Schema.Calculation.CalculateOverdraftParams()
            {
                OverdraftID      = overdraft.ID,
                IdentityWorkID   = identityWorkId,
                InstanceID       = instanceID,
                ResetCalculation = true,
                UserID           = Guid.NewGuid()
            };

            //Act
            ICalculationManager overdraftCalculationManager = new OverdraftCalculationManager();
            var calculateResult = await overdraftCalculationManager.CalculateAsync(calculateByOverdraftParams);

            var calculateOverdraftResult = calculateResult as CalculateOverdraftResult;
            var details = calculateOverdraftResult.OverdraftResult.OverdraftDetails;

            //Asserts
            //Ret. Inv. Y Vida - Deducción 5
            var retInvYVida = details.FirstOrDefault(p =>
                                                     p.ConceptPayment.Code == 5 &&
                                                     p.ConceptPayment.ConceptType == ConceptType.DeductionPayment);

            Assert.True(retInvYVida.Amount == 24.5M);

            //Ret. Cesantia - Deduccion 6
            var retCesantia = details.FirstOrDefault(p =>
                                                     p.ConceptPayment.Code == 6 &&
                                                     p.ConceptPayment.ConceptType == ConceptType.DeductionPayment);

            Assert.True(retCesantia.Amount == 44.09M);
        }