VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

電子發票完全解決方案
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
spfrk



註冊時間: 2004-11-08
文章: 161


第 1 樓

發表發表於: 星期二 二月 09, 2016 11:46 am    文章主題: 電子發票完全解決方案 引言回覆

使用電子發票有2個高門檻, 電子發票證明聯列與發票上傳

尤其是發票上傳平台的程式並不好寫,都要搞很久,因為要搞定電子發票平台的通訊協定,

那真是很費工夫的, 我花了不少時間, 把發票上傳的程式寫成 object Methods,

只要給發票的內容, 就可以完成上傳的工作, 非常簡單, 並且與電子發票列印整合在一起,

這樣各位狐友就可以很輕鬆的開發電子發票, 只要透過以下 methods 就可以使用

NetSta() 網際網路狀態
EvInit() 初始化
EvXmlOpen() 啟通訊通道
EvGetInv() 取號
EvUpInv() 發票上傳
EvCanInv() 發票作廢

目前配合的電子發票平台是"雲端生活家", 現在因為食安的問題,所有有關食品的相關

行業都要開立電子發票, 各位狐友有寫相關行業的系統, 可以開始試試, 現在凡是連鎖

的飲料店都開立電子發票了, 今年是電子發票爆發年, 各位狐友加油 !
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 2 樓

發表發表於: 星期三 二月 10, 2016 10:22 am    文章主題: 引言回覆

十分感恩您的用心
只是目前由這篇文章,實在看不出來要如何運用您那幾個 methods,
能提供範例嗎?

另,這個【雲端生活家】點進去之後,全是靜態網頁,看不出來有什麼作用?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
spfrk



註冊時間: 2004-11-08
文章: 161


第 3 樓

發表發表於: 星期三 二月 10, 2016 10:27 am    文章主題: 引言回覆

電子發票上傳與列印範例
*///
*/
*///
func EvEscPgDn
para v1
local vkey, vsta, vini, vdt, vbig, vsml, vTestCma, vTestSid

v1 = upper(v1)
if v1 = '7'
keyb "{ESC}"
retu .Y.
endif

if v1 = '1' && 初始化
sure('網路狀態: ' + Ltrim(str(oEv.NetSta(),9)))
vini = "EvInit.txt"
if file(vini)
EvEscPgDn1(vini)
endif
oEv.EvInit(vEvhttps,vEvUser,vEvPsWd,vEvLocId,vEvDevId,vEvEdcId,vEvDebug)
vActSqu = '1'
endif

if v1 = '2' && 開啟通道, 取得 SID
if vActSqu <> '1'
sure('未初始化')
retu .F.
endif

vsta = oEv.EvXmlOpen()
sure(vsta)
vActSqu = vActSqu + '2'
endif

if v1 = '3' && 取得 2016年 1-2月 5張發票號碼 隨機碼 QRCODE 此處為西曆
if vActSqu <> '12'
sure('未開啟通道')
retu .F.
endif

sure('最大取號張數 50, 目前設定張數'+str(vEVGETMAX,4))

vTestSid = 0
if sure('SID 錯誤測試', .N.)
vTestSid = 1
endif

vsta = oEv.EvGetInv(vInvYm,vEVGETMAX, vTestSid)
vInvFirst = right(vsta,39) && 取得第一張發票
&& EvGet20160223182016.txt
sure(vsta)
vActSqu = vActSqu + '3'
endif

if v1 = '4'
if vActSqu <> '123'
sure('未取得 '+ vInvYm + ' 發票號碼')
retu .F.
endif
*/ 10 20 30 40
*/ 1234567890123456789012345678901234567890
*/ EV183995727109KHiFeSiMuXGxhz5F5naT6Q==T

if Len(vInvFirst) <> 39
sure('未 取得第一張發票')
retu .F.
endif

*/ 載具類別
*/ 無載具 EJ0002
*/ 手機條碼 3J0002
*/ 悠遊卡 1K0001
*/ iCash 2G0001

*/ . . 10. .
*/12345678901234
*/20160224120606
vPrnDateTime1 = date14() && 發票列印時間 上傳用
vdt = vPrnDateTime1
vPrnDateTime2 = substr(vdt,1,4)+'-'+substr(vdt, 5,2)+'-'+substr(vdt, 7,2)+' '+; && 發票列印時間 列印用
substr(vdt,9,2)+':'+substr(vdt,11,2)+'-'+substr(vdt,13,2)

vTestCma = ''
if sure('商品逗號平衡測試', .N.)
vTestCma = ',}]'
endif

