Ohiko galderak
Erantzun laburrak, bakoitza bere oinarria den SPEC.md arauarekin.
Baliozkoa da 00000000T NANa?
«Baliozkoa da 00000000T NANa?» atalaBai. 00000000T zenbakiak kontrol-letra zuzena du, eta ez du inongo legek debekatzen; beraz, baliozkoa da lehenespenez, 00000001R, 99999999R eta X0000000T ordezko balio ezagunak bezala. Erregistro batzuek, ESNICek (.es domeinuen erregistroak) adibidez, iragazi egiten dituzte, ordezko balio ezagunak direlako; baina zerrenda horretan egoteak ez du frogatzen zenbaki bat inoiz esleitu ez denik. Zuk ere baztertu nahi badituzu, pasa rejectPlaceholders: true (aukerako politika bat), eta validate() funtzioak PLACEHOLDER kodea itzuliko du (POLICY-1).
import { isValidDni, validate } from "nif-dni-nie-cif-validation";
isValidDni("00000000T"); // trueisValidDni("00000000T", { rejectPlaceholders: true }); // falsevalidate("x-0000000-t", { rejectPlaceholders: true }).error?.code; // "PLACEHOLDER"IFK zaharrek balio dute oraindik?
«IFK zaharrek balio dute oraindik?» atalaBai. 2008an, EHA/451/2008 Aginduak «IFK» izena «pertsona juridiko edo erakunde baten IFZ» izenarekin ordezkatu zuen, baina zenbakiak ez ziren aldatu, eta ez da inoiz erakunde-gakorik kendu (CIF-2). Agindu horrekin aldatu zirenak 7 digituak dira: ausazkoak izatera igaro ziren, eta jada ez dute probintziarik kodetzen; horregatik, liburutegiak ez ditu probintzia-kodeak egiaztatzen (CIF-5).
Balio zaharren mota bat ez da baliozkoa lehenespenez: C, D, F, G, J, U edo V gakoa eta kontrol-karaktere gisa letra bat dituen IFK bat. Ikusi hurrengo galdera.
Zergatik ez da baliozkoa G1234567D?
«Zergatik ez da baliozkoa G1234567D?» atalaG gakoak digitu bat daramalako. AEATren IFZari buruzko ohar teknikoak digitu bat esleitzen die A B C D E F G H J U V gakoei, eta letra bat N P Q R S W gakoei (CIF-3). Liburutegi askok, baita honen 1. bertsioak ere, edozein onartzen zuten C, D, F, G, J, U eta V gakoetan, eta horrek ez du oinarri ofizialik. Balio bera duen digitua baliozkoa da:
import { isValidCif, validate } from "nif-dni-nie-cif-validation";
isValidCif("G1234567D"); // falsevalidate("G1234567D").error?.expected; // "4"isValidCif("G12345674"); // trueisValidCif("G1234567D", { cifControl: "lenient" }); // true: 1. bertsioaren portaeraZure gordetako datuek horrelako zenbakiak badituzte, pasa { cifControl: "lenient" } garbitzen dituzun bitartean. C, D, F, G, J, U eta V gakoei bakarrik eragiten die: A, B, E eta H gakoek digitua daramate beti, eta N, P, Q, R, S eta W gakoek, letra.
Ba al dago T letraz hasten den AIZik?
«Ba al dago T letraz hasten den AIZik?» atalaEz. Iturri ofizial batek ere ez du zehazten T letraz hasten den IFZ edo AIZ bat. AIZak X, Y edo Z letraz hasten dira (NIE-1), eta IFZ motek erabiltzen ez duten karaktere batez hasten den balio bat NIF-1 arauarekin baztertzen da:
import { validate } from "nif-dni-nie-cif-validation";
validate("T1234567A").error?.code; // "INVALID_FORMAT"validate("T1234567A").error?.rule; // "NIF-1"00 digituekin hasten den IFK batek letra eraman behar du?
«00 digituekin hasten den IFK batek letra eraman behar du?» atalaEz. Liburutegi batzuek kontrol-letra bat eskatzen dute IFK baten lehen bi digituak 00 direnean. Arau horrek iturririk gabeko taula batean du jatorria, eta zerrenda ofizial batek ere ez du inoiz izan 00 probintzia-koderik; beraz, liburutegiak ez du aplikatzen (ikusi Explicitly NOT implemented). Kontrol mota gakoaren araberakoa da soilik:
import { isValidCif } from "nif-dni-nie-cif-validation";
isValidCif("B00123455"); // true: B gakoak digitua darama, digituak edozein direla ereIFZ-BEZ baliozko batek esan nahi du VIESen alta emanda dagoela?
«IFZ-BEZ baliozko batek esan nahi du VIESen alta emanda dagoela?» atalaEz. isValidSpanishVat() funtzioak formatua egiaztatzen du: ES eta ondoren IFZ baliozko bat (VAT-1). Zenbakia Europar Batasuneko barne-eragiketetarako alta emanda dagoen ala ez Zerga Administrazioak bakarrik daki: horretarako, kontsultatu Europako Batzordearen VIES zerbitzua. Era berean, IFZ baliozko bat ondo osatutako zenbaki bat da, ez norbaiti esleitu zaionaren froga: AEATk bere zerbitzua du hirugarren baten IFZa egiaztatzeko.
import { isValidSpanishVat } from "nif-dni-nie-cif-validation";
isValidSpanishVat("ES12345678Z"); // true: formatua zuzena daisValidSpanishVat("12345678Z"); // false: ES aurrizkia derrigorrezkoa da10 karaktereko AIZ zaharrak balio du oraindik?
«10 karaktereko AIZ zaharrak balio du oraindik?» atalaBai. 2008 baino lehen emandako AIZek X bat, 8 digitu eta letra bat dituzte, X01234567L bezala. Baliozkoak dira oraindik, eta haien forma kanonikoak X-aren ondoko zeroa kentzen du: X1234567L (NIE-3). validate() funtzioak forma hori itzultzen du normalized eremuan.
Zergatik onartzen ditu isValidDni funtzioak K, L eta M?
«Zergatik onartzen ditu isValidDni funtzioak K, L eta M?» atalaK, L eta M IFZak NANik ez duten pertsonei esleitzen zaizkielako, eta NANaren kontrol-letra erabiltzen dutelako (KLM-1, KLM-2). isValidDni() funtzioak 1. bertsiotik onartzen ditu. NANa bakarrik onartzeko, erabili validate(value, { types: ["DNI"] }):
import { isValidDni, validate } from "nif-dni-nie-cif-validation";
isValidDni("K1234567L"); // truevalidate("K1234567L", { types: ["DNI"] }).error?.code; // "UNSUPPORTED_TYPE"Nondik dator NANaren letraren algoritmoa?
«Nondik dator NANaren letraren algoritmoa?» atalaBarne Ministeriotik, hark argitaratzen baitu, eta AEATren IFZari buruzko ohar teknikotik. Ez dago inongo legetan: legeak NAN bat kontrol-letra batekin amaitzen dela besterik ez du esaten. Nola funtzionatzen duen kontrol-karaktereak orriak urratsez urrats azaltzen du, arau bakoitzaren iturriarekin.