台灣最大程式設計社群網站
線上人數
448
 
會員總數:245785
討論主題:189420
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 公司統一編號檢查
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
公司統一編號檢查
價值 : 0 QP  點閱數:912 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
請參考 VBGuide(http://www.vbguide.com.tw)個個擊破單元 問題271

前言

營利事業統一編號邏輯檢查來源為國稅局提供的 BASIC 程式,程式相當精簡,而且利用到 GOTO 語法,但對照其規則時,則不易了解其程式,因此加以改寫如下。對於國稅局提供提供的 BASIC 程式可以參考財政部稅制委員會出版的《營業稅、印花稅、證券交易稅法令彙編》(中華民國八十五年度版)第 508-523 的 <營業人進、銷項媒體申報注意事項> 說明,其中

附件六營利事業統一編號邏輯檢查方式為最正式;
附件七營利事業統一編號檢查副程式,是舊 BASIC 語言,利用 Visbal Basic 是無法編譯。

《營業稅、印花稅、證券交易稅法令彙編》可以在台北三民書局及正中書局購買或者查詢學校圖書館 (假如圖書館是使用中國圖書分類法作為中文圖書分類,其編號落於567.5)

程式說明

參考資料:吳和珍及許秋雪所編著之《Visual Fox Pro SQL應用專輯》第第3-158,3-159。

(一) 長度:共八位,,全部為數字型態。

(二) 計算公式

1、各數字分別乘以 1,2,1,2,1,2,4,1。
2、公式如下:

D1 D2 D3 D4 D5 D6 D7 D8
* 1 2 1 2 1 2 4 1 (第一列 * 第二列)


--------------------------------------------------------------------------------

A1 B1 A2 B2 A3 B3 A4 B4 (Bx:相乘後的十位數)
+ C1 C2 C3 C4 (Cx:相乘後的個位數)

--------------------------------------------------------------------------------

X1 X2 X3 X4 X5 X6 X7 X8 (Xx:相加後的十位數)
Y7 (Yx:相加後的個位數)

Z1= X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 或
Z1= X1 + X2 + X3 + X4 + X5 + X6 + Y7 + X8

3、當第 7 位數為 7 者,可取相加之倒數第二位取 0 及 1 來計算如 Z1 及 Z2 計算其和。
4、假如 Z1 或 Z2 能被 10 整除,則表示營利事業統一編號正確。

(三) 範例 ( 以 0 0 2 3 8 7 7 8 為例 )

0 0 2 3 8 7 7 8
* 1 2 1 2 1 2 4 1 (第一列 * 第二列)


--------------------------------------------------------------------------------

0 0 2 6 8 1 2 8 (Bx:相乘後的十位數)
+ 4 8 (Cx:相乘後的個位數)

--------------------------------------------------------------------------------

0 0 2 6 8 5 1 8 (Xx:相加後的十位數)
0 (Yx:相加後的個位數)

Z1= 0+ 0+ 2+ 6+ 8+ 5+ 1+ 8 = 30 或
Z2= 0+ 0+ 2+ 6+ 8+ 5+ 0+ 8 = 29
因 30 能被 10 整除,故營利事利統一編號正確。


===============================================================
回應者: old man c906@ms7.hinet.net

引用 ASP實務寶典/陳世明,江高舉編著這本書 :

<%
Function ValidBID(bid)
dim n(8)

If (Len(bid) <> 8) Then
ValidBid = False
Exit Function
End If
for i = 1 to 8
ch = Mid(bid,i,1)
If (ch<"0" or ch>"9") Then
ValidBID = False
Exit Function
End If
next
for i = 1 to 8
n(i) = ASC(Mid(bid,i,1))-48 '將字串轉為數字
next
'權數為1的部分直接相加
wt = n(1) + n(3) + n(5) + n(8)
'計算權數
n(2) = n(2) * 2
n(2) = Int(n(2)/10) + n(2) Mod 10
n(4) = n(4) * 2
n(4) = Int(n(4)/10) + n(4) Mod 10
n(6) = n(6) * 2
n(6) = Int(n(6)/10) + n(6) Mod 10
n(7) = n(7) * 4
n(7) = Int(n(7)/10) + n(7) Mod 10
wt = wt + n(2) + n(4) + n(6) + n(7)
'能被10整除代表正確
if wt Mod 10 = 0 Then
ValidBID = True
Else
'假如營利事業統一編號第7位為"7"
If Mid(bid,7,1)="7" Then
wt = wt - n(7) + Int(n(7)/10) '重新計算加權數
if wt Mod 10 = 0 Then '若能被10整除,代表正確
ValidBID = True
Else
ValidBID = False '否則錯誤
End If
Else
ValidBID = False
End If
End If
End Function
%>

本篇文章發表於2002-06-06 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.