下午到舊公司討論電子發票格式相關問題,跟舊同事聊天聊到電子發票支援的硬體時,舊同事也抱怨到POS相關的硬體廠商雖然”宣稱”支援”標準的ESC/POS指令”,但實測起來每台機器還是會呈現出不同的結果。
突然想到之前在做醫療檢驗儀器連線時,即使設備商提到是使用ASTM格式傳輸,但不管是尿液、血液…..適用什麼immuLite、AXSYM、Alastat….最後在做連線通訊時也是不一樣。
這也是做軟硬體結合時,寫程式的悲哀吧XDDD不過寫出來時又是另一種雀躍的心情了~~
大型網站架構..net 架構師.rabbitMQ.redis.行動開發.APP開發教學.PHP Laravel開發..net core C# 開發.架構師之路.Delphi開發.資料庫程式.進銷存.餐飲POS系統
下午到舊公司討論電子發票格式相關問題,跟舊同事聊天聊到電子發票支援的硬體時,舊同事也抱怨到POS相關的硬體廠商雖然”宣稱”支援”標準的ESC/POS指令”,但實測起來每台機器還是會呈現出不同的結果。
突然想到之前在做醫療檢驗儀器連線時,即使設備商提到是使用ASTM格式傳輸,但不管是尿液、血液…..適用什麼immuLite、AXSYM、Alastat….最後在做連線通訊時也是不一樣。
這也是做軟硬體結合時,寫程式的悲哀吧XDDD不過寫出來時又是另一種雀躍的心情了~~
業務上的需求要開發電子發票的模組,前同事給了Delphi 6的範例程式,經過了一番修改後,終於在 Delphi XE3能正確使用了。
主要的問題如下:
1) Char改 AnsiChar
2) PChar改 PAnsiChar
3) String 改 AnsiString
4) XE3 Length取長度時,也需要先以AnsiString才會正確。
主要加密元件宣告
[pascal]
procedure QRCodeINV(a_InvoiceNumber: AnsiString;
a_InvoiceDate: AnsiString;
a_InvoiceTime: AnsiString;
a_RandomNumber: AnsiString;
af_SalesAmount: Double;
af_TaxAmount: Double;
af_TotalAmount: Double;
a_BuyerIdentifier: AnsiString;
a_RepresentIdentifier: AnsiString;
a_SellerIdentifier: AnsiString;
a_BusinessIdenti: AnsiString;
a_AESKey: AnsiString;
a_output: pAnsiChar;
var ai_errorCode : Integer) STDCALL; external ‘QRDLL.DLL’;
[/pascal]
附上電子發票開發需要文件:
把網路上的圖片顯示在Image如何做到?
[pascal]
var
MS: TMemoryStream;
JPEG: TJPEGImage;
Url: String;
I: Integer;
begin
ProgressBar1.Visible := True;
MS := TMemoryStream.Create;
try
JPEG := TJPEGImage.Create;
try
Url := edit1.text;
MS.Clear;
try
IdHTTP1.Get(Url, MS);
except
end;
MS.Position := 0;
JPEG.LoadFromStream(MS);
Image1.Picture.Assign(JPEG);
Application.ProcessMessages;
finally
JPEG.Free;
end;
finally
MS.Free;
end;
end;
[/pascal]
在畫面上放置
1 ApplicationEvents
2 TrayIcon
3 PopupMenu
然後在ApplicationEvents1Minimize寫上
[pascal]
Hide();
WindowState := wsMinimized;
TrayIcon1.Visible := True;
TrayIcon1.Animate := True;
TrayIcon1.ShowBalloonHint;
[/pascal]
接著在TrayIcon的Click事件讓popupmenu顯示
[pascal]
var
p : TPoint;
begin
GetCursorPos(p);
popupmenu1.Popup(p.X,p.Y);
end;
[/pascal]
最後在popupmenu上的onclick加上
[pascal]
Show;
WindowState := wsMaximized;
trayicon1.Visible := False;
[/pascal]
Delphi如何透過隨機的函數產生英文大寫、英文小寫以及數字呢?
方法很簡單
[pascal]
// 英文小寫
Randomize;
S := Chr(ord(‘a’) + Random(26));
[/pascal]
[pascal]
// 英文大寫
Randomize;
S := Chr(ord(‘A’) + Random(26));
[/pascal]
[pascal]
// 數字
Randomize;
S := Chr(ord(‘0’) + Random(10));
[/pascal]
Delphi在XE5開始就提供了REST Client的元件,讓開發REST Client應用的開發者能在最短的時間開發出相關的應用,今天就利用臺北市政府資料開放平台中的臺北市旅館資料庫資料來做一個簡單的範例「台北住宿通」。讓大家瞭解Delphi 如何存取json資料,並顯示。
詳細內文請見
CodeData >> Delphi APP 開發入門(十)REST Client 開發
如何直接利用Delphi建立有password的access mdb database?
[pascal]
Use System.Win.ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var cnewmdb:variant;
begin
// 透過ADOX建立
cnewmdb := CreateOleObject(‘ADOX.Catalog’);
cnewmdb.Create(‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.MDB;Jet OLEDB:Database Password=”12345678”;’ );
// 連線
ADOConnection1.ConnectionString:=’Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TT2.MDB;Jet OLEDB:Database Password=”12345678”;’;
ADOConnection1.LoginPrompt:=false;
ADOConnection1.connected:=true;
end;
[/pascal]
許多朋友選擇自己創業做老闆時,最常見的創業就是餐飲業為主的方式。無論是自行創業或是加盟,都需要軟硬體設備及架構,當然也有許多人會評估使用餐飲POS系統。
餐飲POS系統依結帳流程不同主要分為先結帳及後結帳二種版本。先結帳版本常見於飲料店或一般早餐店;而後結帳版本主要於餐廳為主。而使用POS系統主要的原因除了提高點餐的正確性、便利性,也可以方便以電腦做管理以及瞭解營業狀況等分析。
目前POS系統價格平均一套在50,000元上下,一套系統大約包含1、POS主機一部 2、出單機 3、標籤機 4、發票機 5、錢櫃 6、餐飲系統軟體。而除了買斷外,亦有每月3000元月租方案的POS系統商。當然除了期初的硬體成本外,出單機、標籤機、發票機也會有耗材(紙張、碳粉)的成本。以及每年與系統廠商的維護合約。