En la empresa Supermercado Montserrat contiene una gran cantidad de boletas generadas por cada caja. Por lo consecuente que cada boleta corresponde a un cliente y a su vez tiene registra sus productos y su cantidad. Esta información es enviada a la central, donde es almacenada por años. Y en la misma central contienen la información contenido de sus bodegas en cada sucursal. Siendo que se obtiene la información de compra, no se sabe cuál es el producto que el cliente prefieren y su relación con la cantidad de que contiene la bodega. Por lo cual se requiere una forma visual que indique el consumo y contenido de abastecimiento de los productos en cada sucursal. Así poder comprar o trasladar los productos entre sus 35 sucursales, dependiendo a la preferencia de los clientes
Cada sucursal contiene a lo menos 3 cajas en funcionamiento,Los datos son almacenados en la misma caja por una semana como máximo y luego son eliminadas en forma automática.
Por lo cual la cantidad de transacción son variadas de pendiendo de cada boleta, cada boleta (en su inicio) contiene la cantidad de registros que coresponde a la compra,cada archivo en la caja tiene un formatos de nombre con una exteccion numerica “IDC001”, que el número corresponde a la caja de la transaccion (001) y el nombre IDC corresponde el tipo de dato (Encriptados). Esta información se envía en forma automática al servidor master, que queda en un solo archivo HOCIDC.001, que HOCIDC corresponde el tipo de datos (Encriptados) Cuando el número supere el valor 30 son eliminados. Esto implica que la información en cada sucursal se almacenará por 1 mes.
Cada noche se procede a rescatar de ventas, esto implica obtener cada archivó en cada sucursal con el nombre de “HOCIDC.001” y copiándola a la central (Servidor repositorio) con el nombre de HOCIDC02.191112, el HOCIDC corresponde al tipo de dato (Encriptado), 02 corresponde a la sucursal y la extensión corresponde a la fecha.
Este archivo es leído y almacenados en AS400 en una sola tabla llamada “ventas.2019”
Esquema general de la información
Se obtendrá del Servidor AS400 las siguientes tablas Ventas.2019 y Locales
Definiciones de la tabla:
| Columna | Tipo Datos | Descripción |
|---|---|---|
| CODLOC: Código de local |
Numérico (3) | Corresponde a la enumeración de la sucursal |
| FECHA: Fecha del registro |
Date | Fecha correspondiente al registro |
| HORA : Hora que se realizó el registro |
Time | Corresponde a la hora que se realizó la transacción |
| SECCION: Número de sección que corresponde al producto |
Numérico(3) | Corresponde al código relacional de la sección que pertenece. Estas secciones puede ser verdura , panadería , etc. |
| NOMSEC: Nombre de la sección |
text(30) | Corresponde al nombre que pertenes el producto. |
| PLU: numero de código del producto. |
Numérico(18) | Corresponde al códigos de productos(PLU) |
| NOMPLU: Nombre del producto |
texto (50) | Corresponde al nombre del producto |
| CANTIDAD: Cantidad de la compra |
doublé(4,3) | Corresponde a la cantidad e la compra, puede ser valor en entero o con decimales para los pasables |
| VALOR: Valor del producto |
Numérico (8) | Valor que el cliente pago por el producto |
| TOTAL: Total de boleta |
Numérico (8) | Valor que el cliente canse el total de su compra |
| * FOLIO: Número de boleta |
Numérico (12) | Número de boleta o factura |
| Columna | Tipo Datos | Descripción |
|---|---|---|
| CODLOC Código de local |
Numérico (3) | Corresponde a la enumeración de la sucursal |
| NOMSUP Nombre de la sucursal |
Text(15) | Nombre de la sucursal |
| DIRSUP Dirección de la sucursal |
Text(50) | La ubicacion de la sucursal |
| Columna | Tipo Datos | Descripción |
|---|---|---|
| CODLOC Código de local |
Numérico (3) | Corresponde a la enumeración de la sucursal |
| PLU Número de código del producto. |
Numérico (18) | Corresponde al códigos de productos(PLU)) sucursal |
| CANINV Cantidad de la compra |
Doublé(4,3) | Corresponde a la cantidad e la compra, puede ser valor en entero o con decimales |
El archivo Ventas.2019 contiene las ventas del año 2019, revisando los datos no se encuentras datos vacíos, solo que exciten dos observaciones.
El nombre de la columna “CODLOC” contiene un carácter oculto que provoca una mala lectura de su nombre, por lo cual se realiza un renombramiento de esta columna.
El archivo Locales contiene los nombres de cada sucursal excepto el posicionamiento global (GPS), por lo tanto, se convierte en excel en office 2014 en un ambiente Windows. para añadir las nuevas columnas, LONGITUD y LATITUD de cada sucursal. La información de la ubicación GPS se usará con la herramienta de google maps.
Se importará la información del archivo Ventas.2019, se renombrará la columna CODLOC por motivo que se encuentra el carácter («) que no corresponde.
Para esto se utilizará la sintaxis: names(Ventas)[1]<-“CODLOC”
Se importara el archivo Locales.xlsx , donde se introdujo manualmente las coordenada geográficas ya que no se encontraba esta información en el registros
Se importará el archivo Bodega, Donde se encuentra la información de cada sucursal
Se importa el archivo Ventas.2019,Quedando con el nombre del dataset Ventas y sus valores nulos en “na”.
Ventas <- read.csv2("Ventas.2019", na="na")
Se importa archivo locales,Quedando con el nombre del dataset Locales y sus valores nulos en “0”.
con los tipo de columnas : “numeric”, “text”, “text”,“numeric”, “numeric”.
Locales <- read_excel("Locales.xlsx", col_types = c("numeric", "text", "text","numeric", "numeric"), na = "0")
Se importa archivo bodegas,Quedando con el nombre del dataset Bodegas
Bodegas <- read.csv2("Bodegas")
Se cambia en la tabla Ventas la columna CODLOC por el mismo nombre, ya que contiene un carácter incorrecto en su sintáis. .
names(Ventas )[1]<-"CODLOC"
Se cambia los nombres de posición de las columnas de la tabla bodegas, por motivo que se encuentran en pociones incorrectas.
names(Bodegas)[1]<-"CODLOC"
names(Bodegas)[2]<-"PLU"
names(Bodegas)[3]<-"CANTBODE"
Se tuvo que analizar las cantidades registradas en las ventas, y las cantidades en bodegas
Observando esta información nos encontramos que se podía unir ambas informaciones generando un porcentaje de compras y porcentaje existente en la bodega. de esta manera se podra mostrar un promedio que lo que se consumen y lo que contienen en la bodegas.
Se agrupa la información de ventas entre las columnas local y PLU, sumando la cantidad.
VentaAgrupada <- Ventas %>% filter(SECCION != 8) %>% select(CODLOC,PLU,NOMPLU,CANTIDAD) %>% group_by(CODLOC,PLU,NOMPLU) %>% summarise(CANTIDAD = sum( CANTIDAD))
Se agrupa la información de Bodega entre las columnas local y PLU, sumando la cantidad y la columna con el nombre CANTBODE
BodegaAgrupada <- Bodegas %>% group_by(CODLOC,PLU) %>% summarise(CANTBODE = sum(CANTBODE))
Se unen ambas tablas “VentaAgrupada” y "BodegaAgrupada, la unión de deberá unir através de CODLOC y PLU.
Agrupado <- left_join(VentaAgrupada,BodegaAgrupada,by=c("CODLOC","PLU"))
Construimos el porcentaje de diferencia entre las ventas y existencia en bodega.
Agrupado <- mutate(Agrupado,Porsentaje= round(CANTBODE*100/CANTIDAD,0))
El porcentaje de sobre stock en la cadena de sucursales corresponde a los siguientes productos.
Agrupado %>% filter(Porsentaje>100) %>% select("Sucursal" = CODLOC,"Producto" = NOMPLU,"%" = Porsentaje,PLU)
## # A tibble: 2 x 4
## # Groups: Sucursal, PLU [2]
## Sucursal Producto `%` PLU
## <int> <fct> <dbl> <dbl>
## 1 2 TOMATE GRANEL 117 201560000008
## 2 7 TOMATE GRANEL 262 201560000008
Obtener el código de PLU del mayor diferencia
PLUPRO <- as.factor((Agrupado %>% filter(Porsentaje>100))[1:1,]$PLU)[1]
Seleccionamos el todos los productos con el PLUPRO, Luego lo unimos con la tabla **Locales* para tener los nombres de las sucursales
Registros <- Ventas %>% filter(PLU==PLUPRO) %>% select(CODLOC,NOMPLU,( CANTIDAD))
Registros <- left_join(Registros,Locales,by=c("CODLOC"))
Nombre del producto
Nombre <- as.vector( Registros[1:1,]["NOMPLU"])
Graficamos las tendencias de consumo en la cadena del supermercado Montserrat.
ggplot(Registros, aes(x=NOMSUP, y=CANTIDAD,fill = NOMSUP)) + labs(x = "Sucursales",y="Cantidades",title ="Frecuencia consumo por los Clientes " , subtitle =Registros$NOMPLU[1] )+geom_boxplot() + theme(axis.text.x = element_text(angle=90, vjust=0.5),legend.position = "none")
Graficamos las tendencias de consumo en la cadena del supermercado Montserrat.
Lo cual se muestra que algarrobal es donde más frecuencia consumen los clientes y a subes en monjitas es el local que consume menos entres sus sucursales.
Ahora verificamos lo que contiene en las bodegas, con los consumos en los locales.
Para esto hay obtener los datos Agrupado y unirlo con los Locales
Resultado <- Agrupado %>% filter(PLU == PLUPRO)
Resultado <- left_join(Resultado,Locales ,by=c("CODLOC"))
Mostramos los datos de bodega conjunto al consumo de los clientes
ggplot(Resultado) + geom_bar(aes(x=NOMSUP, y=CANTBODE), stat="identity", fill="Green", alpha=0.9) +
geom_errorbar( aes(x=NOMSUP, ymin=Minimo25, ymax=Minimo75), width=0.4, colour="Black", alpha=0.9, size=1.3) +
theme(axis.text.x = element_text(angle = 60, hjust = 1) )+
labs(x = "Sucursales",y="Cantidades",title ="Consumo Clientas VS Bodega " , subtitle =Resultado$NOMPLU[1])
Se muestra que algarrobal contiene más en bodega, respecto a su consumo de los clientes # Resultados
Respecto a la información entregada y los resultados mostrados, Se encontró lo esperado lo que la empresa requería obtener, se pudo demostrar la preferencia de consumo de los clientes. Dependiendo de la sucursal y demostrando la cantidad en exceso de producto que se encuentra de esta misma sucursal. Esto implico poder solicitar compras más controladas y distribuir dependiendo de la preferencia de los clientes.
Podemos mostrar que, en cada zona o sucursal, los clientes tienen cierta preferencia de insumos, además se pudo mejorar las perdidas por vencimiento ya que se podrá distribuir más eficientemente entre las sucursales atreves de las preferencias dependiendo de su sector
#conclucion personal