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

about ref
  1. 当bill被打印时,表头为本表#,在comment增加一个对自己的引用(表示本表表已经打印过了),mev中无ref元素。
  2. 当invoice被打印时,表头为本表#+F, comment内容不变(之前如果有bill有引用别的bill,就是说如果comment中有ref,那么invoice应该继承这些ref,同时应注意到,如果bill被打印过了,那么打印时必然已经将对自己的引用加入了comment,所以此时invoice不需要再增加引用进comment。mev中有无ref元素取决于comment中是否为空,为空则无ref元素,不为空则用comment中的最后一个ref,作为mev的ref元素。(如果打印过,那么mev 的ref指向元素本身,如果没有打印过,则comment要么为空,要么指向其他已经expired的元素,这时invoice则指向那个expired的元素)
    1. 举个例子,一个打印了的bill,需要增加或者减少几个菜,那么原单expired,新单的comment有指向原单的ref,如果新单不打印bill,直接打印invoice,那么mev的ref就是指向原单的。如果新单打印了bill,那么mev的ref就是指向新单的。
    2. mev的invoice可以不打印(如果设置了省纸模式),但是一定要有,而且如果comment中有ref的话,mev一定要有ref元素
  3. 哪些时候comment中的ref元素被添加
    1. 一个打印过收据了的bill(包括账单打印或者收据打印)被reopen的时候:
      1. 打开一个paid的bill,然后点击refund。
      2. 打开一个paid的bill,然后通过more less button 或者menupanel 的button试图修改菜单并进行退款。
    2. 一个打印过账单的bill,被修改的时候:
      1. 对一个billPrinted的bill进行more or less(包括鼠标拖放删除) 或者menuPanel上的按钮操作。
      2. 对多个billPrinted的bill进行move item操作
      3. 通过拖放,在bill之间进行moveitem操作
        1. 减少item的bill,如果已经print过了,那么这个bill要reopen,这时comment增加指向老bill的ref。
        2. 增加item的bill,如果已经print过了,那么这个bill要reopen,这时comment增加的是指向laobill和源bill的ref。
        3. 如果这些bill打印bill,那么会增加一个ref在末尾,指向自己。
        4. 如果这些bill打印bill,那么会照搬comment中的ref。
      4. split bill
        1. 分单时,老单expired,新单全部ref向老单。
        2. 合并时,老单expired,新单中含所有的老单。
-- Sam 04:17 22/03/2019
 关于mev的打印流程:
  1. 首先,我们的信息都是现格式化好,然后放入一个hashmap缓存,然后另外一个线程(现在好像是同一个线程?)不停的检查map中是否为空,不空的话,拿信息出来打印。
    1. 格式化时
  2. 在打印的时候,我们看打印机的类型,如果是mev类型的话则进行mev打印。
  3. mev打印时,首先检查消息的类型,是报告还是单据(包括bill和check),
    1. 如果是报告的话,那么是不进入系统的,估计就简单包装个xml标签就送mev机器了。
    2. 如果不是报告的话,那么要进行复杂的mev格式化。
      1. 首先根据message的endmessage元素判断
        1. 是不是duplicate print(发生在需要内部打印出来一个bill,不是给客人对的时候, 在checkListDlg点打印按钮,不选to customer,则会打印出这种单子的)
        2. 是不是reprint,当用户从checklist中点打印按钮,或者打开一个关闭了的单子,点击print bill时(?),或者打开一个关闭了的单子,点击退款时,这些时候会重新打印一个给客人的receipt。
        3. 如果是reprint的话那么第五元素会是“*re-printed invoice”开头,这时候,bill编号不变。ref是bill编号加上一个F。如果是refund的话,可能需要一个新的bill编号了,比如可以在头前价格“Refund”表示退款?
        4. 如果第五元素是*ref to:"开头的话,那么说明这个是bill。而且是有过修改的bill,而且修改前的bill已经打印过了。
          1. 如果第五元素是“*ref to”开头的话,那么该元素还可能包含old subtotal内容。
          2. 第一次打印bill时和第一次打印invoice时,comment字段中是没有“*ref to”可用的。区别在于:第一次打印bill不需要给ref字段,但当打印完成时,往comment里面加入了一个ref,指向自身,用来知道已经打印过bill了。第一次打印invoice,虽然comment中没有ref字段可用,但需要打印ref字段,就用bill号即可(即使bill没有打印也没有关系,反正只是辅助作用)。
          3. 当合并bill时,如果bill已经被打印。需要一个新bill号(可以用第一个bill号前加上cbn),并在comment字段写入老的所有的bill的id号,然后把所有的老的bill进行dumpt设置。(这时,如果其中部分被打印,部分尚未被打印,尚未打印的bill号忽略,系统认为新增加的item,而不care是从哪个尚未打印的单子转过过来的item?)
          4. 如果打印过了的bill要进行分单,那么返单后再打印时必须是新的单子,而不能是旧的单号,因为旧的单号已经被dump了。新的单号可以是rdv开头。comment中写入combin的单号。
          5. 当在bill之间移动菜时,
            1. 如果源bill已经打印过了,那么目标bill的comment比如加入源bill的号,并把源bill给dump掉。同时新建立一个bill复制源bill当前的信息。新的bill的comment中为源bill的id
            2. 如果目标bill已经打印过了,那么目标bill要复制一个新的,comment中写老的id,和源的id,并把老的bill dump掉。(不用担心源的bill尚未打印,它终究会被第一次打印的。而且估计不用担心没有反应出来它的一个item被拽走了,因为这些记录只是追踪用,只有最后的invoice的数据才被计算。)
          6. 结账时,如果设置了省纸模式,那么直接按照最后的bill上的信息来,应该就可以了。(问题是,如果bill没有打印的话,那么receipt也要ref元素吗? 我觉得应该不要,可是好像哪里看到说invoice都必须要有个ref)(不需要一定有bill和ref的。)
    3. 我们的bill是必须要打印的吗?counter模式下也要打印吗?如果不打印的话,invoice的ref怎么写呢?(首先确认下是不是真的都要有ref再说吧。)(no, 不必须打印的, invoice可以没有ref的)
  4. 关于什么时候需要重新生成bill
    1. 如果没有打印之前,comment部分是空的,任何改动也不会导致新生成bill,或者生成comment。
    2. 打印Bill的时候,status会被调整成bill printed,同时#ref to :billID会被写入comment(用真正的数据库里的id即可),因为被打印bill了,那么打印invoice时,一定会需要一个ref,而ref号就是这个billID。
    3. 打印invoice时,不会修改comment字段,因为在打印bill时,comment字段已经被设好了。如果comment为空,那么不加ref元素,打印foot message,如果comment不为空,则增加ref元素,并用ref内容替代foot message。
    4. 但是如果一个invoice被reopen了,那么新生成的bill的comment中的billnumber则是包含结尾的F的,原则是他实际用到的单号。
      1. 这里值得探讨,print时,status已经调整了,有必要增加billID到comment吗?为什么不定义规则为“只有根据旧bill生成新bill时才加comment”,同时dump掉旧bill?
      2. -----好像原因是支持省纸模式:如果在打印receipt,那么想要知道这个bill是不是billPrinted。
      3. 真正原因是:对于从ip-contentMap中取出的打印内容来说,已经没法知道bill的状态是否是bill printed了。所以要么生成content时,如果已经打印过bill,要对foot message做替换处理,换成ref to:billID。
      4. 这时候虽然暂时还没有发生真正的引用关系,因为毕竟如果bill printed,那么等invoice打印时,引用一定会发生,到时这个re就不再是“虚设”的了,而且起到了标识“该invoice打印前已有bill被打印”的作用。
    5. reprint时和duplicate时,因为没有item的变化,所以不用生成新的bill,但是要有ref信息。
    6. void时和refund如何处理?是要重新生成bill吗?
      1. 感觉refund是要重新生成bill的,应为从法律上讲,应该是可以追踪的两个bill,
        1. 那么refund和reopen+modify其实是一个功能了。我们有没有必要加一个refund按钮,用来输入任意数字呢?
        2. 感觉还是先留着,只是自动进行处理而已。毕竟饭店如果要全单退款的话,不用点reopen,然后一个一个菜拿掉,然后再进行退款了。快捷了n多。
      2. 而void是不需要的,因为没有生成invoice,税务上本来就没有算钱,只是通知一下mev某个bill的状态发生了改变。
    7. reopen并修改item的性质跟部分refund相同,应该是两个不同的bill。便于法律上追踪。
      1. 首先进行创建新bill和dump旧bill处理。
      2. 新bill的comeent加上对就的bill号的引用,bill号要包括最后的“F“。”
      3. 然后打印bill和invoice时照旧。
    8. 且慢,先搞清楚avenue关于refund和modify invoice到底怎么说再行动吧。
    9. 最后搞那些已经打印了的bill的ref元素问题。
