Prestashop 1.6, clientes y pedidos, stock y combinaciones

Estuvimos administrando una tienda online con Prestashop 1.4, para lo que elaboramos unos módulos personalizados para una gestión de stock rápida y fácil. La forma de gestionar el stock ha cambiado desde la versión de Prestashop 1.5, versión que nos hemos saltado por varios motivos (hay muchas discusiones al respecto).

Después de consultar las fuentes que figuran al pie de esta entrada, ahora conocemos mejor cómo las nuevas versiones como Prestashop 1.6 controlan el stock de los productos. Intuimos que este cambio ha sido causado por la aparición de software ERP programado por varias empresas (y la necesidad de éste para tiendas con amplio catálogo y variedad de combinaciones de producto).

Stock en la base de datos

Hola!
A ver en la tabla «ps_stock_available» tienes de cada producto y
para cada tienda una entrada con el stock final, eso si, siempre que en
Preferencias > Productos tengas la administración avanzada de
stock a «no». Si la tienes en sí, el stock se calcula sumando los movimientos de stock de cada almacén de ps_stock_mvt.

En esa tabla se indexan las cantidades del producto por combinaciones. Nuestro módulo filtra las combinaciones de cada producto y las divide según el grupo de atributos que necesitamos. En el caso concreto de www.lacasadeljamon.com.es, el grupo de atributos que controla el stock es el conjunto de pesos de cada producto. Este caso concreto tiene 40 combinaciones por cada peso de cada producto. Teniendo este dato, hemos elaborado un módulo que actualiza las cantidades de estas combinaciones.

Para los productos con combinaciones, en ps_stock_available se establecen las catidades para cada combinación. Hay que añadir otro registro, con id_product_attribute = 0, por cada producto con combinaciones (si no, no se mostrará el botón del carrito en la página del producto). Nuestro módulo tiene una línea concreta en su código para hacer esto.

Sobre los impuestos de los productos

http://www.prestashop.com/forums/topic/284753-problema-a-intentar-importar-archivo-catalago-productos-xampp/

Problema al importar CSV de gran tamaño: http://programadorphp.es/script-para-importar-productos-y-categorias-en-prestashop#comment-14249

La columna de la tabla ps_product que informa de los impuestos del producto NO da la ID FINAL de los impuestos, hay que hacer otra consulta a otra tabla que sí relaciona los campos id_tax_rules_group con id_tax.

No es lo mismo un impuesto (p. ej. IVA 21%) que una regla de impuestos (p. ej. no aplicar IVA a las Islas Canarias), y debemos entender bien este concepto a la hora de trabajar con Prestashop, ya que nos permitirá configurar correctamente los impuestos para determinadas localizaciones.

Sobre el catálogo y los atributos y combinaciones

Encontramos sólo leves diferencias en la base de datos en lo concerniente a las combinaciones de productos. La más notable es de nuevo la inclusión de tablas y campos relativos a la funcionalidad de multitienda que incorpora Prestashop 1.6.

Las siguientes tablas no cambian:

ps_attribute_impact
ps_attribute_lang
ps_attribute_group_lang

ps_product_attribute_combination
*ps_product_attribute_image – de momento no usamos esta tabla

Estas tablas son de la nueva versión exclusivamente:


(adsbygoogle = window.adsbygoogle || []).push({});

ps_product_attribute_shop 
ps_attribute_shop
ps_attribute_group_shop

Las siguientes tablas cambian un poco:

ps_attribute: incluye un nuevo campo position
ps_attribute_group: incluye un nuevo campo position y group_type

ps_product_attribute: nuevo campo available

Sobre otras tablas de Prestashop


Tablas que no tienen que ver con productos o combinaciones, pero que incluimos:



ps_order_state: En la nueva versión tiene nuevos campos relativos a los estados del pedido.

ps_order_state_lang: Las tablas son iguales en las dos versiones.

Importación de clientes

Tablas ps_customer de versiones de Prestashop 1.4 y 1.6.
Los asteriscos indican los campos nuevos de la nueva versión.

TABLA ps_customer Prestashop 1.4 (20 campos)

id_customer
id_gender
id_default_group
secure_key
note
email
passwd
last_passwd_gen
birthday
lastname
newsletter
ip_registration_newsletter
newsletter_date_add
optin
firstname
active
deleted
is_guest
date_add
date_upd

TABLA ps_customer Prestashop 1.6 (31 campos)

