희망,하지만 당신은 시도 다음
$order->line_items[] = uc_order_line_item_add($order->order_id, 'Pay at door','Pay at door',5);
문제는 uc_order_line_item_add 단순히 건네이고되고있는 현재 주문 오브젝트를 데이터베이스를하지 업데이트이다 나중에 합계 등을 계산하는 데 사용되는 경우 고맙게도 uc_order_line_item_add는 order 객체에 간단하게 추가 할 수있는 광고 항목 배열을 반환합니다. 나는 그것이 당신의 지불 방법 안에서는 잘 돌아갈 지 확신하지 못하지만 hook_uc_order에서 나를 위해 일한다. 두 번째 새로 고침 때까지 비슷한 세금 문제가 업데이트되지 않았다. 내 전체 예제 코드를하는 데 도움이 경우
은 다음과 같습니다 :
<?php
function my_module_uc_order($op, &$order, $arg2) {
switch ($op) {
case 'presave':
// using presave as taxes are calculated during save
$line_item_id = FALSE;
if (!is_array($order->line_items)) {
$order->line_items = array();
}
else {
foreach ($order->line_items as $index => $line_item) {
if ($line_item['type'] == 'my_line_item') {
$line_item_id = $line_item['line_item_id'];
break;
}
}
}
if ($line_item_id === FALSE) {
// Add item.
// Dummy amount for testing.
$amount = 3;
// uc_order_line_item_add returns a line_item array so we can just add it to the order object.
$order->line_items[] = uc_order_line_item_add($order->order_id, 'my_line_item', 'My Item Title (added)', $amount);
// uc_order_line_item_add($order_id, $type, $title, $amount, $weight = NULL, $data = NULL).
}
else {
// Update item.
// Dummy amount for testing.
$amount = 4;
// uc_order_update_line_item($id, $title, $amount, $data = NULL).
uc_order_update_line_item($line_item_id, 'My Item Title (updated)', $amount);
// Manually modify amount.
$order->line_items[$index]['amount'] = $amount;
}
break;
}
}
/**
* Implements hook_uc_line_item().
*/
function my_module_uc_line_item() {
$items[] = array(
'id' => 'my_line_item',
'title' => t('Custom text'),
'weight' => 0,
'default' => FALSE,
'stored' => TRUE,
'add_list' => TRUE,
'calculated' => TRUE,
);
return $items;
}
출처
2013-04-04 13:14:43
PAB