From ff78785b5f87fee16b4887170c97f1c64eace0a9 Mon Sep 17 00:00:00 2001 From: JaviPQ Date: Tue, 20 Jul 2021 11:28:11 +0200 Subject: [PATCH 1/3] Update amd, ts, and test number --- lib/amd/lib/countries/andorra.js | 22 +++++++++++++++++++--- src/lib/countries/andorra.ts | 22 +++++++++++++++++++--- test/countries_vat_lists/andorra.vat.js | 3 ++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/lib/amd/lib/countries/andorra.js b/lib/amd/lib/countries/andorra.js index ee627a0..27166e7 100644 --- a/lib/amd/lib/countries/andorra.js +++ b/lib/amd/lib/countries/andorra.js @@ -5,10 +5,26 @@ define(["require", "exports"], function (require, exports) { name: 'Andorra', codes: ['AD', 'AND', '020'], calcFn: (vat) => { - return vat.length === 8; + let firstLetter = vat.slice(0, 1).toUpperCase(); + let number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; + } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; }, - rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] + rules: { + multipliers:{}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] } }; }); \ No newline at end of file diff --git a/src/lib/countries/andorra.ts b/src/lib/countries/andorra.ts index ac3c33f..abb80e3 100644 --- a/src/lib/countries/andorra.ts +++ b/src/lib/countries/andorra.ts @@ -3,10 +3,26 @@ import { Country } from '../jsvat'; export const andorra: Country = { name: 'Andorra', codes: ['AD', 'AND', '020'], - calcFn: (vat: string): boolean => { - return vat.length === 8; + calcFn: (vat:string) => { + let firstLetter:string = vat.slice(0, 1).toUpperCase(); + let number:number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; + } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; }, rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] + multipliers:{}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] } }; diff --git a/test/countries_vat_lists/andorra.vat.js b/test/countries_vat_lists/andorra.vat.js index ae33204..03f9721 100644 --- a/test/countries_vat_lists/andorra.vat.js +++ b/test/countries_vat_lists/andorra.vat.js @@ -13,7 +13,8 @@ export const valid = [ 'ADG000000G', 'ADO000000O', 'ADP000000P', - 'ADU000000U' + 'ADU000000U', + 'ADF041141T' ] export const invalid = [ From 813ba5c8042f54209d41cc4c141541fe9f5f7a56 Mon Sep 17 00:00:00 2001 From: JaviPQ Date: Tue, 20 Jul 2021 11:28:44 +0200 Subject: [PATCH 2/3] Update es6, system and umd lib --- lib/es6/lib/countries/andorra.js | 26 +++++++++++--- lib/system/lib/countries/andorra.js | 50 ++++++++++++++++++--------- lib/umd/lib/countries/andorra.js | 53 ++++++++++++++++++----------- 3 files changed, 88 insertions(+), 41 deletions(-) diff --git a/lib/es6/lib/countries/andorra.js b/lib/es6/lib/countries/andorra.js index 745d2db..4db1945 100644 --- a/lib/es6/lib/countries/andorra.js +++ b/lib/es6/lib/countries/andorra.js @@ -1,10 +1,26 @@ export const andorra = { name: 'Andorra', codes: ['AD', 'AND', '020'], - calcFn: (vat) => { - return vat.length === 8; - }, - rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] + calcFn: (vat) => { + let firstLetter = vat.slice(0, 1).toUpperCase(); + let number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; + }, + rules: { + multipliers: {}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] + } }; diff --git a/lib/system/lib/countries/andorra.js b/lib/system/lib/countries/andorra.js index a535351..a474a28 100644 --- a/lib/system/lib/countries/andorra.js +++ b/lib/system/lib/countries/andorra.js @@ -1,20 +1,36 @@ System.register([], function (exports_1, context_1) { - "use strict"; - var andorra; - var __moduleName = context_1 && context_1.id; - return { - setters: [], - execute: function () { - exports_1("andorra", andorra = { - name: 'Andorra', - codes: ['AD', 'AND', '020'], - calcFn: (vat) => { - return vat.length === 8; - }, - rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] - } - }); + "use strict"; + var andorra; + var __moduleName = context_1 && context_1.id; + return { + setters: [], + execute: function () { + exports_1("andorra", andorra = { + name: 'Andorra', + codes: ['AD', 'AND', '020'], + calcFn: (vat) => { + let firstLetter = vat.slice(0, 1).toUpperCase(); + let number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; + } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; + }, + rules: { + multipliers: {}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] } - }; + }); + } + }; }); diff --git a/lib/umd/lib/countries/andorra.js b/lib/umd/lib/countries/andorra.js index 09a6aa8..7969433 100644 --- a/lib/umd/lib/countries/andorra.js +++ b/lib/umd/lib/countries/andorra.js @@ -1,22 +1,37 @@ (function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define(["require", "exports"], factory); - } + if (typeof module === "object" && typeof module.exports === "object") { + var v = factory(require, exports); + if (v !== undefined) module.exports = v; + } else if (typeof define === "function" && define.amd) { + define(["require", "exports"], factory); + } })(function (require, exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.austria = { - name: 'Andorra', - codes: ['AD', 'AND', '020'], - calcFn: (vat) => { - return vat.length === 8; - }, - rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] - } - }; + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.austria = { + name: 'Andorra', + codes: ['AD', 'AND', '020'], + calcFn: (vat) => { + let firstLetter = vat.slice(0, 1).toUpperCase(); + let number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; + } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; + }, + rules: { + multipliers: {}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] + } + }; }); From 1f1d2202a81d971fcf46d706f9d69928ba81a1c7 Mon Sep 17 00:00:00 2001 From: JaviPQ Date: Tue, 20 Jul 2021 11:29:04 +0200 Subject: [PATCH 3/3] Update commonjs lib --- lib/commonjs/lib/countries/andorra.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/commonjs/lib/countries/andorra.js b/lib/commonjs/lib/countries/andorra.js index 4ac16f2..4de6bf8 100644 --- a/lib/commonjs/lib/countries/andorra.js +++ b/lib/commonjs/lib/countries/andorra.js @@ -4,9 +4,25 @@ exports.andorra = { name: 'Andorra', codes: ['AD', 'AND', '020'], calcFn: (vat) => { - return vat.length === 8; + let firstLetter = vat.slice(0, 1).toUpperCase(); + let number = parseInt(vat.slice(1, 7)); + + if (vat.length !== 8) { + return false; + } + if (!'ACDEFGLOPU'.includes(firstLetter)) { + return false + } + if (firstLetter === 'F' && number > 699999) { + return false; + } + if ('AL'.includes(firstLetter) && number > 699999 && number < 800000) { + return false; + } + return true; }, rules: { - regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgopuFEALECDGOPU]{1})$/] + multipliers: {}, + regex: [/^(AD)([fealecdgopuFEALECDGOPU]{1}\d{6}[fealecdgoputFEALECDGOPUT]{1})$/] } };