Skip to content

Commit aa78954

Browse files
committedMar 6, 2024
feat: allow SD3 scottish rates
1 parent f0ab3e5 commit aa78954

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed
 

‎src/Middlewares/TaxCodeModifier.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Worksome\UkTaxCodeValidator\Rules\NoTaxesRule;
1616
use Worksome\UkTaxCodeValidator\Rules\RuleInterface;
1717
use Worksome\UkTaxCodeValidator\Rules\TemporaryTaxCodeRule;
18+
use Worksome\UkTaxCodeValidator\Rules\AdvancedScottishRateRule;
1819
use Worksome\UkTaxCodeValidator\Rules\TopScottishRateRule;
1920
use Worksome\UkTaxCodeValidator\TaxCode;
2021

@@ -35,6 +36,7 @@ public function __construct()
3536
new MarriageAllowanceTransferredRule($this),
3637
new HigherRateRule($this),
3738
new AdditionalRateRule($this),
39+
new AdvancedScottishRateRule($this),
3840
new TopScottishRateRule($this),
3941
new NoTaxesRule($this),
4042
];
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Worksome\UkTaxCodeValidator\Rules;
4+
5+
use Worksome\UkTaxCodeValidator\TaxCode;
6+
7+
class AdvancedScottishRateRule extends RegexRule
8+
{
9+
public function validate(TaxCode $taxCode): bool
10+
{
11+
// Validate against full tax code, as a D2
12+
// should always have a scottish regime modifier in front.
13+
return parent::validate(
14+
new TaxCode($taxCode->getOriginalTaxCode())
15+
);
16+
}
17+
18+
protected function regex(): string
19+
{
20+
return /* @lang RegExp */ '/^SD2/';
21+
}
22+
23+
protected function regexForConsume(): string
24+
{
25+
return /* @lang RegExp */ '/^D2/';
26+
}
27+
}

‎src/Rules/TopScottishRateRule.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class TopScottishRateRule extends RegexRule
88
{
99
public function validate(TaxCode $taxCode): bool
1010
{
11-
// Validate against full tax code, as a D2
11+
// Validate against full tax code, as a D3
1212
// should always have a scottish regime modifier in front.
1313
return parent::validate(
1414
new TaxCode($taxCode->getOriginalTaxCode())
@@ -17,11 +17,11 @@ public function validate(TaxCode $taxCode): bool
1717

1818
protected function regex(): string
1919
{
20-
return /* @lang RegExp */ '/^SD2/';
20+
return /* @lang RegExp */ '/^SD3/';
2121
}
2222

2323
protected function regexForConsume(): string
2424
{
25-
return /* @lang RegExp */ '/^D2/';
25+
return /* @lang RegExp */ '/^D3/';
2626
}
2727
}

‎tests/EngineTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
'NT', 'NTX', 'NTM1',
3030
// Top scottish rates
3131
'SD2', 'SD2X',
32+
// Advanced scottish rates
33+
'SD3', 'SD3X',
3234
// Random tests
3335
'S 123 3 L',
3436
]);

0 commit comments

Comments
 (0)
Please sign in to comment.