Meta dáta objednávky

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>';
        }
}
meta data

Ú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();
                        //}
                // }
               
            }




        }
    }
}; 

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *