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. login界面
  2. table界面
  3. sales界面
  4. setting界面
关系:
  1. 第一界面是login界面或table界面其中一个。需要能设置.
    1. 如果是小店,一个人用。那么应该login在先。因为他不想每次开桌都输入一次密码,也不会希望自动登出。
    2. 如果是大店,多人同时用的话,那么应该是table在先。
  2. table界面有模式命令按钮,包括:
    1. 堂吃--------- 一张桌子上有多个人
      1. 先吃饭,后付钱,有小费
      2. 可以加椅子一个桌子的人数不能限制,因为可能加椅子,如果是圆桌子。

    2. 快餐(先付钱,后吃饭,无小费)----------直接进入sale界面,
    3. 送餐(先订饭,后付钱,可能有送餐费)-------显示联系人界面,要求电话号码,姓名,地址信息。要求有自动保存功能。
  3. sales界面上的几个按钮会导致回到table界面
    1. send按钮,订单被保存或者修改的话,只打印新加的记录。
    2. return按钮,订单表中有新记录,提示打印还是丢弃?
    3. 外卖,dinning 是回到table界面,fastfood的话,send后仍然呆在sales界面。只有点return才回table界面。
    4. fast food和外卖的table界面显示的桌子上显示外卖1、外卖2...
  4. 太大的店,可能会有如果多台pos机同时使用的情况,这时需要把一台pos当成服务器来使用。另一台当成备份服务器。
    1. 那么最好用server模式来连接数据库了?
-- Sam 04:40 26/04/2018
 when simonstyle is working with justPrint or taostyle:
  1. order is made in justprint or taostyle, and saved into cloud db or mobile db. (currently 
  2. order is printed in back kitchen, and in front counter.(when simon style is used, then don't print in front counter).
  3. simonstyle synchronize db from cloud db or JustPrint synchronize db to Simonstyle
  4. simonstyle print bill
  5. simonstyle print acception.
  6. simonstyle modify local db and synchronize the db onto cloud and/or just print.
    1. taostyle and just print can still work if not synchronizing db when bill is paid. because they are used to make order.
    2. other area where no need to connect tax controller, can use only taostyle or only pos. to print both kitchen list and bill. no need to synchronized db.
  7. -------------------------------------------------------------------
  8. pos should be always able to connect to printer, because:
    1. when use only, no one else will try to connect to printer.
    2. when use with order maker tool(taostyle or justprint), pos connect only to bill printer, nevder connect to kitchen printer (use order maker to connect kitchen printer).
    3. while if it failed to connect to a printer, it still need to report fail.
-- Sam 03:33 24/04/2018
 关于订单保存的设计。
  1. 订单应该保存再数据库中还是内存中?----当然是数据库中,因为用户不会害怕订单被保存了,毕竟税务局都知道了。
  2. 订单是凑合再output表中还是另起一个表?----尽量是output表,因为dish都凑合再产品表中了。字段对应表:


-- Sam 12:24 21/04/2018
 QTY按钮的用法(用户修改QTY的做法有点不同,不是先点一个记录,然后点QTY,而是先点QTY,后点记录):
  1. 先点QTY按钮,这时,QTY对话盒visible=true.
  2. QTY对话盒中的信息反应当前记录的QTY(通常是1,且为全选状态)
  3. 这时,用户点击某个记录(如果当前的记录不是想要修改的记录的话)
  4. 用户输入新的QTY,(或者将来旁边再放些checkBox用来修改“加糖”、加盐等、size等)
  5. 用户点击“Apply”button,新的QTY应用到table中。
  6. 重复回到3
  7. 用户点击“OK” button, 新的QTY应用到table,并关闭对话盒
  8. 用户点击“cancle”或者“close”,关闭对话盒
-----------------------------------------------------------------------------------------------------
  1. 鉴于,如果用户同时选择qty和modify的话,就无法知道modify是哪一份的了,所以这两个还是不要在一起的好。
  2. 既然分开是一定的,加上wei的意见(不要apply功能),那么我们就用login的数字面板布局。而且确定时关闭对话盒。
  3. 对话盒为非模态,允许修改非当前记录的qty。
-- Sam 11:12 21/04/2018
how to deal with multi size dish? (will be done in the second step, now just write down the solution.)
  1. when creating a new dish, if the size is not 1, then do not check the duplication of 3 names. while check the following:
    1. language1 still must not be empty
    2. there must be an existing record with same language1, and same category, and same language1.
    3. in those other records with same language1 and category, must not be with same size
    4. price still need to be checked.
    5. no need to check dspIndex, will be displayed in a popup dlg, and ordered in size.
    6. the language1 which have more than one size must be added into MustiSizeDishAry----a "," seperated sting and save to disk.
  2. when displaying the menus
    1. must add unique in sql, to get out only one record with same language1(which is a must-have name)
    2. the when creating the buttons, if the dish.getLanguage1() is contained in the  MustiSizeDishAry string, then this button must be a MutliSizeMenuBtn, which is extends from menuBtn.
  3. when the multiSizeMenuBtn clicked
    1. pompup a new Dialog SizeSelect Dlg, with barFrame as constructor parameter.
    2. do a sql to fetch out all record with same lang1 and category.
    3. create menubuttons base on each dish. while text display size1/size2/size3/size4或者大/中/小/
-- Sam 04:22 19/04/2018
 发现当dishDlg显示试,visible(true)的下面一行被执行到了。明明dishDlg被设置成模态了啊???
categoryDlg显示时,setvisible(true)下面一行却没有被执行到,难道是因为类别对话盒小吗?
-- Sam 18:45 17/04/2018
dish <--> product table map:
     ID INTEGER IDENTITY PRIMARY KEY
   DELETED BIT DEFAULT false
language1 CODE    VARCHAR(255)
language2 MNEMONIC  VARCHAR(255)
language3 SUBJECT  VARCHAR(255)
price          PRICE    INTEGER
gst                  FOLDERID  INTEGER
qst      STORE    INTEGER
size      COST    INTEGER
printer  BRAND    VARCHAR(255)
CATEGORY CATEGORY  VARCHAR(255)
promp price CONTENT  VARCHAR(255)
promp menu UNIT    VARCHAR(255)
promp mofify PRODUCAREA  VARCHAR(255)
-- Sam 08:53 17/04/2018
 why I don't give bar app a new table for saving the dish?
  • May be it's a good idea to give a new table for dish, because it's so different than product.
  • Currently I didn't give a new table because I am learning the code. don't want to think too much, 
  • and an other thing is that I don't want to have too many table in db, and I want it to display in controller. and give it only a new view defination.
-- Sam 08:49 17/04/2018
目前的状态:
  1. security是独立运行,和simonStyle是两个jvm,用来不互相干扰,security可以升级simonStyle,但用户可以关闭simonStyle不会影响security。
    1. 这样做的唯一理由就是使用户不感觉奇怪。
    2. 如果有老板不希望售货员有打开关闭的权限的话,那么可能采用自动开启的方式更好。
  2. netUtil没半分钟检查一次系统安全状态,其中如果有managedApp的话,会让managedApp保持启动。所有没有被managed app需要另外通过bat来启动。
  3. 下一步:
    1. 先做manager按钮,点击输入密码,通过后进入编辑状态,即,用户可以直接点某个类别按钮,增加文字。或点一个菜单按钮,来增加菜单。
      1. 不设置manager身份(即用户登录后都先显示employee页面,需要点击Setting按钮,输入”高级权限密码“来进入编辑状态(或者界面)
    2. 再做logout按钮,切换回使用状态
    3. 实现类别、菜单等的翻页动作
    4. 实现菜单制作功能
    5. 实现点菜动作(点中的菜加入table)
    6. 实现table中的翻页、选中、保存、选中、撤销

  4. 送检查前先只实现一种语言,之后再增加多语言功能
-- Sam 05:12 19/04/2018
how to change the db to user derby?
  1. we alreay have derby datasource bean ready. how can simonstyle use it?
    1. it's available in frame work.
    2. have simonstyle extends from an frame project?
    3. have simonstyle have dependency on the the model project?
      1. currently the model already know simon style, because it need to manager the simon style( to stop and to start it)
      2. the app can have an interface, like must have a mainclass name like XXXMainFrame.java and must accept a datasource : public void setDB(DataSource ds) so securityModel can communicate with them.
  2. How will barMainFrame be started up?
    1. it will be started up from inside the framework?
      1. might be a little too complex, because it use jetty, it uses spring to manage the db.
      2. and it could be a little wired. unless it's stopped, then it can be started normally?
      3. good thing is that it can update automatically (if I can make sure the start up not crash).

    2. it will be started up by it self?
      1. izpack must be able to add shortcut.(it is said yes)
      2. izpack must be able to make the app auto start up.(it is said yes)
      3. if it's start up by it self, it must use it's own db.
-- Sam 09:44 19/03/2018
how to check the hsql db?
  1. go to the lib folder under the installation folder.
  2. run java -cp hsqldb-1.0.jar org.hsqldb.util.DatabaseManager, this will show up a configuration dialog.
  3. in the url inputfield, input "jdbc:hsqldb:C:\workspace\security\simonstyle\.Storm070111\database\pim
  4. click ok! this will show up the db content.
-------------------------------------------------------------
use dbeaver is more convenient!
-- Sam 06:11 16/02/2018
目前问题:
  1. 打包后不能运行(ide中能运行)
    1. cas的打包方法提示是说PIMDBModal init出错
    2. simonstyle的打包方式提示是说loadapp出错(DefaultConfigInfoLoader.java)---我已经把素有的ini文件改成UTF-8编码了。
      1. 问题可以重新描述成同一个文件,从IDE中运行,读取是正常,从jar中运行,读取却出错?
      2. 原来是因为编码的问题,改成GB2312,就能正确识别了。这是为什么呢?难道说jar文件运行时会用系统的编码去读取?----非常的可能。估计就是那么回事。这么说只要价格“UTF-8在参数就行了”
      3. 不知道为何cas.jar能够自动建立或恢复.Store下的PIMconfig.ini,可是maven project产生的jar却不能呢?
  2. 如果从NetUtil中启动一个程序,比如barMainFrame,那么如果barMainFrame启动过程中出现了异常,肿么办?
    1. 以前的一个机制是,如果数据库有问题,则启动失败,需要再次启动,才能启动程序。这种机制再security框架中有问题:
      1. 再次启动时,会因为,两次启动中间,jvm没有关闭,所以链接没有断开,导致再次启动失败。
      2. 用户需要关闭功能的话,如何满足,告诉他只能最小化,不能关闭。这样会让人觉得有点怪的。
        1. 如果提供一个关闭按钮的话,那么一定需要一个重新启动的方式。
          1. bat的方式不专业,即使bar关闭时做到了关闭数据库链接。bat能够成功启动程序。可是bat启动会多出一个后台终端,黑乎乎的,招用户奇怪。
          2. izpack据说有添加快捷方式的功能,但尚未实验成功。
  3. hsql数据库本身有个奇怪的问题,(也有可能是我用的不对)就是如果程序退出,然后再次启动,DriverManager.getConnection(url, user, pwd)可能会返回null。非常奇怪。
    1. 内部其实是aDriver.driver.connect(url, info)返回了null。hsql实现的,看不到源码。
      1. 要不要升级下驱动看看?
      2. 还是干脆专用derby?毕竟是apach下面的?(还是转derby吧,毕竟有licence issue)
-- Sam 09:09 19/03/2018
 new package command:
  1. go to the folder which contains com, client, org, and Config.ini.
  2. run "C:\Program Files\Java\jdk1.8.0_101\bin\jar" cvfm c:\workspace\security\simonstyle\target\cas.jar c:\workspace\security\simonstyle\m.txt org client com config.ini
    1. be careful the "" must contains the whole path!!!!
-- Sam 14:00 02/12/2017

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