MuyBueno.cl Posted August 25, 2021 Share Posted August 25, 2021 Estimados tengo el siguiente problema, tengo configurados N transportistas, los cuales tienen asignados sus id_carrier asumiendo que el carrier "A" tiene el ID 1, y el carrier "B" tiene el ID 2 si se realiza una compra y se lececciona un carrier de los configurados quedaria asi Orden N°1 con Carrier 1 pero si por ABC motivo modifico algo en el Carrier (Carrier A), Prestashop me modifica el ID de dicho carrier y ahora, en vez de tener Carrier A con el codigo 1 y Carrier B con el codigo 2, el Carrier A ahora tiene el ID 3, y el ID 1 ya no esta en la lista de Transportistas si entran mas ordenes el carrier sigue apareciendo disponible con su nombre normal "Carrier A", pero al generar la orden su ID ahora es 3 por lo cual... me encuentro en la base de datos en el campo Carrier_id con el numero 1 y numero 3, siendo que es el mismo Transportista (Carrier A) la pregunta viene como obvia... de que manera puedo hacer para que cada vez que modifique un elemento de un carrier su id no se modifique, que siempre siga manteniendo su "id_carrier", independiente de los cambios que realice o de que manera actualizar la base de datos (que tablas) para pasar los carrier_id antiguos al nuevo codigo. porque requiero solucionarlo... si consulto la orden numero 1, que originalmente selecciono el CARRIER A que tenia el id_carrier 1 y veo el transportista asignado, este me aparece en blanco... porque... porque busca el ID_CARRIER y no el nombre, pero el id carrier original fue borrado o deshabilitado al realizar la modificación pasando a ser el ID_CARRIER 3 otro ejemplo practico seria.. si tengo un TPL modificado, que haga un cargo del 10% al transportista 1 (1 es el carrier id), al hacer la modificacion desde el backoffice de los transportistas y como ya dije.. cambiara el carrier id, por lo tanto la condicional que evalua el carrier id simplemente no funcionara porque el carrier bajo el cual fue programado ya no existe o ha sufrido la modificacion de su Carrier_id (perdon por mencionar tanto carrier_id, pero es necesario) espero haber sido claro en el problema presentado, quedo atento a comentarios Link to comment Share on other sites More sharing options...
ventura Posted August 25, 2021 Share Posted August 25, 2021 Prestashop dispone de un action hook, actionCarrierUpdate desde el que se puede obtener el id del transportista antes de la modificación y el nuevo id generado, eg $oldCarrier = (int)$params['id_carrier']; $newCarrier = (int)$params['carrier']->id; 1 Link to comment Share on other sites More sharing options...
MuyBueno.cl Posted August 25, 2021 Author Share Posted August 25, 2021 hace 42 minutos, ventura dijo: Prestashop dispone de un action hook, actionCarrierUpdate desde el que se puede obtener el id del transportista antes de la modificación y el nuevo id generado, eg $oldCarrier = (int)$params['id_carrier']; $newCarrier = (int)$params['carrier']->id; hola.. gracias por tu respuesta... pero no tengo problemas para identificar el id_carrier inicial y el nuevo, de ehcho por eso ingrese el tema, porque se exactamente cuales son los id_carrier que tenia antes y despues el transportista, el tema va por evitar el cambio del id_carrier, de manera tal de no encontrarme en la base de datos con N id_carrier para un mismo transportista he intentado actualizar el carrier_id de las tablas orders, carrier (id, lang, zone, etc) pero no he logrado operativo con el id original (el que tenia antes de la modificacion) volviendo al ajemplo del CARRIER A que tiene el ID 1 y que luego de la modificacion queda con ID 3 si veo la tabla ps_carrier el id_carrier 1 (transportista A) en el campo deleted aparece con un 1 (true) pero mas abajo, al final se ha creado otro transportista, un "Transportista A" con el id 3, el cual esta activo al hacer la modificacion desde Transporte-Transportista aparece el "Transportista A" con el id 3, pero si consulto la base de datos ps_order, la orden realizada aun aparece en su campo "carrier_id" con el numero 1, que corresponde al id_carrier original "transportista A" lo ideal seria, que al realizar un cambio en cualquier transportista desde Transporte-Transportista, se actualice no solo la tabla transportista, sino que todas las afectadas con dicho cambio de ID, cosa que no sucede... Link to comment Share on other sites More sharing options...
gusman126 Posted August 25, 2021 Share Posted August 25, 2021 Usa id reference del carrier como identificación principal no cambia cuando guardas o modificas , luego puede que necesites una consulta SQL para ver el id de esa reference. El hook de carrierupdate no se debería usar Link to comment Share on other sites More sharing options...
Pixefora D Posted August 25, 2021 Share Posted August 25, 2021 Como bien dice @gusman126, debes guiarte por el id_reference. Prestashop lo hace así para guardar en cada pedido el carrier que se utilizó en ese momento con su tarifa correspondiente. Utiliza el id_carrier para ver el id_reference y guiate por este último. Link to comment Share on other sites More sharing options...
MuyBueno.cl Posted August 25, 2021 Author Share Posted August 25, 2021 hace 9 horas, Pixefora D dijo: Como bien dice @gusman126, debes guiarte por el id_reference. Prestashop lo hace así para guardar en cada pedido el carrier que se utilizó en ese momento con su tarifa correspondiente. Utiliza el id_carrier para ver el id_reference y guiate por este último. Hola... gracias... efectivamente el id_reference no cambia, el cual podria usar para TPL modificados, es una buena solucion para ese problema, pero igual tengo la problematica en modulos que usan el carrier_id del transportista como llave principal ahora, que fue lo que hice... y en parte se soluciono... realice una consulta sql directamente en la base, cambiando en la tabla order el campo id_carrier con el nuevo id_carrier simplemente una sentencia update, de esa forma homologue la base con el transportista que esta configurado como final (id_carrier nuevo) pero... me salta otro problema con eso, en el cuadro desplegable que sale cuando uno desea asignar el tracking number de un pedido... en la lista de transportistas solo aparece el de retiro en tienda, debiendo aparecer al menos cinco transportistas... sin dejarme cambiar el transportista ahora... si entran nuevas ordenes, estas nuevas ordenes toman el id_carrier nuevo, y al momento de querer agregar el tracking number si muestra los otros transportistas... 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