Únete a la Comunidad Magento

Regístrate gratis para publicar preguntas y recibir un resumen semanal con lo mejor de la comunidad
REGISTRO GRATIS

Mi Odisea por insertar las marcas en M2Epro

Tema en 'Instalación y Configuración' iniciado por Interestellar, 10/5/16.

  1. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Estoy investigando como funciona internamente Magento en concreto el Modulo M2Epro, por eso mismo abro este hilo para hacer apuntes de mi investigación y recibir feedback mientras ayudo a gente que en el futuro tenga mi mismo problema.

    Básicamente acabo de entrar en una empresa y les urge añadir las Marcas y el MPN al modulo de M2Epro. Se de programación pero estoy algo oxidado con el PHP y el Magento no lo he tocado en mi vida así que voy a tener que hacer un esfuerzo extra.
    r0.PNG

    Lo curioso es que cuando llegue ya estaba el campo para estos, pero cuando se rellenan los datos estos no se encuentran.

    Aqui me planteo 3 preguntas que responder para descubrir donde esta el problema:

    1.¿Cual es la tabla en la base de datos que usa M2Epro para rellenar esos datos?
    2.¿Desde donde se rellenan los datos de la tabla de la pregunta 1?
    3.¿Donde se recogen los datos de la tabla de la pregunta 1 para subirlo a Ebay?
    4.¿Y si la aplicación no funciona así?

    Por lo que me voy a /public_html/magento/app/code/community/Ess/M2ePro/Model y me encuentro con un montón de carpetas para cada cosa.

    r2.PNG

    Muchas, Muchísimas carpetas hay una llamada Ebay a ver si tiene lo que me interesa.

    r3.PNG

    ¡Oh! ¡¿En serio?!

    Recuerdo que Magento funciona bajo Zend y es Orientado a Objetos.

    Me pongo a mirar los abstract a ver si veo algo parecido a;

    $this->load->model('Model_name', 'nombre_modelo_para_despistar');

    r1.PNG

    Esta es más o menos la formula que se usaba en CodeIgniter para decir a que te conectabas y me doy cuenta de que estoy buscando en el model, cuando eso se usa en el controlador para llamar al modelo.

    Vuelvo atras y me doy cuenta de una cosa:
    w1.PNG
    ¿Por qué hay demonios hay dos carpetas de controlador? ¿Quien ha hecho esto?

    Deduzco que la importante es "Controller" Porque Model y Helper no tienen esa "s". Y me meto en ella.

    Solo hay 2 archivos.
    -Una carpeta llamada "Adminhtml"
    -Un archivo PHP llamada "router.php"

    Entro en este ultimo y me encuentro con esto.

    "class Ess_M2ePro_Controller_Router extends Mage_Core_Controller_Varien_Router_Admin"

    Viendo la estructura de la clase tengo claro que hace referencia a otra carpeta y el directorio en el que esta.

    Paso de ese archivo y me meto en Adminhtml, me encuentro un monton archivos .php clonicos llamandose entre ellos.

    AdminController
    BaseController
    WizardController

    Y carpetas como "ebay" asi que entro en ella.

    MainController.php
    SimpleController.php
    WizardController.php

    Supongo que ya os imaginareis mi cara en estos instantes.
     

    Adjuntos:

    • r0.PNG
      r0.PNG
      Tamaño de archivo:
      44,6 KB
      Visitas:
      0
  2.  
    Comunidad Magento orgullosamente patrocinada por el hosting y vps magento de FactoriaDigital.com.
  3. Xarlie

    Xarlie Super Moderador Miembro del equipo

    2.715
    10
    38
    Me ha hecho gracia leer tu post :)

    La estructura que tiene el módulo es la correcta, incluso lo de Controller y controllers. Fíjate como los he nombrado yo porque también es super importante.
    En Controller están las clases abstract y en controllers están realmente los controladores a los que vas a llamar en la url.

    Pero en cualquier caso has escogido, de todos los módulos que hay, quizás el peor de todos (o casi) para entender lo que hace un módulo en Magento porque el módulo de M2e es enorme y hace mil cosas, controla otras mil y se conecta a mil opciones.
    Pero ¡suerte!
     
  4. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Si elegir lo ha elegido el que estuvo antes que yo. Al final me pasado a la aplicación de gestion interna y me he fijado en "api_magento.php" donde pone litaralmente como usuario del SOAP "Subida_autamica" y contiene todos los datos esenciales.

    Repetidamente leo " $this->soap_conex->call(";

    Así que me dirijo a buscar la carpeta SOAP en /magento/lib/

    Hay 2 carpetas y abro cada una de ellas, uso la búsqueda de la palabra "call" en todas ellas y acabo encontrando..
    nnnn.PNG

    Creo que ya tengo a la función y me da que ni la entiendo.
     
  5. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Retornamos nuestra aventura;

    La aplicacion de gestión tiene un archivo llamado "api_magento.php" vamos a volver a revisarlo...

    Código en Español comentado, esto me va gustando más.
    code.PNG
    Me hace gracia que ciertas variables estén escritas en Español.

    En el mismo metodo me encuentro esto....
    jajaja.PNG

    Deduzco que product_stock es la tabla, la busco en el sistema y.... ¡No existe!

    Así que busco en Google y...

    http://devdocs.magento.com/guides/m1x/api/soap/catalog/catalogProduct/catalog_product.create.html

    ¿Entonces catalog_product es un metodo y el create / update / delete es una orden?

    Me doy cuenta de que en la lista todos los nombres son en ingles...

    Y en mi array hay españolidades , algunas las detecta y otras no.

    DEDUCCIÓN: Hay otro sitio que ha sido modificado para recibir por ejemplo estado_ebay, un dato que sé que llega al final del proceso.

    Pero ya no se donde buscar...
     
    Última edición: 11/5/16
  6. Xarlie

    Xarlie Super Moderador Miembro del equipo

    2.715
    10
    38
    madre mía... andas perdidísimo :D
    product_stock, es la llamada a un método del web service a través de la api correspondiente, en concreto al método update, donde se le pasan determinados atributos, sku, qty... esas cosas
    No se, creo que la forma en la que estás intentando buscar el proceso no es el correcto...
     
  7. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Como me sale aviso de Spam envio el mensaje en una imagen. Captura.PNG
     
  8. Xarlie

    Xarlie Super Moderador Miembro del equipo

    2.715
    10
    38
    La tabla de eav_attribute es donde se guardan todos los atributos de Magento, de todo tipo: productos, categorías, clientes...
    Si existe el atributo entonces en tu panel lo encontrarás en catalogo > Attributes > Manage Attributes

    Sobre lo que indicas de catalog_product_entity_varchar, lo mejor es que primero entiendas que las bases de datos de Magento funcionan como EAV, por lo que lo primero has cogido la entidad, después estás cogiendo el atributo correspondiente y en su tipo (varchar) y te falta el valor asociado.

    Con el anterior mensaje quería decirte que estás haciéndolo de una forma extraña, larga, difícil, complicada... y cientos de adjetivos similares. Primero deberías intentar entender como funciona un poco Magento y después intentar hacer lo que vas a modificar, porque veo que vas a tocar en algún sitio y la tienda se va a ir al traste :)
     
  9. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Gracias, lo digo completamente en serio intento hacer esto con el máximo cuidado posible.

    Ayer probé a insertar el dato en un producto a modo de prueba en la tabla catalog_product_entity_varchar, el dato se rellena y ya tengo un código para actualizar la marca de unos 5000 articulos.

    He probado el codigo en una BBDD en Wampserver, pero sin embargo aun no lo he hecho porque el insert lo hace sin control.

    Insertar CODE, HTML o PHP:
    INSERT INTO bbdd_mgnt.catalog_product_entity_varchar ('entity_type_id',' attribute_id', 'store_id', 'entity_id', 'value')
    SELECT (4, 144, 0, entidades.entity_id, csv.marca)
    FROM bbdd_gestion.csvmagento as csv LEFT JOIN bbdd_mgnt.catalog_product_entity_varchar AS entidades
    ON csv.ean = entidades.value
    WHERE entidades.attribute_id = 134
    
    El problema de esta query es que insertaría el dato indiscriminadamente.

    Estoy mirando ON DUPLICATE KEY UPDATE pero el ON ya lo estoy usando para hacer el left join.
     
  10. Interestellar

    Interestellar Nuevo usuario

    19
    0
    1
    Ya hay dos backups, una en un CSV y otra en .sql

    Ahora corrigeme si me equivoco, cuando crear un campo nuevo, basicamente lo que se inserta es una nueva columna en attributes.

    Lo primero se le indica el tipo de entidad, si es 4 buscara en la tabla de los varchar y no en los longs ni los text.

    Luego tambien esta el attribute_id para interpretar en que campo meterlo en este caso 144 y por otro lado el entity_id que coincide con el producto.

    Me parece una forma muy inteligente de haber diseñado la Base de Datos sobretodo para que se puedan incorporar nuevas funcionalidades en el futuro.
     
    Última edición: 13/5/16
Cargando...

Compartir esta página

Cargando...