Jump to content

Variable de Telefono en el pedido actual (SOLUCIONADO)


Recommended Posts

Buenos Dias, alguien me podrá ayudar a desburrarme, les comento.

necesito agregar un boton de whatsapp en el pedido que estoy viendo actualmente, para poder contactar directamente desde ahi a la persona que realizo una compra, (esto lo tengo en otra tienda y es muy útil).

el boton ya lo agregue y quedo perfecto como queria, el problema se da con la variable de telefono que no se cual es, para que coloque el teléfono del comprador en el link del boton de whapp.

les dejo captura y el codigo para ver si alguien tiene idea de cual es la variable que toma el telefono de la cuenta del comprador del pedido para poder usarlo en el botón.

espero se entienda.

 

   <form action="https://wa.me/(aca va la variable de tel que no se cual es)" target="_blank">
    <div class="input-group">
              <button type="submit" class="btn btn-action1">
        <i class="material-icons" aria-hidden="true">phone</i>
        {{ 'Whatsapp'|trans }}
      </button>
    </div>
  </form>

 

Screenshot_4.jpg

Edited by 1076626_1508431284 (see edit history)
Link to comment
Share on other sites

8 hours ago, ventura said:

Lo mejor es que realices la modificación mediante un módulo que sobreescriba el archivo order_actions.html.twig.Y que utilice el parámetro del id del pedido para obtener el dato necesario

a bien! ahi si me la complicaste. entiendo muy poco y pense que quiza utilizando una variable podria acceder a ese dato tal como pasa con el email.

   <a href="mailto:{{ orderForViewing.customer.email }}">
              {{ orderForViewing.customer.email }}
            </a>

se podra hacer algo asi?

Link to comment
Share on other sites

Hola.

Puedes añadir ese botón con el hook: ActionGetAdminOrderButtons   Mas info aqui

Ese hook recibe como parámetro el id_order del que puedes sacar el objeto Order con toda la información del pedido (incluida la dirección de entrega o el cliente) y por tanto el teléfono.

$order = new Order($params['id_order']);

/** @var \Symfony\Bundle\FrameworkBundle\Routing\Router $router */
$router = $this->get('router');

/** @var \PrestaShopBundle\Controller\Admin\Sell\Order\ActionsBarButtonsCollection $bar */
$bar = $params['actions_bar_buttons_collection'];

/* Algunos ejemplos de botones con links

$bar->add(
	new ActionsBarButton('btn-info', ['href' => 'https://www.prestashop.com/'], 'Go to prestashop'));
$bar->add(
	new ActionsBarButton('btn-dark', ['href' => 'https://github.com/PrestaShop/example-modules/tree/master/demovieworderhooks'],
	'Go to GitHub'));
$createAnOrderUrl = $router->generate('admin_orders_create');
$bar->add(
	new ActionsBarButton('btn-link', ['href' => $createAnOrderUrl], 'Create an order'));

*/

En tu caso el verde seria de una clase btn-success creo.

Claro, todo esto en un módulo. 🤔

 

Link to comment
Share on other sites

On 3/15/2022 at 2:33 PM, Manuel_GT said:

Hola.

Puedes añadir ese botón con el hook: ActionGetAdminOrderButtons   Mas info aqui

Ese hook recibe como parámetro el id_order del que puedes sacar el objeto Order con toda la información del pedido (incluida la dirección de entrega o el cliente) y por tanto el teléfono.

$order = new Order($params['id_order']);

/** @var \Symfony\Bundle\FrameworkBundle\Routing\Router $router */
$router = $this->get('router');

/** @var \PrestaShopBundle\Controller\Admin\Sell\Order\ActionsBarButtonsCollection $bar */
$bar = $params['actions_bar_buttons_collection'];

/* Algunos ejemplos de botones con links

$bar->add(
	new ActionsBarButton('btn-info', ['href' => 'https://www.prestashop.com/'], 'Go to prestashop'));
$bar->add(
	new ActionsBarButton('btn-dark', ['href' => 'https://github.com/PrestaShop/example-modules/tree/master/demovieworderhooks'],
	'Go to GitHub'));
$createAnOrderUrl = $router->generate('admin_orders_create');
$bar->add(
	new ActionsBarButton('btn-link', ['href' => $createAnOrderUrl], 'Create an order'));

*/

En tu caso el verde seria de una clase btn-success creo.

Claro, todo esto en un módulo. 🤔

 

