public int AgregarAbono(PagosVenta pagosVenta)
 {
     if (pagosVenta.CveVenta == 0)
         throw new ValidationException("Busque la venta que le quiere hacer abono");
     if (pagosVenta.Abono==0)
         throw new ValidationException("Indique el monto a abonar");
     if (pagosVenta.Saldo<0)
         throw new ValidationException("No puede abonar mas que el saldo");
     if (pagosVenta.Saldo<0)
         throw new ValidationException("No puede abonar mas de lo que se debe");
     _entidades.PagosVentas.InsertOnSubmit(pagosVenta);
     _entidades.SubmitChanges();
     return pagosVenta.Clave;
 }
        public void Guardar()
        {
            try
            {
                if (!ClsVerificarCaja.CajaEstado())
                {
                    MessageBox.Show("La Caja del Dia de hoy ya se ha cerrado\n SISTEMA BLOQUEADO", "Caja Cerrada", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Exit();
                }
                if ((int)txtCveAbono.EditValue == 0)
                {

                    PagosVenta abono = new PagosVenta
                    {
                        CveVenta = Convert.ToInt32(txtCveVenta.EditValue),
                        Abono = Convert.ToDecimal(txtAbono.EditValue),
                        Saldo = Convert.ToDecimal(Convert.ToDecimal(txtSaldo.EditValue) - Convert.ToDecimal(txtAbono.EditValue)),
                        FechaPago = dtpFechaAbono.DateTime.Date,
                        Estado = true,
                        CveUsuario = Convert.ToInt32(new clsModificarConfiguracion().configGetValue("IDUsuarioApp")),
                    };
                    txtCveAbono.EditValue = new LogicaAbonosVentas().AgregarAbono(abono);
                    Venta venta = _entidades.Ventas.Single(v => v.Clave == Convert.ToInt32(txtCveVenta.EditValue));
                    if (abono.Saldo == 0)
                    {
                        foreach (DetalleVenta detVta in venta.DetalleVentas)
                        {
                            Articulo art = detVta.Articulo;
                            art.Estado = "Vendido";
                        }
                        venta.Estado = "Pagado";
                    }
                    _entidades.SubmitChanges();
                    ImprimirTicketsAbono();
                    new ManejadorControles().DesectivarTextBox(gpoContenedor, false);
                    var pagos = from p in _entidades.PagosVentas
                                where p.Estado && p.CveVenta == venta.Clave
                                select
                                    new
                                    {
                                        p.Clave,
                                        p.Abono,
                                        p.FechaPago,
                                        Registró = p.Usuario.Nombre
                                    };
                    gridAbonos.DataSource = pagos;

                }
                else if ((int)txtCveAbono.EditValue > 0)
                {
                    ImprimirTicketsAbono();
                }
            }
            catch (ValidationException vex)
            {
                XtraMessageBox.Show(vex.Message, "Validación de Datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Error al Guardar", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 partial void DeletePagosVenta(PagosVenta instance);
 partial void UpdatePagosVenta(PagosVenta instance);
 partial void InsertPagosVenta(PagosVenta instance);
		private void detach_PagosVentas(PagosVenta entity)
		{
			this.SendPropertyChanging();
			entity.Usuario = null;
		}
		private void attach_PagosVentas(PagosVenta entity)
		{
			this.SendPropertyChanging();
			entity.Venta = this;
		}