args[0]) && !empty($form_state['build_info']['args'][0]->args[0])) {
$order_id = $form_state['build_info']['args'][0]->args[0];
$order = commerce_order_load($order_id);
$form['coupon'] = array(
'#type' => 'container',
'#weight' => 51,
'#prefix' => '
',
'#suffix' => '
',
);
// If there's an active coupon
if (isset($order->commerce_coupons) && !empty($order->commerce_coupons)) {
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
foreach ($order_wrapper->commerce_coupons as $delta => $coupon_wrapper) {
$coupon = $coupon_wrapper->value();
}
$form['coupon']['coupon_code'] = array(
'#type' => 'markup',
'#markup' => 'Your voucher code: ' . $coupon->code .'',
'#prefix' => '',
'#suffix' => '
',
);
$form['coupon']['coupon_remove'] = array(
'#type' => 'submit',
'#value' => t('Remove'),
'#prefix' => '',
'#suffix' => '
',
'#submit' => array('maze_shop_basket_coupon_remove_form_submit'),
);
$form['coupon']['coupon_id'] = array(
'#type' => 'hidden',
'#value' => $coupon->coupon_id,
);
// Else, if there isn't any active coupon
} else{
$form['coupon']['coupon_code_label'] = array(
'#type' => 'markup',
'#markup' => 'Enter voucher code
',
);
$form['coupon']['coupon_code'] = array(
'#type' => 'textfield',
'#required' => FALSE,
'#title' => '',
);
$form['coupon']['coupon_add'] = array(
'#type' => 'submit',
'#value' => t('Apply'),
'#submit' => array('maze_shop_basket_coupon_form_submit'),
);
}
}
break;
}
}
/**
* Custom submit action for the basket's coupon form
*/
function maze_shop_basket_coupon_form_submit($form, &$form_state) {
$order = $form_state['order'];
$error = '';
if ($code = $form_state['values']['coupon_code']) {
$coupon = commerce_coupon_redeem_coupon_code($code, $order, $error);
if ($commerce_coupon = commerce_coupon_redeem_coupon_code($code, $order, $error)) {
drupal_set_message('Successfully added voucher code ' . $commerce_coupon->code . '.');
} else {
drupal_set_message($error, 'error');
return;
}
}
$form_state['no_redirect'] = FALSE;
return ;
}
/**
* Custom submit action for the basket's remove coupon form
*/
function maze_shop_basket_coupon_remove_form_submit($form, &$form_state) {
$order = $form_state['order'];
$coupon = commerce_coupon_load($form_state['values']['coupon_id']);
maze_shop_coupon_remove_coupon_from_order($order, $coupon);
drupal_set_message('Voucher ' . $coupon->code .' removed from order.');
return ;
}
function maze_shop_coupon_remove_coupon_from_order($order, $coupon) {
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
//Remove the coupons from the order relationship.
foreach ($order_wrapper->commerce_coupons as $delta => $coupon_wrapper) {
if ($coupon_wrapper->value() == $coupon) {
$order_wrapper->commerce_coupons->offsetUnset($delta);
}
}
commerce_order_save($order);
/*
// Make a EFQ to get coupon line items in that order that match to the coupon.
$query = new EntityFieldQuery();
$result = $query->entityCondition('entity_type', 'commerce_line_item')
->propertyCondition('order_id', $order->order_id)
->propertyCondition('type', 'commerce_coupon')
->fieldCondition('commerce_coupon_reference', 'target_id', $coupon->coupon_id, '=')
->execute();
if (empty($result)) {
return;
}
$line_item_ids = array_keys($result['commerce_line_item']);
if (!empty($line_item_ids)) {
// First remove the line items from the order and save it to avoid
// conflicts.
foreach ($order_wrapper->commerce_line_items as $delta => $line_item_wrapper) {
if (in_array($line_item_wrapper->line_item_id->value(), $line_item_ids)) {
$order_wrapper->commerce_line_items->offsetUnset($delta);
}
}
commerce_line_item_delete_multiple($line_item_ids);
}
*/
}