• Resolvido lucaspalencia

    (@lucaspalencia)


    Tenho um e-commerce no qual funciona como compra programada, no checkout o usuário escolhe a data de entrega e o plano: 3 / 6 / 9 meses.

    Para deixar isso mais simples na parte do admin, pensei em após o usuário finalizar a compra, uma função gerar a quantidade de pedidos que o usuário selecionou conforme o plano, só alterando a data destes pedidos para o dia selecionado + o mês do plano.

    Dei uma pesquisada e vi sobre o wc_create_order(), mas não consegui utilizá-lo pois estou usando o Woocommerce 2.1, e pelo que vi esta função só existe a partir do 2.2.

    Alguma sugestão? Melhor solução é utilizar a wc_create_order mesmo?

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Moderador Claudio Sanches

    (@claudiosanches)

    Primeiro de tudo recomendo você atualizar e sempre utilizar a última versão do WooCommerce.
    Até mesmo porque fica complicado encontrar suporte e fazer coisas nas versões antigas e desatualizadas.

    Criador do tópico lucaspalencia

    (@lucaspalencia)

    Atualizei o woocommerce para o 2.2

    <?php
    /**
     * Create custom order
     **/
    function create_custom_order($orderid) {
    
    	$origin_order = new WC_Order($orderid);
    
    	//create order args
    	$args =  array(
            'status'        => 'on-hold',
        );
    
    	//order address
    	$address = array(
            'first_name' => $origin_order->billing_first_name,
            'email'      => $origin_order->billing_email,
            'phone'      => $origin_order->billing_phone,
            'address_1'  => $origin_order->billing_address_1,
            'city'       => $origin_order->billing_city,
            'state'      => $origin_order->billing_state,
            'postcode'   => $origin_order->billing_postcode,
            'country'    => 'BR'
        );
    
    	//plan by user
        $plan = $origin_order->billing_plano;
    
        //order date
        $origin_date = $origin_order->post->post_date;
    
        //create order repeater
        for ($i=0; $i < $plan; $i++) { 
    
        	//create new order
        	$order = wc_create_order($args);
    
        	//new date
        	$new_date = date('Y-m-d H:i:s',strtotime($origin_date . '+'. $i .' months'));
    		$custom_date = array(
    	      'ID'       => $order->id,
    	      'post_date' => $new_date
    	  	);
    
    	    //get items origin order
    	    $orderitems = $origin_order->get_items();
    
    		//new order add products
    		foreach ($orderitems as $item ) {
    			$productitem = apply_filters( 'woocommerce_order_item_product', $origin_order->get_product_from_item( $item ), $item );
    			$idproduct = $productitem->parent->id;
    			$order->add_product( get_product( ''.$idproduct.'' ), $item['qty'] );
    		}
    
    	    //update new order address
    	    $order->set_address( $address, 'billing' );
    
    	    //update new order shipping
    	    $order->calculate_shipping();
    
    	    //update new order totals
    	    $order->calculate_totals();
    
    	    //update new order date
    	    wp_update_post($custom_date);
        }
    }
    
    ?>

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • O tópico ‘[Woocommerce] Criar pedido customizado’ está fechado para novas respostas.