private async Task GetLevyForNoneAornPayeSchemes(Paye payeScheme, IMessageHandlerContext context)
        {
            if (string.IsNullOrEmpty(payeScheme.Aorn))
            {
                await context.SendLocal(new ImportAccountLevyDeclarationsCommand(payeScheme.AccountId, payeScheme.EmpRef));

                _logger.Info($"Requested levy for - Account Id: {payeScheme.AccountId}; Emp Ref: {payeScheme.EmpRef}");
            }
        }
Exemplo n.º 2
0
        public async Task CreatePayeScheme(Paye paye)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@accountId", paye.AccountId, DbType.Int64);
            parameters.Add("@empRef", paye.EmpRef, DbType.String);
            parameters.Add("@name", paye.Name, DbType.String);
            parameters.Add("@aorn", paye.Aorn, DbType.String);

            await _db.Value.Database.Connection.ExecuteAsync(
                sql : "[employer_financial].[CreateAccountPaye]",
                param : parameters,
                transaction : _db.Value.Database.CurrentTransaction.UnderlyingTransaction,
                commandType : CommandType.StoredProcedure);
        }
        public async Task Handle(CreateAccountPayeCommand message, IMessageHandlerContext context)
        {
            try
            {
                var payeScheme = new Paye(message.EmpRef, message.AccountId, message.Name, message.Aorn);
                await _payeRepository.CreatePayeScheme(payeScheme);

                await GetLevyForNoneAornPayeSchemes(payeScheme, context);

                _logger.Info($"Account Paye scheme created - Account Id: {payeScheme.AccountId}; Emp Ref: {payeScheme.EmpRef}");
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Could not create account paye scheme");
                throw;
            }
        }
        public Task AddPayeToAccount(Paye payeScheme)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@accountId", payeScheme.AccountId, DbType.Int64);
            parameters.Add("@employerRef", payeScheme.EmpRef, DbType.String);
            parameters.Add("@accessToken", payeScheme.AccessToken, DbType.String);
            parameters.Add("@refreshToken", payeScheme.RefreshToken, DbType.String);
            parameters.Add("@addedDate", DateTime.UtcNow, DbType.DateTime);
            parameters.Add("@employerRefName", payeScheme.RefName, DbType.String);

            return(_db.Value.Database.Connection.ExecuteAsync(
                       sql: "[employer_account].[AddPayeToAccount]",
                       param: parameters,
                       transaction: _db.Value.Database.CurrentTransaction.UnderlyingTransaction,
                       commandType: CommandType.StoredProcedure));
        }
Exemplo n.º 5
0
 public void CalculateTax()
 {
     GrossSalary = double.Parse(grossSalarytextBox.Text);
     if (GrossSalary > 1)
     {
         AnnualGross = GrossSalary * 12;
         Paye        = 0;
         if (AnnualGross * 0.20 < 200000)
         {
             TaxFreeAllowance = 200000 + 10000;
         }
         else
         {
             TaxFreeAllowance = AnnualGross * 0.20 + 10000;
         }
         TaxableIncome = AnnualGross - TaxFreeAllowance;
         Bal           = TaxableIncome;
         if (Bal <= 300000)
         {
             Paye = Paye + 300000 * 0.07;
             Bal  = Bal - 300000;
         }
         if (Bal > 300000)
         {
             Paye = Paye + 300000 * 0.11;
             Bal  = Bal - 300000;
         }
         if (Bal > 500000)
         {
             Paye = Paye + 500000 * 0.15;
             Bal  = Bal - 500000;
         }
         if (Bal > 500000)
         {
             Paye = Paye + Bal * 0.17;
             Bal  = 0;
         }
         Paye          = Paye / 12;
         ptextBox.Text = Paye.ToString("###,###.00");
     }
 }
        public async Task AddPayeToAccount(Paye payeScheme)
        {
            await WithConnection(async c =>
            {
                var parameters = new DynamicParameters();
                parameters.Add("@accountId", payeScheme.AccountId, DbType.Int64);
                parameters.Add("@employerRef", payeScheme.EmpRef, DbType.String);
                parameters.Add("@accessToken", payeScheme.AccessToken, DbType.String);
                parameters.Add("@refreshToken", payeScheme.RefreshToken, DbType.String);
                parameters.Add("@addedDate", DateTime.UtcNow, DbType.DateTime);
                parameters.Add("@employerRefName", payeScheme.RefName, DbType.String);

                var trans  = c.BeginTransaction();
                var result = await c.ExecuteAsync(
                    sql: "[employer_account].[AddPayeToAccount]",
                    param: parameters,
                    commandType: CommandType.StoredProcedure, transaction: trans);
                trans.Commit();
                return(result);
            });
        }