Hem >> Bloggar >> Teknikbloggen >> Hantera Drupal Commerce ordrar

Hantera Drupal Commerce ordrar

  • Posted on: 31 August 2016
  • By: Pontus

Sparar lite om hur man kommer åt data i en order från Drupal Commerce med hjälp Entity Metadata Wrapper.

Den här texten uppdateras löpande ...

Om man bara har order nummer så måste den läsas in till ett object först.

$order = commerce_order_load($order_nummer);

Skapa wrappern 

$wrapper = entity_metadata_wrapper('commerce_order', $order);

Lista all information som går att hämta och information om vad den innehåller.

print_r(var_dump( $wrapper->getPropertyInfo() ));

För att sedan hämta ett värde, till exempel order id, skriver vi i princip bara vad den heter följt av value()

$wrapper->order_id->value()

 

Här har vi lite exempel koder som är hämtade på lite olika platser.

order total object

$order_total_obj = $order_wrapper->commerce_order_total->value();

Order total (beloppet)

$order_total = $order_total_obj['amount'];

orderns valuta 

$currency_code = $order_wrapper->commerce_order_total->currency_code->value();

// subtotal without vat
$total_ex_vat = commerce_price_component_total($order_total , 'base_price');
// total tax (in this case vat 20%)
$total_vat = commerce_price_component_total($order_total , 'tax|vat_20');
// subtotal with vat
$sub_total = $total_ex_vat['amount'] + $total_vat['amount'];
// formatted price string with currency sign
$sub_total = commerce_currency_format($sub_total, $currency_code);
// Order state
$order_status = commerce_order_status_load($order->status);
$order_state = $order_status['state'];
if ($order_state != 'cart') {
....
}

// Get the customer billing profile (this is not the wrapper object for the wrapper object don't use the ->value())
$customer_billing = $order_wrapper->commerce_customer_billing->value();
// Make sure it exists
if (isset($customer_billing)) {
// Get the customer billing profile wrapper
$customer_billing_wrapper = $order_wrapper->commerce_customer_billing;
// Get the address
$address = $customer_billing_wrapper->commerce_customer_address->value();
// Get organisation name if available.
if (isset($address['organisation_name'])) {
$organisation_name = $address['organisation_name'];
}
}

// Line item
$line_item_wrapper = entity_metadata_wrapper('commerce_line_item', $line_item);
// get all line item wrappers from order wrapper
foreach ($order_wrapper->commerce_line_items as $line_item_wrapper) {
// line item type
$line_item_type = $line_item_wrapper->type->value();
// line item type using the bundle.
$line_item_type = $line_item_wrapper->getBundle();
// check if a product.
if (in_array($line_item_type, commerce_product_line_item_types())) {
// line item title
$line_item_title = $line_item_wrapper->commerce_product->title->value();
// line item unit price
$line_item_unit_price = $line_item_wrapper->commerce_unit_price->amount->value();
// line item formatted unit price
$line_item_unit_price = commerce_currency_format($line_item_unit_price, $currency_code);
// line item quantity
$line_item_quantity = (float)$line_item_wrapper->quantity->value();
// line item total price
$line_item_total_price = $line_item_wrapper->commerce_total->amount->value();
// line item formatted total price
$line_iten_total_price = commerce_currency_format($line_item_total_price, $currency_code);
// Product
// Product ID.
$product_id = $line_item_wrapper->commerce_product->product_id->value();
// Product SKU.
$sku = $line_item_wrapper->commerce_product->sku->value();
// Product image
$line_item_wrapper->commerce_product->field_product_image->value();
// Load the product.
$product = commerce_product_load($product_id);
} else {
// for shipping & discount line items
// shipping/discount price
$line_item_price = $line_item_wrapper->commerce_unit_price->amount->value();
// shipping/discount formatted price
$line_item_price = commerce_currency_format($line_item_price, $currency_code);
// line item TYPE display title
$line_ite_type_title = commerce_line_item_type_get_name($line_item_wrapper->type->value());
// for shipping line items
if ($line_item_wrapper->type->value() == "shipping") {
// shipping data
$shipping_data = $line_item_wrapper->value()->data;
// shipping method display title
$line_item_title = $shipping_data['shipping_service']['title'];
}
if ($line_item_wrapper->type->value() == 'commerce_discount') {
// for discount line items
// get discount display title (I suspect there might be a better way than this)
$discount_data = $line_item_wrapper->commerce_unit_price->data->value();
foreach ($discount_data['components'] as $key => $component) {
if (!empty($component['price']['data']['discount_component_title'])) {
$line_item_title = $component['price']['data']['discount_component_title'];
}
}
}
}
}
// Product.
$product_wrapper = entity_metadata_wrapper('commerce_product', $product);
// Product Price.
$price_amount = $product_wrapper>commerce_price->amount->value();
$product_wrapper>commerce_price->amount->set($new_price);
// Stock
$product_wrapper->commerce_stock_override->value()
$product_wrapper->commerce_stock->value()

 

Hämta all betalningsinformation till ordern

$payments = commerce_payment_transaction_load_multiple(array(), array('order_id' =>  $order_wrapper->order_id->value()));

 

 

 

Kategorier: