Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构

1. 54.order_info  订单 数据结构1

2. Ecshop 的订单api1

2.1. 生成订单 code by1

2.2. 相关文件路径2

2.3. 取得订单信息 function order_info($order_id, $order_sn = '')2

2.4. 取得订单商品function order_goods($order_id)2

2.5. 取得订单总金额  function order_amount($order_id, $include_gift = true)2

2.6. 修改订单 function update_order($order_id, $order)3

2.7. * 订单退款order_refund(3

2.8. * 合并订单merge_order4

2.9. * 改变订单中商品库存change_order_goods_storage4

3. Ati order api4

3.1. 生成订单insert /save4

4. 高级功能4

1. 54.order_info  订单 数据结构

参考备注

2. Ecshop 的订单api

2.1. 生成订单 code by

flow.php

/*------------------------------------------------------ */

//-- 完成所有订单操作,提交到数据库

/*------------------------------------------------------ */

elseif ($_REQUEST['step'] == 'done')

{

/* 插入订单表 */

$error_no = 0;

do

{

$order['order_sn'] = get_order_sn(); //获取新订单号

$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'), $order, 'INSERT');

2.2. 相关文件路径

D:\wamp\www\ecsx\includes\lib_order.php

/**

* 取得订单信息

* @param   int     $order_id   订单id(如果order_id > 0 就按id查,否则按sn查)

* @param   string  $order_sn   订单号

* @return  array   订单信息(金额都有相应格式化的字段,前缀是formated_)

*/

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2.3. 取得订单信息 function order_info($order_id, $order_sn = '')

/**

* 取得订单商品

* @param   int     $order_id   订单id

* @return  array   订单商品数组

*/

2.4. 取得订单商品function order_goods($order_id)

/**

* 取得订单总金额

* @param   int     $order_id   订单id

* @param   bool    $include_gift   是否包括赠品

* @return  float   订单总金额

*/

2.5. 取得订单总金额  function order_amount($order_id, $include_gift = true)

{

$sql = "SELECT SUM(goods_price * goods_number) " .

"FROM " . $GLOBALS['ecs']->table('order_goods') .

" WHERE order_id = '$order_id'";

if (!$include_gift)

{

$sql .= " AND is_gift = 0";

}

return floatval($GLOBALS['db']->getOne($sql));

}

/**

* 修改订单

* @param   int     $order_id   订单id

* @param   array   $order      key => value

* @return  bool

*/

2.6. 修改订单 function update_order($order_id, $order)

{

return $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('order_info'),

$order, 'UPDATE', "order_id = '$order_id'");

}

/**

2.7.  * 订单退款order_refund(

* @param   array   $order          订单

* @param   int     $refund_type    退款方式 1 到帐户余额 2 到退款申请(先到余额,再申请提款) 3 不处理

* @param   string  $refund_note    退款说明

* @param   float   $refund_amount  退款金额(如果为0,取订单已付款金额)

* @return  bool

*/

function order_refund($order, $refund_type, $refund_note, $refund_amount = 0)

{

/**

2.8.  * 合并订单merge_order

* @param   string  $from_order_sn  从订单号

* @param   string  $to_order_sn    主订单号

* @return  成功返回true,失败返回错误信息

*/

function merge_order($from_order_sn, $to_order_sn)

/**

2.9.  * 改变订单中商品库存change_order_goods_storage

* @param   int     $order_id   订单号

* @param   bool    $is_dec     是否减少库存

* @param   bool    $storage     减库存的时机,1,下订单时;0,发货时;

*/

function change_order_goods_storage($order_id, $is_dec = true, $storage = 0)

3. Ati order api

3.1. 生成订单insert /save

来源于sql与orm的api继承。。

4. ---code

public class OrderService extends absService {

public static void main(String[] args) {

final long time_intFmt = new Date().getTime() / 1000;

System.out.println(time_intFmt);

OrderService os = IocX4casher.getBean(OrderService.class);

os.insert(new HashMap() {

{

this.put("good_amount", 12.50);

this.put("add_time", time_intFmt);

this.put("confirm_time", time_intFmt);

this.put("order_sn",filex.getUUidName());

}

});

System.out.println("--f");

}

@Inject

DBX dx;

public int insert(Map order) {

String sql = "insert into ecs_order_info(order_sn,order_status,shipping_status,pay_status,goods_amount,add_time,confirm_time,agency_id,inv_type,tax,discount)values('@order_sn@',1,1,1,@good_amount@,@add_time@,@confirm_time@,0,0,0,0) ";

sql = SqlFormatter.exe(sql, order);

System.out.println(sql);

// DBX IocX4casher.getBean(DBX.class)

dx.execSql(sql);

return 0;

}

5. 高级功能

错误的金额----  太小,太大的的数

审核机制...(可以只使用在太小,太大金额或者别的异常的情形哈)

参考

ECSHOP 数据库结构说明 (适用版本v2.7.3).htm

Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构的更多相关文章

  1. Atitit.收银系统模块架构attilax 总结

    Atitit.收银系统模块架构attilax 总结 1. 常规收银系统模块结构1 1.1. 商品管理1 1.2. 会员系统1 1.3. 报表系统1 1.4. 会员卡系统1 1.5. 库存管理1 2.  ...

  2. RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例

    功能描述 无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考.主从表的界面设计大同小异,主 ...

  3. Atitit.收银系统pos 以及打印功能的行业标准

    Atitit.收银系统pos 以及打印功能的行业标准 1. ESC指令序列 Escape指令序列不同于ESC/POS指令 1 2. 打印标准OPOS POSPrinter 与 CashDrawer 驱 ...

  4. 原生tab切换(适用于购物商城中订单管理模块,例如:待付款/待发货/待收货等订单状态)

    <!-- 头部tab栏切换 html部分--> <ul class="title-bar"> <li @click="changeStatu ...

  5. 浩瀚移动POS收银开单扫描解决方案PDA仓储系统,无线批发,移动批发,无线POS,无线销售APP-车销管理PDA

    适用范围 各种业态的批发商铺.批发市场.订货会.展销会.配送中心仓库…… 产品简介 随着移动技术与智能PDA设备的迅猛发展,中国已经跨步进入移动信息化社会.移动商务是移动信息社会的重要载体与形式,它开 ...

  6. PDA移动POS开单扫描打票收银系统-带来零售批发 新的技术 新的手段!!

    手持POS终端高清彩屏,清晰.美观.大方,适用于仓库.超市.服装.食品.批发零售.手机电脑等企业管理.可与管理软件灵活对接.1:员工记不住价格,产品名称,只要有PDA扫描,价格,库存,直接开销售单,打 ...

  7. 基于C#的超市收银管理系统

    基于C#的超市收银管理系统 前序 一直在忙学习Qt有关的知识,非常有幸这学期学习了C#.让我也感觉到了一丝欣慰,欣慰的是感觉好上手啊,学了几天顿时懂了.好多控件的使用方法好类似,尽管平时上课没有怎么认 ...

  8. 互联网+下PDA移动智能手持POS超市收银开单软件

    是一套专为中小超市.专卖店设计的收银管理软件,广泛应用于中小超市(百货商店).化妆品店.婴幼儿用品店.玩具店.保健品店.茶叶店. 电器.文具图书.手机通讯器材店等行业的中小型店面店铺.该系统具有完善的 ...

  9. 移动零售批发行业新的技术特色-智能PDA手持移动扫描打印销售开单收银仪!!

    提起便利店或者超市,大家的第一印象一定是前台那个笨重的POS机和站在POS机后的收银员.传统的零售店中,笨重的POS机随处可见. 变革前,零售盘点多烦忧 一个顾客要结账,就需要通过POS机.小票打印机 ...

随机推荐

  1. 26、Django实战第26天:配置全局导航

    1.编辑index.html,继承base.html 2.编辑base.html,根据是否登录不同显示 问题:当我们选中一个导航,选中样式并没有成为选中的状态 因此我们编辑base.html对导航中进 ...

  2. [BZOJ4817]树点涂色

    第一个操作比较麻烦,但可以看出它和lct里的access操作差不多,所以可以利用lct的性质巧妙维护操作1 直接用lct维护树中同颜色的链(因为染色操作是从$x$染到根所以同颜色的点一定形成一条链), ...

  3. 【spfa】bzoj3921 Mimori与树海

    考虑“删除后图仍连通”,即其不是无向图的桥(bridge),可以用Tarjan算法预处理,这里不赘述. [算法一] 枚举删除的是哪条边,然后枚举起点,暴搜,统计答案. 可以通过0.1号测试点. 预计得 ...

  4. 5.6(java学习笔记) queue

    一.queue接口 queue的中文意思是队列,是一种以先进先出方式处理数据的集合. 队列还提供额外的插入.提取和检查操作.这些方法都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(根据操 ...

  5. 微服务之SpringCloud实战(五):SpringCloud Eureka详解

    Eureka详解 在第三节高可用中,实际已经讲解了服务的注册,只不过注册的是Eureka本身,原理相同,通过这几篇文章我相信大家对Eureka有了一定的了解,三个核心角色:服务注册中心.服务提供者和服 ...

  6. 个人python学习路线记录

    一.入门视频 零基础入门学习Python --小甲鱼 二.博客园 python快速教程 http://www.cnblogs.com/vamei/archive/2012/09/13/2682778. ...

  7. iOS UILabel自定义行间距

    NSString *hintStr = @"输入材料标题搜索材料\n注:可根据材料序号直接搜索, 如TPO23"; CGSize size = [toolset returnTex ...

  8. Services

    *在实际运行中同样的Service的确只能有一个. Services有两种启动形式: Started:其他组件调用startService()方法启动一个Service.一旦启动,Service将一直 ...

  9. Maven设置snapshot无法在远程仓库下载的问题解决

    检查步骤如下: 1.检查nexus是否纳入public版本中: 2.配置中是否启用snapshots功能.以下方法两种设置都可以,任选一个即可. 一种是在项目pom.xml使用: <reposi ...

  10. D3.js系列——布局:打包图和地图

    一.打包图 打包图( Pack ),用于表示包含与被包含的关系,也可表示各对象的权重,通常用一圆套一圆来表示前者,用圆的大小来表示后者. 1.布局(数据转换) var pack = d3.layout ...