/**
* Form callback: Returns the form for modifying the product price and status.
*/
function commerce_backoffice_product_quick_edit_form($form, &$form_state, $product) {
$form_state['product'] = $product;
$price_array = $product->commerce_price[LANGUAGE_NONE][0];
$currency = commerce_currency_load($price_array['currency_code']);
$amount = commerce_currency_amount_to_decimal($price_array['amount'], $price_array['currency_code']);
$price = number_format(commerce_currency_round(abs($amount), $currency), $currency['decimals'], $currency['decimal_separator'], $currency['thousands_separator']);
if (module_exists('commerce_stock')) {
$stock = $product->commerce_stock['und'][0];
}
$wrapper = drupal_html_id('commerce-backoffice-product-quick-edit-form');
$form['#prefix'] = '
';
$form['#suffix'] = '
';
$form['price'] = array(
'#type' => 'textfield',
'#title' => t('Price'),
'#title_display' => 'invisible',
'#default_value' => $price,
'#size' => 5,
);
$form['stock'] = array(
'#type' => 'textfield',
'#title' => t('Stock'),
'#title_display' => 'invisible',
'#default_value' => $stock,
'#size' => 5,
);
$form['status'] = array(
'#type' => 'select',
'#title' => t('Status'),
'#title_display' => 'invisible',
'#options' => array(0 => t('Disabled'), 1 => t('Active')),
'#default_value' => $product->status,
);
$form['save'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#ajax' => array(
'callback' => 'commerce_backoffice_product_quick_edit_form_ajax',
'wrapper' => $wrapper,
),
);
if (!empty($form_state['product_saved'])) {
$form['save']['#suffix'] = t('Saved');
}
return $form;
}
/**
* Ajax callback for commerce_backoffice_product_quick_edit_form.
*/
function commerce_backoffice_product_quick_edit_form_ajax($form, &$form_state) {
return $form;
}
/**
* Submit callback for commerce_backoffice_product_quick_edit_form.
*/
function commerce_backoffice_product_quick_edit_form_submit($form, &$form_state) {
$product = $form_state['product'];
$currency_code = $product->commerce_price[LANGUAGE_NONE][0]['currency_code'];
$product->commerce_price[LANGUAGE_NONE][0]['amount'] = commerce_currency_decimal_to_amount($form_state['values']['price'], $currency_code);
if (module_exists('commerce_stock')) {
$product->commerce_stock['und'][0] = $form_state['values']['stock'];
}
$product->status = $form_state['values']['status'];
commerce_product_save($product);
$form_state['rebuild'] = TRUE;
$form_state['product_saved'] = TRUE;
}