djmortis Posted May 12, 2016 Share Posted May 12, 2016 Buenos días, estoy buscando información y no encuentro nada en ningún lado. Quiero poner en el panel de administración (no accesible para el cliente) dos campos en los pedidos con un select 0/1, he encontrado como añadir campos en los productos, en el registro de clientes... pero no he encontrado nada acerca de como añadir campos en un pedido. ¿Alguna información al respecto? Gracias a todos. Link to comment Share on other sites More sharing options...
djmortis Posted May 12, 2016 Author Share Posted May 12, 2016 Ok ya me lo creo, pero en modo texto pero lo que quiero es añadir un Select con SI o No. ¿Alguna idea? Esto es lo que tengo ahora y funciona, pero para añadir texto como nota interna: creo una tabla: ALTER TABLE `ps_orders` ADD `nota_interna` VARCHAR( 1000 ) NULL DEFAULT ''; En Order.php en \override\classes\order añado lo siguiente: public $nota_interna; public function __construct($id = null, $id_lang = null) { self::$definition['fields']['nota_interna'] = array('type' => self::TYPE_STRING); parent::__construct($id,$id_lang); } En tu_carpeta_admin\themes\default\template\controllers\orders\helpers\view\view.tpl añado: {* egp mod nueva seccion - Incidencia*} <div id="incidencia_order_panel" class="panel hidden-print" style="height: 205px;"> <div class="panel-heading"> <i class="icon-file-text"></i> {l s="Nota interna pedido"} </div> <form action="{$currentIndex|escape:'html':'UTF-8'}&vieworder&token={$smarty.get.token}" method="post"> <div class="form-group"> <label class="control-label col-lg-2"> <span class="label-tooltip" data-toggle="tooltip" title="{l s='Incidencia'}"> {l s='Incidencia'} </span> </label> <div class="col-lg-10" style="height: 120px;" > <textarea class="textarea-autosize" maxlength="800" rows="5" cols="20" name="nota_interna" >{if isset($smarty.post.nota_interna)}{$smarty.post.nota_interna}{else}{$order->nota_interna}{/if}</textarea> <input type="hidden" name="id_order" value="{$order->id}" /> </div> </div> <button name="submitNotaInterna" class="btn btn-primary pull-right" id="submitNotaInterna" type="submit"> {l s='Guardar'} </button> </form> </div> {* egp mod fin*} Y para finalizar y que guarde todo en AdminOrdersController.php añadimos a la funcion public function postProcess() parent::postProcess(); $order = new Order(Tools::getValue('id_order')); if (Tools::isSubmit('submitNotaInterna') && isset($order)) //gestión nota interna { $nota_interna=Tools::getValue('nota_interna',''); $res =false; $valid=true;//dejamos preparado por si hay que validar alguna cosa if(!$valid){ $this->errors[] = Tools::displayError('Error de formato'); }else{ $order->nota_interna=$nota_interna; $res = $order->update(); } if ($res) Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); else $this->errors[] = Tools::displayError('Un error ha pasado al guardar la nota interna'); } Link to comment Share on other sites More sharing options...
djmortis Posted May 12, 2016 Author Share Posted May 12, 2016 Bueno, ya me sale el desplegable, pero no guarda la información de los INT, el campo de texto si que me guarda bien la información. En los dos campos con el Select, me sale bien el desplegable pero no guarda la información en la base de datos. A ver si me podéis ayudar, por favor, ya no se donde estoy metiendo la pata :S He añadido esto en override/caslles/order/Order.php class Order extends OrderCore { public $nota_interna; public $order_source; public function __construct($id = null, $id_lang = null) { self::$definition['fields']['nota_interna'] = array('type' => self::TYPE_STRING); self::$definition['fields']['zona_canarias'] = array('type' => self::TYPE_INT); self::$definition['fields']['factura_individual'] = array('type' => self::TYPE_INT); parent::__construct($id,$id_lang); } En admin/themes/default/template/controllers/orders/helpers/view/view.tpl {* egp mod nueva seccion - Incidencia*} <div id="incidencia_order_panel" class="panel hidden-print" style="height: 205px;"> <div class="panel-heading"> <i class="icon-file-text"></i> {l s="Nota interna pedido"} </div> <form action="{$currentIndex|escape:'html':'UTF-8'}&vieworder&token={$smarty.get.token}" method="post"> <div class="form-group"> <label class="control-label col-lg-2"> <span class="label-tooltip" data-toggle="tooltip" title="{l s='Incidencia'}"> {l s='Incidencia'} </span> </label> <div class="col-lg-10" style="height: 120px;" > <textarea class="textarea-autosize" maxlength="800" rows="5" cols="20" name="nota_interna" >{if isset($smarty.post.nota_interna)}{$smarty.post.nota_interna}{else}{$order->nota_interna}{/if}</textarea> <input type="hidden" name="id_order" value="{$order->id}" /> </div> </div> <button name="submitNotaInterna" class="btn btn-primary pull-right" id="submitNotaInterna" type="submit"> {l s='Guardar'} </button> </form> </div> {* egp mod fin*} {* egp mod nueva seccion - Factura Individual*} <div id="incidencia_order_panel" class="panel hidden-print" style="height: 205px;"> <div class="panel-heading"> <i class="icon-file-text"></i> {l s="Factura Individual"} </div> <form action="{$currentIndex|escape:'html':'UTF-8'}&vieworder&token={$smarty.get.token}" method="post"> <div class="form-group"> <label class="control-label col-lg-2"> <span class="label-tooltip" data-toggle="tooltip" title="{l s='Selecionar'}"> {l s='Seleccionar'} </span> </label> <div class="col-lg-10" style="height: 120px;" > <label class="control-label col-lg-3">Normal / Individual</label> <select name="order_source" id="order_source"> <option value="0" {if isset($smarty.post.factura_individual) && $smarty.post.factura_individual == 1}selected="selected"{/if}>Normal</option> <option value="1" {if isset($smarty.post.factura_individual) && $smarty.post.factura_individual == 2}selected="selected"{/if}>Individual</option> </select> <input type="hidden" name="id_order" value="{$order->id}" /> </div> </div> <button name="submitFacturaIndividual" class="btn btn-primary pull-right" id="submitFacturaIndividual" type="submit"> {l s='Guardar'} </button> </form> </div> {* egp mod fin*} {* egp mod nueva seccion - Canarias*} <div id="incidencia_order_panel" class="panel hidden-print" style="height: 205px;"> <div class="panel-heading"> <i class="icon-file-text"></i> {l s="Zona Canarias"} </div> <form action="{$currentIndex|escape:'html':'UTF-8'}&vieworder&token={$smarty.get.token}" method="post"> <div class="form-group"> <label class="control-label col-lg-2"> <span class="label-tooltip" data-toggle="tooltip" title="{l s='Incidencia'}"> {l s='Seleccionar'} </span> </label> <div class="col-lg-10" style="height: 120px;" > <label class="control-label col-lg-3">No Canarias / Si Canarias</label> <select name="order_source" id="order_source"> <option value="0" {if isset($smarty.post.zona_canarias) && $smarty.post.zona_canarias == 1}selected="selected"{/if}>Normal</option> <option value="1" {if isset($smarty.post.zona_canarias) && $smarty.post.zona_canarias == 2}selected="selected"{/if}>Canrias</option> </select> <input type="hidden" name="id_order" value="{$order->id}" /> </div> </div> <button name="submitZonaCanarias" class="btn btn-primary pull-right" id="submitZonaCanarias" type="submit"> {l s='Guardar'} </button> </form> </div> {* egp mod fin*} Y para finalizar, en controllers/admin/AdminOrdersController.php public function postProcess() { parent::postProcess(); $order = new Order(Tools::getValue('id_order')); if (Tools::isSubmit('submitNotaInterna') && isset($order)) //gestión nota interna { $nota_interna=Tools::getValue('nota_interna',''); $res =false; $valid=true;//dejamos preparado por si hay que validar alguna cosa if(!$valid){ $this->errors[] = Tools::displayError('Error de formato'); }else{ $order->nota_interna=$nota_interna; $res = $order->update(); } if ($res) Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); else $this->errors[] = Tools::displayError('Un error ha pasado al guardar la nota interna'); } $order = new Order(Tools::getValue('id_order')); if (Tools::isSubmit('submitFacturaIndividual') && isset($order)) //gestión nota interna { $factura_individual=Tools::getValue('factura_individual',''); $res =false; $valid=true;//dejamos preparado por si hay que validar alguna cosa if(!$valid){ $this->errors[] = Tools::displayError('Error de formato'); }else{ $order->factura_individual=$factura_individual; $res = $order->update(); } if ($res) Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); else $this->errors[] = Tools::displayError('Un error ha pasado al guardar el tipo de factura'); } $order = new Order(Tools::getValue('id_order')); if (Tools::isSubmit('submitZonaCanarias') && isset($order)) //gestión nota interna { $zona_canarias=Tools::getValue('zona_canarias',''); $res =false; $valid=true;//dejamos preparado por si hay que validar alguna cosa if(!$valid){ $this->errors[] = Tools::displayError('Error de formato'); }else{ $order->zona_canarias=$zona_canarias; $res = $order->update(); } if ($res) Tools::redirectAdmin(self::$currentIndex.'&id_order='.$order->id.'&vieworder&conf=4&token='.$this->token); else $this->errors[] = Tools::displayError('Un error ha pasado al guardar el estado en Zona Canarias'); } 1 Link to comment Share on other sites More sharing options...
djmortis Posted May 12, 2016 Author Share Posted May 12, 2016 Bueno, ya lo he solucionado. Link to comment Share on other sites More sharing options...
ideaindividual Posted February 24, 2021 Share Posted February 24, 2021 (edited) Sorry, la solucion esta bien, esta perfecto el codigo. Solo que como no soy programador, no entendía la lógica de que había que utilizar el código debajo de parent::postProcess(); en AdminOrdersController.php. Lo estaba colocando al iniciar public function postProcess() y por eso no me guardaba. Edited February 25, 2021 by ideaindividual Correcion (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now