diff --git a/README.md b/README.md
index eafbe13..3bb9f27 100755
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ Este projeto está sob licença do MIT que permite a qualquer pessoa que obtém
- Dashboard
-![Dashboard](./layouts/Dashboard%20Menu%20open-%20Bew%20-%20Desktop.png)
+![Dashboard](./layouts/Dashboard%20Menu%20open-%20Bew%20-%20Desktop.jpeg)
Acesse o layout completo no [Figma](https://www.figma.com/file/VLJiXLRJlLLLioYwbZtI95/BEW?node-id=0%3A1) (ainda em construção).
@@ -53,12 +53,13 @@ Acesse o layout completo no [Figma](https://www.figma.com/file/VLJiXLRJlLLLioYwb
- [X] Dashboard
- [X] Adição e consulta de vendas
- [ ] Edição de vendas
-- [ ] Adição, consulta e edição de compras
+- [x] Adição e consulta de compras
+- [ ] Edição de compras
- [X] Adição, consulta, edição e remoção de produtos
- [X] Adição, consulta, edição e remoção de fornecedores
- [X] Adição, consulta, edição e remoção de funcionários
- [X] Adição, consulta, edição e remoção de clientes
-- [ ] Adição, consulta, edição e remoção de promoções
+- [x] Adição, consulta, edição e remoção de promoções
- [X] Adição, consulta, edição e remoção de categorias
- [ ] Gerenciamento de relatórios
diff --git a/layouts/Dashboard - Bew - Desktop.png b/layouts/Dashboard - Bew - Desktop.png
deleted file mode 100644
index 9e297a1..0000000
Binary files a/layouts/Dashboard - Bew - Desktop.png and /dev/null differ
diff --git a/layouts/Dashboard Menu open- Bew - Desktop.jpeg b/layouts/Dashboard Menu open- Bew - Desktop.jpeg
new file mode 100644
index 0000000..8765e5e
Binary files /dev/null and b/layouts/Dashboard Menu open- Bew - Desktop.jpeg differ
diff --git a/public/css/404.css b/public/css/404.css
index 590da89..dad6b4c 100644
--- a/public/css/404.css
+++ b/public/css/404.css
@@ -1,4 +1,4 @@
-@import "./global.css";
+@import './global.css';
body{
color: var(--laranja);
@@ -8,10 +8,16 @@ body{
h1{
font-size: 7rem;
}
-a{
+
+.btnRetornar{
text-decoration: none;
- color: var(--laranja);
+ background-color: var(--laranja);
+ color: var(--preto);
display: flex;
align-items: center;
+ justify-content: center;
+ border-radius: 5px;
+ font-weight: 500;
margin:1.2rem;
+ padding: 0.5rem;
}
diff --git a/public/css/addEmployee.css b/public/css/addEmployee.css
index b7f0605..d9109b5 100644
--- a/public/css/addEmployee.css
+++ b/public/css/addEmployee.css
@@ -1,4 +1,4 @@
-@import "./global.css";
+@import './modal.css';
#funcionarios{
background-color: rgba( 8, 102, 59, 0.47);
@@ -18,86 +18,94 @@ main header h1 {
padding-right: 10vw;
}
-.content{
- background-color: var(--cinza-claro);
- border-radius: 10px;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 1.3rem;
- color: var(--branco);
- overflow-y: scroll;
+main .content {
+ height: 90%;
+ margin-top: 1%;
}
-main .content form {
+main .content .conteudo-cadastro {
display: grid;
- grid-column-gap: 3%;
- grid-template-columns: auto auto;
- margin: 20px;
- width: 80%;
- height: 90%;
+ width: 90%;
+ height: 100%;
+ margin-left: 5%;
+ margin-right: 5%;
+ padding: 2.5% 5%;
+ grid-template-columns: 50% 50%;
+ grid-template-rows: repeat(12, 12%, 20%);
+ column-gap: 15px;
+ grid-template-areas:
+ 'label1 label1'
+ 'nome nome'
+ 'label2 label3'
+ 'nivelAcesso cpf'
+ 'label4 label4'
+ 'endereco endereco'
+ 'label5 label6'
+ 'telefone dataNascimento'
+ 'label7 label7'
+ 'email email'
+ 'label8 label9'
+ 'usuario senha';
}
-.itemTodo{
- grid-column: 1 / span 2;
+#nome{
+ grid-area: nome;
}
-label{
- display: flex;
+#nivelAcesso{
+ grid-area: nivelAcesso;
}
-.icone{
- margin-right: 5px;
+#cpf{
+ grid-area: cpf;
}
-.input{
- background-color: var(--cinza-escuro);
- border-radius: 7px;
- border: 0;
- color: var(--branco);
- font-size: 1.3rem;
- padding: 0.7rem;
- margin-bottom: 2%;
- margin-top: 1%;
- width: 100%;
+#endereco{
+ grid-area: endereco;
}
-.botao{
- display: flex;
- align-items: center;
- justify-content: center;
- border: 0;
- border-radius: 5px;
- margin-top: 10%;
- padding: 10px;
- font-family: 'Roboto', sans-serif;
- font-size: 1rem;
- font-weight: 500;
+#telefone{
+ grid-area: telefone;
}
-.btnCancelar{
- background-color: var(--cinza-escuro);
- color: var(--branco);
+#dataNascimento{
+ grid-area: dataNascimento;
}
-.btnCadastrar{
- background-color: var(--verde);
+#email{
+ grid-area: email;
}
-.btnIcone{
- margin-left: 5px;
+#usuario{
+ grid-area: usuario;
}
-@media screen and (max-width: 900px){
- .item{
- grid-column: 1 / span 2;
- }
+#senha{
+ grid-area: senha;
+}
+
+.label7{
+ grid-area: label7;
+}
+
+main .content .conteudo-cadastro select {
+ width: 80%;
+ height: 70%;
+ border: none;
+ outline: none;
+ border-radius: 6px;
+ color: var(--branco);
+ background-color: var(--cinza-escuro);
+ font-size: 18px;
+ padding: 5px;
+ padding-left: 10px;
+ margin-left: 10%;
+}
- .btnCadastrar{
- margin-top: 4%;
- }
+.conteudo-cadastro{
+ overflow-y: scroll;
+}
- .content{
- margin-top: 60px;
- }
+.conteudo-cadastro input{
+ margin-bottom: 30px;
}
diff --git a/public/css/addProduct.css b/public/css/addProduct.css
index 291dd41..19f7770 100644
--- a/public/css/addProduct.css
+++ b/public/css/addProduct.css
@@ -31,7 +31,7 @@ main .content .conteudo-cadastro {
margin-right: 5%;
padding: 2.5% 5%;
grid-template-columns: 50% 50%;
- grid-template-rows: repeat(3, 12%, 20%);
+ grid-template-rows: 12% 20% 12% 20% 12% 20%;
column-gap: 15px;
grid-template-areas:
'label1 label1'
@@ -75,7 +75,3 @@ main .content .conteudo-cadastro select {
padding-left: 10px;
margin-left: 10%;
}
-
-main .content .conteudo-cadastro select {
- grid-area: select;
-}
diff --git a/public/css/addProductPromotion.css b/public/css/addProductPromotion.css
new file mode 100644
index 0000000..152ae4e
--- /dev/null
+++ b/public/css/addProductPromotion.css
@@ -0,0 +1,69 @@
+@import './modal.css';
+
+#promocoes {
+ background-color: rgba(8, 102, 59, 0.47);
+ border-left-color: black;
+}
+
+#promocoes a {
+ color: #fff;
+}
+
+main header {
+ grid-template-columns: 10% 1fr;
+}
+
+main header h1 {
+ justify-self: center;
+ padding-right: 10vw;
+}
+
+main .content {
+ height: 90%;
+ margin-top: 1%;
+}
+
+main .content .conteudo-cadastro {
+ display: grid;
+ width: 70%;
+ height: 60%;
+ margin-left: 15%;
+ margin-right: 5%;
+ padding: 2.5% 5%;
+ grid-template-columns: 1fr 80% 1fr;
+ grid-template-rows: 12% 20% 12% 20% 12% 20%;
+ column-gap: 15px;
+ grid-template-areas:
+ '. label1 .'
+ '. promocao .'
+ '. label2 .'
+ '. produto .'
+ '. label3 .'
+ '. desconto .';
+}
+
+#idPromocao {
+ grid-area: promocao;
+}
+
+#idProduto {
+ grid-area: produto;
+}
+
+#valorDesconto {
+ grid-area: desconto;
+}
+
+select {
+ width: 80%;
+ height: 70%;
+ border: none;
+ outline: none;
+ border-radius: 6px;
+ color: var(--branco);
+ background-color: var(--cinza-escuro);
+ font-size: 18px;
+ padding: 5px;
+ padding-left: 10px;
+ margin-left: 10%;
+}
diff --git a/public/css/addPromotion.css b/public/css/addPromotion.css
new file mode 100644
index 0000000..59b8588
--- /dev/null
+++ b/public/css/addPromotion.css
@@ -0,0 +1,53 @@
+@import './modal.css';
+
+#promocoes {
+ background-color: rgba(8, 102, 59, 0.47);
+ border-left-color: black;
+}
+
+#promocoes a {
+ color: #fff;
+}
+
+main header {
+ grid-template-columns: 10% 1fr;
+}
+
+main header h1 {
+ justify-self: center;
+ padding-right: 10vw;
+}
+
+main .content {
+ height: 90%;
+ margin-top: 1%;
+}
+
+main .content .conteudo-cadastro {
+ display: grid;
+ width: 90%;
+ height: 60%;
+ margin-left: 5%;
+ margin-right: 5%;
+ padding: 2.5% 5%;
+ grid-template-columns: 50% 50%;
+ grid-template-rows: 15% 25% 15% 25%;
+ column-gap: 15px;
+ grid-template-areas:
+ 'label1 label1'
+ 'nome nome'
+ 'label2 label3'
+ 'data1 data2';
+}
+
+#nome {
+ grid-area: nome;
+}
+
+#dataInicio {
+ grid-area: data1;
+}
+
+#dataFim {
+ grid-area: data2;
+}
diff --git a/public/css/addPurchases.css b/public/css/addPurchases.css
new file mode 100644
index 0000000..fd72950
--- /dev/null
+++ b/public/css/addPurchases.css
@@ -0,0 +1,314 @@
+@import "./modal.css";
+
+#compras {
+ background-color: rgba(8, 102, 59, 0.47);
+ border-left-color: black;
+}
+
+#compras a {
+ color: #fff;
+}
+
+main header {
+ grid-template-columns: 10% 1fr;
+}
+
+main header h1 {
+ justify-self: center;
+ padding-right: 10vw;
+}
+
+main .content {
+ height: 90%;
+ margin-top: 1%;
+}
+
+button {
+ cursor: pointer;
+}
+
+main .content form {
+ height: 100%;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+form .buttons-modal {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: center;
+ justify-content: flex-start;
+ height: 3vw;
+}
+
+.abrir-modal {
+ display: flex;
+ color: var(--branco);
+ background-color: var(--cinza-claro);
+ font-size: 1vw;
+ border-radius: 6px;
+ border: none;
+ height: 2vw;
+ align-items: center;
+ justify-content: center;
+ margin: 0 5px;
+ width: 20%;
+}
+
+form .abrir-modal svg {
+ height: 1vw;
+}
+
+.modal.produtos div:nth-child(1) {
+ width: 75%;
+ height: 75%;
+ margin: 6.25% 12.5%;
+}
+
+.modal div label {
+ grid-area: texto;
+ width: 95%;
+ text-align: center;
+ border-radius: 6px;
+ padding: 2%;
+ background-color: var(--cinza-escuro);
+ color: var(--branco);
+}
+
+.modal div label svg {
+ height: 60%;
+ margin-top: 3%;
+}
+
+.modal div input {
+ grid-area: buscar;
+ background-color: var(--cinza-escuro);
+ color: var(--branco);
+ border-radius: 6px;
+ border:none;
+ padding: 2%;
+}
+
+.modal div .table {
+ grid-area: tabela;
+ background-color: var(--cinza-claro);
+ border-radius: 6px;
+}
+
+.modal div {
+grid-template-areas:
+ '. . . . fechar'
+ '. texto buscar buscar .'
+ 'tabela tabela tabela tabela tabela';
+}
+
+.modal thead th, .modal tbody td {
+ padding-left: 5%;
+ width: auto;
+ text-align: center;
+}
+
+.modal.fornecedor thead th:nth-child(2), .modal.fornecedor tbody td:nth-child(2) {
+ width: 60%;
+ text-align: left;
+}
+
+.modal.produtos thead th:nth-child(2), .modal.produtos tbody td:nth-child(2) {
+ width: 40%;
+ text-align: left;
+}
+
+.modal tbody button {
+ width: 25%;
+ margin-left: unset;
+}
+
+.modal tbody button.check svg {
+ color: var(--verde);
+}
+
+.modal tbody button.unset svg {
+color: var(--laranja);
+}
+
+.tabela-produtos {
+ width: 100%;
+ height: 65vh;
+ background-color: var(--cinza-claro);
+ margin: 1vh 0;
+ border: none;
+ border-radius: 6px;
+ text-align: center;
+}
+
+ table {
+ width: 100%;
+ max-height: 100%;
+ color: var(--branco);
+ border-collapse: collapse;
+ border-spacing: 1;
+}
+
+ thead th {
+ background-color: var(--cinza-escuro);
+ font-weight: 400;
+ height: 5vh;
+ width: 12%;
+}
+
+.tabela-produtos thead th:nth-child(2) {
+ text-align: left;
+ width: 30%;
+ padding-left: 5px;
+}
+
+.topo-tabela th {
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+ text-align: center;
+}
+
+tbody {
+ overflow-y: scroll;
+ width: 100%;
+}
+
+ tbody tr {
+ border-bottom-color: var(--branco);
+ border-bottom-style: groove;
+ border-bottom-width: 1px;
+}
+
+ tbody td {
+ font-weight: 400;
+ height: 6vh;
+ text-align: center;
+}
+
+.tabela-produtos tbody td:nth-child(2) {
+ text-align: left;
+ width: 30%;
+ padding-left: 5px;
+}
+
+.tabela-produtos tbody td input {
+ width: 70%;
+ border-radius: 5px;
+ border: none;
+ background-color: var(--cinza-escuro);
+ height: 55%;
+ color: var(--branco);
+ text-align: right;
+ padding-right: 5px;
+}
+
+ tbody td button {
+ height: auto;
+ width: auto;
+ background-color: var(--cinza-escuro);
+ border: none;
+ border-radius: 5px;
+}
+
+button:active {
+ opacity: 0.8;
+}
+
+tbody td button svg {
+ height: 20px;
+ padding: 2px;
+ color: var(--laranja);
+}
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+/* Firefox */
+input[type="number"] {
+ -moz-appearance: textfield;
+}
+
+.info {
+ display: grid;
+ grid-template-columns: 1fr 20% 30%;
+ grid-template-rows: 1fr 1fr;
+ grid-template-areas:
+ "fornecedor total botoes"
+ "fornecedor total botoes";
+ column-gap: 25px;
+ row-gap: 5px;
+ width: 100%;
+ height: 12vh;
+ margin: 1vh 0;
+}
+
+.info h2 {
+ background-color: var(--cinza-escuro);
+ padding: 5px 20px;
+ border-radius: 6px;
+ font-size: 3vh;
+ font-weight: 400;
+ min-width: 25%;
+}
+
+.info span {
+ font-size: 3vh;
+ font-weight: 300;
+ padding: 5px 20px;
+}
+
+.info .fornecedor,
+.total {
+ display: flex;
+ color: var(--branco);
+ background-color: var(--cinza-claro);
+ border-radius: 6px;
+}
+
+.fornecedor {
+ grid-area: fornecedor;
+ flex-direction: column;
+ text-align: center;
+}
+
+.total {
+ grid-area: total;
+ flex-direction: column;
+ text-align: center;
+}.btn-sale {
+ width: 100%;
+ margin: unset;
+ grid-area: botoes;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.btn-sale button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 3vh;
+ border: none;
+ border-radius: 6px;
+ height: 45%;
+ width: 100%;
+}
+
+.btn-sale button:nth-child(1) {
+ color: var(--branco);
+ background-color: var(--cinza-escuro);
+}
+
+.btn-sale button:nth-child(2) {
+ color: var(--preto);
+ background-color: var(--verde);
+}
+
+.btn-sale svg {
+ margin-left: 10px;
+}
diff --git a/public/css/addSales.css b/public/css/addSales.css
index 4cb4341..2cc77a3 100644
--- a/public/css/addSales.css
+++ b/public/css/addSales.css
@@ -131,10 +131,14 @@ grid-template-areas:
margin-left: unset;
}
-.modal tbody button svg {
+.modal tbody button.check svg {
color: var(--verde);
}
+.modal tbody button.unset svg {
+ color: var(--laranja);
+}
+
.tabela-produtos {
width: 100%;
height: 65vh;
@@ -284,14 +288,16 @@ input[type="number"] {
flex-direction: column;
text-align: center;
}
-.botoes {
+.btn-sale {
+ width: 100%;
+ margin: unset;
grid-area: botoes;
display: flex;
flex-direction: column;
justify-content: space-between;
}
-.botoes button {
+.btn-sale button {
display: flex;
align-items: center;
justify-content: center;
@@ -299,18 +305,19 @@ input[type="number"] {
border: none;
border-radius: 6px;
height: 45%;
+ width: 100%;
}
-.botoes button:nth-child(1) {
+.btn-sale button:nth-child(1) {
color: var(--branco);
background-color: var(--cinza-escuro);
}
-.botoes button:nth-child(2) {
+.btn-sale button:nth-child(2) {
color: var(--preto);
background-color: var(--verde);
}
-.botoes svg {
+.btn-sale svg {
margin-left: 10px;
}
diff --git a/public/css/category.css b/public/css/category.css
index 29c601a..2c79536 100644
--- a/public/css/category.css
+++ b/public/css/category.css
@@ -1,4 +1,4 @@
-@import './global.css';
+@import './modal.css';
#categorias{
background-color: rgba( 8, 102, 59, 0.47);
diff --git a/public/css/client.css b/public/css/client.css
index 39e41d4..f779256 100644
--- a/public/css/client.css
+++ b/public/css/client.css
@@ -1,5 +1,3 @@
-@import './global.css';
-
#clientes{
background-color: rgba( 8, 102, 59, 0.47);
border-left-color: black;
@@ -124,3 +122,30 @@ main header .header-conteudo {
font-weight: 500;
width: 30%;
}
+
+.modal.mensagem div {
+ background-color: var(--preto);
+}
+
+.modal.mensagem div:nth-child(1) {
+ width: 25%;
+ height: 25%;
+ margin: 18.75% 37.5%;
+}
+
+.modal.mensagem div button {
+ width: 20%;
+ border: none;
+ border-radius: 6px;
+ color: var(--laranja);
+ background-color: var(--cinza-escuro);
+ margin-left: 80%;
+}
+
+.modal.mensagem div h3 {
+ color: var(--branco);
+ font-size: 22px;
+ text-align: center;
+ font-weight: 500;
+ margin-top: 5%;
+}
diff --git a/public/css/dashboard.css b/public/css/dashboard.css
index 4a674cf..2dbb1c0 100644
--- a/public/css/dashboard.css
+++ b/public/css/dashboard.css
@@ -1,11 +1,10 @@
-@import "./global.css";
-
main .content {
height: 87.5%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
+ text-align: center;
}
main .content .logo {
@@ -18,54 +17,24 @@ main .content h1 {
color: var(--branco);
font-weight: 400;
font-size: 4vw;
+ text-align: center;
}
main .shortcuts {
width: 90%;
max-width: 70vw;
- display: flex;
- justify-content: space-between;
- align-items: center;
- height: 10%;
+ display: grid;
+ grid-template-columns: repeat(2, 50%);
+ grid-template-rows: repeat(2, 50%);
+ height: 20%;
+ row-gap: 15%;
+ column-gap: 2.5%;
}
-main .shortcuts a {
- height: 75%;
- width: 47.5%;
+main .shortcuts button {
color: var(--verde);
border: 2px solid var(--verde);
background-color: transparent;
border-radius: 25px;
- cursor: pointer;
font-size: 1.5vw;
- text-align: center;
- text-decoration: none;
- line-height: 5vh;
-}
-
-@media screen and (max-width: 900px) {
- main .content h1 {
- font-size: 5vw;
- text-align: center;
- }
- main .shortcuts {
- flex-direction: column;
- height: 25%;
- }
- main .shortcuts a {
- width: 90%;
- margin-bottom: 5%;
- font-size: 3vw;
- line-height: 7vh;
- }
-}
-
-@media screen and (max-width: 600px) {
- main .content h1 {
- font-size: 8vw;
- }
-
- main .shortcuts a {
- font-size: 4vw;
- }
}
diff --git a/public/css/employee.css b/public/css/employee.css
index 39d306e..d0b6c97 100644
--- a/public/css/employee.css
+++ b/public/css/employee.css
@@ -1,5 +1,3 @@
-@import './global.css';
-
#funcionarios{
background-color: rgba( 8, 102, 59, 0.47);
border-left-color: black;
@@ -124,3 +122,30 @@ main header .header-conteudo {
font-weight: 500;
width: 30%;
}
+
+.modal.mensagem div {
+ background-color: var(--preto);
+}
+
+.modal.mensagem div:nth-child(1) {
+ width: 25%;
+ height: 25%;
+ margin: 18.75% 37.5%;
+}
+
+.modal.mensagem div button {
+ width: 20%;
+ border: none;
+ border-radius: 6px;
+ color: var(--laranja);
+ background-color: var(--cinza-escuro);
+ margin-left: 80%;
+}
+
+.modal.mensagem div h3 {
+ color: var(--branco);
+ font-size: 22px;
+ text-align: center;
+ font-weight: 500;
+ margin-top: 5%;
+}
diff --git a/public/css/login.css b/public/css/login.css
index 8112573..2c58d39 100644
--- a/public/css/login.css
+++ b/public/css/login.css
@@ -1,4 +1,4 @@
-@import './global.css';
+@import './modal.css';
.container{
display: flex;
diff --git a/public/css/product.css b/public/css/product.css
index 9a25760..81b10fd 100644
--- a/public/css/product.css
+++ b/public/css/product.css
@@ -1,5 +1,3 @@
-@import './global.css';
-
#produtos{
background-color: rgba( 8, 102, 59, 0.47);
border-left-color: black;
@@ -124,3 +122,30 @@ main header .header-conteudo {
font-weight: 500;
width: 30%;
}
+
+.modal.mensagem div {
+ background-color: var(--preto);
+}
+
+.modal.mensagem div:nth-child(1) {
+ width: 25%;
+ height: 25%;
+ margin: 18.75% 37.5%;
+}
+
+.modal.mensagem div button {
+ width: 20%;
+ border: none;
+ border-radius: 6px;
+ color: var(--laranja);
+ background-color: var(--cinza-escuro);
+ margin-left: 80%;
+}
+
+.modal.mensagem div h3 {
+ color: var(--branco);
+ font-size: 22px;
+ text-align: center;
+ font-weight: 500;
+ margin-top: 5%;
+}
diff --git a/public/css/promotion.css b/public/css/promotion.css
new file mode 100644
index 0000000..9df2af8
--- /dev/null
+++ b/public/css/promotion.css
@@ -0,0 +1,52 @@
+@import './modal.css';
+
+#promocoes{
+ background-color: rgba( 8, 102, 59, 0.47);
+ border-left-color: black;
+}
+
+#promocoes a{
+ color: #fff;
+}
+
+main header {
+ grid-template-columns: 10% 1fr;
+}
+
+main header .header-conteudo {
+ display: flex;
+ padding-right: 5vw;
+ justify-content: space-between;
+}
+
+
+.btnAcao{
+ width: 10%;
+}
+
+.btnEditar{
+ text-decoration: none;
+ color: var(--branco);
+ background-color: var(--cinza-claro);
+ border-radius: 5px;
+ border: none;
+ height: 2vw;
+ width: 4vw;
+ cursor: pointer;
+}
+
+.btnDeletar{
+ text-decoration: none;
+ color: var(--laranja);
+ background-color: var(--cinza-claro);
+ border-radius: 5px;
+ border: none;
+ height: 2vw;
+ width: 4vw;
+ cursor: pointer;
+}
+
+.iconeAdd{
+ width: 100%;
+ margin: 0;
+}
diff --git a/public/css/provider.css b/public/css/provider.css
index fbabf61..436ba4e 100644
--- a/public/css/provider.css
+++ b/public/css/provider.css
@@ -1,5 +1,3 @@
-@import './global.css';
-
#fornecedores{
background-color: rgba( 8, 102, 59, 0.47);
border-left-color: black;
@@ -124,3 +122,30 @@ main header .header-conteudo {
font-weight: 500;
width: 30%;
}
+
+.modal.mensagem div {
+ background-color: var(--preto);
+}
+
+.modal.mensagem div:nth-child(1) {
+ width: 25%;
+ height: 25%;
+ margin: 18.75% 37.5%;
+}
+
+.modal.mensagem div button {
+ width: 20%;
+ border: none;
+ border-radius: 6px;
+ color: var(--laranja);
+ background-color: var(--cinza-escuro);
+ margin-left: 80%;
+}
+
+.modal.mensagem div h3 {
+ color: var(--branco);
+ font-size: 22px;
+ text-align: center;
+ font-weight: 500;
+ margin-top: 5%;
+}
diff --git a/public/css/purchase.css b/public/css/purchase.css
new file mode 100644
index 0000000..596a158
--- /dev/null
+++ b/public/css/purchase.css
@@ -0,0 +1,151 @@
+#compras{
+ background-color: rgba( 8, 102, 59, 0.47);
+ border-left-color: black;
+}
+
+#compras a{
+ color: #fff;
+}
+
+main header {
+ grid-template-columns: 10% 1fr;
+}
+
+main header .header-conteudo {
+ display: flex;
+ padding-right: 5vw;
+ justify-content: space-between;
+}
+
+.abrir-modal{
+ color: var(--branco);
+ background-color: var(--cinza-claro);
+ border-radius: 5px;
+ border: none;
+ height: 2vw;
+ width: 2.5vw;
+ cursor: pointer;
+}
+
+.modal {
+ position: fixed;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 1;
+ background: #0008;
+}
+
+.modal.disabled {
+ display: none;
+ opacity: 0;
+}
+
+.compra{
+ background-color: var(--preto);
+ width: 50%;
+ margin: 12.5% 25%;
+ border-radius: 6px;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+
+.conteudoCompra{
+ color: var(--branco);
+ display: grid;
+ grid-template-areas:
+ 'titulo titulo titulo'
+ 'info info info'
+ 'tabela tabela tabela'
+ 'total total total';
+ padding: 2%;
+}
+
+.conteudoCompra h2{
+ color: var(--verde);
+ grid-area: titulo;
+}
+
+.info{
+ color: var(--branco);
+ grid-area: info;
+}
+
+.info th{
+ background-color: var(--cinza-escuro);
+ text-align: start;
+ width: 30%;
+ padding: 3px;
+ font-weight: 400;
+}
+
+.info td{
+ background-color: var(--cinza-claro);
+ padding: 3px;
+}
+
+.tabelaProdutos{
+ color: var(--branco);
+ grid-area: tabela;
+ margin-top: 1%;
+ overflow-y: scroll;
+}
+
+.tabelaProdutos th{
+ text-align: center;
+ font-weight: 400;
+ background-color: var(--cinza-escuro);
+ padding: 3px;
+ width: 33%;
+}
+
+.tabelaProdutos td{
+ text-align: center;
+ background-color: var(--cinza-claro);
+ padding: 3px;
+}
+
+.totais{
+ grid-area: total;
+ color: var(--branco);
+ margin-top: 1%;
+}
+
+.totais th{
+ text-align: center;
+ font-weight: 400;
+ background-color: var(--cinza-escuro);
+ padding: 5px 4px;
+ width: 50%;
+}
+
+.totais td{
+ text-align: center;
+ background-color: var(--cinza-claro);
+ padding: 8px 3px;
+}
+
+.fechar-modal{
+ background-color: var(--cinza-claro);
+ color: var(--laranja);
+ border: none;
+ border-radius: 5px;
+ position: absolute;
+ right: 0;
+}
+
+.btnEditar{
+ background-color: var(--verde);
+ color: var(--preto);
+ text-decoration: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 5px;
+ height: 40px;
+ margin: auto;
+ padding-left: 10px;
+ font-weight: 500;
+}
diff --git a/public/css/sale.css b/public/css/sale.css
index 668b9ed..588c9ce 100644
--- a/public/css/sale.css
+++ b/public/css/sale.css
@@ -1,5 +1,3 @@
-@import './global.css';
-
#vendas{
background-color: rgba( 8, 102, 59, 0.47);
border-left-color: black;
diff --git a/public/js/ClientFunctions.js b/public/js/ClientFunctions.js
index 6dfbf18..adda42d 100644
--- a/public/js/ClientFunctions.js
+++ b/public/js/ClientFunctions.js
@@ -52,6 +52,8 @@ const consultarCliente = (id) => {
`;
+ document.querySelector('.btnEditar').href = 'edit/client&id=' + cliente.id;
+ document.querySelector('.btnDeletar').href = 'delete/client&id=' + cliente.id;
})
.catch((err) => console.log(err));
};
diff --git a/public/js/EmployeeFunctions.js b/public/js/EmployeeFunctions.js
index 2a73470..6c737db 100644
--- a/public/js/EmployeeFunctions.js
+++ b/public/js/EmployeeFunctions.js
@@ -13,6 +13,13 @@ fecharModalElements.forEach((elemento) => { elemento.addEventListener("click", (
/* --------------- FUNCIONARIO -------------- */
const modalFuncionario = document.querySelector(".conteudoFuncionario");
+function adicionaZero(numero){
+ if (numero <= 9)
+ return "0" + numero;
+ else
+ return numero;
+}
+
const consultarFuncionario = (id) => {
axios
.post(`${host}/getEmployee`,
@@ -25,6 +32,8 @@ const consultarFuncionario = (id) => {
)
.then((response) => {
const funcionario = response.data;
+ const dataNascimento = new Date(funcionario.dataNascimento);
+ const dataFormatada = `${adicionaZero(dataNascimento.getDate().toString())}/${adicionaZero(dataNascimento.getMonth()+1).toString()}/${dataNascimento.getFullYear()}`;
modalFuncionario.innerHTML =
`
${funcionario.nome}
@@ -54,13 +63,16 @@ const consultarFuncionario = (id) => {
Data de Nascimento |
- ${funcionario.dataNascimento} |
+ ${dataFormatada} |
Usuário |
${funcionario.usuario} |
`;
+
+ document.querySelector('.btnEditar').href = 'edit/employee&id=' + funcionario.id;
+ document.querySelector('.btnDeletar').href = 'delete/employee&id=' + funcionario.id;
})
.catch((err) => console.log(err));
}
diff --git a/public/js/ProductFunctions.js b/public/js/ProductFunctions.js
index 015e5b8..0dfa374 100644
--- a/public/js/ProductFunctions.js
+++ b/public/js/ProductFunctions.js
@@ -25,6 +25,10 @@ const consultarProduto = (id) => {
)
.then((response) => {
const produto = response.data;
+ const valorCompra = Number(produto.valorCompra);
+ const valorVenda = Number(produto.valorVenda);
+ const valorCompraFormatado = valorCompra.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
+ const valorVendaFormatado = valorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
modalProduto.innerHTML =
`${produto.nome}
@@ -46,17 +50,20 @@ const consultarProduto = (id) => {
Valor de Venda |
- ${produto.valorVenda} |
+ ${valorVendaFormatado} |
Valor de Compra |
- ${produto.valorCompra} |
+ ${valorCompraFormatado} |
Código de Barras |
${produto.codigoBarras} |
`;
+
+ document.querySelector('.btnEditar').href = 'edit/product&id=' + produto.id;
+ document.querySelector('.btnDeletar').href = 'delete/product&id=' + produto.id;
})
.catch((err) => console.log(err));
}
diff --git a/public/js/PromotionFunctions.js b/public/js/PromotionFunctions.js
new file mode 100644
index 0000000..e46fbe9
--- /dev/null
+++ b/public/js/PromotionFunctions.js
@@ -0,0 +1,15 @@
+const filtrarPromocao = () => {
+ const tr = document.querySelectorAll(".tabela-consulta tbody tr");
+ const filter = document.getElementById("input").value.toUpperCase();
+ for (let i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[1];
+ if (td) {
+ txtValue = td.textContent || td.innerText;
+ if (txtValue.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ } else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+}
diff --git a/public/js/PromotionProductFunctions.js b/public/js/PromotionProductFunctions.js
new file mode 100644
index 0000000..6d33f2e
--- /dev/null
+++ b/public/js/PromotionProductFunctions.js
@@ -0,0 +1,15 @@
+const filtrarPromocaoProduto = () => {
+ const tr = document.querySelectorAll(".tabela-consulta tbody tr");
+ const filter = document.getElementById("input").value.toUpperCase();
+ for (let i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[2];
+ if (td) {
+ txtValue = td.textContent || td.innerText;
+ if (txtValue.toUpperCase().indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ } else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+}
diff --git a/public/js/ProviderFunctions.js b/public/js/ProviderFunctions.js
index 7ccd5e8..787ce89 100644
--- a/public/js/ProviderFunctions.js
+++ b/public/js/ProviderFunctions.js
@@ -51,6 +51,9 @@ const consultarFornecedor = (id) => {
`;
+
+ document.querySelector('.btnEditar').href = 'edit/provider&id=' + fornecedor.id;
+ document.querySelector('.btnDeletar').href = 'delete/provider&id=' + fornecedor.id;
})
.catch((err) => console.log(err));
};
diff --git a/public/js/PurchaseFunctions.js b/public/js/PurchaseFunctions.js
new file mode 100644
index 0000000..7effec3
--- /dev/null
+++ b/public/js/PurchaseFunctions.js
@@ -0,0 +1,158 @@
+/* --------------- EXIBIR/ESCONDER MODAIS --------------- */
+
+// elementos que abrem e fecham os modais
+const abrirModalElements = document.querySelectorAll(".abrir-modal");
+const fecharModalElements = document.querySelectorAll(".fechar-modal");
+
+// funções de abrir/fechar modais
+const toggleModal = () => document.querySelector(".modal").classList.toggle("disabled");
+
+abrirModalElements.forEach((elemento) => { elemento.addEventListener("click", toggleModal) });
+fecharModalElements.forEach((elemento) => { elemento.addEventListener("click", () => { toggleModal(); limparCompra(); })});
+
+/* --------------- PRODUTOS DA COMPRA -------------- */
+const arrayProdutos = []
+const mountProducts = (value) => {
+ axios
+ .post(
+ `${host}/purchase/getProducts`,
+ (`idCompra=${value}`),
+ {
+ headers: {
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ }
+ )
+ .then((response) => {
+ arrayProdutos[0] = response.data;
+ })
+ .catch((err) => console.log(err));
+};
+
+/* --------------- Compra -------------- */
+const modalCompra = document.querySelector(".conteudoCompra");
+
+function adicionaZero(numero){
+ if (numero <= 9)
+ return "0" + numero;
+ else
+ return numero;
+}
+
+const consultarCompra = (id) => {
+ mountProducts(id)
+ axios
+ .post(`${host}/getPurchase`,
+ (`idSearch=${id}`),
+ {
+ headers: {
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ }
+ )
+ .then((response) => {
+ const compra = response.data;
+ const dataCompra = new Date(compra.dataCompra);
+ const dataFormatada = `${adicionaZero(dataCompra.getDate().toString())}/${adicionaZero(dataCompra.getMonth()+1).toString()}/${dataCompra.getFullYear()} ${dataCompra.getHours()}:${dataCompra.getMinutes()}`
+ modalCompra.insertAdjacentHTML('beforeend',
+ `
+ Compra ${compra.idCompra}
+
+
+ Fornecedor |
+ ${compra.nomeFornecedor} |
+
+
+ Funcionário |
+ ${compra.nomeFuncionario} |
+
+
+ Data da Compra |
+ ${dataFormatada} |
+
+
+
+
+
+ Produtos |
+
+
+ Nome |
+ Quantidade |
+ Valor Unitário |
+
+
+
+
+
`);
+
+ const tabelaProdutos = document.querySelector(".tabelaProdutos");
+
+ arrayProdutos[0].forEach((produto) => {
+ const valorUnitario = Number(produto.valorUnitario);
+ let valorFormatado = valorUnitario.toLocaleString('pt-br', { style: 'currency', currency: 'BRL' });
+ tabelaProdutos.insertAdjacentHTML('beforeend', `
+ ${produto.nome} |
+ ${produto.quantidade} |
+ ${valorFormatado} |
+
`);
+ });
+
+ const valorCompra = Number(compra.valor);
+ const valorCompraFormatado = valorCompra.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
+ modalCompra.insertAdjacentHTML('beforeend',
+ `
+
+ Quantidade Total |
+ Valor Total |
+
+
+ ${compra.quantidade} |
+ ${valorCompraFormatado} |
+
+
`
+ )
+
+ document.querySelector('.btnEditar').href = 'edit/purchase&id=' + compra.idCompra;
+ })
+ .catch((err) => console.log(err));
+}
+
+const limparCompra = () => {
+ modalCompra.innerHTML = "";
+}
+
+
+const filtrarCompra = () => {
+ const tr = document.querySelectorAll(".tabela-consulta tbody tr");
+ const filter = document.getElementById("input").value;
+ for (let i = 0; i < tr.length; i++) {
+ td = tr[i].getElementsByTagName("td")[0];
+ if (td) {
+ txtValue = td.textContent || td.innerText;
+ if (txtValue.indexOf(filter) > -1) {
+ tr[i].style.display = "";
+ } else {
+ tr[i].style.display = "none";
+ }
+ }
+ }
+}
+/*
+function mountClients(idVenda) {
+ var xhttp = new XMLHttpRequest();
+
+ xhttp.onreadystatechange = function () {
+ if (this.readyState == 4 && this.status == 200) {
+ var result = JSON.parse(this.response);
+ for(var i in result){
+ document.getElementById('products_'+idVenda).insertAdjacentHTML('beforeend', ''+result[i].nome+' - '+result[i].valorUnitario+'
');
+ }
+ document.getElementById('products_'+idVenda).insertAdjacentHTML('beforeend', 'Editar');
+ }
+ };
+ xhttp.open("POST", host+"/sale/getProducts", true);
+ xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+ xhttp.send('idVenda='+idVenda);
+}
+*/
diff --git a/public/js/SaleFunctions.js b/public/js/SaleFunctions.js
index fe608d6..b72e71f 100644
--- a/public/js/SaleFunctions.js
+++ b/public/js/SaleFunctions.js
@@ -32,6 +32,13 @@ const mountProducts = (value) => {
/* --------------- VENDA -------------- */
const modalVenda = document.querySelector(".conteudoVenda");
+function adicionaZero(numero){
+ if (numero <= 9)
+ return "0" + numero;
+ else
+ return numero;
+}
+
const consultarVenda = (id) => {
mountProducts(id)
axios
@@ -45,6 +52,8 @@ const consultarVenda = (id) => {
)
.then((response) => {
const venda = response.data;
+ const dataVenda = new Date(venda.dataVenda);
+ const dataFormatada = `${adicionaZero(dataVenda.getDate().toString())}/${adicionaZero(dataVenda.getMonth()+1).toString()}/${dataVenda.getFullYear()} ${dataVenda.getHours()}:${dataVenda.getMinutes()}`
modalVenda.insertAdjacentHTML('beforeend',
`
Venda ${venda.idVenda}
@@ -63,7 +72,7 @@ const consultarVenda = (id) => {
Data da Venda |
- ${venda.dataVenda} |
+ ${dataFormatada} |
@@ -84,13 +93,18 @@ const consultarVenda = (id) => {
const tabelaProdutos = document.querySelector(".tabelaProdutos");
arrayProdutos[0].forEach((produto) => {
+ const valorUnitario = Number(produto.valorUnitario);
+ let valorFormatado = valorUnitario.toLocaleString('pt-br', { style: 'currency', currency: 'BRL' });
+ console.log(valorFormatado)
tabelaProdutos.insertAdjacentHTML('beforeend', `
${produto.nome} |
${produto.quantidade} |
- ${produto.valorUnitario} |
+ ${valorFormatado} |
`);
});
+ const valorVenda = Number(venda.valor);
+ const valorVendaFormatado = valorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
modalVenda.insertAdjacentHTML('beforeend',
`
@@ -99,10 +113,12 @@ const consultarVenda = (id) => {
${venda.quantidade} |
- ${venda.valor} |
+ ${valorVendaFormatado} |
`
)
+
+ document.querySelector('.btnEditar').href = 'edit/sale&id=' + venda.idVenda;
})
.catch((err) => console.log(err));
}
diff --git a/public/js/addPurchaseFunctions.js b/public/js/addPurchaseFunctions.js
new file mode 100644
index 0000000..041c6fc
--- /dev/null
+++ b/public/js/addPurchaseFunctions.js
@@ -0,0 +1,210 @@
+/* --------------- EXIBIR/ESCONDER MODAIS --------------- */
+// elementos que abrem e fecham os modais
+const abrirModalElements = document.querySelectorAll(".abrir-modal");
+const fecharModalElements = document.querySelectorAll(".fechar-modal");
+
+// funções de abrir/fechar modais
+const toggleModalProdutos = () =>
+ document.querySelector(".modal.produtos").classList.toggle("disabled");
+const toggleModalFornecedores = () =>
+ document.querySelector(".modal.fornecedores").classList.toggle("disabled");
+
+// adicionando evento de abrir modal + listar
+abrirModalElements[0].addEventListener("click", toggleModalProdutos);
+abrirModalElements[1].addEventListener("click", toggleModalFornecedores);
+
+// adicionando evento de fechar modal + limpar
+fecharModalElements[0].addEventListener("click", toggleModalProdutos);
+fecharModalElements[1].addEventListener("click", toggleModalFornecedores);
+
+/* --------------- FORNECEDORES -------------- */
+const modalFornecedoresLista = document.querySelector(".lista.fornecedor tbody");
+
+
+const listarFornecedores = () => {
+ axios
+ .get(`${host}/getAllProviders`)
+ .then((response) => {
+ const fornecedores = response.data;
+ fornecedores.forEach((fornecedor) => {
+ modalFornecedoresLista.insertAdjacentHTML(
+ "beforeend",
+ `
+
+ ${fornecedor.id} |
+ ${fornecedor.nome} |
+ |
+
+ `
+ );
+ });
+ })
+ .catch((err) => console.log(err));
+}
+
+const limparFornecedores = () => {
+ modalFornecedoresLista.innerHTML = '';
+}
+
+// função para adicionar o fornecedor selecionado
+const selecionarFornecedor = (id, nome) => {
+ const fornecedorSpan = document.querySelector(".info .fornecedor span");
+ fornecedorSpan.innerHTML = `${nome} `;
+ toggleModalFornecedores();
+};
+
+const filtrarFornecedor = (value) => {
+ axios
+ .post(
+ `${host}/getProviderByName`,
+ (`itemSearch=${value}`),
+ {
+ headers: {
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ }
+ )
+ .then((response) => {
+ limparFornecedores();
+ const fornecedores = response.data;
+ fornecedores.forEach((fornecedor) => {
+ modalFornecedoresLista.insertAdjacentHTML(
+ "beforeend",
+ `
+ ${fornecedor.id} |
+ ${fornecedor.nome} |
+ |
+
`
+ );
+ });
+ })
+ .catch((err) => console.log(err));
+}
+
+/* --------------- PRODUTO --------------- */
+const modalProdutosInput = document.querySelector(".modal.produtos input");
+const modalProdutosLista = document.querySelector(".lista.produtos tbody");
+
+const listarProdutos = () => {
+ axios
+ .post(
+ `${host}/getProducts`,
+ ("itemSearch="),
+ {
+ headers: {
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ }
+ )
+ .then((response) => {
+ const produtos = response.data;
+ produtos.forEach((produto) => {
+ const { id, nome, quantidade, valorVenda } = produto;
+ const novoValorVenda = Number(valorVenda);
+ const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
+
+ modalProdutosLista.insertAdjacentHTML(
+ "beforeend",
+ `
+ ${id} |
+ ${nome} |
+ ${quantidade} |
+ ${valorVendaFormatado} |
+ |
+
`
+ );
+ });
+ })
+ .catch((err) => console.log(err));
+}
+
+const limparProdutos = () => {
+ modalProdutosLista.innerHTML = '';
+}
+
+const produtosTabela = document.querySelector(".tabela-produtos tbody");
+
+const selecionarProduto = (id, nome, quantidade) => {
+
+ if (!document.querySelector(`#product_${id}`)) {
+ produtosTabela.insertAdjacentHTML(
+ "beforeend",
+ `
+ ${id} |
+ ${nome} |
+ |
+ |
+ 0 |
+ |
+
`
+ );
+ const botao = document.querySelector(`tr#produto_lista${id} td button`);
+ botao.classList.remove("check");
+ botao.innerHTML = feather.icons['minus-circle'].toSvg();
+ botao.classList.add("unset");
+ } else {
+ removerProduto(id);
+ }
+};
+
+const calcularTotalVenda = () => {
+ let total = 0;
+
+ document.querySelectorAll('.total-produto').forEach(element => {
+ total += parseFloat(element.innerHTML);
+ });
+
+ const totalSpan = document.querySelector(".info .total span");
+ totalSpan.innerHTML = `R$ ${total.toFixed(2)}`;
+}
+
+const calcularTotalProduto = (quantidade, id) => {
+ let valor = document.querySelector(`#valorUnitario_${id}`).value;
+ document.querySelector(`#product_${id} .total-produto`).innerHTML = (valor * quantidade).toFixed(2);
+ calcularTotalVenda();
+}
+
+const removerProduto = (id) => {
+ const produto = document.getElementById('product_' + id);
+ produtosTabela.removeChild(produto);
+ const botao = document.querySelector(`tr#produto_lista${id} td button`);
+ botao.classList.remove("unset");
+ botao.innerHTML = feather.icons['plus-circle'].toSvg();
+ botao.classList.add("check");
+ calcularTotalVenda();
+}
+
+const filtrarProduto = (value) => {
+ axios
+ .post(
+ `${host}/getProducts`,
+ (`itemSearch=${value}`),
+ {
+ headers: {
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ }
+ )
+ .then((response) => {
+ limparProdutos();
+ const produtos = response.data;
+ produtos.forEach((produto) => {
+ const { id, nome, quantidade, valorVenda } = produto;
+ const check = !document.querySelector(`#product_${id}`);
+ modalProdutosLista.insertAdjacentHTML(
+ "beforeend",
+ `
+ ${id} |
+ ${nome} |
+ ${quantidade} |
+ ${valorVenda} |
+ |
+
`
+ );
+ });
+ })
+ .catch((err) => console.log(err));
+}
+
+listarProdutos();
+listarFornecedores();
diff --git a/public/js/addSaleFunctions.js b/public/js/addSaleFunctions.js
index b4c8284..6db1aac 100644
--- a/public/js/addSaleFunctions.js
+++ b/public/js/addSaleFunctions.js
@@ -12,14 +12,14 @@ const toggleModalClientes = () =>
document.querySelector(".modal.clientes").classList.toggle("disabled");
// adicionando evento de abrir modal + listar
-abrirModalElements[0].addEventListener("click", () => { toggleModalProdutos(); listarProdutos(); });
+abrirModalElements[0].addEventListener("click", () => { toggleModalProdutos(); });
abrirModalElements[1].addEventListener("click", toggleModalPagamentos);
-abrirModalElements[2].addEventListener("click", () => { toggleModalClientes(); listarClientes(); });
+abrirModalElements[2].addEventListener("click", () => { toggleModalClientes(); });
// adicionando evento de fechar modal + limpar
-fecharModalElements[0].addEventListener("click", () => { toggleModalProdutos(); limparProdutos(); });
+fecharModalElements[0].addEventListener("click", () => { toggleModalProdutos(); });
fecharModalElements[1].addEventListener("click", toggleModalPagamentos);
-fecharModalElements[2].addEventListener("click", () => { toggleModalClientes(); limparClientes(); });
+fecharModalElements[2].addEventListener("click", () => { toggleModalClientes(); });
/* --------------- CLIENTES -------------- */
const modalClientesLista = document.querySelector(".lista.clientes tbody");
@@ -37,7 +37,7 @@ const listarClientes = () => {
${cliente.id} |
${cliente.nome} |
- |
+ |
`
);
@@ -78,7 +78,7 @@ const filtrarCliente = (value) => {
`
${cliente.id} |
${cliente.nome} |
- |
+ |
`
);
});
@@ -155,14 +155,16 @@ const listarProdutos = () => {
const produtos = response.data;
produtos.forEach((produto) => {
const { id, nome, quantidade, valorVenda } = produto;
+ const novoValorVenda = Number(valorVenda);
+ const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
modalProdutosLista.insertAdjacentHTML(
"beforeend",
- `
+ `
${id} |
${nome} |
${quantidade} |
- ${valorVenda} |
- |
+ ${valorVendaFormatado} |
+ |
`
);
});
@@ -179,19 +181,26 @@ const produtosTabela = document.querySelector(".tabela-produtos tbody");
const selecionarProduto = (id, nome, quantidade, valorVenda) => {
if (!document.querySelector(`#product_${id}`)) {
+ const novoValorVenda = Number(valorVenda);
+ const valorVendaFormatado = novoValorVenda.toLocaleString('pt-br', { style: 'currency', currency: 'BRL'});
+
produtosTabela.insertAdjacentHTML(
"beforeend",
`
${id} |
${nome} |
- |
- ${valorVenda.toFixed(2)} |
+ |
+ ${valorVendaFormatado} |
0 |
|
`
);
+ const botao = document.querySelector(`tr#produto_lista${id} td button`);
+ botao.classList.remove("check");
+ botao.innerHTML = feather.icons['minus-circle'].toSvg();
+ botao.classList.add("unset");
} else {
- alert("Item já adicionado.");
+ removerProduto(id);
}
};
@@ -214,6 +223,10 @@ const calcularTotalProduto = (valor, quantidade, id) => {
const removerProduto = (id) => {
const produto = document.getElementById('product_' + id);
produtosTabela.removeChild(produto);
+ const botao = document.querySelector(`tr#produto_lista${id} td button`);
+ botao.classList.remove("unset");
+ botao.innerHTML = feather.icons['plus-circle'].toSvg();
+ botao.classList.add("check");
calcularTotalVenda();
}
@@ -233,14 +246,16 @@ const filtrarProduto = (value) => {
const produtos = response.data;
produtos.forEach((produto) => {
const { id, nome, quantidade, valorVenda } = produto;
+ const check = !document.querySelector(`#product_${id}`);
+
modalProdutosLista.insertAdjacentHTML(
"beforeend",
- `
+ `
${id} |
${nome} |
${quantidade} |
${valorVenda} |
- |
+ |
`
);
});
@@ -288,3 +303,6 @@ function addProduct(product) {
/*document.querySelector('.submit').addEventListener('click', () => {
document.getElementById('formSale').submit();
})*/
+
+listarClientes();
+listarProdutos();
diff --git a/routes/routes.php b/routes/routes.php
index b877906..e3a43e0 100644
--- a/routes/routes.php
+++ b/routes/routes.php
@@ -65,6 +65,8 @@
Route::get('/edit/provider', 'ProviderController@edit');
Route::post('/update/provider', 'ProviderController@update');
Route::get('/delete/provider', 'ProviderController@delete');
+ Route::get('/getAllProviders', 'ProviderController@getAllProviders');
+ Route::post('/getProviderByName', 'ProviderController@getProviderByName');
// Rotas de promoções
Route::get('/add/promotion', 'PromotionController@index');
@@ -82,5 +84,13 @@
Route::post('/update/promotion-product', 'PromotionProductController@update');
Route::get('/delete/promotion-product', 'PromotionProductController@delete');
+
+ // Rotas de compra
+ Route::get('/add/purchase', 'PurchaseController@index');
+ Route::post('/adding/purchase', 'PurchaseController@store');
+ Route::get('/purchase', 'PurchaseController@show');
+ Route::post('/purchase/getProducts', 'PurchaseController@getProducts');
+ Route::post('/getPurchase', 'PurchaseController@getPurchase');
+
Route::run();
?>
diff --git a/src/Controllers/CategoryController.php b/src/Controllers/CategoryController.php
index 27d9e7e..27ec3d1 100644
--- a/src/Controllers/CategoryController.php
+++ b/src/Controllers/CategoryController.php
@@ -1,19 +1,30 @@
create($params);
-
- if($result){
- return redirect('/add/category','Categoria inserida com sucesso');
+ $data = array(
+ 'Nome_da_categoria' => $params['nome']
+ );
+ $validator = array(
+ 'Nome_da_categoria' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($validator['success']){
+ $category = new CategoryModel();
+ $result = $category->create($params);
+ if($result){
+ return redirect('/category','Categoria inserida com sucesso');
+ }else{
+ return redirect('/add/category','Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
}else{
- return redirect('/add/category','Algo deu errado, tente novamente.');
+ return redirect('/add/category',$resultValidation['message']);
}
}
@@ -28,24 +39,48 @@ public function edit($params){
$category = new EditCategoryView($params);
}
public function update($params){
- $category = new CategoryModel();
- $result = $category->update($params);
+ $data = array(
+ 'Nome_da_categoria' => $params['nome'],
+ 'ID_da_categoria' => $params['categoryId']
+ );
+ $validator = array(
+ 'Nome_da_categoria' => 'required',
+ 'ID_da_categoria' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($validator['success']){
+ $category = new CategoryModel();
+ $result = $category->update($params);
- if($result){
- return redirect('/category', 'Categoria atualizada com sucesso.');
+ if($result){
+ return redirect('/category', 'Categoria atualizada com sucesso.');
+ }else{
+ return redirect('/category', 'Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
}else{
- return redirect('/category', 'Algo deu errado, tente novamente.');
+ return redirect('/category',$resultValidation['message']);
}
}
public function delete($params){
- $category = new CategoryModel();
- $result = $category->delete($params);
+ $data = array(
+ 'ID_da_categoria' => $params['id']
+ );
+ $validator = array(
+ 'ID_da_categoria' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($validator['success']){
+ $category = new CategoryModel();
+ $result = $category->delete($params);
- if($result){
- return redirect('/category', 'Categoria deletada com sucesso.');
+ if($result){
+ return redirect('/category', 'Categoria deletada com sucesso.');
+ }else{
+ return redirect('/category', 'Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
}else{
- return redirect('/category', 'Algo deu errado, tente novamente.');
+ return redirect('/category',$resultValidation['message']);
}
}
}
diff --git a/src/Controllers/ClientController.php b/src/Controllers/ClientController.php
index 53034b7..28e6677 100644
--- a/src/Controllers/ClientController.php
+++ b/src/Controllers/ClientController.php
@@ -1,6 +1,7 @@
$params['nome'],
+ 'CPF' => $params['cpf'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Data_de_nascimento' => $params['dataNascimento']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'CPF' => 'required|cpf',
+ 'endereco' => 'required',
+ 'telefone' => 'required',
+ 'Data_de_nascimento' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $client = new ClientModel();
$result = $client->create($params);
if($result){
- return redirect('/add/client','Cliente cadastrado com sucesso.');
+ return redirect('/client','Cliente cadastrado com sucesso.');
}else{
- return redirect('/add/client','Algo deu errado, tente novamente.');
+ return redirect('/add/client','Ocorreu um erro interno. Contate os desenvolvedores..');
}
+ }else{
+ return redirect('/add/client', $resultValidation['message']);
}
}
public function addSaleClient($params){
- $client = new ClientModel();
-
- $cpf_valid = preg_match('/([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})/',$params['cpf']);
$param['dataNascimento'] = str_replace('/','-',$params['dataNascimento']);
- if($cpf_valid){
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'CPF' => $params['cpf'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Data_de_nascimento' => $params['dataNascimento']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'CPF' => 'required|cpf',
+ 'endereco' => 'required',
+ 'telefone' => 'required',
+ 'Data_de_nascimento' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+
+ if($resultValidation['success']){
+ $client = new ClientModel();
$result = $client->create($params);
if($result){
echo json_encode('Cliente cadastrado com sucesso.');
}else{
- echo json_encode('Algo deu errado, tente novamente.');
+ echo json_encode('Ocorreu um erro interno. Contate os desenvolvedores..');
}
+ }else{
+ return redirect('/add/client', $resultValidation['message']);
}
}
public function getAllClients(){
@@ -68,24 +100,65 @@ public function edit($params){
}
public function update($params){
- $client = new ClientModel();
- $result = $client->update($params);
+ $param['dataNascimento'] = str_replace('/','-',$params['dataNascimento']);
- if($result){
- return redirect('/client','Cliente atualizado com sucesso.');
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'CPF' => $params['cpf'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Data_de_nascimento' => $params['dataNascimento'],
+ 'ID_do_cliente' => $params['clientId']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'CPF' => 'required|cpf',
+ 'endereco' => 'required',
+ 'telefone' => 'required',
+ 'Data_de_nascimento' => 'required',
+ 'ID_do_cliente' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+
+ if($resultValidation['success']){
+ $client = new ClientModel();
+ $result = $client->update($params);
+
+ if($result){
+ return redirect('/client','Cliente atualizado com sucesso.');
+ }else{
+ return redirect('/client','Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
}else{
- return redirect('/client','Algo deu errado, tente novamente.');
+ return redirect('/client', $resultValidation['message']);
}
+
}
public function delete($params){
- $client = new ClientModel();
- $result = $client->delete($params);
-
- if($result){
- return redirect('/client','Cliente deletado com sucesso.');
+ $data = array(
+ 'ID_do_cliente' => $params['id']
+ );
+ $validator = array(
+ 'ID_do_cliente' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $client = new ClientModel();
+ $result = $client->delete($params);
+
+ if($result){
+ return redirect('/client','Cliente deletado com sucesso.');
+ }else{
+ return redirect('/client','Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
+ }else{
+ return redirect('/client', $resultValidation['message']);
+ }
}else{
- return redirect('/client','Algo deu errado, tente novamente.');
+ return redirect('/client','Usuário sem permissão.');
}
}
}
diff --git a/src/Controllers/EmployeeController.php b/src/Controllers/EmployeeController.php
index 68f0f15..f75e710 100644
--- a/src/Controllers/EmployeeController.php
+++ b/src/Controllers/EmployeeController.php
@@ -1,53 +1,148 @@
create($params);
- if($result){
- return redirect('/add/employee', 'Funcionário cadastrado com sucesso');
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'Nivel_de_acesso' => $params['nivelAcesso'],
+ 'CPF' => $params['cpf'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Data_de_nascimento' => $params['dataNascimento'],
+ 'Email' => $params['email'],
+ 'Usuário' => $params['usuario'],
+ 'Senha' => $params['senha']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Nivel_de_acesso' => 'required',
+ 'CPF' => 'required|cpf',
+ 'Endereco' => 'required',
+ 'Telefone' => 'required',
+ 'Data_de_nascimento' => 'required',
+ 'Email' => 'required|email',
+ 'Usuário' => 'required',
+ 'Senha' => 'required'
+ );
+
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $employee = new EmployeeModel();
+ $result = $employee->create($params);
+ if($result){
+ return redirect('/employee', 'Funcionário cadastrado com sucesso');
+ }else{
+ return redirect('/add/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/employee', $resultValidation['message']);
+ }
}else{
- return redirect('/add/employee', 'Algo deu errado, tente novamente');
+ return redirect('/dashboard', 'Usuário sem permissão');
}
}
public function show(){
- $employee = new EmployeeModel();
- $params['employees'] = $employee->getAllEmployees();
- $employee = new EmployeeView($params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $employee = new EmployeeModel();
+ $params['employees'] = $employee->getAllEmployees();
+ $employee = new EmployeeView($params);
+ }else{
+ return redirect('/dashboard', 'Usuário sem permissão');
+ }
}
public function getEmployee($params){
$employee = new EmployeeModel();
echo json_encode($employee->getEmployeeById($params));
}
public function edit($params){
- $employee = new EmployeeModel();
- $params['employee'] = $employee->getEmployeeById($params);
- $employee = new EditEmployeeView($params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $employee = new EmployeeModel();
+ $params['employee'] = $employee->getEmployeeById($params);
+ $employee = new EditEmployeeView($params);
+ }else{
+ return redirect('/dashboard', 'Usuário sem permissão');
+ }
}
public function update($params){
- $employee = new EmployeeModel();
- $result = $employee->update($params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'Nivel_de_acesso' => $params['nivelAcesso'],
+ 'CPF' => $params['cpf'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Data_de_nascimento' => $params['dataNascimento'],
+ 'Email' => $params['email'],
+ 'Usuário' => $params['usuario'],
+ 'Senha' => $params['senha'],
+ 'ID_do_funcionario' => $params['employeeId']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Nivel_de_acesso' => 'required',
+ 'CPF' => 'required|cpf',
+ 'Endereco' => 'required',
+ 'Telefone' => 'required',
+ 'Data_de_nascimento' => 'required',
+ 'Email' => 'email',
+ 'Usuário' => 'required',
+ 'Senha' => 'required',
+ 'ID_do_funcionario' => 'required'
+ );
+
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $employee = new EmployeeModel();
+ $result = $employee->update($params);
- if($result){
- return redirect('/employee', 'Funcionário atualizado com sucesso');
+ if($result){
+ return redirect('/employee', 'Funcionário atualizado com sucesso');
+ }else{
+ return redirect('/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/employee', $resultValidation['message']);
+ }
}else{
- return redirect('/employee', 'Algo deu errado, tente novamente');
+ return redirect('/dashboard', 'Usuário sem permissão');
}
}
public function delete($params){
- $employee = new EmployeeModel();
- $result = $employee->delete($params);
- if($result){
- return redirect('/employee', 'Funcionário deletado com sucesso');
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $data = array(
+ 'ID_do_funcionario' => $params['id']
+ );
+ $validator = array(
+ 'ID_do_funcionario' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+
+ if($resultValidation['success']){
+ $employee = new EmployeeModel();
+ $result = $employee->delete($params);
+ if($result){
+ return redirect('/employee', 'Funcionário deletado com sucesso');
+ }else{
+ return redirect('/employee', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/employee', $resultValidation['message']);
+ }
}else{
- return redirect('/employee', 'Algo deu errado, tente novamente');
+ return redirect('/dashboard', 'Usuário sem permissão');
}
}
}
diff --git a/src/Controllers/LoginController.php b/src/Controllers/LoginController.php
index 859db20..10009c7 100755
--- a/src/Controllers/LoginController.php
+++ b/src/Controllers/LoginController.php
@@ -11,6 +11,7 @@ public function store($params){
if(!empty($result)){
$_SESSION['dados_usuario'] = $result;
+ require_once('src/helpers/CheckPromotion.php');
return redirect('/dashboard');
}else{
return redirect('/login', 'Usuário ou senha incorretos');
diff --git a/src/Controllers/ProductController.php b/src/Controllers/ProductController.php
index 44cbb77..9c0817d 100644
--- a/src/Controllers/ProductController.php
+++ b/src/Controllers/ProductController.php
@@ -1,23 +1,51 @@
getAllCategories();
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $category = new CategoryModel();
+ $params['categories'] = $category->getAllCategories();
- $product = new AddProductView($params);
+ $product = new AddProductView($params);
+ }else{
+ return redirect('/product','Usuário sem permissão.');
+ }
}
public function store($params){
- $product = new ProductModel();
- $result = $product->create($params);
-
- if($result){
- return redirect('/add/product','Produto inserido com sucesso.');
- }else{
- return redirect('/add/product','Algo deu errado, tente novamente.');
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'Unidade' => $params['unidade'],
+ 'Valor_de_venda' => $params['valorVenda'],
+ 'Codigo_de_barras' => $params['codigoBarras'],
+ 'Categoria' => $params['categoria']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Unidade' => 'required',
+ 'Valor_de_venda' => 'required',
+ 'Codigo_de_barras' => 'required',
+ 'Categoria' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $product = new ProductModel();
+ $result = $product->create($params);
+
+ if($result){
+ return redirect('/product','Produto inserido com sucesso.');
+ }else{
+ return redirect('/add/product','Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
+ }else{
+ return redirect('/product',$resultValidation['message']);
+ }
+ }else{
+ return redirect('/product','Usuário sem permissão.');
}
}
@@ -36,32 +64,77 @@ public function getProduct($params){
echo json_encode($product->getProductById($params));
}
public function edit($params){
- $product = new ProductModel();
- $category = new CategoryModel();
- $params['product'] = $product->getProductById($params);
- $params['categories'] = $category->getAllCategories();
- $product = new EditProductView($params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $product = new ProductModel();
+ $category = new CategoryModel();
+ $params['product'] = $product->getProductById($params);
+ $params['categories'] = $category->getAllCategories();
+ $product = new EditProductView($params);
+ }else{
+ return redirect('/product','Usuário sem permissão.');
+ }
}
public function update($params){
- $product = new ProductModel();
- $result = $product->update($params);
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'Unidade' => $params['unidade'],
+ 'Valor_de_venda' => $params['valorVenda'],
+ 'Codigo_de_barras' => $params['codigoBarras'],
+ 'Categoria' => $params['categoria'],
+ 'ID_do_produto' => $params['productId']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Unidade' => 'required',
+ 'Valor_de_venda' => 'required',
+ 'Codigo_de_barras' => 'required',
+ 'Categoria' => 'required',
+ 'ID_do_produto' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
- if($result){
- return redirect('/product', 'Produto atualizado com sucesso.');
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $product = new ProductModel();
+ $result = $product->update($params);
+
+ if($result){
+ return redirect('/product', 'Produto atualizado com sucesso.');
+ }else{
+ return redirect('/product', 'Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
+ }else{
+ return redirect('/product',$resultValidation['message']);
+ }
}else{
- return redirect('/product', 'Algo deu errado, tente novamente.');
+ return redirect('/product','Usuário sem permissão.');
}
}
public function delete($params){
- $product = new ProductModel();
- $result = $product->delete($params);
+ $data = array(
+ 'ID_do_produto' => $params['id']
+ );
+ $validator = array(
+ 'ID_do_produto' => 'required'
+ );
+ $resultValidation = validate($data,$params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $product = new ProductModel();
+ $result = $product->delete($params);
- if($result){
- return redirect('/product', 'Produto deletado com sucesso.');
+ if($result){
+ return redirect('/product', 'Produto deletado com sucesso.');
+ }else{
+ return redirect('/product', 'Aldo deu errado, tente novamente.');
+ }
+ }else{
+ return redirect('/product',$resultValidation['message']);
+ }
}else{
- return redirect('/product', 'Aldo deu errado, tente novamente.');
+ return redirect('/product','Usuário sem permissão.');
}
}
}
diff --git a/src/Controllers/PromotionController.php b/src/Controllers/PromotionController.php
index b1d4c6a..9c67769 100644
--- a/src/Controllers/PromotionController.php
+++ b/src/Controllers/PromotionController.php
@@ -1,18 +1,42 @@
create($params);
-
- if($result){
- return redirect('/promotion', 'Promoção cadastrada com sucesso.');
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'Data_de_inicio' => $params['dataInicio'],
+ 'Data_fim' => $params['dataFim']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Data_de_inicio' => 'required',
+ 'Data_fim' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $promotion = new PromotionModel();
+ $result = $promotion->create($params);
+
+ if($result){
+ return redirect('/promotion', 'Promoção cadastrada com sucesso.');
+ }else{
+ return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ }
+ }else{
+ return redirect('/promotion', $resultValidation['message']);
+ }
}else{
- return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion', 'Usuário sem permissão.');
}
}
public function show(){
@@ -21,28 +45,68 @@ public function show(){
$promotion = new PromotionView($params);
}
public function edit($params){
- $promotion = new PromotionModel();
- $params = $promotion->getPromotionById($params);
- $promotion = new EditPromotionView($params);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $promotion = new PromotionModel();
+ $params = $promotion->getPromotionById($params);
+ $promotion = new EditPromotionView($params);
+ }else{
+ return redirect('/promotion', 'Usuário sem permissão.');
+ }
}
public function update($params){
- $promotion = new PromotionModel();
- $result = $promotion->update($params);
+ $data = array(
+ 'ID_da_promocao' => $params['promotionId'],
+ 'Nome' => $params['nome'],
+ 'Data_de_inicio' => $params['dataInicio'],
+ 'Data_fim' => $params['dataFim']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'Data_de_inicio' => 'required',
+ 'Data_fim' => 'required',
+ 'ID_da_promocao' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $promotion = new PromotionModel();
+ $result = $promotion->update($params);
- if($result){
- return redirect('/promotion', 'Promoção atualizada com sucesso.');
+ if($result){
+ return redirect('/promotion', 'Promoção atualizada com sucesso.');
+ }else{
+ return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ }
+ }else{
+ return redirect('/promotion', $resultValidation['message']);
+ }
}else{
- return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion', 'Usuário sem permissão.');
}
}
public function delete($params){
- $promotion = new PromotionModel();
- $result = $promotion->delete($params);
+ $data = array(
+ 'ID_da_promocao' => $params['id']
+ );
+ $validator = array(
+ 'ID_da_promocao' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $promotion = new PromotionModel();
+ $result = $promotion->delete($params);
- if($result){
- return redirect('/promotion', 'Promoção deletada com sucesso.');
+ if($result){
+ return redirect('/promotion', 'Promoção deletada com sucesso.');
+ }else{
+ return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ }
+ }else{
+ return redirect('/promotion', $resultValidation['message']);
+ }
}else{
- return redirect('/promotion', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion', 'Usuário sem permissão.');
}
}
}
diff --git a/src/Controllers/PromotionProductController.php b/src/Controllers/PromotionProductController.php
index abc8849..b8d0a8b 100644
--- a/src/Controllers/PromotionProductController.php
+++ b/src/Controllers/PromotionProductController.php
@@ -1,5 +1,14 @@
create($params);
-
- if($result){
- return redirect('/promotion-product', 'Relação da promoção ao produto cadastrada com sucesso.');
+ $data = array(
+ 'ID_do_produto' => $params['idProduto'],
+ 'ID_da_promocao' => $params['idPromocao'],
+ 'Valor_de_desconto' => $params['valorDesconto']
+ );
+ $validator = array(
+ 'ID_do_produto' => 'required',
+ 'ID_da_promocao' => 'required',
+ 'Valor_de_desconto' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $promotionProduct = new PromotionProductModel();
+ $result = $promotionProduct->create($params);
+
+ if($result){
+ return redirect('/promotion-product', 'Relação da promoção ao produto cadastrada com sucesso.');
+ }else{
+ return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ }
}else{
- return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion-product', $resultValidation['message']);
}
}
public function show(){
@@ -32,23 +56,51 @@ public function edit($params){
$promotionProduct = new EditPromotionProductView($params);
}
public function update($params){
- $promotionProduct = new PromotionProductModel();
- $result = $promotionProduct->update($params);
+ $data = array(
+ 'ID_do_produto' => $params['idProduto'],
+ 'ID_da_promocao' => $params['idPromocao'],
+ 'Valor_de_desconto' => $params['valorDesconto'],
+ 'ID_da_promocao_do_produto' => $params['promotionProductId']
+ );
+ $validator = array(
+ 'ID_do_produto' => 'required',
+ 'ID_da_promocao' => 'required',
+ 'Valor_de_desconto' => 'required',
+ 'ID_da_promocao_do_produto' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $promotionProduct = new PromotionProductModel();
+ $result = $promotionProduct->update($params);
- if($result){
- return redirect('/promotion-product', 'Relação da promoção ao produto atualizada com sucesso.');
+ if($result){
+ return redirect('/promotion-product', 'Relação da promoção ao produto atualizada com sucesso.');
+ }else{
+ return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ }
}else{
- return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion-product', $resultValidation['message']);
}
}
public function delete($params){
- $promotionProduct = new PromotionProductModel();
- $result = $promotionProduct->delete($params);
+ $data = array(
+ 'ID_da_promocao_do_produto' => $params['id']
+ );
+ $validator = array(
+ 'ID_da_promocao_do_produto' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $promotionProduct = new PromotionProductModel();
+ $result = $promotionProduct->delete($params);
- if($result){
- return redirect('/promotion-product', 'Relação da promoção ao produto deletada com sucesso.');
+ if($result){
+ return redirect('/promotion-product', 'Relação da promoção ao produto deletada com sucesso.');
+ }else{
+ return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ }
}else{
- return redirect('/promotion-product', 'Aldo deu errado, tente novamente.');
+ return redirect('/promotion-product', $resultValidation['message']);
}
}
}
diff --git a/src/Controllers/ProviderController.php b/src/Controllers/ProviderController.php
index 149f059..4258088 100644
--- a/src/Controllers/ProviderController.php
+++ b/src/Controllers/ProviderController.php
@@ -1,20 +1,48 @@
create($params);
-
- if($result){
- return redirect('/add/provider', 'Forncedor cadastrado com sucesso');
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'CNPJ' => $params['cnpj'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Email' => $params['email']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'CNPJ' => 'required|cnpj',
+ 'Endereco' => 'required',
+ 'Telefone' => 'required',
+ 'Email' => 'required|email',
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $provider = new ProviderModel();
+ $result = $provider->create($params);
+
+ if($result){
+ return redirect('/provider', 'Forncedor cadastrado com sucesso');
+ }else{
+ return redirect('/add/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/provider', $resultValidation['message']);
+ }
}else{
- return redirect('/add/provider', 'Algo deu errado, tente novamente');
+ return redirect('/provider', 'Usuário sem permissão.');
}
}
@@ -29,31 +57,85 @@ public function getProvider($params){
echo json_encode($provider->getProviderById($params));
}
- public function edit($params){
+ public function getProviderByName($params){
$provider = new ProviderModel();
- $params['provider'] = $provider->getProviderById($params);
- $provider = new EditProviderView($params);
+ echo json_encode($provider->getProviderByName($params));
+ }
+
+ public function edit($params){
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $provider = new ProviderModel();
+ $params['provider'] = $provider->getProviderById($params);
+ $provider = new EditProviderView($params);
+ }else{
+ return redirect('/provider', 'Usuário sem permissão.');
+ }
}
public function update($params){
- $provider = new ProviderModel();
- $result = $provider->update($params);
+ $data = array(
+ 'Nome' => $params['nome'],
+ 'CNPJ' => $params['cnpj'],
+ 'Endereco' => $params['endereco'],
+ 'Telefone' => $params['telefone'],
+ 'Email' => $params['email'],
+ 'ID_do_fornecedor' => $params['providerId']
+ );
+ $validator = array(
+ 'Nome' => 'required',
+ 'CNPJ' => 'required|cnpj',
+ 'Endereco' => 'required',
+ 'Telefone' => 'required',
+ 'Email' => 'required|email',
+ 'ID_do_fornecedor' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $provider = new ProviderModel();
+ $result = $provider->update($params);
- if($result){
- return redirect('/provider', 'Fornecedor atualizado com sucesso');
+ if($result){
+ return redirect('/provider', 'Fornecedor atualizado com sucesso');
+ }else{
+ return redirect('/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/provider', $resultValidation['message']);
+ }
}else{
- return redirect('/provider', 'Algo deu errado, tente novamente');
+ return redirect('/provider', 'Usuário sem permissão.');
}
}
public function delete($params){
- $provider = new ProviderModel();
- $result = $provider->delete($params);
+ $data = array(
+ 'ID_do_fornecedor' => $params['id']
+ );
+ $validator = array(
+ 'ID_do_fornecedor' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ if($resultValidation['success']){
+ $provider = new ProviderModel();
+ $result = $provider->delete($params);
+
+ if($result){
+ return redirect('/provider', 'Fornecedor deletado com sucesso');
+ }else{
+ return redirect('/provider', 'Ocorreu um erro interno. Contate os desenvolvedores.');
+ }
+ }else{
+ return redirect('/provider', $resultValidation['message']);
+ }
- if($result){
- return redirect('/provider', 'Fornecedor deletado com sucesso');
}else{
- return redirect('/provider', 'Algo deu errado, tente novamente');
+ return redirect('/provider', 'Usuário sem permissão.');
}
}
+ public function getAllProviders(){
+ $provider = new ProviderModel();
+ echo json_encode($provider->getAllProviders());
+ }
}
?>
diff --git a/src/Controllers/PurchaseController.php b/src/Controllers/PurchaseController.php
index e69de29..a74210d 100644
--- a/src/Controllers/PurchaseController.php
+++ b/src/Controllers/PurchaseController.php
@@ -0,0 +1,90 @@
+ $params['funcionario'],
+ 'Fornecedor' => $params['fornecedor']
+ );
+ $validator = array(
+ 'Funcionario' => 'required',
+ 'Fornecedor' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $purchaseResult = $purchase->create($params);
+ $productPurchase = new ProductPurchaseModel();
+ $resultProductPurchase = true;
+ foreach($params['produtos'] as $key => $produto){
+ $params['idProduto'] = $produto;
+ $params['idCompra'] = $purchaseResult['lastInsertedId'];
+ $params['quantidade'] = $params['quantidadeCompra'][$key];
+ $params['valorUnitarioProduto'] = $params['valorUnitario'][$key];
+
+ $data = array(
+ 'Quantidade' => $params['quantidade'],
+ 'ID_do_produto' => $params['idProduto'],
+ 'ID_da_compra' => $params['idCompra'],
+ 'Valor_unitario_do_produto' => $params['valorUnitarioProduto']
+ );
+
+ $validator = array(
+ 'Quantidade' => 'required',
+ 'ID_do_produto' => 'required',
+ 'ID_da_compra' => 'required',
+ 'Valor_unitario_do_produto' => 'required'
+ );
+ if($resultValidation['success']){
+ if(!$productPurchase->create($params)){
+ $resultProductPurchase = false;
+ }
+ }else{
+ return redirect('/purchase',$resultValidation['message']);
+ }
+ }
+ if($purchaseResult['success'] && $resultProductPurchase){
+ return redirect('/purchase','Compra efetuada com sucesso.');
+ }else{
+ return redirect('/add/purchase','Ocorreu um erro interno. Contate os desenvolvedores..');
+ }
+ }else{
+ return redirect('/purchase',$resultValidation['message']);
+ }
+ }else{
+ return redirect('/dashboard','Usuário sem permissão.');
+ }
+ }
+ public function show(){
+ if($_SESSION['dados_usuario']['nivelAcesso'] == 2){
+ $purchase = new PurchaseModel();
+ $params['purchases'] = $purchase->getAllPurchase();
+ $purchase = new PurchaseView($params);
+ }else{
+ return redirect('/dashboard','Usuário sem permissão.');
+ }
+ }
+ public function getProducts($params){
+ $productPurchase = new ProductPurchaseModel();
+
+ echo json_encode($productPurchase->getProductsByVendaId($params));
+ }
+ public function getPurchase($params){
+ $purchase = new PurchaseModel();
+
+ echo json_encode($purchase->getPurchase($params));
+ }
+ }
+?>
\ No newline at end of file
diff --git a/src/Controllers/SaleController.php b/src/Controllers/SaleController.php
index 91e7639..8d2b5d9 100644
--- a/src/Controllers/SaleController.php
+++ b/src/Controllers/SaleController.php
@@ -1,6 +1,7 @@
create($params);
- $productSale = new ProductSaleModel();
- $resultProductSale = true;
- foreach($params['produtos'] as $key => $produto){
- $params['idProduto'] = $produto;
- $params['idVenda'] = $saleResult['lastInsertedId'];
- $params['quantidade'] = $params['quantidadeVenda'][$key];
- if(!$productSale->create($params)){
- $resultProductSale = false;
+
+ $data = array(
+ 'Cliente' => $params['cliente'],
+ 'Funcionario' => $params['funcionario'],
+ 'Forma_de_pagamento' => $params['formaPagamento']
+ );
+ $validator = array(
+ 'Cliente' => 'required',
+ 'Funcionario' => 'required',
+ 'Forma_de_pagamento' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ $saleResult = $sale->create($params);
+ $productSale = new ProductSaleModel();
+ $resultProductSale = true;
+ foreach($params['produtos'] as $key => $produto){
+ $params['idProduto'] = $produto;
+ $params['idVenda'] = $saleResult['lastInsertedId'];
+ $params['quantidade'] = $params['quantidadeVenda'][$key];
+
+ $data = array(
+ 'Quantidade' => $params['quantidade'],
+ 'ID_do_produto' => $params['idProduto'],
+ 'ID_da_venda' => $params['idVenda']
+ );
+ $validator = array(
+ 'Quantidade' => 'required',
+ 'ID_do_produto' => 'required',
+ 'ID_da_venda' => 'required'
+ );
+ $resultValidation = validate($data,$validator);
+ if($resultValidation['success']){
+ if(!$productSale->create($params)){
+ $resultProductSale = false;
+ }
+ }else{
+ return redirect('/sale',$resultValidation['message']);
+ }
+ }
+ if($saleResult['success'] && $resultProductSale){
+ return redirect('/sale','Venda efetuada com sucesso.');
+ }else{
+ return redirect('/add/sale','Ocorreu um erro interno. Contate os desenvolvedores..');
}
- }
- if($saleResult['success'] && $resultProductSale){
- return redirect('/add/sale','Venda efetuada com sucesso.');
}else{
- return redirect('/add/sale','Algo deu errado, tente novamente.');
+ return redirect('/sale',$resultValidation['message']);
}
}
diff --git a/src/Models/CategoryModel.php b/src/Models/CategoryModel.php
index be71e59..c0e624f 100644
--- a/src/Models/CategoryModel.php
+++ b/src/Models/CategoryModel.php
@@ -8,7 +8,7 @@ public function create($params){
return $category;
}
public function getAllCategories(){
- $sql = "SELECT * FROM Categoria;";
+ $sql = "SELECT * FROM Categoria ORDER BY nome ASC;";
$categories = DB::getAll($sql);
return $categories;
diff --git a/src/Models/ClientModel.php b/src/Models/ClientModel.php
index f99b3a2..9dfd75f 100644
--- a/src/Models/ClientModel.php
+++ b/src/Models/ClientModel.php
@@ -13,7 +13,7 @@ public function create($params){
return DB::execute($sql);
}
public function getAllClients(){
- $sql = "SELECT * FROM Cliente;";
+ $sql = "SELECT * FROM Cliente ORDER BY nome ASC;";
return DB::getAll($sql);
}
diff --git a/src/Models/EmployeeModel.php b/src/Models/EmployeeModel.php
index 1340b9e..b5a5cba 100644
--- a/src/Models/EmployeeModel.php
+++ b/src/Models/EmployeeModel.php
@@ -11,7 +11,7 @@ public function login($params){
public function create($params){
$nome = addslashes($params['nome']);
- $nivelAcesso = addslashes(($params['nivelAcesso']));
+ $nivelAcesso = addslashes($params['nivelAcesso']);
$cpf = addslashes($params['cpf']);
$endereco = addslashes($params['endereco']);
$telefone = addslashes($params['telefone']);
@@ -28,7 +28,7 @@ public function create($params){
}
public function getAllEmployees(){
- $sql = "SELECT * FROM Funcionario;";
+ $sql = "SELECT * FROM Funcionario ORDER BY nome ASC;";
return DB::getAll($sql);
}
diff --git a/src/Models/ProductModel.php b/src/Models/ProductModel.php
index 8b7f611..96c99b1 100644
--- a/src/Models/ProductModel.php
+++ b/src/Models/ProductModel.php
@@ -15,7 +15,7 @@ public function create($params){
public function getProducts($params){
$itemSearch = addslashes($params['itemSearch']);
- $sql = "SELECT
+ $sql = "SELECT
p.*,
CASE
WHEN
@@ -32,13 +32,13 @@ public function getProducts($params){
LEFT JOIN
ProdutoPromocao AS pp ON p.id = pp.idProduto
LEFT JOIN
- Promocao AS pr ON pr.id = pp.idPromocao
+ Promocao AS pr ON pr.id = pp.idPromocao
WHERE p.nome like '%{$itemSearch}%'";
return DB::getAll($sql);
}
public function getAllProducts(){
- $sql = "SELECT * FROM Produto;";
+ $sql = "SELECT * FROM Produto ORDER BY nome ASC;";
return DB::getAll($sql);
}
@@ -54,7 +54,7 @@ public function getProductById($params){
p.codigoBarras,
c.nome AS nomeCategoria
FROM Produto AS p
- INNER JOIN Categoria AS c
+ INNER JOIN Categoria AS c ON c.id = p.idCategoria
WHERE p.id = '{$id}';";
diff --git a/src/Models/ProductPurchaseModel.php b/src/Models/ProductPurchaseModel.php
new file mode 100644
index 0000000..da46f46
--- /dev/null
+++ b/src/Models/ProductPurchaseModel.php
@@ -0,0 +1,29 @@
+
\ No newline at end of file
diff --git a/src/Models/PromotionModel.php b/src/Models/PromotionModel.php
index ce31c2c..e3b088e 100644
--- a/src/Models/PromotionModel.php
+++ b/src/Models/PromotionModel.php
@@ -37,6 +37,11 @@ public function delete($params){
$sql = "DELETE FROM Promocao WHERE id = '{$id}'";
+ return DB::execute($sql);
+ }
+ public function checkPromotion(){
+ $sql = "DELETE FROM ProdutoPromocao WHERE idPromocao in(SELECT GROUP_CONCAT(id) FROM Promocao WHERE dataFim < NOW());";
+
return DB::execute($sql);
}
}
diff --git a/src/Models/ProviderModel.php b/src/Models/ProviderModel.php
index e620767..2146032 100644
--- a/src/Models/ProviderModel.php
+++ b/src/Models/ProviderModel.php
@@ -13,7 +13,7 @@ public function create($params){
return DB::execute($sql);
}
public function getAllProviders(){
- $sql = "SELECT * FROM Fornecedor;";
+ $sql = "SELECT * FROM Fornecedor ORDER BY nome ASC;";
return DB::getAll($sql);
}
@@ -24,6 +24,13 @@ public function getProviderById($params){
return DB::getFirst($sql);
}
+
+ public function getProviderByName($params){
+ $fornecedor = addslashes($params['itemSearch']);
+ $sql = "SELECT * FROM Fornecedor WHERE nome like '%{$fornecedor}%'";
+
+ return DB::getAll($sql);
+ }
public function update($params){
$nome = addslashes($params['nome']);
diff --git a/src/Models/PurchaseModel.php b/src/Models/PurchaseModel.php
new file mode 100644
index 0000000..beb1270
--- /dev/null
+++ b/src/Models/PurchaseModel.php
@@ -0,0 +1,42 @@
+
\ No newline at end of file
diff --git a/src/Models/SaleModel.php b/src/Models/SaleModel.php
index 0d5cf09..9dfadc3 100644
--- a/src/Models/SaleModel.php
+++ b/src/Models/SaleModel.php
@@ -20,7 +20,7 @@ public function getAllSales(){
v.created AS dataVenda
FROM Venda AS v
INNER JOIN Cliente AS c ON c.id = v.idCliente
- INNER JOIN FormaPagamento AS fp ON fp.id = v.idFormaPagamento;";
+ INNER JOIN FormaPagamento AS fp ON fp.id = v.idFormaPagamento ORDER BY v.id DESC;";
return DB::getAll($sql);
}
diff --git a/src/Views/404.php b/src/Views/404.php
index 6f1b2b4..17ad5da 100755
--- a/src/Views/404.php
+++ b/src/Views/404.php
@@ -4,14 +4,16 @@
+
Erro 404
-
-
+
+
+
404
Página não encontrada
- Voltar para o inicio
+ Voltar para o inicio