Exemple #1
0
        private void eliminarStockDePZsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string vMen = "Este proceso eliminara TODO el Stock de los Productos 'PZ-' (Producto Terminado),Esta seguro ?";
            string vTit = "Eliminar";

            if (MessageBox.Show(vMen, vTit, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }


            vMen = "Peroooo Seguro, seguro ?";
            vTit = "Eliminar";
            if (MessageBox.Show(vMen, vTit, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            frmInformacion frm = new frmInformacion();

            frm.vTex = "Eliminando Stock de 'PZ-'";
            frm.Show();
            Application.DoEvents();

            string vID = System.Guid.NewGuid().ToString();

            string    vSql = cConstantes.SQL_ElimStockPZ;
            DataTable dt   = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConecProduc_Prueb));

            foreach (DataRow dr in dt.Rows)
            {
                string  vProd = dr["Producto"].ToString();
                string  vCan  = dr["canreg"].ToString();
                decimal vdCan = Convert.ToDecimal(vCan);
                string  vUbi  = dr["Ubi"].ToString();
                string  vLote = dr["Lote"].ToString();
                string  vOFL  = dr["OFL"].ToString();
                try
                {
                    string vTipo = "Entrada";
                    if (vdCan < 0)
                    {
                        vTipo = "Salida";
                    }
                    //Crear movimientos de producto y materia prima
                    cMovimientos.Articulo oMov = new cMovimientos.Articulo();

                    //Movimiento de producto
                    oMov.fncAlta(cParamXml.Emp, vTipo, DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, "",
                                 vCan, "Inv_" + vID, vOFL, vUbi, vLote);
                }
                catch { }
            }

            frm.Close();

            MessageBox.Show("Se han eliminado todo el Stock del los Productos 'PZ-'");
        }
Exemple #2
0
        private bool fncGrabar()
        {
            bool vOk = false;

            //Crear movimientos
            cMovimientos.Articulo oMov = new cMovimientos.Articulo();

            try
            {
                foreach (DataGridViewRow dr in grMovi.Rows)
                {
                    if (!dr.IsNewRow)
                    {
                        string vProd        = dr.Cells["Producto"].EditedFormattedValue.ToString();
                        string vDescripción = dr.Cells["Descripción"].EditedFormattedValue.ToString();
                        string vCan         = dr.Cells["Cantidad"].EditedFormattedValue.ToString();
                        string vAUbi        = dr.Cells["AUbi"].EditedFormattedValue.ToString();
                        string vDbi         = dr.Cells["DUbi"].EditedFormattedValue.ToString();
                        string vLote        = dr.Cells["Lote"].EditedFormattedValue.ToString();
                        string vOFL         = dr.Cells["OFL"].EditedFormattedValue.ToString();
                        string vDoc         = dr.Cells["Documento"].EditedFormattedValue.ToString();

                        string vWhere = " Empresa = " + cParamXml.Emp + " and Almacen = 'Principal' and Producto = N'" + vProd + "'";
                        vWhere += " and Ubi = '" + vDbi + "' and Lote='" + vLote + "' and OFL='" + vOFL + "'";
                        string  vCanSt  = cUtil.fncTraeCampo("Cantidad", "GC_Ind_ProductoUbiCanLoteOFL", vWhere, "", cParamXml.strConecProduc_Prueb, "SQL", true);
                        decimal vdCansT = Convert.ToDecimal(vCanSt);
                        decimal vdCan   = Convert.ToDecimal(vCan);

                        if (vdCan > vdCansT)
                        {
                            MessageBox.Show("La cantidad a sacar es superior al stock");
                            return(vOk);
                        }
                        //Movimiento de salida
                        oMov.fncAlta(cParamXml.Emp, "Salida", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, vDescripción,
                                     "-" + vCan, vDoc, vOFL, vDbi, vLote);
                        //Movimiento de entrada
                        oMov.fncAlta(cParamXml.Emp, "Entrada", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, vDescripción,
                                     vCan, vDoc, "", vAUbi, vLote);
                    }
                }

                vOk = true;
            }
            catch { }

            return(vOk);
        }
Exemple #3
0
        private bool fncEntregar(string vProducto, string vUbi, string vLote, decimal vCan, string vCajas, string vOFL)
        {
            bool vOk = false;

            using (SqlConnection dbConec = new SqlConnection(cParamXml.strConecProduc_Prueb))
            {
                dbConec.Open();
                SqlTransaction dbTr = dbConec.BeginTransaction();
                try
                {
                    //Damos de alta la cabecera
                    cAlbaranesVenta.CabAlb oCabAlb = new cAlbaranesVenta.CabAlb();
                    int vNumAlb = 0;
                    if (oCabAlb.fncAltaCab(oCab, "S", dbConec, dbTr, ref vNumAlb))
                    {
                        //Damos de alta la linea
                        cAlbaranesVenta.LinAlb oLinAlb = new cAlbaranesVenta.LinAlb();
                        oLinAlb.Empresa     = cParamXml.Emp;
                        oLinAlb.NumAlb      = vNumAlb;
                        oLinAlb.Producto    = vProd;
                        oLinAlb.Descripción = txDesProd.Text;
                        oLinAlb.Cantidad    = vCan;
                        string vLoteOfl = vLote;
                        if (vOFL != "")
                        {
                            vLoteOfl += " | " + vOFL;
                        }
                        oLinAlb.Lote        = vLoteOfl;
                        oLinAlb.Cajas       = vCajas;
                        oLinAlb.Impresiones = 0;
                        oLinAlb.NumPrep     = vNumPrep;
                        if (oLinAlb.fncAltaLin(dbConec, dbTr))
                        {
                            //Grabamos la cantridad entregada de la preparación
                            if (cEntregas.LinPrepEntregas.fncMasCantidadServida(cParamXml.Emp.ToString(), vNumPrep, vLin, vCan.ToString(), dbConec, dbTr))
                            {
                                //Si la entrega es de un pedido de modifica la cantidad entregada del pedido
                                if (vNumPed != 0)
                                {
                                    if (!cPedidosVenta.LinVenta.fncMasCantidadServida(cParamXml.Emp.ToString(), vNumPed, vLinPed, vCan.ToString(), dbConec, dbTr))
                                    {
                                        return(vOk);
                                    }
                                }
                                //Movimientos de Producto
                                cMovimientos.Articulo oMov = new cMovimientos.Articulo();
                                decimal vdCan = vCan * -1;
                                if (oMov.fncAlta(cParamXml.Emp, "Salida", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, txDesProd.Text,
                                                 vdCan.ToString(), vNumPrep.ToString(), vOFL, vUbi, vLote))
                                {
                                    vOk = true;
                                }
                            }
                        }
                    }

                    //Descactivamos las cajas seleccionadas
                    if ((vCajas != "") & (vOFL != ""))
                    {
                        string[] vmCajas = vCajas.Split(',');
                        for (int i = 0; i < vmCajas.Length; i++)
                        {
                            string vSql   = "";
                            string vTabla = " GC_OrdenProdCajas";
                            string vCampo = "Entregada";
                            string vWhere = " IdOF = '" + vOFL + "' AND (NumCajaBolsa = " + vmCajas[i] + ")";
                            vSql = cConstantes.SQL_UP_Update;
                            vSql = vSql.Replace("[?1]", "[" + vCampo + "]");
                            vSql = vSql.Replace("[?2]", "1");
                            vSql = vSql.Replace("[?3]", vWhere);
                            vSql = vSql.Replace("[?99]", vTabla);
                            int viOk = SQLDataAccess.GEN_ExecuteNonQuery(vSql, cParamXml.strConecProduc_Prueb);
                        }
                    }
                }
                catch {}

                if (vOk)
                {
                    //Al terminar correctamente los cambios se graban
                    dbTr.Commit();
                    vOk = true;
                }
                else
                {
                    //Al terminar con error se revierten los cambios
                    dbTr.Rollback();
                    vOk = false;
                }
            }


            return(vOk);
        }
