Paqueteria (WEB)
Manual técnico
Paqueteria (WEB)
Fecha: 13 de agosto de 2024
Versión: Ver. 1.0
Proyecto: GM-PQ
Elaborado por:
Certuit Software S. de R.L de C.V.
Cerro de las Campanas No. 384, Insurgentes Oeste, CP. 21280
Mexicali, BC. México
Historial de Cambios
| Fecha | Secciones | Razón de Cambios | Autor(es) | Revisor(es) |
|---|---|---|---|---|
| 13 de agosto de 2022 | TODAS | Creación del documento | Esteban Valencia | Adrian Renteria |
| 2 de septiembre del 2024 | TODAS | Actualización de contenido y formato | Jocelyn Martinez |
GM Paquetería Sistema Web
1 Introducción
1.1 Descripción del Proyecto
GM Paquetería Sistema Web es una aplicación web diseñada para ser utilizada por el personal de las empresas de logística.
1.2 Tecnologías y Librerías Utilizadas
Se presenta el listado de tecnologías y sus versiones.
-
Frontend
- NodeJS: v14.17.3
- ReactJS: v17.0.1
- React Router: v5.2.0
- npm: v6.14.13
- JavaScript
-
Backend
- Spring Boot 2.1.6
- Maven 3.8.1
- Java 11
1.2.1 Librerías destacadas
Here API
Se utiliza para renderizar el mapa en Última Milla y calcular las rutas sugeridas a los operadores.
Material UI v4 y v5
Se utiliza para componentes de vista. Inicialmente se desarrolló en la versión 4, posteriormente se migró a versión 5, sin embargo es posible encontrar ambas versiones.
Bootstrap
El proyecto se inició utilizando Bootstrap para componentes de vista pero se fue migrando a Material UI, sin embargo, aún hay código de bootstrap.
2 Arquitectura del Proyecto
2.1 Navegación
2.1.1 Frontend
La navegación dentro del proyecto se hace usando React Router. Se puede observar la configuración en el archivo App.js ubicado en la carpeta src en la raíz del proyecto.
Visualmente se accede a los procesos y catálogos por medio de una barra lateral. La visibilidad de las rutas de la barra lateral depende de los permisos del usuario para acceder a dichos módulos. Los permisos del usuario son administrados en el ERP.
3 Configuración Inicial del Proyecto
Frontend
Seguir los pasos descritos para configurar el proyecto en un ambiente de desarrollo (local):
- Clonar el Repositorio:
| git clone http://190.9.53.4:3000/GM-Transport/paqueteria-front.git |
|---|
- Descargar librerías: Ejecutar el comando
| npm install |
|---|
- Ejecutar el Proyecto:
| npm start |
|---|
Esto abrirá la aplicación en http://localhost:3000.
Backend
Seguir los pasos descritos para configurar el proyecto en un ambiente de desarrollo (local):
- Clonar el Repositorio:
| git clone http://190.9.53.4:3000/GM-Transport/paqueteria-back.git |
|---|
- Instalar IDE de preferencia:
Para la documentación utilizaremos el IDE de visual studio code, por lo cual seguiremos la documentación oficial para la instalación y ejecución de un proyecto en Spring Boot.
Los servicios estarán disponibles en la ruta http://localhost:8091.
3.1 Conexión con servicios
Rutas de servicios
El proyecto se divide en cuatro ramas principales: master, release, develop, y calidad. Las ramas calidad y develop están conectadas al ambiente de pruebas, mientras que la rama release a preproducción y master a producción.
Las URLs de cada ambiente se encuentran en el archivo .env que se ubica en la raíz del proyecto.
- Ambiente de Pruebas:
- Backend Paquetería Webdev (REACT_APP_API_URL):
- Backend Paquetería Spring Boot (REACT_APP_REPORT_URL):
- Ambiente de Pre-producción:
- Backend Paquetería Webdev (REACT_APP_API_URL):
- Backend Paquetería Spring Boot (REACT_APP_REPORT_URL):
- Ambiente de Producción:
- Backend Paquetería Webdev (REACT_APP_API_URL):
- Backend Paquetería Spring Boot (REACT_APP_REPORT_URL):
Es importante mencionar que la forma de identificar qué base de datos se va consultar es a través del RFC del cliente. Para esto se manda el RFC como header en todas las peticiones de backend.
El backend de WEBDEV es en su mayoría solo utilizado para tema de reportes. Ahí se almacenan los formatos de impresión y se consultan. También se realizan las acciones relacionadas con el SAT como timbrado, cancelaciones de timbrado, entre otras. El resto de flujos se hacen con el backend de Spring Boot.
3.2 Organización de Directorios
3.2.1 Frontend
La estructura de directorios del proyecto está organizada de la siguiente manera:
Proyecto
-
scr: contiene los archivos del proyecto tal cual, componentes, paginas, etc.
- Constants/index: contiene encabezados para peticiones http, plantillas para la impresión de etiquetas y otras configuraciones.
- Files: directorio con los archivos usados para tutoriales.
- iconos: directorio con las imágenes usadas en el sistema, desde logos, hasta iconos.
- Util/Context: directorio con los archivos context que contienen las urls de los servicios.
- Views: directorio que contiene todas los los archivos que corresponden a las vistas.
- index.js: aplicación principal
- routes.js: archivo que contiene las rutas de la barra lateral de navegación.
- routesCatalogos.js: archivo que contiene las rutas de la sección de catálogos.
- routesConfiguraciones.js: archivo que contiene las rutas de la sección a configuraciones.
-
.env: archivo que contiene las url de los diferentes ambientes. Cambia dependiendo la rama en la que se encuentre.
-
package.json: archivo que contiene las librerías necesarias para el proyecto.
3.2.2 Backend
La estructura de directorios del proyecto está organizada de la siguiente manera:
Proyecto
- src: Contiene los archivos del proyecto como:
- main/java/com/certuit/base
- config: directorio con los archivos de configuración para la ejecución del proyecto.
- domain: directorio con las clases auxiliares empleados por los servicios rest para el mapeo de datos.
- endpoint: directorio que contiene todos los servicios rest disponibles.
- services/base: directorio con las clases y funciones que contienen la lógica y reglas de negocio.
- util: directorio con la utilería y archivo de conexión a la base de datos.
- CertuitBaseApplicaction.java: clase main la cual ejecuta el proyecto.
- resources: Contiene los recursos del proyecto
- formatosEtiquetaZebra: Contiene el versionamiento del formato de etiquetas.
- reportes: directorio con la versión inicial del reporteador, se realizó el cambio para manejar los reportes desde webdev de la misma manera que el ERP, por lo que ya no se utilizan.
- application.yml: archivo de configuración principal del proyecto.
- main/java/com/certuit/base
4 Catálogos
4.1 Catálogo Estatus Recolección
Descripción general
Esta vista se desarrolla inicialmente en el archivo EstatusRecoleccion.js. Este catálogo permite ver los diferentes estatus que puede tener una recolección. Los registros son por defecto del sistema y no son editables para el usuario.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de estatus de recolección.
-
Obtener estatus de Recolección
- URL
- /api/SisEstatus/getListadoRecoleccion
- URL
Al obtener la respuesta se muestran en una tabla.
Acciones del usuario
Ninguna
4.2 Catálogo Estatus Embarque
Descripción general
Esta vista se desarrolla inicialmente en el archivo EstatusEmbarque.js. Este catálogo permite ver los diferentes estatus que puede tener un embarque. Los registros son por defecto del sistema y no son editables para el usuario.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de estatus de embarque.
-
Obtener estatus de Embarque
- URL
- /api/SisEstatus/GetListadoEmbarque
- URL
Al obtener la respuesta se muestran en una tabla.
Acciones del usuario
Ninguna
4.3 Catálogo Estatus Guía
Descripción general
Esta vista se desarrolla inicialmente en el archivo EstatusGuia.js. Este catálogo permite ver los diferentes estatus que puede tener una guía. Los registros son por defecto del sistema y no son editables para el usuario.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de estatus de guía.
-
Obtener estatus de Guía
- URL
- /api/EstatusGuia/GetListado
- URL
Al obtener la respuesta se muestran en una tabla.
Acciones del usuario
Ninguna
4.4 Catálogo Estatus Informe
Descripción general
Esta vista se desarrolla inicialmente en el archivo EstatusInforme.js. Este catálogo permite ver los diferentes estatus que puede tener un informe. Los registros son por defecto del sistema y no son editables para el usuario.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de estatus de informes.
-
Obtener estatus de Guía
- URL
- /api/SisEstatus/getListadoInformes
- URL
Al obtener la respuesta se muestran en una tabla.
Acciones del usuario
Ninguna
4.5 Catálogo Estatus Viaje
Descripción general
Esta vista se desarrolla inicialmente en el archivo EstatusViaje.js. Este catálogo permite ver los diferentes estatus que puede tener un viaje. Los registros son por defecto del sistema y no son editables para el usuario.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de estatus de viajes.
-
Obtener estatus de Guía
- URL
- /api/SisEstatus/getListadoViajes
- URL
Al obtener la respuesta se muestran en una tabla.
Acciones del usuario
Ninguna
4.6 Catálogo Tipos de Cobro
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Tipos de cobro. Esta vista se desarrolla iniciando con el archivo TipoCobro.js.
Los tipos de cobro son las formas en las que los clientes van a pagar por su mercancía, no es lo mismo que un método de pago. Se puede especificar el tipo de cobro al registrar un embarque, si un cliente indica que pagará al recibir su mercancía, existe el tipo de cobro PAGO CONTRA ENTREGA.
Hay tipos de cobro que están predefinidos por el sistema, estos no pueden ser borrados por el usuario debido a que hay funciones en el sistema basadas en esos tipos de cobro estáticos.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario: si no hay una sesión iniciada, se redirige al login; si hay una sesión activa se hacen llamadas al backend para obtener el listado de tipos de cobro y el listado de métodos de pago (los métodos de pago son administrados desde el sistema ERP).
-
Obtener tipos de cobro
- URL:
- /api/TipoCobro/GetListado
- URL:
-
Obtener métodos de pago
- URL:
- /api/TiposPago/GetListado
- URL:
Al obtener el listado de tipos de cobro se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Los métodos de pago son utilizados cuando se crea, modifica o consulta un tipo de cobro.
Acciones del usuario
Agregar tipo de cobro
Para acceder a la vista de creación se presiona en la pestaña Agregar ubicada en la parte superior de la pantalla.
Para crear un tipo de cobro se necesita:
- Código: es identificador numérico asignado por el usuario.
- Descripción: será el nombre del tipo de cobro visible en reportes y todos los flujos.
- Tipo/metodo de pago: el método de pago seleccionado se registrará en la guía al crear el embarque con el tipo de cobro actual. Los métodos de pago son administrados en el sistema ERP.
- Bloquear Última Milla: al estar activo verifica que la guía esté pagada para que pueda entrar al proceso de Última Milla.
Al presionar el botón Agregar tipo de cobro se hace una llamada al backend para guardar la información.
- Guardar tipo de cobro
- URL:
- /api/TipoCobro/Agregar
- Body:
- Código
- Descripción
- Método de pago
- Bloquear Ultima Milla
- Id usuario que crea
- Id usuario que modifica
- URL:
Si la operación es exitosa se redirige al usuario al listado de tipos de cobro. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla.
Modificar tipo de cobro
Para modificar un tipo de cobro se necesita ubicar en el listado y presionar el botón con icono de lápiz, ubicado del lado izquierdo. Al presionar, se abrirá la vista de agregar con los datos del cobro precargados. Para poder precargar los datos se hace una llamada al backend para obtener los detalles del tipo de cobro.
- Obtener tipo de cobro por id
- URL:
- /api/TipoCobro/GetTipoCobro/{id}
- Variables:
- Id del tipo de cobro
- URL:
Al modificar se hace una llamada al backend para actualizar la información.
- Editar tipo de cobro
- URL:
- /api/TipoCobro/Modificar/
- Body:
- Código
- Descripción
- Método de pago
- Bloquear Ultima Milla
- Id usuario que crea
- Id usuario que modifica
- URL:
Si la operación es exitosa se redirige al usuario al listado de tipos de cobro. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla.
Consultar tipo de cobro
Para consultar un tipo de cobro se necesita ubicar en el listado y presionar el botón con icono de ojo, ubicado del lado izquierdo. Al presionar, se abrirá la vista de agregar con los datos del cobro precargados y todos los campos deshabilitados. Para poder precargar los datos se hace una llamada al backend para obtener los detalles del tipo de cobro.
- Obtener tipo de cobro por id
- URL:
- /api/TipoCobro/GetTipoCobro/{id}
- Variables:
- Id del tipo de cobro
- URL:
Eliminar tipo de cobro
Para eliminar un tipo de cobro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se abrirá un diálogo para confirmar la acción. Al confirmar, se hace una llamada al backend para validar si el usuario tiene permisos para realizar la acción.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta el permiso necesario se hace la llamada al backend para realizar la acción.
- Eliminar tipo de cobro por id
- URL:
- /api/TipoCobro/GetTipoCobro/{id}
- Variables:
- Id del tipo de cobro
- URL:
4.7 Catálogo Moneda
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Configuración > Moneda. Esta vista se desarrolla iniciando con el archivo Moneda.js.
Monedas es la forma de llamar a las diferentes divisas que se manejan en este catálogo.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario: si no hay una sesión iniciada, se redirige al login; si hay una sesión activa se hace una llamada al backend para obtener el listado de monedas.
-
Obtener monedas
- URL:
- /api/Moneda/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para agregar una moneda se necesitan los siguientes datos:
- Código: identificador definido por el usuario
- Moneda: nombre de la moneda, definido por el usuario
- Símbolo: símbolo con el que se identificará, definido por el usuario
- Abreviación: definido por el usuario
Al presionar el botón Agregar se hace una llamada al backend para guardar la información.
- Agregar moneda
- URL:
- /api/Moneda/Agregar
- Body:
- Código
- Moneda
- Símbolo
- Abreviación
- Id de usuario que crea
- Id de usuario que edita
- URL:
Si la operación es exitosa se redirige al usuario al listado. Si surge algún error se muestra mensaje al usuario y se permanece en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará la vista de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener moneda por id
- URL:
- /api/Moneda/GetById/{id}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar moneda
- URL:
- /api/Moneda/Modificar/{id}
- Variables:
- Id del registro
- Body:
- Código
- Descripción
- Método de pago
- Bloquear Ultima Milla
- Id usuario que crea
- Id usuario que modifica
- URL:
Si la operación es exitosa se redirige al usuario a la pestaña de listado. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará la vista de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener moneda por id
- URL:
- /api/Moneda/GetById/{id}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se abrirá un diálogo para confirmar la acción. Al confirmar, se hace una llamada al backend para validar si el usuario tiene permisos para realizar la acción.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta el permiso necesario se hace la llamada al backend para realizar la acción.
- Eliminar tipo de cobro por id
- URL:
- /api/Moneda/Eliminar/{id}
- Variables:
- Id del registro
- URL:
4.8 Catálogo Seguros
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Seguros. Esta vista se desarrolla iniciando con el archivo Seguros.js.
En este catálogo se administran únicamente los datos del seguro de los clientes. El resto de la información de los clientes se administra desde el sistema ERP.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario: si no hay una sesión iniciada, se redirige al login; si hay una sesión activa se hacen unas llamadas al backend para obtener el listado de clientes con sus datos de seguro y los tipos de seguro. Los clientes que no tengan seguro tendrán los datos del seguro en blanco.
-
Obtener tipos de seguro
- URL:
- /api/TipoSeguros/GetListado
- URL:
-
Obtener listado de clientes por paginado
- URL:
- api/Client/GetListadoPaginado/{no pagina}/{registros}
- Variables:
- Número de página
- Número de registros
- URL:
Al obtener el listado se muestran en una tabla.
Acciones del usuario
Editar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará un formulario con los datos del registro precargados. Ya con los datos cargados se puede modificar el formulario. Para modificar el seguro se necesitan los siguientes datos
- Tipo de seguro: determina el estado del seguro del cliente. Las opciones vienen al ERP.
- Porcentaje de seguro: la cantidad es determinada por el cliente.
- Aseguradora: es el nombre de la aseguradora del cliente.
- Póliza: dato introducido por el usuario.
Para guardar los cambios se presiona el botón Seleccionar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar seguro de cliente
- URL:
- /api/Clientes/ModificarSeguro
- Body:
- Tipo de seguro
- Cliente
- Porcentaje
- Aplica seguro (se obtiene del definido en el ERP)
- Aseguradora
- Póliza
- URL:
Si la operación es exitosa se redirige al usuario a la pestaña de listado. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla.
4.9 Catálogo de Embalajes
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Configuración > Embalajes. Esta vista se desarrolla iniciando con el archivo Embalajes.js.
Los embalajes son las formas en que pueden venir los productos: cajas, tarimas, piezas, etc.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario: si no hay una sesión iniciada, se redirige al login; si hay una sesión activa se hace una llamada al backend para obtener el listado de embalajes.
-
Obtener embalajes
- URL:
- /api/Embalajes/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Se necesitan los siguientes datos:
- Código: identificador definido por el usuario
- Nombre: definido por el usuario
- Descripción: definido por el usuario
Al presionar el botón Aceptar se hace una llamada al backend para guardar la información.
- Agregar embalaje
- URL:
- /api/Embalaje/Agregar
- Body:
- Código
- Nombre
- Descripción
- Id de usuario que crea
- Id de usuario que edita
- URL:
Si la operación es exitosa se redirige al usuario al listado. Si surge algún error se muestra mensaje al usuario y se permanece en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener embalaje por id
- URL:
- /api/Embalajes/GetById/{id}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Aceptar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar embalaje
- URL:
- /api/Embalaje/Modificar/{id}
- Variables:
- Id del registro
- Body:
- Código
- Nombre
- Descripción
- Id de usuario que crea
- Id de usuario que edita
- URL:
Si la operación es exitosa se redirige al usuario a la pestaña de listado. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener embalaje por id
- URL:
- /api/Embalajes/GetById/{id}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se abrirá un diálogo para confirmar la acción. Al confirmar, se hace una llamada al backend para validar si el usuario tiene permisos para realizar la acción.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para validar si el registro no es del sistema y puede ser eliminado.
- Validar embalaje
- URL:
- /api/Embalajes/ValidarEliminar/{IdRegistro}
- Variables:
- Id del registro
- URL:
Si el registro se puede eliminar se hace la llamada al backend para realizar la acción.
- Eliminar Embalaje
- URL:
- /api/Embalaje/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Id del usuario
- URL:
4.10 Catálogo Productos
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Productos. Esta vista se desarrolla iniciando con el archivo Productos.js.
Los productos son la mercancía que se añade a las recolecciones, embarques y guías.
Inicialización de la vista
Al iniciar se hacen unas llamadas al backend para obtener el listado de embalajes y de productos.
-
Obtener embalajes
- URL:
- /api/Embalajes/GetListado
- URL:
-
Obtener productos
- URL:
- /api/Productos/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Se necesitan los siguientes datos:
- Descripción: definido por el usuario
- Largo: definido por el usuario
- Ancho: definido por el usuario
- Alto: definido por el usuario
- Peso: definido por el usuario
- Volumen: se calcula en automático al ingresar las dimensiones, pero es editable por el usuario
- Embalaje: se selecciona del listado de embalajes
- Activo: definido por el usuario
Al presionar el botón Agregar producto se hace una llamada al backend para guardar la información.
- Agregar producto
- URL:
- /api/Productos/Agregar
- Body:
- Descripción
- Largo
- Ancho
- Alto
- Peso
- Embalaje
- Activo
- Es predeterminado (si está activo se mostrará en el listado de productos aunque no esté en ninguna tarifa o convenio)
- URL:
Si la operación es exitosa se redirige al usuario al listado. Si surge algún error se muestra mensaje al usuario y se permanece en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener producto por id
- URL:
- /api/Productos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Agregar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar producto
- URL:
- /api/Productos/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Descripción
- Largo
- Ancho
- Alto
- Peso
- Embalaje
- Activo
- Es predeterminado (en backend se asigna true por defecto)
- URL:
Si la operación es exitosa se redirige al usuario a la pestaña de listado. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener producto por id
- URL:
- /api/Productos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para realizar la acción.
- Eliminar Embalaje
- URL:
- /api/Productos/Eliminar/{IdRegistro}
- Variables:
- Id del registro
- URL:
4.11 Catálogo Zonas Operativas
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Zonas Operativas. Esta vista se desarrolla iniciando con el archivo ZonaOperativa.js.
Las zonas operativas son agrupaciones de códigos postales. Tienen diferentes usos: asignar tarifas a diferentes áreas, permitir o no envíos de última milla a determinadas zonas, entre otros.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener el listado de zonas operativas.
-
Obtener zonas operativas
- URL:
- /api/ZonaOperativa/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se cargan los listado de sucursales y orígenes y destinos. Ambos son catálogos administrados en el sistema ERP, y los registros se obtienen de los siguientes endpoints:
- Obtener listado de sucursales
- URL:
- /api/Sucursales/GetListado
- URL:
- Obtener listado de orígenes y destinos
- URL:
- /api/Ciudades/GetListado
- URL:
Para crear una zona se necesitan los siguientes datos:
- Código de Zona: definido por el usuario
- Sucursal: se selecciona. Las sucursales vienen del ERP
- Origen/Destino: se selecciona. Los orígenes/destinos vienen del ERP
- País: se selecciona. Están estáticos en código
- Estado: se selecciona. Vienen de ser insertados en base de datos directamente. Los registros se cargan al seleccionar un país.
- Municipio: se selecciona. Vienen de ser insertados en base de datos directamente. Los registros se cargan al seleccionar un estado.
- No aplica entregas: si está activo, las guías/recolecciones que vayan a esa zona operativa no entrarán al proceso de Última Milla.
- Listado de códigos postales: se seleccionan. Vienen de ser insertados en base de datos directamente. Las opciones se cargan al seleccionar municipio y presionar el botón Buscar Códigos Postales.
Al presionar el botón Aceptar se hace una llamada al backend para guardar la información.
- Agregar Zona operativa
- URL:
- /api/ZonaOperativa/Agregar
- Body:
- Código de zona
- Sucursal
- Id del Estado
- Nombre del estado
- Id del municipio
- Nombre del municipio
- Origen/Destino
- País
- Aplica Entrega
- URL:
Si la operación es exitosa se redirige al usuario al listado. Si surge algún error se muestra mensaje al usuario y se permanece en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener zona por id
- URL:
- /api/ZonaOperativa/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Aceptar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar zona operativa
- URL:
- /api/ZonaOperativa/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Código de zona
- Sucursal
- Id del Estado
- Nombre del estado
- Id del municipio
- Nombre del municipio
- Origen/Destino
- País
- Aplica Entrega
- URL:
Si la operación es exitosa se redirige al usuario a la pestaña de listado. Si surge algún error se muestra mensaje al usuario y se permanece en la pantalla.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener zona por id
- URL:
- /api/ZonaOperativa/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para realizar la acción.
- Eliminar Zona
- URL:
- /api/ZonaOperativa/Eliminar/{IdRegistro}
- Variables:
- Id del registro
- URL:
Filtrar
En la sección del listado es posible filtrar las zonas para buscar por código postal. Esto permite saber si un código postal ya está en alguna zona. Para hacerlo solo es necesario escribir el código postal y presionar Buscar. Se hará una llamada al backend para obtener la zona operativa que contenga ese código postal.
- Obtener zona por código postal
- URL:
- /api/ZonaOperativa/GetByCodigoPostal/{CódigoPostal}
- Variables:
- Código postal
- URL:
4.12 Catálogo Plantillas de Importación
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Plantillas de importación. Esta vista se desarrolla iniciando con el archivo PlantillasImportacionMain.js.
Las plantillas de importación permiten agregar embarques y recolecciones de una manera más rápida usando archivos de Excel. Se pueden agregar muchas en una sola acción. Sin embargo, todo lo relacionado a crear embarques y recolecciones debe estar muy bien configurado. Hay dos tipos de plantilla: segmentada y lineal.
Plantilla Segmentada
En este tipo de plantilla los datos se dividen en tres hojas distintas la primera corresponde a los datos generales del embarque, la segunda al listado de productos y la tercera a los complementos del SAT.
Para relacionar los productos y complementos con el embarque en cada hoja habrá una columna que servirá como un ID temporal, de modo que la fila de la hoja del embarque tendrá un ID asignado por el usuario. En la hoja de productos cada fila deberá tener el mismo ID del embarque al que le pertenece, del mismo modo la hoja de complementos del SAT.
El responsable de pago indica el cliente al que corresponderá la configuración de la plantilla
El archivo adjunto debe ser un archivo formato Excel con extensión xlsx. No está validado si el sistema soportaría versiones anteriores de archivos Excel con otra extensión. El archivo adjunto estará disponible para descargar al momento de entrar a la sección de Importar en los Módulos de Embarque y Recolección.
En la sección Datos de identificación hay 3 campos, estos sirven para que se escriba el nombre que tendrán las hojas usadas para los diferentes propósitos. Es importante verificar que el archivo importado contenga exactamente el mismo nombre para que funcione correctamente.
En el resto de las secciones los campos son de texto simple en donde se debe escribir el nombre exacto que tendrá la columna que contendrá el valor correspondiente. El campo Número de embarque corresponde a la columna con el ID temporal que se indicó anteriormente y debe estar presente en cada hoja del archivo.
Plantilla Lineal
En este tipo de plantilla todos los datos del embarque van en la misma hoja.
Para relacionar los productos y complementos del SAT se repetirá n número de veces los datos del embarque y cambiarán únicamente los datos del producto y complemento. Al importar los registros se agrupan. Si se detecta que los datos del embarque son exactamente los mismos y solo cambian los datos del producto y complemento, se toma como un solo embarque y los productos y complementos se asignan a ese embarque.
El responsable de pago indica el cliente al que corresponderá la configuración de la plantilla.
El archivo adjunto debe ser un archivo formato Excel con extensión xlsx. No está validado si el sistema soportaría versiones anteriores de archivos Excel con otra extensión. El archivo adjunto estará disponible para descargar al momento de entrar a la sección de Importar en los Módulos de Embarque y Recolección.
En la sección Datos de identificación hay un campo, este sirve para que se escriba el nombre que tendrá la hoja con la información. Es importante verificar que el archivo importado contenga exactamente el mismo nombre para que funcione correctamente.
En el resto de las secciones los campos son de texto simple en donde se debe escribir el nombre exacto que tendrá la columna que contendrá el valor correspondiente. El campo Número de embarque corresponde a la columna con el ID temporal y debe estar presente en cada hoja del archivo.
Para este tipo de plantilla existen las banderas Usar como número de equivalencia en los campos Responsable de pago y Número de remitente, esto significa que al llenar el excel el dato que se escribirá en esas columnas será el valor número de equivalencia: es un identificador alternativo asignado por el usuario desde el ERP.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener el listado de plantillas.
- Obtener plantillas
- URL:
- /api/PlantillasImportacion/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior.
Para agregar una plantilla se necesitan los siguientes datos:
- Tipo de plantilla: las opciones están fijadas en código.
- Responsable de pago (cliente): al seleccionar campo se carga el listado de clientes. Las opciones vienen del ERP.
- Archivo Excel: el usuario lo toma de su equipo.
- Resto de campos: definidos por el usuario.
Al presionar el botón Guardar se hace una llamada al backend para guardar la información.
- Agregar Plantilla
- URL:
- /api/PlantillasImportacion/Agregar
- Body:
- Tipo de plantilla
- Responsable de pago (cliente)
- Base64 del archivo
- Nombre del archivo
- Y el resto de los campos
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener plantilla por id
- URL:
- /api/PlantillasImportacion/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar plantilla
- URL:
- /api/PlantillasImportacion/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Tipo de plantilla
- Responsable de pago (cliente)
- Base64 del archivo
- Nombre del archivo
- Y el resto de los campos
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener plantilla por id
- URL:
- /api/PlantillasImportacion/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para realizar la acción.
- Eliminar plantilla
- URL:
- /api/PlantillasImportacion/Eliminar/{IdRegistro}
- Variables:
- Id del registro
- URL:
4.13 Catálogo Formatos de Impresión
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Configuración > Formatos de impresión. Esta vista se desarrolla iniciando con el archivo FormatoImpresion.js y solo es usada por los implementadores.
Los formatos de impresión son los formatos de los PDF que se usan para cosas como reportes, etiquetas, etc. El diseño es generado en WEBDEV, al finalizar, se obtiene el archivo WDE necesario para guardar en el sistema.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener el listado de formatos.
-
Obtener formatos
- URL:
- /api/Formato/GetListado
- URL:
Al obtener el listado se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se carga el listado de tipos de documento. Este es administrado en el sistema ERP, y los registros se obtienen de los siguientes endpoints:
- Obtener listado de tipos de documento
- URL:
- /TipoDocumento/GetListado
- URL:
Para agregar un formato se necesitan los siguientes datos:
- Formato: es el nombre del formato. Definido por el usuario
- Tipo de proceso: es el proceso con el que estará relacionado. Las opciones están fijadas en el código.
- Archivo WDE: es el archivo que genera WEBDEV al crear el diseño.
- Archivo Imagen: campo obsoleto, no es necesario mandar.
Al presionar el botón Aceptar se hace una llamada al backend para guardar la información.
- Agregar formato
- URL:
- /api/Formato/Agregar
- Body:
- Nombre de formato
- Tipo de proceso
- Usuario
- Fecha
- Fecha de edición
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener formato por id
- URL:
- /api/Formato/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Aceptar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar formato
- URL:
- /api/Formato/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Nombre de formato
- Tipo de proceso
- Usuario
- Fecha
- Fecha de edición
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para realizar la acción.
- Eliminar formato
- URL:
- /Folios/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Id del usuario
- URL:
4.14 Catálogo Cuentas correo
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Configuración > Cuentas Correo. Esta vista se desarrolla iniciando con el archivo CuentasCorreo.js.
En esta parte del sistema se configuran las cuentas de correo que serán usadas para diferentes propósitos: Para Enviar Viajes, Para Enviar Tracking y Para Facturación. Los correos serán enviados al correo del destinatario registrado en el embarque, y la cuenta de emisor que el receptor verá en el correo será la que se configure.
Para Enviar Viajes es cuando un viaje pasa a estatus En Ruta. Para Enviar Tracking es cuando la guía entra en proceso de Última Milla. Para Facturación es cuando es generada la factura de la guía.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener el listado de cuentas.
-
Obtener cuentas de correo
- URL:
- /api/CuentasCorreo/GetListado
- URL:
Al obtener el listado se almacena en memoria para cargar los datos del tipo de cuenta que seleccione el usuario.
Acciones del usuario
Actualizar cuenta de correo
Para actualizar los datos de la cuenta se necesita seleccionar el tipo de cuenta que se quiere actualizar. Al seleccionar se cargarán los datos de esa cuenta en caso de que haya sido configurada anteriormente.
Para actualizar una cuenta se necesitan los siguientes datos:
- Tipo de cuenta: las opciones están fijadas en código.
- Servidor: definido por el usuario.
- Puerto: definido por el usuario.
- Usuario: definido por el usuario.
- Contraseña: definido por el usuario.
- Seguridad: las opciones están fijadas en el código.
Al presionar el botón Aceptar se hace una llamada al backend para guardar la información.
- Agregar cuenta (se usa en caso de ser primera vez registrada)
- URL:
- /api/CuentasCorreo/Agregar
- Body:
- Tipo de cuenta
- Servidor
- Puerto
- Usuario
- Contraseña
- Seguridad
- Id del Usuario que crea
- Id del usuario que edita
- Fecha de creado
- Fecha de edición
- URL:
- Editar cuenta
- URL:
- /api/CuentasCorreo/Modificar/{IdCuenta}
- Body:
- Tipo de cuenta
- Servidor
- Puerto
- Usuario
- Contraseña
- Seguridad
- Id del Usuario que crea
- Id del usuario que edita
- Fecha de creado
- Fecha de edición
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
4.15 Parámetros de configuración
Descripción general
A esta vista se puede acceder por medio de la barra lateral en el botón Catálogos > Parámetros de configuración. Esta vista se desarrolla iniciando con el archivo ParametrosConfiguracion.js.
En Parámetros de configuración se establece la mayoría de los parámetros que usa el sistema, algunos pueden ser configurados por cualquier usuario, otros solo por el implementador y otros solo por base de datos. En Acciones del usuario se abordará cuales aplican para cada caso.
Inicialización de la vista
Al iniciar se hacen unas llamadas al backend para obtener el listado de estatus, catálogos, entre otros.
- Obtener parámetros de configuración
- URL:
- /api/ParametrosConfiguracion/GetListado
- URL:
- Obtener listado de estatus de recolección
- URL:
- /api/SisEstatus/getListadoRecoleccion
- URL:
- Obtener listado de estatus de embarque
- URL:
- /api/SisEstatus/GetListadoEmbarque
- URL:
- Obtener listado de monedas
- URL:
- /api/Moneda/GetListado
- URL:
- Obtener listado de tipos de cambio
- URL:
- /api/TipoCambio/GetListado
- URL:
- Obtener listado de tipos de cobro
- URL:
- /api/TipoCobro/GetListado
- URL:
- Obtener listado de estatus de guía
- URL:
- /api/EstatusGuia/GetListado
- URL:
- Obtener listado de conceptos de facturación
- URL:
- /api/ConceptosFacturacion/GetListado
- URL:
Al obtener los listados se almacenan en memoria para cargar los datos cuando sean necesarios.
Acciones
Sección General
Configurar Folios por Sucursal
Para activar o desactivar los folios por sucursal es necesario la intervención del equipo de desarrollo porque se hace solamente por base de datos. En parámetros de configuración se encuentra el campo inhabilitado para servir como confirmación visual.
Limitar tiempo de entregas
Este parámetro es para asignar el tiempo máximo que puede durar una ruta de última milla. Este dato se manda al API de HERE al momento de generar una ruta en Última milla. Si el API detecta que el tiempo de una ruta es menor al tiempo configurado en este parámetro la ruta no podrá ser creada y se le mostrará un mensaje al usuario informandolo.
Sección Embarque
Estatus por defecto
Este parámetro indica el estatus que se pre cargará al crear los embarques.
Moneda predeterminada
Este parámetro indica la moneda que se pre cargará al crear los embarques.
Tipo de cambio por defecto
Este parámetro indica el tipo de cambio que se pre cargará al crear los embarques.
Tipo de cobro por defecto
Este parámetro indica el tipo de cobro que se pre cargará al crear los embarques.
Detectar tipo de cobro de cliente (responsable de pago)
Este parámetro indica si se detectará el tipo de cobro del responsable de pago seleccionado al crear un embarque. Al estar activo, el tipo de cobro se detecta en función del tipo de seguro que tenga registrado el cliente y se cambiará en automático al seleccionarlo.
Tipos de cobro a mostrar
El usuario debe seleccionar los tipos de cobro que serán seleccionables al momento de crear un embarque.
Limpiar producto al crear
Este parámetro indica si al momento de agregar un producto a un embarque en formulario se limpiará el campo Producto. Al estar activo el campo se limpiará. Al estar inactivo el campo no se limpiará, esto es práctico cuando los embarques suelen llevar muchos productos del mismo tipo.
Fijar captura de Valor Declarado
Para activar/desactivar este parámetro es necesaria la intervención de desarrollo porque se hace por base de datos. Al estar activo se hace obligatorio el campo Valor declarado al crear embarques.
Sección Recolección
Estatus por defecto
Este parámetro indica el estatus que se pre cargará al crear las recolecciones.
Sección Guía
Estatus por defecto
Este parámetro indica el estatus que se pre cargará al crear las guías.
Escanear Paquetes al Cargar Informe en Remolque
Este parámetro indica si es necesario escanear todos los paquetes de la guía al cargarlos por medio del escáner o si con un paquete que sea escaneado se agregara la guía al informe.
Hacer timbrado de prueba
Este parámetro indica si se hará una simulación de timbrado al intentar timbrar informes. Al estar activo el timbrado será una simulación y la información no será enviada al SAT. Al estar inactivo se hará el timbrado real y se mandará la información al SAT.
¿Requiere etiquetas adicionales?
Al estar activo, cuando se presione el botón para imprimir etiquetas en el listado de guías se preguntará al usuario si desea imprimir etiquetas de paquetes específicos en lugar de imprimir el listado completo. Al estar inactivo se imprime el listado completo de etiquetas necesarias para cada paquete.
Sección Tarifas
Tipo de tarifa por defecto
Este parámetro sirve para configurar qué tipo de tarifa usará el sistema para realizar cotizaciones. Dependiendo del tipo de tarifa el formulario para configurar tarifas y convenios en sus respectivos catálogos cambia.
Porcentual de Seguro por Defecto
Este parámetro solo aplica cuando el cliente registrado en el embarque tiene seguro. Indica el porcentaje del valor declarado que se tomará para cobrar como seguro, esto se verá reflejado en los parámetros de configuración que arroje la cotización al estar creando el embarque.
Factor de conversión
Este es solo un valor informativo. Para ser cambiado es necesaria la intervención de desarrollo por que se hace por base de datos. El factor de conversión es una cantidad que se ve involucrada al momento de realizar una cotización.
Cobrar concepto Cita
Indica si se cobrará por registrar una fecha de cita al crear el embarque. Al estar activo aparecerá un campo extra para registrar la cantidad fija que se cobrará por las citas. El cobro se verá reflejado como concepto de configuración al momento de generar la cotización.
Cobrar concepto de Carga
Indica si se cobrará por la maniobra de cargar la mercancía en el camión que llevará la ruta. El concepto es configurado al crear las tarifas o convenios.
Cobrar concepto de Descarga
Indica si se cobrará por la maniobra de descargar la mercancía del camión que llevará la ruta.. El concepto es configurado al crear las tarifas o convenios.
Concepto de flete, carga, descarga, recolección, entrega, seguro, cita
Estos parámetros son para asignar los conceptos de facturación del usuario que representarán los conceptos usados por el sistema. Las opciones vienen del ERP.
Sección Correos
CFDI Traslada Intermedio
Plantilla de correo que se enviará una vez ingresado el correo para el envío de factura
CFDI Traslada Primera/Última Milla
Plantilla de correo que se enviará una vez ingresado el correo para el envío de factura
Sección Facturación
Tipo de servicio
Valor que se usará por defecto en el formulario para generar la guía.
Validar facturas de ingreso
Para activar/desactivar este parámetro se necesita la intervención de desarrollo porque se hace por base de datos. Al estar activo, cuando se quiera intente timbrar un informe se validará que las facturas de las guías en el informe están timbradas desde el ERP, deben estar timbradas para poder timbrar el informe. Al estar inactivo, no se validan las facturas de las guías.
Permitir modificar este valor en Embarque
Al estar activo, permite modificar los embarques aunque no estén en estatus Pendiente. Al estar inactivo solo permite modificar los embarque con estatus Pendiente.
Validar timbrado de informes
Al estar activo valida que los informes esten timbrados para poder dar salida a un trayecto de viaje. Al estar inactivo se puede dar salida a los trayectos sin importar el timbrado.
Documento por sucursal
En este parámetro se configura el documento de timbrado que se usará por cada sucursal. La idea es que cada sucursal tenga un documento diferente. Actualmente hay clientes que tienen el mismo para diferentes sucursales, por petición se hacen esas excepciones pero debe ser configurado directamente por base de datos.
Guardar cambios
Al presionar el botón Modificar se hace una llamada al backend para guardar la información.
- Actualizar parámetros de configuración
- URL:
- /api/ParametrosConfiguracion/Modificar
- Body:
- Todos los parámetros explicados anteriormente.
- URL:
4.16 Catálogo Tarifas
Descripción general
A esté catálogo se puede acceder por medio de la barra lateral en el botón Catálogos > Tarifas. Esta vista se desarrolla iniciando con el archivo Tarifas.js
Este catálogo tiene un funcionamiento particular, dependiendo del tipo de tarifa configurado en parámetros de configuración será la vista que se mostrará. Existen 2 tipos de tarifa: por región y por rangos. Se iniciará explicando las tarifas por región.
4.17 Tarifas por Región
Descripción general
Esta vista se desarrolla iniciando con el archivo TarifasRegión.js.
Las tarifas por región son las más sencillas de entender y configurar porque solo se configura el concepto de flete. Si se quisieran cobrar los conceptos de recolección, entrega, maniobras de carga y maniobras de descarga, se deberá hacer al estar creando el embarque agregando los conceptos manualmente en la cotización.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener los datos del cliente PÚBLICO GENERAL. Esto se hace porque las tarifas y convenios se almacenan en el mismo lugar y se filtran para mostrar las tarifas que sean de este cliente y cuando se crean tarifas en este catálogo siempre se asignan a ese cliente. Para configurar una tarifa con un cliente diferente se debe crear un convenio.
-
Obtener cliente PÚBLICO GENERAL
- URL:
- /api/Clientes/GetPublicoGeneral
- URL:
Al obtener la información se almacena y se continúa con una llamada al backend para obtener el listado de tarifas por región.
-
Obtener listado de tarifas por región
- URL:
- /api/Tarifas/GetByTipo/{IdTipoTarifa}
- Variables:
- Tipo de tarifa. (Siempre se manda 3 por ser región)
- URL:
Al obtener el listado se filtran las que sean del cliente PÚBLICO GENERAL y se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se carga el cliente por defecto como se explicó anteriormente y también se hacen llamadas al backend para obtener el listado de orígenes/destinos y productos.
-
Obtener listado de orígenes y destinos
- URL:
- /api/Ciudades/GetListado
- URL:
-
Obtener productos
- URL:
- /api/Productos/GetListado
Para agregar una tarifa por región son necesarios los siguientes datos:
- URL:
-
Responsable de pago: asignado por defecto. No editable.
-
Listado de viajes: estos se componen de los siguientes datos:
- Origen: se selecciona del listado de orígenes/destinos. Las opciones vienen del ERP.
- Flete mínimo: en caso de que el cobro total de la mercancía del embarque sea menor este monto, se cobrará lo del flete mínimo. Definido por el usuario.
- Destinos: se seleccionan del listado de orígenes/destinos. Las opciones vienen del ERP.
- Productos: se componen del producto y el monto. El producto es seleccionado del listado de productos, el monto es definido por el usuario.
Al presionar el botón Guardar Tarifa se hace una llamada al backend para guardar la información.
- Agregar tarifa por región
- URL:
- /api/Tarifas/Agregar
- Body:
- Usuario que crea
- Tipo de tarifa
- Cliente
- Listado de viajes
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Aceptar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar tarifa
- URL:
- /api/Tarifas/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Usuario que crea
- Tipo de tarifa
- Cliente
- Listado de viajes
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
- Eliminar tarifa
- URL:
- /api/Tarifas/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Id usuario
- URL:
4.18 Tarifas por Rango
Descripción general
Esta vista se desarrolla iniciando con el archivo TarifasRangos.js.
Las tarifas por rango son más complejas de configurar porque involucran la configuración del concepto de recolección, entrega, maniobra de carga, maniobra de descarga y flete. Es el tipo de tarifa más usada actualmente por la variedad de escenarios que puede abarcar para calcular los costos. La idea general de una tarifa por rangos es la de cobrar un rango de cantidad específica de productos específicos a zonas específicas de una ciudad específica.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener los datos del cliente PÚBLICO GENERAL. Esto se hace porque cuando se crean tarifas en este catálogo siempre se asignan a ese cliente. Para configurar una tarifa con un cliente diferente se debe crear un convenio.
-
Obtener cliente PÚBLICO GENERAL
- URL:
- /api/Clientes/GetPublicoGeneral
Al obtener la información se almacena y se continúa con una llamada al backend para obtener el listado de tarifas por rangos.
- URL:
-
Obtener listado de tarifas por rango
- URL:
- /api/Tarifas/Rangos/GetListado
Al obtener el listado se filtran las que sean del cliente PÚBLICO GENERAL y se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
- URL:
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se carga el cliente por defecto como se explicó anteriormente y también se hacen llamadas al backend para obtener el listado de sucursales, conceptos de facturación, tipos de cálculo, unidades de medida, orígenes/destinos y productos.
- Obtener listado de sucursales
- URL:
- /api/Sucursales/GetListado
- URL:
- Obtener listado de conceptos de facturación (vienen del ERP)
- URL:
- /api/ConceptosFacturacion/GetListado
- URL:
- Obtener listado de Tipos de cálculo (se agregan directamente por base de datos)
- URL:
- /api/TipoCalculo/GetListado
- URL:
- Obtener listado de unidades de medida (vienen del ERP)
- URL:
- /api/UnidadesMedida/GetListado
- URL:
- Obtener listado de orígenes y destinos
- URL:
- /api/Ciudades/GetListado
- URL:
- Obtener productos
- URL:
- /api/Productos/GetListado
- URL:
Para agregar una tarifa por rangos son necesarios los siguientes datos:
- Responsable de pago: asignado por defecto. No editable.
- Vigencia: es la fecha hasta la que tendrá vigencia la tarifa. definida por usuario.
- Listado de viajes de primera y última milla: los viajes de primera milla son las recolecciones, los de última milla son las entregas, ambos usualmente en la misma ciudad (por eso se les llama locales en código). Para registrar un viaje de primera/última milla se necesitan los siguientes datos:
- Sucursal: se usará para obtener las zonas operativas donde aplicará la tarifa.
- Tipo de medida: sirve para filtrar las unidades de medida entre las que se podrá elegir para los rangos. Las opciones están fijadas en código.
- Concepto: es el concepto de facturación que se está configurando. Las opciones son los conceptos de recolección y entrega que se seleccionaron en parámetros de configuración. Los viajes de primera milla deben tener el concepto de recolección y los viajes de última milla el concepto de entrega. Este concepto será el que se mostrará en la cotización.
- Listado de zonas: son las zonas en donde aplicará la tarifa. Las opciones son las zonas de la sucursal seleccionada anteriormente.
- Listado de productos: son los productos en los que aplicará la tarifa.
- Listado de rangos: pueden ser rangos de kilos, toneladas, o piezas dependiendo el tipo de medida. Se especifica la cantidad mínima y máxima del rango, y el importe que se cobrará por ese rango. Por último se especifica el tipo de cálculo, este dato se refiere a la forma de tomar el importe para el cobro final.
- Listado de maniobras: estos se componen de los siguientes datos:
- Maniobra: se selecciona del listado de conceptos. Las opciones son filtradas para solo mostrar los conceptos que fueron seleccionados en parámetros de configuración como concepto de Carga y Descarga. Este concepto será el que se mostrará en la cotización.
- Unidad de medida: se selecciona del listado. Para maniobras solo están disponibles las opciones Kilogramos y Toneladas.
- Cantidad mínima y máxima: se especifica la cantidad mínima y máxima del rango.
- Importe: lo que se cobrará en caso de entrar en el rango.
- Cálculo: este dato se refiere a la forma de tomar el importe para el cobro final.
- Listado de viajes de milla intermedia (foráneos): los viajes de milla intermedia son los que van generalmente de una ciudad a otra (por eso se llaman foráneos en código). Estos viajes representan el concepto de flete por defecto, es por esto que se asigna por defecto internamente y no se le pide seleccionarlo al usuario. Para registrar un viaje de milla intermedia se necesitan los siguientes datos:
- Origen: es la ciudad del remitente de la guía. Las opciones vienen del ERP.
- Tipo de medida: sirve para filtrar las unidades de medida entre las que se podrá elegir para los rangos. Las opciones están fijadas en código.
- Destino: es la ciudad del destinatario de la guía. Las opciones vienen del ERP.
- Flete mínimo: es lo menos que se puede cobrar por mover la mercancía del origen al destino seleccionado. Será usado si el importe original es menor a este valor.
- Listado de grupos: los grupos son para poder dividir los cobros por zonas y productos cuando el origen y destino sea el mismo. Cada grupo lleva un nombre para poder identificarlo. Cada zona tiene los siguientes datos:
- Listado de zonas: son las zonas en donde aplicará la tarifa. Las opciones son las zonas del destino seleccionado anteriormente.
- Listado de productos: son los productos en los que aplicará la tarifa.
- Listado de rangos: pueden ser rangos de kilos, toneladas, o piezas dependiendo el tipo de medida. Se especifica la cantidad mínima y máxima del rango, y el importe que se cobrará por ese rango. Por último se especifica el tipo de cálculo, este dato se refiere a la forma de tomar el importe para el cobro final.
Al presionar el botón Guardar se hace una llamada al backend para guardar la información.
- Agregar tarifa por rangos
- URL:
- /api/Tarifas/Rangos/Agregar
- Body:
- Responsable de pago
- Vigencia
- Cuota Mensual (obsoleto)
- Listado de viajes de primera y última milla (viajes locales)
- Listado de maniobras
- Listado de viajes de milla intermedia (viajes foraneos)
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Importar tarifa existente
En caso de que se quiera crear una tarifa nueva a partir de una ya existente se puede hacer importandola. Esto ayuda a evitar toda la configuración si lo que se quiere es solo cambiar algunos datos. La opción se encuentra en el formulario para agregar tarifa. Solo será necesario seleccionar la tarifa de la que se quieren tomar los datos. Al seleccionar se cargaran todos los datos para empezar a hacer las modificaciones necesarias. Al terminar los datos se mandarán al mismo endpoint que al agregar una tarifa.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/Rangos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar tarifa
- URL:
- /api/Tarifas/Rangos/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Responsable de pago
- Vigencia
- Cuota Mensual (obsoleto)
- Listado de viajes de primera y última milla (viajes locales)
- Listado de maniobras
- Listado de viajes de milla intermedia (viajes foraneos)
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/Rangos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
-
Eliminar tarifa
- URL:
- /api/Tarifas/Rangos/Eliminar/{IdRegistro}
- Variables:
- Id del registro
Consideraciones
- URL:
Se debe evitar tener más de una tarifa de PÚBLICO GENERAL activa, ya que la tarifa activa es la que se toma para hacer las cotizaciones.
El funcionamiento de la lógica de ambos tipos de tarifas no cuenta con ningún problema. Los “errores” que se han reportado han sido por errores de usuario al momento de configurar las tarifas.
4.19 Catálogo Convenios
Descripción general
A esté catálogo se puede acceder por medio de la barra lateral en el botón Catálogos > Convenios. Esta vista se desarrolla iniciando con el archivo Convenios.js.
Este catálogo tiene un funcionamiento particular, dependiendo del tipo de tarifa configurado en parámetros de configuración será la vista que se mostrará. Existen 2 tipos de tarifa: por región y por rangos. Se iniciará explicando las tarifas por región.
4.20 Tarifas por Región
Descripción general
Esta vista se desarrolla iniciando con el archivo TarifasRegión.js.
Las tarifas por región son las más sencillas de entender y configurar porque solo se configura el concepto de flete. Si se quisieran cobrar los conceptos de recolección, entrega, maniobras de carga y maniobras de descarga, se deberá hacer al estar creando el embarque agregando los conceptos manualmente en la cotización.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener los datos del cliente PÚBLICO GENERAL. Esto se hace porque las tarifas y convenios se almacenan en el mismo lugar y se filtran para mostrar las tarifas que sean un cliente diferente. Para configurar una tarifa con un cliente diferente se debe crear un convenio.
-
Obtener cliente PÚBLICO GENERAL
- URL:
- /api/Clientes/GetPublicoGeneral
Al obtener la información se almacena y se continúa con una llamada al backend para obtener el listado de tarifas por región.
- URL:
-
Obtener listado de tarifas por región
- URL:
- /api/Tarifas/GetByTipo/{IdTipoTarifa}
- Variables:
- Tipo de tarifa. (Siempre se manda 3 por ser región)
- URL:
Al obtener el listado se filtran las que no sean de PÚBLICO GENERAL y se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se carga el cliente por defecto como se explicó anteriormente y también se hacen llamadas al backend para obtener el listado de orígenes/destinos y productos.
-
Obtener listado de orígenes y destinos
- URL:
- /api/Ciudades/GetListado
- URL:
-
Obtener productos
- URL:
- /api/Productos/GetListado
Para agregar una tarifa por región son necesarios los siguientes datos:
- URL:
-
Responsable de pago: se selecciona del listado. Las opciones vienen del ERP.
-
Listado de viajes: estos se componen de los siguientes datos:
- Origen: se selecciona del listado de orígenes/destinos. Las opciones vienen del ERP.
- Flete mínimo: en caso de que el cobro total de la mercancía del embarque sea menor este monto, se cobrará lo del flete mínimo. Definido por el usuario.
- Destinos: se seleccionan del listado de orígenes/destinos. Las opciones vienen del ERP.
- Productos: se componen del producto y el monto. El producto es seleccionado del listado de productos, el monto es definido por el usuario.
Al presionar el botón Guardar Tarifa se hace una llamada al backend para guardar la información.
- Agregar tarifa por región
- URL:
- /api/Tarifas/Agregar
- Body:
- Usuario que crea
- Tipo de tarifa
- Cliente
- Listado de viajes
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Aceptar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar tarifa
- URL:
- /api/Tarifas/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Usuario que crea
- Tipo de tarifa
- Cliente
- Listado de viajes
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
- Eliminar tarifa
- URL:
- /api/Tarifas/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Id usuario
- URL:
4.21 Tarifas por Rango
Descripción general
Esta vista se desarrolla iniciando con el archivo TarifasRangos.js.
Las tarifas por rango son más complejas de configurar porque involucran la configuración del concepto de recolección, entrega, maniobra de carga, maniobra de descarga y flete. Es el tipo de tarifa más usada actualmente por la variedad de escenarios que puede abarcar para calcular los costos. La idea general de una tarifa por rangos es la de cobrar un rango de cantidad específica de productos específicos a zonas específicas de una ciudad específica.
Inicialización de la vista
Al iniciar se hace una llamada al backend para obtener los datos del cliente PÚBLICO GENERAL. Esto se hace porque cuando se crean tarifas en este catálogo siempre se asignan a ese cliente. Para configurar una tarifa con un cliente diferente se debe crear un convenio.
- Obtener cliente PÚBLICO GENERAL
- URL:
- /api/Clientes/GetPublicoGeneral
- URL:
Al obtener la información se almacena y se continúa con una llamada al backend para obtener el listado de tarifas por rangos.
- Obtener listado de tarifas por rango
- URL:
- /api/Tarifas/Rangos/GetListado
- URL:
Al obtener el listado se filtran las que no sean del cliente PÚBLICO GENERAL y se muestran en una tabla que permite hacer algunas acciones con ellos: modificar, consultar, eliminar.
Acciones del usuario
Agregar
Para abrir el formulario de agregar se debe presionar la pestaña Agregar ubicada en la parte superior. Al entrar al formulario se carga el cliente por defecto como se explicó anteriormente y también se hacen llamadas al backend para obtener el listado de sucursales, conceptos de facturación, tipos de cálculo, unidades de medida, orígenes/destinos y productos.
-
Obtener listado de sucursales
- URL:
- /api/Sucursales/GetListado
- URL:
-
Obtener listado de conceptos de facturación (vienen del ERP)
- URL:
- /api/ConceptosFacturacion/GetListado
- URL:
-
Obtener listado de Tipos de cálculo (se agregan directamente por base de datos)
- URL:
- /api/TipoCalculo/GetListado
- URL:
-
Obtener listado de unidades de medida (vienen del ERP)
- URL:
- /api/UnidadesMedida/GetListado
- URL:
-
Obtener listado de orígenes y destinos
- URL:
- /api/Ciudades/GetListado
- URL:
-
Obtener productos
- URL:
- /api/Productos/GetListado
Para agregar una tarifa por rangos son necesarios los siguientes datos:
- URL:
-
Responsable de pago: asignado por defecto. No editable.
-
Vigencia: es la fecha hasta la que tendrá vigencia la tarifa. definida por usuario.
-
Listado de viajes de primera y última milla: los viajes de primera milla son las recolecciones, los de última milla son las entregas, ambos usualmente en la misma ciudad (por eso se les llama locales en código). Para registrar un viaje de primera/última milla se necesitan los siguientes datos:
- Sucursal: se usará para obtener las zonas operativas donde aplicará la tarifa.
- Tipo de medida: sirve para filtrar las unidades de medida entre las que se podrá elegir para los rangos. Las opciones están fijadas en código.
- Concepto: es el concepto de facturación que se está configurando. Las opciones son los conceptos de recolección y entrega que se seleccionaron en parámetros de configuración. Los viajes de primera milla deben tener el concepto de recolección y los viajes de última milla el concepto de entrega. Este concepto será el que se mostrará en la cotización.
- Listado de zonas: son las zonas en donde aplicará la tarifa. Las opciones son las zonas de la sucursal seleccionada anteriormente.
- Listado de productos: son los productos en los que aplicará la tarifa.
- Listado de rangos: pueden ser rangos de kilos, toneladas, o piezas dependiendo el tipo de medida. Se especifica la cantidad mínima y máxima del rango, y el importe que se cobrará por ese rango. Por último se especifica el tipo de cálculo, este dato se refiere a la forma de tomar el importe para el cobro final.
-
Listado de maniobras: estos se componen de los siguientes datos:
- Maniobra: se selecciona del listado de conceptos. Las opciones son filtradas para solo mostrar los conceptos que fueron seleccionados en parámetros de configuración como concepto de Carga y Descarga. Este concepto será el que se mostrará en la cotización.
- Unidad de medida: se selecciona del listado. Para maniobras solo están disponibles las opciones Kilogramos y Toneladas.
- Cantidad mínima y máxima: se especifica la cantidad mínima y máxima del rango.
- Importe: lo que se cobrará en caso de entrar en el rango.
- Cálculo: este dato se refiere a la forma de tomar el importe para el cobro final.
-
Listado de viajes de milla intermedia (foráneos): los viajes de milla intermedia son los que van generalmente de una ciudad a otra (por eso se llaman foráneos en código). Estos viajes representan el concepto de flete por defecto, es por esto que se asigna por defecto internamente y no se le pide seleccionarlo al usuario. Para registrar un viaje de milla intermedia se necesitan los siguientes datos:
- Origen: es la ciudad del remitente de la guía. Las opciones vienen del ERP.
- Tipo de medida: sirve para filtrar las unidades de medida entre las que se podrá elegir para los rangos. Las opciones están fijadas en código.
- Destino: es la ciudad del destinatario de la guía. Las opciones vienen del ERP.
- Flete mínimo: es lo menos que se puede cobrar por mover la mercancía del origen al destino seleccionado. Será usado si el importe original es menor a este valor.
- Listado de grupos: los grupos son para poder dividir los cobros por zonas y productos cuando el origen y destino sea el mismo. Cada grupo lleva un nombre para poder identificarlo. Cada zona tiene los siguientes datos:
- Listado de zonas: son las zonas en donde aplicará la tarifa. Las opciones son las zonas del destino seleccionado anteriormente.
- Listado de productos: son los productos en los que aplicará la tarifa.
- Listado de rangos: pueden ser rangos de kilos, toneladas, o piezas dependiendo el tipo de medida. Se especifica la cantidad mínima y máxima del rango, y el importe que se cobrará por ese rango. Por último se especifica el tipo de cálculo, este dato se refiere a la forma de tomar el importe para el cobro final.
Al presionar el botón Guardar se hace una llamada al backend para guardar la información.
- Agregar tarifa por rangos
- URL:
- /api/Tarifas/Rangos/Agregar
- Body:
- Responsable de pago
- Vigencia
- Cuota Mensual (obsoleto)
- Listado de viajes de primera y última milla (viajes locales)
- Listado de maniobras
- Listado de viajes de milla intermedia (viajes foraneos)
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Importar tarifa existente
En caso de que se quiera crear una tarifa nueva a partir de una ya existente se puede hacer importandola. Esto ayuda a evitar toda la configuración si lo que se quiere es solo cambiar algunos datos. La opción se encuentra en el formulario para agregar tarifa. Solo será necesario seleccionar la tarifa de la que se quieren tomar los datos. Al seleccionar se cargaran todos los datos para empezar a hacer las modificaciones necesarias. Al terminar los datos se mandarán al mismo endpoint que al agregar una tarifa.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/Rangos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
- Editar tarifa
- URL:
- /api/Tarifas/Rangos/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Responsable de pago
- Vigencia
- Cuota Mensual (obsoleto)
- Listado de viajes de primera y última milla (viajes locales)
- Listado de maniobras
- Listado de viajes de milla intermedia (viajes foraneos)
- URL:
Si la operación es exitosa se limpia el formulario. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
- Obtener tarifa por id
- URL:
- /api/Tarifas/Rangos/GetById/{IdRegistro}
- Variables:
- Id del registro
- URL:
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo. Al presionar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
-
Eliminar tarifa
- URL:
- /api/Tarifas/Rangos/Eliminar/{IdRegistro}
- Variables:
- Id del registro
Consideraciones
- URL:
Se debe evitar tener más de una tarifa de PÚBLICO GENERAL activa, ya que la tarifa activa es la que se toma para hacer las cotizaciones.
El funcionamiento de la lógica de ambos tipos de tarifas no cuenta con ningún problema. Los “errores” que se han reportado han sido por errores de usuario al momento de configurar las tarifas o convenios.
5. Procesos
5.1 Inicio de sesión
Descripción general
Este flujo se desarrolla iniciando en el archivo Login.js. El flujo de login se encarga de autenticar al usuario y redirigirlo a la pantalla principal.
Inicialización de la vista
Al ingresar a cualquier página del sistema se valida una sesión activa. Si hay sesión activa se permitirá entrar a la página. Si no hay sesión se redirigirá a la pantalla de inicio de sesión
Acciones del usuario
Iniciar sesión
Los datos necesarios para el login son el RFC de la empresa, usuario y contraseña y contraseña del usuario. Al presionar el botón para iniciar sesión se realiza la siguiente petición al backend:
- URL:
- /api/ValidarLogin/{usuario}/{contraseña}
- Variables:
- usuario
- contraseña
- Headers:
- RFC de la empresa
Después de un inicio de sesión exitoso, el usuario es redirigido a Indicadores, en el archivo Indicadores.js. Esta vista actualmente solo se usa como pantalla principal. No tiene lógica desarrollada para ser usada.
Iniciar sesión desde el ERP
La forma más habitual de entrar en el sistema de paquetería es por medio del ERP. Al presionar el botón para redirigir a paquetería el ERP usa la siguiente url:
- /loginERP?usuario={usuario}&pass={contraseña}&RFC={rfc}
Al usar esa url se accede al archivo LoginExterno.js. En el componente se obtienen los parámetros usuario, contraseña y rfc para poder hacer la llamada al backend para iniciar sesión en automático.
- URL:
- /api/ValidarLogin/{usuario}/{contraseña}
- Variables:
- usuario
- contraseña
- Headers:
- RFC de la empresa
Después de un inicio de sesión exitoso, el usuario es redirigido a Indicadores, en el archivo Indicadores.js. Esta vista actualmente solo se usa como pantalla principal. No tiene lógica desarrollada para ser usada.
5.2 Embarques
Descripción general
Este proceso se desarrolla iniciando en el archivo Embarque.js. Un embarque es un registro donde se especifica la mercancía que se quiere mover, el cliente, el remitente, destinatario entre otros datos necesarios para llevar a cabo un envío.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de embarques usando el endpoint (este endpoint también es usado para la funcionalidad de filtrar):
- URL:
- /Embarque/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó el embarque
- estatus: estatus en el que se encuentra el embarque
- folio: folio del embarque
- origen: origen del embarque
- destino: destino del embarque
- cliente: cliente del embarque
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
A continuación se explican los datos necesarios para crear un embarque:
Sucursal : se precarga tomando el valor de los datos de inicio de sesión del usuario.
Folio Recolección, Embarque, Guía, Informe: el folio de recolección se tomará automáticamente si el embarque está siendo creado a partir de una recolección. El folio de embarque se generará automáticamente al crear el embarque, por lo que desde el frontend no se manda. El resto de los folios funcionan de la misma manera al crear su respectivo registro.
Fecha: se obtiene por código, es la fecha actual de creación.
Estatus del embarque: se precarga del valor seleccionado para usar por defecto en parámetros de configuración.
Moneda: se precarga valor seleccionado para usar por defecto en parámetros de configuración.
Tipo de Cambio: se precarga valor seleccionado para usar por defecto en parámetros de configuración. Son administrados en el ERP.
Tipo de Cobro: se precarga valor seleccionado para usar por defecto en parámetros de configuración. Puede cambiar por el tipo de seguro del cliente si así ha sido configurado en parámetros de configuración.
Responsable de pago: es el cliente, no necesariamente el remitente o destinatario. Son administrados en el ERP.
Tipo de seguro: se obtiene de los datos del cliente al haber sido seleccionado. Dependiendo el tipo de seguro puede llegar a cambiar en automático el Tipo de Cobro si así ha sido configurado en Parámetros de Configuración.
Porcentaje de seguro: se obtiene de los datos del cliente al haber sido seleccionado.
Valor declarado: definido por el usuario. Puede ser obligatorio si así ha sido configurado en parámetros de configuración.
Validar timbrado de factura: al crear un embarque se deberá crear una guía, esta guía puede ser timbrada desde el ERP, al estar activa esta validación de timbrado, se vuelve obligatorio hacer el timbrado para poder marcar salida del viaje que la transporta.
Tipo de servicio: precarga valor seleccionado para usar por defecto en parámetros de configuración.
Observaciones: definido por el usuario. Si el cliente tiene seguro por un tercero, se precargará la póliza del seguro si está dentro de los datos del cliente.
Referencia: definido por el usuario.
Paquetes: se agregan usando los productos registrados en el catálogo de productos. Es necesario seleccionar un cliente para poder agregar paquetes.
Complementos SAT: definidos por el usuario. Los complementos son registros estáticos en base de datos y fueron proporcionados por el equipo del ERP.
Remitente: es la persona o empresa que manda la mercancía. Los remitentes vienen del ERP. Al seleccionar uno el resto de la información será cargada si en el ERP ha sido registrada correctamente.
Destinatario: es la persona o empresa que recibe la mercancía. Los destinatarios vienen del ERP. Al seleccionar uno el resto de la información será cargada si en el ERP ha sido registrada correctamente. La dirección y zona operativa asignada para el destinatario será usada para el proceso de última milla en caso de que aplique.
Entrega en sucursal: cuando se selecciona, la guía generada a partir del embarque no pasará por el proceso de última milla, sino por el proceso de entrega ocurre. Puede deshacer el cobro del concepto de entrega en caso de que aplique.
Entrega en diferente domicilio: al activar, la guía generada a partir del embarque entrará en proceso de última milla pero no se usará la dirección del destinatario, sino la especificada en los campos que aparecerán.
Entrega con cita: al activar se puede especificar una ventana de tiempo en la que se quiere que la mercancía sea entregada. Puede representar un costo extra si en parámetros de configuración fue especificado.
Ruta: se precarga a partir del origen del remitente y destino del destinatario.
Trayectos: se precargan a partir de la ruta.
Conceptos de facturación: se generan con la cotización al presionar el botón Calcular tarifa. Se pueden agregar conceptos manualmente después de haber generado la cotización. Calcular la tarifa es el último paso porque es necesaria toda la información del embarque para realizar el cálculo. Si se edita información después de la cotización es necesario generar una nueva cotización presionando de nuevo el botón Calcular Tarifa. El concepto Flete es el único obligatorio. Si se produce algún error al generar la cotización no se podrá guardar el embarque hasta haber resuelto los errores. El funcionamiento de la lógica de tarifas no cuenta con ningún problema. Los “errores” que se han reportado han sido por errores de usuario al momento de configurar las tarifas o convenios.
Ya que se tienen todos los datos se agrega el embarque presionando el botón Guardar Embarque para hacer la llamada al endpoint:
- URL:
- /Embarques/Agregar
- Body:
- Los datos ya especificados anteriormente.
Al agregar correctamente el embarque se dará la opción al usuario de crear la guía a partir del embarque recién creado. En caso de aceptar, se agregará la guía y ambos registros quedarán relacionados. En caso de no aceptar se regresará al usuario al listado.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener embarque por id
- URL:
- /api/Embarque/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar Embarque ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar embarque
- URL:
- /api/Embarques/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Los datos ya especificados anteriormente.
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener embarque por id
- URL:
- /api/Embarque/GetById/{IdRegistro}
- Variables:
- Id del registro
Cancelar
Para cancelar un registro se necesita seleccionar un registro y después presionar la pestaña Cancelar. Se hará una llamada al backend para obtener los detalles del embarque y cargar en el formulario, dentro de los datos habrá una bandera que indicará si el registro se puede cancelar; si no es posible cancelar se mostrará un aviso; si es posible cancelar solo se ocupará agregar el motivo a los datos ya cargados y presionar el botón Guardar Cambios. Al presionar, se hace la llamada al backend para guardar los cambios.
Cancelar embarque
- URL:
- /api/Embarques/Cancelar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Motivo de cancelación
- Usuario
- Fecha
Si los cambios se guardan correctamente se mostrará la pantalla del listado.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo.
Solo pueden ser eliminados los registros que tengan estatus Cancelado.
Al eliminar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
- Eliminar embarque
- URL:
- /api/Embarques/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Usuario
- URL:
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de los embarques deseados. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. En caso de usar el filtro por Folio y tener otros filtros agregados, serán ignorados para darle prioridad al folio. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /Embarque/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó el embarque
- estatus: estatus en el que se encuentra el embarque
- folio: folio del embarque
- origen: origen del embarque
- destino: destino del embarque
- cliente: cliente del embarque
Al obtener los registros se mostrarán en el listado.
Importar
Para importar embarques es necesario tener configurada al menos una plantilla de importación. Para acceder a la función, seleccionar la pestaña Importar en la parte superior. Se mostrará un formulario, seguir los siguientes pasos:
- Selecciona el cliente, se obtendrá la plantilla de configuración creada para el cliente seleccionado. Este cliente también será asignado por defecto como responsable de pago del embarque.
- Si no se tiene el archivo de la plantilla, se puede descargar con el botón correspondiente.
- Cargar el archivo con los embarques presionando el botón Importar.
- Esperar a que se genere la vista previa.
- Confirmar la información. La cotización se generará junto con los embarques a la hora de guardar la información.
- Guardar la información presionando el botón Aceptar.
Los nuevos registros estarán disponibles en el listado.
Generar Guía a partir de Embarque
Si ya hay un embarque creado y no tiene guía se puede generar seleccionando el registro en el listado y presionando el botón Generar Guía ubicado en la parte superior derecha. Al presionar se redirigirá al formulario para agregar guía con los datos del embarque cargados. Presiona el botón Guardar Guía para guardar el registro.
Generar reporte
Para el reporte de un registro se necesita ubicar en el listado y presionar el botón con icono de hoja de papel ubicado del lado izquierdo. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de embarque.
5.3 Recolecciones
Descripción general
Este proceso se desarrolla iniciando en el archivo Recoleccion.js. Una recolección contiene casi la misma información que un embarque. La diferencia es que con las recolecciones se enfoca más a los datos del remitente para realizar recolección en el proceso de última milla, a diferencia del embarque que se enfoca en el destinatario.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de recolecciones usando el endpoint (este endpoint también es usado para la funcionalidad de filtrar):
- URL:
- /Recoleccion/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó la recolección
- estatus: estatus en el que se encuentra la recolección
- folio: folio de la recolección
- origen: origen de la recolección
- destino: destino de la recolección
- cliente: cliente de la recolección
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
A continuación se explican los datos necesarios para crear una recolección:
Sucursal : se precarga tomando el valor de los datos de inicio de sesión del usuario.
Folio Recolección, Embarque, Guía, Informe: el folio de recolección se generará automáticamente al crear la recolección, por lo que desde el frontend no se manda. El resto de los folios funcionan de la misma manera al crear su respectivo registro.
Fecha: se obtiene por código, es la fecha actual de creación.
Estatus de la recolección: se precarga del valor seleccionado para usar por defecto en parámetros de configuración.
Moneda: se precarga valor seleccionado para usar por defecto en parámetros de configuración.
Tipo de Cambio: se precarga valor seleccionado para usar por defecto en parámetros de configuración. Son administrados en el ERP.
Tipo de Cobro: se precarga valor seleccionado para usar por defecto en parámetros de configuración. Puede cambiar por el tipo de seguro del cliente si así ha sido configurado en parámetros de configuración.
Responsable de pago: es el cliente, no necesariamente el remitente o destinatario. Son administrados en el ERP.
Tipo de seguro: se obtiene de los datos del cliente al haber sido seleccionado. Dependiendo el tipo de seguro puede llegar a cambiar en automático el Tipo de Cobro si así ha sido configurado en Parámetros de Configuración.
Porcentaje de seguro: se obtiene de los datos del cliente al haber sido seleccionado.
Valor declarado: definido por el usuario. Puede ser obligatorio si así ha sido configurado en parámetros de configuración.
Observaciones: definido por el usuario. Si el cliente tiene seguro por un tercero, se precargará la póliza del seguro si está dentro de los datos del cliente.
Referencia: definido por el usuario.
Paquetes: se agregan usando los productos registrados en el catálogo de productos. Es necesario seleccionar un cliente para poder agregar paquetes.
Complementos SAT: definidos por el usuario. Los complementos son registros estáticos en base de datos y fueron proporcionados por el equipo del ERP.
Remitente: es la persona o empresa que manda la mercancía. Los remitentes vienen del ERP. Al seleccionar uno el resto de la información será cargada si en el ERP ha sido registrada correctamente. La dirección y zona operativa asignada para el remitente será usada para el proceso de última Milla
Destinatario: es la persona o empresa que recibe la mercancía. Los destinatarios vienen del ERP. Al seleccionar uno el resto de la información será cargada si en el ERP ha sido registrada correctamente.
Recolección en diferente domicilio: al activar, la recolección entrará en proceso de última milla pero no se usará la dirección del remitente, sino la especificada en los campos que aparecerán.
Programar cita de recolección: al activar se puede especificar una ventana de tiempo en la que se quiere que la mercancía sea recolectada. Puede representar un costo extra si en parámetros de configuración fue especificado.
Entrega en sucursal: cuando se selecciona, la guía generada a partir del embarque no pasará por el proceso de última milla, sino por el proceso de entrega ocurre. Puede deshacer el cobro del concepto de entrega en caso de que aplique.
Entrega en diferente domicilio: al activar, la guía generada a partir del embarque entrará en proceso de última milla pero no se usará la dirección del destinatario, sino la especificada en los campos que aparecerán.
Entrega con cita: al activar se puede especificar una ventana de tiempo en la que se quiere que la mercancía sea entregada. Puede representar un costo extra si en parámetros de configuración fue especificado.
Conceptos de facturación: se generan con la cotización al presionar el botón Calcular tarifa. Se pueden agregar conceptos manualmente después de haber generado la cotización. Calcular la tarifa es el último paso porque es necesaria toda la información de la recolección para realizar el cálculo. Si se edita información después de la cotización es necesario generar una nueva cotización presionando de nuevo el botón Calcular Tarifa. El concepto Flete es el único obligatorio. Si se produce algún error al generar la cotización no se podrá guardar la recolección hasta haber resuelto los errores. El funcionamiento de la lógica de tarifas no cuenta con ningún problema. Los “errores” que se han reportado han sido por errores de usuario al momento de configurar las tarifas o convenios.
Ya que se tienen todos los datos se agrega la recolección presionando el botón Guardar Recolección para hacer la llamada al endpoint:
- URL:
- /Recoleccion/Agregar
- Body:
- Los datos ya especificados anteriormente.
Al agregar correctamente la recolección se dará la opción al usuario de crear el embarque a partir de la recolección recién creada. En caso de aceptar, se agregará el embarque y ambos registros quedarán relacionados. En caso de no aceptar se regresará al usuario al listado.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener recolección por id
- URL:
- /api/Recoleccion/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar Recolección ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar recolección
- URL:
- /api/Recoleccion/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Los datos ya especificados anteriormente.
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener recolección por id
- URL:
- /api/Recoleccion/GetById/{IdRegistro}
- Variables:
- Id del registro
Cancelar
Para cancelar un registro se necesita seleccionar un registro y después presionar la pestaña Cancelar. Se hará una llamada al backend para obtener los detalles de la recolección y cargar en el formulario, se ocupará agregar el motivo a los datos ya cargados y presionar el botón Aceptar. Al presionar, se hace la llamada al backend para guardar los cambios.
Cancelar recolección
- URL:
- /api/Recoleccion/Cancelar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Motivo de cancelación
- Usuario
- Fecha
Si los cambios se guardan correctamente se mostrará la pantalla del listado.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo.
Solo pueden ser eliminados los registros que tengan estatus Cancelado.
Al eliminar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
- Eliminar recolección
- URL:
- /api/Recoleccion/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Usuario
- URL:
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de las recolecciones deseadas. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. En caso de usar el filtro por Folio y tener otros filtros agregados, serán ignorados para darle prioridad al folio. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /Recoleccion/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó la recolección
- estatus: estatus en el que se encuentra la recolección
- folio: folio de la recolección
- origen: origen de la recolección
- destino: destino de la recolección
- cliente: cliente de la recolección
Al obtener los registros se mostrarán en el listado.
Importar
Para importar recolecciones es necesario tener configurada al menos una plantilla de importación. Para acceder a la función, seleccionar la pestaña Importar en la parte superior. Se mostrará un formulario, seguir los siguientes pasos:
- Selecciona el cliente, se obtendrá la plantilla de configuración creada para el cliente seleccionado. Este cliente también será asignado por defecto como responsable de pago de la recolección.
- Si no se tiene el archivo de la plantilla, se puede descargar con el botón correspondiente.
- Cargar el archivo con las recolecciones presionando el botón Importar.
- Esperar a que se genere la vista previa.
- Confirmar la información. La cotización se generará junto con las recolecciones a la hora de guardar la información.
- Guardar la información presionando el botón Aceptar.
Los nuevos registros estarán disponibles en el listado.
Generar Embarque a partir de Recoleccion
Si ya hay una recolección creada y no tiene Embarque se puede generar seleccionando el registro en el listado y presionando el botón Generar Embarque ubicado en la parte superior derecha. Al presionar se redirigirá al formulario para agregar embarque con los datos de la recolección cargados, con excepción de algunos campos que no se capturan al crear la recolección, esos datos deben ser capturados por el usuario. Presiona el botón Guardar Embarque para guardar el registro.
Generar reporte
Para el reporte de un registro se necesita ubicar en el listado y presionar el botón con icono de hoja de papel ubicado del lado izquierdo. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de recolección.
5.4 Guías
Descripción general
Este proceso se desarrolla iniciando en el archivo Guia.js. Una guía se relaciona con un embarque para poder acceder a su información, por lo que funciona más como un puente hacia la información del embarque.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de guías usando el endpoint (este endpoint también es usado para la funcionalidad de filtrar):
- URL:
- /Guias/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó la guía
- estatus: estatus en el que se encuentra la guía
- folio: folio de la guía
- origen: origen de la guía
- destino: destino de la guía
- cliente: cliente de la guía
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
A continuación se explican los datos necesarios para crear una guía:
Sucursal : se precarga de los datos del embarque.
Folio Embarque, Guía, Informe: el folio de guía se generará automáticamente al crear la guía , por lo que desde el frontend no se manda. El resto de los folios funcionan de la misma manera al crear su respectivo registro.
Fecha: se obtiene por código, es la fecha actual de creación.
Hora: se obtiene por código, es la hora actual de creación.
Estatus de la guía: se precarga del valor seleccionado para usar por defecto en parámetros de configuración.
Moneda: se precarga de los datos del embarque.
Tipo de Cambio: se precarga de los datos del embarque.
Valor declarado: se precarga de los datos del embarque.
Observaciones: se precarga de los datos del embarque.
Conceptos de facturación: se precargan de los datos del embarque.
Como se puede notar la mayoría de datos se toman del embarque por lo que la vista de agregar sirve más como pantalla para confirmar los datos.
Ya que se tienen todos los datos se agrega la guía presionando el botón Guardar Guía. Antes de agregar la guía se valida que la sucursal de la guía tenga asignado documento de timbrado en parámetros de configuración usando el endpoint:
- URL:
- /ParametrosConfiguracion/ValidarRequiereDocumentoTimbrado/{IdSucursal}
- Variable:
- Sucursal
Si la sucursal no tiene documento se abrirá un diálogo para seleccionarlo y guardarlo. Si la sucursal si tiene se procede a agregar la guía usando el siguiente endpoint:
- URL:
- /Guia/Agregar
- Body:
- Los datos ya especificados anteriormente.
Cuando una guía se crea en paquetería, también se crea un viaje en el ERP, ambos quedan relacionados entre sí y se vuelven codependientes de modo que si se quiere por ejemplo cancelar una guía, se debe cancelar primero el viaje del ERP. También cuando la guía es creada se manda un correo al destinatario proporcionando un folio para rastrear su mercancía.
Al agregar correctamente la guía se regresará al usuario al listado. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener guía por id
- URL:
- /api/Guia/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario aunque realmente solo es modificable el valor Observaciones, para realmente editar la información se debería modificar el embarque. Para guardar los cambios se presiona el botón Guardar Guía ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar guía
- URL:
- /api/Guia/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Los datos ya especificados anteriormente.
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener guía por id
- URL:
- /api/Guia/GetById/{IdRegistro}
- Variables:
- Id del registro
Cancelar
Para cancelar un registro se necesita seleccionar un registro y después presionar la pestaña Cancelar. La guía debe tener estatus Pendiente y el su viaje en el ERP debe haber sido cancelado.
Se hará una llamada al backend para obtener los detalles de la guía y cargar en el formulario, se ocupará agregar el motivo a los datos ya cargados y presionar el botón Aceptar. Al presionar, se hace la llamada al backend para guardar los cambios.
Cancelar guía
- URL:
- /api/Guia/Cancelar
- Body:
- Id del registro
- Motivo de cancelación
- Usuario
- Fecha
Si los cambios se guardan correctamente se mostrará la pantalla del listado.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo.
Solo pueden ser eliminados los registros que tengan estatus Cancelado.
Al eliminar, se hace la llamada al backend para validar los permisos del usuario.
Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
Eliminar guía
- URL:
- /api/Guia/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Usuario
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de los registros deseados. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. En caso de usar el filtro por Folio y tener otros filtros agregados, serán ignorados para darle prioridad al folio. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /Guias/GetByFiltro/{fechaInicial}/{fechaFinal}/{sucursal}/{estatus}/{folio}/{origen}/{destino}/{cliente}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- sucursal: sucursal en la que se creó la recolección
- estatus: estatus en el que se encuentra la recolección
- folio: folio de la recolección
- origen: origen de la recolección
- destino: destino de la recolección
- cliente: cliente de la recolección
Al obtener los registros se mostrarán en el listado.
Cambiar tipo de cobro
El tipo de cobro de una guía se puede cambiar para casos en los que el cliente haya liquidado el pago antes o se acuerde de otra forma diferente a la inicial.
Para cambiarlo se debe seleccionar el registro del listado y presionar la pestaña Cambiar Tipo Cobro. Se abrirá un diálogo con las opciones disponibles.
Al guardar los cambios se cambiará el tipo de cobro del embarque ligado a la guía porque de ahí se toma el valor visible al consultar la guía.
El endpoint que se usa es el siguiente:
Cambiar tipo de cobro
- URL:
- /api/Guias/CambiarTipoCobro
- Body:
- Id del registro
- Tipo de cobro
Generar reporte
Para el reporte de un registro se necesita ubicar en el listado y presionar el botón con icono de hoja de papel ubicado del lado izquierdo. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de guías.
Imprimir
Imprimir en el contexto de guías se refiere a imprimir las etiquetas para los paquetes de la mercancía. Las etiquetas pueden ser usadas para tener un control de la mercancía, y también para ser usadas con el escáner en los procesos de carga y descarga.
El formato usado para las etiquetas se encuentra ubicado en scr/Constants/index.js > TICKET_ZEBRA_TEMPLATE. Para la generación de este código dirigirse al anexo “Generación de etiquetas” .
Para imprimir se necesita ubicar en el listado y presionar el botón con icono de impresora ubicado del lado izquierdo. Al presionar, se comprobará la conexión la impresora y se iniciará la impresión.
Por defecto se imprimen todas las etiquetas de todos los productos. En caso de solo querer imprimir algunas etiquetas debe estar configurado en Parámetros de Configuración > Guías > Requiere Etiquetas Adicionales.
Descargar etiquetas
En caso de querer un archivo con las etiquetas en lugar de imprimirlas directamente se pueden descargar haciendo uso de la opción Descargar PDF con etiquetas.
Para descargar el archivo se necesita ubicar en el listado y presionar el botón con icono de bandeja con flecha ubicado del lado izquierdo. Al presionar, se descargará el archivo con las etiquetas.
Reenviar correo de seguimiento
Al crear una guía se manda al destinatario un correo con un folio para el seguimiento de la guía. En caso de que el correo no haya sido enviado por alguna razón. Se puede reenviar el correo haciendo uso de la opción Reenviar correo de seguimiento.
Para reenviar el correo se necesita ubicar en el listado y presionar el botón con icono de sobre ubicado del lado izquierdo. Al presionar, se reenviará el correo nuevamente.
5.5 Informes
Descripción general
Este proceso se desarrolla iniciando en el archivo Informes.js. Un informe es una agrupación de guías que comparten origen y destino.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de informes usando el endpoint (este endpoint también es usado para la funcionalidad de filtrar):
- URL:
- /Informes/GetByFiltro/{fechaInicial}/{fechaFinal}/{folio}/{sucursalEmisora}/{sucursalReceptora}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- folio: folio del informe
- sucursal emisora: la sucursal que manda la mercancía
- sucursal receptora: la sucursal que recibe la mercancía
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
A continuación se explican los datos necesarios para crear un informe:
Folio: el folio se generará automáticamente al crear el informe , por lo que desde el frontend no se manda.
Fecha: se obtiene por código, es la fecha actual de creación.
Hora: se obtiene por código, es la hora actual de creación.
Estatus: se precarga el estatus pendiente.
Oficina emisora: es la sucursal que manda la mercancía.
Oficina receptora: es la sucursal que recibe la mercancía.
Origen: será la ubicación de donde saldrán inicialmente las guías.
Destino: será la ubicación a donde llegarán las guías.
Remolque 1: es el remolque en el que se pretende mover las guías.
Remolque 2: en caso de ser necesario se puede agregar este segundo remolque. Campo opcional.
Placas remolque 1 y 2: las placas de ambos remolques se cargan automáticamente al seleccionar el remolque.
Listado de guías: son las guías que serán ligadas al informe.
Ya que se tienen todos los datos se agrega el informe presionando el botón Guardar Informe. Para guardar de usa el siguiente endpoint:
- URL:
- /Informes/Agregar
- Body:
- Los datos ya especificados anteriormente.
Al agregar correctamente el informe se regresará al usuario al listado. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener informe por id
- URL:
- /api/Informes/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar Informe ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar informe
- URL:
- /api/Informes/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Los datos ya especificados anteriormente.
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener informe por id
- URL:
- /api/Informes/GetById/{IdRegistro}
- Variables:
- Id del registro
Cancelar
Para cancelar un registro se necesita seleccionar un registro y después presionar la pestaña Cancelar. El informe debe tener estatus Pendiente. Se hará una llamada al backend para obtener los detalles del informe y cargar en el formulario, se ocupará agregar el motivo a los datos ya cargados y presionar el botón Guardar cambios. Al presionar, se hace la llamada al backend para guardar los cambios.
Cancelar informe
- URL:
- /api/Informes/Cancelar/{IdRegistro}
- Body:
- Motivo de cancelación
- Usuario
- Fecha
Si los cambios se guardan correctamente se mostrará la pantalla del listado.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo.
Solo pueden ser eliminados los registros que tengan estatus Cancelado.
Al eliminar, se hace la llamada al backend para validar los permisos del usuario.
- Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
- URL:
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
- Eliminar informe
- URL:
- /api/Informes/Eliminar/{IdRegistro}/{IdUsuario}
- Variables:
- Id del registro
- Usuario
- URL:
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de los registros deseados. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. En caso de usar el filtro por Folio y tener otros filtros agregados, serán ignorados para darle prioridad al folio. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /Informes/GetByFiltro/{fechaInicial}/{fechaFinal}/{folio}/{sucursalEmisora}/{sucursalReceptora}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- folio: folio del informe
- sucursal emisora: la sucursal que manda la mercancía
- sucursal receptora: la sucursal que recibe la mercancía
Al obtener los registros se mostrarán en el listado.
Generar reporte
Para el reporte de un registro se necesita ubicar en el listado y presionar el botón con icono de hoja de papel ubicado del lado izquierdo. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de informes.
5.6 Viajes
Descripción general
Este proceso se desarrolla iniciando en el archivo Viajes.js. Un viaje es un registro que representa el movimiento de la mercancía a lo largo de una ruta. Los viajes especifican la unidad en la que se mueve, el operador que maneja la unidad, las salidas y llegadas a los orígenes y destinos de cada trayecto de la ruta, y los informes que se mueven.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de viajes usando el endpoint (este endpoint también es usado para la funcionalidad de filtrar):
- URL:
- /Viajes/GetByFiltro/{fechaInicial}/{fechaFinal}/{estatus}/{folio}/{origen}/{destino}/{operador}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- estatus: estatus del viaje
- folio: folio del informe
- origen: es de donde parte el viaje
- destino: es hasta donde llega el viaje
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
A continuación se explican los datos necesarios para crear un viaje:
Sucursal : se precarga de los datos de la sesión del usuario.
Folio: el folio del viaje se generará automáticamente al crear el viaje, por lo que desde el frontend no se manda.
Núm. Viaje Cliente: definido por el usuario.
Fecha: se obtiene por código, es la fecha actual de creación.
Hora: se obtiene por código, es la hora actual de creación.
Estatus del viaje: se precarga el estatus pendiente por defecto.
Candado oficial: definido por el usuario.
Identificador: definido por el usuario.
Origen: será la ubicación de donde saldrá el viaje.
Destino: será la ubicación a donde llegará el viaje.
Ruta: es la ruta que seguirá el viaje. Las opciones son administradas en el ERP.
Operador: es el operador que llevará el viaje. Las opciones son obtenidas del ERP.
Unidad: es el camión o transporte que conducirá el operador. Las opciones son obtenidas del ERP. Si el operador ya tiene asignada una unidad se asigna en automático al seleccionar el operador.
Remolque 1: es el remolque en el que se pretende mover mercancía. Se vuelve obligatorio si la unidad seleccionada lo requiere.
Remolque 2: en caso de ser necesario se puede agregar este segundo remolque. Campo opcional.
Dolly: dolly que se usará.
Placas unidad, dolly y remolque 1 y 2: las placas de la unidad y ambos remolques se cargan automáticamente al seleccionarlos.
Estatus unidad, dolly y remolque 1 y 2: las placas de la unidad y ambos remolques se cargan automáticamente al seleccionarlos.
Listado de informes: son los informes que serán ligados al viaje. Se pueden agregar informes que tengan como ubicación actual el origen de algún trayecto de la ruta del viaje, no es necesario que el destino sea el mismo del viaje, esto permite que se pueda avanzar informes con otros viajes. Al detectar que se agrega un informe que no tiene el mismo destino que el viaje se debe especificar el punto al que llegará.
La vista tiene una barra de porcentaje que va aumentando conforme se agregan informes al viaje. La barra indica una estimación usada de la capacidad de los remolques, se le llama cubicaje. El cubicaje no detiene el proceso, es algo meramente informativo.
Ya que se tienen todos los datos se agrega el viaje presionando el botón Guardar Viaje. Para guardar de usa el siguiente endpoint:
- URL:
- /Viajes/Agregar
- Body:
- Los datos ya especificados anteriormente.
Cuando se crea un viaje en paquetería, también se crea un viaje en el ERP como cuando se crea una guía, la diferencia es que este nuevo viaje es que es un viaje compuesto y con ese nombre se distingue. Ambos viajes quedan relacionados y los cambios en uno puede afectar al otro.
Al agregar correctamente el viaje se regresará al usuario al listado. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener viaje por id
- URL:
- /api/Viajes/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar Viaje ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar viaje
- URL:
- /api/Viajes/Modificar
- Body:
- Los datos ya especificados anteriormente.
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener viaje por id
- URL:
- /api/Viajes/GetById/{IdRegistro}
- Variables:
- Id del registro
Cancelar
Para cancelar un registro se necesita seleccionar un registro y después presionar la pestaña Cancelar. El viaje debe tener estatus Pendiente y el su viaje en el ERP debe haber sido cancelado.
Se hará una llamada al backend para obtener los detalles del viaje y cargar en el formulario, se ocupará agregar el motivo a los datos ya cargados y presionar el botón Aceptar. Al presionar, se hace la llamada al backend para guardar los cambios.
Cancelar viaje
- URL:
- /api/Viajes/CancelarViaje/{IdRegistro}
- Variables:
- Id del registro
- Body:
- Motivo de cancelación
- Usuario
- Fecha
Si los cambios se guardan correctamente se mostrará la pantalla del listado.
Eliminar
Para eliminar un registro se necesita ubicar en el listado y presionar el botón con icono de bote de basura, ubicado del lado izquierdo.
Solo pueden ser eliminados los registros que tengan estatus Cancelado.
Al eliminar, se hace la llamada al backend para validar los permisos del usuario.
Validar permiso de usuario
- URL:
- /Utilerias/ValidaDerechos/{IdUsuario}/{IdPermiso}/3
- Variables:
- Id del usuario
- Id del permiso
Si el usuario cuenta con el permiso necesario se hace una llamada al backend para realizar la acción.
Eliminar viaje
- URL:
- /api/Viajes/Eliminar/{IdRegistro}/{IdEstatus}
- Variables:
- Id del registro
- Estatus del viaje
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de los registros deseados. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. En caso de usar el filtro por Folio y tener otros filtros agregados, serán ignorados para darle prioridad al folio. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /Viajes/GetByFiltro/{fechaInicial}/{fechaFinal}/{estatus}/{folio}/{origen}/{destino}/{operador}
- Variables:
- fechaInicial: la fecha de la que se me empezarán a tomar registros
- fechaFinal: la fecha de la que se me terminarán a tomar registros
- estatus: estatus del viaje
- folio: folio del informe
- origen: es de donde parte el viaje
- destino: es hasta donde llega el viaje
Al obtener los registros se mostrarán en el listado.
Generar reportes
En esta sección se mostrará el listado de reportes que contengan el tipo de proceso: 42,43 y 44. Una vez seleccionado uno de ellos se mostrará un formulario con los siguientes campos:
- Fecha inicial
- Fecha final
- Destinos
- Cliente
Además muestra la opción para generar el reporte el cual descarga el formato en PDF.
Marcar Salida de Trayecto
Marcar salida significa dar inicio a un viaje, cada vez que un operador salga de un origen se debe marcar salida para indicar que la mercancía se encuentra en ruta al destino.
Para marcar salida se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se moverán en cada trayecto. Del lado izquierdo aparecerá el texto Marcar Salida. Al presionar se mostrará un diálogo para confirmar la información. Se presiona Aceptar y se marcará la salida del trayecto usando el siguiente endpoint:
- URL:
- /Viajes/AgregarSalida
- Body:
- Id del Viaje
- origen: es el origen del trayecto
- destino: es el destino del trayecto
- fecha de salida
- motivo de retraso (en caso de aplicar)
- estatus del viaje
Cuando se marca la salida del primer trayecto, el viaje pasa de estatus Pendiente a En Ruta.El viaje continuará en estatus En Ruta hasta marcar llegada del último trayecto.
Marcar Llegada de Trayecto
Marcar llegada significa que la mercancía ha llegado a un destino, puede ser el destino de un trayecto o el destino final del viaje, cada vez que un operador llegue a un destino se debe marcar llegada para indicar que la mercancía se encuentra en ese punto.
Para marcar llegada se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Del lado izquierdo aparecerá el texto Marcar llegada. Al presionar se mostrará un diálogo para confirmar la información. Se presiona Aceptar y se marcará la llegada del trayecto usando el siguiente endpoint:
- URL:
- /Viajes/AgregarLlegada
- Body:
- Id del Viaje
- origen: es el origen del trayecto
- destino: es el destino del trayecto
- fecha de salida
- motivo de retraso (en caso de aplicar)
- estatus del viaje
Cuando se marca la llegada de un trayecto puede que algunos informes “se bajen” del viaje si al agregarlos se especificó que llegarían hasta ese destino. En el caso de que un informe llegue al destino indicado pero no sea su destino final, quedará disponible para que pueda ser añadido a otro viaje que lo pueda acercar más o llevar a su destino final.
Cancelar Salida de Trayecto
Para cancelar la salida de un trayecto se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Del lado izquierdo aparecerá el texto Cancelar Salida. Al presionar se mostrará un diálogo para confirmar la información. Se presiona Aceptar y se cancelará la salida del trayecto usando el siguiente endpoint:
- URL:
- /Viajes/cancelarTrayecto/{IdTrayecto}
- Variables:
- Id del trayecto
- Body:
- Usuario
- fecha
- hora
- motivo
Al cancelar la salida, se habilitará de nuevo la opción para marcar salida y se bloqueará la de marcar llegada.
Timbrar Informe
Timbrar un informe significa avisar al SAT que se va mover mercancía en carretera.
Para timbrar un informe se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Cada informe se timbra de forma individual, al lado izquierdo del listado de informes está el botón Generar CFDI, al presionar se mostrará un diálogo para confirmar el tipo de timbrado que será: real o de prueba. Se presiona Aceptar y se realizará el timbrado usando el siguiente endpoint:
- URL:
- /Guias/GetCFDITraslada/{IdInforme}/{sustituir}
- Variables:
- Id del informe
- sustituir: es una bandera para indicar si el CFDI por generar es para sustituir uno anterior. En este caso es negativo así que se manda 0.
Al timbrar correctamente se abrirá una pestaña mostrando el PDF con el CFDI que deberá portar el operador.
Nota. Es muy importante recordar que existe el timbrado real y el timbrado de prueba. El timbrado de prueba no emite el aviso al SAT. El timbrado real si emite el aviso al SAT. El sistema mostrará un aviso al usuario indicando si lo que está por timbrar será un timbrado real o timbrado de prueba. Recordar que en caso de querer configurar que tipo de timbrado se quiere hacer, se puede hacer en Parámetros de configuración > Guía > Hacer timbrado de prueba.
Cancelar Timbrado de Informe
Para cancelar el timbrado de un informe se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Al lado izquierdo del listado de informes está el botón Cancelar Timbrado SAT (visible sólo si el informe fue timbrado previamente), al presionar se mostrará un diálogo para confirmar el tipo de timbrado a cancelar: real o de prueba. Se presiona Aceptar y se realizará el timbrado usando el siguiente endpoint:
- URL:
- /Informes/CancelarCFDITraslada/{IdInforme}
- Variables:
- Id del informe
- sustituir: es una bandera para indicar si el CFDI por generar es para sustituir uno anterior. En este caso es negativo así que se manda 0.
- Body:
- motivo de cancelación
- motivo de cancelación ante el SAT. Las opciones no son administradas en el ERP, son insertadas por base de datos.
- clave de cancelación ante el SAT. Las opciones no son administradas en el ERP, son insertadas por base de datos.
- folio fiscal UUID: es el folio que se quiere cancelar.
Al cancelar el timbrado se habilitará de nuevo el botón para volver a timbrar.
Cuando la clave de cancelación es 1 se genera automáticamente un nuevo timbrado para el informe.
Descargar XML de Timbrado
Para descargar el XML de timbrado se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Al lado izquierdo del listado de informes está el botón Generar XML, al presionar se descargará un archivo xml con los datos.
Descargar Excel con Complementos
Para descargar el archivo en formato excel con los complementos del informe se necesita seleccionar el viaje en el listado. Se cargará en la parte inferior de Detalles de Paradas el listado de trayectos del viaje, y los informes que se mueven en cada trayecto. Al lado izquierdo del listado de informes está el botón Descargar Excel con complementos, al presionar se descargará un archivo xlsx con los datos.
5.7 Corte de Caja
Descripción general
Este proceso se desarrolla iniciando en el archivo CorteCaja.js. Un corte de caja sirve para agrupar un listado de guías de un mismo día y operador o usuario. Si la guía fue una entrega en sucursal (también llamada “ocurre”) se busca por usuario que entregó. Si la guía fue una entrega a domicilio se busca por operador.
Inicialización de la vista
El proceso inicia en la pestaña Listado, se obtiene el listado de cortes usando el endpoint:
- URL:
- /api/CorteCaja/GetListado
Al obtener la respuesta se muestra en un listado.
Acciones del usuario
Agregar
Para crear un corte se necesitan los siguientes datos:
Fecha: se usa también como filtro, es la fecha de creación de las guías que se quieren agregar.
Búsqueda por usuario: estando activo permite seleccionar usuario para buscar guías que tengan entrega ocurre y hayan sido asignadas a ese usuario. Estando inactivo permite seleccionar operador para buscar guías que tengan entrega a domicilio y hayan sido asignadas a ese operador.
Operador/Usuario: el usuario u operador seleccionado se usará para filtrar las guías. El listado de usuarios y operadores viene del ERP.
Listado de guías: son las guías que coinciden con los filtros aplicados.
Cuando se tienen los datos antes mencionados, se puede crear el corte de caja presionando el botón Guardar ubicado en la parte inferior. Se usar el siguiente endpoint:
- URL:
- /CorteCaja/Agregar
- Body:
- total: es el importe total sumado por todas las guías.
- fecha
- hora
- usuario
- operador
- sucursal
- listado de guías
Al agregar correctamente el corte se regresará al usuario al listado. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Modificar
Para modificar un registro se necesita ubicar en el listado y presionar el botón con icono de lápiz ubicado del lado izquierdo. Al presionar se mostrará el formulario de agregar con los datos del registro precargados. Los datos se obtienen al hacer una llamada al backend.
Obtener corte por id
- URL:
- /api/CorteCaja/GetById/{IdRegistro}
- Variables:
- Id del registro
Ya con los datos cargados se puede modificar el formulario. Para guardar los cambios se presiona el botón Guardar ubicado en la parte inferior. Al presionarlo se hace una llamada al backend para actualizar la información.
Editar corte
- URL:
- /api/CorteCaja/Modificar/{IdRegistro}
- Variables:
- Id del registro
- Body:
- total: es el importe total sumado por todas las guías.
- fecha
- hora
- usuario
- operador
- sucursal
- listado de guías
Si la operación es exitosa se regresa al listado de registros. Si surge algún error se muestra mensaje al usuario y los datos permanecen en el formulario.
Consultar
Para consultar un registro se necesita ubicar en el listado y presionar el botón con icono de ojo ubicado del lado izquierdo. Al presionar, se mostrará el formulario de agregar con los datos del registro precargados y todos los campos deshabilitados. Los datos se obtienen al hacer una llamada al backend.
Obtener viaje por id
- URL:
- /api/CorteCaja/GetById/{IdRegistro}
- Variables:
- Id del registro
Filtrar
En la vista de listado se pueden filtrar los registros usando diferentes parámetros, los parámetros deben ser características de los registros deseados. Los parámetros que no se quieran usar para filtrar se pueden dejar en blanco para que no tengan efecto. Una vez establecidos los filtros se hace la llamada al backend:
- URL:
- /CorteCaja/GetListadoByFiltros/{fecha}/{IdOperador}/{IdUsuario}
- Variables:
- fecha
- operador
- usuario
Al obtener los registros se mostrarán en el listado.
Generar reporte por corte
Para generar el reporte de un corte específico se necesita ubicar en el listado y presionar el botón con icono de hoja de papel ubicado del lado izquierdo. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de corte de caja.
Generar reporte general
Para generar el reporte general se necesita seleccionar la fecha de los cortes que se quieren incluir, después presionar el botón con icono de hoja de papel ubicado del lado derecho de los filtros. Al presionar, se descargará un archivo PDF con el reporte. Es necesario que previamente se haya creado el formato de impresión del proceso de corte de caja general.
Exportar Vista Actual a Excel
Para exportar la vista actual a Excel presionar el botón con icono de cuadrícula ubicado del lado derecho de los filtros. Al presionar, se descargará un archivo xlsx con el reporte.
5.8 Seguimiento (Tracking)
Descripción general
Este proceso se desarrolla iniciando en el archivo Seguimiento.js.
Este módulo es para poder dar ver el estado de una recolección, embarque, guía o factura. Esta página es accesible para el público en general. Cuando el destinatario de la guía recibe el correo avisando que su mercancía está en camino, se incluye un link a esta página.
El folio de factura se obtiene en el ERP. El folio de tracking se obtiene en el correo que se manda al destinatario, también se puede encontrar en el listado de guías o al consultar una guía desde el módulo Guías.
Acciones del usuario
Rastrear envío
Para usarlo solo es necesario escribir el folio del registro que se quiere buscar y seleccionar el tipo de registro del que es el folio. Al presionar Buscar se obtendrá la información del registro. Se usa el siguiente endpoint:
- URL:
- /api/Seguimeinto/folio/{folio}/tipo/{tipo}
- Variables:
- folio del registro
- tipo: representa si es recolección, embarque, guía, factura o tracking. Los valores están estáticos en el código.
5.9 Última Milla
Descripción general
Esta vista se desarrolla inicialmente en el archivo UItimaMilla.js. Aquí se administran las rutas de los operadores para el último tramo de las entregas o el inicio en caso de las recolecciones.
Inicialización de la vista
Al iniciar la vista se verifica la sesión del usuario. Si no hay sesión iniciada se redirige al login. Si hay sesión activa se hace una llamada al backend para obtener el listado de sucursales.
Obtener sucursales
- URL:
- /api/Sucursales/GetListado
Al obtener el listado se almacena para cuando se quiera crear una ruta. Ya almacenada la información se habilitan las acciones del usuario: crear rutas, ver cronograma, enviar mensajes a operador, generar reporte, cancelar ruta, cambiar ubicación parada.
Acciones del usuario
Generar Rutas
Para poder crear una ruta se deben seguir los siguientes pasos:
- Seleccionar sucursal. Debe ser la sucursal ligada a la zona operativa del destinatario para el caso de guías y la del remitente para las recolecciones. Al seleccionar se cargará el listado de zonas operativas de la sucursal.
- Seleccionar zonas. Debe ser la zona operativa del destinatario para el caso de guías y la del remitente para las recolecciones. Las opciones se obtienen del endpoint:
- URL:
- /api/ZonaOperativa/GetListadoBySucursal/{idSucursal}
- Variables:
- sucursal
- Seleccionar paquetes (guías y recolecciones). Se pueden seleccionar más de uno. El sistema validará a partir de las coordenadas de los registros seleccionados, si la ruta sería completada en el tiempo especificado en parámetros de configuración (General > Limitar tiempo entregas). En caso de que el tiempo de ruta supere el configurado se deberá aumentar el tiempo o descartar guías/recolecciones de la ruta. Las guías y recolecciones se obtienen del endpoint:
- URL:
- /api/Guias/GetUltimaMilla
- Body:
- zonas
- tipo de servicio: se refiere a caso de uso que se le está dando al endpoint porque se usa en otros flujos
- Seleccionar unidad. Es el operador y transporte que usará para mover la mercancía. Si la unidad seleccionada es un tractocamión puede que se solicite especificar el remolque que será usado. Las unidades se obtienen del endpoint:
- URL:
- /apiUnidades/GetListadoUltimaMilla/{idSucursal}
- Variables:
- sucursal
- Body:
- listado de guías
- Generar ruta. Al presionar se hará uso de la API de HERE para calcular la ruta más óptima. Cuando se obtiene la respuesta de la API se muestra en el mapa la ruta. Tener la ruta hasta este punto no significa que ya esté creada. La ruta se calcula usando 3 endpoints de la API de Here:
Obtener coordenadas de la sucursal dando la dirección
-
URL:
-
Parámetros:
- dirección de la sucursal
- apikey: está fijada en el código
Obtener la ruta dando punto de partida, llegada y las paradas
-
URL:
-
Body:
- muy largo para mostrar. Consultar en código
Obtener la ruta que ha seguido el operador
-
URL:
- https://router.hereapi.com/v8/routes?transportMode=car&origin={coordenadasSucursal}&destination={coordenadasSucursal}&via={coordenadasOperador}&return=polyline,summary,actions,instructions&apiKey={API_KEY}
-
Parámetros:
- coordenadas sucursal: se dan como origen y destino para el viaje de ida y vuelta del operador
- coordenadas operador: serán un listado de coordenadas por donde ha estado el operador para ir marcando en el mapa la ruta que ha seguido.
- Enviar ruta al operador. Al presionar se hará una llamada al backend para guardar la ruta y será visible para el operador en la aplicación móvil. Ya con la aplicación creada se habilita el panel a la derecha para administrar las rutas.
Cronograma
Para abrir el cronograma el usuario debe seleccionar la pestaña Cronograma que se localiza en la parte inferior de la ventana, donde se va abrir una sección con la información del repartidor, unidad, tiempo, estatus de entrega y paradas. Además de mostrarle la información al usuario también está la opción de reasignar el operador, la cuenta entra cuando se hace clic en el icono reemplazar operador de las paradas y se elige el operador, enseguida se realiza una llamada al backend para reasignar el operador.
- URL:
- /api/ReasignarOperador/{IdRuta}/{IdOperador}
- Variables:
- ruta: la ruta que se quiere reasignar
- operador: el operador nuevo de la ruta
Si la operación es exitosa se recarga el formulario. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Enviar mensajes a operador
Para poder enviar mensajes al operador primero el usuario debe seleccionar el botón con icono de sobre y seleccionar a los repartidores, lo cual hace una llamada al backend para obtener los mensajes de la conversación.
-
URL:
- /api/UltimaMilla/Chat/Operador/{IdOperador}/{fecha}
-
Variables:
- operador
- fecha actual
Al cargar los mensajes (en el caso que haya), se despliega un cuadro y los mensajes, además de un campo para enviar mensajes nuevos. Al introducir el mensaje se puede mandar presionando el botón Enviar. Los mensaje se mandan usando el siguiente endpoint:
-
URL:
- /api/UltimaMilla/Chat
-
Body:
- esOperador: indica si el mensaje fue mandado por un operador. En este caso siempre se manda en false
- fechaHora: la fecha actual
- operador: el operador que recibe el mensaje
- idUsuario: el usuario que manda el mensaje
- mensaje
Si la operación es exitosa se recarga el formulario y se muestra el nuevo mensaje. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Generar reporte
Para generar reporte el usuario debe de seleccionar el botón de la ventana en la parte derecha, al seleccionar se abre un recuadro donde se muestra el Resumen de Paradas. Dentro del resumen se muestran las paradas pendientes, exitosas y/o fallidas, además de las paradas con sus respectivos operadores y unidades. Para generar el reporte se hace clic en el icono de archivo el cual abre un recuadro para elegir el reporte y una vez elegido se hace una llamada al backend para traer el reporte.
Cancelar ruta
Dentro del resumen de paradas se debe presionar el icono de cancelar el cual primero envía un mensaje de advertencia y al continuar se realiza la llamada al backend para cancelar la ruta.
- URL:
- /api/UltimaMilla/EliminarRuta/{IdRuta}
Si la operación es exitosa se recarga el formulario y en la sección de resumen de parada se puede observar la parada pero en estatus cancelada quitando las demás opciones disponibles. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Reemplazar parada
Para reemplazar una parada dentro de la ruta se abre el panel Detalle de Paradas, se desglosa la ruta de la parada, y se ubica el botón Reemplazar lo cual abre un recuadro que mostrará el listado de guías/recolecciones con las que se puede reemplazar. Al seleccionar se reemplaza la parada con el siguiente endpoint:
- URL:
- /api/UltimaMilla/RemplazarParada/{IdRuta}/{idPaqueteViejo}
- Variables:
- ruta
- id de la guia/recoleccion
- Body:
- esRecoleccion: para evitar confundir un id de una guía con el de una recolección. usado para el registro viejo.
- idNuevaGuia/recolección
- nuevoEsRecoleccion: para evitar confundir un id de una guía con el de una recolección. usado para el registro nuevo.
- latitud: coordenada de la nueva guia/recoleccion
- longitud: coordenada de la nueva guia/recoleccion
Si la operación es exitosa se recarga el formulario. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Cambiar ubicación
Para reemplazar una parada dentro de la ruta se abre el panel Detalle de Paradas, se desglosa la ruta de la parada, y se ubica el botón Cambiar ubicación lo cual abre un recuadro donde el usuario debe ingresar la ubicación manualmente o mediante el mapa que se muestra. Al llenar la información se realiza una llamada en el backend para guardar la información. El endpoint que se usa cambia dependiendo si se trata de una guía o una recolección.
Actualizar coordenadas recolección
- URL:
- /api/Recoleccion/ActualizarCoordenadas/{IdRecolección}/{latitud}/{longitud}
- Variables:
- recolección
- latitud
- longitud
Si la operación es exitosa se recarga el formulario. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Timbrar guía/recolección
Timbrar un informe significa avisar al SAT que se va mover mercancía en carretera. Es muy importante recordar que existe el timbrado real y el timbrado de prueba. El timbrado de prueba no emite el aviso al SAT. El timbrado real si emite el aviso al SAT. El sistema mostrará un aviso al usuario indicando si lo que está por timbrar será un timbrado real o timbrado de prueba. Recordar que en caso de querer configurar que tipo de timbrado se quiere hacer, se puede hacer en Parámetros de configuración > Guía > Hacer timbrado de prueba.
Para timbrar un registro se necesita seleccionar la ruta en el panel Detalles de Paradas para desglosar las guías y recolecciones. Cada registro se timbra de forma individual, al lado derecho del listado está el botón Generar CFDI, al presionar se mostrará un diálogo para confirmar el tipo de timbrado que será: real o de prueba. Se presiona Aceptar y se realizará el timbrado usando el siguiente endpoint:
- URL:
- /UltimaMilla/GetCFDITraslada/{IdRegistro}/{esRecoleccion}/{IdSucursal}/{fecha}/{hora}
- Variables:
- Id del registro
- es recolección: indicador para distinguir si es id de una guia o una recolección. Se manda 0 para guía y 1 para recolección
- sucursal
- fecha actual
- hora actual
Al timbrar correctamente se abrirá una pestaña mostrando el PDF con el CFDI que deberá portar el operador.
Descargar XML de Timbrado
Para descargar el XML de timbrado se necesita seleccionar la ruta en el panel Detalles de Paradas para desglosar las guías y recolecciones. Al lado derecho del listado está el botón Generar XML, al presionar se descargará un archivo xml con los datos.
Cancelar Timbrado de Informe
Para cancelar el timbrado de un registro se necesita seleccionar la ruta en el panel Detalles de Paradas para desglosar las guías y recolecciones. Al lado izquierdo del listado está el botón Cancelar Timbrado SAT (visible sólo si el registro fue timbrado previamente), al presionar se mostrará un diálogo para confirmar el tipo de timbrado a cancelar: real o de prueba. Se presiona Aceptar y se realizará el timbrado usando el siguiente endpoint:
- URL:
- /UltimaMilla/CancelarCFDITraslada/{IdRegistro}
- Variables:
- Id del registro
- Body:
- motivo de cancelación
- motivo de cancelación ante el SAT. Las opciones no son administradas en el ERP, son insertadas por base de datos.
- clave de cancelación ante el SAT. Las opciones no son administradas en el ERP, son insertadas por base de datos.
- folio fiscal UUID: es el folio que se quiere cancelar.
- es recolección: indicador para distinguir si es id de una guia o una recolección. Se manda 0 para guía y 1 para recolección
Al cancelar el timbrado se habilitará de nuevo el botón para volver a timbrar.
Cuando la clave de cancelación es 1 se genera automáticamente un nuevo timbrado para el registro.
Eliminar parada
Para cancelar el timbrado de un registro se necesita seleccionar la ruta en el panel Detalles de Paradas para desglosar las guías y recolecciones. Al lado izquierdo del listado está el botón Eliminar. Al presionar se muestra mensaje de confirmación y si se acepta se hace una llamada al backend para eliminar la parada.
- URL:
- /api/UltimaMilla/EliminarParadaOperador
- Body:
- es recolección: indicador para distinguir si es id de una guia o una recolección. Se manda 0 para guía y 1 para recolección.
- idGuia: val el id ya sea guía o recolección
- idParada: es el id de la ruta
Si la operación es exitosa se descarga el xml automáticamente. Si surge algún error se muestra mensaje de error al usuario y se permanece en la pantalla.
Anexos
1. Generación de etiquetas
Se detalla cómo se genera el código para la impresión de etiquetas, así como las modificaciones a las actuales.
1.1. Preparación de entorno
Para las actualizaciones o creación de nuevas etiquetas es necesario la instalación del software de Zebra “ZebraDesigner”.
1.1.1 Etiquetas actuales
Para modificar una etiqueta existente debe dirigirse al proyecto de backend de paquetería en la ruta: src/main/resources/formatosEtiquetaZebra (se muestra una imagen de referencia).
Nota. Este directorio solo se utiliza para el versionamiento del diseño y una vez concluidas las modificaciones se debe actualizar en el repositorio.
1.2. Software de diseño
Una vez abierto el archivo solicitado mostrará la siguiente pantalla.
En la cual podrás interactuar y agregar componentes.
Detalles a considerar:
- Los QR se verán en una proporción mayor en el programa de diseño pero una vez generado el código e integrado en el sistema se verá reducido su tamaño.
- Las variables que se muestran son las que se utilizaran en código para sobreescribir la información
- El logo se maneja de manera dinámica, por lo que en base de datos en la tabla CatParametrosConfiguracion2PQ en la columna LogoEtiqueta se encuentra el código a utilizar.
- La estructura del código QR se compone de la siguiente forma: IdentificadorGuia_IdentificadorListadoProducto_Indice.
1.2. Generar código e integrar con Paquetería.
Una vez realizadas las modificaciones es necesario seguir los siguientes pasos:
- Dirigirse a la opción de Archivo/Imprimir y tener seleccionada la opción “Imprimir fichero”.
- Seleccionar la opción de imprimir, esta abrirá el explorador de archivos para guardar el archivo .prn
- Abrir el archivo .prn en un editor de texto y copiar el contenido.
- Ir a … dentro del proyecto frontend de Paquetería y reemplazar “TICKET_ZEBRA_TEMPLATE” con las siguientes consideraciones:
- Actualmente se encuentran dos clientes usando la impresión de etiquetas en dos formatos diferentes por lo que se tiene que verificar que se esté modificando al cliente deseado, en caso de ser un nuevo cliente agregar la validación dentro de la variable y colocar el código.
- Para el tema de la dirección tanto del remitente como del destinatario se realizaron adecuaciones para realizar saltos de línea dependiendo el tamaño del texto por lo que hay que revisar y colocar cada etiqueta en el lugar correspondiente, se adjunta código de ejemplo:
${guia.m_sDomicilioDestinatario.length > 40 ? ( guia.m_sDomicilioDestinatario.length > 80 ? ( `^FT202,521^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario.substring(0, 40)}^FS ^FT202,558^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario.substring(40, 80)}^FS ^FT202,596^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario.substring(80)}^FS` ) : ( `^FT202,521^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario.substring(0, 40)}^FS ^FT202,558^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario.substring(40, 80)}^FS` ) ) : `^FT202,521^A0N,28,24^FH\\^FD${guia.m_sDomicilioDestinatario}^FS`}- La sección del logo no se debe pasar a la variable debe ser reemplazada por:
${guia.m_sLogoEtiqueta}Para el caso de nuevos clientes es necesario agregar el logo al diseño, seguir los pasos para generar el código fuente de la etiqueta y tomar la sección del logo y agregarla a la tabla CatParametrosConfiguracion2PQ en la columna LogoEtiqueta.