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}"); } }
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)); }
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); }); }