Dratf.php (lo he medio adaptado del tuyo de product.php) erp->search('sale.order',$data,0,$limit); return $search; } /* * OBTENER Orden POR ID * $ids es un array, se tiene que indicar todas las órdenes que se necesitan según por su id. * $fields también es un array pero es opcional, se puede indicar los campos necesarios que se requiere por cada llamada. * Si no se indica el $fields, devolverá todos los campos de la orden, * esto significaría una conexión más lenta si las órdenes fueran muchas. */ public function read($ids,$fields = array()) { if (is_array($ids) && count($ids) > 0) { $details = $this->erp->read('sale.order', $ids, $fields); return $details; } return false; } /* * CREAR Orden de venta en estado Draft * $data son los parámetros necesarios para registrar una órden, normalmente son los mismos parámetros que * la función READ te muestra. Con la diferencia, que no es necesario la ID y algunos campos con opcionales. Devuelve la id de la órden que se creó. */ public function create($data) { $create = $this->erp->create('sale.order', $data); return $create; } /* * ACTUALIZAR Orden * $id es un número entero existente de una orden del OpenERP * $data son los parámetros necesarios para actualizar la órden, normalmente son los mismos parámetros que * la función READ te muestra. Sin indicar la ID de la órden aquí. */ public function write($id, $fields = array()) { $details = $this->erp->write('sale.order', array($id), $fields); return $details[0]; } } class DraftLines extends Sales { public function create($data) { $create = $this->erp->create('sale.order.line', $data); return $create; } } ##################333 My script.php (De momento va a medias, la función de crear las órdenes se lanza en el momento de acceder al php, no al dar al boton SCTV-PUSH-MOTOSCOOT addAttributeToSelect('*') ->addFieldToFilter('status', array("in" => array( 'complete', 'closed', 'pending',) )) ->addAttributeToFilter('store_id', Mage::app()->getStore()->getId()) ->addAttributeToSort('created_at', 'desc') ->load(); foreach($orders as $order): echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $items = $order->getAllVisibleItems(); foreach($items as $i): echo ''; echo ''; endforeach; echo ''; echo ''; echo '
'.$order->getIncrementId().''.$order->getstate().''.$order->getstatus().''.$order->getcustomer_firstname().''.$order->getcustomer_lastname().''.$order->getcustomer_email().'
'; echo '
'.$i->getSku(). '/' .$i->getname().''.$i->getqty_ordered().'
'; echo '
'; endforeach; /* Openerp Functions */ function pushorder(){ $orders = Mage::getResourceModel('sales/order_collection') ->addAttributeToSelect('*') ->addFieldToFilter('status', array("in" => array( 'complete', 'closed', 'pending',) )) ->addAttributeToFilter('store_id', Mage::app()->getStore()->getId()) ->addAttributeToSort('created_at', 'desc') ->load(); # For each Order, create new one and push all products in sale line foreach($orders as $order): # Create Basic Order $saleorder=array( 'partner_id'=>'4932', /* SCTV*/ 'partner_invoice_id'=>'4933', /*Julian*/ 'partner_shipping_id'=>'4932', /*SCTV*/ 'shop_id' =>'1', 'pricelist_id' =>'4', ); $orderid = new Draft(USERNAME, PASSWORD, DATABASE, SERVER); $result = $orderid->create($saleorder); ## Get Sale_id and fill with products ## get product_fields(name) by id $product = new Product(USERNAME, PASSWORD, DATABASE, SERVER); $items = $order->getAllVisibleItems(); foreach($items as $i): $sku = $i->getSku(); # get product_id/Name from Openerp $prod_id = $product->search(array(array('default_code','like', $sku))); $prod_inf = $product->read(array($prod_id),array('pvp_fabricante','name','id','list_price')); $qty = $i->getqty_ordered(); $salelines =array( 'order_id' => $result, /*Order in wich I want intro multiple lines */ 'product_uom_qty'=> $qty, /*Qty from magento*/ 'product_id'=>$prod_inf[0]['id'], /*product_id in Openerp*/ 'price_unit'=>(float)$prod_inf[0]['list_price'], /*Si no informo el producto queda sin precio pero debe ser el precio /*que me debe calcular la tarifa asignada a ese cliente*/ 'name'=> $prod_inf[0]['name'], ); $orderlines = new DraftLines(USERNAME, PASSWORD, DATABASE, SERVER); $resultlines = $orderlines->create($salelines); endforeach; endforeach; } ?>