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
$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();
foreach($orders as $order):
echo '';
echo '';
echo '| '.$order->getIncrementId().' | ';
echo ''.$order->getstate().' | ';
echo ''.$order->getstatus().' | ';
echo ''.$order->getcustomer_firstname().' | ';
echo ''.$order->getcustomer_lastname().' | ';
echo ''.$order->getcustomer_email().' | ';
echo '
| ';
echo '';
echo ' |
';
$items = $order->getAllVisibleItems();
foreach($items as $i):
echo '| '.$i->getSku(). '/' .$i->getname().' | ';
echo ''.$i->getqty_ordered().' | ';
endforeach;
echo '
';
echo '';
echo '
';
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;
}
?>