Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Dratf.php (lo he medio adaptado del tuyo de product.php)
- <?php
- namespace OpenErp\Modules\Sales;
- class Draft extends Sales
- {
- /*
- * BUSCAR Orden
- * $data es un array que debe contener todas las condiciones necesarias que el producto debe cumplir para obtener su ID.
- * Las condiciones pueden expresarse con un "=", "!=" o un "like" en un array con 3 valores: campo, tipo de condición y valor
- * Por ejemplo: $data = array(array('email','like','%@correo.com'),array('is_company','=',1));
- */
- public function search($data)
- {
- $limit = 2000;
- $search = $this->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
- <?php
- /* Magento*/
- require_once 'app/Mage.php';
- Mage::app();
- umask(0);
- /* Libraries*/
- require_once 'vendor/autoload.php';
- require_once 'connector/config.php';
- use OpenErp\Modules\Sales\Draft;
- use OpenErp\Modules\Sales\DraftLines;
- use OpenErp\Modules\Sales\Product;
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>SCTV-PUSH-MOTOSCOOT</title>
- <meta http-equiv="content-type" content="text/html;charset=utf-8" />
- <meta name="generator" content="Geany 1.23.1" />
- <style>
- td {
- border:1px solid black;
- }
- </style>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
- <script type="text/javascript">
- function call_php()
- {
- var result="<?php pushorder();?>";
- alert (result);
- return false;
- }
- </script>
- </head>
- <body>
- <?
- $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 '<table>';
- echo '<tr>';
- echo '<td>'.$order->getIncrementId().'</td>';
- echo '<td>'.$order->getstate().'</td>';
- echo '<td>'.$order->getstatus().'</td>';
- echo '<td>'.$order->getcustomer_firstname().'</td>';
- echo '<td>'.$order->getcustomer_lastname().'</td>';
- echo '<td>'.$order->getcustomer_email().'</td>';
- echo '<td>
- <form method="get">
- <input type="button" onclick="call_php" value="Push Order">
- </form>
- </td>';
- echo '<td>';
- echo '<tr>';
- $items = $order->getAllVisibleItems();
- foreach($items as $i):
- echo '<td>'.$i->getSku(). '/' .$i->getname().'</td>';
- echo '<td>'.$i->getqty_ordered().'</td>';
- endforeach;
- echo '</tr>';
- echo '</td>';
- echo '</table>';
- echo '</br>';
- 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;
- }
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement