Problemas al añadir columna Método de Pago en el listado de Facturas

Tema en 'Soporte General' iniciado por bulli19, 12/4/12.

  1. bulli19

    bulli19 Nuevo usuario

    8
    0
    0
    Hola,

    Tengo un problema cuando intento mostrar el método de pago en la grid de facturas del panel de administración de magento (1.6.2)
    Para añadir dicha columna he añadido el siguiente código en el fichero app/code/local/Mage/AdminHtml/Block/Sales/Invoice/Grid.php :

    Insertar CODE, HTML o PHP:
    protected function _prepareCollection() {
    ....
    $collection->joinLeft('quote_payment', 'main_table.entity_id = quote_payment.payment_id', 'method');
    ...
    }
    protected function _prepareColumns() {
    ...
    $this->addColumn('method', array(
    'header' => Mage::helper('sales')->__('Payment Method'),
    'index' => 'method',
    'type' => 'text',
    ));
    ...
    }
    Esto "aparentemente" funciona. Digo aparentemente por que en muchas facturas el valor aparece "null", y por lo que he visto en la tabla sales_flat_quote_payment también hay muchos campos a "null" en la columna "method". Pero lo peor es que los pocos que salen bien realmente no lo estan, ya que si entras en la vista de la factura (donde siempre sale el método de pago correctamente) no coincide. La imagen (print1.jpg) muestra la vista de la grid, y la image (print2.jpg) muestra la tabla sales_flat_quote_payment

    También he probado con $collection->joinLeft('quote_payment', 'main_table.entity_id = quote_payment.quote_id', 'method'); pero aunque salen muchos más campos llenos, estos no son correctos.

    He intentado previamente con la tabla sales_flat_order_payment, pero ahí el método de pago siempre es checkmo, y lo que yo quiero es que salga cashondelivery o paypal_method.
    La imagen (print3.jpg) muestra como en la vista de un factura aparece el método pago, mientras que en la grid, para esa misma factura no sale nada.

    He mirado por muchas tablas en busca de algún lugar donde también salgan los métodos de pago, pero todo indica que son los de sales_flat_quote_payment.
    No entiendo lo que está pasando o como debo hacerlo para conseguir lo que quiero.

    Yo creo que el problema está en que estoy igualando una Foreing Key (main_table.entity_id) con un Primary Key (quote_payment.quote_id ó quote_payment.payment_id) que realmente no están relacionados, por ese motivo los valores no coinciden con el método de pago correcto. Pero según información de la red la tabla sales_flat_quote_payment tiene las siguientes propiedades:
    PRIMARY KEY (`payment_id`),
    KEY `IDX_SALES_FLAT_QUOTE_PAYMENT_QUOTE_ID` (`quote_id`),
    CONSTRAINT `FK_SALES_FLAT_QUOTE_PAYMENT_QUOTE_ID_SALES_FLAT_QUOTE_ENTITY_ID` FOREIGN KEY (`quote_id`) REFERENCES `sales_flat_quote` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE

    Entiendo que el main_table en este caso sería el sales_flat_quote ¿no?

    ¿Alguna sugerencia?



    Muchas gracias

    print1.jpg print2.jpg print3.jpg
     
  2.  
    Comunidad Magento orgullosamente patrocinada por el hosting y vps magento de FactoriaDigital.com.
  3. OSdave

    OSdave Super Moderador Miembro del equipo

    2.136
    4
    36
    el concepto de quote es el pedido antes de que esté confirmado (antes de que el cliente le haya dado a "confirmar pedido" en la última pantalla del checkout): no deberías ir por alli, sino por las tablas sales_flat_order

    Para lo que quieres hacer, tienes mi extensión (que funciona en la v1.6, a pesar de que no lo indique)
     
  4. bulli19

    bulli19 Nuevo usuario

    8
    0
    0
    Hola OSdave, muchas gracias por tu respuesta.

    He instalado tu extensión después de limpiar los cambios que yo había hecho en el código para que no hubiera conflictos, pero nada, no funciona nada. Supongo que es por que todavía hay algún problema, pero no se que puede ser. Yo solo he tocado los archivos code\local\Mage\Adminhtml\Block\Sales\Invoice\Grid.php y code\local\Mage\Core\Model\Resource\Db\Collection\Abstract.php pero los he renombrado por si a caso, por lo tanto no puede ser eso. En la grid de facturas salen las columnas por defecto. ¿No hay que hacer nada más en la extensión no? La instalación se ha realizado correctamente y no veo que haya ningún lugar donde activarla o desactivarla desde el menú del panel.

    De todos modos lo que decías de coger la info de sales_flat_order_payment yo ya lo probé, pero en ese campo siempre pone "checkmo". ¿Tu extensión se limita a coger ese campo o hace algo más? por que si sólo se li mita a filtrar dicho campo no me servirá.

    Si haces algo más y no consigo que me funcione tu extensión, ¿podrías decirme como haces el join de la colection para filtrar el campo "Método de Pago" o no lo haces así?

    En esta imagen se ve el árbol de ficheros que tengo ahora mismo (se ven los tuyos y los mios renombrados). Hay algún fichero más que añada tu extensión?
    print.jpg


    Gracias de todos modos.
     
    Última edición: 13/4/12
  5. OSdave

    OSdave Super Moderador Miembro del equipo

    2.136
    4
    36
    ¿has vaciado el cache? ¿has salido del admin y vuelto a entrar?
    puedes mirar el codigo de la extension para ver como lo he hecho.
     
  6. bulli19

    bulli19 Nuevo usuario

    8
    0
    0
    Sí sí, he hecho todo lo que dices.
    Ya me miraré el código para ver lo que haces. De todos modos, ¿me puedes decir simplemente lo de si coges el parámetro directamente de sales_flat_order_payment? Es que yo en la base de datos en esa tabla la única información que tengo de Método de pago es el valor "checkmo" para todo. Quizás mi problema esté al crear la order, no al filtrar sus atributos ¿no?

    ¿A parte de los ficheros que se ven en la imagen, tu extensión añade algún archivo más?

    Gracias por todo
     
  7. OSdave

    OSdave Super Moderador Miembro del equipo

    2.136
    4
    36
    aja, acabo de caer que lo quieres por el listado de facturas, y mi extension es por el listado de pedidos.
     
  8. bulli19

    bulli19 Nuevo usuario

    8
    0
    0
Cargando...

Compartir esta página

Cargando...