Jump to content

Añadir un campo en pedidos.


djmortis

Recommended Posts

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

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

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');
		}
		
		
  • Like 1
Link to comment
Share on other sites

  • 4 years later...

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 by ideaindividual
Correcion (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...