Drupal 7 ubercart放弃的订单在civicrm中标记为已完成

Drupal 7 ubercart放弃的订单在civicrm中标记为已完成,drupal-7,ubercart,civicrm,Drupal 7,Ubercart,Civicrm,我正在使用drupal(7.38)、civicrm(4.6.5)、ubercart(7.x-3.8)和ubercart_civicrm(7.x-4.x-dev)。每当用户(注册/匿名)从站点购买产品时,将向civcrm用户添加一份贡献。如果用户是匿名的,系统将使用drupal和civicrm中的电子邮件创建用户。我注意到ubercart中的一些产品状态为“放弃”,但在相应的用户贡献选项卡下,该产品显示为已完成。我去扔uc_civicrm模块,最后在uc_civicrm/uc_civicrm.mo

我正在使用drupal(7.38)、civicrm(4.6.5)、ubercart(7.x-3.8)和ubercart_civicrm(7.x-4.x-dev)。每当用户(注册/匿名)从站点购买产品时,将向civcrm用户添加一份贡献。如果用户是匿名的,系统将使用drupal和civicrm中的电子邮件创建用户。我注意到ubercart中的一些产品状态为“放弃”,但在相应的用户贡献选项卡下,该产品显示为已完成。我去扔uc_civicrm模块,最后在uc_civicrm/uc_civicrm.module中找到了一些代码

function _uc_civicrm_map_contribution_status($order_status) {
  // NOTE: There may be a more "correct" way to do this.
  $map = array(
    "completed"        => 1,
    "payment_received" => 1,
    "pending"          => 2,
    "processing"       => 5,
    "canceled"         => 3,
    "in_checkout"      => 5,
  );

  if (array_key_exists($order_status, $map)) {
    $id = $map[$order_status];
  }
  else {
    // Oh no.
    $id = 1;
    watchdog('uc_civicrm', 'There is no status that maps to %order_status, marking as "Complete"', array('%order_status' => $order_status), WATCHDOG_WARNING);
  }

  return $id;
}

我想将ubercart订单状态与civicrm供款状态同步。请帮我解决这个问题。提前感谢

在一个我们拥有CiviCRM和Ubercart的网站上(它是Drupal 6),我们最终需要同时使用这两种工具 - , - 但我看到后者只是为D6发布的

最近,对于商业集成,我们已经从使用模块切换到使用和


不确定上述内容有多大帮助,但认为我应该提及。

如果您想将CiviCRM中的“放弃”状态映射到“取消”状态(CiviCRM中没有“放弃”状态),您可以这样修改上述内容:

$map = array(
 "completed"        => 1,
 "payment_received" => 1,
 "pending"          => 2,
 "processing"       => 5,
 "canceled"         => 3,
 "abandoned"         => 3,
 "in_checkout"      => 5,
);

然后我建议做一个bug报告/补丁,以便在维护人员同意的情况下进入模块核心。

Hey@Thron,谢谢你的建议。这可能是目前最简单、最好的解决方案。没问题。另外,你知道专门针对公民的StackExchange吗?是的,我知道。我也把问题贴在那里了。谢谢你的重播。我会试试你的建议,我会让你知道的