Hola Manuel gracias por tu ayuda, estoy perdido con el tema de generar un módulo (estoy metiendo mano de metido que soy ya que entiendo poco y nada de programación y ahi está mi problema). me parece que la idea esta buena pero no podre aplicarla. pense que seria mas facil. :(

Link to comment
Share on other sites

On 3/15/2022 at 2:33 PM, Manuel_GT said:

Hola.

Puedes añadir ese botón con el hook: ActionGetAdminOrderButtons   Mas info aqui

Ese hook recibe como parámetro el id_order del que puedes sacar el objeto Order con toda la información del pedido (incluida la dirección de entrega o el cliente) y por tanto el teléfono.

$order = new Order($params['id_order']);

/** @var \Symfony\Bundle\FrameworkBundle\Routing\Router $router */
$router = $this->get('router');

/** @var \PrestaShopBundle\Controller\Admin\Sell\Order\ActionsBarButtonsCollection $bar */
$bar = $params['actions_bar_buttons_collection'];

/* Algunos ejemplos de botones con links

$bar->add(
	new ActionsBarButton('btn-info', ['href' => 'https://www.prestashop.com/'], 'Go to prestashop'));
$bar->add(
	new ActionsBarButton('btn-dark', ['href' => 'https://github.com/PrestaShop/example-modules/tree/master/demovieworderhooks'],
	'Go to GitHub'));
$createAnOrderUrl = $router->generate('admin_orders_create');
$bar->add(
	new ActionsBarButton('btn-link', ['href' => $createAnOrderUrl], 'Create an order'));

*/

En tu caso el verde seria de una clase btn-success creo.

Claro, todo esto en un módulo. 🤔

 

ese codigo esta en /src/PrestaShopBundle/Controller/Admin/Sell/Order/OrderController.php  ? por que no lo encuentro

Link to comment
Share on other sites

 

Bueno a ver.

Como veo que lo del módulo te ha generado mas problemas de los que ya tenías, quizas podamos hacerlo de otra forma. Mencionas en tu código:

On 3/15/2022 at 2:26 PM, 1076626_1508431284 said:

orderForViewing.customer.email

Ese objeto (orderForViewing) es enorme.  Su definición de clase esta en src\Core\Domain\Order\QueryResult\OrderForViewing.php

Allí verás que la propiedad customer es realmente un objeto llamado OrderCustomerForViewing con las propiedades de nombre, email etc. Pero no de teléfono. Pero tambien hay otra propiedad llamada shippingAddress que realmente es un objeto de la clase OrderShippingAddressForViewing que si tiene la propiedad phoneNumber  y mobilePhoneNumber y otro llamado invoiceAddress de tipo  OrderInvoiceAddressForViewing que tambien las tiene.

Asi pues, debería funcionar algo como:

orderForViewing.shippingAddress.mobilePhoneNumber o orderForViewing.invoiceAddress.mobilePhoneNumber

Pero CUIDADO. Estas clases están marcadas "deprecated" y serán eliminadas en el futuro. Si las usas y luego subes de versión en el futuro, el código dará error.

En su lugar aparece el método getInvoiceAddressFormatted() que devuelve un string!! Sinceramente me parece un error eliminar esas clases con tanta información valiosa por un string.

Espero te sirva.

 

Link to comment
Share on other sites

18 minutes ago, Manuel_GT said:

 

Bueno a ver.

Como veo que lo del módulo te ha generado mas problemas de los que ya tenías, quizas podamos hacerlo de otra forma. Mencionas en tu código:

Ese objeto (orderForViewing) es enorme.  Su definición de clase esta en src\Core\Domain\Order\QueryResult\OrderForViewing.php

Allí verás que la propiedad customer es realmente un objeto llamado OrderCustomerForViewing con las propiedades de nombre, email etc. Pero no de teléfono. Pero tambien hay otra propiedad llamada shippingAddress que realmente es un objeto de la clase OrderShippingAddressForViewing que si tiene la propiedad phoneNumber  y mobilePhoneNumber y otro llamado invoiceAddress de tipo  OrderInvoiceAddressForViewing que tambien las tiene.

Asi pues, debería funcionar algo como:

orderForViewing.shippingAddress.mobilePhoneNumber o orderForViewing.invoiceAddress.mobilePhoneNumber

Pero CUIDADO. Estas clases están marcadas "deprecated" y serán eliminadas en el futuro. Si las usas y luego subes de versión en el futuro, el código dará error.

En su lugar aparece el método getInvoiceAddressFormatted() que devuelve un string!! Sinceramente me parece un error eliminar esas clases con tanta información valiosa por un string.

Espero te sirva.

 

Sos un Genio anduvo perfecto con "orderForViewing.shippingAddress.mobilePhoneNumber" era lo que buscaba.. entiendo lo que me decis, con subir de version te referis a hacer un update de prestashop? por que si es asi en este momento estoy usando la 1.7.7.7 y corre perfecto, actualice hace poco a 1.7.8.3 y me enloquecio la cantidad de errores que me dio asi que volvi al 1.7.7.7 y ahi me quedare.

Link to comment
Share on other sites

Me alegro que te haya servido.  😉

Segun la documentación las clases desaparecerán en la next "Mayor" version, por tanto en la 1.8. La 1.7.7.x las mantendrá aunque con un aviso de "deprecated".

Por favor, marca el post como "solucionado"

Gracias!

 

Link to comment
Share on other sites

  • 1076626_1508431284 changed the title to Variable de Telefono en el pedido actual (SOLUCIONADO)

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...