From aa04fdf0541dd89042990b07e43b2b322218669c Mon Sep 17 00:00:00 2001 From: levelcode365 Date: Mon, 22 Jun 2026 20:44:51 -0300 Subject: [PATCH] 22/06/2026 - DAL Itens (50% concluida). --- DAL/DALIcmsUf.cs | 286 +++++++++ DAL/DALItens.cs | 1508 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1794 insertions(+) create mode 100644 DAL/DALIcmsUf.cs create mode 100644 DAL/DALItens.cs diff --git a/DAL/DALIcmsUf.cs b/DAL/DALIcmsUf.cs new file mode 100644 index 0000000..299bd2e --- /dev/null +++ b/DAL/DALIcmsUf.cs @@ -0,0 +1,286 @@ +using Microsoft.Data.SqlClient; +using MLL; +using System; +using System.Collections.Generic; +using System.Data; + +namespace DALL +{ + public class DALIcmsUf + { + private readonly string connectionString; + + public DALIcmsUf(string conexao) + { + connectionString = conexao; + } + + #region INSERT + + public bool Inserir(ModeloIcmsUf modelo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + INSERT INTO ICMS_UF + ( + COD_ITEM, + UF, + ICMS + ) + VALUES + ( + @COD_ITEM, + @UF, + @ICMS + )"; + + using SqlCommand cmd = new(sql, conn); + + PreencherParametros(cmd, modelo); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + } + + #endregion + + #region UPDATE + + public bool Alterar(ModeloIcmsUf modelo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + UPDATE ICMS_UF SET + COD_ITEM=@COD_ITEM, + UF=@UF, + ICMS=@ICMS + WHERE ID_ICMS_UF=@ID_ICMS_UF"; + + using SqlCommand cmd = new(sql, conn); + + PreencherParametros(cmd, modelo); + + cmd.Parameters.AddWithValue( + "@ID_ICMS_UF", + modelo.ID_ICMS_UF); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + } + + #endregion + + #region DELETE + + public bool Excluir(int id) + { + using SqlConnection conn = new(connectionString); + + using SqlCommand cmd = new( + "DELETE FROM ICMS_UF WHERE ID_ICMS_UF=@ID", + conn); + + cmd.Parameters.AddWithValue("@ID", id); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + } + + #endregion + + #region CARREGAR + + public ModeloIcmsUf? Carregar(int id) + { + using SqlConnection conn = new(connectionString); + + using SqlCommand cmd = new( + "SELECT * FROM ICMS_UF WHERE ID_ICMS_UF=@ID", + conn); + + cmd.Parameters.AddWithValue("@ID", id); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + } + + #endregion + + #region CARREGAR POR CÓDIGO + + public ModeloIcmsUf? CarregarPorCodigo(string codigo) + { + using SqlConnection conn = new(connectionString); + + using SqlCommand cmd = new( + "SELECT * FROM ICMS_UF WHERE CODIGO=@CODIGO", + conn); + + cmd.Parameters.AddWithValue("@CODIGO", codigo); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + } + + #endregion + + #region LISTAR + + public List Listar(string? codigo = null,string? codItem = null,string? uf = null) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM ICMS_UF + WHERE 1=1"; + + using SqlCommand cmd = new(); + + if (!string.IsNullOrWhiteSpace(codigo)) + { + sql += " AND CODIGO LIKE @CODIGO"; + + cmd.Parameters.AddWithValue( + "@CODIGO", + "%" + codigo + "%"); + } + + if (!string.IsNullOrWhiteSpace(codItem)) + { + sql += " AND COD_ITEM=@COD_ITEM"; + + cmd.Parameters.AddWithValue( + "@COD_ITEM", + codItem); + } + + if (!string.IsNullOrWhiteSpace(uf)) + { + sql += " AND UF=@UF"; + + cmd.Parameters.AddWithValue( + "@UF", + uf); + } + + sql += " ORDER BY UF"; + + cmd.Connection = conn; + cmd.CommandText = sql; + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add( + PreencherModelo(dr)); + } + + return lista; + } + + #endregion + + #region EXISTE + + public bool Existe(string codItem, string uf) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM ICMS_UF + WHERE COD_ITEM=@COD_ITEM + AND UF=@UF"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@COD_ITEM", codItem); + cmd.Parameters.AddWithValue("@UF", uf); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()) > 0; + } + + #endregion + + #region QUANTIDADE TOTAL + + public int QuantidadeTotal() + { + using SqlConnection conn = new(connectionString); + + using SqlCommand cmd = new( + "SELECT COUNT(*) FROM ICMS_UF", + conn); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()); + } + + #endregion + + #region PREENCHER MODELO + + private ModeloIcmsUf PreencherModelo(SqlDataReader dr) + { + return new ModeloIcmsUf + { + ID_ICMS_UF = Convert.ToInt32(dr["ID_ICMS_UF"]), + CODIGO = Convert.ToString(dr["CODIGO"]) ?? "", + COD_ITEM = Convert.ToString(dr["COD_ITEM"]) ?? "", + UF = Convert.ToString(dr["UF"]) ?? "", + ICMS = Convert.ToString(dr["ICMS"]) ?? "" + }; + } + + #endregion + + #region PREENCHER PARÂMETROS + + private void PreencherParametros( + SqlCommand cmd, + ModeloIcmsUf modelo) + { + cmd.Parameters.AddWithValue( + "@COD_ITEM", + modelo.COD_ITEM); + + cmd.Parameters.AddWithValue( + "@UF", + modelo.UF); + + cmd.Parameters.AddWithValue( + "@ICMS", + modelo.ICMS); + } + + #endregion + } +} \ No newline at end of file diff --git a/DAL/DALItens.cs b/DAL/DALItens.cs new file mode 100644 index 0000000..3fc684e --- /dev/null +++ b/DAL/DALItens.cs @@ -0,0 +1,1508 @@ +using DALL; +using Microsoft.Data.SqlClient; +using MLL; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DAL +{ + public class DALItens + { + private readonly string connectionString; + + public DALItens(string conexao) + { + connectionString = conexao; + }//Contrutor da classe DALItens + + #region CRUD - Create, Read, Update, Delete + public bool Inserir(ModeloItens modelo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + INSERT INTO Itens + ( + NUMERO, + NOME, + GRUPO, + SUBGRUPO, + TIPO, + UNIDADE, + NUMERO_FAB, + ESTOQUE_MIN, + ESTOQUE_IDEAL, + ESTOQUE_DISP, + CUSTO, + LUCRO, + VENDA, + FORNECEDOR, + LOCAL, + GAVETA, + FABRICANTE, + NOMECURTO, + P_FOTO, + NC_MERCOSUL, + C_CST, + C_ICMS, + C_IPI, + ULTIMA_VENDA, + ULTIMA_COMPRA, + PRECO_1, + PRECO_2, + GTIN, + VALIDADE + ) + VALUES + ( + @NUMERO, + @NOME, + @GRUPO, + @SUBGRUPO, + @TIPO, + @UNIDADE, + @NUMERO_FAB, + @ESTOQUE_MIN, + @ESTOQUE_IDEAL, + @ESTOQUE_DISP, + @CUSTO, + @LUCRO, + @VENDA, + @FORNECEDOR, + @LOCAL, + @GAVETA, + @FABRICANTE, + @NOMECURTO, + @P_FOTO, + @NC_MERCOSUL, + @C_CST, + @C_ICMS, + @C_IPI, + @ULTIMA_VENDA, + @ULTIMA_COMPRA, + @PRECO_1, + @PRECO_2, + @GTIN, + @VALIDADE + )"; + + using SqlCommand cmd = new(sql, conn); + + PreencherParametros(cmd, modelo); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//Inserir + public bool Alterar(ModeloItens modelo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + UPDATE Itens SET + + NUMERO=@NUMERO, + NOME=@NOME, + GRUPO=@GRUPO, + SUBGRUPO=@SUBGRUPO, + TIPO=@TIPO, + UNIDADE=@UNIDADE, + NUMERO_FAB=@NUMERO_FAB, + ESTOQUE_MIN=@ESTOQUE_MIN, + ESTOQUE_IDEAL=@ESTOQUE_IDEAL, + ESTOQUE_DISP=@ESTOQUE_DISP, + CUSTO=@CUSTO, + LUCRO=@LUCRO, + VENDA=@VENDA, + FORNECEDOR=@FORNECEDOR, + LOCAL=@LOCAL, + GAVETA=@GAVETA, + FABRICANTE=@FABRICANTE, + NOMECURTO=@NOMECURTO, + P_FOTO=@P_FOTO, + NC_MERCOSUL=@NC_MERCOSUL, + C_CST=@C_CST, + C_ICMS=@C_ICMS, + C_IPI=@C_IPI, + ULTIMA_VENDA=@ULTIMA_VENDA, + ULTIMA_COMPRA=@ULTIMA_COMPRA, + PRECO_1=@PRECO_1, + PRECO_2=@PRECO_2, + GTIN=@GTIN, + VALIDADE=@VALIDADE + + WHERE ID_ITENS=@ID_ITENS"; + + using SqlCommand cmd = new(sql, conn); + + PreencherParametros(cmd, modelo); + + cmd.Parameters.AddWithValue("@ID_ITENS", modelo.ID_ITENS); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//Alterar + public bool Excluir(int id) + { + using SqlConnection conn = new(connectionString); + + string sql = + @"DELETE FROM Itens + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@ID", id); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//Excluir + public ModeloItens? Carregar(int id) + { + using SqlConnection conn = new(connectionString); + + string sql = + @"SELECT * + FROM Itens + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@ID", id); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + }//Carregar + #endregion + #region CarregarLista - Load List + public ModeloItens? CarregarPorCodigo(string codigo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE CODIGO=@CODIGO"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@CODIGO", codigo); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + }//CarregarPorCodigo + public ModeloItens? CarregarPorNumero(string numero) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE NUMERO=@NUMERO"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@NUMERO", numero); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + }//CarregarPorNumero + public bool ExisteCodigo(string codigo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM Itens + WHERE CODIGO=@CODIGO"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@CODIGO", codigo); + + conn.Open(); + + return Convert.ToInt32(cmd.ExecuteScalar()) > 0; + }//ExisteCodigo + public bool ExisteNumero(string numero) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM Itens + WHERE NUMERO=@NUMERO"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@NUMERO", numero); + + conn.Open(); + + return Convert.ToInt32(cmd.ExecuteScalar()) > 0; + }//ExisteNumero + #endregion + #region Preencher Parametros - Fill Parameters + private ModeloItens PreencherModelo(SqlDataReader dr) + { + return new ModeloItens + { + ID_ITENS = Convert.ToInt32(dr["ID_ITENS"]), + CODIGO = Convert.ToString(dr["CODIGO"]) ?? "", + NUMERO = Convert.ToString(dr["NUMERO"]) ?? "", + NOME = Convert.ToString(dr["NOME"]) ?? "", + + GRUPO = Convert.ToString(dr["GRUPO"]) ?? "", + SUBGRUPO = Convert.ToString(dr["SUBGRUPO"]) ?? "", + + TIPO = Convert.ToString(dr["TIPO"]) ?? "", + UNIDADE = Convert.ToString(dr["UNIDADE"]) ?? "", + + NUMERO_FAB = Convert.ToString(dr["NUMERO_FAB"]) ?? "", + + ESTOQUE_MIN = Convert.ToString(dr["ESTOQUE_MIN"]) ?? "", + ESTOQUE_IDEAL = Convert.ToString(dr["ESTOQUE_IDEAL"]) ?? "", + ESTOQUE_DISP = Convert.ToString(dr["ESTOQUE_DISP"]) ?? "", + + CUSTO = Convert.ToString(dr["CUSTO"]) ?? "", + LUCRO = Convert.ToString(dr["LUCRO"]) ?? "", + VENDA = Convert.ToString(dr["VENDA"]) ?? "", + + FORNECEDOR = Convert.ToString(dr["FORNECEDOR"]) ?? "", + + LOCAL = Convert.ToString(dr["LOCAL"]) ?? "", + GAVETA = Convert.ToString(dr["GAVETA"]) ?? "", + + FABRICANTE = Convert.ToString(dr["FABRICANTE"]) ?? "", + + NOMECURTO = Convert.ToString(dr["NOMECURTO"]) ?? "", + + P_FOTO = Convert.ToString(dr["P_FOTO"]) ?? "", + + NC_MERCOSUL = Convert.ToString(dr["NC_MERCOSUL"]) ?? "", + + C_CST = Convert.ToString(dr["C_CST"]) ?? "", + C_ICMS = Convert.ToString(dr["C_ICMS"]) ?? "", + C_IPI = Convert.ToString(dr["C_IPI"]) ?? "", + + ULTIMA_VENDA = Convert.ToString(dr["ULTIMA_VENDA"]) ?? "", + ULTIMA_COMPRA = Convert.ToString(dr["ULTIMA_COMPRA"]) ?? "", + + PRECO_1 = Convert.ToString(dr["PRECO_1"]) ?? "", + PRECO_2 = Convert.ToString(dr["PRECO_2"]) ?? "", + + GTIN = Convert.ToString(dr["GTIN"]) ?? "", + + VALIDADE = Convert.ToString(dr["VALIDADE"]) ?? "", + + OBSERVACOES = "" + }; + }//PreencherModelo + private void PreencherParametros(SqlCommand cmd,ModeloItens modelo) + { + cmd.Parameters.AddWithValue("@NUMERO", modelo.NUMERO); + cmd.Parameters.AddWithValue("@NOME", modelo.NOME); + + cmd.Parameters.AddWithValue("@GRUPO", modelo.GRUPO); + cmd.Parameters.AddWithValue("@SUBGRUPO", modelo.SUBGRUPO); + + cmd.Parameters.AddWithValue("@TIPO", modelo.TIPO); + cmd.Parameters.AddWithValue("@UNIDADE", modelo.UNIDADE); + + cmd.Parameters.AddWithValue("@NUMERO_FAB", modelo.NUMERO_FAB); + + cmd.Parameters.AddWithValue("@ESTOQUE_MIN", modelo.ESTOQUE_MIN); + cmd.Parameters.AddWithValue("@ESTOQUE_IDEAL", modelo.ESTOQUE_IDEAL); + cmd.Parameters.AddWithValue("@ESTOQUE_DISP", modelo.ESTOQUE_DISP); + + cmd.Parameters.AddWithValue("@CUSTO", modelo.CUSTO); + cmd.Parameters.AddWithValue("@LUCRO", modelo.LUCRO); + cmd.Parameters.AddWithValue("@VENDA", modelo.VENDA); + + cmd.Parameters.AddWithValue("@FORNECEDOR", modelo.FORNECEDOR); + + cmd.Parameters.AddWithValue("@LOCAL", modelo.LOCAL); + cmd.Parameters.AddWithValue("@GAVETA", modelo.GAVETA); + + cmd.Parameters.AddWithValue("@FABRICANTE", modelo.FABRICANTE); + + cmd.Parameters.AddWithValue("@NOMECURTO", modelo.NOMECURTO); + + cmd.Parameters.AddWithValue("@P_FOTO", modelo.P_FOTO); + + cmd.Parameters.AddWithValue("@NC_MERCOSUL", modelo.NC_MERCOSUL); + + cmd.Parameters.AddWithValue("@C_CST", modelo.C_CST); + cmd.Parameters.AddWithValue("@C_ICMS", modelo.C_ICMS); + cmd.Parameters.AddWithValue("@C_IPI", modelo.C_IPI); + + cmd.Parameters.AddWithValue("@ULTIMA_VENDA", modelo.ULTIMA_VENDA); + cmd.Parameters.AddWithValue("@ULTIMA_COMPRA", modelo.ULTIMA_COMPRA); + + cmd.Parameters.AddWithValue("@PRECO_1", modelo.PRECO_1); + cmd.Parameters.AddWithValue("@PRECO_2", modelo.PRECO_2); + + cmd.Parameters.AddWithValue("@GTIN", modelo.GTIN); + + cmd.Parameters.AddWithValue("@VALIDADE", modelo.VALIDADE); + }//PreencherParametros + #endregion + #region Listagem - Listing + public List Listar(string? codigo = null,string? numero = null,string? nome = null,string? grupo = null,string? subGrupo = null,string? tipo = null,string? fornecedor = null, + string? fabricante = null,string? local = null,string? gaveta = null,string? gtin = null,string? ncm = null) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE 1=1"; + + using SqlCommand cmd = new(); + + if (!string.IsNullOrWhiteSpace(codigo)) + { + sql += " AND CODIGO LIKE @CODIGO"; + cmd.Parameters.AddWithValue("@CODIGO", "%" + codigo + "%"); + } + + if (!string.IsNullOrWhiteSpace(numero)) + { + sql += " AND NUMERO LIKE @NUMERO"; + cmd.Parameters.AddWithValue("@NUMERO", "%" + numero + "%"); + } + + if (!string.IsNullOrWhiteSpace(nome)) + { + sql += " AND NOME LIKE @NOME"; + cmd.Parameters.AddWithValue("@NOME", "%" + nome + "%"); + } + + if (!string.IsNullOrWhiteSpace(grupo)) + { + sql += " AND GRUPO=@GRUPO"; + cmd.Parameters.AddWithValue("@GRUPO", grupo); + } + + if (!string.IsNullOrWhiteSpace(subGrupo)) + { + sql += " AND SUBGRUPO=@SUBGRUPO"; + cmd.Parameters.AddWithValue("@SUBGRUPO", subGrupo); + } + + if (!string.IsNullOrWhiteSpace(tipo)) + { + sql += " AND TIPO=@TIPO"; + cmd.Parameters.AddWithValue("@TIPO", tipo); + } + + if (!string.IsNullOrWhiteSpace(fornecedor)) + { + sql += " AND FORNECEDOR=@FORNECEDOR"; + cmd.Parameters.AddWithValue("@FORNECEDOR", fornecedor); + } + + if (!string.IsNullOrWhiteSpace(fabricante)) + { + sql += " AND FABRICANTE=@FABRICANTE"; + cmd.Parameters.AddWithValue("@FABRICANTE", fabricante); + } + + if (!string.IsNullOrWhiteSpace(local)) + { + sql += " AND LOCAL=@LOCAL"; + cmd.Parameters.AddWithValue("@LOCAL", local); + } + + if (!string.IsNullOrWhiteSpace(gaveta)) + { + sql += " AND GAVETA=@GAVETA"; + cmd.Parameters.AddWithValue("@GAVETA", gaveta); + } + + if (!string.IsNullOrWhiteSpace(gtin)) + { + sql += " AND GTIN=@GTIN"; + cmd.Parameters.AddWithValue("@GTIN", gtin); + } + + if (!string.IsNullOrWhiteSpace(ncm)) + { + sql += " AND NC_MERCOSUL=@NCM"; + cmd.Parameters.AddWithValue("@NCM", ncm); + } + + sql += " ORDER BY NOME"; + + cmd.Connection = conn; + cmd.CommandText = sql; + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//Listar + public List ListarPorGrupo(string grupo) + { + return Listar(grupo: grupo); + }//ListarPorGrupo + public List ListarPorSubGrupo(string subGrupo) + { + return Listar(subGrupo: subGrupo); + }//ListarPorSubGrupo + public List ListarPorFornecedor(string fornecedor) + { + return Listar(fornecedor: fornecedor); + }//ListarPorFornecedor + public List ListarPorFabricante(string fabricante) + { + return Listar(fabricante: fabricante); + }//ListarPorFabricante + public List ListarPorLocal(string local) + { + return Listar(local: local); + }//ListarPorLocal + public List ListarPorGaveta(string gaveta) + { + return Listar(gaveta: gaveta); + }//ListarPorGaveta + public List ListarPorGTIN(string gtin) + { + return Listar(gtin: gtin); + }//ListarPorGTIN + public List ListarPorNCM(string ncm) + { + return Listar(ncm: ncm); + }//ListarPorNCM + #endregion + #region Controle de estoque - Stock Control + public List ProdutosSemEstoque() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE TRY_CONVERT(decimal(18,2),ESTOQUE_DISP)=0 + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosSemEstoque + public List ProdutosComEstoque() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE TRY_CONVERT(decimal(18,2),ESTOQUE_DISP)>0 + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosComEstoque + public List ProdutosAbaixoMinimo() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + <= + TRY_CONVERT(decimal(18,2),ESTOQUE_MIN) + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosAbaixoMinimo + public List ProdutosAbaixoIdeal() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + < + TRY_CONVERT(decimal(18,2),ESTOQUE_IDEAL) + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosAbaixoIdeal + public bool AtualizarEstoque(int idItem,decimal quantidade) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + UPDATE Itens + SET ESTOQUE_DISP=@ESTOQUE + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@ESTOQUE", + quantidade.ToString()); + + cmd.Parameters.AddWithValue("@ID", + idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarEstoque + public bool SomarEstoque(int idItem,decimal quantidade) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return false; + + decimal estoqueAtual = + Convert.ToDecimal(item.ESTOQUE_DISP); + + estoqueAtual += quantidade; + + return AtualizarEstoque( + idItem, + estoqueAtual); + }//SomarEstoque + public bool BaixarEstoque(int idItem, decimal quantidade) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return false; + + decimal estoqueAtual = + Convert.ToDecimal(item.ESTOQUE_DISP); + + estoqueAtual -= quantidade; + + if (estoqueAtual < 0) + estoqueAtual = 0; + + return AtualizarEstoque( + idItem, + estoqueAtual); + }//BaixarEstoque + public bool TransferirEstoque(int origem,int destino,decimal quantidade) + { + if (!BaixarEstoque(origem, quantidade)) + return false; + + if (!SomarEstoque(destino, quantidade)) + return false; + + return true; + }//TransferirEstoque + public decimal QuantidadeEmEstoque(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return 0; + + return Convert.ToDecimal(item.ESTOQUE_DISP); + }//QuantidadeEmEstoque + public decimal ValorTotalEstoque() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT + SUM( + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + * + TRY_CONVERT(decimal(18,2),CUSTO) + ) + FROM Itens"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + object valor = cmd.ExecuteScalar(); + + return valor == DBNull.Value + ? 0 + : Convert.ToDecimal(valor); + }//ValorTotalEstoque + #endregion + #region Margens e Lucros - Margins and Profits + public bool AtualizarCusto(int idItem,decimal custo) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + UPDATE Itens + SET CUSTO=@CUSTO + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@CUSTO", custo.ToString()); + cmd.Parameters.AddWithValue("@ID", idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarCusto + public bool AtualizarPrecoVenda(int idItem,decimal preco) + { + using SqlConnection conn = new(connectionString); + + string sql = @" + UPDATE Itens + SET VENDA=@VENDA + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@VENDA", preco.ToString()); + cmd.Parameters.AddWithValue("@ID", idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarPrecoVenda + public bool AtualizarPreco1(int idItem, decimal preco) + { + using SqlConnection conn = new(connectionString); + + string sql = + @"UPDATE Itens + SET PRECO_1=@PRECO + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@PRECO", preco.ToString()); + cmd.Parameters.AddWithValue("@ID", idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarPreco1 + public bool AtualizarPreco2(int idItem,decimal preco) + { + using SqlConnection conn = new(connectionString); + + string sql = + @"UPDATE Itens + SET PRECO_2=@PRECO + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@PRECO", preco.ToString()); + cmd.Parameters.AddWithValue("@ID", idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarPreco2 + public bool AtualizarLucro(int idItem,decimal lucro) + { + using SqlConnection conn = new(connectionString); + + string sql = + @"UPDATE Itens + SET LUCRO=@LUCRO + WHERE ID_ITENS=@ID"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@LUCRO", lucro.ToString()); + cmd.Parameters.AddWithValue("@ID", idItem); + + conn.Open(); + + return cmd.ExecuteNonQuery() > 0; + }//AtualizarLucro + public bool RecalcularPrecoVenda(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return false; + + decimal custo = Convert.ToDecimal(item.CUSTO); + decimal lucro = Convert.ToDecimal(item.LUCRO); + + decimal venda = + custo + + (custo * lucro / 100); + + return AtualizarPrecoVenda( + idItem, + venda); + }//RecalcularPrecoVenda + public bool RecalcularMargemLucro(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return false; + + decimal custo = Convert.ToDecimal(item.CUSTO); + decimal venda = Convert.ToDecimal(item.VENDA); + + if (custo == 0) + return false; + + decimal margem = + ((venda - custo) / custo) * 100; + + return AtualizarLucro( + idItem, + margem); + }//RecalcularMargemLucro + public List ProdutosSemLucro() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE TRY_CONVERT(decimal(18,2),LUCRO)<=0"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add( + PreencherModelo(dr)); + } + + return lista; + }//ProdutosSemLucro + public List ProdutosComPrecoZerado() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE TRY_CONVERT(decimal(18,2),VENDA)=0"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add( + PreencherModelo(dr)); + } + + return lista; + }//ProdutosComPrecoZerado + public List ProdutosComCustoMaiorQueVenda() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),CUSTO) + > + TRY_CONVERT(decimal(18,2),VENDA)"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add( + PreencherModelo(dr)); + } + + return lista; + }//ProdutoComCustoMaiorQueVenda + public decimal ValorTotalVenda() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT + SUM( + TRY_CONVERT(decimal(18,2),VENDA) + * + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + ) + FROM Itens"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + object valor = cmd.ExecuteScalar(); + + return valor == DBNull.Value + ? 0 + : Convert.ToDecimal(valor); + }//ValorTotalVenda + public decimal ValorTotalLucro() + { + return ValorTotalVenda() + - ValorTotalEstoque(); + }//ValorTotalLucro + public decimal MaiorPrecoVenda() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT + MAX( + TRY_CONVERT(decimal(18,2),VENDA) + ) + FROM Itens"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToDecimal(cmd.ExecuteScalar()); + }//MaiorPrecoVenda + public decimal MenorPrecoVenda() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT + MIN( + TRY_CONVERT(decimal(18,2),VENDA) + ) + FROM Itens"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToDecimal(cmd.ExecuteScalar()); + }//MenorPrecoVenda + #endregion + #region Fiscal - Tax + public List ListarPorCST(string cst) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE C_CST=@CST + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@CST", cst); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ListarPorCST + public List ListarPorICMS(string icms) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE C_ICMS=@ICMS + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@ICMS", icms); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ListarPorICMS + public List ListarPorIPI(string ipi) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE C_IPI=@IPI + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@IPI", ipi); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ListarPorIPI + public List ListarPorCEST(string cest) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE CEST=@CEST + ORDER BY NOME"; + + using SqlCommand cmd = new(sql, conn); + + cmd.Parameters.AddWithValue("@CEST", cest); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ListarPorCEST + public ModeloIBPT? CarregarIBPT(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return null; + + DALIBPT dalIBPT = new(connectionString); + + return dalIBPT.CarregarPorNCM( + item.NC_MERCOSUL); + }//CarregarIBPT + public ModeloIcmsEmp? CarregarICMS(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return null; + + DALIcmsEmp dalICMS = new(connectionString); + + return dalICMS.CarregarPorCodigo( + item.C_ICMS); + }//CarregarICMS + public ModeloIcmsUf? CarregarICMSUF(int idItem,string uf) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return null; + + DALIcmsUf dalUF = new(connectionString); + + List lista = + dalUF.Listar( + codItem: item.CODIGO, + uf: uf); + + if (lista.Count == 0) + return null; + + return lista[0]; + }//CarregarICMSUF + public decimal ObterAliquotaICMSDestino(int idItem,string uf) + { + ModeloIcmsUf? icmsUf = + CarregarICMSUF( + idItem, + uf); + + if (icmsUf != null) + { + decimal.TryParse( + icmsUf.ICMS, + out decimal aliquota); + + return aliquota; + } + + ModeloIcmsEmp? icmsPadrao = + CarregarICMS(idItem); + + if (icmsPadrao == null) + return 0; + + decimal.TryParse( + icmsPadrao.ICMS, + out decimal icms); + + return icms; + }//ObterAliquotaICMSDestino + public decimal ObterPercentualIBPT(int idItem) + { + ModeloIBPT? ibpt = + CarregarIBPT(idItem); + + if (ibpt == null) + return 0; + + decimal.TryParse( + ibpt.NacionalFederal, + out decimal valor); + + return valor; + }//ObterPercentualIBPT + public decimal ValorTributacaoIBPT(int idItem) + { + ModeloItens? item = Carregar(idItem); + + if (item == null) + return 0; + + decimal.TryParse( + item.VENDA, + out decimal venda); + + decimal percentual = + ObterPercentualIBPT(idItem); + + return venda * percentual / 100; + }//ValorTributacaoIBPT + public List ProdutosSemNCM() + { + return Listar(ncm: ""); + }//ProdutosSemNCM + public List ProdutosSemGTIN() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE GTIN IS NULL + OR GTIN=''"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosSemGTIN + public List ProdutosSemCEST() + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT * + FROM Itens + WHERE CEST IS NULL + OR CEST=''"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + { + lista.Add(PreencherModelo(dr)); + } + + return lista; + }//ProdutosSemCEST + #endregion + #region Dashboard e Estatísticas - Dashboard and Statistics + public int QuantidadeTotal() + { + using SqlConnection conn = new(connectionString); + + string sql = + @"SELECT COUNT(*) + FROM Itens"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()); + }//QuantidadeTotal + public ModeloItens? PrimeiroRegistro() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT TOP 1 * + FROM Itens + ORDER BY ID_ITENS"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + }//PrimeiroRegistro + public ModeloItens? UltimoRegistro() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT TOP 1 * + FROM Itens + ORDER BY ID_ITENS DESC"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + if (dr.Read()) + return PreencherModelo(dr); + + return null; + }//UltimoRegistro + public int QuantidadeSemEstoque() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP)=0"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()); + }//QuantidadeSemEstoque + public int QuantidadeAbaixoMinimo() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + <= + TRY_CONVERT(decimal(18,2),ESTOQUE_MIN)"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()); + }//QuantidadeAbaixoMinimo + public int QuantidadeAbaixoIdeal() + { + using SqlConnection conn = new(connectionString); + + string sql = @" + SELECT COUNT(*) + FROM Itens + WHERE + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + < + TRY_CONVERT(decimal(18,2),ESTOQUE_IDEAL)"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + return Convert.ToInt32( + cmd.ExecuteScalar()); + }//QuantidadeAbaixoIdeal + public List ProdutosMaisCaros(int quantidade = 10) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = $@" + SELECT TOP {quantidade} * + FROM Itens + ORDER BY + TRY_CONVERT(decimal(18,2),VENDA) + DESC"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + lista.Add( + PreencherModelo(dr)); + + return lista; + }//ProdutosMaisCaros + public List ProdutosMaisBaratos(int quantidade = 10) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = $@" + SELECT TOP {quantidade} * + FROM Itens + ORDER BY + TRY_CONVERT(decimal(18,2),VENDA)"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + lista.Add( + PreencherModelo(dr)); + + return lista; + }//ProdutosMaisBaratos + public List ProdutosComMaiorEstoque(int quantidade = 10) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = $@" + SELECT TOP {quantidade} * + FROM Itens + ORDER BY + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP) + DESC"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + lista.Add( + PreencherModelo(dr)); + + return lista; + }//ProdutosComMaiorEstoque + public List ProdutosComMenorEstoque(int quantidade = 10) + { + List lista = []; + + using SqlConnection conn = new(connectionString); + + string sql = $@" + SELECT TOP {quantidade} * + FROM Itens + ORDER BY + TRY_CONVERT(decimal(18,2),ESTOQUE_DISP)"; + + using SqlCommand cmd = new(sql, conn); + + conn.Open(); + + using SqlDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) + lista.Add( + PreencherModelo(dr)); + + return lista; + }//ProdutosComMenorEstoque + public class DashboardItens + { + public int TotalProdutos { get; set; } + + public int SemEstoque { get; set; } + + public int AbaixoMinimo { get; set; } + + public int AbaixoIdeal { get; set; } + + public decimal ValorTotalEstoque { get; set; } + + public decimal ValorTotalVenda { get; set; } + + public decimal LucroPotencial { get; set; } + } + public DashboardItens Dashboard() + { + return new DashboardItens + { + TotalProdutos = QuantidadeTotal(), + + SemEstoque = QuantidadeSemEstoque(), + + AbaixoMinimo = QuantidadeAbaixoMinimo(), + + AbaixoIdeal = QuantidadeAbaixoIdeal(), + + ValorTotalEstoque = ValorTotalEstoque(), + + ValorTotalVenda = ValorTotalVenda(), + + LucroPotencial = + ValorTotalVenda() + - + ValorTotalEstoque() + }; + } + + #endregion + + //Parte 7 🔜 Mercado Livre + //Parte 8 🔜 Lotes + //Parte 9 🔜 Seriais + //Parte 10 🔜 Histórico + //Parte 11 🔜 Estatísticas Avançadas + //Parte 12 🔜 Inteligência do ERP + + } +}