private void Tabla_detOC2()
        {
            Decimal xxprecventa = 0, xxcostoultimo = 0, xxstock = 0, xxcostopromed = 0;
            griddetallemov.AutoGenerateColumns = false;

            var BL = new tb_cm_ordendecompradetBL();
            var BE = new tb_cm_ordendecompradet();
            var dt = new DataTable();

            BE.moduloid = "0100";
            BE.local = "001";
            BE.tipodoc = tipref.SelectedValue.ToString();
            BE.serdoc = serref.Text.Trim();
            BE.numdoc = numdococ1.Text.Trim() + numdococ.Text.Trim();

            dt = BL.GetAll2(EmpresaID, BE).Tables[0];

            if (dt.Rows.Count > 0)
            {
                foreach (DataRow fila in dt.Rows)
                {
                    var BL2 = new tb_60local_stockBL();
                    var BE2 = new tb_60local_stock();
                    var dt2 = new DataTable();

                    BE2.moduloid = modulo;
                    BE2.productid = fila["productid"].ToString();

                    dt2 = BL2.GetAll(EmpresaID, BE2).Tables[0];

                    if (dt2.Rows.Count > 0)
                    {
                        if (almacaccionid.Trim() == "20" || almacaccionid.Trim() == "21")
                        {
                            lbl_valor.Text = "Cost.Prom";
                            xxprecventa = Convert.ToDecimal(dt2.Rows[0]["precventa"]);
                            xxcostopromed = Convert.ToDecimal(dt2.Rows[0]["costopromed"]);
                        }
                        else
                        {
                            if (almacaccionid.Trim() == "10" || almacaccionid.Trim() == "11")
                            {
                                lbl_valor.Text = "Cost.Ultm";
                                xxcostoultimo = Convert.ToDecimal(dt2.Rows[0]["costoultimo"]);
                            }
                        }
                        xxstock = Convert.ToDecimal(dt2.Rows[0]["stock"]);
                    }

                    tipoperacionid.Text = "COMPRA";
                    row = Tabladetallemov.NewRow();
                    row["itemref"] = fila["itemref"].ToString();
                    row["items"] = fila["items"].ToString();
                    row["productid"] = fila["productid"].ToString().Trim();
                    row["productname"] = fila["productname"].ToString().Trim();

                    var cantidad_c = Math.Round(Convert.ToDecimal(fila["cantidad_c"]), 4);
                    var cantidadcta_c = Math.Round(Convert.ToDecimal(fila["cantidadcta_c"]), 4);

                    if (tipref.SelectedIndex != -1)
                    {
                        var stock_old = Math.Round(Convert.ToDecimal(fila["cantidad_c"]), 4);
                        var total = cantidad_c - cantidadcta_c;
                        row["stock_old"] = total;
                        row["stock"] = stock_old - total;
                    }
                    else
                    {
                        row["stock"] = xxstock;
                        row["stock_old"] = xxstock;
                    }

                    row["precventa"] = xxprecventa;
                    row["costoultimo"] = xxcostoultimo;
                    row["costopromed"] = xxcostopromed;

                    Decimal saldo;
                    saldo = cantidad_c - cantidadcta_c;
                    row["cantidad"] = saldo;
                    row["cantidad_old"] = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                    row["precunit"] = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit_c"]).ToString("###,###,##0.000000")), 6);
                    var precunit = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit_c"]).ToString("###,###,##0.000000")), 6);
                    Decimal importe;
                    importe = cantidad_c * precunit;

                    row["importfac"] = importe;
                    row["valor"] = Math.Round(Convert.ToDecimal(fila["valor"]), 6);
                    row["importe"] = Math.Round(Convert.ToDecimal(fila["importe"]), 6);
                    row["totimpto"] = Math.Round(Math.Round(Convert.ToDecimal(fila["importe"]), 6) * (Convert.ToDecimal(18) / 100), 6);
                    row["almacaccionid"] = almacaccionid.Trim();
                    Tabladetallemov.Rows.Add(row);
                    griddetallemov.DataSource = Tabladetallemov;
                }
                _RecalculoGrid();
            }
            else
            {
                MessageBox.Show("    !!!... Informacion de la Orden ...!!! \n" +
                                "\n » La Orden Todabia no ha Sido Generada " +
                                "\n » O la Orden esta Generada en Otra Guia " +
                                "\n\n »» Verifica Tus Ordenes Pendientes  ", "Localizando Orden", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                tipref.Enabled = true;
                tipref.SelectedIndex = -1;
                tipref.Enabled = true;
                numdococ1.Text = "2014";
                numdococ.Text = string.Empty;
                return;
            }
        }
        private DataTable Orden_Pendiente()
        {
            try
            {
                var Ord_pendiente = new DataTable("Ord_pendiente");

                var BL = new tb_cm_ordendecompradetBL();
                var BE = new tb_cm_ordendecompradet();
                BE.moduloiddes = moduloiddies;
                BE.perianio = perianio;
                BE.perimesini = perimesini;
                BE.perimesfin = perimesfin;
                BE.grupoid = grupoid;
                BE.productid = productid;
                BE.pendiente =  pendiente;
                BE.igv = igv;
                Ord_pendiente = BL.GetAll_ordendeCompra(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                if (Ord_pendiente.Rows.Count == 0)
                {
                    MessageBox.Show("No existe Información Procesada", "Mensaje del Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                return Ord_pendiente;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private DataSet listado_almacen()
        {
            try
            {
                var ds_listado_almacen = new DataSet();
                var BL = new tb_cm_ordendecompradetBL();
                var BE = new tb_cm_ordendecompradet();
                var dt = new DataSet();
                BE.moduloiddes = moduloiddies.Trim();
                BE.perianio = perianio.Trim();
                BE.perimesini = perimesini.Trim();
                BE.perimesfin = perimesfin.Trim();
                BE.grupoid = grupoid.Trim();
                BE.pendiente = string.Empty;
                BE.status = " ";
                ds_listado_almacen = BL.GetAll_ordendeCompra(VariablesPublicas.EmpresaID.ToString(), BE);
                if (ds_listado_almacen != null)
                {
                    foreach (DataTable tabla in ds_listado_almacen.Tables)
                    {
                        var _tabla = new DataTable();

                        if (tabla == ds_listado_almacen.Tables[0])
                        {
                            _tabla = ds_listado_almacen.Tables[0].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[1])
                        {
                            _tabla = ds_listado_almacen.Tables[1].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[2])
                        {
                            _tabla = ds_listado_almacen.Tables[2].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[3])
                        {
                            _tabla = ds_listado_almacen.Tables[3].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[5])
                        {
                            _tabla = ds_listado_almacen.Tables[5].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[6])
                        {
                            _tabla = ds_listado_almacen.Tables[6].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[7])
                        {
                            _tabla = ds_listado_almacen.Tables[7].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[8])
                        {
                            _tabla = ds_listado_almacen.Tables[8].Copy();
                        }
                        if (tabla == ds_listado_almacen.Tables[9])
                        {
                            _tabla = ds_listado_almacen.Tables[9].Copy();
                        }
                        dt.Tables.Add(_tabla);
                    }
                }
                else
                {
                    return null;
                }

                return ds_listado_almacen;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void listado_almacenes()
        {
            var listadoAlmacen = new CR_listado_almacen();
            var ds_listado_almacen = new DataSet();
            var nombrealmacen = new List<String>();
            var BL = new tb_cm_ordendecompradetBL();
            var BE = new tb_cm_ordendecompradet();
            BE.moduloiddes = moduloiddies.Trim();
            BE.perianio = perianio.Trim();
            BE.perimesini = perimesini.Trim();
            BE.perimesfin = perimesfin.Trim();
            BE.grupoid = grupoid.Trim();
            BE.pendiente = string.Empty;
            BE.status = " ";
            BE.igv = igv;

            ds_listado_almacen = BL.GetAll_ordendeCompra(VariablesPublicas.EmpresaID.ToString(), BE);
            if (ds_listado_almacen != null)
            {
                listadoAlmacen.OpenSubreport("ALMACEN DE TELAS").SetDataSource(ds_listado_almacen.Tables[0]);
                listadoAlmacen.OpenSubreport("ALMACEN DE AVIOS").SetDataSource(ds_listado_almacen.Tables[1]);
                listadoAlmacen.OpenSubreport("ALMACEN DE ESTAMPADOS ").SetDataSource(ds_listado_almacen.Tables[2]);
                listadoAlmacen.OpenSubreport("ALMACEN DE BORDADO").SetDataSource(ds_listado_almacen.Tables[3]);
                listadoAlmacen.OpenSubreport("ALMACEN DE CORREAS").SetDataSource(ds_listado_almacen.Tables[4]);
                listadoAlmacen.OpenSubreport("ALMACEN DE INSUMOS QUIMICOS").SetDataSource(ds_listado_almacen.Tables[5]);
                listadoAlmacen.OpenSubreport("MAQ Y REP SISTEMAS").SetDataSource(ds_listado_almacen.Tables[6]);
                listadoAlmacen.OpenSubreport("MAQ Y REP ELECTRICOS").SetDataSource(ds_listado_almacen.Tables[7]);
                listadoAlmacen.OpenSubreport("MAQ Y REP COSTURA").SetDataSource(ds_listado_almacen.Tables[8]);
                listadoAlmacen.OpenSubreport("ALMACEN DE VARIOS").SetDataSource(ds_listado_almacen.Tables[9]);
                nombrealmacen.Add("ALMACEN DE TELAS");
                nombrealmacen.Add("ALMACEN DE AVIOS");
                nombrealmacen.Add("ALMACEN DE ESTAMPADOS ");
                nombrealmacen.Add("ALMACEN DE BORDADO");
                nombrealmacen.Add("ALMACEN DE CORREAS");
                nombrealmacen.Add("ALMACEN DE INSUMOS QUIMICOS");
                nombrealmacen.Add("MAQ Y REP SISTEMAS");
                nombrealmacen.Add("MAQ Y REP ELECTRICOS");
                nombrealmacen.Add("MAQ Y REP COSTURA");
                nombrealmacen.Add("ALMACEN DE VARIOS");

                foreach (String almacen in nombrealmacen)
                {
                    listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["empresaname"].Text = "'EMPRESA: " + VariablesPublicas.EmpresaName.Trim() + "'";
                    listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["empresaruc"].Text = "'RUC: " + VariablesPublicas.EmpresaRuc.Trim() + "'";
                    listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["anio"].Text = "'" + perianio.Trim() + "'";
                    listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["inicio"].Text = "'" + VariablesPublicas.N_PrimerMes1.Trim() + "'";
                    listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["fin"].Text = "'" + VariablesPublicas.N_FinMes1.Trim() + "'";
                    if (igv == "0")
                    {
                        listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["nameigv"].Text = "'No Incluye IGV'";
                    }
                    else
                    {
                        listadoAlmacen.OpenSubreport(almacen).DataDefinition.FormulaFields["nameigv"].Text = "'Incluye  IGV'";
                    }
                }

                crystalReportViewer1.ReportSource = listadoAlmacen;
                crystalReportViewer1.Show();
                formulario = "otro";
            }
            else
            {
                MessageBox.Show("Informacion no encontrada", "Mensaje del Sistema");
            }
        }
        private void Tabla_detOC2()
        {
            Decimal xxprecventa = 0, xxcostoultimo = 0, xxstock = 0, xxcostopromed = 0;
            griddetallemov.AutoGenerateColumns = false;

            tb_cm_ordendecompradetBL BL = new tb_cm_ordendecompradetBL();
            tb_cm_ordendecompradet BE = new tb_cm_ordendecompradet();
            DataTable dt = new DataTable();

            BE.moduloid = "0100";
            BE.local = "001";
            BE.tipodoc = tipref.SelectedValue.ToString();
            BE.serdoc = serref.Text.Trim();   // Vendria Ser el Modulo de Cada Almacen
            BE.numdoc = numdococ1.Text.Trim() + numdococ.Text.Trim();  // Correlativo de Cada Orden de Compra

            Tabladetallemov = BL.GetAll2(EmpresaID, BE).Tables[0];

            if (Tabladetallemov.Rows.Count > 0)
            {
                if (local == Tabladetallemov.Rows[0]["localdes"].ToString().Trim())
                {
                    #region *** Bloqueo Temporal

                    //foreach (DataRow fila in dt.Rows)
                    //{
                    //    tb_60local_stockBL BL2 = new tb_60local_stockBL();
                    //    tb_60local_stock BE2 = new tb_60local_stock();
                    //    DataTable dt2 = new DataTable();

                    //    BE2.moduloid = modulo;
                    //    BE2.productid = fila["productid"].ToString();

                    //    dt2 = BL2.GetAll(EmpresaID, BE2).Tables[0];

                    //    if (dt2.Rows.Count > 0)
                    //    {
                    //        if (almacaccionid.Trim() == "20" || almacaccionid.Trim() == "21")
                    //        {
                    //            lbl_valor.Text = "Cost.Prom";
                    //            xxprecventa = Convert.ToDecimal(dt2.Rows[0]["precventa"]);
                    //            xxcostopromed = Convert.ToDecimal(dt2.Rows[0]["costopromed"]);

                    //        }
                    //        else if (almacaccionid.Trim() == "10" || almacaccionid.Trim() == "11")
                    //        {
                    //            lbl_valor.Text = "Cost.Ultm";
                    //            xxcostoultimo = Convert.ToDecimal(dt2.Rows[0]["costoultimo"]);
                    //        }

                    //        xxstock = Convert.ToDecimal(dt2.Rows[0]["stock"]);
                    //    }

                    //    tipoperacionid.Text = "COMPRA";
                    //    row = Tabladetallemov.NewRow();
                    //    row["itemref"] = fila["itemref"].ToString();
                    //    row["items"] = fila["items"].ToString();
                    //    row["productid"] = fila["productid"].ToString().Trim();
                    //    row["productname"] = fila["productname"].ToString().Trim();
                    //    //row["rollo"] = fila["rollo"].ToString();

                    //    Decimal cantidad_c = Math.Round(Convert.ToDecimal(fila["cantidad_c"]), 4);
                    //    Decimal cantidadcta_c = Math.Round(Convert.ToDecimal(fila["cantidadcta_c"]), 4);

                    //    if (tipref.SelectedIndex != -1)
                    //    {
                    //        Decimal stock_old = Math.Round(Convert.ToDecimal(fila["cantidad_c"]), 4);
                    //        Decimal total = cantidad_c - cantidadcta_c;
                    //        row["stock_old"] = total;
                    //        row["stock"] = stock_old - total;
                    //    }
                    //    else
                    //    {
                    //        row["stock"] = xxstock;
                    //        row["stock_old"] = xxstock;
                    //    }

                    //    row["precventa"] = xxprecventa;
                    //    row["costoultimo"] = xxcostoultimo;
                    //    row["costopromed"] = xxcostopromed;

                    //    Decimal saldo;
                    //    saldo = cantidad_c - cantidadcta_c;
                    //    row["cantidad"] = saldo;
                    //    row["cantidad_old"] = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                    //    row["precunit"] = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit_c"]).ToString("###,###,##0.000000")), 6);
                    //    Decimal precunit = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit_c"]).ToString("###,###,##0.000000")), 6);
                    //    Decimal importe;
                    //    importe = cantidad_c * precunit;

                    //    row["importfac"] = importe;
                    //    row["valor"] = Math.Round(Convert.ToDecimal(fila["valor"]), 6);
                    //    row["importe"] = Math.Round(Convert.ToDecimal(fila["importe"]), 6);
                    //    row["totimpto"] = Math.Round(Math.Round(Convert.ToDecimal(fila["importe"]), 6) * (Convert.ToDecimal(18) / 100), 6);
                    //    row["almacaccionid"] = almacaccionid.Trim();
                    //    //row["ubicacion"] = fila["ubicacion"].ToString().Trim();
                    //    Tabladetallemov.Rows.Add(row);
                    //}
                    #endregion

                    griddetallemov.DataSource = Tabladetallemov;
                    //_RecalculoGrid();
                    calcular_totales();
                }
                else
                {
                    MessageBox.Show("    !!!... Informacion de la Orden ...!!! \n" +
                                    "\n » La Orden Todabia no ha Sido Generada " +
                                    "\n » O la Orden esta Generada en Otra Guia " +
                                    "\n\n »» Verifica Tus Ordenes Pendientes  ", "Localizando Orden", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    tipref.Enabled = true;
                    tipref.SelectedIndex = -1;
                    tipref.Enabled = true;
                    numdococ1.Text = Convert.ToString(DateTime.Today.Year);
                    numdococ.Text = "";
                    return;
                }
            }
        }