ffc-pay-schemes 1.0.9 → 1.0.11

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 (124) hide show
  1. package/README.md +26 -0
  2. package/app/constants/frps-schemes.js +3 -0
  3. package/app/constants/siti-agri-schemes.js +3 -0
  4. package/app/create-split-invoice-number/index.js +5 -11
  5. package/app/helpers/get-reporting-data-filter.js +23 -0
  6. package/app/helpers/is-frps.js +9 -0
  7. package/app/helpers/is-siti-agri.js +9 -0
  8. package/app/{is-valid-scheme-id.js → helpers/is-valid-scheme-id.js} +1 -1
  9. package/app/{scheme-does-not-require-ppas.js → helpers/scheme-does-not-require-ppas.js} +1 -1
  10. package/app/{scheme-provides-accounting-values.js → helpers/scheme-provides-accounting-values.js} +1 -1
  11. package/app/{get-scheme-id-from-pillar.js → scheme-id/get-scheme-id-from-pillar.js} +1 -1
  12. package/app/{get-scheme-id-from-source-system.js → scheme-id/get-scheme-id-from-source-system.js} +1 -1
  13. package/app/{get-scheme-ids.js → scheme-id/get-scheme-ids.js} +1 -1
  14. package/app/{get-scheme-name-from-scheme-id.js → scheme-name/get-scheme-name-from-scheme-id.js} +2 -2
  15. package/app/{get-scheme-names.js → scheme-name/get-scheme-names.js} +1 -1
  16. package/app/{get-scheme-batch-properties.js → scheme-properties/get-scheme-batch-properties.js} +1 -1
  17. package/app/{get-scheme-properties.js → scheme-properties/get-scheme-properties.js} +2 -2
  18. package/app/{get-schemes.js → scheme-properties/get-schemes.js} +4 -4
  19. package/app/{get-source-system-from-scheme-id.js → source-system/get-source-system-from-scheme-id.js} +2 -2
  20. package/app/{get-source-systems.js → source-system/get-source-systems.js} +1 -1
  21. package/index.js +17 -13
  22. package/package.json +1 -1
  23. package/test/unit/create-split-invoice-number/index.test.js +26 -24
  24. package/test/unit/helpers/get-reporting-data-filter.test.js +44 -0
  25. package/test/unit/helpers/is-frps.test.js +17 -0
  26. package/test/unit/helpers/is-siti-agri.test.js +17 -0
  27. package/test/unit/{is-valid-scheme-id.test.js → helpers/is-valid-scheme-id.test.js} +2 -2
  28. package/test/unit/{scheme-does-not-require-ppas.test.js → helpers/scheme-does-not-require-ppas.test.js} +3 -3
  29. package/test/unit/{scheme-provides-accounting-values.test.js → helpers/scheme-provides-accounting-values.test.js} +3 -3
  30. package/test/unit/{get-scheme-id-from-pillar.test.js → scheme-id/get-scheme-id-from-pillar.test.js} +3 -3
  31. package/test/unit/{get-scheme-id-from-source-system.test.js → scheme-id/get-scheme-id-from-source-system.test.js} +3 -3
  32. package/test/unit/scheme-id/get-scheme-ids.test.js +8 -0
  33. package/test/unit/{get-scheme-name-from-scheme-id.test.js → scheme-name/get-scheme-name-from-scheme-id.test.js} +4 -4
  34. package/test/unit/scheme-name/get-scheme-names.test.js +8 -0
  35. package/test/unit/{get-scheme-batch-properties.test.js → scheme-properties/get-scheme-batch-properties.test.js} +2 -2
  36. package/test/unit/{get-scheme-properties.test.js → scheme-properties/get-scheme-properties.test.js} +3 -3
  37. package/test/unit/{get-schemes.test.js → scheme-properties/get-schemes.test.js} +5 -5
  38. package/test/unit/{get-source-system-from-scheme-id.test.js → source-system/get-source-system-from-scheme-id.test.js} +4 -4
  39. package/test/unit/source-system/get-source-systems.test.js +8 -0
  40. package/test-output/cobertura-coverage.xml +345 -281
  41. package/test-output/junit.xml +347 -353
  42. package/test-output/lcov-report/ffc-pay-schemes/app/constants/account-codes/ap.js.html +1 -1
  43. package/test-output/lcov-report/ffc-pay-schemes/app/constants/account-codes/ar-admin.js.html +1 -1
  44. package/test-output/lcov-report/ffc-pay-schemes/app/constants/account-codes/ar-irregular.js.html +1 -1
  45. package/test-output/lcov-report/ffc-pay-schemes/app/constants/account-codes/index.html +1 -1
  46. package/test-output/lcov-report/ffc-pay-schemes/app/constants/delivery-bodies.js.html +1 -1
  47. package/test-output/lcov-report/ffc-pay-schemes/app/constants/description-codes.js.html +1 -1
  48. package/test-output/lcov-report/ffc-pay-schemes/app/constants/frps-schemes.js.html +94 -0
  49. package/test-output/lcov-report/ffc-pay-schemes/app/constants/fund-codes.js.html +1 -1
  50. package/test-output/lcov-report/ffc-pay-schemes/app/constants/index.html +18 -3
  51. package/test-output/lcov-report/ffc-pay-schemes/app/constants/pillars.js.html +2 -2
  52. package/test-output/lcov-report/ffc-pay-schemes/app/constants/scheme-batch-properties.js.html +1 -1
  53. package/test-output/lcov-report/ffc-pay-schemes/app/constants/scheme-ids.js.html +2 -2
  54. package/test-output/lcov-report/ffc-pay-schemes/app/constants/scheme-names.js.html +1 -1
  55. package/test-output/lcov-report/ffc-pay-schemes/app/constants/schemes-not-requiring-ppas.js.html +1 -1
  56. package/test-output/lcov-report/ffc-pay-schemes/app/constants/schemes-providing-account-values.js.html +1 -1
  57. package/test-output/lcov-report/ffc-pay-schemes/app/constants/schemes.js.html +1 -1
  58. package/test-output/lcov-report/ffc-pay-schemes/app/constants/siti-agri-schemes.js.html +94 -0
  59. package/test-output/lcov-report/ffc-pay-schemes/app/constants/source-systems.js.html +1 -1
  60. package/test-output/lcov-report/ffc-pay-schemes/app/constants/unknown.js.html +1 -1
  61. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/create-default-invoice-number.js.html +1 -1
  62. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/create-es-invoice-number.js.html +1 -1
  63. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/create-imps-invoice-number.js.html +1 -1
  64. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/create-siti-agri-invoice-number.js.html +1 -1
  65. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/create-standard-scheme-invoice-number.js.html +1 -1
  66. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/index.html +1 -1
  67. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/index.js.html +1 -1
  68. package/test-output/lcov-report/ffc-pay-schemes/app/create-invoice-number/use-invoice-number-as-is.js.html +1 -1
  69. package/test-output/lcov-report/ffc-pay-schemes/app/create-split-invoice-number/create-default-invoice-number.js.html +5 -5
  70. package/test-output/lcov-report/ffc-pay-schemes/app/create-split-invoice-number/create-siti-agri-invoice-number.js.html +5 -5
  71. package/test-output/lcov-report/ffc-pay-schemes/app/create-split-invoice-number/index.html +3 -3
  72. package/test-output/lcov-report/ffc-pay-schemes/app/create-split-invoice-number/index.js.html +11 -29
  73. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/bps-map.js.html +1 -1
  74. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/cohtc-map.js.html +1 -1
  75. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/cs-map.js.html +1 -1
  76. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/default-map.js.html +1 -1
  77. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/delinked-map.js.html +1 -1
  78. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/index.html +1 -1
  79. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/index.js.html +1 -1
  80. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/lump-sums-map.js.html +1 -1
  81. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/sfi-frps-map.js.html +1 -1
  82. package/test-output/lcov-report/ffc-pay-schemes/app/get-account-code-map/vet-visits-map.js.html +1 -1
  83. package/test-output/lcov-report/ffc-pay-schemes/app/get-scheme-batch-properties.js.html +1 -1
  84. package/test-output/lcov-report/ffc-pay-schemes/app/get-scheme-name-from-scheme-id.js.html +22 -22
  85. package/test-output/lcov-report/ffc-pay-schemes/app/get-scheme-names.js.html +1 -1
  86. package/test-output/lcov-report/ffc-pay-schemes/app/get-scheme-properties.js.html +1 -1
  87. package/test-output/lcov-report/ffc-pay-schemes/app/get-schemes.js.html +5 -5
  88. package/test-output/lcov-report/ffc-pay-schemes/app/get-source-system-from-scheme-id.js.html +1 -1
  89. package/test-output/lcov-report/ffc-pay-schemes/app/get-source-systems.js.html +1 -1
  90. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/get-reporting-data-filter.js.html +154 -0
  91. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/index.html +176 -0
  92. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/is-frps.js.html +112 -0
  93. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/is-siti-agri.js.html +112 -0
  94. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/is-valid-scheme-id.js.html +115 -0
  95. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/scheme-does-not-require-ppas.js.html +112 -0
  96. package/test-output/lcov-report/ffc-pay-schemes/app/helpers/scheme-provides-accounting-values.js.html +112 -0
  97. package/test-output/lcov-report/ffc-pay-schemes/app/index.html +21 -186
  98. package/test-output/lcov-report/ffc-pay-schemes/app/is-valid-scheme-id.js.html +1 -1
  99. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-does-not-require-ppas.js.html +1 -1
  100. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-id/get-scheme-id-from-pillar.js.html +115 -0
  101. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-id/get-scheme-id-from-source-system.js.html +115 -0
  102. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-id/get-scheme-ids.js.html +112 -0
  103. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-id/index.html +146 -0
  104. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-id/is-valid-scheme-id.js.html +115 -0
  105. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-name/get-scheme-name-from-scheme-id.js.html +118 -0
  106. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-name/get-scheme-names.js.html +112 -0
  107. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-name/index.html +131 -0
  108. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/get-scheme-batch-properties.js.html +112 -0
  109. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/get-scheme-properties.js.html +178 -0
  110. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/get-schemes.js.html +133 -0
  111. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/index.html +146 -0
  112. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/scheme-does-not-require-ppas.js.html +112 -0
  113. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-properties/scheme-provides-accounting-values.js.html +112 -0
  114. package/test-output/lcov-report/ffc-pay-schemes/app/scheme-provides-accounting-values.js.html +1 -1
  115. package/test-output/lcov-report/ffc-pay-schemes/app/source-system/get-source-system-from-scheme-id.js.html +118 -0
  116. package/test-output/lcov-report/ffc-pay-schemes/app/source-system/get-source-systems.js.html +112 -0
  117. package/test-output/lcov-report/ffc-pay-schemes/app/source-system/index.html +131 -0
  118. package/test-output/lcov-report/ffc-pay-schemes/index.html +5 -5
  119. package/test-output/lcov-report/ffc-pay-schemes/index.js.html +29 -17
  120. package/test-output/lcov-report/index.html +87 -27
  121. package/test-output/lcov.info +324 -272
  122. package/test/unit/get-scheme-ids.test.js +0 -8
  123. package/test/unit/get-scheme-names.test.js +0 -8
  124. package/test/unit/get-source-systems.test.js +0 -8