id_customer
id_shop_group*
id_shop*
id_gender
id_default_group
id_lang*
id_risk*
company*
siret*
ape*
firstname
lastname
email
passwd
last_passwd_gen
birthday
newsletter
ip_registration_newsletter
newsletter_date_add
optin
website*
outstanding_allow_amount*
show_public_prices*
max_payment_days*
secure_key
note
active
is_guest
deleted
date_add
date_upd

Importación de pedidos

TABLA ps_orders Prestashop 1.4 (32 campos)

id_order
id_carrier
id_lang
id_customer
id_cart
id_currency
id_address_invoice
id_address_delivery
reference
secure_key
payment
conversion_rate
module
recyclable
gift
gift_message
shipping_numbre
total_discounts
total_paid
total_paid_real
total_products
total_products_wt
total_shipping
carrier_tax_rate
total_wrapping
invoice_number
delivery_number
invoice_date
delivery_date
valid
date_add
date_upd

TABLA ps_orders Prestashop 1.6 (44 campos)

id_order
reference
id_shop_group*
id_shop*
id_carrier
id_lang
id_customer
id_cart
id_currency
id_address_invoice
id_address_delivery
current_state*
secure_key
payment
conversion_rate
module
recyclable
gift
gift_message
mobile_theme*
shipping_number
total_discounts
total_discounts_tax_incl*
total_discounts_tax_excl*
total_paid
total_paid_tax_incl*
total_paid_tax_excl*
total_paid_real
total_products
total_products_wt
total_shipping
total_shipping_tax_incl*
total_shipping_tax_excl*
carrier_tax_rate
total_wrapping
total_wrapping_tax_incl*
total_wrapping_tax_excl*
invoice_number
delivery_number
invoice_date
delivery_date
valid
date_add
date_upd

CAMPOS AÑADIDOS DE LA VERSIÓN NUEVA:

id_shop_group*
id_shop*
current_state*
mobile_theme*
total_discounts_tax_incl*
total_discounts_tax_excl*
total_paid_tax_incl*
total_paid_tax_excl*
total_shipping_tax_incl*
total_shipping_tax_excl*
total_wrapping_tax_incl*
total_wrapping_tax_excl*

SOBRE OTRAS TABLAS:

En relación a las tablas de pedidos, destacamos:

– En la nueva versión no existe la tabla ps_order_discount.
La tabla ps_order_history es idéntica.

Tablas de los transportistas:

Prestashop 1.4:
ps_carrier
ps_carrier_group
ps_carrier_lang
ps_carrier_zone

Prestashop 1.6:
ps_carrier
ps_carrier_group
ps_carrier_lang
ps_carrier_shop*

  – id_carrier
  – id_shop – para multitienda, si no se tiene multitienda siempre es 1
ps_carrier_tax_rules_group_shop*

  – id_carrier
  – id_tax_rules_group
  – id_shop
ps_carrier_zone

Importar lista de clientes, productos, direcciones… con un archivo CSV

Hemos elaborado un módulo que nos permite generar los CSV para importar a Prestashop, gracias al análisis que hemos realizado de los cambios de las tablas de la base de datos.

Algunos de los datos no se puden importar con un CSV, debido a que la plataforma no incluye el recurso para importar esa información. Estos datos los «importamos» con una consulta MySQL que realiza otro módulo personalizado. Lo siguiente es una captura de este módulo, que hemos denominado «setraspasa».

El módulo que copia registros de una base de datos de 1.4 a otra de 1.6

Realizar consultas Mysql en los módulos de Prestashop


SELECT:

$result = Db::getInstance()->ExecuteS(«SELECT * FROM  `»._DB_PREFIX_.»nombre_tabla`»);

INSERT:

Db::getInstance()->Execute(‘INSERT INTO `’._DB_PREFIX_.’nombre_tabla` (`nombre_campo`) VALUES («valor»)’);


Ordenar alfabéticamente los atributos de los productos

Modificar el archivo classes/Product.php, la línea que reza:

ORDER BY ag.`position` ASC, a.`position` ASC, agl.`name` ASC’;

Ha de ser cambiada por la siguiente:

ORDER BY ag.`position` ASC, pac.`id_product_attribute`, a.`position` ASC, agl.`name` ASC’;

Alineación de atributos con botones de radio:

En themes/nombre_tema/product.css , añadir a  #attributes .attribute_list ul li la propiedad width:100%. Así los elementos de la lista ocuparán todo el ancho disponible y no se amontonarán en la misma línea.

Write a Reply or Comment

Your email address will not be published.