dscf-banking 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +0 -0
  3. data/README.md +0 -0
  4. data/Rakefile +0 -0
  5. data/app/controllers/dscf/banking/accounts_controller.rb +152 -0
  6. data/app/controllers/dscf/banking/application_controller.rb +0 -0
  7. data/app/controllers/dscf/banking/applications_controller.rb +113 -0
  8. data/app/controllers/dscf/banking/interest_configurations_controller.rb +0 -0
  9. data/app/controllers/dscf/banking/interest_rate_tiers_controller.rb +0 -0
  10. data/app/controllers/dscf/banking/interest_rate_types_controller.rb +0 -0
  11. data/app/controllers/dscf/banking/product_approvals_controller.rb +0 -0
  12. data/app/controllers/dscf/banking/product_categories_controller.rb +0 -0
  13. data/app/controllers/dscf/banking/transaction_types_controller.rb +27 -0
  14. data/app/controllers/dscf/banking/transactions_controller.rb +275 -0
  15. data/app/controllers/dscf/banking/virtual_account_products_controller.rb +0 -0
  16. data/app/jobs/dscf/banking/application_job.rb +0 -0
  17. data/app/mailers/dscf/banking/application_mailer.rb +0 -0
  18. data/app/models/concerns/dscf/banking/auditable.rb +0 -0
  19. data/app/models/dscf/banking/account.rb +110 -0
  20. data/app/models/dscf/banking/application.rb +70 -0
  21. data/app/models/dscf/banking/application_record.rb +0 -0
  22. data/app/models/dscf/banking/interest_configuration.rb +0 -0
  23. data/app/models/dscf/banking/interest_rate_tier.rb +0 -0
  24. data/app/models/dscf/banking/interest_rate_type.rb +0 -0
  25. data/app/models/dscf/banking/product_approval.rb +0 -0
  26. data/app/models/dscf/banking/product_audit_log.rb +0 -0
  27. data/app/models/dscf/banking/product_category.rb +0 -0
  28. data/app/models/dscf/banking/transaction.rb +68 -0
  29. data/app/models/dscf/banking/transaction_type.rb +20 -0
  30. data/app/models/dscf/banking/virtual_account_product.rb +0 -0
  31. data/app/serializers/dscf/banking/account_serializer.rb +11 -0
  32. data/app/serializers/dscf/banking/application_serializer.rb +16 -0
  33. data/app/serializers/dscf/banking/interest_configuration_serializer.rb +0 -0
  34. data/app/serializers/dscf/banking/interest_rate_tier_serializer.rb +0 -0
  35. data/app/serializers/dscf/banking/interest_rate_type_serializer.rb +0 -0
  36. data/app/serializers/dscf/banking/product_approval_serializer.rb +0 -0
  37. data/app/serializers/dscf/banking/product_category_serializer.rb +0 -0
  38. data/app/serializers/dscf/banking/transaction_serializer.rb +19 -0
  39. data/app/serializers/dscf/banking/transaction_type_serializer.rb +9 -0
  40. data/app/serializers/dscf/banking/virtual_account_product_serializer.rb +0 -0
  41. data/app/services/dscf/banking/account_creation_service.rb +53 -0
  42. data/app/services/dscf/banking/base_transaction_service.rb +99 -0
  43. data/app/services/dscf/banking/deposit_service.rb +97 -0
  44. data/app/services/dscf/banking/transfer_service.rb +78 -0
  45. data/app/services/dscf/banking/withdrawal_service.rb +100 -0
  46. data/config/routes.rb +27 -0
  47. data/db/migrate/20250830211002_create_dscf_banking_product_categories.rb +0 -0
  48. data/db/migrate/20250830211027_create_dscf_banking_interest_rate_types.rb +0 -0
  49. data/db/migrate/20250831063605_add_code_and_remove_fields_from_interest_rate_types.rb +0 -0
  50. data/db/migrate/20250831064917_create_dscf_banking_virtual_account_products.rb +0 -0
  51. data/db/migrate/20250831072627_create_dscf_banking_interest_configurations.rb +0 -0
  52. data/db/migrate/20250831080745_create_dscf_banking_interest_rate_tiers.rb +0 -0
  53. data/db/migrate/20250831082356_create_dscf_banking_product_approvals.rb +0 -0
  54. data/db/migrate/20250831083907_create_dscf_banking_product_audit_logs.rb +0 -0
  55. data/db/migrate/20250831084706_allow_null_virtual_account_product_id_in_product_audit_logs.rb +0 -0
  56. data/db/migrate/20250912193134_create_dscf_banking_applications.rb +20 -0
  57. data/db/migrate/20250912203527_create_dscf_banking_accounts.rb +21 -0
  58. data/db/migrate/20250919084147_add_account_type_to_accounts.rb +6 -0
  59. data/db/migrate/20250919084927_make_account_associations_optional.rb +6 -0
  60. data/db/migrate/20250919182831_create_dscf_banking_transaction_types.rb +14 -0
  61. data/db/migrate/20250919184220_create_dscf_banking_transactions.rb +21 -0
  62. data/db/seeds.rb +125 -0
  63. data/lib/dscf/banking/engine.rb +0 -0
  64. data/lib/dscf/banking/version.rb +1 -1
  65. data/lib/dscf/banking.rb +0 -0
  66. data/lib/tasks/dscf/banking_tasks.rake +0 -0
  67. data/spec/factories/dscf/banking/accounts.rb +79 -0
  68. data/spec/factories/dscf/banking/applications.rb +65 -0
  69. data/spec/factories/dscf/banking/interest_configurations.rb +0 -0
  70. data/spec/factories/dscf/banking/interest_rate_tiers.rb +0 -0
  71. data/spec/factories/dscf/banking/interest_rate_types.rb +0 -0
  72. data/spec/factories/dscf/banking/product_approvals.rb +0 -0
  73. data/spec/factories/dscf/banking/product_audit_logs.rb +0 -0
  74. data/spec/factories/dscf/banking/product_categories.rb +0 -0
  75. data/spec/factories/dscf/banking/transaction_types.rb +56 -0
  76. data/spec/factories/dscf/banking/transactions.rb +52 -0
  77. data/spec/factories/dscf/banking/virtual_account_products.rb +0 -0
  78. metadata +30 -2
