Karin + Mariana + Noelia + Sofia
Puedes ver este proyecto funcionando aquí: https://noecor.github.io/StoreSales/.
Convenciones: • Estilos en SASS • Js en ES6 • Variables, nombradas en inglés y camelCase • Nombres representativos y lo más corto posible, sólo usando abreviaciones de uso general, tipo: ○ quantity (qty) ○ report (rpt) ○ general (gral) • Branch por grupo de funciones similares o relacionadas ○ Totales x Parámetro ○ Cantidad x Parámetro ○ Destacados ○ Reportes Generales • Carpetas por grupo de archivos ○ Js ○ Styles ○ Images ○ (los html quedarán en el raiz)
Comenzamos nuestra aplicación con el objeto que registra todos los componentes de las tiendas (stores), incluyendo las ventas de la nueva sucursal, así nos aseguramos que la estructura del mismo soporta la inclusión de una nueva sucursal (store) en caso de que sea necesario
var store = { sellers: ["Ada", "Grace", "Hedy", "Sheryl"], sales: [ // tener en cuenta que Date guarda los meses del 0 (enero) al 11 (diciembre) { saleDate: new Date(2019, 1, 4), seller: "Grace", pieces: ["Monitor GPRS 3000", "Motherboard ASUS 1500"], store: 'Centro' }, { saleDate: new Date(2019, 0, 1), seller: "Ada", pieces: ["Monitor GPRS 3000", "Motherboard ASUS 1500"], store: 'Centro' }, { saleDate: new Date(2019, 0, 2), seller: "Grace", pieces: ["Monitor ASC 543", "Motherboard MZI"], store: 'Centro' }, { saleDate: new Date(2019, 0, 10), seller: "Ada", pieces: ["Monitor ASC 543", "Motherboard ASUS 1200"], store: 'Centro' }, { saleDate: new Date(2019, 0, 12), seller: "Grace", pieces: ["Monitor GPRS 3000", "Motherboard ASUS 1200"], store: 'Centro' }, { saleDate: new Date(2019, 1, 12), seller: "Hedy", pieces: ["Monitor GPRS 3000", "HDD Toshiba"], store: 'Centro' }, { saleDate: new Date(2019, 1, 24), seller: "Shery", pieces: ["Motherboard ASUS 1200", "HDD Western Digital"], store: 'Caballito' }, { saleDate: new Date(2019, 1, 1), seller: "Ada", pieces: ["Motherboard MZI", "RAM Kingston Fury"], store: 'Centro' }, { saleDate: new Date(2019, 1, 11), seller: "Grace", pieces: ["Monitor ASC 543", "RAM Kingston"], store: 'Caballito' }, { saleDate: new Date(2019, 1, 15), seller: "Ada", pieces: ["Motherboard ASUS 1200", "RAM Kingston Fury"], store: 'Centro' }, { saleDate: new Date(2019, 1, 12), seller: "Hedy", pieces: ["Motherboard ASUS 1500", "HDD Toshiba"], store: 'Caballito' }, { saleDate: new Date(2019, 1, 21), seller: "Grace", pieces: ["Motherboard MZI", "RAM Kingston"], store: 'Centro' }, { saleDate: new Date(2019, 1, 8), seller: "Sheryl", pieces: ["Monitor ASC 543", "HDD Western Digital"], store: 'Centro' }, { saleDate: new Date(2019, 1, 16), seller: "Sheryl", pieces: ["Monitor GPRS 3000", "RAM Kingston Fury"], store: 'Centro' }, { saleDate: new Date(2019, 1, 27), seller: "Hedy", pieces: ["Motherboard ASUS 1200", "HDD Toshiba"], store: 'Caballito' }, { saleDate: new Date(2019, 1, 22), seller: "Grace", pieces: ["Monitor ASC 543", "HDD Western Digital"], store: 'Centro' }, { saleDate: new Date(2019, 1, 5), seller: "Ada", pieces: ["Motherboard ASUS 1500", "RAM Kingston"], store: 'Centro' }, { saleDate: new Date(2019, 1, 1), seller: "Grace", pieces: ["Motherboard MZI", "HDD Western Digital"], store: 'Centro' }, { saleDate: new Date(2019, 1, 7), seller: "Sheryl", pieces: ["Monitor GPRS 3000", "RAM Kingston"], store: 'Caballito' }, { saleDate: new Date(2019, 1, 14), seller: "Ada", pieces: ["Motherboard ASUS 1200", "HDD Toshiba"], store: 'Centro' }, ] prices: [ { piece: "Monitor GPRS 3000", price: 200 }, { piece: "Motherboard ASUS 1500", price: 120 }, { piece: "Monitor ASC 543", price: 250 }, { piece: "Motherboard ASUS 1200", price: 100 }, { piece: "Motherboard MZI", price: 30 }, { piece: "HDD Toshiba", price: 90 }, { piece: "HDD Western Digital", price: 75 }, { piece: "RAM Kingston", price: 110 }, { piece: "RAM Kingston Fury", price: 230 } ], stores: ['Centro','Caballito'] };
Funciones
- precioMaquina(componentes) = pcPrice
- cantidadVentasComponente(componente) = qtySoldByPiece
- vendedoraDelMes(mes, anio) = monthSeller
- ventasMes(mes, anio) = monthSales
- ventasVendedora(nombre) = sellerSales
- componenteMasVendido() = mostSoldPiece
- huboVentas(mes, anio) = areThereSales
- En la aplicación debe haber un botón Nueva venta donde se pueda sumar manualmente un nuevo ingreso con los campos requeridos * = btnNewSale, y función addSale
- ventasSucursal(sucursal) = storeSales
- sucursalDelMes(mes, anio) = monthStore
- renderPorMes() Muestra una lista ordenada del importe total vendido por cada mes/año = monthlyReport
- renderPorSucursal() Muestra una lista del importe total vendido por cada sucursal = storeReport
- render(): Tiene que mostrar la unión de los dos reportes anteriores, cual fue el producto más vendido y la vendedora que más ingresos generó = gralReport 14.- Almacenar en LocalStorage, las ventas que se vayan registrando (opcional)
Maquetación: Decidimos hacer 3 html (index,sales,reports), donde podamos ver la ejecución de cada una de las funciones dentro de lo que sería más parecido al flujo de una tienda. Consideraciones: • Sección de selección de Vendedora/sucursal • Sección de selección de componentes • Muestra de Venta que se esta realizando (tipo lista/tabla), con botón de eliminar componente (JS) ○ Se calcula automáticamente el precio total que se va generando en la venta • Botón de Registrar Venta, que dispare: Alerta para verificar si ya se agregaron todos los componentes (JS), podríamos mostrar, la cantidad de componente y el precio Alerta para indicar que la venta se ha registrado.(JS)
Branches: Para dividir el scope de cada una, decidimos separar los desarrollos tratando de definir cuáles funciones podían o no solaparse, y luego las clasificamos por colores, quedamdo divididas de la siguiente forma:
AMARILLO (addSale, pcPrice, btnNewSale) - Karin LILA (monthSeller, monthStore) - Mariana AZUL (storeReport,gralReport, monthlyReport) - Sofi GRIS (qtySoldByPiece, mostSoldbyPiece, areThereSales, LocalStorage) - Noe
Quedan pendientes por asignar storeSales y sellerSales