Pridanie metadát objednávke (2 spôsoby):
add_action('woocommerce_checkout_update_order_meta',function( $order_id, $posted ) {
$order = wc_get_order( $order_id );
$order->update_meta_data( 'pocet_skladom', '333' );
$order->save();
} , 10, 2);
add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);
function before_checkout_create_order( $order, $data ) {
$order->update_meta_data( '_pocet_skladom2', '4444' );
}
Pridanie meta dát produktom v objednávke
function add_order_item_meta($item_id, $values) {
$key = 'key'; // Define your key here
$value = 'value'; // Get your value here
woocommerce_add_order_item_meta($item_id, $key, $value);
}
add_action('woocommerce_add_order_item_meta', 'add_order_item_meta', 9, 2);
Zobrazi objednávku na single page produktu:
add_action( 'woocommerce_single_product_summary', 'zobraz_objednavku', 11);
function zobraz_objednavku( ) {
$order = wc_get_order(23395);
$datum = $order->get_date_created();
// $order_id = $order->get_id(); // Get the order ID
// $parent_id = $order->get_parent_id(); // Get the parent order ID (for subscriptions…)
// $user_id = $order->get_user_id(); // Get the costumer ID
// $user = $order->get_user(); // Get the WP_User object
$order_status = $order->get_status(); // Get the order status
// $currency = $order->get_currency(); // Get the currency used
// $payment_method = $order->get_payment_method(); // Get the payment method ID
// $payment_title = $order->get_payment_method_title(); // Get the payment method title
// $date_created = $order->get_date_created(); // Get date created (WC_DateTime object)
// $date_modified = $order->get_date_modified(); // Get date modified (WC_DateTime object)
echo 'order status: ' . $order_status ;
echo '<br> datum: ' . wc_format_datetime($datum, 'd-m-Y H:i:s:');
echo '<pre>';
//print_r($order);
print_r($order->get_meta('_pocet_skladom2'));
echo '</pre>';
$items = $order->get_items();
foreach ( $items as $item ) {
// if ( $item['product_id'] > 0 ) {
$product = $order->get_product_from_item( $item );
//$product_id = $item['product_id'];
$product_name = $product->get_name();
$stock_quantity = $product->get_stock_quantity();
$status = $product->get_stock_status();
echo '<pre>';
print_r($item->get_meta('Backordered'));
//print_r($item->get_meta('_woo_custom_stock_status_email_txt'));
echo '</pre>';
}
}
Úprava skladu pri zrušení objednávky
// add_action( 'woocommerce_order_status_processing_to_cancelled', 'action_woocommerce_cancelled_order', 10, 1 );
// add_action( 'woocommerce_order_status_completed_to_cancelled', 'action_woocommerce_cancelled_order', 10, 1 );
// add_action( 'woocommerce_order_status_on-hold_to_cancelled', 'action_woocommerce_cancelled_order', 10, 1 );
add_action( 'woocommerce_order_status_cancelled', 'action_woocommerce_cancelled_order', 21, 1 );
function action_woocommerce_cancelled_order( $order_id ) {
$order = wc_get_order( $order_id );
//$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
if ( $item['product_id'] > 0 ) {
$status_stav = $item->get_meta('_woo_custom_stock_status_email_txt');
if ($item->get_meta('Backordered') > 0 ){
//if($status_stav == 'Na objednávku u dodavatele (expedice do 5-10 dnů)'){
$doobjednat = $item->get_meta('Backordered');
$product = $order->get_product_from_item( $item );
$product_id = $item['product_id'];
$product_name = $product->get_name();
$stock_quantity = $product->get_stock_quantity();
// $status = $product->get_stock_status();
// if($stock_quantity>0){
// save stock
$sklad_po_zmene = $stock_quantity - $doobjednat;
$product_shop = new WC_Product( $product_id );
$product_shop->set_stock_quantity($sklad_po_zmene );
$product_shop->save();
// Add the note
$note = $product_name. ' - úroveň zásob zmnená na z poctu: ' . $stock_quantity . ' na : -> ' . $sklad_po_zmene ;
$order->add_order_note( $note );
$order->save();
//}
// }
}
}
}
};