Levelcode-IBRCAD/IBRCAD/frm_consultavendas.cs

396 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DAL;
using MLL;
using BLL;
using Modelo;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
using System.Windows.Forms;
using System.Xml;
using Font = System.Drawing.Font;
namespace IBRCAD
{
public partial class frm_consultavendas : Form
{
public int codigo = 0;
public frm_consultavendas()
{
InitializeComponent();
}
private void limparCampos()
{
this.dgvDados.DataSource = null;
this.dgv_itens.DataSource = null;
this.dgv_parcelas.DataSource = null;
this.txt_cli_nome.Text = "";
this.lbl_cod.Text = "Infome o código do cliente";
this.dtp_final.Value = DateTime.Now;
this.dtp_inicial.Value = DateTime.Now;
}//limpar campos
private void orgcampos(DataGridView dg, int op)
{
try
{
if (op == 1)
{
dg.Columns[0].Width = 60;
dg.Columns[0].HeaderText = "Código da Venda";
dg.Columns[1].Width = 100;
dg.Columns[1].HeaderText = "Data da Venda";
dg.Columns[2].Width = 100;
dg.Columns[2].HeaderText = "Nota Fiscal";
dg.Columns[3].Width = 60;
dg.Columns[3].HeaderText = "á vista";
dg.Columns[4].Width = 100;
dg.Columns[4].HeaderText = "Nº de Parcelas";
dg.Columns[5].Width = 60;
dg.Columns[5].HeaderText = "Valor Total (R$)";
dg.Columns[6].Width = 60;
dg.Columns[6].HeaderText = "Status da venda";
dg.Columns[7].Visible = false;
dg.Columns[8].Visible = false;
dg.Columns[9].HeaderText = "Cliente";
}//organizar venda
if (op == 2)
{
dg.Columns[0].Width = 100;
dg.Columns[0].HeaderText = "Cód. Itens";
dg.Columns[1].Width = 100;
dg.Columns[1].HeaderText = "Quantidade em estoque";
dg.Columns[2].Width = 100;
dg.Columns[2].HeaderText = "Valor(R$)";
dg.Columns[3].Width = 100;
dg.Columns[3].HeaderText = "ID Venda";
dg.Columns[4].Width = 100;
dg.Columns[4].HeaderText = "ID Produto";
dg.Columns[5].Width = 100;
dg.Columns[5].HeaderText = "Produto";
}//organiza o data do itens
if (op == 3)
{
dg.Columns[0].Width = 100;
dg.Columns[0].HeaderText = "Cód. Venda";
dg.Columns[1].Visible = false;
dg.Columns[2].Width = 100;
dg.Columns[2].HeaderText = "Valor da Parcela";
dg.Columns[3].Width = 100;
dg.Columns[3].HeaderText = "Data de pagamento";
dg.Columns[4].Width = 100;
dg.Columns[4].HeaderText = "Data de vencimento";
//dg.Columns[2].Width = 100;
//dg.Columns[2].HeaderText = "Data Pagamento";
//dg.Columns[3].Width = 100;
//dg.Columns[3].HeaderText = "Data Vencimento";
//dg.Columns[4].Width = 100;
//dg.Columns[4].HeaderText = "Cód. Venda";
}//organiza a venda
}
catch { }
}//organiza campos
private void frm_consultavendas_Load(object sender, EventArgs e)
{
this.pn_cliente.Visible = false;
this.pn_data.Visible = false;
this.pn_parcelas.Visible = false;
this.rb_todasCompras_CheckedChanged(sender, e);
}//load
private void rb_todasCompras_CheckedChanged(object sender, EventArgs e)
{
this.limparCampos();
if (rb_todasCompras.Checked)
{
pn_todasCompras.Visible = true;
DALLconexao cx = new DALLconexao(DadosDaConexao.StringDeConexao);
BLLvenda bvenda = new BLLvenda(cx);
dgvDados.DataSource = bvenda.Localizar();
this.orgcampos(dgvDados, 1);
}
}//rb todas as vendas
private void btn_localizarCliente_Click(object sender, EventArgs e)
{
frm_consultacliente f = new frm_consultacliente();
f.ShowDialog();
if (f.codigo != 0)
{
lbl_cod.Text = f.codigo.ToString();
DALLconexao cx = new DALLconexao(DadosDaConexao.StringDeConexao);
BLLCliente bll = new BLLCliente(cx);
BLLvenda bvenda = new BLLvenda(cx);
ModeloCliente modelo = bll.CarregaModeloCliente(f.codigo);
txt_cli_nome.Text = modelo.CliNome;
this.dgvDados.DataSource = bvenda.Localizar(f.codigo);
f.Dispose();
this.orgcampos(dgvDados, 1);
this.orgcampos(dgv_itens, 2);
this.orgcampos(dgv_parcelas, 3);
}
else
{
lbl_cod.Text = "Nenhum dado encontrado";
}
}//btn localizar por clientes
private void btn_localizarPorData_Click(object sender, EventArgs e)
{
DateTime datainicial, datafinal;
DALLconexao cx = new DALLconexao(DadosDaConexao.StringDeConexao);
BLLvenda bvenda = new BLLvenda(cx);
datainicial = this.dtp_inicial.Value;
datafinal = this.dtp_final.Value;
dgvDados.DataSource = bvenda.Localizar(datainicial, datafinal);
this.orgcampos(dgvDados, 1);
}//localizar por dada
private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
int cod = Convert.ToInt32(dgvDados.Rows[e.RowIndex].Cells[0].Value);
DALLconexao cx = new DALLconexao(DadosDaConexao.StringDeConexao);
//itens da compra
BLLitensVenda bitens = new BLLitensVenda(cx);
dgv_itens.DataSource = bitens.localizar(cod);
this.orgcampos(dgv_itens, 2);
//parcelas da compra
BLLparcelasvenda bpc = new BLLparcelasvenda(cx);
dgv_parcelas.DataSource = bpc.localizar(cod);
this.orgcampos(dgv_parcelas, 3);
}
}//clicando 1 vez no grid
private void dgvDados_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
this.codigo = Convert.ToInt32(dgvDados.Rows[e.RowIndex].Cells[0].Value);
this.Close();
}
}//clicando 2 vezes no grid
private void btn_buscarParcelasEmAberto_Click(object sender, EventArgs e)
{
if (txt_parcelas.Text == "")
{
DALLconexao conexao = new DALLconexao(DadosDaConexao.StringDeConexao);
BLLvenda bvenda = new BLLvenda(conexao);
dgvDados.DataSource = bvenda.LocalizarPorParcelasEmAberto();
this.orgcampos(dgvDados, 1);
}
else
{
int cod = Convert.ToInt32(txt_parcelas.Text);
DALLconexao cx = new DALLconexao(DadosDaConexao.StringDeConexao);
BLLvenda bvenda = new BLLvenda(cx);
dgvDados.DataSource = bvenda.Localizar(cod);
this.orgcampos(dgvDados, 1);
}
}//btn parcelas em aberto
private void rb_cliente_CheckedChanged(object sender, EventArgs e)
{
this.limparCampos();
if (rb_cliente.Checked)
{
this.pn_cliente.Visible = true;
this.pn_todasCompras.Visible = false;
}
else
{
this.pn_cliente.Visible = false;
}
}//rb clientes
private void rb_dataVenda_CheckedChanged(object sender, EventArgs e)
{
this.limparCampos();
if (rb_dataVenda.Checked)
{
this.pn_data.Visible = true;
}
else
{
this.pn_data.Visible = false;
}
}//rb data
private void rb_parcelas_CheckedChanged(object sender, EventArgs e)
{
if (rb_parcelas.Checked)
{
this.pn_parcelas.Visible = true;
this.btn_buscarParcelasEmAberto_Click(sender, e);
}
else
{
this.pn_parcelas.Visible = false;
}
}//rb parcelas
private void pb_exit_Click(object sender, EventArgs e)
{
this.Close();
}
private string RemoveInvalidChars(string input)
{
// Substitui todos os caracteres não-alfanuméricos por sublinhados
string validChars = new string(input.Select(c => char.IsLetterOrDigit(c) ? c : '_').ToArray());
return validChars;
}
private void GerarArquivoPDF(DataGridView dgv)
{
// Verifica se há dados no DataGridView
if (dgv.Rows.Count == 0)
{
MessageBox.Show("Nenhum dado disponível para exportar.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
// Configuração do documento PDF
Document doc = new Document();
string nomeArquivoPDF = $"relatorio_de_vendas_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.pdf";
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream($@"C:\ibrCad\Reports\PDF\{nomeArquivoPDF}", FileMode.Create));
doc.Open();
// Adiciona cabeçalho
Paragraph header = new Paragraph("Relatório de vendas\n");
header.Alignment = Element.ALIGN_CENTER; // Centraliza o texto
header.Font = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 12); // Define a fonte em negrito
doc.Add(header);
// Adiciona os cabeçalhos da tabela
PdfPTable table = new PdfPTable(dgv.Columns.Count);
for (int i = 0; i < dgv.Columns.Count; i++)
{
PdfPCell cell = new PdfPCell(new Phrase(dgv.Columns[i].HeaderText));
table.AddCell(cell);
}
// Adiciona os dados do DataGridView à tabela
for (int i = 0; i < dgv.Rows.Count; i++)
{
for (int j = 0; j < dgv.Columns.Count; j++)
{
if (dgv.Rows[i].Cells[j].Value != null)
{
table.AddCell(new Phrase(dgv.Rows[i].Cells[j].Value.ToString()));
}
}
}
// Calcula a soma dos valores da coluna [5]
decimal somaValores = 0;
for (int i = 0; i < dgv.Rows.Count; i++)
{
if (dgv.Rows[i].Cells[5].Value != null && decimal.TryParse(dgv.Rows[i].Cells[5].Value.ToString(), out decimal valor))
{
somaValores += valor;
}
}
// Adiciona a frase com a soma da coluna 5 ao documento PDF
doc.Add(new Phrase($"Valor das vendas R$ {somaValores.ToString("N2")}"));
// Adiciona a tabela ao documento PDF
doc.Add(table);
doc.Close();
writer.Close();
MessageBox.Show("Arquivo PDF gerado com sucesso.", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Erro ao gerar arquivo PDF: " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void GerarArquivoXML(DataGridView dgv)
{
// Verifica se há dados no DataGridView
if (dgv.Rows.Count == 0)
{
MessageBox.Show("Nenhum dado disponível para exportar.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
try
{
// Configuração do documento XML
XmlDocument xmlDoc = new XmlDocument();
string nomeArquivoXML = $"relatorio_de_vendas_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.xml";
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
xmlDoc.AppendChild(xmlDeclaration);
XmlElement root = xmlDoc.CreateElement("Dados");
xmlDoc.AppendChild(root);
// Adiciona os dados do DataGridView ao XML
for (int i = 0; i < dgv.Rows.Count; i++)
{
XmlElement rowElement = xmlDoc.CreateElement("Linha");
for (int j = 0; j < dgv.Columns.Count; j++)
{
string columnName = RemoveInvalidChars(dgv.Columns[j].HeaderText);
XmlElement cellElement = xmlDoc.CreateElement(columnName);
cellElement.InnerText = dgv.Rows[i].Cells[j].Value.ToString();
rowElement.AppendChild(cellElement);
}
root.AppendChild(rowElement);
}
xmlDoc.Save($@"C:\ibrCad\Reports\XML\{nomeArquivoXML}");
MessageBox.Show("Arquivo XML gerado com sucesso.", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Erro ao gerar arquivo XML: " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btn_imprimir_Click(object sender, EventArgs e)
{
try
{
this.GerarArquivoPDF(dgvDados);
}
catch
{
}
}
}
}