Exemple #4
0
        private bool fncTerminarOFL(string vLote, string vUbiPie, string vLotePie)
        {
            bool vOk = true;

            ////Recorro la lista de la OFL a Cerrar
            foreach (DataGridViewRow dr in grOFL.Rows)
            {
                string vOFL = dr.Cells["IdOF"].Value.ToString();
                if (vOFL == txOF.Text)
                {
                    string vTodas = " and (GC_OrdenProd.IdOF = '" + vOFL + "') ";

                    string vSql = cConstantes.SQL_Terminar_OF;
                    vSql = vSql.Replace("[?vbCr]", cConstantes.vbCtr.ToString());
                    vSql = vSql.Replace("[?vbLf]", cConstantes.vbLF.ToString());
                    vSql = vSql.Replace("[?Emp]", cParamXml.Emp.ToString());
                    vSql = vSql.Replace("[?Todas]", vTodas);

                    DataTable dt = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConec));

                    string vProd   = dt.Rows[0]["Articulo"].ToString();
                    string vMat    = dt.Rows[0]["Material"].ToString();
                    string vSob    = dt.Rows[0]["PiezasNoOk"].ToString();
                    string vUbi    = dt.Rows[0]["Ubi"].ToString();
                    string vCanFab = dt.Rows[0]["CantidadFab"].ToString();



                    //string vProd = dr.Cells["Articulo"].Value.ToString();
                    //string vMat = dr.Cells["Material"].Value.ToString();
                    //string vSob = dr.Cells["PiezasNoOk"].Value.ToString();
                    //string vUbi = dr.Cells["Ubi"].Value.ToString();
                    //string vCanFab = dr.Cells["CantidadFab"].Value.ToString();

                    cMovimientos.Articulo oMov    = new cMovimientos.Articulo();
                    SqlConnection         dbConec = new SqlConnection(cParamXml.strConec);
                    dbConec.Open();
                    SqlTransaction dbTr = dbConec.BeginTransaction();

                    try
                    {
                        //Movimientos de la cantidad sobrante
                        decimal vdSob = Convert.ToDecimal(vSob);


                        vSql = cConstantes.SQL_Produc_Pie_Produc_Lote_OF;
                        vSql = vSql.Replace("[?vbCr]", cConstantes.vbCtr.ToString());
                        vSql = vSql.Replace("[?vbLf]", cConstantes.vbLF.ToString());
                        vSql = vSql.Replace("[?Emp]", cParamXml.Emp.ToString());
                        vSql = vSql.Replace("[?OF]", vOFL);
                        vSql = vSql.Replace("[?Compo]", vMat);

                        DataTable dtc = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConec));


                        vSql = cConstantes.SQL_Produc_Pie_Fab_Lote_OF;
                        vSql = vSql.Replace("[?vbCr]", cConstantes.vbCtr.ToString());
                        vSql = vSql.Replace("[?vbLf]", cConstantes.vbLF.ToString());
                        vSql = vSql.Replace("[?Emp]", cParamXml.Emp.ToString());
                        vSql = vSql.Replace("[?OF]", vOFL);
                        vSql = vSql.Replace("[?Prod]", vProd);

                        DataTable dtp = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConec));


                        if (vOk)
                        {
                            decimal vdCanMat = vdSob * -1;


                            foreach (DataRow drc in dtc.Rows)
                            {
                                string  vLotec = drc["Lote"].ToString();
                                string  vCans  = drc["Cantidad"].ToString();
                                decimal vdCans = Convert.ToDecimal(vCans);
                                vdCanMat = vdCans * -1;

                                vOk = oMov.fncAlta(cParamXml.Emp, "Salida", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vMat, "",
                                                   vdCanMat.ToString(), vProd, vOFL, "PRODUC", vLotec, dbConec, dbTr);

                                if (!vOk)
                                {
                                    break;
                                }
                            }
                        }

                        if (vOk)
                        {
                            vOk = oMov.fncAlta(cParamXml.Emp, "Entrada", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vMat, "",
                                               vdSob.ToString(), vProd, "", vUbi, vLote, dbConec, dbTr);
                        }


                        //Movimientos de las Piezas
                        decimal vdPiezas = Convert.ToDecimal(vCanFab);



                        if (vOk)
                        {
                            decimal vdCanPie = vdPiezas * -1;
                            vdPiezas = 0;

                            foreach (DataRow drc in dtp.Rows)
                            {
                                string  vLotep = drc["Lote"].ToString();
                                string  vCans  = drc["Cantidad"].ToString();
                                decimal vdCanp = Convert.ToDecimal(vCans);
                                vdCanPie = vdCanp * -1;

                                oMov.fncAlta(cParamXml.Emp, "Salida", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, "",
                                             vdCanPie.ToString(), vOFL, vOFL, "FAB", vLotep, dbConec, dbTr);

                                vdPiezas += vdCanPie * -1;

                                if (!vOk)
                                {
                                    break;
                                }
                            }
                        }

                        if (vOk)
                        {
                            oMov.fncAlta(cParamXml.Emp, "Entrada", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, "",
                                         vdPiezas.ToString(), "", vOFL, vUbiPie, vLotePie, dbConec, dbTr);
                        }
                    }
                    catch
                    {
                        vOk = false;
                    }

                    if (vOk)
                    {
                        //Al terminar correctamente los cambios se graban
                        dbTr.Commit();
                        dbConec.Close();
                        dbConec.Dispose();
                        cProduc.OF.fncCambiarEstado(cParamXml.Emp.ToString(), txOF.Text, "Terminada");

                        sbrCargar();
                    }
                    else
                    {
                        //Al terminar con error se revierten los cambios
                        dbTr.Rollback();
                        dbConec.Close();
                        dbConec.Dispose();
                    }
                }
            }


            return(vOk);
        }
Exemple #5
0
        private bool fncGrabar()
        {
            bool vOk = false;


            try
            {
                cMovimientos.Articulo cArticulo = new cMovimientos.Articulo();
                foreach (DataGridViewRow dr in grMovi.Rows)
                {
                    if (!dr.IsNewRow)
                    {
                        string  vProd = dr.Cells["Producto"].Value.ToString();
                        string  vCan  = dr.Cells["Cantidad"].Value.ToString();
                        decimal vdCan = Convert.ToDecimal(vCan);
                        string  vUbi  = (dr.Cells["Ubi"].Value != null) ? dr.Cells["Ubi"].Value.ToString():"";
                        string  vLote = (dr.Cells["Lote"].Value != null) ? dr.Cells["Lote"].Value.ToString():"";
                        string  vDoc  = (dr.Cells["Documento"].Value != null) ? dr.Cells["Documento"].Value.ToString():"";
                        string  vOFL  = (dr.Cells["OFL"].Value != null) ? dr.Cells["OFL"].Value.ToString():"";
                        string  vDes  = (dr.Cells["Descripción"].Value != null) ? dr.Cells["Descripción"].Value.ToString():"";
                        try
                        {
                            string vTipo = "Entrada";
                            if (vdCan < 0)
                            {
                                vTipo = "Salida";
                            }
                            //Crear movimientos de producto y materia prima
                            cMovimientos.Articulo oMov = new cMovimientos.Articulo();

                            //Movimiento de producto
                            oMov.fncAlta(cParamXml.Emp, vTipo, DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, vDes,
                                         vCan, vDoc, vOFL, vUbi, vLote);
                        }
                        catch (Exception ex) { string vEr = ex.Message; }
                    }
                }



                //cMovimientos.Articulo cArticulo = new cMovimientos.Articulo();
                //foreach (DataGridViewRow dr in grMovi.Rows)
                //{
                //    if (!dr.IsNewRow)
                //    {
                //        bool vOk2= cArticulo.fncAlta(dr);
                //        if (vOk2)
                //        {
                //            //dr.Cells["Sel"].Value = false;

                //        }

                //    }
                //}

                vOk = true;
            }
            catch (Exception ex) { string vEr = ex.Message; }

            return(vOk);
        }
Exemple #6
0
        private void sbrGrabaMovCli()
        {
            if (cParamXml.ActCli == "False")
            {
                return;
            }

            tiProces.Enabled = false;
            lbMen.Text       = "Grabando Movimientos de Cliente";
            Application.DoEvents();
            DataTable dt = new DataTable();


            string vSql = cConstantes.SQL_AlbVenta_Pend;

            vSql = vSql.Replace("[?vbCr]", cConstantes.vbCtr.ToString());
            vSql = vSql.Replace("[?vbLf]", cConstantes.vbLF.ToString());
            vSql = vSql.Replace("[?Emp]", cParamXml.Emp.ToString());
            vSql = vSql.Replace("[?Grabado]", "= 0 ");

            dt = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConecProduc_Prueb));
            cAlbaranesVenta.LinAlbVenta oLinAlb = new cAlbaranesVenta.LinAlbVenta();

            foreach (DataRow dr in dt.Rows)
            {
                string vNumAlb  = dr["NumAlb"].ToString();
                string vNumPed  = dr["NumPed"].ToString();
                string vProd    = dr["Producto"].ToString();
                string vNomProd = dr["Descripción"].ToString();
                string vCan     = dr["Cantidad"].ToString();
                string vLote    = dr["Lote"].ToString();
                int    vId      = Convert.ToInt32(dr["Id"].ToString());
                if (vCan == "")
                {
                    vCan = "0";
                }
                decimal vCanEnt = Convert.ToDecimal(vCan);

                oLinAlb.Id = vId;

                //Busco el Producto en anexos
                string vWhere    = " Empresa = " + cParamXml.Emp + " and Producto = N'" + vProd + "'";
                string vProdAnex = cUtil.fncTraeCampo("Producto", "GC_ProductoAnexos", vWhere, "", cParamXml.strConecProduc_Prueb, "SQL", true);
                if (vProdAnex == "***Inex***")
                {
                    oLinAlb.fncGrabaCampo("Grabado", "12");
                }
                else
                {
                    //Crear movimientos de producto y materia prima
                    cMovimientos.Articulo oMov = new cMovimientos.Articulo();

                    //Movimiento de producto
                    if (vCanEnt == 0)
                    {
                        oLinAlb.fncGrabaCampo("Grabado", "13");
                    }
                    else if (oMov.fncAlta(cParamXml.Emp, "Salida", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, vNomProd, ("-" + vCan), vNumAlb, "", "", vLote))
                    {
                        oLinAlb.fncGrabaCampo("Grabado", "1");
                    }
                    else
                    {
                        oLinAlb.fncGrabaCampo("Grabado", "11");
                    }
                }
            }



            lbMen.Text = "";
            Application.DoEvents();
            tiProces.Enabled = true;
        }
Exemple #7
0
        private void sbrGrabaMov()
        {
            if (cParamXml.ActProv == "False")
            {
                return;
            }

            tiProces.Enabled = false;
            lbMen.Text       = "Grabando Movimientos de Proveedor";
            Application.DoEvents();
            DataTable dt = new DataTable();


            string vSql = cConstantes.SQL_AlbCompra_Pend;

            vSql = vSql.Replace("[?vbCr]", cConstantes.vbCtr.ToString());
            vSql = vSql.Replace("[?vbLf]", cConstantes.vbLF.ToString());
            vSql = vSql.Replace("[?Emp]", cParamXml.Emp.ToString());
            vSql = vSql.Replace("[?Grabado]", "= 0 ");

            dt = SQLDataAccess.Trae(vSql, cUtil.SQLConec(cParamXml.strConecProduc_Prueb));
            cAlbaranesCompra.LinAlbCompra oLinAlb = new cAlbaranesCompra.LinAlbCompra();

            foreach (DataRow dr in dt.Rows)
            {
                string vNumAlb  = dr["NumAlb"].ToString();
                string vLinAlb  = dr["Linea"].ToString();
                string vNumPed  = dr["NumPed"].ToString();
                string vProd    = dr["Producto"].ToString();
                string vNomProd = dr["Descripción"].ToString();
                string vCan     = dr["Cantidad"].ToString();
                string vLote    = dr["Lote"].ToString();
                string vRecep   = dr["RecepcionadoPor"].ToString();
                string vCert    = dr["Cert"].ToString();
                string vUbi     = dr["Ubi"].ToString();
                string vSerie   = dr["NumSerie"].ToString();



                int vId = Convert.ToInt32(dr["Id"].ToString());
                if (vCan == "")
                {
                    vCan = "0";
                }
                decimal vCanEnt = Convert.ToDecimal(vCan);

                oLinAlb.Id = vId;

                if (vCert == "")
                {
                    oLinAlb.fncGrabaCampo("Grabado", "14");
                    lbMen.Text = "";
                    Application.DoEvents();
                    tiProces.Enabled = true;
                    return;
                }

                if (vLote == "")
                {
                    oLinAlb.fncGrabaCampo("Grabado", "15");
                    lbMen.Text = "";
                    Application.DoEvents();
                    tiProces.Enabled = true;
                    return;
                }

                //if (vRecep == "")
                //{
                //    oLinAlb.fncGrabaCampo("Grabado", "16");
                //    lbMen.Text = "";
                //    Application.DoEvents();
                //    tiProces.Enabled = true;
                //    return;
                //}



                //Busco el Producto en anexos
                string vWhere    = " Empresa = " + cParamXml.Emp + " and Producto = N'" + vProd + "'";
                string vProdAnex = cUtil.fncTraeCampo("Producto", "GC_ProductoAnexos", vWhere, "", cParamXml.strConecProduc_Prueb, "SQL", true);
                if (vProdAnex == "***Inex***")
                {
                    oLinAlb.fncGrabaCampo("Grabado", "12");
                }
                else
                {
                    //Crear movimientos de producto y materia prima
                    cMovimientos.Articulo oMov = new cMovimientos.Articulo();
                    cProductoLote         oPL  = new cProductoLote();

                    //Movimiento de producto
                    if (oMov.fncAlta(cParamXml.Emp, "Entrada", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, vNomProd,
                                     vCan, vNumAlb, "", vUbi, vLote))
                    {
                        oLinAlb.fncGrabaCampo("Grabado", "1");
                        string vNumSer = vSerie;
                        if (vNumSer == "")
                        {
                            vNumSer = SQLDataAccess.GenTraeNumSerie("ProductoLote", true, cParamXml.strConec);
                        }
                        oPL.fncAlta(cParamXml.Emp, vNumSer, vProd, vLote, vNumAlb, Convert.ToInt32(vLinAlb));
                    }
                    else
                    {
                        oLinAlb.fncGrabaCampo("Grabado", "11");
                    }
                }
            }



            lbMen.Text = "";
            Application.DoEvents();
            tiProces.Enabled = true;
        }
        private bool fncElimEntregar(string vReg)
        {
            //_Res += ID + "#" +vAlb + "#" + vLin + "#" + vIdOF + "#" + vCaja + "#" + vCan + "#" + vLote + "|";

            bool vOk = false;

            cEntregas.LinPrepEntregas linp = (cEntregas.LinPrepEntregas)bS2.Current;
            int    vNumPrep = linp.NumPrep;
            int    vLinPrep = linp.LinPrep;
            string vsNumPed = linp.PedLocal;

            if (vsNumPed == "")
            {
                vsNumPed = "0";
            }
            int    vNumPed = Convert.ToInt32(vsNumPed);
            int    vLinPed = linp.LinPedLocal;
            string vProd   = linp.Producto;


            using (SqlConnection dbConec = new SqlConnection(cParamXml.strConecProduc_Prueb))
            {
                dbConec.Open();
                SqlTransaction dbTr = dbConec.BeginTransaction();
                try
                {
                    string[] vmReg = vReg.Split('|');
                    for (int i = 0; i < vmReg.Length; i++)
                    {
                        string vR = vmReg[i].ToString();
                        if (vR.Length < 2)
                        {
                            break;
                        }

                        string[] vmR = vR.Split('#');

                        int    vID    = Convert.ToInt32(vmR[0].ToString());
                        string vOFL   = vmR[3].ToString();
                        string vCajas = vmR[4].ToString();
                        string vCan   = vmR[5].ToString();
                        string vLote  = vmR[6].ToString();
                        string vUbi   = cMovimientos.Articulo.fncTraeUbi(cParamXml.Emp, vNumPrep.ToString(), vProd, "Salida", "-" + vCan, vLote);

                        int vNumAlb = 0;
                        //Damos de Baja la linea
                        cAlbaranesVenta.LinAlb oLinAlb = new cAlbaranesVenta.LinAlb();
                        if (oLinAlb.fncBaja(vID, dbConec, dbTr))
                        {
                            //Grabamos la cantridad entregada de la preparación
                            if (cEntregas.LinPrepEntregas.fncMenosCantidadServida(cParamXml.Emp.ToString(), vNumPrep, vLinPrep, vCan.ToString(), dbConec, dbTr))
                            {
                                //Si la entrega es de un pedido de modifica la cantidad entregada del pedido
                                if (vNumPed != 0)
                                {
                                    if (!cPedidosVenta.LinVenta.fncMenosCantidadServida(cParamXml.Emp.ToString(), vNumPed, vLinPed, vCan.ToString(), dbConec, dbTr))
                                    {
                                        return(vOk);
                                    }
                                }
                                //Movimientos de Producto
                                cMovimientos.Articulo oMov = new cMovimientos.Articulo();

                                if (oMov.fncAlta(cParamXml.Emp, "Entrada", DateTime.Now, DateTime.Now, cParamXml.AlmacenMat, vProd, txDesProd.Text,
                                                 vCan.ToString(), vNumPrep.ToString(), vOFL, vUbi, vLote))
                                {
                                    vOk = true;
                                }
                            }
                        }

                        //Descactivamos las cajas seleccionadas
                        if ((vCajas != "") & (vOFL != ""))
                        {
                            string[] vmCajas = vCajas.Split(',');
                            for (int i2 = 0; i2 < vmCajas.Length; i2++)
                            {
                                string vSql   = "";
                                string vTabla = " GC_OrdenProdCajas";
                                string vCampo = "Entregada";
                                string vWhere = " IdOF = '" + vOFL.Trim() + "' AND (NumCajaBolsa = " + vmCajas[i2] + ")";
                                vSql = cConstantes.SQL_UP_Update;
                                vSql = vSql.Replace("[?1]", "[" + vCampo + "]");
                                vSql = vSql.Replace("[?2]", "0");
                                vSql = vSql.Replace("[?3]", vWhere);
                                vSql = vSql.Replace("[?99]", vTabla);
                                int viOk = SQLDataAccess.GEN_ExecuteNonQuery(vSql, cParamXml.strConecProduc_Prueb);
                            }
                        }
                    }
                }
                catch { vOk = false; }

                if (vOk)
                {
                    //Al terminar correctamente los cambios se graban
                    dbTr.Commit();
                    vOk = true;
                }
                else
                {
                    //Al terminar con error se revierten los cambios
                    dbTr.Rollback();
                    vOk = false;
                }
            }


            return(vOk);
        }