-- Sam 17:46 07/03/2019
 if the bills are not completed, then user can change the table:
  1. click the table on top
  2. input a new number (select might be better, only unopened table should be selectable)
  3. when action completed, change the table of relavent bills.

-- Sam 08:12 25/02/2019
URL:
to set activation code and modify the headInfo:http://www.sharethegoodones.com/AikaPos/Customized
to set the menus:http://www.sharethegoodones.com/<product name>/menu_3_2
to check the error log:http://team.sharethegoodones.com/????
-- Sam 17:54 14/01/2019
 大招来了,我终于要开始把simonStyle和taostyle连起来了! 目标:
  1. pos发送请求给web。
    1. 发送下载订单请求
      1. 现有的请求订单的姿势是啥样的?
      2. 有没有线程的发送代码?有的,数据库同步代码可用。
    2. 下载菜单请求
    3. 打印成功,发送更新主订单状态请求。
    4. 上传本地更新
      1. 如果pos本地进行了菜单增加,可以发送到服务器。(menu with no picture will be created.)
      2. 服务器上的今日推荐的编辑,不会对pos产生影响。因为那是纯给食客看的。
      3. 如果pos本地进行了分单操作,会修改一些output的归属,甚至会删除,产生新的的分开的output。这个不必要通知服务器。因为服务器只要知道谁点了啥,没有必要知道最后谁付的钱。

  2. pos接受web返回的内容。
    1. 本地吸收打印机
    2. 本地吸收(创建)桌子
    3. 本地吸收类别和菜品
    4. 本地send到厨房(包括创建output记录
    5. 本地创建bill
-- Sam 07:31 17/12/2018
 关于何时创建bill:
  1. 本来send的时候是之创建output,不创建bill的,因为,这时候还没有做,没有吃,所以订单可能取消,没有必要建立bill。
  2. 但是现在市场说即使单子取消了,也要创建bill,因为:
    1. 老板需要知道雇员一天取消了多少个单。损失有多大。
    2. 防止雇员给熟人免单(目前是打印bill,设置disc时创建bill记录,这太晚,因为雇员可以不打印bill,不分单,不disc,直接void)
============================
方案:
  1. 发送即产生bill:
    1. 那么以后就再也不用产生bill了,只存在updatebill的必要。那么现有的checkbill方法改成updateBill好了。
  2. 有没有必要开桌就产生bill,---这个,好像没有必要,因为啥都没有吃。但有时开桌是付费的,那么久必须有了。那么既然会有就一步到位喽。 (已经改成这种方案!)
  3. 有没有什么问题?
    1. check方法不用改,毕竟如果有bill了,不会有影响。但是要真发现bill居然还咩有建,应该log个警告。
-- Sam 03:54 13/12/2018
 About CimbineAll function:
  1. 用户有时候选择equal bill,然后发现输错了数字,本来应该分7单,结果分了8单。这时候需要合并全部,然后重新分单。
    1. 如果不考虑其他情况存在,可以考虑简单处理,就是说合并后不可能存在除数,也就是说所有的PS,PK可以去除。
    2. 如果存在追加的菜,就可能造成某个菜存在两个以上的记录,那么分单时存在16个1/8的情况,需要考虑。
    3. 算法:
      1. 如果发现num是带有PS或者PK的,记录下PK和PS.和Num。总单的discount,和totalPrice(total price应该是已经扣除了本菜的discount的)
      2. 如果发现map中没有这个key,那么用"pk":+pk+"pS"+ps+name+"discount:”+discount+totalPrice创建一个key存入map。PK为value,如果PK不存在,或者为1,或者为0,那么用PS为value。
      3. 如果发现map中已经有这个key了,那么删掉这个output,并把map中的value减少1.一直到value值为1时,map中去掉这个key。同时更新原始的(那个key相同但是没有被删除的)的output记录到数据库,把discount*value,totalPrice也*valuev,num中的pK位去掉,如果已经去掉了,那么把PS位去掉。(继续遍历时,如果发现还有这个key的,将会新建一个key存入map)
      4. 一轮遍历过之后,可以确定消灭了二次分单的存在。但是一次分单的情况仍然存在。所以有必要再进行一遍,用来把pS也去掉。
      5. 两遍目前是足够的。但程序上应该写成说只要发现“pkOrPsFoundFlag”没有被打上,就表示合并结束(没分单过的是否合并是个问题,因为有的菜点了多次,但每个菜可能给了不同的折扣)
  2. 较少情况下,用户选中一个bill,然后进行了equal bill 进行AA制分单,然后突然有人跳出来要给所有人付钱,(这种情况应用上述的算法应该也能解决)
  3. 如果分单后有的bill已经付过钱了,这时候如果combine All,则弹出提示,确认后合并所有没有完成的单子。
  4. 合并后存在一个撤销合并的问题。
    1. 用户可能合并后改主意,要求不再合并。
    2. 做法是合并的是后修改output的objectID(tableIdx),不修改output的Category?(billId)属性.
    3. 只有每次分单时修改output的billId属性。
    4. 这样使合并的后悔成为可能。(而且不用一个一个的进行调整)。
    5. 另外Combine All按钮需要改为toggle状态。
      1. 进入billList界面后,Combine All should has status: if not all combined, then the button is not selected, if there are bill combined (out puts have same billIdx but not billId), then the combine all button should be selected.
      2. if the combine all button is already selected, then it should be displaying unCombine.
      3. when the button is selected, use click it, will trigger the output's billIdx property will be changed to bill Idx of the hided bill
  5. 扩展的话,可以在option中增加选项,是否合并未分单的菜单。
    1. 如果选中,那么只有没有重复的key出现才停止合并。
    2. 如果选中,那么必须确保item discount的值要存入key。

-- Sam 08:34 13/02/2019
 convert the database to use MySQL.(for easier installation, hsql is still a better choice, just we now use server mode. and start the db when application start up----check if it's already started of course, and close the db when system close.)
  1. find the db configuration.
-- Sam 04:02 26/11/2018
 about the service fee  and discount propertiy in billPanel.
  1. why we have these two property?----it's a property of bill. when user added these property and there no bill yet, we need a place to put the property.  actually we can also save it in bean. but when displaying, it's float format string.
  2. when do we generate a bill?-----currently we create when check bill status, (if bill not created, then insert a bill record.) if the bill id is already exist, then we update the bill record,(in case user added discount or service fee. !!!in both case, we will need to call billPane.initContent() to ensure the dish has same "total" price info .
  3. to ensure the stability, I have added code to set the total price when we add content to list.
  4. ============================================================================
  5. 有点奇怪,我们目前好像是吧实际收到的钱加到cash了,但是没有把找的零钱保存进bill。我们应该计入bill,这样才知道客人实际上付了多少钱,然后多出的钱可以算作tip。
-- Sam 11:12 30/08/2018
About Sign in Sign out
  1. when single user log in, or when multi user open table or add a temperal table, will do checkSignIn().
  2. in checkSignIn method, will check
    1. fist if there's no sign in record for current user, current day and endtime is null yet, then insert a new record.
    2. secondly, if there's already such a record, then just do nothing
  3. when user click check out button, will update the end time for existing user,.which current day, which end time is null.
-- Sam 18:39 19/07/2018
关于操作员的名字问题:
  1. 名字不是每次login之后设置上去的。为什么不可以每次login成功都改一下名字呢?
  2. 目前是每次swithmode时设置名字,原因是:
    1. 当多用户时,切换到桌面(0)时,应该把当前的用户从界面拿掉。之后的任何操作都是要登录的。
    2. 当但用户时,切换到桌面时不用动。之后sign out时,要把用户从界面拿掉。
  3. 所以感觉正确流程应该是:
    1. 每次login成功时,该名
    2. swith到0界面时,检查是否多用户,如果 是,那么清空名字
    3. sign out时,清空名字。

-- Sam 08:15 12/07/2018
 About Font:
  1. we support setting different font for different printer: e.g. 192.168.1.88font:27,33,48
  2. if font is not defined for a specific printer, then this printer will use general defination of font. e.g.font:27,33,48
  3. For a specific printer, if it's font is set, then it's width property should also be set, e.g. 192.168.1.88width:28
  4. if not set, we's also use general width property, by default, general width is 30.
-- Sam 16:48 11/07/2018
  关于网络版本:
  1. 是用STGO服务器还是用内部网机器当服务器
    1. 显然应该用内部机器当服务器,因为有的饭店信号不好,或者根本没有外部网。(至少目前是这样)
    2. 是不是可以在内部网部署test.sharethegoodones.com服务器呢?
      1. 安装有点复杂,必须有人去安装,不利于网上销售。
      2. 代码有泄露风险:
        1. 代码不可以简单的通过比较.ini文件来知道是否已经active了。
        2. 最好也不能通过复制黏贴ini文件和数据库来破解。
  2. 是用MySql还是沿用HSQL,但是开一个ServerSocket?
  3. 注册和版权保护:
    1. (在不连网的情况下),再用户目录下创建一个临时文件,这个文件用来存放用户的注册信息。
    2. 同时再ini文件中也放一个变量,用来存放是否已经注册了的信息。
    3. 然后数据库也要放一个变量,用来存放是否已经注册了的信息。
    4. ...security中也要放一个变量,用来存放注册信息
    5. 如果以上任何一个地方被破坏,系统不能启动,并要求联网进行注册。
-- Sam 08:20 23/06/2018
 About Registration:
  1. use same mechanism with JustPrint.
    1. first time use must connect to internet and regist.
    2. support upload and downloading menu from test.sharethegoodones.com (same website with security function)
  2. sub node also need to regist the first time use, but it regist to the local server, not the test.sharethegoodones.com
  3. sub node can download menu from local server
-- Sam 05:27 17/06/2018
 About print:
  1. when send text, need to:
    1. 得到所有的新记录
    2. 发送到打印机
    3. 查看打印结果
    4. 如果成功保存所有新纪录到数据库。

-- Sam 11:42 29/05/2018
 About payment dialog:
  1. calculate received of different type of payment.
  2. every time when switched pay type, should display due:$x.xx received:$y.yy inputted:)), money left:
    1. cash received:
    2. debit card received:
    3. visa received:
    4. master received.
  3. the steps:
    1. if the paydlg is already displaying, check if the tfdReceived is empty, if not, show confirm dlg to ask user clear or finish.
      1. maybe we should update it automatically into db bill?
      2. if the dlg is not showing, then the status must be cleared already, if not, just ignore it. so be sure to make the paydlg properly reset every time.
    2. call initContent of payDlg base on a bill, so the dialog will have correct receiveds  and correct left.
    3. show the paydlg with right title.
    4. when finished input, user must click OK, to update the new received into db bill. user can also click exact to update db bill.
-- Sam 11:35 21/05/2018
 关于item diacount对total的算法
  1. dist item是打印bill前设上去的
  2. 是对所有的减去,因为如果是对单个减价的话,就成改变价格了。所以应该是乘以num以后再减少
  3. 减少后要参与分单的计算。
  4. 如果不是税前减价,那么表示税是不用做任何改变的,那么只要把分单后的discount加总,然后加到subtotal中即可。
  5. 如果是税前减少,那么用全价计算出来的税金就不对了,也就是说,税前算多了,那么就应该把多算的减掉。那么多算了多少呢?减掉的乘以税率本来就是多算的税钱了。燃鹅:::
  6. 不要忘记分单了
  7. 所以多算的gst和多算的qst应该分别减到各自的项目上。

-- Sam 15:07 17/05/2018
 About split bill:
  1. I've got all bill listed in billListPanel,
    1. if I click a button on any of the bill, will go into the sales page of the bill.
    2. if I click a record of any bill, will set the bill as selected, and the dish as curDish.
      1. while if there's already selected curDish in different bill, then do move, and clean curDish.
    3. if clicked empty area, will set the bill as selected.
      1. while if there's already selected curDish in different bill, then do move, and clean curDish.
-- Sam 17:53 08/05/2018
 about deleted:
  1. it's actually can be used as status
  2. by default it's 0.
  3. if it's set to be bigger than 100, means it's not visible anymore.
    1. 100 = canclled by cancelled all.
  4. if it's 
-- Sam 18:29 29/04/2018
 table 界面的设计-----跑不掉的功能:
  1. 开桌功能(如果本来没有bill,直接进入sales界面。如果本来已经有bill,那么应该允许用户选择,是打开还是新建?)
    1. 最简的界面设计:点table时,弹出一个bill 列表,上面每个bill一个button, text 为发送给用户的bill纸条上的号码(如:b1-3)。,最后一个button是新建bill。然后是横线,下面是三个按钮:打印全部、全部完成、关闭对话盒。
    2. 更高级的设计:tablebutton附件出现很多小的button,
      1. 用户直接点某个小button,
      2. 显示一个tablee,上面有该bill的详情和总价。
      3. 下面有三个按钮:打印、完成、关闭。
    3. 无论哪种方案,都需要有桌子按钮被点时的界面,因为需要一个 全部打印的功能的------这个功能要么出现在对话框里,要么显示在table界面下方的按钮群中。
      1. 个人感觉显示在对话框中更清楚。但是点击桌子每次都弹出对话框的话,会不会导致其他的命令没法玩呢?
      2. 需要先知道其他都还有些什么应用再说吧。


-- Sam 05:27 26/04/2018

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