Simonstyle's TODO:
  1. HP allinone电脑制作的安装程序不能启动,目前只有dell能制作安装了,怀疑是打包进安装zip的jdk不对?
  2. BarFrame顶部的bill #总是显示1有点傻,应该让它显示“bill number-分单number”
  3. 现在最最重要的是抓紧一切时间,确保跟海底捞还有个多伦多软件的整合。
    1. printBill方法的问题
      1. 返回值是null
    2. 其他的
    3. 所有的饭店和饺子单都作为双税处理,所以没有必要记住那些菜名和菜价了吧。
    4. 如果通过税务局测excel测试
    5. 其他的功能的自测
    6. 手册编纂
  4. close batch之后的单子不可以再return。
  5. 那个末尾的F到底是怎么回事?是mev规格还是我自己加上去的,mev的ref用的是什么格式,会带F吗?
  6. discountDlg,changeDlg还有dicItem对话盒上的规则按钮有时(初始时)没有显示。
  7. makesure menu eixts没有起作用。
  8. depanure的1.0版本。
  9. 现在有更多的PAYMENT OPTION:  CASH, DEBIT, CREDIT, GIFT CARD, UBER, SKIP, DOORDASH, FANTUAN. 在点菜和付款的主界面, 能否加多一个PAYMENT 的BUTTON, 点了这个BUTTON, 可以有这些PAYMENT的选择?·(最后只添加了一个platform支付方法,点击后立即支付,追查时可以根据桌子的名字知道是哪种平台)
  10. invoice编号的开头字符要从服务器下载,每激活一次加一。
  11. 能不能所有的支付都可以支持定制(有个饭店想要把Uber,skip放在首页菜单上,couter模式)
  12. 添加删除菜的功能:
    1. refund一个bill时,弹出带所选bill上所有菜的对话盒,默认所有菜都不选中,用户可以选择需要refund的某些菜,也可以点击全选按钮,然后确定进行退单。
    2. sails 界面上选中菜后,点refund,不再显示错误警告,而是显示选择对话框,问要用bill based方式还是item based方式refund?
  13. 用word写一个带图片或者视频的用户手册类文档,用来让拿到程序的人知道如何安装、设置和使用。
  14. 写一个简单的ReadMe文章,用来让维护程序的人知道如何设置环境、开发、测试、打包。
  15. 客户屏幕上应该增加logo
  16. 桌号只留井号
  17. 启动时的屏幕闪动
  18. 单据的导入导出
  19. 默认安装路径
  20. server project的没有界面的程序的图标问题.what does it mean?
  21. 严重问题:怀疑当有coupon存在时,当执行某种行为(或许是查询?因为我在dbeaver里执行sql时也遇到过)时会遇到系统发疯,效果包括提示连接断掉,重新连接并刷新发现hardware表中有无数条同样id的记录,有时突然发现记录消失了,有时好像又重新出现了,目前我是通过删除硬盘上所有数据库文件的办法临时掩盖住了问题,不知什么情况下回重新触发。
  22. If there are 3 bills, all printed bills, then combined all of them into one bill(or we move the item between the bills, then print again, what will happen in the mev machine?
    1. all the invoice need a ref part. to indicate a bill, and it self, will use the same number with "F" at the end.(not all need ref, only on there's doc, otherwise how can we set a ref? and when bill printed, we set ref to it self. this will be used by the invoice doc which will be same number just added a "F" at the end)
    2. when move items/combine all/un combin all/ need to check if the affected bill are printed, if printed, then need to dump it and generate a new bill copy every thing in the old bill. the new created bill is original status.
  23. if a bill printed check already, then did a void operation, what shall we do? we should print a invoice with 0 as sub total or reprint  a check with 0 as subtotal? (print a final invoice with subtotal 0)
  24. if a bill printed invoice already, then we need to refund to the customer all the money of part of the money. what shall we do? print an other invoice with reprint and negative money as sub total? (yes, but not reprint, just a ref and a negative moneys.)
  25. If a bill or many bills are already printed(bills), then we print the invoice,the msg will calculate two times of money? ,both have displayed same bill number. -----(no problem if the invoice not printed, gov will use the check to calculate the tax.
  26. combine all时,不要动output的billId属性,好用来做undo用。
  27. 下载新订单时,如果遇到新菜自动加入到Pos功能缺陷:没有设上打印机属性。
    1. 下载新订单时,如果新菜的属性有变化,应该自动更新到pos系统。
    2. 在pos上更新菜的属性后,判断如果有hostserver属性的话,要在确定时更新到server。或者至少提醒用户“应该在server上修改“。--------目前先要求有用server的话,尽量或尽快在server上改。万一哪天本地电脑或系统坏了,菜单不会丢。
    3. 下载时只下载MainOrder,如果有新的item,再发请求,下载相关的内容(可能是全套内容)-----暂时没有实现,以后访问量大了再看
  28. add a settings: allow waiter to give discount and change price.
  29. 翻页按钮在菜单满了时,没能正确显示(第二个category显示时,不应该显示翻页,结果却显示了。可能是应该setfalse却没有set的缘故。)
  30. 菜单下载后应该及时发消息给服务器,表示这个order正在打印,把其状态改成n(10),待打印成功后改成M(50),这样避免出现20秒后再次下载订单
  31. 如果打印失败,需要发送消息给服务器,把订单状态从n改为0吗?好像不用,因为没有打印成功则不会从map中删除菜,待打印机修复后还会继续打印的。(测试事先关打印机,pos报错,然后就不再报错了,待开机后老单子+新单子自动打印出来了)
  32. 增加分屏显示功能。
  33. 应该在打印bill之前就保存bill,得到ID。
  34. 如果付钱时选卡,然后exact,然后会被认为是现金支付
  35. 用卡支付时,tip数值有错。
  36. 一个打印机坏了,不应该影响其他打印机的打印。(加了finally for socket print case)
  37. 新建的桌子,bill显示为0,生成第一个单后,billid为2.(应该是1)(因为忘了加时间条件,导致搜索结果发现已经有该桌的bill存在)
  38. on site admin需要有个图形界面,用来操纵各个机器的状态。
  39. 解决安装后,pos不能自动运行的问题。(通过izpack 的short cut Panel解决了,但是开机启动容易启动失败,导致双击图标启动不了,所以又取消了自动启动。)
  40. 制作安装程序
    1. 修改配置文件(原来是GB2312编码,现在需要改成UTF-8编码才能装载如hash并运行。)
      1. 但是目前启动成功后,最后写入PIMConfig时,没有采用UTF-8,而是用了默认编码。
    2. 改成maven项目(为了能够整合进入security的框架,便于将来的升级维护)
    3. 修改bat文件,使能够包括lib并运行(或者不用修改bat也未必)
    4. 修改config文件位置,使能够顺利启动
    5. 发现用console mode,simonStyle可以被启动,但是用startService,却没有启动。
      1. 在Wee的家里的电脑,没有成功启动,在店里的电脑,却成功启动了。
    6. 研究如何能在桌面添加快捷方式,以及/(或者)如何开机启动.
  41. 能在销售那边安装运行
    1. 估计要发送一个link给销售。
    2. 销售下载测试
  42. 商量修改数量
  43. 确定修改方案
  44. 修改。
SanjiPos Tasks left:
  1. ------------sale page-----------
  2. send message to kitchen when remove a save dish, - a saved dish and void order.
  3. print bill funciton in sales page and print all in bill page.
  4. add pay related function.
  5. what is disc?
  6. function in more
  7. -------------bill page------------------
  8. add empty bill in bill page.
  9. add pageleft and pageright button
  10. improve layout function to allow customization of row number and column number.
  11. support Mix layout.(第二步再说,因为混合布局对于翻页太麻烦了)
  12. -------------table page------------------
  13. change mode funcion
  14. add table function
  15. order management
  16. server report
  17. report
  18. reservation
  19. sign out
  20. -------------setting page----------------
  21. bill page layout
  22. single user/multi user
  23. user authentication
  24. print format setting
    1. 居中布局的打印
    2. 如何添加店家信息,应该允许修改信息。
-- Sam 07:17 21/04/2024

 增加了發送郵件功能
  1. 目前只有在打印batch時,檢查如果有設置batReportEmail的話,則發送郵件。將來其他情況也可能發送郵件。
  2. 目前使用的是gmail的[email protected] 發送郵件。
    1. bigbang用[email protected]發送郵件
    2. taostyle用[email protected]發送郵件
    3. simonStyle用[email protected]發送郵件
  3. 重要!!!需要用這個賬戶登錄gmail,并設置成“允許安全性低的程序發送郵件才能發送出去,否則會報Authentication fail異常。
Gmail不让用了,换了个更稳定而且免费的
-- Sam 20:04 10/06/2022
 這幾天發現在thinkpad上不能運行SanjiPos,研究發現是數據庫不能啓動,
  1. 首先調試程序,發現數據庫程序啓動了,但建立連接得到了null,導致後面的問題。
  2. 然後就在db程序啓動后,嘗試用dbeaver去連,也連不上,報同樣錯誤,說outofmemory.
  3. 網上搜,都説去調大xmm什麽的。不靠譜。因爲我其他電腦都是可以的。所以應該跟這臺電腦有關。
  4. 新下載了hsql數據庫,用自帶的server.bat運行,發現運行不了,報錯說jvm binding occupy。
  5. 網上查了一下,説是因爲端口被占用導致這種報錯。hsql默認用9001端口,
  6. 用netstat -aon | findstr :9001一查,果然有個叫system的進程在用。查了一下netstat -aon | findstr :9002,沒有人在用。
  7. 臨時改成9002端口,程序啓動成功
  8. 在程序中增加一個設置,如果發現9001端口被占用,可以通過在配置文件中增加dbport=9002;來改變程序所使用的端口。
將來可能會在正式產品中使用嵌入式數據庫,而不是服務器模式,用來讓速度更快。
-- Sam 07:35 24/06/2020
 What is "HDFUX"?---if table name starts with one of these character, then it's a special order:
  1. H---Hi City
  2. D---Deliever
  3. F---Fan Tuan
  4. U--Uber deliever
  5. X--Small Red Car
-- Sam 04:41 21/06/2020
 疫情期間,忘的差不多了 :(
  1. 是如何實現桌面無邊界的?好像是配置文件實現的,HP All in one還是帶邊界的。
  2. 爲什麽status = 6 丟掉了?是周哥的機器沒有更新嗎?
  3. 爲什麽think pad的Simon style已啓動就内存溢出?
  4. 爲什麽會出現重複類別的問題?

-- Sam 04:20 21/06/2020
關於套餐按鈕計劃:
  1. 要有套餐類別的按鈕,點這個按鈕就會自動選中若干道菜,並可能彈出列表讓用戶多選1,比如前餐食湯還是沙拉。。。。


-- Sam 18:47 24/06/2020
当一个台子被打开,然后没有任何操作的情况下,是否应该有单号的问题
  1. 目前是有单号的,而且有显示从开台到现在有多少分钟。
    1. 这个时间是不对的,应该是从订单被保存到现在的时间。
    2. NONONO,还是应该显示从开台到现在的时间。因为waiter可以知道是不是该去服务了。、
    3. 或者最好的做法,是先显示从开台到现在的时间,然后,如果有了第二个时间,创建时间,也是保存的时间, 这时时间清0,重新计算的时间是从下单开始的时间,不再是开台开始的时间。因为这时桌子已经显示不同的颜色了。
  2. 问题是,客人不想看到记录里面一堆没有意义的记录,
  3. 那么能不能说,如果两个桌子开台了,但是木有任何记录,这时第二个桌子点了菜(发送了),它应该用第一个bill?因为如果第一个bill取消了的话,那么要么会出现一个为0的没有意义的记录,要么会出现后面的bill的号码比前面的号码数字小的情况。
    1. 这就是说,每个开台的桌子会建立一个bill,但是这个bill不是关联到这个桌子的,而是进入到一个池子中。桌子再真正点餐并保存时,才会从池子中拿到一个bill?
    2. 这里或许会有个一个问题,就是说我开台了一张桌子,我就是不想点餐,我就是想点return,而且这个桌子应该是保持开台的状态的(目前就是这样,因为这样的话,waiter才能知道哪个桌子是已经有人了。)
    3. 问题是,如果最终都没有点餐,那么怎么说?这个单子最终如果取消了,那么就会有一个total为0的单子出现了.....这种情况是很少的。
-- Sam 16:00 28/12/2019
关于Delievery的单子的用法,
  1. 基本上就是输入时自动匹配电话,如果没有匹配到,就会尝试匹配名字。
  2. 下方显示根据当前的输入所能匹配到底Customers。选中其中一个点勾号,或者双击其中的一个,表示选中这个Customer。
  3. 如果没有选中任何一个就点勾号,就会建一个新的Customer。
  4. 而如果选中其中一个,点底部的Editbutton,就表示修改这个customer的信息。

-- Sam 09:07 07/12/2019
The reason why output not related to bill:
  1. currently the output is not related to Bill Id, because the multi bill might need to connected to same abounch of outputs. so which bill id should these output keep in their records?
  2. why multibill refer to same bunch of outputs?
    1. bill will be set as expired when do a refund on a bill.
    2. is there other reasons?
  3. Bill find out their relevant bill not by bill ID, but by table open time and bill disIdx.
-- Sam 07:43 27/11/2019
 How to synchronize the menu and configuration.
  1. configuration is a must, because 
    1. I need to have the configuration on server side, so I will know what functions seller have sold to customers. so I know how much the seller should return to me.
    2. I need to be able to open the function for customer from remote. the only thing user need to do is just go to back end and click download configration.
  2. menu is also a must because
    1. when system goes wrong, user need to menually open the user folder to clean the .storm folder. (the db can not be under the installation folder because the installation might be uninstalled.
    2. when user start from clean, user don't want to creat menu from beginning. so all they need to do should be only a download menu.
  3. how to do it?
    1. how did JPdid it?
      1. JP uploaded the whole db file. but SanjiPos can not do that, because there could be too much output records, and SanjiPos need to upload the menu onto website. and modify from website.
      2. JP just replace the downloaded file into location. SanjiPos can not. SanjiPos will download from website.
        1. how did SanjiPos did the job?
          1. when system start up, check if the serverHost is set? if set, then every a few second, check the new orders, if there's new orders,  make sure related menu and category exist.
          2. NEW ADDED:when clicking upload menu, send all products onto www.shareTheGoodOnes. when clicking download menu, sending request on to  www.shareTheGoodOnes.
    2. how to back up configurations
      1. added a new customizatin in db, the key is:SanjiPosCus, value is "," seperated string with "=" inside.

-- Sam 11:07 10/11/2019
 counter模式的思考:
  1. 到底是用table好还是用bill#+default table好?
    1. 用table的好处是可以分单,万一客人一开始不要分单,突然又要分单了怎么办?
    2. 用D table外加不同的bill号的好处是,可以和table模式混用。
      1. table模式下,可以起一个桌子专门教外卖,或者专门叫Uber。
      2. 外卖的桌子的订单号要求能自动增加。
      3. Uber的订单需要有一个不连续的随机的Uber号。
    3. 所以用Dtable是有点奇怪的,因为用户完全可以定义一个或者一些临时的桌子用来作为外卖专用。
      1. 这些外卖桌子的类型是0型,即没哟座位。
      2. 这些外卖的桌号会有多个bill在上面,推荐是一个桌子一个地址,一个桌子一个单。
  2. 目前看来是用table好,因为更灵活,不但可以跟table模式混用,还可以分单,以及同时支持多种外卖。
  3. 可是是否允许桌号为空?
    1. 允许的坏处是导致订单没有开桌时间,很不方便。
    2. 允许的好处是啥?好像不知道,那就不允许了!!!可是如何做到不允许呢?
      1. 首先,Counter模式下,如果没有table时,应该显示什么界面?
        1. 还是应该显示Sales界面,否则太丑了。那么应该显示几号呢?
        2. 可能得显示空白的号吧,等有新单子来的时候,就显示新单子的号。
        3. 应该显示本机生成的最后一个没有关闭的单号,或者如果有来自客户端的没有关闭的单号,则比本机生成的最后的单号优先!如果都没有,则本机自动生成一个新的单号。
      2. 但是这种空白的号,在有任何操作的时候怎么办?
        1. 必须有个桌号,counter模式下,桌号就是bill序列号。table模式下,每个桌号里面有个bill idx号。
        2. counter模式下,addbill应该增加一个桌号,像收到new order时操作一样。
        3. 那么当最后一个桌子被关闭了(counter模式下,桌子结单时就会被删除了)时,要不要自动新建一个桌子呢?
          1. NO,because we don't know if we should wait for client app to tell the next bill idx? Yes! because the new billIdx should always generate by the centerPos application, shouldn't generated by the client application, in case there's many Posclient....
          2. then, we have to if user click the Add Bill Button? what if we know there will be no client, just a solo pos application? then the pos need to generate it's own billIdx, or table name in this case, so when one bill closed, we need to generate a new Bill automatically!
          3. So there's should never be an empty table on the interface, because when one table closed, a new table will be generated automatically.
-- Sam 04:12 28/10/2019
 TODO
  1. waiter添加的临时桌子为什么不能拖动了?
  2. 主机从机的实现
  3. 允许设置成不显示bill的简单模式, waiter可以从checkList中调出未完成的单子。(改成了,如果不接辅机,无论是pad还是pos,就不会出现bill条。因为不会新建一个table出来。只要删掉所有的table,那么bill条就不会出现,这时系统打单是没有table信息的,只有bill号)
  4. 允许实时调整按钮位置顺序,(小移删除,大移换位,上移删除,下移换行)方便布局定制。(上移和下移没有实现,因为太难培训)
  5. 客户屏幕的图片问题
  6. new environment, createa a admin user c with passwrod 333, while use 333 can not log into Setting Panel.
  7. popModification好像弹出的是mofifyPrice的对话盒。(看错了吧)
  8. 在category对话和增加四个选项,早中晚夜,如果某个补选中,则表示这个类别该阶段不显示。
  9. 要想个办法catch到任何异常,用来杜绝系统没有能够system.exit()。很可能是窗口关闭后出的异常,导致syste。exit没有运行到。
  10. 桌面的文件夹问题
  11. should try save resource file into db, so third part companies can modify it. in case we will have other languages....
  12. how to make it stay on task bar?
  13. menu还是应该跟category的id,否则修改了category的名字的话,就麻烦了。
  14. uploading menu and configurations.
  15. 提示已付金额。
  16. website for it.
  17. vedio for it.
  18. 连接收银刷卡器
-- Sam 13:17 25/11/2019
关于Modify对话盒的设计
  1. 每个tab的tab背景采用不同的颜色。
  2. default页面采用新的render
  3. 每个render采用不同的背景色,其中无色的放在最上面,是表示不属于任何类别。
  4. render中的按钮采用flow layout
  5. 按钮点击后,在底部进行价格预览,
  6. 并允许在底部增加、减少数量。(改成及时生效,多次点击增加数量,滑动减少数量)
  7. 顶部显示目前所有的选中的mark的效果预览。
  8. 使用状态下,mark只显示对应的语言。
  9. 编辑状态下,允许不输入“;”,因为有些用户只需要一种语言。语言多了反而麻烦。
-- Sam 10:43 25/10/2019
 关于rule的设计
  1. 添加可以在discount对话盒中添加,也可以在servicefee对话盒中添加。
  2. 添加的办法:
    1. 在对话盒中输入完价格后,不点确定,而是点击顶部的标签区域,则弹出提示框,询问是否要将内容输入规则。
    2. 提示如此这般的一个 rule将要被加入到系统中,你是否确定?
      1. 应该显示逗号分割的菜名,包括x N的信息。
      2. 应该显示编号。
    3. 如果用户选择确定,则存入数据库中。
      1. 数据库至少要有三个字段:首先是字符串类型,用户存放逗号分割的菜的编号。其次是价格信息。再次是优先级信息。
      2. 如果价格是小于1的,则表示“减少百分之多少”,如果大于1表示减少多少钱。
      3. 另外还需要的辅助字段包括一个类型(表示规则依然有效,还是临时被禁止了),另外还需要几个字符串类型的备用字串作将来扩展。
  3. 使用的方法:
    1. 程序启动时,将所有的规则提取出来,并加载到内存中备用。
    2. 每当有添加菜时,和减少菜时,这时候的flow为:
      1. 复制当前的selection,
      2. 便利所有的dishes,取消所有的“comboFlag”(rule id is the flag),同时把相应的discount取消。
      3. 和规则列表。并开始遍历所有的规则。
      4. 当遍历每一个规则时,如果发现每个要求的菜都存在,那么discout增加一个规则中的值。并且这些菜给标上Combo标记,并从拷贝的列表中拿走。
      5. 如果不满足该rule,则本次拿掉的项目放回列表,继续下一个记录。同时这一个rule从rule列表中拿掉。
      6. 如果某个组合同时满足两种组合,则优先满足第一个组合
      7. 组合用光则flow结束。
  4. 如果想要修改、review这些rule怎么办?
    1. 必须增加一个button。并增加相应的action。
    2. action被触发之时,必须显示一个对话盒,对话盒上显示一个列表。(类似checkListDialog)
      1. 列表中的项目被选中时,对应的菜和discount在SalesPanel上显示出来。同时,当前selected table必须是空的。(暂不实现,因为如果修改的话,需要点出discount对话盒才能保存更新,这个很不顺)
      2. 对话盒中要有向上和向下的调整按钮,用来调整rule的优先级别。
    3. 这时,用户可以进行修改菜单项,可以修改discount的值,可以修改serviceFee的值。
      1. 相应的三个action的行为都要修改:Send/discount and service fee的确定按钮的action时间都要增加判断。如果说当前ruleList对话盒处于显示状态,那么行为改成更新规则。(这个行为不太直观)
    4. 注意ruleList对话盒中不要显示菜单的编号,要显示对应语言的文字版本。(算了,下一版本再说吧)
-- Sam 17:21 06/10/2019
 关于service的启动的改造:
  1. 现在改成不用service,而是vbs调用bat(用来不显示黑色窗口),然后调用OTMuleServer的main,赋予-config 配置文件参数 来直接启动muleServer。
  2. 在启动muleServer的同时,启动BarFrame.main.
  3. -----------------------------------------------------------------------------
  4. 遇到一个神奇的问题,搞了一天:启动muleServer时,file.exist()方法返回false导致启动失败,但是从eclipse外面运行时是好的,而且同样的配置,在acerTouch电脑上是好的,只是在HP电脑上是坏的。---------------后来发现在HP电脑上必须把eclipse的运行配置的argument写成config C:\\Users\\caspr\\OneDrive\\Documents\\SanjiPos\\etc\\mule\\security就好了(在acertouch上是只需要一个斜杠的!!!!)
  5. 还有一个要注意的:HP一体机的document是在OneDive上的!!!这一点有可能造成和某些路径相关的配置不一致。
-- Sam 17:22 06/10/2019
 来不及改按钮定制,所以临时增加个GameBox版本(按钮定制完成了)
如何在本地增加GameBox版本的分支(或者说让远程的GameBox branch在本地的git GUI中显示出来):
git checkout -b GameBox
TODO Next:
  1. 面板尤其是桌子,需要定制背景功能。
  2. 设置面板中,增加一个label,list中的lable不带分号, 不知道是不是问题。 但是点中这个label时,txaContent中显示一个“null”,肯定是个问题。
  3. 当给新添加的lable(也可能是给列表的最后一个元素,或者非首个元素?)添加价格时, 没有被保存。切换一下的话,价格消失了。
  4. 下载其他类别的菜的时候不能够自动打印。
-- Sam 10:44 25/10/2019
 关于自定义command按钮的设计
  1. 所有页面的command按钮要增加几个属性
    1. 每个按钮要把action加在自己身上(暂时先不动,即加在view类上,如果需要显示在多个view上的话,就在多个view上都加action)
    2. 有需要显示在哪些页面上,以及在改页上的位置(r+c)(command按钮增加一个二维数组属性,列数恒为4)
    3. 所有的command按钮都可从BarFrame上拿到。
    4. 每个页面初始化时,负责:
      1. 初始化按钮。每个按钮获得自己的dspIndex(第二步将会是在BarFrame负责初始化按钮,并根据pimconfig内容为每个按钮设置三维矩阵)
      2. relayout时,要根据每个按钮的三维矩阵来
    5. setting面板要增加一个command,叫command buttons,
      1. 点击显示按钮面板,顶部显示所有按钮,下面分别为各个view,可以通过拖放和复制来设计每个页面上要显示的按钮
      2. 允许用户设置每个Command在哪些View上的显示,及其显示行列位置。
    6. 如何存放各个按钮的位置信息呢?还是按每个页一个字符串比较好吧?
-- Sam 17:23 06/10/2019
多引用问题(终于确定了多引用是,税务局想要的是多个ref element,而不是一个element中有多个ref value)
  1. 什么时候会有多个引用?
    1. 合并多个printed的bill
    2. 从一个打印过的bill中移动item到另一个打印过的bill
  2. 这些信息必然要存入comment中,然后要进入end message中。
  3. 当有多个ref元素时,每个ref元素后必然要跟着一个*Old Subtotal值。
  4. 什么时候我们增加ref element?---根据是print service的临时变量 needRef
  5. 看来要根据endmessage中的信息来组织多少个ref元素,每个*Ref To意味着要增加一个ref元素,
    1. 需要把Old subtotal 变成ArrayList。
    2. 需要把refTo变成ArrayList
-- Sam 04:16 22/03/2019
 税务局的算法漏洞
怎么办呢?
  1. 在calculatetotal时,如果是completed单子status > completed,采用不同的算法进行计算。
    1. 这时应该已经regenerated了,所有单子的status==0了。只能从comment中是否包含全套oldmoney来判断是否是收过钱的bill。
    2. 变化的项目的收集可能会比较麻烦,基本是未打印的newDish和设成dumped的output?那如果多次对款怎么办?是不是说退完钱时要把dumped的output改成deleted?
    3. 首先要确认一下一个item被remove掉时,发生了什么?
  2. 关于differnce的值和显示给用户的值不再是用原值和现在的值相减,而是用变化了的item进行加总
    1. 首先找出哪些item是属于变化了的item
    2. 把他们当成新的item(注意有的价格为负数)进行加总
-- Sam 05:33 18/03/2019
 Know Issues
  1. 目前bill再打印之前,数据库里的记录是没有更新到界面状态的。所以这时候如果把这些to pay和bill printed状态的记录显示在check bill dialog中的话,将会非常难看,所以我目前是默认不显示“尚未关闭”的记录的,默认只显示void,paid,refund状态的记录(admin级别用户还能看到expired状态的记录)。将来第二版以后再看是否把这些记录整理好(会影响一点点性能,不过估计察觉不到)
-- Sam 10:55 16/03/2019
 关于coupon
  1. coupon和discount不同,不能当成discount。因为discount时,饭店没有收到钱。而coupon时,可能饭店是赚到钱的(coupon可能是用户用钱买到的,说到这里我很不理解麦当劳常年发coupon的行为,原来那些coupon是上税的)
  2. 所以coupon的钱,必须放在Other received里面,那么问题来了:
    1. service fee该往哪里放呢?(专门增加了serviceFee字段)
    2. other Received该往哪里放呢?(coupon改名叫gift card,内容放入这个字段)
================================================================================================
关于refund 怀疑可能是refund时,旧的收入没有清空,造成再次付钱时,单一的付钱模式成了混合付款模式。具体例子:
  • 结单
  • refund   (目前这个refund之后的单子标记了付了多少钱以及退了多少钱,我觉得还是必要的,否则下次再refund就没法知道还有多少可以refund了)
  • 打开,并且重新付款 (这时我们可以看到这个记录是refund的,那么我们有机会做手脚吧?比如:
    1. 这是一个新的bill对吧,ref to了一个refund的bill对吧,那么这个bill的本身应该是清白的对吧,也就是说
    2. 如果打开一个status小于0的bill,那么应该把已付款和refund款相抵消,而不是等到显示pay对话盒的时候才进行抵消。
    3. 也就是说,我们放弃记录关于总共付过多少钱和退过多少钱的历史,这个没有用,因为ref可以帮我们找到历史记录。
  • 发现received显示了两次付款之和,而且两种付款方式。造成了mev format中付款方式的错误。(多数情况下,如果重新为一个refund的bill建立新的bill的话,那么)
solution:退款时,我们按照固定规则退款,有现金先退现金(因为没有任何手续费问题),然后有debitcar优先退入debitcard,估计有手续费的话也会比信用卡低。最后如果还要退,就进入信用卡)
-- Sam 09:06 18/03/2019

Please click here to login and add comments! || automatically refresh content every seconds