vstr = date14()+';' +; && 日期與時間 20160223193016 共 14 bytes
'0000000000;' +; && 買方統編 無統編 0000000000 共 十個 0
substr(vInvFirst,1,10)+';' +; && 發票號碼
'89798198;' +; && 賣方統編
'EJ0002;' +; && 載具類別
'N;' +; && 發票是否列印過
'29322148;' +; && 愛心碼, 有愛心碼, 載具類別為 無載具 EJ0002
substr(vInvFirst,11,4) +';'+; && 隨機碼
substr(vInvFirst,15,24)+';'+; && QrCode 發票號碼+隨機碼 AES BASE64 編碼
'3;' +; && 總商品項數
'47100,47101,47102;' +; && 每一個商品號碼
'茶葉蛋,可樂,'+vTestCma+'三明治;'+; && 每一個商品名稱,每一個商品名稱不得超過 14 Bytes, 不得有任何符號 +-/*~!, 等
'10,20,30;'+; && 每一個商品售價
'1,2,3;' +; && 每一個商品數量
'1,1,1;' +; && 每一個商品稅別 1 應稅 0 免稅
'0.05,0.05,0.05;'+; && 每一個商品稅率
'60' && 銷售總金額, 已扣除折扣讓金額

sure('請保留此字串,以便補上傳'+chr(13)+vstr)

vTestSid = 0
if sure('SID 錯誤測試', .N.)
vTestSid = 1
endif
vsta = oEv.EvUpInv(vstr,vTestSid) && 回傳碼為4碼辨識碼加上傳字串,請記錄下來,以備補傳
sure(vsta)
vActSqu = vActSqu + '4'
endif

if v1 = '5'
if vActSqu <> '1234'
sure(vInvYmC +' ' + substr(vInvFirst,1,10) +' 發票號碼未上傳')
retu .F.
endif
vsta = oEv.EvCanInv(vInvYmC+substr(vInvFirst,1,10)) && 10502AK12345678
sure(vsta)
endif

if v1 = '6'
if vActSqu <> '1234'
sure(vInvYmC +' ' + substr(vInvFirst,1,10) +' 發票號碼未上傳')
retu .F.
endif
vsta = oEv.ElcInv(vComPort, -2, 0, "3:3:1:0:0", vInvYmS, substr(vInvFirst,1,10), substr(vInvFirst,11,4),;
substr(vInvFirst,15,24), "89798198", "23698115", 60, "茶葉蛋:1:10:可樂:1:20:三明治:1:30", "雲端生活 發財店 02-1234-5678;"+vPrnDateTime2)

vbig = chr(29)+chr(33)+chr(1)
vsml = chr(29)+chr(33)+chr(0)

oEv.ElcInvText(vComPort,2,0,".................")
oEv.ElcInvText(vComPort,1,0,"11111111 銷貨明細")
oEv.ElcInvText(vComPort,1,0, vbig + "22222222" + vsml + " 雲端生活")
oEv.ElcInvText(vComPort,4,1," ")

vok = sure("列印機狀態 " + str(vsta,3))
endif
retu .Y.

*///
*/
*///
func EvEscPgDn1
para vfile
local vdata, vTmpArr[2], vhead

create cursor TmpTxt (FDATA C(80))
appe from (vfile) sdf
go top
do while !eof()
vdata = alltrim(FDATA)
afill(@vTmpArr, '')
str_arr(vdata, ';', @vTmpArr)
vhead = upper(alltrim(vTmpArr[1]))
vTmpArr[2] = alltrim(vTmpArr[2])
do case
case vhead = 'EVHTTPS'
vEvhttps = vTmpArr[2]

case vhead = 'EVUSER'
vEvUser = vTmpArr[2]

case vhead = 'EVPSWD'
vEvPsWd = vTmpArr[2]

case vhead = 'EVLOCID'
vEVLOCID = vTmpArr[2]

case vhead = 'EVDEVID'
vEVDEVID = vTmpArr[2]

case vhead = 'EVEDCID'
vEVEDCID = vTmpArr[2]

case vhead = 'EVDEBUG'
vEVDEBUG = val(vTmpArr[2])

case vhead = 'EVGETMAX'
vEVGETMAX = val(vTmpArr[2])

case vhead = 'COMPORT'
vCOMPORT = val(vTmpArr[2])
endcase
skip
enddo
if vEVGETMAX < 1 .or. vEVGETMAX > 50
vEVGETMAX = 25
endif

