Webservices – Aitana 1. Contexto inicial Se observa que el rendimiento de la plataforma es excesivamente lento porque en ciertos puntos, el sistema queda esperando una respuesta del servidor, llegando a producir una mala experiencia de usuario. Se llegan a realizar cargas de hasta 1,5-2 minutos de espera. Tras analizar el flujo web, se observa que esta bajada de rendimiento viene relacionada con llamadas a Webservices de Aitana (Navision) porque o no están bien hechos o son demasiado lentos.El ejemplo se realiza con el usuario [email protected] le tarda, llegando a marcar tiempos de hasta 1,5 minutos en dar respuesta el WS de Aitana. Se debe analizar cada una de las llamadas a WS que se produzca desde el código para ver donde se puede enfocar el sistema desde otro punto de vista que no sea utilizando los WS. 2. Análisis Se parte de la llamada al WS de Aitana que encontraremos en los MAGENTO STANDARD CONFIGS http://195.77.153.162:7050/DynamicsNAV_ECOM/WS/Bunzl%20Distribution%20Spain,%20S .A./Codeunit/WS_EcommerceMgt Esta configuración es la que encontraremos en el BackOffice de Magento (PRO) que se alimenta de la información ubicada en docker/env/production-separated/system.php. A modo de anotación, para los casos de PRE y local, se apunta al WS de Aitana de TEST, siendo el archivo: docker/system.php. Por lo tanto, las URLs de los WS de Aitana varían acorde al entorno indicado. 3. Código Web En el archivo app/code/Etailers/NavWS/Model/ConfigProvider.php tenemos toda la configuración de los WS y será el modelo al que los diferentes scripts que requieran de respuesta por parte de alguno de los WS de Aitana, deberán llamar y obtener la información requerida. La implementación de los métodos comentados en el párrafo anterior se encuentran dentro de la siguiente ruta: app/code/Etailers/NavWS/Model/Processor. Y estos métodos son los siguientes: Customer.php La función que realiza la conexión al WS dentro del script de Customer.php se llama desde app/code/Bunzl/Customer/Model/Customer/CustomerValidator/CifValidators/AeatValidato r.php donde se valida el usuario contra la AEAT (Hacienda) en el momento de crear una cuenta en el sistema. CustomerBloqueo.php La función que realiza la conexión al WS dentro del script de CustomerBloqueo.php, se llama desde app/code/Bunzl/Usuario/Model/Domain/UsuarioCliente/TipoBloqueo/Validators/ValidatorB loqueoWebService.php donde se consulta si el cliente está bloqueado o no, cuando se va a crear el usuario. Existe otra función que se llama desde app/code/Bunzl/Oferta/Controller/Oferta/ChangeCliente.php al intentar cambiar de cliente y que necesita conocer si el cliente está bloqueado o no. FacturaPagada.php La función que realiza la conexión al WS dentro del script de FacturaPagada.php, se llama desde app/code/Bunzl/Factura/Model/Factura.php donde se consulta el estado de una factura para saber si está Pagada/No Pagada. Se realiza tanto para obtener el label del Estado así como su CSS para poder mostrarlo en el listado de facturas dependiendo de su estado. FechaEntrega.php Pese a que no se ha encontrado ninguna función que requiera del uso de este WS, la función existe como tal. Es posible que ya haya sido refactorizada o se haya desarrollado la obtención de Fechas de Entrega posibles sin necesidad de usar un WS. No obstante, para obtener un rango de fechas, sí que se está usando, tal y como veremos en el punto siguiente. FechaEntregaRango.php La función que realiza la conexión al WS dentro del script de FechaEntregaRango.php, se llama desde app/code/Bunzl/Shipping/Model/Carrier/DeliveryDateValidators/EnvioNormasYPrioritarios. php donde se debe buscar un rango de fechas ideales para la entrega. ProductosHabituales.php La función que realiza la conexión al WS dentro del script de ProductosHabituales.php, se llama desde app/code/Bunzl/Usuario/Block/Product/ListProduct.php donde se obtienen los productos comprados según cliente y dirección. Semaforo.php La función que realiza la conexión al WS dentro del script de Semaforo.php, se llama desde app/code/Bunzl/Stock/Model/StockValidator/ValidatorWebService.php donde existe un semáforo que recupera tanto el color de este así como el Plazo de días para poder validar el stock en almacen. Stock.php La función que realiza la conexión al WS dentro del script de Stock.php, se llama desde app/code/Bunzl/Stock/Model/StockValidator/ValidatorWebService.php donde se obtendrá el código de producto y el stock que tiene. De esta manera, tras validarlo puede añadirlo. Existe otra función que se llama desde app/code/Etailers/NavWS/Console/Command que se utiliza para lanzar por consola la obtención del stockInfo que funciona como el párrafo anterior.