public bool create_reporte_orden_venta(List <OrdenVenta> ordenVentas)
        {
            dsResurtimineto res = new dsResurtimineto();
            crOrdenVenta    cr  = new crOrdenVenta();

            foreach (OrdenVenta item in ordenVentas)
            {
                res.dtOrdenVenta.AdddtOrdenVentaRow(item.WONbr, item.Clave, item.Status, item.OC);
            }

            cr.SetDataSource(res);
            vistaReporte2 view = new vistaReporte2();

            view.crv.ReportSource = cr;
            view.ShowDialog();
            view.BringToFront();

            return(true);
        }
        public bool GetReporte(DateTime fecha1, DateTime fecha2, string id_cliente, MetroProgressBar view_r, CheckedListBox Wonbr, Cursor cursor)
        {
            string consulta   = "";
            string consulta2  = "";
            string fecha      = "DEL " + fecha1.ToString("dd/MMMM/yyyy") + " AL " + fecha2.ToString("dd/MMMM/yyyy");
            string cliente    = "";
            int    contador   = 0;
            int    diasF      = 0;
            int    diasA      = 0;
            int    diasMargen = 0;
            int    dias       = 0;

            dsResurtimineto        res = new dsResurtimineto();
            crSurtimientoEntregado cr  = new crSurtimientoEntregado();

            res.dsGeneral.AdddsGeneralRow(fecha, cliente);
            try
            {
                cursor = Cursors.WaitCursor;
                //ARMAMOS LA CONUSLTA PARA LOS CLIENTES
                if (id_cliente == String.Empty)
                {
                    consulta = "";
                }
                else
                {
                    consulta = "and CustID = '" + id_cliente + "'";
                }
                //ARMAMOS LA CONUSLTA PARA LAS ORDENES DE TRABAJO
                if (Wonbr.CheckedItems.Count > 0)
                {
                    consulta2 = "and (";
                    foreach (string item in Wonbr.CheckedItems)
                    {
                        consulta2 = consulta2 + "WONbr = '" + item + "' OR ";
                    }
                    consulta2 = consulta2.TrimEnd(' ');
                    consulta2 = consulta2.TrimEnd('R');
                    consulta2 = consulta2.TrimEnd('O');
                    consulta2 = consulta2 + ")";
                }

                using (PLMContext db = new PLMContext())
                {
                    var resurtimineto = dbd.RSVW_REPSURTIMIENTOCANTSURTIDAs(fecha1.ToString("yyyy-MM-dd"), fecha2.ToString("yyyy-MM-dd"), consulta, consulta2);
                    //OBTENEMOS LOS DIAS DE ANTICIPACION Y LOS DIAS DE MARGEN
                    try
                    {
                        diasA      = (from x in db.DiasAnticipacion select new { x.DiasA }).FirstOrDefault().DiasA;
                        diasMargen = (from x in db.DiasAnticipacion select new { x.DiasdeMargen }).FirstOrDefault().DiasdeMargen;
                    }
                    catch (Exception e)
                    {
                        diasA = 0;
                    }

                    if (resurtimineto == null)
                    {
                        return(false);
                    }

                    contador       = resurtimineto.Count;
                    view_r.Minimum = 0;
                    view_r.Maximum = contador;

                    foreach (var item in resurtimineto)
                    {
                        view_r.Value = view_r.Value + 1;
                        //OBTENEMOS LOS DIAS FERIADOS
                        diasF = (from x in db.DiasFeriados where x.DiasF >= fecha1 && x.DiasF <= fecha2 && x.Proveedor == item.Proveedor select new { x.id }).Count();

                        DateTime fecha_embarque     = Convert.ToDateTime(item.FechaEmbarque);
                        DateTime fecha_recepcion    = new DateTime();
                        decimal  cantidad_recepcion = 0;
                        if (item.FechaRecepcion != "")
                        {
                            fecha_recepcion = Convert.ToDateTime(item.FechaRecepcion);
                        }
                        if (item.CantidadRecepcion != "")
                        {
                            cantidad_recepcion = Convert.ToDecimal(item.CantidadRecepcion);
                        }

                        res.dsReporte2.AdddsReporte2Row(item.InvtID, "", item.WONbr, item.OrdenVenta, item.Po,
                                                        fecha_embarque.ToString("dd/MMMM/yyyy"),
                                                        fecha_recepcion.ToString("dd/MMMM/yyyy"),
                                                        cantidad_recepcion, item.Proveedor);
                    }
                }

                cr.SetDataSource(res);
                vistaReporte2 view = new vistaReporte2();
                view.crv.ReportSource = cr;
                view.ShowDialog();
                view.BringToFront();

                cursor = Cursors.Default;
                return(true);
            }catch (Exception e)
            {
                return(false);
            }
        }
        public bool GetReporte(DateTime fecha1, DateTime fecha2, string id_cliente, DateTime fecha_r, MetroProgressBar view_r, string c_cliente, CheckedListBox Wonbr, Cursor cursor)
        {
            try
            {
                cursor = Cursors.WaitCursor;
                dsResurtimineto res       = new dsResurtimineto();
                crResurtimineto cr        = new crResurtimineto();
                string          consulta  = "";
                string          consulta2 = "";
                string          fecha     = "DEL " + fecha1.ToString("dd/MMMM/yyyy") + " AL " + fecha2.ToString("dd/MMMM/yyyy");
                string          cliente   = c_cliente.ToUpper();

                int contador   = 0;
                int diasF      = 0;
                int diasA      = 0;
                int diasMargen = 0;
                int dias       = 0;

                List <ot>     ordenes_trabajo = new List <ot>();
                List <string> vs = new List <string>();

                res.dsGeneral.AdddsGeneralRow(fecha, cliente);

                if (id_cliente == String.Empty)
                {
                    consulta = "";
                }
                else
                {
                    consulta = "AND SOHeader.CustID = '" + id_cliente + "'";
                }

                if (Wonbr.CheckedItems.Count > 0)
                {
                    consulta2 = "and (";
                    foreach (string item in Wonbr.CheckedItems)
                    {
                        consulta2 = consulta2 + "A.WONbr = '" + item + "' OR ";
                    }
                    consulta2 = consulta2.TrimEnd(' ');
                    consulta2 = consulta2.TrimEnd('R');
                    consulta2 = consulta2.TrimEnd('O');
                    consulta2 = consulta2 + ")";
                }

                using (PLMContext db = new PLMContext())
                {
                    var resurtimineto = dbd.Reporte1(fecha1.ToString("yyyy-MM-dd"), fecha2.ToString("yyyy-MM-dd"), consulta, consulta2);
                    try
                    {
                        diasA      = (from x in db.DiasAnticipacion select new { x.DiasA }).FirstOrDefault().DiasA;
                        diasMargen = (from x in db.DiasAnticipacion select new { x.DiasdeMargen }).FirstOrDefault().DiasdeMargen;
                    }
                    catch (Exception e)
                    {
                        diasA = 0;
                    }

                    if (resurtimineto != null)
                    {
                        contador       = resurtimineto.Count;
                        view_r.Minimum = 0;
                        view_r.Maximum = contador;

                        foreach (var item in resurtimineto)
                        {
                            view_r.Value = view_r.Value + 1;
                            try
                            {
                                ot orden = new ot();
                                diasF = (from x in db.DiasFeriados where x.DiasF >= fecha1 && x.DiasF <= fecha2 && x.Proveedor == item.proveedor select new { x.id }).Count();

                                DateTime fecha_ent      = fecha_r.AddDays(Convert.ToInt64(item.tiempo_entrega));
                                DateTime fecha_proy     = Convert.ToDateTime(item.fecha_embarque);
                                DateTime fecha_embarque = Convert.ToDateTime(item.fecha_embarque);

                                dias       = (diasA + diasMargen) * -1;
                                fecha_proy = fecha_proy.AddDays(dias);

                                fecha_ent = fecha_ent.AddDays(diasF);

                                TimeSpan timeSpan = fecha_proy - fecha_ent;

                                orden.OT      = item.ot;
                                orden.PO      = item.po;
                                orden.CantFab = item.cant_fabr;
                                vs.Add(item.po);
                                ordenes_trabajo.Add(orden);

                                res.dsReporte.AdddsReporteRow(item.clave, item.descripcion, Convert.ToDecimal(item.cant_ord), item.ot, item.tipo_material, Convert.ToDecimal(item.existencia)
                                                              , item.unidad_compra, item.orden_venta, item.po, Convert.ToDecimal(item.adicional), Convert.ToDecimal(item.cantidad_ordenes_venta), item.cod_proveedor, item.desc_proveedor, item.proveedor,
                                                              item.tiempo_entrega, fecha_proy.ToString("dd/MM/yyyy"), item.cliente_id, fecha_r.ToString("dd/MM/yyyy"), fecha_ent.ToString("dd/MM/yyyy"), timeSpan.Days, fecha_embarque.ToString("dd/MM/yyyy"));
                            }
                            catch (Exception e)
                            {
                            }
                        }

                        var     aux2 = vs.Distinct().ToList();
                        string  c    = "";
                        decimal suma = 0;

                        foreach (var item in aux2)
                        {
                            c    = "";
                            suma = 0;
                            var concat = (from x in ordenes_trabajo where x.PO == item select new { x.OT, x.CantFab }).Distinct().ToList();
                            foreach (var item2 in concat)
                            {
                                c    = c + " , " + item2.OT;
                                suma = suma + Convert.ToDecimal(item2.CantFab);
                            }

                            c = c.Substring(2);
                            res.dsOT.AdddsOTRow(item, c, suma);
                        }

                        cursor = Cursors.Default;
                        //cr.Load(Path.GetFullPath("crResurtimineto.rpt"));
                        cr.SetDataSource(res);
                        vistaReporte2 view = new vistaReporte2();
                        view.crv.ReportSource = cr;
                        view.ShowDialog();
                        view.BringToFront();

                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }
        }