사업자등록번호는 10자리 (xxx-xx-xxxxx)로 구성됨.
일련번호코드 ( 3자리 )
- 신규개업자에게 사용 가능한 번호 101-999를 순차적으로 부여합니다.
처음 세자리는 자신의 관할 구청이 어딘지에 따라 다름.
서울지방국세청(100)
종로 101, 남대문 104, 마포 105, 용산 106, 영등포 107, 동작 108, 강서 109, 서대문 110, 구로 113, 반포 114, 양천 117, 금천 119, 삼성 120, 중부 201, 동대문 204, 성동 206, 성북 209, 도봉 210, 강남 211, 강동 212, 서초 214, 송파 215, 역삼 220
중부지방국세청(200)
인천 121, 북인천 122, 안양 123, 수원 124, 평택 125, 이천 126, 의정부 127, 파주 128, 성남 129, 부천 130, 남인천 131, 남양주 132, 안산 134, 동수원 135, 서인천 137, 춘천 221, 삼척 222, 홍천 223, 원주 224, 영월 225, 강릉 226, 속초 227, 태백 228
대전지방국세청(300)
청주 301, 영동 302, 충주 303, 제천 304, 대전 305, 공주 307, 논산 308, 홍성 310, 예산 311, 천안 312, 보령 313, 서대전 314
광주지방국세청(400)
군산 401, 전주 402, 익산 403, 정읍 404, 남원 407, 광주 408, 북광주 409, 서광주 410, 목포 411, 나주 412, 해남 415, 순천 416, 여수 417
대구지방국세청(500)
동대구 502, 서대구 503, 북대구 504, 경주 505, 포항 506, 영덕 507, 안동 508, 김천 510, 상주 511, 영주 512, 구미 513, 남대구 514, 경산 515
부산지방국세청(600)
중부산 602, 서부산 603, 부산진 605, 북부산 606, 동래 607, 마산 608, 창원 609, 울산 610, 거창 611, 통영 612, 진주 613, 가야 622, 제주 616, 수영 618, 금정 621
즉 처음이 만약 101~ 로 시작하는 사업자 번호라면 종로를 소재지로 둔 사업이라고 할 수 있음.
개인 법인 구분코드 ( 2자리 )
- 개인구분 코드
① 개인과세사업자는 특정 동 구별없이 01부터 79까지를 순차적으로 부여
② 개인면세사업자는 산업 구분없이 90부터 99까지를 순차적으로 부여
③ 소득세법 제2조 제3항에 해당하는 법인이 아닌 종교 단체 : 89
④ 소득세법 제2조 제3항에 해당하는 자로서 "(3)"이외의자(아파트관리사무소 등) 및 다단계판매원 : 80
- 법인성격코드:법인에 대하여는 성격별 코드를 구분하여 사용한다.
① 영리법인의 본점 81,86,87, 88
② 비영리법인의 본점 및 지점(법인격 없는 사단,재단,기타 단체 중 법인으로 보는 단체를 포함) : 82
③ 국가,지방자치단체,지방자치단체조합 : 83
④ 외국법인의 본・지점 및 연락사무소 : 84
⑤ 영리법인의 지점 : 85
일련번호코드 ( 4자리 )
- 과세사업자(일반과세자・간이과세자),면세사업자,법인사업자별로 등록 또는 지정 일자순으로 사용 가능한 번호를 0001~9999로 부여합니다.
검증번호 ( 1자리 )
- 전산시스템에 의하여 사업자등록번호의 오류여부를 검증하기 위하여 1자리의 검증번호를 부여합니다.
사업자 등록번호는 123-45-67890 이런식으로 10 자리 구조이다. 이때 각 구성 요소의 의미는 아래와 같다.
사업자번호 구성요소
- 123 (3자리): 국세청 / 세무서별 코드
- 45 (2자리) : 개인 법인 구분코드
- 6789(마지막4자리) : 과세/면세/법인 사업자 등록/지정일자 일련번호
- 0(마지막 1자리) : 검증번호
여기서 마지막 1자리로 유효한 사업자 등록번호인지 확인이 가능하다.
CREATE OR REPLACE FUNCTION public.biz_no_chk(biz_no character varying)
RETURNS smallint
LANGUAGE plpgsql
AS $function$
DECLARE
clean_biz_no CHAR(10);
rtn_val SMALLINT := 0;
BEGIN
-- Remove dashes from the input
clean_biz_no := REPLACE(biz_no, '-', '');
-- Check if the cleaned string has 10 characters
IF LENGTH(clean_biz_no) = 10 THEN
-- Calculate the validation value
rtn_val := CAST(SUBSTRING(clean_biz_no FROM 1 FOR 1) AS SMALLINT);
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 2 FOR 1) AS SMALLINT) * 3) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 3 FOR 1) AS SMALLINT) * 7) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 4 FOR 1) AS SMALLINT) * 1) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 5 FOR 1) AS SMALLINT) * 3) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 6 FOR 1) AS SMALLINT) * 7) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 7 FOR 1) AS SMALLINT) * 1) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 8 FOR 1) AS SMALLINT) * 3) % 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 9 FOR 1) AS SMALLINT) * 5) / 10;
rtn_val := rtn_val + (CAST(SUBSTRING(clean_biz_no FROM 9 FOR 1) AS SMALLINT) * 5) % 10;
rtn_val := rtn_val + CAST(SUBSTRING(clean_biz_no FROM 10 FOR 1) AS SMALLINT);
rtn_val := rtn_val % 10;
ELSE
rtn_val := 255;
END IF;
RETURN rtn_val;
END;
$function$
;'DBA > Postgresql' 카테고리의 다른 글
| 주민등록번호 정합성 체크 FUNCTION (0) | 2024.04.24 |
|---|---|
| 법인등록번호 정합성 체크 FUNCTION (0) | 2024.04.24 |
| Postgresql hash partition 생성 스크립트 (0) | 2024.04.24 |
| Postgresql 파티션 이동 (0) | 2024.04.24 |
| Postgresql vacuum (0) | 2024.04.24 |