Atualiza precificação

Esse projeto fez parte de um teste no processo seletivo da Shopper.com.br!

Sua especificação está em PDF na raíz do diretório.

Foi desenvolvido em React.js e Node.js, para executá-lo você deve ter o Node.js instalado na sua máquina (junto do npm). Após isso, você deve instalar o npm nas pastas client e server e também as seguintes dependências:

  • body-parser

  • compression

  • cors

  • csv-parser

  • dotenv

  • express

  • multer

  • mysql2

  • sequelize

Você deve rodar o client e server ("npm start").

Além disso, é necessário um dotenv na raiz da pasta server, em que é definido as seguintes variáveis de ambiente para a conexão com o Banco de Dados local:

DATABASE_SCHEMA=
DATABASE_USERNAME=
DATABASE_PASSWORD=
DATABASE_HOST=

A fim de realizar testes, enriqueça seu Banco de Dados MySQL com a seguinte query:

CREATE TABLE products 
( 
	code bigint PRIMARY KEY, # CODIGO DO PRODUTO 
	name varchar(100) NOT NULL, # NOME DO PRODUTO
	cost_price decimal(9,2) NOT NULL, # CUSTO DO PRODUTO
	sales_price decimal(9,2) NOT NULL # PREÇO DE VENDA DO PRODUTO
);

INSERT INTO products VALUES (16,'AZEITE  PORTUGUÊS  EXTRA VIRGEM GALLO 500ML',18.44,20.49);
INSERT INTO products VALUES (18,'BEBIDA ENERGÉTICA VIBE 2L',8.09,8.99);
INSERT INTO products VALUES (19,'ENERGÉTICO  RED BULL ENERGY DRINK 250ML',6.56,7.29);
INSERT INTO products VALUES (20,'ENERGÉTICO RED BULL ENERGY DRINK 355ML',9.71,10.79);
INSERT INTO products VALUES (21,'BEBIDA ENERGÉTICA RED BULL RED EDITION 250ML',10.71,11.71);
INSERT INTO products VALUES (22,'ENERGÉTICO  RED BULL ENERGY DRINK SEM AÇÚCAR 250ML',6.74,7.49);
INSERT INTO products VALUES (23,'ÁGUA MINERAL BONAFONT SEM GÁS 1,5L',2.15,2.39);
INSERT INTO products VALUES (24,'FILME DE PVC WYDA 28CMX15M',3.59,3.99);
INSERT INTO products VALUES (26,'ROLO DE PAPEL ALUMÍNIO WYDA 30CMX7,5M',5.21,5.79);
INSERT INTO products VALUES (1000,'BEBIDA ENERGÉTICA VIBE 2L - 6 UNIDADES',48.54,53.94);
INSERT INTO products VALUES (1010,'KIT ROLO DE ALUMINIO + FILME PVC WYDA',8.80,9.78);
INSERT INTO products VALUES (1020,'SUPER PACK RED BULL VARIADOS - 6 UNIDADES',51.81,57.00);

CREATE TABLE packs 
(
  id bigint AUTO_INCREMENT PRIMARY KEY, # id primario da tabela
  pack_id bigint NOT NULL,  # id do produto pack 
  product_id bigint NOT NULL, # id do produto componente
  qty bigint NOT NULL, # quantidade do produto componente no pack
  CONSTRAINT FOREIGN KEY (pack_id) REFERENCES products(code),
  CONSTRAINT FOREIGN KEY (product_id) REFERENCES products(code)
);

INSERT INTO packs (pack_id,product_id, qty) VALUES (1000,18,6);
INSERT INTO packs (pack_id,product_id, qty) VALUES (1010,24,1);
INSERT INTO packs (pack_id,product_id, qty) VALUES (1010,26,1);
INSERT INTO packs (pack_id,product_id, qty) VALUES (1020,19,3);
INSERT INTO packs (pack_id,product_id, qty) VALUES (1020,21,3);

A aplicação WEB tem a seguinte aparência: image

Você pode enviar o CSV pelo input e pedir para validar os dados, caso os dados estejam no formato correto e atendam todas as regras de cenário o botão de atualizar aparecerá junto com uma tabela. Caso contrário, aparecerá quais regras foram infringidas por quais linhas do CSV.