Eutanasio Posted August 15, 2015 Share Posted August 15, 2015 (edited) Hola, Quisiera duplicar para tener lo mismo que es la nota privada de cada cliente, para anotar saldo en cuenta cliente y que éste se muestre a su vez al cliente en my-account.tpl. He creado la nueva tabla en ps_customer. Luego he ido a root>admin>themes>default>template>controllers>orders>helpers>view>view.tpl y he duplicado el fragmento de código correspondiente a Nota Privada cambiando donde pone "Note" por el nombre de la nueva tabla creado en la BD, en este caso "Saldo": <!-- SALDO CLIENTE --> <div class="panel panel-sm"> <div class="panel-heading"> <i class="icon-eye-slash"></i> {l s='Solde compte client'} </div> <form id="customer_saldo" class="form-horizontal" action="ajax.php" method="post" onsubmit="saveCustomerSaldo({$customer->id});return false;" > <div class="form-group"> <div class="col-lg-12"> <textarea name="saldo" id="saldoContent" style="color: #ff0000; font-weight: bold;" class="textarea-autosize" onkeyup="$(this).val().length > 0 ? $('#submitCustomerSaldo').removeAttr('disabled') : $('#submitCustomerSaldo').attr('disabled', 'disabled')">{$customer->saldo}</textarea> </div> </div> <div class="row"> <div class="col-lg-12"> <button type="submit" id="submitCustomerSaldo" class="btn btn-default pull-right" disabled="disabled" /> <i class="icon-save"></i> {l s='Save'} </button> </div> </div> <span id="saldo_feedback"></span> </form> </div> <!-- FIN SALDO CLIENTE --> Pero habiendo duplicado esto, creando la nueva tabla en la BD e imitado lo que hay de "Note" en (controllers/admin/AdminCustomerControllers.php), no ha funcionado, ya que aunque se muestra en el admin el formulario, no se guarda carga una página en blanco http://www.miweb.com/admin/ajax.phpAlguien sabría aconsejarme para solucionar este problema? hacer que funcione este nuevo campo y cómo hacer llamada a este dato para publicarlo en el front en my-account.tpl. Gracias! Edited August 15, 2015 by omar2886 (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2015 Share Posted August 16, 2015 Tienes que añadirlo en el Classes/Customer.php Al inicio /** @var string protected note */ public $saldo; Y luego en el array 'saldo' => array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false), Link to comment Share on other sites More sharing options...
Eutanasio Posted August 16, 2015 Author Share Posted August 16, 2015 Gracias por la ayuda @Ventura. Lo he hecho y nada, sigue igual, no guarda y me carga la página esa en blanco de ajax.php Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2015 Share Posted August 16, 2015 Claro es que tienes que añadir tambien en el AdminCustomerController.php o en algun controlador, algo asi $this->tpl_view_vars = array( // <-- En esta parte 'saldo' => Tools::htmlentitiesUTF8($customer->saldo), Y luego esto para actualizar en ajax public function ajaxProcessUpdateCustomerSaldo() { if ($this->tabAccess['edit'] === '1') { $saldo = Tools::htmlentitiesDecodeUTF8(Tools::getValue('saldo')); $customer = new Customer((int)Tools::getValue('id_customer')); if (!Validate::isLoadedObject($customer)) die ('error:update'); if (!empty($saldo) && !Validate::isCleanHtml($saldo)) die ('error:validation'); $customer->saldo= $saldo; if (!$customer->update()) die ('error:update'); die('ok'); } } Link to comment Share on other sites More sharing options...
Eutanasio Posted August 16, 2015 Author Share Posted August 16, 2015 (edited) Sí efectivamente así es como lo tengo modificado allí también.Cuando inserto por ejemplo algún dato a través de PhpMyadmin en el campo "saldo" de un cliente, se puede ver perfectamente en el admin, por que está bien todo, simplemente que no se guarda editando desde el Back Office.Y otra cosa, cómo hago que aparezca en el front? he probado con {$cookie->saldo} pero no va. Gracias! Edited August 16, 2015 by omar2886 (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2015 Share Posted August 16, 2015 (edited) Luego en \js\admin.js Tienes que añadir esto, revisalo que ahi esta el problema function saveCustomerSaldo(customerId){ var saldoContent = $('#saldoContent').val(); var data = 'token=' + token_admin_customers + '&tab=AdminCustomers&ajax=1&action=updateCustomerSaldo&id_customer=' + customerId + '&saldo=' + encodeURIComponent(saldoContent); $.ajax({ type: "POST", url: "index.php", data: data, async : true, success: function(r) { if (r == 'ok') { $('#submitCustomerSaldo').attr('disabled', true); } showSuccessMessage(update_success_msg); } }); } Edited August 16, 2015 by ventura (see edit history) 1 Link to comment Share on other sites More sharing options...
Eutanasio Posted August 16, 2015 Author Share Posted August 16, 2015 (edited) Es un milagro! muchísimas gracias @Ventura! creo que es una funcionalidad relativamente facil de implementar ahora que lo has aclarado y que es de gran utilidad.cómo puedo hacer para imprimir el contenido de este campo "saldo" en my-account.tpl para que el cliente lo vea desde su cuenta en el front? intenté usar esto que hice para mostrar el ID de cliente {$cookie->saldo} y {$smarty.post.saldo} pero no vale para el campo "saldo" al parecer ya que no debe estar en la cookie. Muchas gracias! Edited August 16, 2015 by omar2886 (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2015 Share Posted August 16, 2015 Añade en el controllers\front\MyAccountController.php en la parte de $this->context->smarty->assign(array( esto 'saldo' => $this->context->customer->saldo asegurate de poner la coma al final de la linea anterior Y en el .tpl {$saldo} 1 Link to comment Share on other sites More sharing options...
Eutanasio Posted August 16, 2015 Author Share Posted August 16, 2015 Muchísimas gracias de nuevo! ya está todo a pedir de boca! Link to comment Share on other sites More sharing options...
ventura Posted August 16, 2015 Share Posted August 16, 2015 de nada. Me alegro de que haya ido todo bien Un saludo 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