@@ -0,0 +1,56 @@
1
+ FactoryBot.define do
2
+ factory :dscf_banking_transaction_type, class: "Dscf::Banking::TransactionType" do
3
+ sequence(:code) { |n| "TXN_TYPE_#{n}" }
4
+ sequence(:name) { |n| "Transaction Type #{n}" }
5
+ description { "Test transaction type description" }
6
+
7
+ trait :deposit do
8
+ code { "DEPOSIT" }
9
+ name { "Deposit" }
10
+ description { "Customer deposit from external source" }
11
+ end
12
+
13
+ trait :withdrawal do
14
+ code { "WITHDRAWAL" }
15
+ name { "Withdrawal" }
16
+ description { "Customer withdrawal to external destination" }
17
+ end
18
+
19
+ trait :transfer do
20
+ code { "TRANSFER" }
21
+ name { "Transfer" }
22
+ description { "Transfer between customer accounts" }
23
+ end
24
+
25
+ trait :interest_credit do
26
+ code { "INTEREST_CREDIT" }
27
+ name { "Interest Credit" }
28
+ description { "Interest payment to customer account" }
29
+ end
30
+
31
+ trait :interest_expense do
32
+ code { "INTEREST_EXPENSE" }
33
+ name { "Interest Expense" }
34
+ description { "Interest expense booking" }
35
+ end
36
+
37
+ trait :tax_withholding do
38
+ code { "TAX_WITHHOLDING" }
39
+ name { "Tax Withholding" }
40
+ description { "Tax withholding on interest payments" }
41
+ end
42
+
43
+ trait :settlement do
44
+ code { "SETTLEMENT" }
45
+ name { "Settlement" }
46
+ description { "Settlement transaction with core banking system" }
47
+ end
48
+ end
49
+
50
+ # Alias for shared spec compatibility
51
+ factory :transaction_type, class: "Dscf::Banking::TransactionType" do
52
+ sequence(:code) { |n| "TXN_TYPE_#{n}" }
53
+ sequence(:name) { |n| "Transaction Type #{n}" }
54
+ description { "Test transaction type description" }
55
+ end
56
+ end
@@ -0,0 +1,52 @@
1
+ FactoryBot.define do
2
+ factory :dscf_banking_transaction, class: "Dscf::Banking::Transaction" do
3
+ association :account, factory: :dscf_banking_account
4
+ association :transaction_type, factory: [ :dscf_banking_transaction_type, :deposit ]
5
+ association :debit_account, factory: :dscf_banking_account
6
+ association :credit_account, factory: :dscf_banking_account
7
+
8
+ amount { 1000.00 }
9
+ currency { "ETB" }
10
+ description { "Test transaction" }
11
+ status { :pending }
12
+
13
+ trait :deposit do
14
+ association :transaction_type, factory: [ :dscf_banking_transaction_type, :deposit ]
15
+
16
+ after(:build) do |transaction|
17
+ transaction.credit_account = transaction.account
18
+ transaction.debit_account = create(:dscf_banking_account, :settlement_account, currency: transaction.currency)
19
+ end
20
+ end
21
+
22
+ trait :withdrawal do
23
+ association :transaction_type, factory: [ :dscf_banking_transaction_type, :withdrawal ]
24
+
25
+ after(:build) do |transaction|
26
+ transaction.debit_account = transaction.account
27
+ transaction.credit_account = create(:dscf_banking_account, :settlement_account, currency: transaction.currency)
28
+ end
29
+ end
30
+
31
+ trait :completed do
32
+ status { :completed }
33
+ end
34
+
35
+ trait :failed do
36
+ status { :failed }
37
+ end
38
+ end
39
+
40
+ # Alias for shared spec compatibility
41
+ factory :transaction, class: "Dscf::Banking::Transaction" do
42
+ association :account, factory: :dscf_banking_account
43
+ association :transaction_type, factory: [ :dscf_banking_transaction_type, :deposit ]
44
+ association :debit_account, factory: :dscf_banking_account
45
+ association :credit_account, factory: :dscf_banking_account
46
+
47
+ amount { 1000.00 }
48
+ currency { "ETB" }
49
+ description { "Test transaction" }
50
+ status { :pending }
51
+ end
52
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dscf-banking
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eyosiyas Mekbib
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-08-31 00:00:00.000000000 Z
10
+ date: 2025-09-20 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -439,16 +439,22 @@ files:
439
439
  - MIT-LICENSE
