Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
takeout_sbk
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yunpeng.song
takeout_sbk
Commits
e4f3e361
Commit
e4f3e361
authored
May 21, 2018
by
yunpeng.song
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交sim脚本
parent
d5c4a9f5
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
371 additions
and
0 deletions
+371
-0
isl/FMOMS.isl
+371
-0
No files found.
isl/FMOMS.isl
0 → 100644
View file @
e4f3e361
retainglobalvar
UseISLTimeOuts
var dll_handle : N9
//var reqMsg : A50 = "01 999900000100000120170816"
var reqMsg : A50 = "01 00000100000100000120170922"
//var resMsg : A100
var msgCode:A4
// Constant Values Begin
var RESPONSE_SUCCESS : a4 = "1000"
var RESPONSE_CONTINUE : a4 = "1001"
var RESPONSE_NOMORE : a4 = "1002"
var RESPONSE_REFUND : a4 = "1009"
var SYMB_LEVEL1 : A10 = "^"
var SYMB_LEVEL2 : A10 = "~"
var PRODUCTS_SIZE : N3 = 200
var logText:a10000
var globalRefNum : A30
var productList[200]:A32
var discountFee:$10
var OpenChecks : N4
var productLength : N4
var ORDER_EVENT : N4 = 2
var requestString : A100
//Event Begin_Check
// format logText as "in OMS begin - tremp ", @Tremp
// call log_printf_tdsfs(logText, 0)
// format logText as "in OMS begin - ckcshr ", @CKCSHR
// call log_printf_tdsfs(logText, 0)
// call get_para_string(requestString)
// format logText as "in OMS begin - requestString [", requestString, "]"
// call log_printf_tdsfs(logText, 0)
//EndEvent
sub get_para_string(ref out)
var TransType:A2 = "01"
var StoreNo:A8 = @PROPERTY
call get_fixed_String(8,StoreNo)
var deviceNo:A6 = @WSID
call get_fixed_String(6,deviceNo)
var cashierNo:A6 = @TREMP
call get_fixed_String(6,cashierNo)
var businessDay:A8
call get_format_date(businessDay)
var reserved:A64 = " "
format out as TransType,StoreNo,deviceNo,cashierNo,businessDay,reserved
endsub
sub get_format_date(ref str)
var temp:A10
format temp as @Year,"-",@Month,"-",@Day
var year1:A4
var mon1:A2
var day1:A2
split temp,"-",year1,mon1,day1
year1 = mid(year1, 2, 2)
if( Len(mon1) = 1 )
format str as "20",year1,"0",mon1
else
format str as "20",year1,mon1
endif
if( Len(day1) = 1 )
format str as str,"0",day1
else
format str as str,day1
endif
endsub
sub get_fixed_String(var length: N4, ref str)
str = trim(str)
var leng:N4 = Len(str)
if(length > leng)
Var i : n3
for i = 1 to length - leng
format str as str," "
endfor
endif
if(length < leng)
str = mid(str, 1, length)
endif
endsub
event tmed:79
format logText as "in event tmed:79: ", globalRefNum
call log_printf(logText, 0)
saverefinfo globalRefNum
endevent
event inq:66
if(@numdtlt > 0)
ExitWithError "当前交易未完成,请结束交易后重试"
endif
// User logged in
// Has cashier
if (dll_handle = 0)
DLLLoad dll_handle, "C:\FreeMud\OMSFreemudAPI.dll"
endif
var orderMsg:A20000
if(dll_handle = 0)
format logText as "FreeMud OMS Service not available."
call log_printf_tdsfs(logText, 0)
ExitWithError logText
endif
DLLCallW dll_handle, FMGetResponse(reqMsg, ref orderMsg)
format logText as "Order data: ", orderMsg
call log_printf_tdsfs(logText, 0)
// Parse respnose code
var retMsg1 : A200
split orderMsg, SYMB_LEVEL1, retMsg1
var msgLen : N3 = len(retMsg1) - 4
var msgText:a100 = trim(mid(orderMsg, 5, msgLen))
msgCode = trim(mid(orderMsg, 1, 4))
if (msgCode <> RESPONSE_SUCCESS AND msgCode <> RESPONSE_CONTINUE)
//No new orders
if (msgCode = RESPONSE_NOMORE)
format logText as "No more order."
call log_printf_tdsfs(logText, 0)
// DllFree
DLLFree dll_handle
dll_handle = 0
ExitCancel
endif
//Refund
if (msgCode = RESPONSE_REFUND)
format logText as "Refunded order "
call log_printf_tdsfs(logText, 0)
// Parse response body
var msg:a104
var shop:a100
var order:a200
var discount:a50
var checkNo:a8
split orderMsg, SYMB_LEVEL1, msg, shop, order, discount, checkNo
checkNo = trim(checkNo)
var orderId:A100 = trim(mid(order, 1, 100))
format logText as "Refund order:", orderId, " Check:", checkNo
InfoMessage "Refund order ", orderId, " Check: ", checkNo
loadkybdmacro defkey("VoidClosedCheck"), MakeKeys(checkNo), @KEY_ENTER, @KEY_ENTER
call ReportCheckNo(orderId, checkNo)
ExitContinue
endif
format logText as "Error occured: " , "-", msgCode, ":", trim(msgText)
call log_printf_tdsfs(logText, 0)
// DllFree
DLLFree dll_handle
dll_handle = 0
ExitWithError trim(msgText)
endif
// Parse response body
var msg:a104
var shop:a100
var order:a200
var discount:a50
var products:a20000
split orderMsg, SYMB_LEVEL1, msg, shop, order, discount, products
var productArray[PRODUCTS_SIZE]:A32
var shopId:A50 = trim(mid(shop, 1, 50))
var orderId:A100 = trim(mid(order, 1, 100))
var totalFee:A15 = trim(mid(order, 101, 15))
var feeStr : A20 = trim(mid(discount, 1, 10))
format logText as "Order:", orderId, " TotalFee:", totalFee, " DiscountFee:", feeStr
call log_printf_tdsfs(logText, 0)
globalRefNum = orderId
discountFee = feeStr + 0.00
// Read products
format logText as "Product string length: ", len(products)
call log_printf_tdsfs(logText, 0)
split products, SYMB_LEVEL2, #PRODUCTS_SIZE, productArray[]
var arraylength : N3 = 0
var i : N3
for i = 1 to PRODUCTS_SIZE
productList[i] = productArray[i]
if(trim(productArray[i]) <> "")
arraylength = arraylength + 1
endif
endfor
productLength = arraylength
OpenChecks = arraylength
format logText as "Product number : " , OpenChecks
call log_printf_tdsfs(logText, 0)
DLLFree dll_handle
dll_handle = 0
loadkybdmacro defkey("OrderType", N:2)
loadkybdmacro defkey("SimInquire", A:"FMOMS:ORDER_EVENT")
endevent
event inq:ORDER_EVENT
if OpenChecks > 0
call OrderProduct()
else
call PayOrder()
//Report Check number
call ReportCheckNo(globalRefNum, @Cknum)
//End, Reset globalRefNum
globalRefNum = ""
endif
endevent
event mi
if (globalRefNum <> "")
format logText as "Menu Item Left: ", OpenChecks, "Quantity: ", @TTL, @QTY
call log_printf_tdsfs(logText, 0)
loadkybdmacro defkey("SimInquire", A:"FMOMS:ORDER_EVENT")
endif
endevent
sub log_printf_tdsfs(ref xml,var flag:N1)
var credit:A10000
var current_time:a10
format current_time as @Hour,":",@Minute,":",@Second
if flag = 1
format credit as "send,",current_time," ",xml
elseif flag = 2
format credit as "recv,",current_time," ",xml
elseif flag = 0
format credit as current_time," ",xml
endif
var fn:N5
var logfile:a100
format logfile as "C:\FreeMud\log\simlog-",@Year,"-",@Month,"-",@Day,".log"
fopen fn,logfile,append,unicode
if fn = 0
errormessage @File_errstr
exitcontinue
endif
fwrite fn,credit
fclose fn
endsub
sub OrderProduct()
format logText as "Start processing products. Left: ", OpenChecks
call log_printf_tdsfs(logText, 0)
var skuId:A10
var productAmount:A3
var productPrice:A10
var i:N10 = productLength - OpenChecks + 1
if (trim(productList[i]) <> "")
skuId = trim(mid(productList[i], 1, 10))
productAmount = trim(mid(productList[i], 11, 3))
productPrice = trim(mid(productList[i], 14, 10))
OpenChecks = OpenChecks - 1
format logText as "Product[", i , "] : " , skuId, " ", productAmount
call log_printf_tdsfs(logText, 0)
loadkybdmacro MakeKeys(productAmount), key(1, skuId)
format logText as "Product ", skuId, " ordered."
call log_printf_tdsfs(logText, 0)
else
format logText as "Error parsing product, index: ", i
call log_printf_tdsfs(logText, 0)
endif
endsub
sub PayOrder()
// Pay the check
if (discountFee > 0)
format logText as "Discount fee: ", discountFee
call log_printf_tdsfs(logText, 0)
loadkybdmacro key(3, 100), MakeKeys(discountFee / 100), @KEY_ENTER, makekeys("FM discount"), @KEY_ENTER
endif
format logText as "Payment for order ", globalRefNum
call log_printf_tdsfs(logText, 0)
loadkybdmacro @KEY_ENTER, defkey("Payment", N:79, A:"Cash:Cash"), makekeys(globalRefNum), @KEY_ENTER
endsub
sub ReportCheckNo(var order:A30, var check:A8)
//Report Check number
if (dll_handle = 0)
DLLLoad dll_handle, "C:\FreeMud\OMSFreemudAPI.dll"
endif
var rptChkMsg:A122
var rptChkRsp:A128
var orderId:A20
var chkNo:A8
orderId = order
chkNo = check
call get_fixed_String(20, orderId)
call get_fixed_String(8, chkNo)
format rptChkMsg as "040000000100000100000120180101", orderId, chkNo
DllCallW dll_handle, FMGetResponse(rptChkMsg, ref rptChkRsp)
format logText as "Check number report response: ", rptChkRsp
call log_printf_tdsfs(logText, 0)
DllFree dll_handle
dll_handle = 0
endsub
event inq:67
loadkybdmacro @KEY_ENTER, key(9,1), @KEY_ENTER
loadkybdmacro defkey("SimInquire", A:"FMOMS:66")
endevent
event inq:68
loadkybdmacro defkey("SimInquire", A:"FMOMS:66")
endevent
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment