private DataTable Movimiento_productostock(bool porlocal)
        {
            var TablaProductostock = new DataTable("Productostock");
            try
            {
                var BL = new tb_me_local_stockBL();
                var BE = new tb_me_local_stock();

                BE.moduloid = moduloid.Trim();
                BE.local = local.Trim();
                BE.lineaid = lineaid;
                BE.grupoid = grupoid;
                BE.subgrupoid = subgrupoid;
                BE.productid = productid;
                BE.colorid = colorid;
                BE.status = status;
                BE.productidold = productidold;
                if (porlocal)
                {
                    TablaProductostock = BL.GetAll_productostockxlocal(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                }
                else
                {
                    TablaProductostock = BL.GetAll_productostock(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                }

                if (TablaProductostock != null)
                {
                    return TablaProductostock;
                }
                else
                {
                    return TablaProductostock;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 private void btn_process_Click(object sender, EventArgs e)
 {
     fech_ini.Text = DateTime.Now.ToLongTimeString();
     var BL = new tb_me_local_stockBL();
     var BE = new tb_me_local_stock();
     BE.moduloid = modulo;
     BE.local = local;
     BE.perianio = perianio;
     BE.perimes = perimes;
     BE.grabacp = "S";
     try
     {
         if (BL.ReorgAnioMes(VariablesPublicas.EmpresaID.ToString(), BE))
         {
             fech_fin.Text = DateTime.Now.ToLongTimeString();
             MessageBox.Show("Proceso terminado Correctamente", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
         else
         {
             MessageBox.Show("Contactese con Sistema !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        private DataTable Lista_tomainventario()
        {
            var TablaProductostock = new DataTable("Productostock");
            try
            {
                var BL = new tb_me_local_stockBL();
                var BE = new tb_me_local_stock();

                BE.moduloid = moduloid.Trim();
                BE.local = local.Trim();
                BE.lineaid = lineaid;
                BE.status = status;

                TablaProductostock = BL.GetAll_productostock(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                if (TablaProductostock != null)
                {
                    return TablaProductostock;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        private void btn_busqueda_Click(object sender, EventArgs e)
        {
            DataTable TablaProductostock = new DataTable("Productostock");
            try
            {
                tb_me_local_stockBL BL = new tb_me_local_stockBL();
                tb_me_local_stock BE = new tb_me_local_stock();

                BE.moduloid = modulo.Trim();
                BE.local = local.Trim();
                BE.lineaid = lineaid.Text.Trim();
                BE.grupoid = grupoid.Text.Trim();
                BE.subgrupoid = subgrupoid.Text.Trim();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void btn_busqueda_Click(object sender, EventArgs e)
        {
            var TablaProductostock = new DataTable("Productostock");
            try
            {
                var BL = new tb_me_local_stockBL();
                var BE = new tb_me_local_stock();

                BE.moduloid = modulo.Trim();
                BE.local = local.Trim();
                BE.lineaid = lineaid.Text.Trim();
                BE.grupoid = grupoid.Text.Trim();
                BE.subgrupoid = subgrupoid.Text.Trim();
                BE.productid = productid.Text.Trim();
                BE.colorid = colorid.Text.Trim();
                BE.status = chkTodos.Checked ? "1" : "0";

                TablaProductostock = BL.GetAll_productostock(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                if (TablaProductostock != null)
                {
                    Examinar3.DataSource = TablaProductostock;
                    Examinar3.RefreshDataSource();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void btn_actualizar_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow fila in griddetallemov.Rows)
            {
                String xproductid = griddetallemov.Rows[fila.Index].Cells["productid"].Value.ToString();
                if (xproductid.Trim().Length == 13)
                {
                    tb_me_local_stockBL BL = new tb_me_local_stockBL();
                    tb_me_local_stock BE = new tb_me_local_stock();
                    DataTable DT = new DataTable();

                    BE.moduloid = modulo;
                    BE.productid = xproductid;

                    DT = BL.GetAll(EmpresaID, BE).Tables[0];

                    if (DT.Rows.Count > 0)
                    {
                        griddetallemov.Rows[fila.Index].Cells["productname"].Value = DT.Rows[0]["productname"].ToString().Trim();
                    }
                    else
                    {
                        MessageBox.Show("Producto no existe !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Producto no existe !!! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private void Valida_DetDoc()
        {
            _cal_Igv();

            Decimal xxprecventa = 0, xxcostoultimo = 0, xxstock = 0, xxcostopromed = 0;
            griddetallemov.AutoGenerateColumns = false;

            tb_me_movimientosdetBL BL = new tb_me_movimientosdetBL();
            tb_me_movimientosdet BE = new tb_me_movimientosdet();

            DataTable dt = new DataTable();

            BE.moduloid = modulo;
            BE.local = local;
            BE.tipodoc = tipfac.Text.ToString();
            BE.serdoc = serfac.Text.Trim();
            BE.numdoc = numfac.Text.ToString();

            dt = BL.GetAll(EmpresaID, BE).Tables[0];
            try
            {
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow fila in dt.Rows)
                    {
                        tb_me_local_stockBL BL2 = new tb_me_local_stockBL();
                        tb_me_local_stock BE2 = new tb_me_local_stock();
                        DataTable dt2 = new DataTable();

                        BE2.moduloid = modulo;
                        BE2.local = local;
                        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"]);
                            if (xxstock == 0)
                            { xxstock = Convert.ToDecimal(dt2.Rows[0]["stockini"]); }
                        }

                        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();

                        Decimal cantidad = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                        row["stock"] = xxstock;
                        row["precventa"] = xxprecventa;
                        row["costoultimo"] = xxcostoultimo;
                        row["costopromed"] = xxcostopromed;

                        row["cantidad"] = cantidad;
                        row["cantidad_old"] = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                        row["precunit"] = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit"]).ToString("###,###,##0.000000")), 6);
                        Decimal precunit = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit"]).ToString("###,###,##0.000000")), 6);
                        Decimal importe;
                        importe = cantidad * 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(igv) / 100), 6);
                        row["almacaccionid"] = almacaccionid.Trim();

                        Tabladetallemov.Rows.Add(row);
                        griddetallemov.DataSource = Tabladetallemov;
                    }
                    _RecalculoGrid();
                }
                else
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void ValidaTabladetallemovmov(String valproductid)
        {
            String xproductid = "";
            //xprecio == valor
            Decimal xprecio = 0, xprecunit = 0, xcantidad = 0, xcostoprom = 0, tipcamb = 0,
                desct1 = 0, imporfac = 0, import = 0, totimpx = 0;

            xproductid = valproductid.Trim();

            //DataRow[] rowproductid = Tabladetallemov.Select("productid='" + xproductid + "'");
            //if (rowproductid.Length > 0)
            //{
            //    MessageBox.Show("Producto ya existe !!!!!!!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    return;
            //}

            griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["productname"].Value = "";
            txt_stock.Text = "0";
            txt_valor.Text = "0";
            //griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value = "0";
            griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["precunit"].Value = "0";
            griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["importfac"].Value = "0";
            // griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["nostock"].Value = 0;

            if (xproductid.Trim().Length == 13)
            {
                tb_me_local_stockBL BL = new tb_me_local_stockBL();
                tb_me_local_stock BE = new tb_me_local_stock();
                DataTable DT = new DataTable();
                BE.moduloid = modulo;
                BE.local = local;
                BE.productid = xproductid;

                DT = BL.GetAll(EmpresaID, BE).Tables[0];

                if (DT.Rows.Count > 0)
                {
                    //foreach (DataGridViewRow fila in griddetallemov.Rows)
                    //{
                    //foreach (DataGridViewColumn col in griddetallemov.Columns)
                    //{
                    //    if (griddetallemov.Rows[col.Index].Cells["productid"].Value.ToString().ToUpper() == valproductid.ToUpper())
                    //    {
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["productid"].Value = DT.Rows[0]["productid"].ToString().Trim();
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["productname"].Value = DT.Rows[0]["productname"].ToString().Trim();
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["unmed"].Value = DT.Rows[0]["unmed"].ToString().Trim();
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["rollo"].Value = "";

                    Decimal lsStock = 0, dtCantidad = 0, mvCantidad = 0, dtstock = 0;

                    lsStock = Convert.ToDecimal(DT.Rows[0]["stock"].ToString().Trim().PadLeft(1, '0'));
                    dtCantidad = Convert.ToDecimal(griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value);
                    mvCantidad = Convert.ToDecimal(griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad_old"].Value);

                    if (almacaccionid.Substring(0, 1) == "1")
                    {
                        dtstock = lsStock + dtCantidad - mvCantidad;
                    }
                    else if (almacaccionid.Substring(0, 1) == "2")
                    {
                        dtstock = lsStock - dtCantidad + mvCantidad;
                    }

                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["stock_old"].Value = lsStock;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["stock"].Value = dtstock;

                    //griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["stock"].Value = Convert.ToDecimal(DT.Rows[0]["stock"].ToString().Trim().PadLeft(1, '0'));

                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["dalmacaccionid"].Value = almacaccionid.ToString().Trim();
                    //txt_stock.Text = Math.Round(Convert.ToDecimal(DT.Rows[0]["stock"].ToString().Trim().PadLeft(1, '0')), 2).ToString();
                    txt_stock.Text = Convert.ToString(dtstock);

                    if (almacaccionid.Substring(0, 1) == "2")
                    {
                        xprecventa = Convert.ToDecimal(Convert.ToDecimal(DT.Rows[0]["precventa"]).ToString("###,###,##0.000000"));
                        xprecio = Convert.ToDecimal(Convert.ToDecimal(DT.Rows[0]["costoultimo"]).ToString("###,###,##0.000000"));
                        txt_valor.Text = Convert.ToDecimal(DT.Rows[0]["costopromed"].ToString().Trim().PadLeft(1, '0')).ToString("###,###,##0.0000");
                        xcostoprom = Convert.ToDecimal(DT.Rows[0]["costopromed"].ToString().Trim().PadLeft(1, '0'));
                    }
                    else if (almacaccionid.Substring(0, 1) == "1")
                    {
                        xcostoultimo = Convert.ToDecimal(Convert.ToDecimal(DT.Rows[0]["costoultimo"]).ToString("###,###,##0.000000"));
                        xprecio = Convert.ToDecimal(Convert.ToDecimal(DT.Rows[0]["costoultimo"]).ToString("###,###,##0.000000"));
                        txt_valor.Text = Convert.ToDecimal(DT.Rows[0]["costoultimo"].ToString().Trim().PadLeft(1, '0')).ToString("###,###,##0.0000");
                    }

                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["precventa"].Value = xprecventa;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["costoultimo"].Value = xcostoultimo;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["costopromed"].Value = xcostoprom;

                    // valida si el precio de producto es ingresado o biene de local_stock
                    //xcantidad = Convert.ToDecimal(DT.Rows[0]["stock"].ToString().Trim().PadLeft(1, '0'));
                    xcantidad = Convert.ToDecimal(griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value);

                    //*** CALCULA EN IMPORTE FACTURADO
                    imporfac = Math.Round(xcantidad * Convert.ToDecimal(xprecio), 6);

                    //*** EVALUAR SI TIPO DE CAMBIO ES MENOR A 0
                    tipcamb = Convert.ToDecimal(tcamb.Text.Trim());
                    if (tipcamb <= 0)
                    {
                        tipcamb = 1;
                    }

                    //muestra el precion segun moneda para producto
                    if (moneda.SelectedValue.ToString() == "S")
                    {
                        xprecunit = xprecio;

                    }
                    else
                    {
                        xprecunit = xprecio / tipcamb;
                    }

                    _cal_Igv();

                    //*** EVALUAR SI ES INCLUIDO O NO IGV
                    desct1 = 0;
                    import = imporfac * (1 - (desct1 / 100));
                    if (incprec.Trim() == "S")
                    {
                        totimpx = Math.Round(import * (Convert.ToDecimal(igv) / (100 + Convert.ToDecimal(igv))), 6);
                    }
                    else
                    {
                        totimpx = Math.Round(import * (Convert.ToDecimal(igv) / 100), 6);
                    }

                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["valor"].Value = xprecunit;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["importe"].Value = Math.Round(xcantidad * xprecunit, 6);
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["dtotimpto"].Value = totimpx;

                    //if (Convert.ToBoolean(griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["nostock"].Value))
                    //{
                    //    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value = "1";
                    //    griddetallemov.Columns["cantidad"].ReadOnly = true;
                    //}
                    //else
                    //{
                    //    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value = xcantidad;
                    //    griddetallemov.Columns["cantidad"].ReadOnly = false;
                    //}

                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["cantidad"].Value = xcantidad;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["precunit"].Value = xprecunit;
                    griddetallemov.Rows[griddetallemov.CurrentCell.RowIndex].Cells["importfac"].Value = Math.Round(imporfac, 2);
                    Tabladetallemov.AcceptChanges();
                    griddetallemov.CurrentCell = griddetallemov.Rows[griddetallemov.RowCount - 1].Cells["cantidad"];
                    //    }else
                    //    break;
                    //}
                    //    break;
                    //}
                }
                else
                {
                    MessageBox.Show("Producto no existe en tabla LOCAL_STOCK !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Producto no existe !!! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void Tabla_detOC()
        {
            _cal_Igv();

            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

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

            if (dt.Rows.Count > 0)
            {

                if (local == dt.Rows[0]["localdes"].ToString().Trim())
                {

                    Decimal cantidadcta_cc = (Decimal)(dt.Rows[0]["cantidadcta_c"]);
                    Decimal cantidad_cc = (Decimal)(dt.Rows[0]["cantidad_c"]);

                    foreach (DataRow fila in dt.Rows)
                    {
                        //if (cantidadcta_cc < cantidad_cc)
                        //{
                        tb_me_local_stockBL BL2 = new tb_me_local_stockBL();
                        tb_me_local_stock BE2 = new tb_me_local_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(igv) / 100), 6);
                        row["almacaccionid"] = almacaccionid.Trim();
                        //row["ubicacion"] = fila["ubicacion"].ToString().Trim();
                        Tabladetallemov.Rows.Add(row);
                        // }
                        griddetallemov.DataSource = Tabladetallemov;
                    }

                    _RecalculoGrid();
                }
                else
                {
                    tipref.Enabled = true;
                    tipref.SelectedIndex = -1;
                    tipref.Enabled = true;
                    numdococ1.Text = "";
                    numdococ.Text = "";
                    return;
                }
            }
            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 = "";
                numdococ.Text = "";
                return;
            }
        }
        private void data_Tabladetallemovmov()
        {
            _cal_Igv();
            try
            {
                Decimal xxprecventa = 0, xxcostoultimo = 0, xxstock = 0, xxcostopromed = 0;
                griddetallemov.AutoGenerateColumns = false;

                tb_me_movimientosdetBL BL = new tb_me_movimientosdetBL();
                tb_me_movimientosdet BE = new tb_me_movimientosdet();
                DataTable dt = new DataTable();

                BE.moduloid = modulo;
                BE.local = local;
                BE.tipodoc = tipodoc.SelectedValue.ToString().Trim();
                BE.serdoc = serdoc.Text.Trim().PadLeft(4, '0');
                BE.numdoc = numdoc.Text.Trim().PadLeft(6, '0');

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

                //datos incluido IGV
                if (dt.Rows.Count > 0)
                {
                    statcostopromed = dt.Rows[0]["statcostopromed"].ToString();
                    tiptransac = dt.Rows[0]["tiptransac"].ToString();
                    incprec = dt.Rows[0]["incprec"].ToString().Trim();
                    //tipoperef = dt.Rows[0]["tipoperef"].ToString();
                }

                if (Tabladetallemov != null)
                {
                    Tabladetallemov.Clear();
                }

                foreach (DataRow fila in dt.Rows)
                {
                    tb_me_local_stockBL BL2 = new tb_me_local_stockBL();
                    tb_me_local_stock BE2 = new tb_me_local_stock();
                    DataTable dt2 = new DataTable();
                    BE2.moduloid = modulo;
                    BE2.local = local;
                    BE2.productid = fila["productid"].ToString();
                    dt2.Clear();
                    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 = 0;// 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"]);
                    }

                    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();
                    row["stock"] = xxstock;
                    row["stock_old"] = xxstock;
                    row["precventa"] = xxprecventa;
                    row["costoultimo"] = xxcostoultimo;
                    row["costopromed"] = xxcostopromed;
                    //row["cantidad"] = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                    //row["cantidad_c"] = Math.Round(Convert.ToDecimal(fila["cantidad_c"]), 4);

                    Decimal cantidad = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                    Decimal cantidadcta = Math.Round(Convert.ToDecimal(fila["cantidadcta"]), 4);
                    Decimal total;
                    total = cantidad - cantidadcta;

                    row["cantidad"] = total;

                    //row["cantidad_old"] = Math.Round(Convert.ToDecimal(fila["cantidad"]), 4);
                    row["cantidad_old"] = Convert.ToDecimal(fila["cantidad"]);

                    row["precunit"] = Math.Round(Convert.ToDecimal(Convert.ToDecimal(fila["precunit"]).ToString("###,###,##0.000000")), 6);

                    row["importfac"] = Math.Round(Convert.ToDecimal(fila["importfac"]), 2);

                    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(igv) / 100), 6);

                    row["almacaccionid"] = almacaccionid.Trim();
                    row["unmed"] = fila["unmed"].ToString().Trim();
                    row["nserie"] = fila["nserie"].ToString().Trim();
                    row["ubicacion"] = fila["ubicacion"].ToString().Trim();
                    row["nostock"] = xnostock;
                    Tabladetallemov.Rows.Add(row);

                }

                griddetallemov.DataSource = Tabladetallemov;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }