using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics;
namespace RegistrarOCspp2
{
public partial class RegistrarStock : Form
{
public RegistrarStock()
{
InitializeComponent();
dgv1.AllowUserToAddRows = false;
}
int cant = 0;
ClaseABM con
= new ClaseABM
(); private SqlConnection conexion;
private SqlCommand consulta;
private void studioButton2_Click(object sender, EventArgs e)
{
this.Close();
}
private void RegistrarStock_Load(object sender, EventArgs e)
{
// TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet27.ubicacion' Puede moverla o quitarla según sea necesario.
this.ubicacionTableAdapter.Fill(this.proyectoSaludDataSet27.ubicacion);
// TODO: esta línea de código carga datos en la tabla 'proyectoSaludDataSet26.jerarquia' Puede moverla o quitarla según sea necesario.
this.jerarquiaTableAdapter.Fill(this.proyectoSaludDataSet26.jerarquia);
AutoValidate = AutoValidate.Disable;
}
private void CrearColumnaLote()
{
DataGridViewTextBoxColumn txtColumna =
new DataGridViewTextBoxColumn
(); txtColumna.Name = "Lote";
txtColumna.HeaderText = "LOTE";
dgv1.Columns.Insert(3, txtColumna);
dgv1.Columns[3].Width = 150;
dgv1.Columns[3].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
}
private void CrearColumnaVto()
{
DataGridViewTextBoxColumn txtColumna =
new DataGridViewTextBoxColumn
(); txtColumna.Name = "Vto";
txtColumna.HeaderText = "VENCIMIENTO";
dgv1.Columns.Insert(4, txtColumna);
dgv1.Columns[4].Width = 20;
dgv1.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
}
private void CrearColumnaStock()
{
DataGridViewTextBoxColumn txtColumna =
new DataGridViewTextBoxColumn
(); txtColumna.Name = "Stock";
txtColumna.HeaderText = "CANTIDAD A INGRESAR";
dgv1.Columns.Insert(5, txtColumna);
dgv1.Columns[5].Width = 211;
dgv1.Columns[5].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[5].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
}
private void CrearColumnaFaltante()
{
DataGridViewTextBoxColumn txtColumna =
new DataGridViewTextBoxColumn
(); txtColumna.Name = "Faltante";
txtColumna.HeaderText = "FALTANTE";
dgv1.Columns.Insert(6, txtColumna);
dgv1.Columns[6].Width = 211;
dgv1.Columns[6].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
}
private void CrearColumnaUbicacion()
{
DataGridViewTextBoxColumn comboColumna =
new DataGridViewTextBoxColumn
(); comboColumna.Name = "Ubicacion";
comboColumna.HeaderText = "UBICACION";
dgv1.Columns.Insert(7, comboColumna);
dgv1.Columns[7].Width = 30;
dgv1.Columns[7].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
}
private void txtNumero_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (txtNumero.Text == "")
{
DialogResult ds = MessageBox.Show("DEBE INGRESAR UN NRO DE ORDEN", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.Text = ds.ToString();
}
else
if (txtNumero.Text != "")
{
conexion
= new SqlConnection
("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True"); conexion.Open();
SqlCommand consulta
= new SqlCommand
("select count (*) from DetalleOrdenCompra where nro_orden=@nro", conexion
); consulta.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text));
int count = Convert.ToInt32(consulta.ExecuteScalar());
if (count > 0)
{
DialogResult result = MessageBox.Show(this, "DESEA REGISTRAR LOS DATOS?", "ORDEN DE COMPRA ENCONTRADA", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
//MessageBox.Show(consulta2.ToString());
this.Text = result.ToString();
if (result == DialogResult.OK)
{
//CARGAR LOS DATAGRIDVIEW
SqlCommand consulta2
= new SqlCommand
("SELECT dbo.medicamentos1.nombre_medicamento, dbo.medicamentos1.jerarquia, dbo.DetalleOrdenCompra.cantidad FROM dbo.DetalleOrdenCompra INNER JOIN dbo.medicamentos1 ON dbo.DetalleOrdenCompra.codigoMedicamento = dbo.medicamentos1.id_medicamento WHERE nro_orden=@nro ", conexion
); consulta2.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text));
SqlDataAdapter da
= new SqlDataAdapter
(consulta2
); DataTable dt
= new DataTable
(); da.Fill(dt);
dgv1.DataSource = dt;
dgv1.Columns[0].ReadOnly = true;
dgv1.Columns[1].ReadOnly = true;
dgv1.Columns[2].ReadOnly = true;
int rows = dt.Rows.Count;
dgv1.Columns[0].HeaderText = "MEDICAMENTO";
dgv1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[0].Width = 211;
dgv1.Columns[1].HeaderText = "JERARQUIA";
dgv1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[1].Width = 180;
dgv1.Columns[2].HeaderText = "CANTIDAD";
dgv1.Columns[2].Name = "Cantidad";
dgv1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
dgv1.Columns[2].Width = 80;
CrearColumnaLote();
CrearColumnaVto();
CrearColumnaStock();
CrearColumnaFaltante();
CrearColumnaUbicacion();
dgv1.Columns[6].ReadOnly = true;
txtNumero.Enabled = false;
dgv1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[3].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[4].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[5].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[6].SortMode = DataGridViewColumnSortMode.NotSortable;
dgv1.Columns[7].SortMode = DataGridViewColumnSortMode.NotSortable;
btnVerificar.Enabled = true;
}
else if (result == DialogResult.Cancel)
{
txtNumero.Text = "";
}
this.Text = result.ToString();
}
else
{
DialogResult ds = MessageBox.Show(this, "LA ORDEN INGRESADA NO SE ENCUENTRA REGISTRADA", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
this.Text = ds.ToString();
}
conexion.Close();
}
}
}
private void txtNumero_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsDigit(e.KeyChar))
e.Handled = false;
else if (char.IsControl(e.KeyChar))
e.Handled = false;
else if (char.IsSeparator(e.KeyChar))
e.Handled = false;
else
e.Handled = true;
}
private void validar_Keypress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
int columna = dgv1.CurrentCell.ColumnIndex;
if (columna == 5)
{
TextBox txt = (TextBox)sender;
if (char.IsDigit(e.KeyChar))
e.Handled = false;
else if (char.IsControl(e.KeyChar))
e.Handled = false;
else if (char.IsSeparator(e.KeyChar))
e.Handled = false;
else
e.Handled = true;
}
}
private void dgv1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox validar = (TextBox)e.Control;
validar.KeyPress += validar_Keypress;
}
private void btnVer_Click(object sender, EventArgs e)
{
UbicacionesVacias u
= new UbicacionesVacias
(); u.Show();
}
private void button4_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show(this, "SEGURO QUE DESEA SALIR?", "SALIR", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
this.Text = result.ToString();
if (result == DialogResult.OK)
{
this.Close();
}
else if (result == DialogResult.Cancel)
{
}
}
private Boolean EsFecha(String fecha)
{
try
{
DateTime.Parse(fecha);
return true;
}
catch
{
return false;
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
conexion.Open();
foreach (DataGridViewRow row in dgv1.Rows)
{
SqlCommand alta1
= new SqlCommand
("insert into Stock values(@codigo,@medicamento,@cantidad,@lote,@vto)", conexion
); alta1.Parameters.AddWithValue("@codigo", row.Cells["Column1"].Value);
}
}
catch
{
}
finally
{
conexion.Close();
}
}
private bool Existe()
{
foreach (IGrouping<object, DataGridViewRow> grupo in dgv1.Rows.Cast<DataGridViewRow>().GroupBy(dr => dr.Cells["Ubicacion"].Value).Where(g => g.Count() > 1))
{
foreach (DataGridViewRow fila in grupo)
{
fila.DefaultCellStyle.ForeColor = Color.Red;
return true;
}
}
return false;
}
private void dgv1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dgv1.Rows[e.RowIndex].ErrorText = String.Empty;
DataGridViewRow row = (DataGridViewRow)dgv1.Rows[e.RowIndex];
int cantidad = Convert.ToInt32(row.Cells["Cantidad"].Value);
int cantidad2 = Convert.ToInt32(row.Cells["Stock"].Value);
if (cantidad2 > cantidad)
{
MessageBox.Show("LA CANTIDAD A INGRESAR SUPERA LA CANTIDAD DE LA ORDEN DE COMPRA", "ATENCION", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
row.Cells["Stock"].Value = "";
row.Cells["Faltante"].Value = "";
}
else
{
row.Cells["Faltante"].Value = cantidad - cantidad2;
}
DataGridViewRow row2 = (DataGridViewRow)dgv1.Rows[e.RowIndex];
string ubicacion=Convert.ToString(row2.Cells["Ubicacion"].Value);
string jerarquia = Convert.ToString(row2.Cells[1].Value);
conexion.Open();
if (ubicacion != "")
{
SqlCommand consulta
= new SqlCommand
("select count (*) from Ubicaciones where codigo=@codigo and jerarquia=@jerarquia ", conexion
); consulta.Parameters.AddWithValue("@codigo", ubicacion);
consulta.Parameters.AddWithValue("@jerarquia", jerarquia);
int count = Convert.ToInt32(consulta.ExecuteScalar());
if (count > 0)
{
}
else
{
MessageBox.Show("NO EXISTE LA UBICACION INGRESADA CONSULTE LAS UBICACIONES DISPONIBLES PARA ESA JERARQUIA CON EL BOTON 'UBICACIONES VACIAS' ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information);
row2.Cells["Ubicacion"].Value = "";
}
}
conexion.Close();
}
private void dgv1_CellValidating_1(object sender, DataGridViewCellValidatingEventArgs e)
{
if (!dgv1.Rows[e.RowIndex].IsNewRow)
{
if (e.ColumnIndex == 4)
{
if (!this.EsFecha(e.FormattedValue.ToString()))
{
dgv1.Rows[e.RowIndex].ErrorText = "EL DATO INTRODUCIDO NO ES UNA FECHA";
e.Cancel = true;
}
}
}
}
private void RegistrarStock_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel=false;
}
private void button1_Click_1(object sender, EventArgs e)
{
int cant = 0;
if (Existe())
MessageBox.Show("INGRESO LA UBICACION MAS DE UNA VEZ", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning);
else
{
MessageBox.Show("NO SE ENCONTRARON UBICACIONES REPETIDAS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
dgv1.DefaultCellStyle.ForeColor = Color.Black;
}
bool incompleto = (from row in dgv1.Rows.Cast<DataGridViewRow>()
from cell in row.Cells.Cast<DataGridViewCell>()
where string.IsNullOrEmpty(cell.Value.ToString())
select row).Any();
if (incompleto)
{
MessageBox.Show("FALTAN COMPLETAR DATOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
MessageBox.Show("DATOS COMPLETOS", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Warning);
cant++;
}
if (cant != 0)
btnGuardar.Enabled = true;
}
}
}