Diseño Web y Formación en Drupal E-duca.eu
Asociación de Apoyo al Desarrollo Web con Drupal ubicada en Madrid
Inicio de sesión
Aprende Drupal
Suscríbete para recibir por email el nuevo contenido de Aprende Drupal con E-duca.eu.
Disfrutarás aprendiendo Drupal.
ubercart
Cómo copiar una orden (pedido) de ubercart desde otra existente, para Drupal 6
Enviado por e-duca el 19 Junio 2011 - 1:33am.
Usaremos el siguiente código que nos mostrará un formulario donde nos pide la orden origen que copiaremos. Este código podemos tener guardado en una página de Drupal.
El script nos generará una nueva orden con el último número de orden disponible y todos los datos incluidos los productos que tuviera la orden original, el estado lo deja como pendiente pero puede ser variado facilmente, así como particular el código para cada caso.
Muy útil para no tener que crear ordenes desde cero y aprovechar ordenes que ya tenemos creadas para crear la nueva. Por ejemplo en el caso de ordenes que se necesitan crear periódicamente y que serán exactamente iguales que la anterior.
El ejemplo nos sirve muy bien para ver como podemos usar php para personalizar el funcionamiento de nuestro sitio Drupal o hacer rápidas tareas de administración.
<form method="post">
<input type="text" name="order_id">
<input type="submit">
</form>
<?php
if(isset($_POST['order_id'])){
$order_id = $_POST['order_id'];
$order = uc_order_load($order_id);
if($order)
{
//create new order in db
$new_order = uc_order_new($order->uid);
//hack in the products for the new order
$i=0;
foreach($order->products as $product) {
$insert = new StdClass();
uc_order_product_save($new_order->order_id, $insert);
$order->products[$i]->order_product_id = $insert->order_product_id;
$order->products[$i]->order_id = $new_order->order_id;
uc_order_product_save($new_order->order_id, $order->products[$i]);
$i++;
}
//hack in the line items for the new order
$i=0;
foreach($order->line_items as $line_item) {
if($i!=0){
uc_order_line_item_add($new_order->order_id,$order->line_items[$i]->type,$order->line_items[$i]->title,$order->line_items[$i]->amount,$order->line_items[$i]->weight);
$order->line_items[$i]->line_item_id = mysql_insert_id();
}
$i++;
}
$order->order_id = $new_order->order_id;
$order->order_status = "in_checkout";
//save newly created order
uc_order_save($order);
//Now charge the card
//uc_cim_charge($new_order->order_id, $order->order_total);
$order = uc_order_load($new_order->order_id);
//update the status
$order->order_status = "pending";
uc_order_save($order);
echo
"<p>Order <strong>".$order->order_id."</strong> created as a duplicate of <strong>$order_id</strong><br/></p>";
echo "<pre style='font-size:10px;'>";
var_dump($order);
echo "</pre>";
} else {
echo "could not load previous order details";
}
}
?>