Dividir el pedido en pedidos separados y calcular el envío por separado con ups y fedex y diferentes direcciones de origen


8

Cuando un cliente llega a nuestra tienda y va a pagar varios artículos, necesito escribir un módulo para calcular el envío en función de varios factores. A partir de mi investigación, he determinado que debería ocurrir lo siguiente:

Primero, necesito separar los artículos del carrito en diferentes pedidos para el cálculo del envío. Quiero que los pedidos se ordenen por valor de atributo "vendedor". "Proveedor" es un atributo que agregamos al sistema que se aplica a todos los productos simples. Digamos que en el carrito hay una camisa rosa con el valor de "vendedor" "1", un lápiz con el valor de "vendedor" "1" y una camisa azul con el valor de "vendedor" "2". Todos los artículos con el valor de "proveedor" "1" deben ser un pedido, mientras que el artículo con el valor de "proveedor" "2" debe ser un pedido diferente. Veo que esta otra pregunta responde a este dilema, pero luego plantea otra.

En segundo lugar, necesito calcular el envío con las funciones de envío UPS y Fedex predeterminadas de Magento pero con una dirección de origen determinada por el número de valor del "proveedor" (almacenado en una tabla de base de datos separada). Cualquier sugerencia bienvenida!

Estoy usando fragmentos de código para comenzar desde aquí y aquí .

Probablemente tendré varias preguntas, pero las primeras son las que están en negrita arriba.

ACTUALIZACIÓN Decidí que sería mejor anular el módulo principal de magento de envíos múltiples para hacer lo que estoy tratando de hacer. ¡Por favor, ayúdenme a encontrar dónde y qué poner para manipular la funcionalidad de Magento de multipunto para dividir los artículos de un pedido en envíos basados ​​en el atributo "vendedor"! Estoy luchando con esto.


1
El multishipping de Magento hace esto de forma nativa. ¿Quizás pueda utilizar la funcionalidad de multipunto sin mostrarla al cliente?
philwinkle

Fuera del tema: ¿Le importaría aceptar respuestas o cerrar sus viejas preguntas abiertas? Estamos tratando de aumentar la tasa de respuesta durante la versión beta. Gracias.
philwinkle

1
Examinaré las respuestas múltiples y no aceptadas ahora. A menudo, no he aceptado porque me mudé a otra cosa y volveré a ella. Sin embargo, miraré y veré si me perdí algo
CaitlinHavener

Otra alternativa es implementar algo como Unirgy uDropship que también incorpora la funcionalidad de tipo de proveedor que está escribiendo actualmente; pero brinda a los vendedores un portal para el envío, genera etiquetas de envío y mucho más. No trabajo para, y no estoy respaldado por Unirgy.
philwinkle

1
No quiero usar una extensión de dropship. Hay muchos factores por los que no puedo.
CaitlinHavener

Respuestas:


3

Algo a tener en cuenta aquí es que es posible que solo necesite aplicar algunos cambios cosméticos en el front-end a las plantillas de multipunto ( template/checkout/multishipping/) para que los dos pedidos simplemente aparezcan como un pedido para el cliente. Las plantillas shipping.phtmly overview.phtmldividen los dos pedidos, cada uno con un encabezado (Dirección 1 de 2, etc.) y otra copia para mostrar que son dos pedidos.

En lugar del valor predeterminado, podría sugerir ser un poco creativo en estas plantillas para que los dos pedidos simplemente se dividan y aparezcan como dos líneas de pedido separadas.

El siguiente bit sería manejar diferentes orígenes de envío basados ​​en el atributo del proveedor. Esto tal vez podría hacerse en Mage_Shipping_Model_Shipping. Puede ver que en la parte superior es donde Magento está tomando la dirección de origen del envío de la configuración y luego más abajo en el requestToShipment()método, los elementos de la dirección de origen se asignan a la solicitud de envío (que supongo que se usaría más adelante dependiendo del método de envío llamado).

Esa al menos podría ser una dirección para ir. Al leer su pregunta y su actualización, tengo la impresión de que está haciendo esto más difícil de lo necesario. Recuerde siempre que, en general, es mejor dejar que Magento haga lo que quiere hacer, y solo modifique pequeños bits para manejar sus casos específicos. La mayoría de lo que necesita ya está hecho en el núcleo, por lo que parece un poco tonto reescribir los componentes de envío múltiple cuando puede haber opciones más simples.


¿Cómo calcularía entonces el envío de cada envío incluido por atributo de proveedor?
CaitlinHavener

Los cálculos de envío no cambiarían, ya Mage_Shipping_Model_Shippingque simplemente reemplazarían la dirección de origen en la solicitud de envío con el origen asignado a ese proveedor. Magento luego continuaría con su negocio y retiraría las tarifas de envío que se aplicarían a ese pedido. Posiblemente podría ver que uno de los módulos de envío de WebShopApps es útil aquí, ya que le permite asignar métodos de envío basados ​​en varios criterios. - De nuevo, todo esto es en teoría, no he hecho algo como esto antes, por lo que puede haber algunas advertencias (siempre las hay). -
pspahn

Estoy revisando esas extensiones de webshopapp. Creo que lo que estoy confundido en este momento por ... es lo que clase / método le dice a la clase Mage_Shipping_Model_Shipping "hey aquí hay una orden y estos son los elementos que contiene". ¿Dónde puedo encontrar eso?
CaitlinHavener

1
Eche un vistazo: tenga /app/code/core/Mage/Sales/Model/Quote.phpen cuenta que Magento no es tan lineal como otros carritos de compras. Baja por la madriguera del conejo y mira cómo las cotizaciones se cambian a pedidos (y créditos, etc.). En algún momento encontrarás los métodos que deseas modificar. Nuevamente, como dije anteriormente, a menudo es beneficioso simplemente invertir en un módulo de back-end de calidad (y lo más importante, el soporte) que logrará lo que necesita rápidamente. A algunos locos no les gusta que los cambien.
pspahn

Si está disponible para más detalles, por favor ayuda! Muchas gracias por la ayuda aquí también. Me estas salvando! ¡Este es el proyecto Magento más difícil que he tenido hasta la fecha! magento.stackexchange.com/questions/7635/…
CaitlinHavener
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.