440
440
  - README.md
441
441
  - Rakefile
442
+ - app/controllers/dscf/banking/accounts_controller.rb
442
443
  - app/controllers/dscf/banking/application_controller.rb
444
+ - app/controllers/dscf/banking/applications_controller.rb
443
445
  - app/controllers/dscf/banking/interest_configurations_controller.rb
444
446
  - app/controllers/dscf/banking/interest_rate_tiers_controller.rb
445
447
  - app/controllers/dscf/banking/interest_rate_types_controller.rb
446
448
  - app/controllers/dscf/banking/product_approvals_controller.rb
447
449
  - app/controllers/dscf/banking/product_categories_controller.rb
450
+ - app/controllers/dscf/banking/transaction_types_controller.rb
451
+ - app/controllers/dscf/banking/transactions_controller.rb
448
452
  - app/controllers/dscf/banking/virtual_account_products_controller.rb
449
453
  - app/jobs/dscf/banking/application_job.rb
450
454
  - app/mailers/dscf/banking/application_mailer.rb
451
455
  - app/models/concerns/dscf/banking/auditable.rb
456
+ - app/models/dscf/banking/account.rb
457
+ - app/models/dscf/banking/application.rb
452
458
  - app/models/dscf/banking/application_record.rb
453
459
  - app/models/dscf/banking/interest_configuration.rb
454
460
  - app/models/dscf/banking/interest_rate_tier.rb
@@ -456,13 +462,24 @@ files:
456
462
  - app/models/dscf/banking/product_approval.rb
457
463
  - app/models/dscf/banking/product_audit_log.rb
458
464
  - app/models/dscf/banking/product_category.rb
465
+ - app/models/dscf/banking/transaction.rb
466
+ - app/models/dscf/banking/transaction_type.rb
459
467
  - app/models/dscf/banking/virtual_account_product.rb
468
+ - app/serializers/dscf/banking/account_serializer.rb
469
+ - app/serializers/dscf/banking/application_serializer.rb
460
470
  - app/serializers/dscf/banking/interest_configuration_serializer.rb
461
471
  - app/serializers/dscf/banking/interest_rate_tier_serializer.rb
462
472
  - app/serializers/dscf/banking/interest_rate_type_serializer.rb
463
473
  - app/serializers/dscf/banking/product_approval_serializer.rb
464
474
  - app/serializers/dscf/banking/product_category_serializer.rb
475
+ - app/serializers/dscf/banking/transaction_serializer.rb
476
+ - app/serializers/dscf/banking/transaction_type_serializer.rb
465
477
  - app/serializers/dscf/banking/virtual_account_product_serializer.rb
478
+ - app/services/dscf/banking/account_creation_service.rb
479
+ - app/services/dscf/banking/base_transaction_service.rb
480
+ - app/services/dscf/banking/deposit_service.rb
481
+ - app/services/dscf/banking/transfer_service.rb
482
+ - app/services/dscf/banking/withdrawal_service.rb
466
483
  - config/routes.rb
467
484
  - db/migrate/20250830211002_create_dscf_banking_product_categories.rb
468
485
  - db/migrate/20250830211027_create_dscf_banking_interest_rate_types.rb
@@ -473,16 +490,27 @@ files:
473
490
  - db/migrate/20250831082356_create_dscf_banking_product_approvals.rb
474
491
  - db/migrate/20250831083907_create_dscf_banking_product_audit_logs.rb
475
492
  - db/migrate/20250831084706_allow_null_virtual_account_product_id_in_product_audit_logs.rb
493
+ - db/migrate/20250912193134_create_dscf_banking_applications.rb
494
+ - db/migrate/20250912203527_create_dscf_banking_accounts.rb
495
+ - db/migrate/20250919084147_add_account_type_to_accounts.rb
496
+ - db/migrate/20250919084927_make_account_associations_optional.rb
497
+ - db/migrate/20250919182831_create_dscf_banking_transaction_types.rb
498
+ - db/migrate/20250919184220_create_dscf_banking_transactions.rb
499
+ - db/seeds.rb
476
500
  - lib/dscf/banking.rb
477
501
  - lib/dscf/banking/engine.rb
478
502
  - lib/dscf/banking/version.rb
479
503
  - lib/tasks/dscf/banking_tasks.rake
504
+ - spec/factories/dscf/banking/accounts.rb
505
+ - spec/factories/dscf/banking/applications.rb
480
506
  - spec/factories/dscf/banking/interest_configurations.rb
481
507
  - spec/factories/dscf/banking/interest_rate_tiers.rb
482
508
  - spec/factories/dscf/banking/interest_rate_types.rb
483
509
  - spec/factories/dscf/banking/product_approvals.rb
484
510
  - spec/factories/dscf/banking/product_audit_logs.rb
485
511
  - spec/factories/dscf/banking/product_categories.rb
512
+ - spec/factories/dscf/banking/transaction_types.rb
513
+ - spec/factories/dscf/banking/transactions.rb
486
514
  - spec/factories/dscf/banking/virtual_account_products.rb
487
515
  homepage: https://mksaddis.com/
488
516
  licenses: []