if vCOMPORT < 1 .or. vCOMPORT > 9
vCOMPORT = 1
endif

sure(vfile+' '+vEvhttps+' '+ vEvUser+' '+vEvPsWd+' '+ vEVLOCID + ' '+ vEVDEVID+' '+ vEVEDCID+ str(vEVGETMAX,3)+ str(vCOMPORT,2)+ str(vEVDEBUG,2))
retu .Y.
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期三 二月 10, 2016 5:49 pm    文章主題: 引言回覆

過完年再來關心.

重點應該是 拆帳怎麼拆. XD
這些都不會寫.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
spfrk



註冊時間: 2004-11-08
文章: 161


第 5 樓

發表發表於: 星期三 二月 10, 2016 8:29 pm    文章主題: 引言回覆

syntech 寫"重點應該是 拆帳怎麼拆. XD " , 這段看不太懂

我目前使用的電子發票平台為"雲端生活家", 因為我寫了這個工具, 我自己也在用,
目前要使用電子發票都要弄很久又很複雜,為了可讓 POS 開發廠商能順利開發,
我提供此工具給各位狐友使用,要使用此工具必須先了解電子發票上傳的機制,因
此必須先上課,大概需要2小時,我就收這2小時的鐘點費,就跟我2年多前,財政部邀
我主講"新版電子發票列印" 一樣,我也是只收2小時的鐘點費,多辦幾場,我也有些小外
快可賺.
電子發票平台有很多家,大約有20家左右,每月的上傳費用每家都差不多,當然連鎖體系
店數多,當然比較便宜,電子發票列印機除了大陸貨之外價錢都差不多,如果要使用電子發票,
選擇性很多,不一定藥用我建議的方案,可以多比幾家,如有其他家有類似的工具,也可以跟我講,
互相學習求進步
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 6 樓

發表發表於: 星期三 二月 10, 2016 10:35 pm    文章主題: 引言回覆

spfrk 寫到:

每月的上傳費用每家都差不多


很抱歉,我是十足外行,問句外行話!
上傳費用是什麼意思呢?
不是把發票資料檔傳給財政部嗎?

傳東西給政府還要每個月付費?
那對商家不是徒增支出成本?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
spfrk



註冊時間: 2004-11-08
文章: 161


第 7 樓

發表發表於: 星期三 二月 10, 2016 11:22 pm    文章主題: 引言回覆

一般營業人不能直接上傳電子發票到到財政部,必須透過平台商上傳,因為全國的營業人如果同時上傳財政部,那一定當機的,
所以必須透過平台商來做,更何況財政部所規劃的 MIG FILE 超級複雜,由平台商稍微簡化,再上傳,這樣比較能接受,當然如果
你有能力維護 MIG FILE TURN KEY 的話, 自己向財政部申請為平台, 自己上傳也可以, 一般的收費大該都在每月
1000元左右, 想想看, 如果要用電子發票的話, 那 POS 系統的程式要換, 甚至連硬體都要換,因此現在只有較大的連鎖商店才會用, 根本沒有獨立店要用, 不過由於食安的問題,所有有開立二聯式發票的食品業都要改開電子發票,你不覺得現在的一些連鎖飲料店都有開電子發票了嗎?

很多 POS 的開發商都不知道電子發票的複雜程度, 最好現在開始就要去了解了, 現在連水費電費電話費等都要開電子發票
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 8 樓

發表發表於: 星期四 二月 11, 2016 11:17 am    文章主題: 引言回覆

感謝您的指教!
如果是這樣子的話,那我還是要抱怨政府
把一套制度弄得那麼複雜,
複雜到像我等這類的設計師都搞不定
(營業稅媒申、扣繳媒申、營所媒申,我都會)

這電子發票系統肯定不是好東西!

一般小商家,請會計師記帳,一個月也才2000元記帳費,
這上傳費用居然要1000元,實在貴得不可思議。

財政部推電子發票,然後增加小商家成本,根本是錯誤政策。
它要推的話,要嘛補貼上傳費用,要嘛把制度弄得像營業稅媒申那樣簡單
此外實是擾民

引言回覆:
財政部所規劃的 MIG FILE 超級複雜,由平台商稍微簡化,再上傳,這樣比較能接受

如果,平台商有能力簡化的話,那麼財政部為何沒有能力簡化?


ckp6250 在 星期四 二月 11, 2016 11:26 am 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 9 樓

發表發表於: 星期四 二月 11, 2016 11:24 am    文章主題: 引言回覆

架構:
[中小型商行/個體戶] <=> [電子發票上傳平台] <=>[財政部]

網友的1樓部分就是前面小型商行與電子發票上傳平台溝通的介面,
其實很多開發者都可以做,
但這部分與電子發票上傳平台所提供的介面有關.
通常上傳的內容可能是CSV檔,或是透過平台的API,
這個會遇到電子發票上傳平台本身的功力,
CSV等上傳方式就是"離線處理",
API等上傳方式,通常是"即時處理",
並沒有規範必須即時處理,大多在12~24小時內上傳就可以.

那要怎麼對客戶收費,
最基本的費用就是電子發票上傳平台使用月租費,
另外就是像我們這種系統開發商應該怎麼收費,

其中的眉角我不能說.
基本上就是看張數計費,會有基本張數,
一個發票號碼一個帳戶,
也就是客戶是不能與別人共用的,
不能用大量客戶彙總做二房東的方式收錢.
客戶願不願意付,願意付多少,
這是一個關卡,

而客戶營業時間不同,
系統開發商怎麼提供服務?該怎麼計費?

當然這一收就是長期租賃客戶,
所以不少平台商也在找有能力的開發商.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙


syntech 在 星期四 二月 11, 2016 11:30 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
bx1166



註冊時間: 2011-12-06
文章: 273


第 10 樓

發表發表於: 星期四 二月 11, 2016 11:27 am    文章主題: 引言回覆

不弄得很複雜 怎麼能顯得官員很努力 很用心
也可以弄處各種門檻 你要跨過去 再談
回頂端
檢視會員個人資料 發送私人訊息
spfrk



註冊時間: 2004-11-08
文章: 161


第 11 樓

發表發表於: 星期四 二月 11, 2016 4:28 pm    文章主題: 引言回覆

財政部有在弄 mini MIG file , 但都還沒有對外說明,有可能不會釋出

MIG file 是考慮所有的行業別,所以特別龐大,一般的零售與餐飲業用不到,

目前上傳 API 的規格有 XML, JSON, 財政部只接受 XML, 有些平台是用
JSON , 不過都差不多, 有看過 API 的人, 都會覺得很煩, 不過也沒辦法

MIG 的全文是 Message Implementation Guideline
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 12 樓

發表發表於: 星期四 二月 11, 2016 5:54 pm    文章主題: 引言回覆

我終年都在做稅務軟體,處處接觸財政部的一些媒體檔案規格,
容我說句不客氣的話,都是一群蠢蛋在定規格。(衛福部的二代健保媒申格式也差不多一樣愚蠢)

(我能舉出一大堆例子,只是過年期間,沒力氣發脾氣)

簡單才不容易出錯,簡單才有效率。
那群人,似乎永遠不懂。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
spfrk



註冊時間: 2004-11-08
文章: 161


第 13 樓

發表發表於: 星期四 二月 11, 2016 7:09 pm    文章主題: 引言回覆

不要氣, 看有沒有人認識新科立委的,去陳情一下,不然我們狗吠火車也是浪費力氣的,

我也被電子發票弄得暈頭轉向的, 過年假還在打拼, 做得比平時還努力
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 14 樓

發表發表於: 星期四 二月 11, 2016 8:02 pm    文章主題: 引言回覆

spfrk 寫到:
不要氣, 看有沒有人認識新科立委的,去陳情一下,不然我們狗吠火車也是浪費力氣的


我不會去陳情啦,說心裡話,要是沒有那一群善心人士,
弄得平民百姓昏頭亂向
誰還來買我的軟體呢?

而且,還有一個很大的好處,
如果我的軟體不慎出了Bug
我只要推給財政部,說它們的制度亂成一團,
客戶都能認同接受哩。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 15 樓

發表發表於: 星期一 二月 15, 2016 10:42 am    文章主題: 引言回覆

spfrk 寫到:

目前上傳 API 的規格有 XML, JSON, 財政部只接受 XML, 有些平台是用
JSON , 不過都差不多, 有看過 API 的人, 都會覺得很煩, 不過也沒辦法


這個可是很重要.

例如中華票服不提供 json 格式上/下傳資料,
但若以phonegap 開發app,
因為瀏覽器"同源策略"的緣故,就無法跨網域對中華票服上下傳資料.
這樣就無法設計只利用平板操作的發票系統.

2015年9月份向中華票服反映,
至今石沉大海中,
讓我有點考慮自己搞一個中介server,接受jsonp的呼叫. Evil or Very Mad

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作