09/07/2026 - DAL (ITENSLOTE)

This commit is contained in:
levelcode developed 2026-07-09 13:55:05 -03:00
parent fd6956d4db
commit a2268913b2

View File

@ -1,6 +1,7 @@
using Microsoft.Data.SqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -1012,9 +1013,565 @@ namespace DAL
}//MelhorLote
#endregion
#region Indicadores - Indicators
public int QuantidadeLotes()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
"SELECT COUNT(*) FROM Itens_Lotes", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeLotes
public int QuantidadeProdutos()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(DISTINCT COD_ITEM)
FROM Itens_Lotes", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeProdutos
public int QuantidadeLotesAtivos()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(*)
FROM Itens_Lotes
WHERE ATIVO=1", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeLotesAtivos
public int QuantidadeLotesInativos()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(*)
FROM Itens_Lotes
WHERE ATIVO=0", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeLotesInativos
public int QuantidadeVencidos()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(*)
FROM Itens_Lotes
WHERE DATA_VALIDADE < GETDATE()
AND ATIVO=1", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeVencidos
public int QuantidadeAVencer(int dias)
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(*)
FROM Itens_Lotes
WHERE DATA_VALIDADE
BETWEEN GETDATE() AND DATEADD(DAY,@DIAS,GETDATE())
AND ATIVO=1", conexao);
cmd.Parameters.AddWithValue("@DIAS", dias);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeAVencer
public int QuantidadeSemValidade()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT COUNT(*)
FROM Itens_Lotes
WHERE DATA_VALIDADE IS NULL", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeSemValidade
public decimal QuantidadeTotalEstoque()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT ISNULL(SUM(QUANTIDADE),0)
FROM Itens_Lotes
WHERE ATIVO=1", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//QuantidadeTotalEstoque
public decimal QuantidadeDisponivelEstoque()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT ISNULL(SUM(QUANTIDADE_DISPONIVEL),0)
FROM Itens_Lotes
WHERE ATIVO=1", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//QuantidadeDisponivelEstoque
public decimal QuantidadeReservadaEstoque()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT ISNULL(SUM(QUANTIDADE_RESERVADA),0)
FROM Itens_Lotes
WHERE ATIVO=1", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//QuantidadeReservadaEstoque
public decimal MaiorQuantidade()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT ISNULL(MAX(QUANTIDADE),0)
FROM Itens_Lotes", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//MaiorQuantidade
public decimal MenorQuantidade()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(
@"SELECT ISNULL(MIN(QUANTIDADE),0)
FROM Itens_Lotes
WHERE QUANTIDADE>0", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//MenorQuantidade
#endregion
#region Estatísticas - Statisticss
public string ProdutoComMaisLotes()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT TOP 1 COD_ITEM
FROM Itens_Lotes
GROUP BY COD_ITEM
ORDER BY COUNT(*) DESC", conexao);
object obj = cmd.ExecuteScalar();
//return obj == null ? "" : obj.ToString();
return Convert.ToString(obj) ?? string.Empty;
}
}//ProdutoComMaisLotes
public string ProdutoComMenosLotes()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT TOP 1 COD_ITEM
FROM Itens_Lotes
GROUP BY COD_ITEM
ORDER BY COUNT(*) ASC", conexao);
object obj = cmd.ExecuteScalar();
return Convert.ToString(obj) ?? string.Empty;
}
}//ProdutoComMenosLotes
public string FornecedorComMaisLotes()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT TOP 1 FORNECEDOR
FROM Itens_Lotes
WHERE FORNECEDOR<>''
GROUP BY FORNECEDOR
ORDER BY COUNT(*) DESC", conexao);
object obj = cmd.ExecuteScalar();
return Convert.ToString(obj) ?? string.Empty;
}
}//FornecedorComMaisLotes
public string FornecedorComMenosLotes()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT TOP 1 FORNECEDOR
FROM Itens_Lotes
WHERE FORNECEDOR<>''
GROUP BY FORNECEDOR
ORDER BY COUNT(*) ASC", conexao);
object obj = cmd.ExecuteScalar();
return Convert.ToString(obj) ?? string.Empty;
}
}//FornecedorComMenosLotes
public decimal MediaQuantidadeLote()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT ISNULL(AVG(QUANTIDADE),0)
FROM Itens_Lotes", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//MediaQuantidadeLote
public double MediaDiasValidade()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao ))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT ISNULL(AVG(DATEDIFF(DAY,GETDATE(),DATA_VALIDADE)),0)
FROM Itens_Lotes
WHERE DATA_VALIDADE IS NOT NULL", conexao);
return Convert.ToDouble(cmd.ExecuteScalar());
}
}//MediaDiasValidade
public int ProdutosSemLote()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT COUNT(*)
FROM Itens
WHERE CODIGO NOT IN
(
SELECT DISTINCT COD_ITEM
FROM Itens_Lotes
)", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//ProdutosSemLote
public int LotesSemMovimento()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT COUNT(*)
FROM Itens_Lotes
WHERE DATA_ALTERACAO IS NULL", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//LotesSemMovimento
public int LotesComEstoqueZero()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT COUNT(*)
FROM Itens_Lotes
WHERE QUANTIDADE<=0", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//LotesComEstoqueZero
public int LotesComEstoquePositivo()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT COUNT(*)
FROM Itens_Lotes
WHERE QUANTIDADE>0", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//LotesComEstoquePositivo
public decimal QuantidadeMediaPorProduto()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT ISNULL(AVG(Total),0)
FROM
(
SELECT SUM(QUANTIDADE) Total
FROM Itens_Lotes
GROUP BY COD_ITEM
) X", conexao);
return Convert.ToDecimal(cmd.ExecuteScalar());
}
}//QuantidadeMediaPorProduto
public int QuantidadeProdutosComMaisDeUmLote()
{
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlCommand cmd = new SqlCommand(@"
SELECT COUNT(*)
FROM
(
SELECT COD_ITEM
FROM Itens_Lotes
GROUP BY COD_ITEM
HAVING COUNT(*)>1
) X", conexao);
return Convert.ToInt32(cmd.ExecuteScalar());
}
}//QuantidadeProdutosComMaisDeUmLote
#endregion
#region Relatórios - Reports
public DataTable ListarTodos()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.ObjetoStringConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
ORDER BY COD_ITEM, DATA_VALIDADE", conexao);
da.Fill(tabela);
}
return tabela;
}//ListarTodos
public DataTable ListarPorProduto(string codItem)
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(connectionString))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE COD_ITEM=@COD_ITEM
ORDER BY DATA_VALIDADE", conexao);
da.SelectCommand.Parameters.AddWithValue("@COD_ITEM", codItem);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarPorFornecedor(string fornecedor)
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE FORNECEDOR=@FORNECEDOR
ORDER BY COD_ITEM", conexao);
da.SelectCommand.Parameters.AddWithValue("@FORNECEDOR", fornecedor);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarVencidos()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE DATA_VALIDADE<GETDATE()
AND ATIVO=1
ORDER BY DATA_VALIDADE", conexao);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarAVencer(int dias)
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE DATA_VALIDADE BETWEEN GETDATE() AND DATEADD(DAY,@DIAS,GETDATE())
AND ATIVO=1
ORDER BY DATA_VALIDADE", conexao);
da.SelectCommand.Parameters.AddWithValue("@DIAS", dias);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarSemValidade()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE DATA_VALIDADE IS NULL", conexao);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarEstoqueZero()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE QUANTIDADE<=0
ORDER BY COD_ITEM", conexao);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarAtivos()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE ATIVO=1
ORDER BY COD_ITEM", conexao);
da.Fill(tabela);
}
return tabela;
}
public DataTable ListarInativos()
{
DataTable tabela = new DataTable();
using (SqlConnection conexao = new SqlConnection(DadosDaConexao.StringDeConexao))
{
conexao.Open();
SqlDataAdapter da = new SqlDataAdapter(@"
SELECT *
FROM Itens_Lotes
WHERE ATIVO=0
ORDER BY COD_ITEM", conexao);
da.Fill(tabela);
}
return tabela;
}
#endregion
@ -1023,8 +1580,8 @@ namespace DAL
//Parte 8.3 -> Concluida
//Parte 8.4 -> Concluida
//Parte 8.5 -> Concluida
//Parte 8.6
//Parte 8.7
//Parte 8.6 -> Concluida
//Parte 8.7 -> Concluida
//Parte 8.8
//Parte 8.9
//Parte 8.10