Esempio n. 1
0
        public int Agregar(object entity)
        {
            DBConexion db = new DBConexion();
            Motivo m = entity as Motivo;
            int k = 0;

            db.cmd.CommandText = "INSERT INTO MotivoIS(nombre) VALUES (@nombre)";
            db.cmd.Parameters.AddWithValue("@nombre", m.Nombre);

            try
            {
                db.conn.Open();

                k = db.cmd.ExecuteNonQuery();

                db.conn.Close();

            }
            catch (SqlException e)
            {
                MessageBox.Show(e.StackTrace.ToString());
            }

            return k;
        }
        public void Guardar(DynamicGrid almacenDG )
        {
            DBConexion db = new DBConexion();
            db.conn.Open();
            SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
            db.cmd.Transaction = trans;
            uSQL = new UbicacionSQL(db);
            DataTable temporal= uSQL.CrearUbicacionesDT();
            uSQL.AgregarFilasToUbicacionesDT(temporal, almacenDG.Ubicaciones, id);
            uSQL.AgregarMasivo(temporal, trans);
            int exito= uSQL.ActualizarUbicacionMasivo();
            if (exito > 0)
            {
                UtilesSQL util = new UtilesSQL(db);
                util.LimpiarTabla("TemporalUbicacion");
                trans.Commit();
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Se guardo el stock"));

            }
            else
            {
                trans.Rollback();
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Error: Revisar conexión al servidor"));
            }
        }
        public int GuardarTienda(MadeInHouse.Dictionary.DynamicGrid anaquel, MadeInHouse.Dictionary.DynamicGrid deposito)
        {
            Evaluador eva = new Evaluador();
            if (String.IsNullOrEmpty(TxtAlturaAnq) || String.IsNullOrEmpty(TxtNumColumnsAnq) || String.IsNullOrEmpty(TxtNumRowsAnq) ||
                 String.IsNullOrEmpty(TxtAlturaDto) || String.IsNullOrEmpty(TxtNumColumnsDto) || String.IsNullOrEmpty(TxtNumRowsDto) ||
                !eva.esNumeroEntero(TxtNumColumnsAnq) || !eva.esNumeroEntero(TxtNumColumnsDto) || !eva.esNumeroEntero(TxtNumRowsAnq) || !eva.esNumeroEntero(TxtNumRowsDto) ||
                !eva.esNumeroEntero(TxtAlturaAnq) || !eva.esNumeroEntero(TxtAlturaDto) ||
                int.Parse(TxtAlturaDto) <= 0 || int.Parse(TxtAlturaAnq) <= 0 || int.Parse(TxtNumColumnsAnq) <= 0 || int.Parse(TxtNumColumnsDto) <= 0 ||
                int.Parse(TxtNumRowsAnq) <= 0 || int.Parse(TxtNumRowsDto) <= 0  )
            {
                System.Windows.MessageBox.Show("Debes ingresar un numero entero para el numero de filas , columnas y altura");
                return 1;
            }

            int exito = 0;

            DBConexion db = new DBConexion();
            db.conn.Open();
            SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
            db.cmd.Transaction = trans;
            pxaSQL = new ProductoSQL(db);

                /*Agrega una tienda*/
                Tienda tienda = new Tienda();
                tienda.Estado = 1;
                tienda.Nombre = txtNombre;
                tienda.Direccion = txtDir;
                tienda.Telefono = txtTelef;
                tienda.Administrador = txtAdmin;
                Ubigeo seleccionado = new Ubigeo();
                UbigeoSQL uSQL = new UbigeoSQL(db);
                seleccionado = uSQL.buscarUbigeo(selectedDpto, selectedProv, selectedDist);
                tienda.IdUbigeo = seleccionado.IdUbigeo;
                tienda.FechaReg = DateTime.Today;
                TiendaSQL gw = new TiendaSQL(db);
                int idTienda=-1;

                if (accion == 1)
                    idTienda = gw.AgregarTienda(tienda);
                else if (accion == 2)
                {
                    tienda.IdTienda = this.idTienda;
                    exito = gw.ActualizarTienda(tienda);
                }
               if (idTienda > 0 || exito>0)
                {

                    /*Se agregan las dos partes de la tienda*/
                    AlmacenSQL aSQL = new AlmacenSQL(db);

                    /*anaquel*/
                    Almacenes ana = new Almacenes();
                    ana.CodAlmacen = "ANA00" + tienda.IdTienda.ToString();
                    ana.IdTienda = tienda.IdTienda;
                    ana.Nombre = "Anaquel de "+ txtNombre;
                    ana.Telefono = tienda.Telefono;
                    ana.Direccion = tienda.Direccion;
                    ana.NroColumnas = int.Parse(TxtNumColumnsAnq);
                    ana.NroFilas = int.Parse(TxtNumRowsAnq);
                    ana.Altura = int.Parse(TxtAlturaAnq);
                    ana.Tipo = 2;
                    int idAnaquel=-1;
                    if (accion == 1)
                        idAnaquel = aSQL.Agregar(ana);
                    else if (accion == 2)
                    {
                        ana.IdAlmacen = this.idAnaquel;
                        exito = aSQL.Actualizar(ana);
                    }
                    if (idAnaquel > 0 || exito>0)
                    {

                        /*deposito*/
                        Almacenes dto = new Almacenes();
                        dto.CodAlmacen = "DTO00" + tienda.IdTienda.ToString();
                        dto.IdTienda = tienda.IdTienda;
                        dto.Nombre = "Deposito de " + txtNombre;
                        dto.Telefono = tienda.Telefono;
                        dto.Direccion = tienda.Direccion;
                        dto.NroColumnas = int.Parse(TxtNumColumnsDto);
                        dto.NroFilas = int.Parse(TxtNumRowsDto);
                        dto.Altura = int.Parse(TxtAlturaDto);
                        dto.Tipo = 1;
                        int idDeposito=-1;
                        if (accion == 1)
                            idDeposito = aSQL.Agregar(dto);
                        else if (accion == 2)
                        {
                            dto.IdAlmacen = this.idDeposito;
                            exito = aSQL.Actualizar(dto);
                        }

                        if (idDeposito > 0 || exito>0)
                        {
                            if (accion == 1)
                            {
                                /*Productos de la tienda*/
                                for (int i = 0; i < LstProductos.Count; i++)
                                {
                                    LstProductos[i].IdAlmacen = idDeposito;
                                    LstProductos[i].IdTienda = idTienda;
                                     exito = pxaSQL.AgregarProductoxAlmacen(LstProductos[i]);

                                    if (exito <= 0) break;
                                }
                            }
                            else if (accion == 2)
                            {
                                DataTable productoxAlmacenDT= pxaSQL.CrearProductoxAlmacenDT();
                                pxaSQL.AgregarFilasToDT(productoxAlmacenDT, LstProductos);
                                exito = pxaSQL.ActualizarProductoxAlmacen(productoxAlmacenDT,trans);
                            }

                            if (exito > 0)
                            {
                               DataTable zonaxAlmacenData = CrearZonasDT();
                                AgregarFilasToZonasDT(zonaxAlmacenData, anaquel.listaZonas, (accion==1) ? idAnaquel :this.idAnaquel );
                                AgregarFilasToZonasDT(zonaxAlmacenData, deposito.listaZonas, (accion==1) ? idDeposito : this.idDeposito );

                                if (accion==1)
                                    exito = aSQL.AgregarZonasMasivo(zonaxAlmacenData, trans);
                                else if (accion==2)
                                    exito = aSQL.ActualizarZonasMasivo(zonaxAlmacenData, trans);

                                if (exito > 0)
                                {

                                    UbicacionSQL ubSQL = new UbicacionSQL(db);

                                    /*Ubicaciones del anaquel*/
                                    DataTable ubicacionesData = CrearUbicacionesDT();
                                    AgregarFilasToUbicacionesDT(ubicacionesData, anaquel.Ubicaciones, (accion == 1) ? idAnaquel : this.idAnaquel);
                                    AgregarFilasToUbicacionesDT(ubicacionesData, deposito.Ubicaciones, (accion == 1) ? idDeposito : this.idDeposito);

                                    if (accion == 1)
                                        exito = ubSQL.AgregarMasivo(ubicacionesData, trans);
                                    else if (accion == 2)
                                        exito = ubSQL.ActualizarUbicacionMasivo(ubicacionesData, trans);

                                    if (exito > 0)
                                    {
                                        trans.Commit();
                                        if (accion == 1)
                                        {
                                            //1: Agregar, 2: Editar, 3: Eliminar, 4: Recuperar, 5: Desactivar
                                            DataObjects.Seguridad.LogSQL.RegistrarActividad("Registrar Tienda", tienda.IdTienda+"", 1);
                                            System.Windows.MessageBox.Show("Se creó la tienda correctamente");
                                        }
                                        else if (accion == 2)
                                        {
                                            //1: Agregar, 2: Editar, 3: Eliminar, 4: Recuperar, 5: Desactivar
                                            DataObjects.Seguridad.LogSQL.RegistrarActividad("Actualizar Tienda",tienda.IdTienda+"" , 2);
                                            System.Windows.MessageBox.Show("Se editó la tienda correctamente");
                                        }
                                        return 1;
                                    }
                                    else
                                    {
                                        System.Windows.MessageBox.Show("ERROR");
                                    }
                                }
                                else
                                {
                                    System.Windows.MessageBox.Show("ERROR");
                                }
                            }
                            else
                            {
                                System.Windows.MessageBox.Show("ERROR");
                            }
                        }
                        else
                        {
                            System.Windows.MessageBox.Show("ERROR");
                        }
                    }
                    else
                    {
                        System.Windows.MessageBox.Show("ERROR");
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("ERROR");
                }

                trans.Rollback();
                return -1;

               // System.Windows.MessageBox.Show("Se creo correctamente la tienda con id: " + idTienda.ToString() + " con anaquel id: " + idAnaquel.ToString() + " y con deposito id :" + idDeposito.ToString());
        }
Esempio n. 4
0
        public string registrarDevolucion(Devolucion dev, List<DevolucionProducto> prod)
        {
            DBConexion db = new DBConexion();
            db.conn.Open();
            SqlTransaction trans = db.conn.BeginTransaction();
            db.cmd.Transaction = trans;
            DevolucionSQL devSQL = new DevolucionSQL(db);
            int idDevolucion;
            string message;

            if ((idDevolucion = devSQL.insertarDevolucion(dev)) > 0)
            {
                if (devSQL.insertarProductosDevolucion(idDevolucion, prod))
                {
                    trans.Commit();
                    return "La operacion fue exitosa";
                }
                else
                    message = "Hubo un error al agregar los productos";
            }
            else
                message = "No se pudo crear la solicitud";

            trans.Rollback();
            return message;
        }
        public void GuardarVenta(string cmbTipoVenta)
        {
            int numFilas = LstVenta.Count();
            if (numFilas > 0)
            {
                Venta v = new Venta();
                v.LstDetalle = new List<DetalleVenta>();
                v.LstPagos = new List<VentaPago>();
                v.LstDetalleServicio = new List<DetalleVentaServicio>();
                //guardar datos de la venta
                //completar
                if (tipoVenta[cmbTipoVenta] == 0)
                    v.TipoDocPago = "Boleta";
                else
                {
                    v.TipoDocPago = "Factura";
                    //validar que los datos de ruc y razon social
                    if (!string.IsNullOrEmpty(TxtRuc) && !string.IsNullOrEmpty(TxtRazonSocial))
                    {
                        v.Ruc = TxtRuc;
                        v.RazonSocial = TxtRazonSocial;
                    }
                    else
                    {
                        MessageBox.Show("Falta ingresar Ruc o Razón Social", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }

                v.NumDocPago = null;
                v.TipoVenta = "Tienda";
                v.Estado = 1;
                v.FechaReg = System.DateTime.Now;
                v.IdUsuario = Convert.ToInt32(Thread.CurrentPrincipal.Identity.Name);
                //idCliente desde la tarjeta de este si es que hay
                if (!string.IsNullOrEmpty(TxtCliente))
                {
                    v.IdCliente = Convert.ToInt32(cliente.Id);
                    v.CodTarjeta = Convert.ToInt32(TxtCliente);
                }
                else
                {
                    v.IdCliente = -1;
                    v.CodTarjeta = -1;
                }

                //guardar detalle de la venta
                foreach (DetalleVenta dv in lstVenta)
                {
                    v.LstDetalle.Add(dv);
                }
                v.Monto = total;
                v.Descuento = desc;
                v.Igv = igv_total;

                v.PtosGanados = Convert.ToInt32(v.Monto / PUNTO);

                foreach (VentaPago vp in lstPagos)
                {
                    if (vp.Nombre.Equals("Efectivo"))
                    {
                        vp.Monto -= Double.Parse(txtVuelto);
                    }
                    v.LstPagos.Add(vp);
                }

                //guardar detalle de servicios de la venta, si es que hay
                if (LstVentaServicios.Count() > 0)
                {
                    foreach (DetalleVentaServicio dvs in LstVentaServicios)
                    {
                        v.LstDetalleServicio.Add(dvs);
                    }
                }

                //insertar en la base de datos
                DBConexion db = new DBConexion();
                db.conn.Open();
                SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
                db.cmd.Transaction = trans;
                VentaSQL vsql = new VentaSQL(db);
                if (v.IdCliente == -1)
                {
                    int k = vsql.AgregarSinCliente(v);
                    if (k != 0)
                    {

                        NotaISSQL ntgw = new NotaISSQL();
                        NotaIS nota = new NotaIS();
                        AlmacenSQL asql = new AlmacenSQL();
                        nota.IdAlmacen = asql.BuscarAlmacen(-1, idTienda, 2).IdAlmacen;
                        // Logica de  Referencia de documento

                        //Si existe documento de referencia colocar el ID
                        nota.IdDoc = v.IdVenta;

                        nota.IdMotivo = 9;
                        nota.IdResponsable = v.IdUsuario;
                        nota.Observaciones = "Venta en Cajero";
                        nota.Tipo = 2;
                        List<ProductoCant> LstProductos = new List<ProductoCant>();
                        List<ProductoCant> lpcan = new List<ProductoCant>();

                        for (int i = 0; i < v.LstDetalle.Count; i++)
                        {
                            Producto p = new ProductoSQL().Buscar_por_CodigoProducto(v.LstDetalle.ElementAt(i).IdProducto);
                            ProductoCant pcan = new ProductoCant();
                            pcan.IdProducto = p.IdProducto;
                            pcan.CodigoProd = p.CodigoProd;
                            pcan.Nombre = p.Nombre;
                            pcan.CanAtender = v.LstDetalle.ElementAt(i).Cantidad.ToString();
                            lpcan.Add(pcan);

                        }
                        LstProductos = new List<ProductoCant>(lpcan);

                        nota.LstProducto = LstProductos;

                        nota.IdNota = ntgw.AgregarNota(nota);

                        trans.Commit();
                        ntgw.AgregarNotaxSector(nota);
                        MessageBox.Show("Venta Realizada con Exito");
                        Limpiar();
                    }
                    else
                    {
                        trans.Rollback();
                        MessageBox.Show("Ocurrio un Error en el proceso");
                    }
                }
                else
                {
                    int k = vsql.Agregar(v);
                    if (k != 0)
                    {

                        NotaISSQL ntgw = new NotaISSQL();
                        NotaIS nota = new NotaIS();
                        AlmacenSQL asql = new AlmacenSQL();
                        nota.IdAlmacen = asql.BuscarAlmacen(-1, idTienda, 2).IdAlmacen;
                        // Logica de  Referencia de documento

                        //Si existe documento de referencia colocar el ID
                        nota.IdDoc = v.IdVenta;

                        nota.IdMotivo = 9;
                        nota.IdResponsable = v.IdUsuario;
                        nota.Observaciones = "Venta en Cajero";
                        nota.Tipo = 2;
                        List<ProductoCant> LstProductos = new List<ProductoCant>();
                        List<ProductoCant> lpcan = new List<ProductoCant>();

                        for (int i = 0; i < v.LstDetalle.Count; i++)
                        {
                            Producto p = new ProductoSQL().Buscar_por_CodigoProducto(v.LstDetalle.ElementAt(i).IdProducto);
                            ProductoCant pcan = new ProductoCant();
                            pcan.IdProducto = p.IdProducto;
                            pcan.CodigoProd = p.CodigoProd;
                            pcan.Nombre = p.Nombre;
                            pcan.CanAtender = v.LstDetalle.ElementAt(i).Cantidad.ToString();
                            lpcan.Add(pcan);

                        }
                        LstProductos = new List<ProductoCant>(lpcan);

                        nota.LstProducto = LstProductos;

                        nota.IdNota = ntgw.AgregarNota(nota);

                        trans.Commit();

                        ntgw.AgregarNotaxSector(nota);
                        MessageBox.Show("Venta Realizada con Exito");
                        Limpiar();
                    }
                    else
                    {
                        trans.Rollback();
                        MessageBox.Show("Ocurrio un Error en el proceso");
                    }
                }

                if (v.TipoDocPago.Equals("Boleta"))
                {
                    GenerarPDFBoletaProductos(v);
                    if (v.LstDetalleServicio.Count() > 0)
                        GenerarPDFBoletaServicios(v);
                }
                else
                {
                    GenerarPDFFacturaProductos(v);
                    if (v.LstDetalleServicio.Count() > 0)
                        GenerarPDFFacturaServicios(v);
                }

            }
            else
            {
                MessageBox.Show("Debe ingreasar datos de la venta");
                return;
            }
        }
        public int GuardarAlmacen(MadeInHouse.Dictionary.DynamicGrid deposito)
        {
            int exito = 1;

            DBConexion db = new DBConexion();
            db.conn.Open();
            SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
            db.cmd.Transaction = trans;

            Almacenes central = new Almacenes();
            central.Estado = 1;
            central.CodAlmacen = "CENTRAL001";
            central.Nombre = TxtNombre;
            central.Direccion = TxtDir;
            central.Telefono = TxtTelefono;
            central.Administrador = txtAdmin;
            Ubigeo seleccionado = new Ubigeo();
            UbigeoSQL uSQL = new UbigeoSQL(db);
            seleccionado = uSQL.buscarUbigeo(selectedDpto, selectedProv, selectedDist);
            central.IdUbigeo = seleccionado.IdUbigeo;
            central.FechaReg = DateTime.Today;
            AlmacenSQL aSQL = new AlmacenSQL(db);
            if (TxtNumColumns != null) central.NroColumnas = int.Parse(TxtNumColumns);
            else return -1;
            central.NroFilas = int.Parse(TxtNumRows);

            if (TxtAltura != null) central.Altura = int.Parse(TxtAltura);
            else return -1;
            central.Tipo = 3;
            int idAlmacen = aSQL.Agregar(central);
            central.IdAlmacen = idAlmacen;
            central.CodAlmacen = "CENTRAL001";
            int up = aSQL.Actualizar(central);

            if (idAlmacen > 0 && up > 0)
            {
                DataTable zonaxAlmacenData = CrearZonasDT();
                AgregarFilasToZonasDT(zonaxAlmacenData, deposito.listaZonas, idAlmacen);
                /*Agrego las zonas por almacen*/

                exito = aSQL.AgregarZonasMasivo(zonaxAlmacenData, trans);

                if (exito > 0)
                {
                    UbicacionSQL ubSQL = new UbicacionSQL(db);

                    /*Ubicaciones del anaquel*/
                    DataTable ubicacionesData = CrearUbicacionesDT();
                    AgregarFilasToUbicacionesDT(ubicacionesData, deposito.Ubicaciones, idAlmacen);
                    exito = ubSQL.AgregarMasivo(ubicacionesData, trans);

                    trans.Commit();
                    _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Se creó el almacen central correctamente"));
                    return 1;
                }
                else
                {
                    _windowManager.ShowDialog(new AlertViewModel(_windowManager, "ERROR"));
                }
            }
            else
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "ERROR"));
            }

            trans.Rollback();
            return -1;
        }
        public void AnularVenta()
        {
            int resultado;

            if (VentaSeleccionada != null)
            {
                if (ventaSeleccionada.TipoVenta.Equals("Tienda"))
                {
                    DBConexion db = new DBConexion();
                    db.conn.Open();
                    SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
                    db.cmd.Transaction = trans;
                    VentaSQL vsql = new VentaSQL(db);
                    resultado = vsql.AnularVentaTienda(ventaSeleccionada);
                    if (resultado == 0)
                    {
                        trans.Rollback();
                        MessageBox.Show("No se pudo anular la venta", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    else
                    {
                        trans.Commit();
                        MessageBox.Show("Se ha anulado la venta satistactoriamente");
                    }
                }
                else
                {
                    VentaSQL vsql = new VentaSQL();
                    resultado = vsql.AnularVentaObra(ventaSeleccionada);
                    if (resultado == 0)
                    {
                        MessageBox.Show("No se pudo anular la venta", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    if (resultado == 3)
                    {
                        MessageBox.Show("No se puede anular esta venta, pues ya fue atendida", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    if(resultado == 2)
                    {
                        MessageBox.Show("La venta ha sido anulada satistactoriamente");
                    }
                }
            }
            else
            {
                MessageBox.Show("No ha seleccionado ninguna Venta", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        public void GuardarVenta(string cmbTipoVenta)
        {
            int numFilas = LstVenta.Count();
            if (numFilas > 0)
            {
                if (Validar())
                {
                    Venta v = new Venta();
                    v.LstDetalle = new List<DetalleVenta>();
                    v.LstPagos = new List<VentaPago>();
                    v.LstDetalleServicio = new List<DetalleVentaServicio>();
                    //guardar datos de la venta

                    if (tipoVenta[cmbTipoVenta] == 0)
                        v.TipoDocPago = "Boleta";
                    else
                    {
                        v.TipoDocPago = "Factura";
                        if (String.IsNullOrEmpty(TxtRazonSocial) || String.IsNullOrEmpty(TxtRuc))
                        {
                            MessageBox.Show("Se requiere Razón Social y ruc para la factura", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }
                    }

                    v.NumDocPago = null;
                    v.IdUsuario = Convert.ToInt32(Thread.CurrentPrincipal.Identity.Name);
                    v.Direccion = TxtDireccion;
                    v.Telefono = TxtTelefono;
                    v.IdCliente = cli.Cliente.Id;
                    v.CodTarjeta = Convert.ToInt32(cli.CodTarjeta);

                    v.FechaReg = System.DateTime.Now;
                    v.FechaDespacho = fechaDespacho;
                    v.TipoVenta = "Obra";
                    v.Estado = 1;

                    //guardar detalle de productos de la venta
                    foreach (DetalleVenta dv in lstVenta)
                    {
                        v.LstDetalle.Add(dv);
                    }

                    //guardar detalle de servicios de la venta, si es que hay
                    if (LstVentaServicios.Count() > 0)
                    {
                        foreach (DetalleVentaServicio dvs in LstVentaServicios)
                        {
                            v.LstDetalleServicio.Add(dvs);
                        }
                    }

                    v.Monto = total;
                    v.Descuento = desc;
                    v.Igv = igv_total;
                    v.PtosGanados = Convert.ToInt32(v.Monto / PUNTO);

                    //guardar el pago de la venta
                    foreach (VentaPago vp in lstPagos)
                    {
                        if (vp.Nombre.Equals("Efectivo"))
                        {
                            vp.Monto -= Double.Parse(txtVuelto);
                        }
                        v.LstPagos.Add(vp);
                    }

                    //insertar la venta en la base de datos
                    DBConexion db = new DBConexion();
                    db.conn.Open();
                    SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.Serializable);
                    db.cmd.Transaction = trans;
                    VentaSQL vsql = new VentaSQL(db);
                    int k = vsql.AgregarVentaObra(v);
                    if (k != 0)
                    {
                        trans.Commit();
                        MessageBox.Show("Venta Realizada con Exito");
                        Limpiar();
                        if (v.TipoDocPago.Equals("Boleta"))
                        {
                            GenerarPDFBoletaProductos(v);
                            if (v.LstDetalleServicio.Count() > 0)
                                GenerarPDFBoletaServicios(v);
                        }
                        else
                        {
                            GenerarPDFFacturaProductos(v);
                            if (v.LstDetalleServicio.Count() > 0)
                                GenerarPDFFacturaServicios(v);
                        }
                    }
                    else
                    {
                        trans.Rollback();
                        MessageBox.Show("Ocurrio un Error en el proceso");
                    }
                }

            }
            else
            {
                MessageBox.Show("Falta ingresar produtos", "AVISO", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
        }
        public void GuardarMovimiento(DynamicGrid anaquel, DynamicGrid deposito)
        {
            int exito;

            /*Inicializacion de la transacción*/
            DBConexion db = new DBConexion();
            try
            {
                db.conn.Open();
                SqlTransaction trans = db.conn.BeginTransaction(IsolationLevel.ReadCommitted);

                db.cmd.Transaction = trans;

                SectorSQL sectorSQL = new SectorSQL(db);
                UbicacionSQL ubicacionSQL = new UbicacionSQL(db);

                /*Tablas temporales*/
                DataTable sectoresDT = sectorSQL.CrearSectoresDT();
                DataTable ubicacionesDT = ubicacionSQL.CrearUbicacionesDT();

                List<Sector> lstSectores = new List<Sector>();
                List<Ubicacion> ubicacionesModificadas = new List<Ubicacion>();

                /*Agrupo todos los sectores y ubicaciones modificadas*/
                for (int i = 0; i < anaquel.lstZonas.Count; i++)
                {
                    lstSectores.AddRange(anaquel.lstZonas[i].LstSectores);
                    for (int j = 0; j < anaquel.lstZonas[i].LstSectores.Count; j++)
                    {
                        ubicacionesModificadas.AddRange(anaquel.lstZonas[i].LstSectores[j].LstUbicaciones);
                    }

                }

                /*Agrego las filas a los DT*/
                sectorSQL.AgregarFilasToSectoresDT(sectoresDT, lstSectores);
                ubicacionSQL.AgregarFilasToUbicacionesDT(ubicacionesDT, ubicacionesModificadas);

                /*empieza el guardado en la bd*/
                exito = sectorSQL.AgregarMasivo(sectoresDT, trans); //insertados en TemporalSector
                if (exito > 0)
                {
                    exito = sectorSQL.ActualizarSectorMasivo(); //actualizados en tabla Sector
                    if (exito > 0)
                    {

                        exito = sectorSQL.ActualizarIdSector(); //actualizo idSector en tabla sector
                        if (exito > 0)
                        {
                            /*Agrego las ubicaciones de almacen de salida*/
                            ubicacionSQL.AgregarFilasToUbicacionesDT(ubicacionesDT, deposito.Ubicaciones, deposito.Ubicaciones[0][0][0].IdAlmacen);
                            exito = ubicacionSQL.AgregarMasivo(ubicacionesDT, trans);
                            if (exito > 0)
                            {
                                exito = ubicacionSQL.ActualizarIdSector();
                                if (exito > 0)
                                {
                                    exito = ubicacionSQL.ActualizarUbicacionMasivo();
                                    if (exito > 0)
                                    {
                                        /*Agrego el movimiento como un "todo" a la bd*/
                                        NotaISSQL notaSQL = new NotaISSQL(db);

                                        /*Salida para el depósito*/
                                        NotaIS nota = new NotaIS();
                                        nota.IdMotivo = 8;
                                        nota.Tipo = 2;
                                        nota.Observaciones = "";
                                        nota.IdDoc = 0;
                                        nota.IdAlmacen = idDeposito;
                                        nota.IdResponsable = idResponsable;

                                        /*Entrada para el anaquel*/
                                        NotaIS notaAn = new NotaIS();
                                        notaAn.IdMotivo = 8;
                                        notaAn.Tipo = 1;
                                        notaAn.Observaciones = "";
                                        notaAn.IdDoc = 0;
                                        notaAn.IdAlmacen = idAnaquel;
                                        notaAn.IdResponsable = idResponsable;

                                        int idNotaDeposito = notaSQL.AgregarNota(nota, 1);
                                        int idNotaAnaquel = notaSQL.AgregarNota(notaAn, 1);

                                        if (idNotaDeposito > 0 && idNotaAnaquel> 0)
                                        {
                                            exito = sectorSQL.ActualizarTemporalSector(idNotaDeposito);

                                            if (exito > 0)
                                            {
                                                exito = notaSQL.AgregarNotaxSector();

                                                if (exito > 0)
                                                {
                                                    exito = sectorSQL.ActualizarTemporalSector(idNotaAnaquel);

                                                    if (exito > 0)
                                                    {
                                                        exito = notaSQL.AgregarNotaxSector();
                                                        if (exito > 0)
                                                        {
                                                            UtilesSQL util = new UtilesSQL(db);
                                                            util.LimpiarTabla("TemporalUbicacion");
                                                            util.LimpiarTabla("TemporalSector");

                                                            trans.Commit();
                                                            _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Los productos fueron transferidos correctamente"));
                                                            return;
                                                        }

                                                    }

                                                }
                                            }

                                        }

                                    }
                                }
                            }
                        }
                    }
                }
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Lo sentimos , se produjo un error"));
                trans.Rollback();
            }
            catch (SqlException e)
            {
                _windowManager.ShowDialog(new AlertViewModel(_windowManager, "Se fue la conexión"));
            }
        }