1.cash on delivery

新订单:
state:new
status:pending发货后:
state:processing
status:processinginvoices:
state:complete
status:complete
新订单:
state:new
status:pendinginvoices:
state:processing
status:processing发货后:
state:complete
status:complete


2.在线支付:

新订单:
state:new
status:pending付款后:
state:processing
status:processing付款后发货:
state:complete
status:complete

新订单:
state:new
status:pending没付款后发货:
state:processing
status:processing创建发票:
state:complete
status:complete

新订单:
state:new
status:pending创建发票:
state:processing
status:processing发货:
state:complete
status:complete

新订单:
state:new
status:pending直接取消:
state:canceled
status:canceled完成后,就不能取消

订单挂起
state  : holded
status : holded订单关闭
state  : closed
status : closed
支付(Paypal, Amazon Pay)过程中引入的订单状态
state  : pending_payment
status :payment_review 

我们拿Paypal付款作为例子,当然任意第三方的付款接口均适用。我们知道,当用户下单之后,后台立刻
收到“未付款”的订单,此时,如果用户在Paypal付款成功,Paypal会向Magento返回支付成功代码。
一切正常的话,之前处于“未付款”状态的订单,
会被更新为“正在处理”(Processing)状态。
那么这里,需要注意一个情况,如果是线下收款,如支票收款,该如何让Magento知道
该订单已经收到付款了呢?很多朋友会非常迷惑这个地方,
因为Magento并未有一个明确的方式将“等待付款”的订单状态
修改为“正在处理”。那么,这里需要了解下Invoice。
一旦客户从在线渠道,或者是其它途径收到了付款,
但是并未向Magento发送收款成功数据。
则可以通过打印订单Invoice将“未付款”状态的订单修改为“正在处理”状态。
此时,当用户付款成功,并且商家也已经完成货物打包,交付物流发货之后,是时候在后台填写运单号,
通知用户已经发货,准备接收了。此时,我们可以通过后台订单中点击运送,
并填写物流商及运单号,告知用户已经发货,
及具体的物流信息。
完成订单仅仅是一个开始不出意外,当按照上述流程完成订单的支付及物流操作之后,
你会发现,该订单的状态已经变成了“已完成”(complete)。
貌似,Magento系统内置的订单流程非常简单。
当然这里的非常简单有几个前提。
1,你已经非常了解Magento的这套基本订单流程,
以及如何在新订单出现之后,处理通过线上及线下的付款方式,
以及物流流程。2,没有碰到任何特殊情况。
那么什么是特殊情况呢?例如,已完成的订单,客户退款了怎么办?
处于Pending状态的订单,客户是否可以继续付款?
(答案是不能,需要通过插件扩展)。等等这些问题。最后,为下一篇关于Magento订单状态的文章留一个问题。从付款成功,到商家备货并交付物流发货,
是一个可长可短的过程,这个过程,只通过Processing这一个订单状态来解释,会不会让客户感到不知所措呢?
比如说在此添加一个“已付款”,“正在备货”,“已发送”这样的状态呢?
在婚纱B2C这个垂直领域中,客户下单之后,工厂才会进行生产,
这个阶段可能会持续两周或者更长时间,是否能够添加一个“婚纱制作中”的订单状态呢?

3.Difference between order state and status

State is used by Magento to tell if the order is new, processing, complete, holded, closed,canceled etc.; while Statuses are the one that YOU would be defining at the back-end
detail page to let you know which status is assigned as per your mapping. Remember, multiple
statuses can be mapped with one state,while vice verse is not possible.magento 显示的是 status,而不是state 。
多 status 映射 一个 state,反之不行。

<order><statuses><pending translate="label"><label>Pending</label></pending><pending_payment translate="label"><label>Pending Payment</label></pending_payment><processing translate="label"><label>Processing</label></processing><holded translate="label"><label>On Hold</label></holded><complete translate="label"><label>Complete</label></complete><closed translate="label"><label>Closed</label></closed><canceled translate="label"><label>Canceled</label></canceled><fraud translate="label"><label>Suspected Fraud</label></fraud></statuses><states><new translate="label"><label>New</label><statuses><pending default="1"/></statuses><visible_on_front/></new><pending_payment translate="label"><label>Pending Payment</label><statuses><pending_payment default="1"/></statuses></pending_payment><processing translate="label"><label>Processing</label><statuses><processing default="1"/></statuses><visible_on_front/></processing><complete translate="label"><label>Complete</label><statuses><complete default="1"/></statuses><visible_on_front/></complete><closed translate="label"><label>Closed</label><statuses><closed default="1"/></statuses><visible_on_front/></closed><canceled translate="label"><label>Canceled</label><statuses><canceled default="1"/></statuses><visible_on_front/></canceled><holded translate="label"><label>On Hold</label><statuses><holded default="1"/><fraud/></statuses><visible_on_front/></holded></states></order>

4.改变订单状态

$orderId = 3226; //order id
$order = Mage::getModel('sales/order')->load($orderId); //load order
$state = 'complete';
$status = $state;
$comment = "Changing state to $state and status to $status Status";
$isCustomerNotified = false; //whether customer to be notified
$order->setState($state, $status, $comment, $isCustomerNotified);
//$order->setStatus($status);    //can also use this to change only status
try {
$order->save();
echo "<br />State and Status Updated";}catch (Exception $e)
{echo $e->getMessage();
}

这个方法不能通过手动设置:complete 与 closed 为保护状态,不能手动设置
The Order State "complete" must not be set manually

可以重写如下:
http://iulian.fenici.ro/magento-change-order-state-to-complete-from-code/

或者:

Try$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE);
OR$order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE);
$order->save();
You can't set Order state to COMPLETE or CLOSED manually with setState() method AFAIK.

http://stackoverflow.com/questions/14630707/magento-manually-change-order-status-to-complete

Magento Order State  is used to define processing order .Magento Order Status is used by the administrator to know the exact order flow .

http://www.zuimoban.com/php/magento/2192.html

http://www.educity.cn/wenda/6362.html

http://blog.decryptweb.com/order-state-status-magento/

http://www.magestore.com/manage-magento-online-store/magento-order-status-and-magento-order-state

50.magento 订单状态相关推荐

  1. Magento后台订单跟踪 - 修改订单状态

    我们可能有这样的一个需求,因为从一个订单生成到订单发货完成当中有一系列过程需要跟踪,比如订单确认,订单处理,订单发货等等一些跟踪状态,我们都需要去备注,这样客户在登录后台的时候很清晰的知道他们的订单当 ...

  2. 创建订单 - 扣除商品库存与订单状态保存

    /*** @Description: 订单状态 枚举*/ public enum OrderStatusEnum {WAIT_PAY(10, "待付款"),WAIT_DELIVER ...

  3. 支付宝商家二维码收款、订单状态查询、退款API试用笔记

    情景 商家的app或商城支持支付宝支付,支付的方式是商家根据商品价格生成相应的付款二维码,用户扫码付款,同时商家需要查看支付订单状态,备货出货,当然还要支持退款. 准备测试环境 1.开通开发者服务 用 ...

  4. 火车票订单状态查询接口

    火车票订单状态查询接口,可查询订单状态,本接口不扣次数,请合理控制查询频率. 接口名称:火车票订单状态查询接口 接口平台:聚合数据 接口地址:http://op.juhe.cn/trainTicket ...

  5. php监听订单状态,ecshop数据库订单状态判断

    order_info 表 刚下完订单 order_status 0 shipping_status 0 pay_status 0 取消 order_status 2 shipping_status 0 ...

  6. PHP微信支付没有收到微信的回调怎么修改订单状态:主动查询

    正常情况下 微信会返回SUCCESS, 如果没有返回就调用主动查询订单接口,https://pay.weixin.qq.com/wiki/doc/api/j... 该接口提供所有微信支付订单的查询,商 ...

  7. magento邮件使用php,Magento订单成功无邮件发送

    Magento订单成功之后,或是有新的订单在MAGENTO1.9.1版本中不发送相应的邮件及抄送邮件至管理员邮箱 这个问题是今天我们的一个客户从1.7升级到1.9.1.1时发现的,后来听技术人员说,此 ...

  8. 状态模式 处理订单状态_将状态机模式实现为流处理器

    状态模式 处理订单状态 在我的上一个博客中,我说过我真的以为某些"四人行"(GOF)模式已经过时了,如果不是过时的话肯定不受欢迎. 特别是我说过StateMachine没什么用,因 ...

  9. java 更新订单状态_Java 8状态更新

    java 更新订单状态 即将到来的Java SE 8发行版的两大新语言功能是Lambda Expressions和Modularity. 这两天的状态更新都已经发布. 我会与您分享链接,因此您可能会在 ...

  10. sap 订单状态修改时间_SAP中对于获取订单的状态

    在SAP中对于如何获取订单的状态,提供了至少两个函数,分别是 STATUS_READ 和   STATUS_TEXT_EDIT.下面简单介绍这两个函数 1.STATUS_READ  改函数的实现原理大 ...

最新文章

  1. Opencv cv2.KalmanFilter 鼠标跟踪
  2. 计算机硬盘位显示none,开机找不到硬盘Detecting Primary Master... None
  3. 写给准备参加秋招的学弟学妹们~一定要来看哦~
  4. ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
  5. PHP注入漏洞(附代码,具体步骤)
  6. pytorch torchvision类
  7. 【POJ2752】Seek the Name, Seek the Fame(hash)
  8. 一种一致性HASH算法的实现方法,附核心代码
  9. 服装设计与工程_百度百科
  10. PASCAL VOC2012数据集分析
  11. 拉扎维模拟CMOS集成电路设计python建模工程——利用matplotlib绘制NMOS与PMOS转移特性曲线
  12. 行人重识别论文阅读8-FastReID京东快速行人重识别
  13. 视频教程-JavaSE基础视频精讲⑰:IO流高级用法-Java
  14. python 006 __ 小斌文档 | 特殊字符的使用
  15. android 屏幕滚动字幕,LED灯牌显示屏滚动字幕
  16. 使用Matlab将抖音视频转换成gif图片
  17. 【软件下载】Excel下载 word下载 官方 官网下载 原始镜像 开发工具 开发软件下载
  18. Python基础——类属性、类方法、异常
  19. 微信端自动播放背景音乐
  20. 也谈时间管理和GTD

热门文章

  1. Html 解决长串英文字母显示不能自动换行
  2. coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)
  3. 如何制作响应式网站?12个优秀案例参考
  4. WCF REST(9篇)
  5. php表示昨天_php 获取今日、昨日、上周、本月的起始与结束时间戳
  6. 如何启动一个Vue3.x项目
  7. Mongodb 3.2 Manual阅读笔记:CH9 存储
  8. S2SH框架配置步骤
  9. 【BIEE】MDS-01377:无法从使用 JNDI 名称 “jdbc/mds/owsm” 配置的数据源获取数据库连接...
  10. 【排坑】内外部事务的回滚问题(三)