UC1 UC2活动图
UO活动图
领域模型
收银用例
范围:POS应用
级别:用户目标
主要参与者:收银员
涉众及其关注点:
-收银员:准确快速的输入,并且没有支付错误,如果少收货款,将从薪水中扣除
-顾客:希望最小代价完成购买活动并得到快速服务,希望便捷、清晰地看到所输商品项目和价格。希望得到购买凭证,以便退货。
-公司:希望准确地记录交易,满足顾客要求。希望确保记录了支付授权服务的支付票据。
-销售经理:希望能够快速执行超空操作,并易于更正收银员的不当操作。
前置条件:收银员必须经过确认和认证
后置条件:存储销售信息,更新账务和库存信息。生成票据。
主事件流:
1、 顾客携带所购商品或服务到收银台通过POS机付款
2、 收银员开始一次新的销售交易
3、 收银员扫描输入顾客所购买商品
4、 系统根据扫描的商品,进入数据库调出商品单价,并进行价钱的累加 (如果有会员卡,就出示会员卡)
收银员重复3~4步,直到输入结束
5、 显示商品总价格,并请顾客付款
6、 顾客付款,系统处理支付
7、系统记录完整的销售信息,并将销售和支付信息发送到外部的账务系统和库存系统
8、系统打印票据
9、顾客携带商品和票据离开
10、用例结束
扩展:
*a.经理在任意时刻要求进行超控操作:
1.系统进入经历授权模式。
2.经理或收银员执行某一经理模式的操作。例如,变更现金结余,恢复其他登陆者中断的销售交易,取消销售交易等。
3.系统回复到收银员授权模式。
*b.系统在任意时刻失败:
为了支持恢复和更正账务处理,要保证所以交易的敏感状态和事件都能够从场景的任何一步中完全恢复。
1. 收银员重启系统,登陆,请求恢复上次状态。
2. 系统重建上次状态。
2a.系统在恢复过程中检测到异常:
1. 系统向收银员提示错误,记录此错误,并进入一个初始状态。
2. 收银员开始一次新的销售交易。
3a.无效商品ID
1. 系统提示错误并拒绝输入该ID。
2. 收银员响应该错误。
2a.商品ID可读
1. 收银员手工输入商品ID
2. 系统显示商品项目的描述和价格。
2a.无效商品ID:系统提示错误。收银员尝试其他方式。
2b.系统内不存在该商品ID,但是该商品附有价签:
1. 收银员请求经理执行超控操作。
2. 经理执行相应的超空操作。
3. 收银员选择收工输入价格,输入价签上的价格。
2c.收银员通过执行寻找产品帮助以获取正确的商品ID及其价格。
3-5a。顾客要求收银员从所购商品中去掉一项:
1. 输入商品ID并将其删除
2. 系统删除该项目并显示更新后的累计额
2a.商品价格超过了收银员权限:
1. 系统提示错误,并建议经理超控
2. 收银员请求经理超控,完成超控后,重做该操作
3-5b.顾客要求收银员取消销售交易:
1. 收银员在系统中取消销售交易
6a.现金支付:
1、 收银员输入收取的现金额
2、 系统显示找零金额,并弹出现金抽屉
3、 收银员放入收取的现金,并给顾客找零
4、 系统记录该现金支付
6b.信用卡支付:
1、 顾客输入信用卡账户信息
2、 系统显示其支付信息以备验证
3、 收银员确认
3a.收银员取消付款步奏
1. 系统回复到“商品输入”模式
8a.打印票据
1. 如果系统能够检测到错误,给出提示
2. 收银员更换纸张
3. 收银员请求打印其他票据
特殊需求:
1.使用大尺寸显示器,文本信息可见距离为1.5米
2.输入信息时可伴随有语音提示
业务规则:
规则一:逢周二为会员日,部分商品持会员卡可打8折
规则二:员工购买商品可享受9折优惠
订单表:saleorder
CREATE TABLE `saleorder` (
`ID` int(11) NOT NULL auto_increment,
`SALEORDERNO` varchar(36) NOT NULL,
`CUSTOMER_ID` int(11) NOT NULL default '1',
`TOTAL` double NOT NULL default '0',
`CREATDATETIME` datetime NOT NULL,
`STATE` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `SALEORDERNO` (`SALEORDERNO`),
KEY `CUSTOMER_ID` USING BTREE (`CUSTOMER_ID`),
CONSTRAINT `saleorder_ibfk_1` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer` (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=322 DEFAULT CHARSET=utf8;
订单明细表:saleorderitem
CREATE TABLE `saleorderitem` (
`ID` int(11) NOT NULL auto_increment,
`SALEORDER_ID` int(11) NOT NULL,
`PRODUCT_ID` int(11) NOT NULL,
`QUANTITY` int(11) NOT NULL default '1',
`PRICE` double NOT NULL default '0',
`productname` varchar(255) default NULL,
PRIMARY KEY (`ID`),
KEY `SALEORDER_ID` (`SALEORDER_ID`),
KEY `PRODUCT_ID` (`PRODUCT_ID`),
CONSTRAINT `saleorderitem_ibfk_1` FOREIGN KEY (`SALEORDER_ID`) REFERENCES `saleorder` (`ID`),
CONSTRAINT `saleorderitem_ibfk_2` FOREIGN KEY (`PRODUCT_ID`) REFERENCES `product` (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=253 DEFAULT CHARSET=utf8;
支付表payment
DROP TABLE IF EXISTS `payment`;
CREATE TABLE `payment` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`PAYMENTNO` varchar(36) NOT NULL,
`PAYMENTMETHOD` int(11) NOT NULL,
`AMOUNT` double NOT NULL,
`SALEORDER_ID` int(11) NOT NULL,
`CREATDATETIME` datetime NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `SALEORDER_ID` (`SALEORDER_ID`) USING BTREE,
CONSTRAINT `payment_ibfk_1` FOREIGN KEY (`SALEORDER_ID`) REFERENCES `saleorder` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;