1753 lines
46 KiB
C#
1753 lines
46 KiB
C#
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<ModeloItens> 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<ModeloItens> 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<ModeloItens> ListarPorGrupo(string grupo)
|
|
{
|
|
return Listar(grupo: grupo);
|
|
}//ListarPorGrupo
|
|
public List<ModeloItens> ListarPorSubGrupo(string subGrupo)
|
|
{
|
|
return Listar(subGrupo: subGrupo);
|
|
}//ListarPorSubGrupo
|
|
public List<ModeloItens> ListarPorFornecedor(string fornecedor)
|
|
{
|
|
return Listar(fornecedor: fornecedor);
|
|
}//ListarPorFornecedor
|
|
public List<ModeloItens> ListarPorFabricante(string fabricante)
|
|
{
|
|
return Listar(fabricante: fabricante);
|
|
}//ListarPorFabricante
|
|
public List<ModeloItens> ListarPorLocal(string local)
|
|
{
|
|
return Listar(local: local);
|
|
}//ListarPorLocal
|
|
public List<ModeloItens> ListarPorGaveta(string gaveta)
|
|
{
|
|
return Listar(gaveta: gaveta);
|
|
}//ListarPorGaveta
|
|
public List<ModeloItens> ListarPorGTIN(string gtin)
|
|
{
|
|
return Listar(gtin: gtin);
|
|
}//ListarPorGTIN
|
|
public List<ModeloItens> ListarPorNCM(string ncm)
|
|
{
|
|
return Listar(ncm: ncm);
|
|
}//ListarPorNCM
|
|
#endregion
|
|
#region Controle de estoque - Stock Control
|
|
public List<ModeloItens> ProdutosSemEstoque()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosComEstoque()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosAbaixoMinimo()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosAbaixoIdeal()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosSemLucro()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosComPrecoZerado()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosComCustoMaiorQueVenda()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ListarPorCST(string cst)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ListarPorICMS(string icms)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ListarPorIPI(string ipi)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ListarPorCEST(string cest)
|
|
{
|
|
List<ModeloItens> 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<ModeloIcmsUf> 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<ModeloItens> ProdutosSemNCM()
|
|
{
|
|
return Listar(ncm: "");
|
|
}//ProdutosSemNCM
|
|
public List<ModeloItens> ProdutosSemGTIN()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosSemCEST()
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosMaisCaros(int quantidade = 10)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosMaisBaratos(int quantidade = 10)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosComMaiorEstoque(int quantidade = 10)
|
|
{
|
|
List<ModeloItens> 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<ModeloItens> ProdutosComMenorEstoque(int quantidade = 10)
|
|
{
|
|
List<ModeloItens> 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
|
|
#region Mercado Livre - Mercado Livre
|
|
public bool AtualizarCategoriaML(int idItem, string categoria)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
UPDATE Itens
|
|
SET ML_category_id=@CATEGORIA
|
|
WHERE ID_ITENS=@ID";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@CATEGORIA", categoria);
|
|
cmd.Parameters.AddWithValue("@ID", idItem);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}//AtualizarCategoriaML
|
|
public bool AtualizarVideoML(int idItem, string video)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
UPDATE Itens
|
|
SET ML_video_id=@VIDEO
|
|
WHERE ID_ITENS=@ID";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@VIDEO", video);
|
|
cmd.Parameters.AddWithValue("@ID", idItem);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}//AtualizarVideoML
|
|
public bool AtualizarGarantiaML(int idItem, string garantia)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
UPDATE Itens
|
|
SET ML_warranty=@GARANTIA
|
|
WHERE ID_ITENS=@ID";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@GARANTIA", garantia);
|
|
cmd.Parameters.AddWithValue("@ID", idItem);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}//AtualizarGarantiaML
|
|
public bool AtualizarDescricaoML(int idItem, string descricao)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
UPDATE Itens
|
|
SET ML_Description=@DESCRICAO
|
|
WHERE ID_ITENS=@ID";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@DESCRICAO", descricao);
|
|
cmd.Parameters.AddWithValue("@ID", idItem);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}//AtualizarDescricaoML
|
|
public List<ModeloItens> ListarSemCategoriaML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE ML_category_id IS NULL
|
|
OR ML_category_id=''
|
|
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;
|
|
}//ListarSemCategoriaML
|
|
public List<ModeloItens> ListarSemVideoML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE ML_video_id IS NULL
|
|
OR ML_video_id=''
|
|
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;
|
|
}//ListarSemVideoML
|
|
public List<ModeloItens> ListarSemDescricaoML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE ML_Description IS NULL
|
|
OR ML_Description=''
|
|
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;
|
|
}//ListarSemDescricaoML
|
|
public List<ModeloItens> ListarSemGarantiaML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE ML_warranty IS NULL
|
|
OR ML_warranty=''
|
|
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;
|
|
}//ListarSemGarantiaML
|
|
public List<ModeloItens> ProdutosProntosParaPublicacaoML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE
|
|
ML_category_id IS NOT NULL
|
|
AND ML_category_id<>''
|
|
AND ML_Description IS NOT NULL
|
|
AND ML_Description<>''
|
|
AND VENDA<>''
|
|
AND GTIN<>''
|
|
AND NOME<>''
|
|
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;
|
|
}//ProdutosProntosParaPublicacaoML
|
|
public List<ModeloItens> ProdutosPendentesPublicacaoML()
|
|
{
|
|
List<ModeloItens> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Itens
|
|
WHERE
|
|
ML_category_id IS NULL
|
|
OR ML_category_id=''
|
|
OR ML_Description IS NULL
|
|
OR ML_Description=''
|
|
OR GTIN IS NULL
|
|
OR GTIN=''
|
|
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;
|
|
}//ProdutosPendentesPublicacaoML
|
|
public bool VerificarProdutoProntoML(int idItem)
|
|
{
|
|
ModeloItens? item = Carregar(idItem);
|
|
|
|
if (item == null)
|
|
return false;
|
|
|
|
return
|
|
!string.IsNullOrWhiteSpace(item.NOME) &&
|
|
!string.IsNullOrWhiteSpace(item.GTIN) &&
|
|
!string.IsNullOrWhiteSpace(item.VENDA);
|
|
}//VerificarProdutoProntoML
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
//Parte 7 🔜 Mercado Livre........................................................................................................Concluida
|
|
//Parte 8 🔜 Lotes
|
|
//Parte 9 🔜 Seriais
|
|
//Parte 10 🔜 Histórico
|
|
//Parte 11 🔜 Estatísticas Avançadas
|
|
//Parte 12 🔜 Inteligência do ERP
|
|
|
|
}
|
|
}
|