pepitofgg 6 Posted May 16, 2014 En algunos apartados del back office echaba de menos que las tablas presentaran ciertosdatos extra, para que el trabajo resulte más cómodo. Por ejemplo, en la tabla de productos,para mí es útil tener a la vista el peso de cada producto; o en la tabla de pedidos,saber qué transportista ha elegido el cliente para cada pedido.Igualmente, en algunos apartados se presentan datos que, al menos en mi caso, son irrelevantes.Por ejemplo, en la tabla de clientes, a mí no me sirve para nada la columna de edad.Así que he hecho algunos cambios para que las tablas me resulten más útiles, y por sia alguien le interesa, dejo aquí las instrucciones. Además, como puede verse no es demasiadocomplicado, y puede servir como guía para quien quiera hacer sus propios cambios.Lo he hecho sobre Prestashop 1.5.4.1, pero supongo que no será difícil adaptarlo aotras versiones.Quede claro que mis conocimientos de programación php son muy básicos, así que es másque probable que esto se pueda hacer mucho mejor. Lo que sí es cierto es que como yolo he hecho, funciona perfectamente.En este sentido, probablemente se podrían haber hecho los cambios utilizando overrides.Yo lo intenté y me encontré con algunos problemas, así que descarté este método (además,no creo demasiado en las supuestas ventajas de usar overrides). En cualquier caso, animoa que algún programador más experto lo haga, y publique la solución. Un par de notas importantes:1º. Antes de hacer cualquier cambio en un fichero, guardad copia del fichero con otronombre (por ejemplo añadiéndole ".old"), por si hubiera que volver atrás.2º. Después de modificar ficheros, para que los cambios tengan efecto, es necesarioborrar la cache de Prestashop, para forzarlo a que tome los nuevos ficheros. Para ello,hay que hacer lo siguiente:a) Eliminar todos los ficheros menos index.php, y todas las sub carpetas, en las carpetas: - /cache/smarty/compile - /cache/smarty/cache - /img/tmp Eliminar el fichero /cache/class_index.phpc) Refrescar la página en el navegador (pulsando F5).En los siguientes 5 posts pongo cada una de las modificaciones que he hecho. Espero que os sean útiles. Share this post Link to post Share on other sites
pepitofgg 6 Posted May 16, 2014 1º. Añadir una columna con el peso de cada producto a la tabla "Catálogo - Productos".a) El primer fichero que hay que modificar es "/controllers/admin/AdminProductsController.php", para añadir la columna de peso de cada producto. Aproximadamente en la línea 244 tendremos algo así: ... $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'width' => 90, 'type' => 'price', 'align' => 'right', 'havingFilter' => true, 'orderby' => false ); $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'width' => 90, 'align' => 'right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'hint' => $this->l('This is the quantity available in the current shop/group.'), ); ... Tenemos que insertar el código necesario para que muestre la columna de peso. Debe quedar así: ... $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'width' => 90, 'type' => 'price', 'align' => 'right', 'havingFilter' => true, 'orderby' => false ); /* AÑADIDO PARA QUE PRESENTE UNA COLUMNA CON EL PESO */ $this->fields_list['weight'] = array( 'title' => $this->l('Weight'), 'width' => 90, 'type' => 'weight_kg', //tipo añadido en /classes/helper/HelperList.php 'align' => 'right', 'havingFilter' => true, 'orderby' => true ); /* /AÑADIDO PARA QUE PRESENTE UNA COLUMNA CON EL PESO */ $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'width' => 90, 'align' => 'right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'hint' => $this->l('This is the quantity available in the current shop/group.'), ); ... Con la modificación anterior, ya tendremos una columna con el peso. Sin embargo, éste aparece como un número formateado al estilo inglés (coma para los millares y punto decimal), y sin unidades. Para corregirlo, hay que modificar el fichero "/classes/helper/HelperList.php", para añadir el tipo de dato "weight_kg", que permite presentar el peso en kg con el formato adecuado. En este caso se ha adaptado al formato español, es decir, número con 3 decimales, punto para miles, y coma para decimales, seguido de "kg".Editamos el fichero "/classes/helper/HelperList.php", y aproximadamente en la línea 280 habrá algo parecido a esto: ... elseif (isset($params['type']) && $params['type'] == 'price') { $currency = (isset($params['currency']) && $params['currency']) ? Currency::getCurrencyInstance($tr['id_currency']) : $this->context->currency; $this->_list[$index][$key] = Tools::displayPrice($tr[$key], $currency, false); } elseif (isset($params['type']) && $params['type'] == 'date') $this->_list[$index][$key] = Tools::displayDate($tr[$key], $this->context->language->id); ... Tenemos que insertar un nuevo elseif, de manera que quede así: ... elseif (isset($params['type']) && $params['type'] == 'price') { $currency = (isset($params['currency']) && $params['currency']) ? Currency::getCurrencyInstance($tr['id_currency']) : $this->context->currency; $this->_list[$index][$key] = Tools::displayPrice($tr[$key], $currency, false); } /* AÑADIDO EL TIPO "weight_kg". */ elseif (isset($params['type']) && $params['type'] == 'weight_kg') { $this->_list[$index][$key] = number_format($tr[$key],3,',','.').' kg'; } /* /AÑADIDO EL TIPO "weight_kg". */ elseif (isset($params['type']) && $params['type'] == 'date') $this->_list[$index][$key] = Tools::displayDate($tr[$key], $this->context->language->id); ... Una vez hechos estos cambios hay que borrar la cache de Prestashop y forzarlo a que compile (ver instrucciones en el primer post).Según el tamaño de pantalla utilizado, puede ser necesario retocar los valores 'width' de las distintas columnas, para que las columnas estén a vuestro gusto.Para terminar, hay que ir al menú "Localización - Traducción de mensajes", elegir "Traducciones del panel de administración", elegir idioma español (o el que tengáis configurado para el back office), buscar las traducciones de "AdminProducts", y añadir la traducción de "Weight" = "Peso" (es posible que ya esté), y guardar los cambios. 1 Share this post Link to post Share on other sites
pepitofgg 6 Posted May 16, 2014 2º. Añadir una columna con el transportista, y otra con el peso del pedido, en la tabla "Pedidos".a) El primer fichero que hay que modificar es "/controllers/admin/AdminOrdersController.php", para añadir las columnas de transportista y peso de cada pedido. En este fichero hay que hacer dos modificaciones:Aproximadamente en la línea 43 tendremos algo así: ... $this->_select = ' a.id_currency, a.id_order AS id_pdf, CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, osl.`name` AS `osname`, os.`color`, IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer) > 1, 0, 1) as new'; $this->_join = ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`) LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = a.`current_state`) LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)$this->context->language->id.')'; $this->_orderBy = 'id_order'; $this->_orderWay = 'DESC'; ... Y debe quedar así: ... $this->_select = ' a.id_currency, a.id_order AS id_pdf, CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, /* AÑADIDO */ car.`name` AS `carrier_name`, oc.`weight` AS `weight`, /* /AÑADIDO */ osl.`name` AS `osname`, os.`color`, IF((SELECT COUNT(so.id_order) FROM `'._DB_PREFIX_.'orders` so WHERE so.id_customer = a.id_customer) > 1, 0, 1) as new'; $this->_join = ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = a.`id_customer`) /* AÑADIDO */ LEFT JOIN `'._DB_PREFIX_.'carrier` car ON (car.`id_carrier` = a.`id_carrier`) LEFT JOIN `'._DB_PREFIX_.'order_carrier` oc ON (oc.`id_order` = a.`id_order`) /* /AÑADIDO */ LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = a.`current_state`) LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)$this->context->language->id.')'; $this->_orderBy = 'id_order'; $this->_orderWay = 'DESC'; ... En el mismo fichero, aproximadamente en la línea 98 habrá algo así: ... 'customer' => array( 'title' => $this->l('Customer'), 'havingFilter' => true, ), 'total_paid_tax_incl' => array( 'title' => $this->l('Total'), 'width' => 70, 'align' => 'right', 'prefix' => '<b>', 'suffix' => '</b>', 'type' => 'price', 'currency' => true ), ... Y debe quedar así: ... 'customer' => array( 'title' => $this->l('Customer'), 'havingFilter' => true, ), /* AÑADIDO */ 'carrier_name' => array( 'title' => $this->l('Carrier'), 'width' => 100, 'havingFilter' => true, 'orderby' => true, ), 'weight' => array( 'title' => $this->l('Weight'), 'width' => 70, 'type' => 'weight_kg', //tipo añadido en classes\helper\HelperList.php 'align' => 'right', 'havingFilter' => true, 'orderby' => true, ), /* /AÑADIDO */ 'total_paid_tax_incl' => array( 'title' => $this->l('Total'), 'width' => 70, 'align' => 'right', 'prefix' => '<b>', 'suffix' => '</b>', 'type' => 'price', 'currency' => true ), ... El segundo fichero que hay que cambiar es "/classes/helper/HelperList.php", y la modificación es exactamente la misma que se describe en el punto del post anterior. Si ya se ha hecho antes, no hay que añadir nada más.Una vez hechos estos cambios hay que borrar la cache de Prestashop y forzarlo a que compile (ver instrucciones en el primer post).Según el tamaño de pantalla utilizado, puede ser necesario retocar los valores 'width' de las distintas columnas, para que las columnas estén a vuestro gusto.Para terminar, hay que ir al menú "Localización - Traducción de mensajes", elegir "Traducciones del panel de administración", elegir idioma español (o el que tengáis configurado para el back office), buscar las traducciones de "AdminOrders", y añadir la traducción de "Carrier" = "Transportista" y "Weight" = "Peso" (es posible que alguna ya esté), y guardar los cambios. Share this post Link to post Share on other sites
pepitofgg 6 Posted May 16, 2014 3º. Eliminar la columna de edad y añadir una columna con el grupo al que pertenece cada cliente, en la tabla "Clientes".Para consegirlo, hay que editar el fichero /controllers/admin/AdminCustomersController.php y hacer las siguientes modificaciones:Aproximadamente en la línea 54 tenemos: ... $this->default_form_language = $this->context->language->id; $genders = array(); $genders_icon = array(); ... Y debe quedar así: ... $this->default_form_language = $this->context->language->id; /* AÑADIDO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ $groups = Group::getGroups($this->context->language->id); foreach ($groups as $group) $this->groups_array[$group['id_group']] = $group['name']; /* /AÑADIDO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ $genders = array(); $genders_icon = array(); ... Aproximadamente en la línea 75 tenemos: ... $this->_select = ' a.date_add, IF (YEAR(`birthday`) = 0, "-", (YEAR(CURRENT_DATE)-YEAR(`birthday`)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(birthday, 5))) AS `age`, ( SELECT c.date_add FROM '._DB_PREFIX_.'guest g LEFT JOIN '._DB_PREFIX_.'connections c ON c.id_guest = g.id_guest WHERE g.id_customer = a.id_customer ORDER BY c.date_add DESC LIMIT 1 ) as connect'; ... Y hay que sustituirlo por esto: ... /* MODIFICADO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ $this->_select = ' a.date_add, IF (YEAR(`birthday`) = 0, "-", (YEAR(CURRENT_DATE)-YEAR(`birthday`)) - (RIGHT(CURRENT_DATE, 5) < RIGHT(birthday, 5))) AS `age`, ( SELECT c.date_add FROM '._DB_PREFIX_.'guest g LEFT JOIN '._DB_PREFIX_.'connections c ON c.id_guest = g.id_guest WHERE g.id_customer = a.id_customer ORDER BY c.date_add DESC LIMIT 1 ) as connect, gl.`name` as customer_group'; $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'group_lang` gl ON (gl.`id_group` = a.`id_default_group` AND gl.`id_lang` = '.(int)$this->context->language->id.')'; /* /MODIFICADO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ ... Aproximadamente en la línea 115 tenemos: ... 'email' => array( 'title' => $this->l('Email address'), 'width' => 180, ), 'age' => array( 'title' => $this->l('Age'), 'width' => 20, 'search' => false, 'align' => 'center' ), 'active' => array( 'title' => $this->l('Enabled'), 'width' => 70, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, 'filter_key' => 'a!active', ), ... Y debe quedar así: ... 'email' => array( 'title' => $this->l('Email address'), 'width' => 180, ), /* ELIMINADA LA COLUMNA DE EDAD */ /* AÑADIDO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ 'customer_group' => array( 'title' => $this->l('Group'), 'width' => 80, 'align' => 'left', 'type' => 'select', 'list' => $this->groups_array, 'filter_key' => 'gl!id_group' ), /* /AÑADIDO PARA INCLUIR UNA COLUMNA CON EL GRUPO AL QUE PERTENECE EL CLIENTE. */ 'active' => array( 'title' => $this->l('Enabled'), 'width' => 70, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => true, 'filter_key' => 'a!active', ), ... Una vez hechos estos cambios hay que borrar la cache de Prestashop y forzarlo a que compile (ver instrucciones en el primer post).Según el tamaño de pantalla utilizado, puede ser necesario retocar los valores 'width' de las distintas columnas, para que las columnas estén a vuestro gusto.Para terminar, hay que ir al menú "Localización - Traducción de mensajes", elegir "Traducciones del panel de administración", elegir idioma español (o el que tengáis configurado para el back office), buscar las traducciones de "AdminCustomers", y añadir la traducción de "Group" = "Grupo" (es posible que ya esté), y guardar los cambios. Share this post Link to post Share on other sites
pepitofgg 6 Posted May 16, 2014 4º. Añadir una columna con el email y otra con el alias de la dirección, a la tabla "Clientes - Direcciones".Editamos el fichero /controllers/admin/AdminAddressesController.php y aproximadamente en la línea 59 tendremos: ... 'id_address' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 'firstname' => array('title' => $this->l('First Name'), 'width' => 120, 'filter_key' => 'a!firstname'), 'lastname' => array('title' => $this->l('Last Name'), 'width' => 140, 'filter_key' => 'a!lastname'), ... Y debe quedar así: ... 'id_address' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), /* AÑADIDO PARA INCLUIR UNA COLUMNA CON EL EMAIL Y OTRA CON EL ALIAS DE LA DIRECCIÓN */ 'email' => array('title' => $this->l('Email'), 'width' => 150), 'alias' => array('title' => $this->l('Alias'), 'width' => 130), /* /AÑADIDO PARA INCLUIR UNA COLUMNA CON EL EMAIL Y OTRA CON EL ALIAS DE LA DIRECCIÓN */ 'firstname' => array('title' => $this->l('First Name'), 'width' => 120, 'filter_key' => 'a!firstname'), 'lastname' => array('title' => $this->l('Last Name'), 'width' => 140, 'filter_key' => 'a!lastname'), ... Una vez hechos estos cambios hay que borrar la cache de Prestashop y forzarlo a que compile (ver instrucciones en el primer post).Según el tamaño de pantalla utilizado, puede ser necesario retocar los valores 'width' de las distintas columnas, para que las columnas estén a vuestro gusto. Share this post Link to post Share on other sites
pepitofgg 6 Posted May 16, 2014 5º. Añadir la posibilidad de seleccionar y borrar varios carritos de una vez, en la tabla "Clientes - Carritos".Editamos el fichero /controllers/admin/AdminCartsController.php y aproximadamente en la línea 36 tendremos: ... $this->addRowAction('view'); $this->addRowAction('delete'); $this->allow_export = true; $this->_select = 'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) `customer`, a.id_cart total, ca.name carrier, o.id_order, IF(co.id_guest, 1, 0) id_guest'; ... Y debe quedar así: ... $this->addRowAction('view'); $this->addRowAction('delete'); $this->allow_export = true; /* AÑADIDO PARA QUE PRESENTE CASILLAS DE SELECCION PARA BORRAR VARIOS CARRITOS DE UNA VEZ */ $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?'))); /* /AÑADIDO PARA QUE PRESENTE CASILLAS DE SELECCION PARA BORRAR VARIOS CARRITOS DE UNA VEZ */ $this->_select = 'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) `customer`, a.id_cart total, ca.name carrier, o.id_order, IF(co.id_guest, 1, 0) id_guest'; ... Una vez hechos estos cambios hay que borrar la cache de Prestashop y forzarlo a que compile (ver instrucciones en el primer post).Para terminar, hay que ir al menú "Localización - Traducción de mensajes", elegir "Traducciones del panel de administración", elegir idioma español (o el que tengáis configurado para el back office), buscar las traducciones de "AdminCarts", y añadir la traducción de "Delete selected" = "Borrar seleccionados" y "Delete selected items?" = "¿Borrar carritos seleccionados?", y guardar los cambios. Share this post Link to post Share on other sites
moraira 230 Posted May 16, 2014 TOMA YA, gracias pepitofgg, la verdad es que una vez empiezas y viendo lo sencillo que es adaptar el backoffice a los gustos de cada uno no se puede parar... Share this post Link to post Share on other sites
pepitofgg 6 Posted May 17, 2014 TOMA YA, gracias pepitofgg, la verdad es que una vez empiezas y viendo lo sencillo que es adaptar el backoffice a los gustos de cada uno no se puede parar... Sí, algunos cambios son sorprendentemente fáciles. Por ejemplo, lo de poder borrar varios carritos de una vez, que te ahorra un montón de tiempo, se soluciona añadiendo sólo una línea de código, que copié y pegué de otro fichero (para otros cambios hay que currárselo un poco más). La pena es lo poco documentado que está el tema. Lo tienes que hacer todo guiándote un poco por la lógica, pero sobre todo a base de pruebas y errores. Y el tema de los overrides (que habría sido más "elegante") está poco documentado, y bastante mal implementado. Haces un override con la función que te interesa modificar, y tu función funciona (valga la redundancia), pero te aparecen unas cuantas cosas que dejan de funcionar, sin un motivo fácil de determinar. Share this post Link to post Share on other sites
luico 1 Posted October 1, 2014 Grandisimo aporte Como seria para que aparezca el numero de factura en la tabla "Pedidos" Me atrevería solo, pero no quiero meter la pata. Share this post Link to post Share on other sites
pepitofgg 6 Posted October 2, 2014 (edited) Grandisimo aporte Como seria para que aparezca el numero de factura en la tabla "Pedidos" Me atrevería solo, pero no quiero meter la pata. Hola luico. A ver, te doy un par de soluciones: 1. Solución simple: Te presentará una columna con el número de factura, pero sin el prefijo ni los ceros a la izquierda, y cuando no haya factura te pondrá nº de factura 0. Si te vale con eso, sólo tienes que editar el fichero controllers\admin\AdminOrdersController.php y añadir un par de cosas. Sobre la línea 44, donde pone $this->_select = ' a.id_currency, a.id_order AS id_pdf, CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, Debe quedar así (esto incluye el nº de factura en la consulta a la base de datos): $this->_select = ' a.id_currency, a.id_order AS id_pdf, /* AÑADIDO PARA INCLUIR Nº DE FACTURA*/ a.invoice_number AS numFra, /* /AÑADIDO PARA INCLUIR Nº DE FACTURA*/ CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, Y sobre la línea 110, donde pone: 'payment' => array( 'title' => $this->l('Payment: '), 'width' => 160 ), 'osname' => array( 'title' => $this->l('Status'), 'color' => 'color', Debe quedar así (esto añade la columna con el nº de factura): 'payment' => array( 'title' => $this->l('Payment: '), 'width' => 160 ), /* AÑADIDO PARA INCLUIR Nº DE FACTURA*/ 'numFra' => array( 'title' => $this->l('Invoice'), 'width' => 70, 'align' => 'center', 'havingFilter' => true, ), /* /AÑADIDO PARA INCLUIR Nº DE FACTURA*/ 'osname' => array( 'title' => $this->l('Status'), 'color' => 'color', En este caso he puesto la columna "factura" entre las columnas "modo de pago" y "estado de pedido", pero puedes insertarla donde más te guste. 2. Solución más elaborada: Te presentará una columna con el nº de factura completo, tal como aparecería en la factura, y si aún no se ha emitido factura, te pondrá un guión. Para ello, además de los cambios de la solución 1, tendrás que hacer algunos más: Edita el mismo fichero controllers\admin\AdminOrdersController.php, y sobre la línea 41, donde pone: $this->deleted = false; $this->context = Context::getContext(); $this->_select = ' a.id_currency, Debe quedar así (esto hace una consulta a la base de datos para averiguar el prefijo que hayas configurado para las facturas): $this->deleted = false; $this->context = Context::getContext(); /* AÑADIDO PARA INCLUIR Nº DE FACTURA*/ $q = 'SELECT distinctrow cl.value AS prefix_lang, c.value AS prefix FROM '._DB_PREFIX_.'configuration_lang AS cl LEFT JOIN '._DB_PREFIX_.'configuration AS c ON c.name = "PS_INVOICE_PREFIX" WHERE (c.id_configuration = cl.id_configuration) AND (cl.id_lang = "'.(int)$this->context->language->id.'")'; $res = Db::getInstance()->ExecuteS($q); if (isset($res[0])) { if (strval($res[0]['prefix_lang']) != "") $this->prefijo = $res[0]['prefix_lang']; else $this->prefijo = $res[0]['prefix']; } else $this->prefijo = ""; /* /AÑADIDO PARA INCLUIR Nº DE FACTURA*/ $this->_select = ' a.id_currency, En el mismo fichero, donde hayas añadido la nueva columna tendrás: /* AÑADIDO PARA INCLUIR Nº DE FACTURA*/ 'numFra' => array( 'title' => $this->l('Invoice'), 'width' => 70, 'align' => 'center', 'havingFilter' => true, ), /* /AÑADIDO PARA INCLUIR Nº DE FACTURA*/ Y debe quedar así (esto añade el prefijo y el tipo de dato entre los datos que le pasará al helper, que es el que mostrará el listado): /* AÑADIDO PARA INCLUIR Nº DE FACTURA*/ 'numFra' => array( 'title' => $this->l('Invoice'), 'width' => 70, 'align' => 'center', 'prefijo' => $this->prefijo, 'type' => 'invoice_number_format', //tipo añadido en classes\helper\HelperList.php 'havingFilter' => true, ), /* /AÑADIDO PARA INCLUIR Nº DE FACTURA*/ Por último, tenemos que decirle qué hacer con el nuevo tipo que hemos añadido (invoice_number_format). Para ello, edita el fichero classes\helper\HelperList.php, y sobre la línea 280, donde pone: elseif (isset($params['type']) && $params['type'] == 'price') { $currency = (isset($params['currency']) && $params['currency']) ? Currency::getCurrencyInstance($tr['id_currency']) : $this->context->currency; $this->_list[$index][$key] = Tools::displayPrice($tr[$key], $currency, false); } elseif (isset($params['type']) && $params['type'] == 'date') $this->_list[$index][$key] = Tools::displayDate($tr[$key], $this->context->language->id); Debe quedar así: elseif (isset($params['type']) && $params['type'] == 'price') { $currency = (isset($params['currency']) && $params['currency']) ? Currency::getCurrencyInstance($tr['id_currency']) : $this->context->currency; $this->_list[$index][$key] = Tools::displayPrice($tr[$key], $currency, false); } /* AÑADIDO EL TIPO "invoice_number_format" */ elseif (isset($params['type']) && $params['type'] == 'invoice_number_format') { if(isset($params['prefijo'])) $prefijo = $params['prefijo']; else $prefijo = ""; if (intval($tr[$key]) == 0) $this->_list[$index][$key] = "-"; else { $formato = $prefijo.'%1$06d'; $this->_list[$index][$key] = sprintf($formato,$tr[$key]); } } /* /AÑADIDO EL TIPO "invoice_number_format" */ elseif (isset($params['type']) && $params['type'] == 'date') $this->_list[$index][$key] = Tools::displayDate($tr[$key], $this->context->language->id); Pruébalo y dime qué tal va. Yo lo he hecho sobre PS 1.5.4.1, aunque supongo que en cualquier 1.5 o posterior debería funcionar. Y no olvides hacer copia de los ficheros antes de modificar nada, por si las moscas. Edited October 3, 2014 by pepitofgg (see edit history) Share this post Link to post Share on other sites
luico 1 Posted October 2, 2014 Mil gracias por la rapidez, expectacular. Muy bien la primera parte Con la segunda he tenido mas problemas y de momento no consigo que funcione. mañana volveré a probar. Graciassssssss Share this post Link to post Share on other sites
luico 1 Posted October 3, 2014 CONSEGUIDO Espectacular, ahora solo falta para poner la guinda al pastel que cuando le demos a exportar a CSV también nos aparezca el prefijo de la factura y ya tenemos nuestro resumen de IVA particular Share this post Link to post Share on other sites
pepitofgg 6 Posted October 3, 2014 CONSEGUIDO Espectacular, ahora solo falta para poner la guinda al pastel que cuando le demos a exportar a CSV también nos aparezca el prefijo de la factura y ya tenemos nuestro resumen de IVA particular Me alegro de que te funcione. ¿Podrías decir qué versión de Prestashop usas, por curiosidad?. Lo de exportar facturas yo no lo uso, porque lo hago de otra forma. Me hice un módulo que me descarga un fichero CSV de facturas con los datos que me interesan, y luego en local, un programita en Visual Basic que me las pasa a Contaplus, y ya el resumen de IVA y todo eso lo hago desde Contaplus. De todas formas le echaré un ojo, y si no es muy complicado te digo como hacerlo. Share this post Link to post Share on other sites
luico 1 Posted October 3, 2014 Uso la PrestaShop™ 1.5.6.2 Es que al exportar en CSV sale el numero de factura que has creado pero en formato reducido. De todas maneras ya es todo un logro. Yo lo utilizo así por llevar un resumen en excel y para pesarle este archivo al asesor para que el lo meta en el programa pertinente. Share this post Link to post Share on other sites
pepitofgg 6 Posted October 3, 2014 CONSEGUIDO Espectacular, ahora solo falta para poner la guinda al pastel que cuando le demos a exportar a CSV también nos aparezca el prefijo de la factura y ya tenemos nuestro resumen de IVA particular No es muy complicado. Luego te digo lo que hay que hacer. Mientras tanto, fíjate que he cambiado una cosilla en el código que había puesto. He editado el post y ahora está como interesa, pero para que no tengas que rehacerlo todo, sólo fíjate que en el fichero controllers\admin\AdminOrdersController.php, donde antes ponía $prefijo ahora pone $this->prefijo (aparece en 4 sitios). Este cambio interesa para poder hacer lo otro (ahora no me da tiempo a ponerlo). Share this post Link to post Share on other sites
luico 1 Posted October 3, 2014 Ok perfecto. Lo tengo en cuenta. Share this post Link to post Share on other sites
pepitofgg 6 Posted October 3, 2014 Ok perfecto. Lo tengo en cuenta. Vale, pues ahora tienes que editar el fichero classes\controller\AdminController.php, y en la función public function processExport() sobre la línea 590, donde pone: $content = array(); foreach ($this->_list as $i => $row) { $content[$i] = array(); foreach ($this->fields_list as $key => $value) if (isset($row[$key])) $content[$i][] = Tools::htmlentitiesDecodeUTF8($row[$key]); } Lo modificas para que ponga esto: $content = array(); foreach ($this->_list as $i => $row) { $content[$i] = array(); // MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE // foreach ($this->fields_list as $key => $value) // if (isset($row[$key])) // $content[$i][] = Tools::htmlentitiesDecodeUTF8($row[$key]); foreach ($this->fields_list as $key => $value){ if (isset($row[$key])) { $valor = Tools::htmlentitiesDecodeUTF8($row[$key]); if ($key == 'numFra'){ if(isset($this->prefijo)) $prefijo = $this->prefijo; else $prefijo = ""; if (intval($valor) == 0) $valor = "-"; else { $formato = $prefijo.'%1$06d'; $valor = sprintf($formato,$valor); } } $content[$i][] = $valor; } else $content[$i][] = ""; } // /MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE } Con esto ya debería salirte bien al exportar. Una cosa, este cambio incluye la corrección de una cosa que, a mi modo de ver, era un error de Prestashop (al menos en la versión 1.5.4.1). Originalmente, en el listado exportado, si un campo de una fila está vacío, Prestashop no lo exporta, de manera que en ese caso te encuentras con que esa fila tiene un campo menos, y si abres el CSV, por ejemplo en Excel, se te descuadra todo, porque en esa fila el resto de campos salen corridos una casilla a la izquierda. Ignoro por qué lo hicieron así, y personalmente me parece un error, así que lo he cambiado para que en caso de que un campo no exista, en lugar de no exportarlo, lo exporte como un campo vacío. Si lo prefieres de la otra forma, es decir, que no exporte los campos vacíos, elimina o comenta (poniendo delante //) la línea del último "else". Ya me contarás. Share this post Link to post Share on other sites
pepitofgg 6 Posted October 5, 2014 Una cosa, este cambio incluye la corrección de una cosa que, a mi modo de ver, era un error de Prestashop (al menos en la versión 1.5.4.1). Originalmente, en el listado exportado, si un campo de una fila está vacío, Prestashop no lo exporta, de manera que en ese caso te encuentras con que esa fila tiene un campo menos, y si abres el CSV, por ejemplo en Excel, se te descuadra todo, porque en esa fila el resto de campos salen corridos una casilla a la izquierda. Acabo de mirar y en la versión 1.6.0.1 ya viene esto corregido, así que, efectivamente, era un error de Prestashop. Share this post Link to post Share on other sites
luico 1 Posted October 6, 2014 Mi código no es exactamente igual. Lo he dejado así $headers = array(); foreach ($this->fields_list as $datas) $headers[] = Tools::htmlentitiesDecodeUTF8($datas['title']); $content = array(); foreach ($this->_list as $i => $row) { $content[$i] = array(); // MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE // foreach ($this->fields_list as $key => $value) // if (isset($row[$key])) // $content[$i][] = Tools::htmlentitiesDecodeUTF8($row[$key]); foreach ($this->fields_list as $key => $value){ if (isset($row[$key])) { $valor = Tools::htmlentitiesDecodeUTF8($row[$key]); if ($key == 'numFra'){ if(isset($this->prefijo)) $prefijo = $this->prefijo; else $prefijo = ""; if (intval($valor) == 0) $valor = "-"; else { $formato = $prefijo.'%1$06d'; $valor = sprintf($formato,$valor); } } $content[$i][] = $valor; } else $content[$i][] = ""; } // /MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE $path_to_image = false; foreach ($this->fields_list as $key => $params) { $field_value = isset($row[$key]) ? Tools::htmlentitiesDecodeUTF8($row[$key]) : ''; if ($key == 'image') pero en el CSV se me repiten los campos unos con titulo y después de todos estos sin títulos. Share this post Link to post Share on other sites
pepitofgg 6 Posted October 7, 2014 (edited) Mi código no es exactamente igual. Lo he dejado así ... pero en el CSV se me repiten los campos unos con titulo y después de todos estos sin títulos. Es que en tu versión (1.5.6.2) esa función es distinta (de hecho, es igual que en la 1.6), y la modificación, tal como la has hecho no puede funcionar bien. A ver, si no me equivoco, en PS 1.5.6.2, en el fichero classes\controller\AdminController.php, una vez deshechos los cambios que habías hecho, sobre la línea 635 tendrás algo así: foreach ($this->fields_list as $key => $params) { $field_value = isset($row[$key]) ? Tools::htmlentitiesDecodeUTF8($row[$key]) : ''; if ($key == 'image') { if ($params['image'] != 'p' || Configuration::get('PS_LEGACY_IMAGES')) $path_to_image = Tools::getShopDomain(true)._PS_IMG_.$params['image'].'/'.$row['id_'.$this->table].(isset($row['id_image']) ? '-'.(int)$row['id_image'] : '').'.'.$this->imageType; else $path_to_image = Tools::getShopDomain(true)._PS_IMG_.$params['image'].'/'.Image::getImgFolderStatic($row['id_image']).(int)$row['id_image'].'.'.$this->imageType; if ($path_to_image) $field_value = $path_to_image; } $content[$i][] = $field_value; } Y tienes que insertar un trozo de código para que quede así: foreach ($this->fields_list as $key => $params) { $field_value = isset($row[$key]) ? Tools::htmlentitiesDecodeUTF8($row[$key]) : ''; if ($key == 'image') { if ($params['image'] != 'p' || Configuration::get('PS_LEGACY_IMAGES')) $path_to_image = Tools::getShopDomain(true)._PS_IMG_.$params['image'].'/'.$row['id_'.$this->table].(isset($row['id_image']) ? '-'.(int)$row['id_image'] : '').'.'.$this->imageType; else $path_to_image = Tools::getShopDomain(true)._PS_IMG_.$params['image'].'/'.Image::getImgFolderStatic($row['id_image']).(int)$row['id_image'].'.'.$this->imageType; if ($path_to_image) $field_value = $path_to_image; } // MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE elseif ($key == 'numFra') { if(isset($this->prefijo)) $prefijo = $this->prefijo; else $prefijo = ""; if (intval($field_value) == 0) $field_value = "-"; else { $formato = $prefijo.'%1$06d'; $field_value = sprintf($formato,$field_value); } } // MODIFICACIÓN PARA QUE EN "PEDIDOS-EXPORTAR" SALGA Nº DE FACTURA FORMATEADO CORRECTAMENTE $content[$i][] = $field_value; } Creo que con eso debería funcionar, aunque no lo he probado, porque no tengo esa versión instalada. Prueba y me dices si va bien. Edited October 7, 2014 by pepitofgg (see edit history) Share this post Link to post Share on other sites
luico 1 Posted October 7, 2014 Pepitofgg mil gracias. Funciona de maravilla Eso es lo que necesitaba. Este es el resultado de la exportación para el que le interese ID Referencia Nuevo Cliente Total Modo de pago Factura Estado Fecha PDF 520 GCERSCYFV 0 P. Store 11.95 Tarjeta de credito 14/000447 Tarjeta de credito 06/10/2014 21:04 520 519 YDNEGDXMY 0 P. Store 17.90 Al contado 14/000446 Al contado 06/10/2014 20:45 519 518 GDQRYMJVP 0 P. Store 5.90 Al contado 14/000445 Al contado 06/10/2014 19:33 518 Share this post Link to post Share on other sites
pepitofgg 6 Posted October 7, 2014 Pepitofgg mil gracias. Funciona de maravilla No hay de qué. Me alegro de que te sirva. Share this post Link to post Share on other sites
nativocolombia 0 Posted October 21, 2014 Hola, somos nuevos usuarios de prestashop y aun nos falta por aprender bastante sobre el manejo de la tienda, entendemos muchas cosas pero quisieramos preguntar lo siguiente: Cómo podemos mostrar en la pantalla de cada tipo de productos el precio junto a la unidad, ejemplo: $1.500 x Libra o Lb, sin tener que dar click en el producto? nuestra tienda: www.nativorganico.com/pedidos gracias por su ayuda cordial saludo Nativo Colombia Share this post Link to post Share on other sites
pepitofgg 6 Posted October 23, 2014 Cómo podemos mostrar en la pantalla de cada tipo de productos el precio junto a la unidad, ejemplo: $1.500 x Libra o Lb, sin tener que dar click en el producto? Si quieres que te respondan, deberías dar más detalles. ¿Te refieres al back end o al front end? ¿En el listado de productos de una categoría o en la página de un producto? ¿En qué versión de Prestashop? Por cierto, muy bonita vuestra página. 1 Share this post Link to post Share on other sites
nativocolombia 0 Posted October 23, 2014 Si quieres que te respondan, deberías dar más detalles. ¿Te refieres al back end o al front end? ¿En el listado de productos de una categoría o en la página de un producto? ¿En qué versión de Prestashop? Por cierto, muy bonita vuestra página. Hola, antes que nada gracias por tu respuesta y por el consejo, soy un novato en este tema entonces espero entiendan mis errores. Mi duda es referente a la pagina que ve el cliente, supongo que será el front end. Entonces cuando un cliente entra y se loguea en mi tienda, quisiera que a primera vista y sin cliquear nada, la persona pudiera ver el precio por unidad de medida... ($1.500 Lb)... ...creo que uso la versión de prestashop más actual que es la 1.6.0.9 ah y muchas gracias por lo de la página la he trabajado bastante y aún falta! saludos Share this post Link to post Share on other sites
pepitofgg 6 Posted October 25, 2014 Nativocolombia, como hablas del front end, creo que este no es el mejor sitio para preguntar. Si te fijas en el topic, verás que este hilo es sobre el back office o back end, es decir, la parte que sólo ve el vendedor, no la que ve el cliente. De todas formas parece que no es fácil lo que quieres. Pon en google "prestashop precio por kg" (sin las comillas) y te saldrán varios hilos hablando del tema. Share this post Link to post Share on other sites
malloco 2 Posted October 27, 2014 Hola a todos me está pareciendo muy interesante todo lo que estoy leyendo. A mi me gustaría saber si alguien podría ayudarme con esto que quiero hacer. Yo necesito que cuando un cliente compre, los descuentos, el iva y la suma de precios totales se haga teniendo en cuenta el wholesale-price o precio mayorista sin IVA, no el precio base o Our price. El motivo es que nosotros no vendemos a clientes finales, sino a tiendas. manejamos dos precios precio tienda y pvp. El precio tienda lo he colocado en el Precio mayorista sin IVA Sabe alguien como puedo hacer esto? Muchas gracias de antemano, Share this post Link to post Share on other sites
pepitofgg 6 Posted October 27, 2014 malloco, yo creo que eso que quieres es bastante complicado, porque no se trata de cambiar lo que te presenta o como te lo presenta, sino de cambiar los algoritmos de suma de totales y todo eso. A lo mejor digo una tontería, pero se me ocurre que quizás lo más fácil sea tener dos tiendas paralelas, una con los PVP y otra con los precios tienda. Share this post Link to post Share on other sites
malloco 2 Posted October 27, 2014 malloco, yo creo que eso que quieres es bastante complicado, porque no se trata de cambiar lo que te presenta o como te lo presenta, sino de cambiar los algoritmos de suma de totales y todo eso. A lo mejor digo una tontería, pero se me ocurre que quizás lo más fácil sea tener dos tiendas paralelas, una con los PVP y otra con los precios tienda. ya, es que es trastocar cosas muy sensibles... te parece descabellado darle la vuelta a los precios? es decir, poner el de la tienda en el del PVP y viceversa? Gracias por tu ayuda y saludos, Share this post Link to post Share on other sites
pepitofgg 6 Posted October 30, 2014 ya, es que es trastocar cosas muy sensibles... te parece descabellado darle la vuelta a los precios? es decir, poner el de la tienda en el del PVP y viceversa? Gracias por tu ayuda y saludos, Es que no sé si te he entendido bien. Pensaba que, según el tipo de cliente, querías presentar el PVP o el precio tienda. Si quieres presentar uno u otro según el cliente, no vas a arreglar nada cambiando uno por otro. Si sólo vas a usar el precio tienda, tampoco le veo sentido. Ponle a cada producto el precio tienda en vez del PVP y ya está. Si quieres los precios sin IVA para todo, puedes configurar un IVA al 0%. Si quieres que no presente el IVA pero luego sí lo aplique en factura, configura el IVA al 21% y que presente precios sin IVA. No sé, no me entero de donde está el problema. 1 Share this post Link to post Share on other sites
luico 1 Posted October 30, 2014 Hola a todos me está pareciendo muy interesante todo lo que estoy leyendo. A mi me gustaría saber si alguien podría ayudarme con esto que quiero hacer. Yo necesito que cuando un cliente compre, los descuentos, el iva y la suma de precios totales se haga teniendo en cuenta el wholesale-price o precio mayorista sin IVA, no el precio base o Our price. El motivo es que nosotros no vendemos a clientes finales, sino a tiendas. manejamos dos precios precio tienda y pvp. El precio tienda lo he colocado en el Precio mayorista sin IVA Sabe alguien como puedo hacer esto? Muchas gracias de antemano, Hola, Creo que lo que tendrías que hacer es un grupo de usuarios donde metieses a todas las tiendas y a ese grupo le aplicaras un descuento equivalente al IVA. Aunque si vendes a tiendas seguramente lo que necesites sea aplicarle el recargo de equivalencia. para eso revisa este hilo: http://www.prestashop.com/forums/topic/190882-pshop-15-impuestos-y-facturacion-recargo-de-equivalencia/ Share this post Link to post Share on other sites
malloco 2 Posted October 30, 2014 Es que no sé si te he entendido bien. Pensaba que, según el tipo de cliente, querías presentar el PVP o el precio tienda. Si quieres presentar uno u otro según el cliente, no vas a arreglar nada cambiando uno por otro. Si sólo vas a usar el precio tienda, tampoco le veo sentido. Ponle a cada producto el precio tienda en vez del PVP y ya está. Si quieres los precios sin IVA para todo, puedes configurar un IVA al 0%. Si quieres que no presente el IVA pero luego sí lo aplique en factura, configura el IVA al 21% y que presente precios sin IVA. No sé, no me entero de donde está el problema. Hola, te explico un poco mejor. Somos una distribuidora y como tal vendemos a las tiendas (no al público final). Tenemos acceso restringido para acceder al front de la página. Necesito que las tiendas compren al precio tienda y a su vez que vean el precio de venta al público. De tal forma que ven dos precios y el iva en el front, Por ejemplo: Zapatillas de señora Precio tienda: 6.05 € Precio venta al público: 10.00 € Iva que aplica: 21% Esto es lo que ven ellos en el front Esta información es así porque ellas necesitan saber cual es el precio de venta al publico como dato informativo. Yo ahora lo tengo configurado Wholesale price: Precio tienda Our price: Precio al público sin iva Retail price: PVP con iva y me sale bien en el front. No obstante cuando una tienda compra, todo el proceso de compra se produce en función de OUR PRICE, por eso decía lo de darle la vuelta, es decir: Wholesale price: POner en este campo PVP Our price: Precio tienda sin iva Retail price: Precio tienda con iva Share this post Link to post Share on other sites
malloco 2 Posted October 30, 2014 Hola a todos me está pareciendo muy interesante todo lo que estoy leyendo. A mi me gustaría saber si alguien podría ayudarme con esto que quiero hacer. Yo necesito que cuando un cliente compre, los descuentos, el iva y la suma de precios totales se haga teniendo en cuenta el wholesale-price o precio mayorista sin IVA, no el precio base o Our price. El motivo es que nosotros no vendemos a clientes finales, sino a tiendas. manejamos dos precios precio tienda y pvp. El precio tienda lo he colocado en el Precio mayorista sin IVA Sabe alguien como puedo hacer esto? Muchas gracias de antemano, Hola, Creo que lo que tendrías que hacer es un grupo de usuarios donde metieses a todas las tiendas y a ese grupo le aplicaras un descuento equivalente al IVA. Aunque si vendes a tiendas seguramente lo que necesites sea aplicarle el recargo de equivalencia. para eso revisa este hilo: http://www.prestashop.com/forums/topic/190882-pshop-15-impuestos-y-facturacion-recargo-de-equivalencia/ Gracias Luico Voy a ponerme a leer esto a ver si hay alguna otra forma de hacerlo Un saludo Share this post Link to post Share on other sites
malloco 2 Posted October 30, 2014 Hola, te explico un poco mejor. Somos una distribuidora y como tal vendemos a las tiendas (no al público final). Tenemos acceso restringido para acceder al front de la página. Necesito que las tiendas compren al precio tienda y a su vez que vean el precio de venta al público. De tal forma que ven dos precios y el iva en el front, Por ejemplo: Zapatillas de señora Precio tienda: 6.05 € Precio venta al público: 10.00 € Iva que aplica: 21% Esto es lo que ven ellos en el front Esta información es así porque ellas necesitan saber cual es el precio de venta al publico como dato informativo. Yo ahora lo tengo configurado Wholesale price: Precio tienda Our price: Precio al público sin iva Retail price: PVP con iva y me sale bien en el front. No obstante cuando una tienda compra, todo el proceso de compra se produce en función de OUR PRICE, por eso decía lo de darle la vuelta, es decir: Wholesale price: POner en este campo PVP Our price: Precio tienda sin iva Retail price: Precio tienda con iva El problema es que tardaría mucho en hacerlo porque son más de 2000 productos y preguntaba si existe algún truco o cambio que pudiera hacer para ahorrarme tiempo. Gracias de todas formas a todos por vuestras aportaciones, Share this post Link to post Share on other sites
luico 1 Posted January 22, 2015 Hola pepitofgg, te pido un favor más a ver si fuera posible para terminar de mejorar las funcionalidades de catalogo > Productos Tengo un problema; al parecer cuando estamos en catalogo > Productos en el campo de Referencia este solo busca en la referencia puesta en el producto dentro de la pestaña información cuando a mi entender también tendría que buscar dentro de las referencias internas de las combinaciones del producto "attribute_reference". Y ya para rizar el rizo en "attribute_ean13" , "attribute_upc" y "ean13" , "upc" Así nos encontraría cualquiera de las posibilidades de referencia de nuestros productos para luego poder editar su ficha con comodidad. He localizado un articulo que parece hablar de ello, pero además de estar en francés, es de una versión muy antigua, https://www.prestashop.com/forums/topic/57330-recherche-de-reference-sur-les-declinaisons-dans-le-bo/ y no termino de aclararme, y como a ti se te da muy bien esto, recurro a tu sabiduría Share this post Link to post Share on other sites
mikel EPALZA 2 Posted September 12, 2015 (edited) Hola a todos, lo primero agradecer a todos los aportes sobre cambios y modificaciones de código. Para los que nos estamos muy duchos en esta materia del php es en dos palabras FAN TASTICO. Por otro lado, lo moderadores dirán si mi consulta debe de estar o no este topic. Lo que llevo un tiempo intentando encontrar es la forma de cambiar el código para incorporar EL DICHOSO RECARGO DE EQUIVALENCIA. Algo que veo que parece tabú o que nadie lo considera importante como proporcionarnos una solución que no sea otra que comprar un módulo de PAGO. Dicho esto, mi pregunta es si alguien sabe como modificar el código para que si un cliente solicita el R.E. se le añada al precio de los productos y aparezca desglosado en las facturas. Yo lo he intentado a través de las reglas de impuestos pero éstas sólo funcionan para zonas, paises, etc. pero no hay forma de hacer esto para los grupos de clientes. Es decir, que si un cliente solicita el R.E., automáticamente en el carro y las facturas aparezcan y se le sumen tanto el IVA como el R.E. al haberle asignado ambos impuestos. Bueno un saludo y Dios bendiga a los desarrolladores por su trabajo. Edited September 12, 2015 by mikel EPALZA (see edit history) Share this post Link to post Share on other sites
pepitofgg 6 Posted September 12, 2015 Yo no soy para nada un experto en php, todo lo contrario, pero creo que lo que quieres será bastante complicado. En este mismo thread, en un post anterior, ponen el enlace a otro thread que trata ese tema, y por lo que he visto, hay un módulo que añade esa prestación por 60 euros, que no es ninguna barbaridad. Share this post Link to post Share on other sites
demmonin 4 Posted December 22, 2015 hola, esta es una consulta para pepitofgg o para quien me pueda ayudar, es un poco mas tecnica, son 3 modificaciones que necesito hacer en el backoffice de la tienda que tengo. 1.- mostrar en el adminorder, 2 campos que tengo guardados en otra tabla, (modulo de fecha de entrega), para visualizarlos junto al pedido 2.- poder mostrar estos mismos campos en el apartado shipping dentro del adminorder 3.- lograr no hacer esto con un modulo, sino implementarlo directameente en la tabla ps_order (tiene un campo delivery_date, me gustaria agregar un delivery_hour), y mostrarlo de la misma manera, asignarlo a mi tabla carrier para que lo guarde como fecha de entrega. ojala me puedan ayudar, cuando tenga un ejemplo grafico se los enviare en un post Share this post Link to post Share on other sites
europaul 2 Posted April 21, 2018 Hola. Estoy intentado agregar una columna a catalogo>productos, donde se pueda activar o desactivar el "disponible para la compra". Es para un cliente que necesita verlo reflejado en el listado. Share this post Link to post Share on other sites
ortopediamimas 0 Posted November 30, 2018 Hola, buenos dias Estoy intentando de añadir un apartado nuevo que sea comentario pero no encuentro nada Alguien me puede ayudar Gracias a todos Share this post Link to post Share on other sites
AliceCAD 0 Posted September 4, 2019 Buenas tardes, Pepitofgg Necesito tu ayuda, espero tengas tiempo para atenderme. En la generación del PDF de la factura, deseo hacer dos cambios. 1. Del cuerpo de la factura, deseo eliminar la columna "Precio base" y, 2. Como puedo hacer para que el generador del pdf no me corte los artículos. Me explico... Al final de la página 1, puedes ver que deja el nombre del artículo, con su cantidad y precio, pero la imagen la manda al inicio de la siguiente página. Lo mismo sucede con el artículo al final de la página 2 e inicio de la 3. Agradezco de antemano la atención que me brindes. Saludos, Alicia GN000278.pdf Share this post Link to post Share on other sites
AliceCAD 0 Posted September 4, 2019 Olvidé mencionarte: Versión de PrestaShop 1.6.1.24 Versión de PHP 7.2.21 Espero tus comentarios y muchas gracias. Share this post Link to post Share on other sites
pepitofgg 6 Posted September 5, 2019 8 hours ago, AliceCAD said: Buenas tardes, Pepitofgg Necesito tu ayuda, espero tengas tiempo para atenderme. En la generación del PDF de la factura, deseo hacer dos cambios. 1. Del cuerpo de la factura, deseo eliminar la columna "Precio base" y, 2. Como puedo hacer para que el generador del pdf no me corte los artículos. Me explico... Al final de la página 1, puedes ver que deja el nombre del artículo, con su cantidad y precio, pero la imagen la manda al inicio de la siguiente página. Lo mismo sucede con el artículo al final de la página 2 e inicio de la 3. Agradezco de antemano la atención que me brindes. Saludos, Alicia GN000278.pdf Hola Alicia. Siento no poder ayudarte, pero hace años que estoy completamente desligado de este tema, y ni siquiera tengo un Prestashop instalado. Share this post Link to post Share on other sites
AliceCAD 0 Posted September 5, 2019 Muchas gracias por responder. Ten un excelente día. Saludos, Alicia Share this post Link to post Share on other sites
mikel EPALZA 2 Posted September 5, 2019 Hola AliceCAD, soy empresario y despues de muchos años he aprendido a hacer ciertas cosas. voy a ver si puedo ayudarte. 1º ELIMINAR LA COLUMNA PRECIO BASE 1.1) entra en la carpeta pdf de tu tienda online. descarga y edita con un editor de texto (te recomiento el " notepad ++ " que es gratis) el archivo " INVOICE.PRODUCT-TAB.TPL " 1.2) veras una linea que dice lo siguiente: {if isset($layout.before_discount)} <th class="product header small" width="{$layout.unit_price_tax_excl.width}%">{l s='Base price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th> {/if} 1.3) añade lo que te he puesto al principio y al final en negrita: {if isset($layout.before_discount)} <!-- <th class="product header small" width="{$layout.unit_price_tax_excl.width}%">{l s='Base price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th> --> {/if} NOTA: COMPARA CON TU ARCHIVO QUE EL CODIGO ES EL MISMO, SINO LO ES TENDRAS QUE BUSCAR UNO PARECIDO QUE ESTE ENTRE " <th> ... </th> " Y QUE MENCIONE LA EXPRESION " {l s='Base price' pdf='true'} ". LAS EXPRESIONES " <!-- " AL PRINCIPIO Y " -->" LO QUE HACEN ES DESCOMENTAR ESE CODIGO Y POR LO TANTO SE CONVIERTE EN INFORMACION NADA MAS. ----------- 2º AJUSTAR LA IMAGEN 2.1 en el mismo archivo, más abajo veras el código siguiente: <!-- PRODUCTOS --> ..... ...... <td class="product left"> {if $display_product_images} <table width="100%"> <tr> <td width="15%"> {if isset($order_detail.image) && $order_detail.image->id} {$order_detail.image_tag} {/if} </td> <td width="5%"> </td> <td width="80%"> {$order_detail.product_name} </td> </tr> </table> {else} {$order_detail.product_name} {/if} </td> 2.2 si te fijas hay 4 porcentajes, los importantes son 15%, 5% y 80%. Tendras que jugar con esos porcentajes a ver si reduciendo el espacio que ocupa la imagen se te mantiene en la misma línea. 2.3 si la modificacion de los porcentajes no funciona, seguramente tendras que ir a PREFERENCIAS --> IMAGENES y modificar el tamaño de la imagen que se usa para el carrito que no se si sera " cart-default " o bien " small-default ". 2.4 si has tenido que seguir el paso 2.3, tendras que regenerar las imagenes en esa misma seccion donde hiciste la modificación, pero no todas... SOLAMENTE LA QUE HAS MODIFICADO. NOTA CON EL PUNTO 2.4: no se que tipo de servidor tendrás pero en la mayoría de los casos, al hacerse algo como eso te aparecera error 500 o algo asi. sigue las instrucciones que te vienen justo al final de esa sección. "Selecciona "No" sólo si se agotó el tiempo de tu servidor y necesitas continuar con la regeneración." 2.5 la solución más facil sería desactivar las imagenes en las facturas. tendras que ir a PEDIDOS --> FACTURAS y al final tienes unas opciones. ESPERO HABERTE AYUDADO. SALUDOS Y SUERTE. Share this post Link to post Share on other sites
AliceCAD 0 Posted September 5, 2019 2 hours ago, mikel EPALZA said: Hola AliceCAD, soy empresario y despues de muchos años he aprendido a hacer ciertas cosas. voy a ver si puedo ayudarte. 1º ELIMINAR LA COLUMNA PRECIO BASE 1.1) entra en la carpeta pdf de tu tienda online. descarga y edita con un editor de texto (te recomiento el " notepad ++ " que es gratis) el archivo " INVOICE.PRODUCT-TAB.TPL " 1.2) veras una linea que dice lo siguiente: {if isset($layout.before_discount)} <th class="product header small" width="{$layout.unit_price_tax_excl.width}%">{l s='Base price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th> {/if} 1.3) añade lo que te he puesto al principio y al final en negrita: {if isset($layout.before_discount)} <!-- <th class="product header small" width="{$layout.unit_price_tax_excl.width}%">{l s='Base price' pdf='true'} <br /> {l s='(Tax excl.)' pdf='true'}</th> --> {/if} NOTA: COMPARA CON TU ARCHIVO QUE EL CODIGO ES EL MISMO, SINO LO ES TENDRAS QUE BUSCAR UNO PARECIDO QUE ESTE ENTRE " <th> ... </th> " Y QUE MENCIONE LA EXPRESION " {l s='Base price' pdf='true'} ". LAS EXPRESIONES " <!-- " AL PRINCIPIO Y " -->" LO QUE HACEN ES DESCOMENTAR ESE CODIGO Y POR LO TANTO SE CONVIERTE EN INFORMACION NADA MAS. ----------- 2º AJUSTAR LA IMAGEN 2.1 en el mismo archivo, más abajo veras el código siguiente: <!-- PRODUCTOS --> ..... ...... <td class="product left"> {if $display_product_images} <table width="100%"> <tr> <td width="15%"> {if isset($order_detail.image) && $order_detail.image->id} {$order_detail.image_tag} {/if} </td> <td width="5%"> </td> <td width="80%"> {$order_detail.product_name} </td> </tr> </table> {else} {$order_detail.product_name} {/if} </td> 2.2 si te fijas hay 4 porcentajes, los importantes son 15%, 5% y 80%. Tendras que jugar con esos porcentajes a ver si reduciendo el espacio que ocupa la imagen se te mantiene en la misma línea. 2.3 si la modificacion de los porcentajes no funciona, seguramente tendras que ir a PREFERENCIAS --> IMAGENES y modificar el tamaño de la imagen que se usa para el carrito que no se si sera " cart-default " o bien " small-default ". 2.4 si has tenido que seguir el paso 2.3, tendras que regenerar las imagenes en esa misma seccion donde hiciste la modificación, pero no todas... SOLAMENTE LA QUE HAS MODIFICADO. NOTA CON EL PUNTO 2.4: no se que tipo de servidor tendrás pero en la mayoría de los casos, al hacerse algo como eso te aparecera error 500 o algo asi. sigue las instrucciones que te vienen justo al final de esa sección. "Selecciona "No" sólo si se agotó el tiempo de tu servidor y necesitas continuar con la regeneración." 2.5 la solución más facil sería desactivar las imagenes en las facturas. tendras que ir a PEDIDOS --> FACTURAS y al final tienes unas opciones. ESPERO HABERTE AYUDADO. SALUDOS Y SUERTE. Mikel... Buenas tardes. Muchísimas gracias por tu ayuda. Con la ayuda de todos ustedes he ido avanzando poco a poco. Te adjunto mis avances. Saludos cordiales, AliceCAD GN002323.pdf Share this post Link to post Share on other sites
mikel EPALZA 2 Posted September 6, 2019 hola, bueno el primer fallo de mi solución es que sólo hemos quitado de la cabecera la columna "precio base", pero no la columna entera con lo cual se te desplazan las columnas hacia la izquierda y no te coinciden con las cabeceras. he estado mirando en los archivos pdf pero no encuentro como desactivar toda la columna, principalmente porque en mis facturas no aparece, quizas sea porque uso la factura b2b de prestashop. asi que no se voy a poder ayudarte. entre tanto yo activaria de nuevo la expresion de la cabecera paraque por lo menos no se quede tan fea de cara al cliente. saludos. Share this post Link to post Share on other sites
AliceCAD 0 Posted September 6, 2019 7 hours ago, mikel EPALZA said: hola, bueno el primer fallo de mi solución es que sólo hemos quitado de la cabecera la columna "precio base", pero no la columna entera con lo cual se te desplazan las columnas hacia la izquierda y no te coinciden con las cabeceras. he estado mirando en los archivos pdf pero no encuentro como desactivar toda la columna, principalmente porque en mis facturas no aparece, quizas sea porque uso la factura b2b de prestashop. asi que no se voy a poder ayudarte. entre tanto yo activaria de nuevo la expresion de la cabecera paraque por lo menos no se quede tan fea de cara al cliente. saludos. Hola, Mikel. Buenas tardes. Te agradezco infinitamente tu ayuda. Por supuesto que me ayudaste. Con tu ayuda y la de Gerardo, tuve el valor de abrir los archivos y comenzar a mover valores. Aunque tengo amplia experiencia en el uso y entrenamiento de herramientas de CAD/CAM/CAE, el renglón de la programación no es uno de mis fuertes. Deseo que tengas un excelente fin de semana. Gracias por tu enseñanza. Saludos, AliceCAD Share this post Link to post Share on other sites
mikel EPALZA 2 Posted September 7, 2019 Hola de nuevo, creo que ya se que más tienes que desactivar en tus facturas. esta todo en el mismo archivo mencionado anteriormente. lo primero es desactivar (como has hecho en los mensajes anteriores) la cabecera. despues más abajo tienes esta linea de codigo, en mi archivo esta mas o menos en la linea 77 y es este codigo: {if isset($layout.before_discount)} <td class="product center"> {if isset($order_detail.unit_price_tax_excl_before_specific_price)} {displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_before_specific_price} {else} -- {/if} </td> {/if} asi que tienes que dejarlo asi: (fijate en las dos expresiones en negrita antes y despues de <td ... />td {if isset($layout.before_discount)} <!-- <td class="product center"> {if isset($order_detail.unit_price_tax_excl_before_specific_price)} {displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_before_specific_price} {else} -- {/if} </td> --> {/if} prueba a ver si se te ha de solucionado. por otro lado, veo en tus facturas que la letra de las direcciones de entrega y facturacion es un poco grande, yo la haría más pequeña desde el archivo " invoice.style-tab.tpl " en las primeras líneas tienes: {assign var=color_header value="#F0F0F0"} {assign var=color_border value="#000000"} {assign var=color_border_lighter value="#CCCCCC"} {assign var=color_line_even value="#FFFFFF"} {assign var=color_line_odd value="#F9F9F9"} {assign var=font_size_text value="9pt"} {assign var=font_size_header value="9pt"} {assign var=font_size_product value="9pt"} {assign var=height_header value="20px"} {assign var=table_padding value="4px"} aqui tienes que jugar con los valores "... font_size ..." poniendo 8pt, 10pt... etc. 8 seria más pequeño y 10 más grande. ademas si bajas en este archivo o si haces una busqueda de texto en el archivo tienes la expresion "font-weight" y donde aparece "bold" quiere decir que ese texto aparecera en negrita. pero si cambias "bold" por "normal" aparecera el texto normal. valgame la redundancia. Entonces en la factura te apareceran las direcciones con letra normal que es más pequeña. saludos y ya me comentaras Share this post Link to post Share on other sites
AliceCAD 0 Posted September 9, 2019 On 9/7/2019 at 2:55 AM, mikel EPALZA said: Hola de nuevo, creo que ya se que más tienes que desactivar en tus facturas. esta todo en el mismo archivo mencionado anteriormente. lo primero es desactivar (como has hecho en los mensajes anteriores) la cabecera. despues más abajo tienes esta linea de codigo, en mi archivo esta mas o menos en la linea 77 y es este codigo: {if isset($layout.before_discount)} <td class="product center"> {if isset($order_detail.unit_price_tax_excl_before_specific_price)} {displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_before_specific_price} {else} -- {/if} </td> {/if} asi que tienes que dejarlo asi: (fijate en las dos expresiones en negrita antes y despues de <td ... />td {if isset($layout.before_discount)} <!-- <td class="product center"> {if isset($order_detail.unit_price_tax_excl_before_specific_price)} {displayPrice currency=$order->id_currency price=$order_detail.unit_price_tax_excl_before_specific_price} {else} -- {/if} </td> --> {/if} prueba a ver si se te ha de solucionado. por otro lado, veo en tus facturas que la letra de las direcciones de entrega y facturacion es un poco grande, yo la haría más pequeña desde el archivo " invoice.style-tab.tpl " en las primeras líneas tienes: {assign var=color_header value="#F0F0F0"} {assign var=color_border value="#000000"} {assign var=color_border_lighter value="#CCCCCC"} {assign var=color_line_even value="#FFFFFF"} {assign var=color_line_odd value="#F9F9F9"} {assign var=font_size_text value="9pt"} {assign var=font_size_header value="9pt"} {assign var=font_size_product value="9pt"} {assign var=height_header value="20px"} {assign var=table_padding value="4px"} aqui tienes que jugar con los valores "... font_size ..." poniendo 8pt, 10pt... etc. 8 seria más pequeño y 10 más grande. ademas si bajas en este archivo o si haces una busqueda de texto en el archivo tienes la expresion "font-weight" y donde aparece "bold" quiere decir que ese texto aparecera en negrita. pero si cambias "bold" por "normal" aparecera el texto normal. valgame la redundancia. Entonces en la factura te apareceran las direcciones con letra normal que es más pequeña. saludos y ya me comentaras Muchas gracias Mikael, por todo el tiempo que me has dedicado. Te anexo un archivo de pedido para que veas los avances. Solo me falta poder quitar el bloque (en la parte superior) de los datos de domicilio de facturación. Me encontré un archivo llamado invoice.addresses-tab.tpl y estuve jugando con comentar secciones en él, pero no obtuve el resultado deseado. Le seguiré buscando, para que solo me ponga un bloque. Saludos cordiales, AliceCAD GN002355.pdf Share this post Link to post Share on other sites
mikel EPALZA 2 Posted September 10, 2019 (edited) Hola Alice, Bueno por lo pronto me alegro mucho de que hayas conseguido ya arreglar lo del precio base y la imagen, ahora la factura se te ve bien. Por lo que me preguntas de quitar la dirección de facturación. Antes de hacer nada, yo consultaria si en tu pais se permite eso. En España desde luego tiene que constar obligatoriamente el nombre y dirección de facturación asi como el documento de identidad del cliente. dame algo de tiempo para ver si consigo quitarlo y te digo como se hace. En principio en el archivo "invoice.addresses-tab.tpl" imagino que descomentarias la columna siguiente, ¿verdad? <table id="addresses-tab" cellspacing="0" cellpadding="0"> <tr> <td width="33%"><span style="font-size:10px;"> </span><br/><br/> {if isset($order_invoice)}{$order_invoice->shop_address}{/if} </td> <td width="33%">{if $delivery_address}<span style="font-size:10px;">{l s='Delivery Address' pdf='true'}</span><br/><br/> {$delivery_address} {/if} </td> <!-- <td width="33%"><span style="font-size:10px;">{l s='Billing Address' pdf='true'}</span><br/><br/> {$invoice_address} </td> --> </tr> </table> Y ahora que lo estaba poniendo aqui, creo que ya se que es lo que te pasa a ti, que si eliminamos una columna, las otras siguen ocupando el mismo espacio. Me explico, si te fijas en el codigo hay 3 columnas que cada una ocupa un 33% del total del espacio (100%). Por lo tanto, si eliminamos una, las otras tienen que ocupar es mismo total de espacio (100%), asi que ponles un 50% a cada una; y si se te descuadra pon 49% y 50%, o un 30% y 70%. eso ya a tu gusto. POSDATA: de momento volveria a cambiar el tamaño de la letra de las direcciones porque a mi parece se sigue viendo grande. pero claro lo digo como se ve en el ordenador, no se si una vez impresa la factura se vera mejor. Ademas la letra donde van las fechas y los numeros de factura es demasiado pequeña a mi entender, tambien tendrías que cambiarla. saludos y ya me dices como te ha ido. Edited September 10, 2019 by mikel EPALZA (see edit history) Share this post Link to post Share on other sites
AliceCAD 0 Posted September 10, 2019 10 hours ago, mikel EPALZA said: Hola Alice, Bueno por lo pronto me alegro mucho de que hayas conseguido ya arreglar lo del precio base y la imagen, ahora la factura se te ve bien. Por lo que me preguntas de quitar la dirección de facturación. Antes de hacer nada, yo consultaria si en tu pais se permite eso. En España desde luego tiene que constar obligatoriamente el nombre y dirección de facturación asi como el documento de identidad del cliente. dame algo de tiempo para ver si consigo quitarlo y te digo como se hace. En principio en el archivo "invoice.addresses-tab.tpl" imagino que descomentarias la columna siguiente, ¿verdad? <table id="addresses-tab" cellspacing="0" cellpadding="0"> <tr> <td width="33%"><span style="font-size:10px;"> </span><br/><br/> {if isset($order_invoice)}{$order_invoice->shop_address}{/if} </td> <td width="33%">{if $delivery_address}<span style="font-size:10px;">{l s='Delivery Address' pdf='true'}</span><br/><br/> {$delivery_address} {/if} </td> <!-- <td width="33%"><span style="font-size:10px;">{l s='Billing Address' pdf='true'}</span><br/><br/> {$invoice_address} </td> --> </tr> </table> Y ahora que lo estaba poniendo aqui, creo que ya se que es lo que te pasa a ti, que si eliminamos una columna, las otras siguen ocupando el mismo espacio. Me explico, si te fijas en el codigo hay 3 columnas que cada una ocupa un 33% del total del espacio (100%). Por lo tanto, si eliminamos una, las otras tienen que ocupar es mismo total de espacio (100%), asi que ponles un 50% a cada una; y si se te descuadra pon 49% y 50%, o un 30% y 70%. eso ya a tu gusto. POSDATA: de momento volveria a cambiar el tamaño de la letra de las direcciones porque a mi parece se sigue viendo grande. pero claro lo digo como se ve en el ordenador, no se si una vez impresa la factura se vera mejor. Ademas la letra donde van las fechas y los numeros de factura es demasiado pequeña a mi entender, tambien tendrías que cambiarla. saludos y ya me dices como te ha ido. Muchas gracias por tu atención y ayuda. Ya hice los cambios en el archivo invoice.style-tab.tpl (te lo adjunto) y, sin embargo, no se ve mucho el cambio de las leyendas pequeñas y cambió poco el de las grandes. Te adjunto también cómo se ven ahora los pedidos. Muchísimas gracias por todo. Saludos, AliceCAD GN002355.pdf invoice.style-tab.tpl Share this post Link to post Share on other sites
LightSakura 0 Posted December 12, 2020 Hola, Necesitaría añadir en la lista de productos del backoffice algunas columnas, ya he visto algunas que han indicado aqui pero sigo necesitando otras, Precio oferta (pero el precio en el que queda al cliente, con iva ya incluido, y tener una columna tipo si/no que sea si tiene precio oferta o no para poder filtrar, también quisiera eliminar la columna de precio sin iva. También necesitaría poder mover la columna de categorias en la ficha de producto a la parte inferior, esto se hacerlo pero no consigo encontrar el fichero tpl donde hacerlo. Podría alguien ayudarme? gracias de antemano Tengo prestashop 1.7.6 Share this post Link to post Share on other sites
LightSakura 0 Posted December 28, 2020 Alguna ayuda por favor? Share this post Link to post Share on other sites