package/README.md CHANGED
@@ -17,6 +17,7 @@ const {
17
17
  createInvoiceNumber,
18
18
  createSplitInvoiceNumber,
19
19
  getAccountCodeMap,
20
+ getReportingDataFilter,
20
21
  getSchemeBatchProperties,
21
22
  getSchemeIdFromPillar,
22
23
  getSchemeIdFromSourceSystem,
@@ -27,6 +28,8 @@ const {
27
28
  getSchemes,
28
29
  getSourceSystemFromSchemeId,
29
30
  getSourceSystems,
31
+ isFRPS,
32
+ isSitiAgri,
30
33
  isValidSchemeId,
31
34
  schemeDoesNotRequirePPAs,
32
35
  schemeProvidesAccountingValues
@@ -36,6 +39,7 @@ const {
36
39
  - `createInvoiceNumber(paymentRequest)` creates an invoice number for a given `paymentRequest`.
37
40
  - `createSplitInvoiceNumber(paymentRequest)` creates a split invoice number for a given `paymentRequest`.
38
41
  - `getAccountCodeMap(schemeId)` returns the account code mapping used for a given `schemeId`.
42
+ - `getReportingDataFilter(schemeId)` returns the fields which should be added to any data filters applied in reporting checks, for a given `schemeId`.
39
43
  - `getSchemeBatchProperties(schemeId)` returns the batch processing properties for a given `schemeId`.
40
44
  - `getSchemeIdFromPillar(pillar)` returns the scheme ID for a given `pillar`.
41
45
  - `getSchemeIdFromSourceSystem(sourceSystem)` returns the scheme ID for a given `sourceSystem`.
@@ -46,6 +50,8 @@ const {
46
50
  - `getSchemes()` returns all supported schemes as an array of objects containing `schemeId`, `schemeName`, `sourceSystem` and `pillar`.
47
51
  - `getSourceSystemFromSchemeId(schemeId)` returns the source system name for a given `schemeId`.
48
52
  - `getSourceSystems()` returns all supported source systems.
53
+ - `isFRPS(schemeId)` returns `true` if the scheme ID comes from FRPS, or `false` if not.
54
+ - `isSitiAgri(schemeId)` returns `true` if the scheme ID comes from Siti Agri, or `false` if not.
49
55
  - `isValidSchemeId(schemeId)` returns `true` if the scheme ID is recognised, or `false` if not, including converting the scheme ID to a numeric value first if required.
50
56
  - `schemeDoesNotRequirePPAs(schemeId)` returns `true` if Payment Hub does not support Post Payment Adjustments (PPAs) for a given `schemeId`; otherwise, it returns `false`.
51
57
  - `schemeProvidesAccountingValues(schemeId)` returns `true` if a given `schemeId` provides accounting values within its payment requests; otherwise, it returns `false`.
@@ -69,6 +75,26 @@ const doesNotRequirePPAs = schemeDoesNotRequirePPAs(schemeIds.BPS)
69
75
  const providesAccountingValues = schemeProvidesAccountingValues(schemeIds.BPS)
70
76
  ```
71
77
 
78
+ ## Payment Hub usage
79
+
80
+ The following services are intended to be used with the ffc-pay-schemes package:
81
+
82
+ - ffc-pay-alerting
83
+ - ffc-pay-batch-processor
84
+ - ffc-pay-dps
85
+ - ffc-pay-enrichment
86
+ - ffc-pay-event-hub
87
+ - ffc-pay-gateway
88
+ - ffc-pay-injection
89
+ - ffc-pay-processing
90
+ - ffc-pay-request-editor
91
+ - ffc-pay-submission
92
+ - ffc-pay-tracking
93
+ - ffc-pay-web
94
+ - ffc-pay-xb
95
+
96
+ In the event a new payment scheme is added to the package, all of the above services must be bumped to the latest package version to ensure that Payment Hub can process associated payments.
97
+
72
98
  ## Licence
73
99
 
74
100
  THIS INFORMATION IS LICENSED UNDER THE CONDITIONS OF THE OPEN GOVERNMENT
@@ -0,0 +1,3 @@
1
+ const { FPTT, WMP } = require('./scheme-ids')
2
+
3
+ module.exports = [FPTT, WMP]
@@ -0,0 +1,3 @@
1
+ const { SFI, SFI_PILOT, LUMP_SUMS, CS, BPS, SFI23, DELINKED, SFI_EXPANDED, COHT_REVENUE, COHT_CAPITAL } = require('../constants/scheme-ids')
2
+
3
+ module.exports = [SFI, SFI_PILOT, LUMP_SUMS, CS, BPS, SFI23, DELINKED, SFI_EXPANDED, COHT_REVENUE, COHT_CAPITAL]
@@ -1,19 +1,13 @@
1
- const { SFI, LUMP_SUMS, SFI_PILOT, SFI23, DELINKED, SFI_EXPANDED } = require('../constants/scheme-ids')
1
+ const { isSitiAgri } = require('../helpers/is-siti-agri')
2
2
  const { createDefaultInvoiceNumber } = require('./create-default-invoice-number')
3
3
  const { createSitiAgriInvoiceNumber } = require('./create-siti-agri-invoice-number')
4
4
 
5
5
  const createSplitInvoiceNumber = (invoiceNumber, splitId, schemeId) => {
6
- switch (schemeId) {
7
- case SFI:
8
- case SFI_PILOT:
9
- case LUMP_SUMS:
10
- case SFI23:
11
- case DELINKED:
12
- case SFI_EXPANDED:
13
- return createSitiAgriInvoiceNumber(invoiceNumber, splitId)
14
- default:
15
- return createDefaultInvoiceNumber(invoiceNumber, splitId)
6
+ if (isSitiAgri(schemeId)) {
7
+ return createSitiAgriInvoiceNumber(invoiceNumber, splitId)
16
8
  }
9
+
10
+ return createDefaultInvoiceNumber(invoiceNumber, splitId)
17
11
  }
18
12
 
19
13
  module.exports = {
@@ -0,0 +1,23 @@
1
+ const { BPS, DELINKED, CS } = require('../constants/scheme-ids')
2
+ const { isFRPS } = require('./is-frps')
3
+
4
+ const getReportingDataFilter = (schemeId) => {
5
+ const defaultFilter = ['marketingYear', 'agreementNumber']
6
+ switch (schemeId) {
7
+ case BPS:
8
+ case DELINKED:
9
+ return ['marketingYear']
10
+ case CS:
11
+ return ['contractNumber']
12
+ default:
13
+ if (isFRPS(schemeId)) {
14
+ return [...defaultFilter, 'correlationId']
15
+ } else {
16
+ return defaultFilter
17
+ }
18
+ }
19
+ }
20
+
21
+ module.exports = {
22
+ getReportingDataFilter
23
+ }
@@ -0,0 +1,9 @@
1
+ const frpsSchemes = require('../constants/frps-schemes')
2
+
3
+ const isFRPS = (schemeId) => {
4
+ return frpsSchemes.includes(schemeId)
5
+ }
6
+
7
+ module.exports = {
8
+ isFRPS
9
+ }
@@ -0,0 +1,9 @@
1
+ const sitiAgriSchemes = require('../constants/siti-agri-schemes')
2
+
3
+ const isSitiAgri = (schemeId) => {
4
+ return sitiAgriSchemes.includes(schemeId)
5
+ }
6
+
7
+ module.exports = {
8
+ isSitiAgri
9
+ }
@@ -1,4 +1,4 @@
1
- const schemeIds = require('./constants/scheme-ids')
1
+ const schemeIds = require('../constants/scheme-ids')
2
2
 
3
3
  const isValidSchemeId = (schemeId) => {
4
4
  const numericSchemeId = Number(schemeId)
@@ -1,4 +1,4 @@
1
- const schemesNotRequiringPPAs = require('./constants/schemes-not-requiring-ppas')
1
+ const schemesNotRequiringPPAs = require('../constants/schemes-not-requiring-ppas')
2
2
 
3
3
  const schemeDoesNotRequirePPAs = (schemeId) => {
4
4
  return schemesNotRequiringPPAs.includes(schemeId)
@@ -1,4 +1,4 @@
1
- const schemesProvidingAccountingValues = require('./constants/schemes-providing-account-values')
1
+ const schemesProvidingAccountingValues = require('../constants/schemes-providing-account-values')
2
2
 
3
3
  const schemeProvidesAccountingValues = (schemeId) => {
4
4
  return schemesProvidingAccountingValues.includes(schemeId)
@@ -1,4 +1,4 @@
1
- const { getSchemes } = require('./get-schemes')
1
+ const { getSchemes } = require('../scheme-properties/get-schemes')
2
2
 
3
3
  const getSchemeIdFromPillar = (pillar) => {
4
4
  const matchingScheme = getSchemes().find((scheme) => scheme.pillar === pillar)
@@ -1,4 +1,4 @@
1
- const { getSchemes } = require('./get-schemes')
1
+ const { getSchemes } = require('../scheme-properties/get-schemes')
2
2
 
3
3
  const getSchemeIdFromSourceSystem = (sourceSystem) => {
4
4
  const matchingScheme = getSchemes().find((scheme) => scheme.sourceSystem === sourceSystem)
@@ -1,4 +1,4 @@
1
- const schemeIds = require('./constants/scheme-ids')
1
+ const schemeIds = require('../constants/scheme-ids')
2
2
 
3
3
  const getSchemeIds = () => {
4
4
  return schemeIds
@@ -1,5 +1,5 @@
1
- const { UNKNOWN } = require('./constants/unknown')
2
- const { getSchemes } = require('./get-schemes')
1
+ const { UNKNOWN } = require('../constants/unknown')
2
+ const { getSchemes } = require('../scheme-properties/get-schemes')
3
3
 
4
4
  const getSchemeNameFromSchemeId = (schemeId) => {
5
5
  const matchingScheme = getSchemes().find((scheme) => scheme.schemeId === schemeId)
@@ -1,4 +1,4 @@
1
- const schemeNames = require('./constants/scheme-names')
1
+ const schemeNames = require('../constants/scheme-names')
2
2
 
3
3
  const getSchemeNames = () => {
4
4
  return schemeNames
@@ -1,4 +1,4 @@
1
- const schemeBatchProperties = require('./constants/scheme-batch-properties')
1
+ const schemeBatchProperties = require('../constants/scheme-batch-properties')
2
2
 
3
3
  const getSchemeBatchProperties = (schemeId) => {
4
4
  return schemeBatchProperties.find(scheme => scheme.schemeId === schemeId)
@@ -1,5 +1,5 @@
1
- const schemes = require('./constants/schemes')
2
- const { MANUAL } = require('./constants/scheme-ids')
1
+ const schemes = require('../constants/schemes')
2
+ const { MANUAL } = require('../constants/scheme-ids')
3
3
 
4
4
  const getSchemeProperties = (schemeId, sourceSystem, pillar) => {
5
5
  let scheme = schemeId
@@ -1,7 +1,7 @@
1
- const pillars = require('./constants/pillars')
2
- const schemeIds = require('./constants/scheme-ids')
3
- const schemeNames = require('./constants/scheme-names')
4
- const sourceSystems = require('./constants/source-systems')
1
+ const pillars = require('../constants/pillars')
2
+ const schemeIds = require('../constants/scheme-ids')
3
+ const schemeNames = require('../constants/scheme-names')
4
+ const sourceSystems = require('../constants/source-systems')
5
5
 
6
6
  const getSchemes = () =>
7
7
  Object.keys(schemeIds).map((schemeKey) => ({
@@ -1,5 +1,5 @@
1
- const { UNKNOWN } = require('./constants/unknown')
2
- const { getSchemes } = require('./get-schemes')
1
+ const { UNKNOWN } = require('../constants/unknown')
2
+ const { getSchemes } = require('../scheme-properties/get-schemes')
3
3
 
4
4
  const getSourceSystemFromSchemeId = (schemeId) => {
5
5
  const matchingScheme = getSchemes().find((scheme) => scheme.schemeId === schemeId)
@@ -1,4 +1,4 @@
1
- const sourceSystems = require('./constants/source-systems')
1
+ const sourceSystems = require('../constants/source-systems')
2
2
 
3
3
  const getSourceSystems = () => {
4
4
  return sourceSystems
package/index.js CHANGED
@@ -1,24 +1,27 @@
1
1
  const { createInvoiceNumber } = require('./app/create-invoice-number')
2
2
  const { createSplitInvoiceNumber } = require('./app/create-split-invoice-number')
3
3
  const { getAccountCodeMap } = require('./app/get-account-code-map')
4
- const { getSchemeBatchProperties } = require('./app/get-scheme-batch-properties')
5
- const { getSchemeIdFromPillar } = require('./app/get-scheme-id-from-pillar')
6
- const { getSchemeIdFromSourceSystem } = require('./app/get-scheme-id-from-source-system')
7
- const { getSchemeIds } = require('./app/get-scheme-ids')
8
- const { getSchemeNameFromSchemeId } = require('./app/get-scheme-name-from-scheme-id')
9
- const { getSchemeNames } = require('./app/get-scheme-names')
10
- const { getSchemeProperties } = require('./app/get-scheme-properties')
11
- const { getSchemes } = require('./app/get-schemes')
12
- const { getSourceSystemFromSchemeId } = require('./app/get-source-system-from-scheme-id')
13
- const { getSourceSystems } = require('./app/get-source-systems')
14
- const { isValidSchemeId } = require('./app/is-valid-scheme-id')
15
- const { schemeDoesNotRequirePPAs } = require('./app/scheme-does-not-require-ppas')
16
- const { schemeProvidesAccountingValues } = require('./app/scheme-provides-accounting-values')
4
+ const { getReportingDataFilter } = require('./app/helpers/get-reporting-data-filter')
5
+ const { getSchemeBatchProperties } = require('./app/scheme-properties/get-scheme-batch-properties')
6
+ const { getSchemeIdFromPillar } = require('./app/scheme-id/get-scheme-id-from-pillar')
7
+ const { getSchemeIdFromSourceSystem } = require('./app/scheme-id/get-scheme-id-from-source-system')
8
+ const { getSchemeIds } = require('./app/scheme-id/get-scheme-ids')
9
+ const { getSchemeNameFromSchemeId } = require('./app/scheme-name/get-scheme-name-from-scheme-id')
10
+ const { getSchemeNames } = require('./app/scheme-name/get-scheme-names')
11
+ const { getSchemeProperties } = require('./app/scheme-properties/get-scheme-properties')
12
+ const { getSchemes } = require('./app/scheme-properties/get-schemes')
13
+ const { getSourceSystemFromSchemeId } = require('./app/source-system/get-source-system-from-scheme-id')
14
+ const { getSourceSystems } = require('./app/source-system/get-source-systems')
15
+ const { isFRPS } = require('./app/helpers/is-frps')
16
+ const { isValidSchemeId } = require('./app/helpers/is-valid-scheme-id')
17
+ const { schemeDoesNotRequirePPAs } = require('./app/helpers/scheme-does-not-require-ppas')
18
+ const { schemeProvidesAccountingValues } = require('./app/helpers/scheme-provides-accounting-values')
17
19
 
18
20
  module.exports = {
19
21
  createInvoiceNumber,
20
22
  createSplitInvoiceNumber,
21
23
  getAccountCodeMap,
24
+ getReportingDataFilter,
22
25
  getSchemeBatchProperties,
23
26
  getSchemeIdFromPillar,
24
27
  getSchemeIdFromSourceSystem,
@@ -29,6 +32,7 @@ module.exports = {
29
32
  getSchemes,
30
33
  getSourceSystemFromSchemeId,
31
34
  getSourceSystems,
35
+ isFRPS,
32
36
  isValidSchemeId,
33
37
  schemeDoesNotRequirePPAs,
34
38
  schemeProvidesAccountingValues
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ffc-pay-schemes",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "Module for defining and providing details for the payment schemes supported by the Payment Hub.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,34 +1,36 @@
1
+ jest.mock('../../../app/helpers/is-siti-agri', () => ({
2
+ isSitiAgri: jest.fn()
3
+ }))
4
+
5
+ const { isSitiAgri } = require('../../../app/helpers/is-siti-agri')
1
6
  const { createSplitInvoiceNumber } = require('../../../app/create-split-invoice-number')
2
7
  const { createDefaultInvoiceNumber } = require('../../../app/create-split-invoice-number/create-default-invoice-number')
3
8
  const { createSitiAgriInvoiceNumber } = require('../../../app/create-split-invoice-number/create-siti-agri-invoice-number')
4
- const schemeIds = require('../../../app/constants/scheme-ids')
5
9
 
6
10
  describe('createSplitInvoiceNumber', () => {
7
11
  const invoiceNumber = '1234567890123'
8
12
  const splitId = 'A'
9
- const sitiAgriSchemes = [
10
- 'SFI',
11
- 'SFI_PILOT',
12
- 'LUMP_SUMS',
13
- 'SFI23',
14
- 'DELINKED',
15
- 'SFI_EXPANDED'
16
- ]
17
-
18
- test.each(Object.entries(schemeIds))(
19
- 'uses the correct invoice format for %s',
20
- (schemeKey, schemeId) => {
21
- const expectedInvoiceNumber = sitiAgriSchemes.includes(schemeKey)
22
- ? createSitiAgriInvoiceNumber(invoiceNumber, splitId)
23
- : createDefaultInvoiceNumber(invoiceNumber, splitId)
24
-
25
- expect(createSplitInvoiceNumber(invoiceNumber, splitId, schemeId))
26
- .toBe(expectedInvoiceNumber)
27
- }
28
- )
29
-
30
- test('uses the default format for an unknown schemeId', () => {
31
- expect(createSplitInvoiceNumber(invoiceNumber, splitId, 'unknown-scheme'))
13
+ const schemeId = 'SFI'
14
+
15
+ beforeEach(() => {
16
+ jest.clearAllMocks()
17
+ })
18
+
19
+ test('uses the Siti Agri invoice format when the scheme is Siti Agri', () => {
20
+ isSitiAgri.mockReturnValue(true)
21
+
22
+ expect(createSplitInvoiceNumber(invoiceNumber, splitId, schemeId))
23
+ .toBe(createSitiAgriInvoiceNumber(invoiceNumber, splitId))
24
+
25
+ expect(isSitiAgri).toHaveBeenCalledWith(schemeId)
26
+ })
27
+
28
+ test('uses the default invoice format when the scheme is not Siti Agri', () => {
29
+ isSitiAgri.mockReturnValue(false)
30
+
31
+ expect(createSplitInvoiceNumber(invoiceNumber, splitId, schemeId))
32
32
  .toBe(createDefaultInvoiceNumber(invoiceNumber, splitId))
33
+
34
+ expect(isSitiAgri).toHaveBeenCalledWith(schemeId)
33
35
  })
34
36
  })
@@ -0,0 +1,44 @@
1
+ jest.mock('../../../app/helpers/is-frps', () => ({
2
+ isFRPS: jest.fn()
3
+ }))
4
+
5
+ const { BPS, DELINKED, CS } = require('../../../app/constants/scheme-ids')
6
+ const { isFRPS } = require('../../../app/helpers/is-frps')
7
+ const { getReportingDataFilter } = require('../../../app/helpers/get-reporting-data-filter')
8
+
9
+ describe('getReportingDataFilter', () => {
10
+ beforeEach(() => {
11
+ jest.clearAllMocks()
12
+ })
13
+
14
+ test('returns marketing year for BPS', () => {
15
+ expect(getReportingDataFilter(BPS)).toEqual(['marketingYear'])
16
+ })
17
+
18
+ test('returns marketing year for DELINKED', () => {
19
+ expect(getReportingDataFilter(DELINKED)).toEqual(['marketingYear'])
20
+ })
21
+
22
+ test('returns contract number for CS', () => {
23
+ expect(getReportingDataFilter(CS)).toEqual(['contractNumber'])
24
+ })
25
+
26
+ test('returns the FRPS filter including correlation ID', () => {
27
+ isFRPS.mockReturnValue(true)
28
+
29
+ expect(getReportingDataFilter('frps-scheme')).toEqual([
30
+ 'marketingYear',
31
+ 'agreementNumber',
32
+ 'correlationId'
33
+ ])
34
+ })
35
+
36
+ test('returns the default filter for non-FRPS schemes', () => {
37
+ isFRPS.mockReturnValue(false)
38
+
39
+ expect(getReportingDataFilter('unknown-scheme')).toEqual([
40
+ 'marketingYear',
41
+ 'agreementNumber'
42
+ ])
43
+ })
44
+ })
@@ -0,0 +1,17 @@
1
+ const frpsSchemes = require('../../../app/constants/frps-schemes')
2
+ const { isFRPS } = require('../../../app/helpers/is-frps')
3
+
4
+ describe('isFRPS', () => {
5
+ test.each(frpsSchemes)('returns true for FRPS scheme: %s', (schemeId) => {
6
+ expect(isFRPS(schemeId)).toBe(true)
7
+ })
8
+
9
+ test.each([
10
+ 'unknown-scheme',
11
+ '',
12
+ null,
13
+ undefined
14
+ ])('returns false for non-FRPS scheme: %s', (schemeId) => {
15
+ expect(isFRPS(schemeId)).toBe(false)
16
+ })
17
+ })
@@ -0,0 +1,17 @@
1
+ const sitiAgriSchemes = require('../../../app/constants/siti-agri-schemes')
2
+ const { isSitiAgri } = require('../../../app/helpers/is-siti-agri')
3
+
4
+ describe('isSitiAgri', () => {
5
+ test.each(sitiAgriSchemes)('returns true for SITI scheme: %s', (schemeId) => {
6
+ expect(isSitiAgri(schemeId)).toBe(true)
7
+ })
8
+
9
+ test.each([
10
+ 'unknown-scheme',
11
+ '',
12
+ null,
13
+ undefined
14
+ ])('returns false for non-SITI scheme: %s', (schemeId) => {
15
+ expect(isSitiAgri(schemeId)).toBe(false)
16
+ })
17
+ })
@@ -1,5 +1,5 @@
1
- const schemeIds = require('../../app/constants/scheme-ids')
2
- const { isValidSchemeId } = require('../../app/is-valid-scheme-id')
1
+ const schemeIds = require('../../../app/constants/scheme-ids')
2
+ const { isValidSchemeId } = require('../../../app/helpers/is-valid-scheme-id')
3
3
 
4
4
  describe('isValidSchemeId', () => {
5
5
  test.each(Object.values(schemeIds))(
@@ -1,6 +1,6 @@
1
- const { schemeDoesNotRequirePPAs } = require('../../app/scheme-does-not-require-ppas')
2
- const schemeIds = require('../../app/constants/scheme-ids')
3
- const schemesNotRequiringPPAs = require('../../app/constants/schemes-not-requiring-ppas')
1
+ const { schemeDoesNotRequirePPAs } = require('../../../app/helpers/scheme-does-not-require-ppas')
2
+ const schemeIds = require('../../../app/constants/scheme-ids')
3
+ const schemesNotRequiringPPAs = require('../../../app/constants/schemes-not-requiring-ppas')
4
4
 
5
5
  describe('schemeDoesNotRequirePPAs', () => {
6
6
  test.each(Object.entries(schemeIds))(
@@ -1,6 +1,6 @@
1
- const { schemeProvidesAccountingValues } = require('../../app/scheme-provides-accounting-values')
2
- const schemeIds = require('../../app/constants/scheme-ids')
3
- const schemesProvidingAccountingValues = require('../../app/constants/schemes-providing-account-values')
1
+ const { schemeProvidesAccountingValues } = require('../../../app/helpers/scheme-provides-accounting-values')
2
+ const schemeIds = require('../../../app/constants/scheme-ids')
3
+ const schemesProvidingAccountingValues = require('../../../app/constants/schemes-providing-account-values')
4
4
 
5
5
  describe('schemeProvidesAccountingValues', () => {
6
6
  test.each(Object.entries(schemeIds))(
@@ -1,9 +1,9 @@
1
- jest.mock('../../app/get-schemes', () => ({
1
+ jest.mock('../../../app/scheme-properties/get-schemes', () => ({
2
2
  getSchemes: jest.fn()
3
3
  }))
4
4
 
5
- const { getSchemes } = require('../../app/get-schemes')
6
- const { getSchemeIdFromPillar } = require('../../app/get-scheme-id-from-pillar')
5
+ const { getSchemes } = require('../../../app/scheme-properties/get-schemes')
6
+ const { getSchemeIdFromPillar } = require('../../../app/scheme-id/get-scheme-id-from-pillar')
7
7
 
8
8
  describe('getSchemeIdFromPillar', () => {
9
9
  beforeEach(() => {
@@ -1,9 +1,9 @@
1
- jest.mock('../../app/get-schemes', () => ({
1
+ jest.mock('../../../app/scheme-properties/get-schemes', () => ({
2
2
  getSchemes: jest.fn()
3
3
  }))
4
4
 
5
- const { getSchemes } = require('../../app/get-schemes')
6
- const { getSchemeIdFromSourceSystem } = require('../../app/get-scheme-id-from-source-system')
5
+ const { getSchemes } = require('../../../app/scheme-properties/get-schemes')
6
+ const { getSchemeIdFromSourceSystem } = require('../../../app/scheme-id/get-scheme-id-from-source-system')
7
7
 
8
8
  describe('getSchemeIdFromSourceSystem', () => {
9
9
  beforeEach(() => {
@@ -0,0 +1,8 @@
1
+ const { getSchemeIds } = require('../../../app/scheme-id/get-scheme-ids')
2
+ const schemeIds = require('../../../app/constants/scheme-ids')
3
+
4
+ describe('getSchemeIds', () => {
5
+ test('returns all scheme IDs', () => {
6
+ expect(getSchemeIds()).toEqual(schemeIds)
7
+ })
8
+ })
@@ -1,10 +1,10 @@
1
- jest.mock('../../app/get-schemes', () => ({
1
+ jest.mock('../../../app/scheme-properties/get-schemes', () => ({
2
2
  getSchemes: jest.fn()
3
3
  }))
4
4
 
5
- const { getSchemes } = require('../../app/get-schemes')
6
- const { getSchemeNameFromSchemeId } = require('../../app/get-scheme-name-from-scheme-id')
7
- const { UNKNOWN } = require('../../app/constants/unknown')
5
+ const { getSchemes } = require('../../../app/scheme-properties/get-schemes')
6
+ const { getSchemeNameFromSchemeId } = require('../../../app/scheme-name/get-scheme-name-from-scheme-id')
7
+ const { UNKNOWN } = require('../../../app/constants/unknown')
8
8
 
9
9
  describe('getSchemeNameFromSchemeId', () => {
10
10
  beforeEach(() => {
@@ -0,0 +1,8 @@
1
+ const { getSchemeNames } = require('../../../app/scheme-name/get-scheme-names')
2
+ const schemeNames = require('../../../app/constants/scheme-names')
3
+
4
+ describe('getSchemeNames', () => {
5
+ test('returns all scheme names', () => {
6
+ expect(getSchemeNames()).toEqual(schemeNames)
7
+ })
8
+ })
@@ -1,5 +1,5 @@
1
- const { getSchemeBatchProperties } = require('../../app/get-scheme-batch-properties')
2
- const schemeBatchProperties = require('../../app/constants/scheme-batch-properties')
1
+ const { getSchemeBatchProperties } = require('../../../app/scheme-properties/get-scheme-batch-properties')
2
+ const schemeBatchProperties = require('../../../app/constants/scheme-batch-properties')
3
3
 
4
4
  describe('get scheme batch properties', () => {
5
5
  test.each(schemeBatchProperties)(
@@ -1,6 +1,6 @@
1
- const { getSchemeProperties } = require('../../app/get-scheme-properties')
2
- const schemes = require('../../app/constants/schemes')
3
- const { MANUAL } = require('../../app/constants/scheme-ids')
1
+ const { getSchemeProperties } = require('../../../app/scheme-properties/get-scheme-properties')
2
+ const schemes = require('../../../app/constants/schemes')
3
+ const { MANUAL } = require('../../../app/constants/scheme-ids')
4
4
 
5
5
  describe('getSchemeProperties', () => {
6
6
  test.each(schemes)(
@@ -1,8 +1,8 @@
1
- const { getSchemes } = require('../../app/get-schemes')
2
- const pillars = require('../../app/constants/pillars')
3
- const schemeIds = require('../../app/constants/scheme-ids')
4
- const schemeNames = require('../../app/constants/scheme-names')
5
- const sourceSystems = require('../../app/constants/source-systems')
1
+ const { getSchemes } = require('../../../app/scheme-properties/get-schemes')
2
+ const pillars = require('../../../app/constants/pillars')
3
+ const schemeIds = require('../../../app/constants/scheme-ids')
4
+ const schemeNames = require('../../../app/constants/scheme-names')
5
+ const sourceSystems = require('../../../app/constants/source-systems')
6
6
 
7
7
  describe('getSchemes', () => {
8
8
  test('returns all schemes with their IDs and names', () => {
@@ -1,10 +1,10 @@
1
- jest.mock('../../app/get-schemes', () => ({
1
+ jest.mock('../../../app/scheme-properties/get-schemes', () => ({
2
2
  getSchemes: jest.fn()
3
3
  }))
4
4
 
5
- const { UNKNOWN } = require('../../app/constants/unknown')
6
- const { getSchemes } = require('../../app/get-schemes')
7
- const { getSourceSystemFromSchemeId } = require('../../app/get-source-system-from-scheme-id')
5
+ const { UNKNOWN } = require('../../../app/constants/unknown')
6
+ const { getSchemes } = require('../../../app/scheme-properties/get-schemes')
7
+ const { getSourceSystemFromSchemeId } = require('../../../app/source-system/get-source-system-from-scheme-id')
8
8
 
9
9
  describe('getSourceSystemFromSchemeId', () => {
10
10
  beforeEach(() => {
@@ -0,0 +1,8 @@
1
+ const { getSourceSystems } = require('../../../app/source-system/get-source-systems')
2
+ const sourceSystems = require('../../../app/constants/source-systems')
3
+
4
+ describe('getSourceSystems', () => {
5
+ test('returns all source systems', () => {
6
+ expect(getSourceSystems()).toEqual(sourceSystems)
7
+ })
8
+ })