private void TraerDatos()
 {
     IgvPuntos ip = new IgvPuntos();
     VentaSQL vsql = new VentaSQL();
     ip = vsql.sacarDatos();
     TxtIgv = ip.Igv.ToString();
     TxtPuntos = ip.Puntos.ToString();
 }
        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 void Guardar()
 {
     VentaSQL vsql = new VentaSQL();
     vsql.ActualizarIgvPuntos(TxtIgv,TxtPuntos);
 }
 public Venta getVentafromID(int id)
 {
     Venta c = new VentaSQL().buscarVentaPorId(id);
     return c;
 }
        public void BuscarVentas()
        {
            if (Validar())
            {

                LstVentas = new VentaSQL().Buscar(TxtDocPago,  MontoMin, MontoMax,client,fechaInicio,fechaFin,getEstado(SelectedEstado) ) as List<Venta>;
            }
        }
        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;
            }
        }