private void EmitirInformeOrdenTrabajo_Load(object sender, EventArgs e)
        {
            try

            {
                DataTable tabla = OrdenDeTrabajoDAO.GetByFiltrosInforme(null, null);

                if (tabla.Rows.Count > 0)
                {
                    OrdenTrabajoBindingSource.DataSource = tabla;

                    this.reportViewer1.LocalReport.SetParameters(new ReportParameter("desde", "01/01/1900"));
                    this.reportViewer1.LocalReport.SetParameters(new ReportParameter("hasta", "01/01/1900"));
                    this.reportViewer1.RefreshReport();
                }
                else
                {
                    MessageBox.Show("No hay datos disponibles", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                }
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
        private void cargarGrilla()
        {
            try
            {
                List <OrdenDeTrabajo> oTPadres = OrdenDeTrabajoDAO.GetAllOTPadre();


                dgv_OTproductosPadres.Rows.Clear();
                foreach (OrdenDeTrabajo ot in oTPadres)
                {
                    int fila = dgv_OTproductosPadres.Rows.Add(ot.idOrdenTrabajo, ot.fechaCreacion.ToShortDateString(), ot.horaInicio.ToShortTimeString(), ot.horaFin.ToShortTimeString(), ot.producto.idProducto, ot.producto.Nombre, ot.cantidad, ot.cantidadReal, ot.producto.Unidad.Nombre, ot.estado.idEstado, ot.estado.Nombre, ot.idPlan, ot.maquinaria.idMaquinaria, ot.maquinaria.Nombre, ot.empleado.idEmpleado, ot.empleado.Nombre + " " + ot.empleado.Apellido);
                    if (ot.estado.idEstado == 19)
                    {
                        dgv_OTproductosPadres.Rows[fila].DefaultCellStyle.BackColor = Color.LightSalmon;
                    }
                    if (ot.estado.idEstado == 20)
                    {
                        dgv_OTproductosPadres.Rows[fila].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                }
                dgv_OTproductosPadres.ClearSelection();
            }

            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
        private void cargarGrillaOTHijo(int idProd, DateTime fecha, int idPlan)
        {
            try
            {
                List <OrdenDeTrabajo> OThijos = OrdenDeTrabajoDAO.GetAllOTHija(idProd, fecha, idPlan);

                dgv_OTproductosHijos.Rows.Clear();
                foreach (OrdenDeTrabajo oth in OThijos)
                {
                    int fila = dgv_OTproductosHijos.Rows.Add(oth.idOrdenTrabajo, oth.fechaCreacion.ToShortDateString(), oth.horaInicio.ToShortTimeString(), oth.horaFin.ToShortTimeString(), oth.productoIntermedio.idProducto, oth.productoIntermedio.Nombre, oth.cantidad, oth.cantidadReal, oth.productoIntermedio.Unidad.Nombre, oth.estado.Nombre, oth.maquinaria.idMaquinaria, oth.maquinaria.Nombre, oth.empleado.idEmpleado, oth.empleado.Nombre + " " + oth.empleado.Apellido, oth.estado.idEstado);
                    if (oth.estado.idEstado == 19)
                    {
                        dgv_OTproductosHijos.Rows[fila].DefaultCellStyle.BackColor = Color.LightSalmon;
                    }
                    if (oth.estado.idEstado == 20)
                    {
                        dgv_OTproductosHijos.Rows[fila].DefaultCellStyle.BackColor = Color.LightGreen;
                    }
                }
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
        private void btn_guardar_Click(object sender, EventArgs e)
        {
            if (_estado == estados.nuevo && validarDatos() == termino.aprobado)
            {
                OrdenDeTrabajo orden = new OrdenDeTrabajo()
                {
                    fechaPlan = infoPlan.fechaProduccion,
                    estado    = new Estado()
                    {
                        idEstado = 19
                    },
                    idPlan   = infoPlan.idPlan,
                    producto = new Producto()
                    {
                        idProducto = infoPlan.producto.idProducto
                    },
                    horaInicio = Convert.ToDateTime(txt_inicio.Text),
                    horaFin    = Convert.ToDateTime(txt_fin.Text),
                    maquinaria = new Maquinaria()
                    {
                        idMaquinaria = (int)cmb_maquinaria.SelectedValue
                    },
                    empleado = new Empleado()
                    {
                        idEmpleado = (int)cmb_empleado.SelectedValue
                    },
                    fechaCreacion = dtp_creacion_OT.Value.Date,
                    cantidad      = (float)Convert.ToDouble(lbl_cant.Text),
                };
                try
                {
                    OrdenDeTrabajoDAO.InsertPadre(orden, ordenhija);
                }
                catch (ApplicationException ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }

                MessageBox.Show("Registrado con Exito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                bloquear                  = false;
                btn_guardar.Enabled       = false;
                btn_cargar_combos.Enabled = false;
                txt_inicio.Enabled        = false;
                limpiar();
                _estado = estados.guardado;
            }
            else
            {
            }

            btn_salir_consulta_Click(sender, e);
        }
 private void Emitir_Orden_De_Trabajo_Load(object sender, EventArgs e)
 {
     if (reporte == reporteOT.intermedio)
     {
         OrdenDeTrabajoIntermediasBindingSource.DataSource = OrdenDeTrabajoDAO.GetAllEmitir(orden.producto.idProducto, orden.fechaCreacion, orden.idPlan);
         this.reportViewer1.RefreshReport();
     }
     if (reporte == reporteOT.final)
     {
         OrdenDeTrabajoIntermediasBindingSource.DataSource = OrdenDeTrabajoDAO.GetAllEmitirFinal(orden.producto.idProducto, orden.fechaCreacion, orden.idPlan);
         this.reportViewer1.RefreshReport();
     }
 }
        private void btn_aplicar_filtro_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable tabla = OrdenDeTrabajoDAO.GetByFiltrosInforme(dtp_fecha_desde.Value.Date, dtp_fecha_hasta.Value.Date);

                if (tabla.Rows.Count > 0)
                {
                    OrdenTrabajoBindingSource.DataSource = tabla;

                    string filtro = "1=1";

                    if (rbt_todos.Checked == true)
                    {
                        filtro += "";
                    }
                    if (rbt_conDiferencias.Checked == true)
                    {
                        filtro += " and cantidad <> cantidadProducidaReal";
                    }

                    if (rbt_sinDif.Checked == true)
                    {
                        filtro += "and cantidad = cantidadProducidaReal";
                    }
                    if (txt_productos.Text != String.Empty)
                    {
                        filtro += " and (nombreIntermedio like '" + txt_productos.Text + "%' or nombreFinal like '" + txt_productos.Text + "%')";
                    }
                    if (txt_desc.Text != String.Empty)
                    {
                        filtro += " and ([observaciones] like '%" + txt_desc.Text + "%')";
                    }


                    OrdenTrabajoBindingSource.Filter = filtro;
                    this.reportViewer1.LocalReport.SetParameters(new ReportParameter("desde", dtp_fecha_desde.Value.Date.ToString()));
                    this.reportViewer1.LocalReport.SetParameters(new ReportParameter("hasta", dtp_fecha_hasta.Value.Date.ToString()));
                    this.reportViewer1.RefreshReport();
                }
                else
                {
                    MessageBox.Show("No hay datos disponibles", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                }
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
        }
        private void btn_Actualizar_OTPadre_Click(object sender, EventArgs e)
        {
            try
            {
                if (txt_cantidad_real.Text == "")
                {
                    MessageBox.Show("Complete el campo\"Cantidad real producida\" antes de confirmar", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    txt_cantidad_real.Focus();
                    return;
                }

                List <DetalleProducto> productos = new List <DetalleProducto>();
                for (int i = 0; i < DGV_detalle_Productos.RowCount; i++)
                {
                    DetalleProducto p = new DetalleProducto();
                    p.idProducto        = int.Parse(DGV_detalle_Productos.Rows[i].Cells["nroProducto"].Value.ToString());
                    p.cantidad          = double.Parse(DGV_detalle_Productos.Rows[i].Cells["cantidadReal"].Value.ToString());
                    p.cantidadProductos = double.Parse(DGV_detalle_Productos.Rows[i].Cells["cantidadPlanificada"].Value.ToString());
                    productos.Add(p);
                }
                orden.cantidadReal  = double.Parse(txt_cantidad_real.Text);
                orden.observaciones = txt_observaciones.Text;
                cantidadPlan        = orden.cantidadReal - cantidadPedido;
                OrdenDeTrabajoDAO.finalizarOTPadre(orden, cantidadPedido, cantidadPlan, productos);
                Estado est = new Estado();
                est.Nombre   = "LISTO";
                orden.estado = est;
                Close();
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Ingrese solo números", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }