private void Update()
        {
            _cal_Igv();

            try
            {
                if (cabecera_valida())
                {

                    // Variables de Cabecera
                    tb_me_movimientosBL BL = new tb_me_movimientosBL();
                    tb_me_movimientos BE = new tb_me_movimientos();

                    // Variables para Detalle
                    tb_me_movimientos.Item Detalle = new tb_me_movimientos.Item();
                    List<tb_me_movimientos.Item> ListaItems = new List<tb_me_movimientos.Item>();

                    #region **ingreso movimiento cabecera***
                    BE.dominioid = dominio;
                    BE.moduloid = modulo;
                    BE.local = local;
                    BE.tipodoc = tipodoc.SelectedValue.ToString();
                    BE.serdoc = serdoc.Text.Trim();
                    BE.numdoc = numdoc.Text.Trim();
                    BE.fechdoc = Convert.ToDateTime(fechdoc.Text);
                    BE.moneda = moneda.SelectedValue.ToString().Trim();
                    BE.tcamb = Convert.ToDecimal(tcamb.Text.Trim());

                    //accion del alamacen dependiendo del tipo de documento
                    if (tipfac.Text.Trim().Length > 0 && serfac.Text.Trim().Length > 0 && numfac.Text.Trim().Length > 0)
                    {
                        if (almacaccionid.Substring(0, 1) == "2")
                        {
                            almacaccionid = "21";
                        }
                        BE.almacaccionid = almacaccionid.ToString();
                    }
                    else { BE.almacaccionid = almacaccionid.Trim(); }

                    BE.tipoperacionid = tipoperacionid.SelectedValue.ToString();
                    //datos proveedor y/o cliente
                    BE.ctacteaccionid = "";
                    BE.ctacte = ctacte.Text.Trim().ToUpper();
                    BE.nmruc = nmruc.Text.Trim();
                    BE.ctactename = ctactename.Text.Trim().ToUpper();
                    BE.direc = direc.Text.Trim().ToUpper();
                    BE.direcnume = direcnume.Trim().ToUpper();
                    BE.direcname = direcname.Text.Trim().ToUpper();
                    BE.direcdeta = direcdeta.Text.Trim().ToUpper();
                    //datos documento de referencia
                    if (tipref.SelectedValue != null && serref.Text.Trim().Length > 0)
                    {
                        if (tipref.SelectedValue.ToString() == "OC")
                        {
                            BE.tipref = tipref.SelectedValue.ToString();
                            BE.serref = serref.Text.Trim().PadLeft(4, '0');

                            BE.numref = numdococ1.Text.Trim() + numdococ.Text.Trim().PadLeft(6, '0');

                            try { BE.fechref = Convert.ToDateTime(fechref.Text.Trim()); }
                            catch { BE.fechref = Convert.ToDateTime("01/01/1900"); }
                        }
                        else if (tipref.SelectedValue.ToString() == "SO")
                        {
                            BE.tipref = "";
                            BE.serref = "";
                            BE.numref = "";
                            try { BE.fechref = Convert.ToDateTime(fechref.Text.Trim()); }
                            catch { BE.fechref = Convert.ToDateTime("01/01/1900"); }
                        }
                    }
                    //orden de produccion
                    if (ser_op.Text.Trim().Length > 0 && num_op.Text.Trim().Length > 0)
                    {
                        BE.tip_op = "OP";
                        BE.ser_op = ser_op.Text.Trim().PadLeft(4, '0');
                        BE.num_op = num_op.Text.Trim().PadLeft(10, '0');
                    }
                    //datos ducumento factura
                    if (serfac.Text.Trim().Length > 0 && numfac.Text.Trim().Length > 0)
                    {
                        BE.tipfac = tipfac.SelectedItem.ToString();
                        BE.serfac = serfac.Text.Trim().ToString().PadLeft(4, '0');
                        BE.numfac = numfac.Text.Trim().ToString().PadLeft(10, '0');
                        try { BE.fechfac = Convert.ToDateTime(fechfac.Text.Trim()); }
                        catch { BE.fechfac = Convert.ToDateTime("01/01/1900"); }
                    }
                    //datos ducumento guia
                    if (serguia.Text.Trim().Length > 0 && numguia.Text.Trim().Length > 0)
                    {
                        BE.tipguia = tipguia.Text.Trim();
                        BE.serguia = serguia.Text.Trim().ToString().PadLeft(4, '0');
                        BE.numguia = numguia.Text.Trim().ToString().PadLeft(10, '0');
                        try { BE.fechguia = Convert.ToDateTime(fechguia.Text.Trim()); }
                        catch { BE.fechguia = Convert.ToDateTime("01/01/1900"); }
                    }
                    //datos ducumento nota de credito
                    if (sernotac.Text.Trim().Length > 0 && numnotac.Text.Trim().Length > 0)
                    {
                        BE.tipnotac = tipnotac.Text.Trim();
                        BE.sernotac = sernotac.Text.Trim().ToString().PadLeft(4, '0');
                        BE.numnotac = numnotac.Text.Trim().ToString().PadLeft(10, '0');
                        try { BE.fechnotac = Convert.ToDateTime(fechnotac.Text.Trim()); }
                        catch { BE.fechnotac = Convert.ToDateTime("01/01/1900"); }
                    }
                    //datos empleado vendedor
                    //if (vendperid.Text.Trim().Length > 0) { BE.vendorid = vendperid.Text.Trim().ToString(); };
                    if (vendperid.Text.Trim().Length > 0) { BE.perdni = vendperid.Text.Trim().ToString(); };  // modificado
                    //datos ubigeo
                    BE.ubige = "000000";
                    //datos centro de costo
                    BE.cencosid = cencosid.Text.Trim().ToString();
                    //datos condicion de pago
                    //BE.condpago = condventa.SelectedValue.Trim().ToString();
                    //datos gastos varios
                    try { BE.totdscto1 = Convert.ToDecimal(totdscto1.Text.Trim()); }
                    catch { BE.totdscto1 = Convert.ToDecimal(0); }
                    //try { BE.transporte = Convert.ToDecimal(transporte.Text.Trim()); }
                    //catch { BE.transporte = Convert.ToDecimal(0); }
                    //try { BE.embalaje = Convert.ToDecimal(embalaje.Text.Trim()); }
                    //catch { BE.embalaje = Convert.ToDecimal(0); }
                    //try { BE.otros = Convert.ToDecimal(otros.Text.Trim()); }
                    //catch { BE.otros = Convert.ToDecimal(0); }
                    //tipo de impuesto
                    BE.tipimptoid = tipimptotasa.SelectedValue.ToString().Trim();
                    //datos incluido IGV
                    BE.incprec = incprec.Trim();
                    //datos tipo periodo impuesto
                    //BE.tipoperimptoid = "";
                    //datos totales calculados
                    BE.items = Convert.ToDecimal(itemsT.Text.Trim());
                    BE.totpzas = Convert.ToDecimal(totpzas.Text.Trim());
                    BE.bruto = Convert.ToDecimal(bruto.Text.Trim());
                    BE.igv = igv;
                    BE.totimpto = Convert.ToDecimal(totimpto.Text.Trim());
                    BE.valventa = Convert.ToDecimal(valventa.Text.Trim());
                    BE.totimporte = Convert.ToDecimal(totimporte.Text.Trim());
                    //datos cuenta haber y debe
                    BE.codctadebe = "";
                    BE.codctahaber = "";
                    //datos glosa
                    BE.glosa = glosa.Text.Trim().ToUpper().ToString();
                    //fechas de movimiento del documento
                    try { BE.fechcancel = Convert.ToDateTime("01/01/1900"); }
                    catch { BE.fechcancel = Convert.ToDateTime("01/01/1900"); }
                    try { BE.fechentrega = Convert.ToDateTime(fechentrega.Text.Trim()); }
                    catch { BE.fechentrega = Convert.ToDateTime("01/01/1900"); }
                    try { BE.fechpago = Convert.ToDateTime(fechpago.Text.Trim()); }
                    catch { BE.fechpago = Convert.ToDateTime("01/01/1900"); }
                    //datos transporte
                    BE.transpid = transpid.Text.Trim().ToString();
                    if (motivotrasladoid.SelectedValue != null)
                        BE.motivotrasladoid = motivotrasladoid.SelectedValue.ToString();
                    if (mottrasladointid.SelectedValue != null)
                        BE.mottrasladointid = mottrasladointid.SelectedValue.ToString();
                    //datos cliente y/o empleado
                    BE.ddnni = ddnni.Text.Trim();
                    //otros
                    BE.tipdid = "";
                    BE.statborrado = "";
                    BE.clientetipo = "";
                    BE.modofactu = "";
                    //opt
                    BE.tipodocmanejaserie = tipodocmanejaserie;

                    //Datos del Usuario
                    BE.perianio = fechdoc.Value.Year.ToString();
                    BE.perimes = fechdoc.Value.Month.ToString().PadLeft(2, '0');
                    BE.status = "0";
                    BE.usuar = VariablesPublicas.Usuar;

                    #endregion

                    #region ****ingreso movimiento detalle***
                    int item = 0;

                    foreach (DataRow fila in Tabladetallemov.Rows)
                    {
                        Detalle = new tb_me_movimientos.Item();

                        item++;

                        //datos documento cabecera importante [todos]
                        Detalle.fechdoc = Convert.ToDateTime(fechdoc.Text);
                        Detalle.moneda = moneda.SelectedValue.ToString().Trim();
                        Detalle.tcamb = Convert.ToDecimal(tcamb.Text.Trim());
                        //accion del alamacen dependiendo del tipo de documento
                        Detalle.tipoperacionid = tipoperacionid.SelectedValue.ToString();
                        //datos proveedor y/o cliente
                        Detalle.ctacteaccionid = "";
                        Detalle.ctacte = ctacte.Text.Trim().ToUpper();
                        Detalle.ctactename = ctactename.Text.Trim().ToUpper();
                        Detalle.direcnume = direcnume.Trim().ToUpper();
                        Detalle.direcname = direcname.Text.Trim().ToUpper();
                        //datos documento de referencia
                        if (tipref.SelectedValue != null && serref.Text.Trim().Length > 0)
                        {
                            Detalle.tipref = tipref.SelectedValue.ToString();
                            Detalle.serref = serref.Text.Trim().PadLeft(4, '0');
                            Detalle.numref = numdococ1.Text.Trim() + numdococ.Text.Trim().PadLeft(6, '0');
                            try { Detalle.fechref = Convert.ToDateTime(fechref.Text.Trim()); }
                            catch { Detalle.fechref = Convert.ToDateTime("01/01/1900"); }
                        }
                        //orden de produccion
                        if (ser_op.Text.Trim().Length > 0 && num_op.Text.Trim().Length > 0)
                        {
                            Detalle.tip_op = "OP";
                            Detalle.ser_op = ser_op.Text.Trim().PadLeft(4, '0');
                            Detalle.num_op = num_op.Text.Trim().PadLeft(10, '0');
                        }
                        //datos ducumento factura
                        if (serfac.Text.Trim().Length > 0 && numfac.Text.Trim().Length > 0)
                        {
                            Detalle.tipfac = tipfac.SelectedItem.ToString();
                            Detalle.serfac = serfac.Text.Trim().ToString().PadLeft(4, '0');
                            Detalle.numfac = numfac.Text.Trim().ToString().PadLeft(10, '0');
                            try { Detalle.fechfac = Convert.ToDateTime(fechfac.Text.Trim()); }
                            catch { Detalle.fechfac = Convert.ToDateTime("01/01/1900"); }
                        }
                        //datos ducumento guia
                        if (serguia.Text.Trim().Length > 0 && numguia.Text.Trim().Length > 0)
                        {
                            Detalle.tipguia = tipguia.Text.Trim();
                            Detalle.serguia = serguia.Text.Trim().ToString().PadLeft(4, '0');
                            Detalle.numguia = numguia.Text.Trim().ToString().PadLeft(10, '0');
                            try { Detalle.fechguia = Convert.ToDateTime(fechguia.Text.Trim()); }
                            catch { Detalle.fechguia = Convert.ToDateTime("01/01/1900"); }
                        }
                        //datos ducumento nota de credito
                        if (sernotac.Text.Trim().Length > 0 && numnotac.Text.Trim().Length > 0)
                        {
                            Detalle.tipnotac = tipnotac.Text.Trim();
                            Detalle.sernotac = sernotac.Text.Trim().ToString().PadLeft(4, '0');
                            Detalle.numnotac = numnotac.Text.Trim().ToString().PadLeft(10, '0');
                            try { Detalle.fechnotac = Convert.ToDateTime(fechnotac.Text.Trim()); }
                            catch { Detalle.fechnotac = Convert.ToDateTime("01/01/1900"); }
                        }
                        //centro de costo
                        Detalle.cencosid = cencosid.Text.Trim();
                        //empleado vendedor
                        if (vendperid.Text.Trim().Length > 0)
                        {
                            BE.vendorid = vendperid.Text.Trim().ToString();
                        };
                        //datos calculados de detalle de movimiento obtenidos de memoria
                        Detalle.itemref = fila["itemref"].ToString();
                        Detalle.itemsdet = item.ToString().PadLeft(5, '0');
                        Detalle.rollo = "";//fila["rollo"].ToString();
                        Detalle.productid = fila["productid"].ToString();
                        Detalle.productname = fila["productname"].ToString();

                        //Decimal cantidad = Convert.ToDecimal(fila["cantidad"].ToString());
                        //Decimal cantidadcta = Convert.ToDecimal(fila["cantidadcta"].ToString());

                        Detalle.cantidad = Convert.ToDecimal(fila["cantidad"].ToString());
                        Detalle.valor = Convert.ToDecimal(fila["valor"].ToString());
                        Detalle.importe = Convert.ToDecimal(fila["importe"].ToString());
                        if (tipoperacionid.SelectedValue.ToString() == "02")
                        {
                            if (moneda.SelectedValue.ToString() == "$")
                            {
                                Detalle.valor = Convert.ToDecimal(fila["precunit"].ToString()) * Convert.ToDecimal(tcamb.Text);
                            }
                            else
                            {
                                Detalle.valor = Convert.ToDecimal(fila["precunit"].ToString());
                            }

                            Detalle.importe = Detalle.cantidad * Detalle.valor;
                        }

                        Detalle.precunit = Convert.ToDecimal(fila["precunit"].ToString());
                        Detalle.importfac = Convert.ToDecimal(fila["importfac"].ToString());
                        Detalle.totimpto = Convert.ToDecimal(fila["totimpto"].ToString());
                        Detalle.Ubicacion = "";//fila["ubicacion"].ToString().ToUpper();
                        Detalle.unmed = fila["unmed"].ToString().Trim();
                        Detalle.nserie = fila["nserie"].ToString().Trim();

                        //accion del alamacen dependiendo del tipo de documento
                        Detalle.almacaccionid = almacaccionid;//fila["almacaccionid"].ToString();
                        //motivo del traslado
                        if (motivotrasladoid.SelectedValue != null)
                            Detalle.motivotrasladoid = motivotrasladoid.SelectedValue.ToString();
                        if (mottrasladointid.SelectedValue != null)
                            Detalle.mottrasladointid = mottrasladointid.SelectedValue.ToString();
                        //datos de costo promedio
                        Detalle.statcostopromed = statcostopromed.Trim();
                        //datos de tipo de trasaccion
                        Detalle.tiptransac = tiptransac.Trim();
                        //datos si es incluido IGV
                        Detalle.incprec = incprec.Trim();
                        Detalle.igv = igv;
                        //glosa - observacion
                        Detalle.glosa = glosa.Text.Trim().ToUpper().ToString();
                        //dato cuenta haber y debe
                        Detalle.codctadebe = "";
                        Detalle.codctahaber = "";

                        //Datos del Usuario
                        //Detalle.perianio = fechdoc.Value.Year.ToString();
                        //Detalle.perimes = fechdoc.Value.Month.ToString();
                        Detalle.perianio = fechdoc.Value.Year.ToString();
                        Detalle.perimes = fechdoc.Value.Month.ToString().PadLeft(2, '0');
                        Detalle.status = "0";
                        Detalle.usuar = VariablesPublicas.Usuar;

                        if (ssModo != "EDIT")
                        {
                            String prod = fila["productid"].ToString();
                            String can = fila["cantidad"].ToString();
                            String impo = fila["importfac"].ToString();

                            //if (fila["productid"].ToString().Trim().Length == 13 && Convert.ToDecimal(fila["cantidad"]) > 0 && Convert.ToDecimal(fila["importfac"]) > 0)
                            //{
                            ListaItems.Add(Detalle);
                            //}
                            //else
                            //{
                            //    MessageBox.Show("Documento DETALLE EN FORMATO INCORRECTO !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            //    return;
                            //}
                        }
                        else
                        {

                            ListaItems.Add(Detalle);
                        }
                    }
                    if (ListaItems.Count == 0)
                    {
                        MessageBox.Show("Documento SIN DETALLE Y/O DETALLE INCORRECTO !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    // Verificacion de Fechas

                    //if (Detalle.perianio.ToString() != VariablesPublicas.perianio.ToString()
                    //    || Detalle.perimes.ToString() != VariablesPublicas.perimes.ToString())
                    //    {
                    //        MessageBox.Show("Verifique Fecha Modificacion !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //        return;
                    //    }

                    BE.ListaItems = ListaItems;
                    if (BL.Update(EmpresaID, BE))
                    {
                        SEGURIDAD_LOG("M");
                        NIVEL_FORMS();
                        //MessageBox.Show("Datos modificados correctamente !!!", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        form_bloqueado(false);
                        //limpiar_documento();
                        Blanquear();
                        tipodoc.Enabled = false;
                        btn_nuevo.Enabled = true;
                        btn_imprimir.Enabled = true;
                        btnImprimirNoval.Enabled = true;

                        btn_primero.Enabled = true;
                        btn_anterior.Enabled = true;
                        btn_siguiente.Enabled = true;
                        btn_ultimo.Enabled = true;

                        btn_salir.Enabled = true;
                    }
                    #endregion
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void Delete()
        {
            try
            {
                if (ctacte.Text.Trim().Length == 0)
                {
                    MessageBox.Show("Ingrese Proveedor/Cliente !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else if (Tabladetallemov.Rows.Count == 0)
                {
                    MessageBox.Show("Documento no tiene Items !!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {
                    if (numdoc.Text.Trim().Length == 10)
                    {

                        // Variables de Cabecera
                        tb_me_movimientosBL BL = new tb_me_movimientosBL();
                        tb_me_movimientos BE = new tb_me_movimientos();

                        // Variables para Detalle
                        tb_me_movimientos.Item Detalle = new tb_me_movimientos.Item();
                        List<tb_me_movimientos.Item> ListaItems = new List<tb_me_movimientos.Item>();

                        #region *** movimiento ***
                        BE.dominioid = dominio;
                        BE.moduloid = modulo;
                        BE.local = local;
                        BE.tipodoc = tipodoc.SelectedValue.ToString();
                        BE.serdoc = serdoc.Text.Trim();
                        BE.numdoc = numdoc.Text.Trim();
                        BE.status = "9";
                        BE.usuar = VariablesPublicas.Usuar;
                        BE.numref = numdococ1.Text.Trim() + numdococ.Text.Trim();

                        if (BL.Delete(EmpresaID, BE))
                        {
                            SEGURIDAD_LOG("E");
                            NIVEL_FORMS();
                            MessageBox.Show("Datos eliminados correctamente !!!", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            limpiar_documento();
                            form_bloqueado(false);
                            tipodoc.Enabled = false;
                            numdoc.Enabled = false;

                            btn_nuevo.Enabled = true;

                            btn_primero.Enabled = true;
                            btn_anterior.Enabled = true;
                            btn_siguiente.Enabled = true;
                            btn_ultimo.Enabled = true;

                            btn_salir.Enabled = true;
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }