private void OnTituloAgregado(VentaTitulo titulo)
 {
     if (TituloAgregado != null)
     {
         TituloAgregado(this, titulo);
     }
 }
        private VentaTitulo ObtenerTitulo()
        {
            VentaTitulo ventaTitulo = new VentaTitulo();

            ventaTitulo.TituloId = Id;
            ventaTitulo.Cod = Cod;
            ventaTitulo.TituloNombre = TituloNombre;
            ventaTitulo.Cantidad = Cantidad;
            ventaTitulo.CantidadPropia = CantidadPropia;
            ventaTitulo.CantidadConsignada = CantidadConsignada;
            if (PrecioBase > _tituloseleccionado.PrecioVentaTitulo)
                ventaTitulo.PrecioBase = PrecioVenta;
            else
                ventaTitulo.PrecioBase = _tituloseleccionado.PrecioVentaTitulo;//PrecioVenta;
            ventaTitulo.PrecioVenta = PrecioVenta;
            ventaTitulo.Descuento = Descuento;
            ventaTitulo.SubTotal = SubTotal;
            ventaTitulo.ProveedorId = _tituloseleccionado.ProveedorId;

            return ventaTitulo;
        }
 private void EliminarTituloDevolucion(VentaTitulo compraTituloDevolucion)
 {
     TitulosDevolucion.Remove(compraTituloDevolucion);
     RefrescarTitulos();
     OnDevolucionTitulosChanged(TitulosDevolucion);
     OnCompraTitulosChanged(Titulos);
 }
 private void TitulosConsignacionesDevueltaDetalle(VentaTitulo devolucionTitulo, int? _propia,Guid tituloconsignaciondevuelta)
 {
     TitulosConsignacionesDevueltasDetalle titulosConsignacionesDevueltasDetalle =
         new TitulosConsignacionesDevueltasDetalle();
     titulosConsignacionesDevueltasDetalle.Id = Guid.NewGuid();
     titulosConsignacionesDevueltasDetalle.TituloConsignacionDevueltaId = tituloconsignaciondevuelta;
     titulosConsignacionesDevueltasDetalle.TituloId = devolucionTitulo.TituloId;
     //titulosConsignacionesDevueltasDetalle.Cantidad = _propia + _consignada;
     titulosConsignacionesDevueltasDetalle.CantidadPropia =  _propia ?? 0;
     Uow.TitulosConsignacionesDevueltasDetalles.Agregar(titulosConsignacionesDevueltasDetalle);
 }
        private void EditarTituloDevolucion(VentaTitulo compraTituloDevolucion)
        {
            using (var formAgregarTitulo = FormFactory.Create<FrmSeleccionarLibro>(compraTituloDevolucion.TituloId, ActionFormMode.Edit))
            {
                formAgregarTitulo.Cantidad = compraTituloDevolucion.Cantidad;
                formAgregarTitulo.TituloAgregado += (o, titulo) =>
                {
                    if (!this.TitulosDevolucion.Any(t => t.TituloId == titulo.TituloId))
                    {
                        TitulosDevolucion.Add(titulo);
                        OnDevolucionTitulosChanged(TitulosDevolucion);
                        OnCompraTitulosChanged(Titulos);
                        RefrescarTitulos();
                    }
                    else
                    {
                        foreach (VentaTitulo devolucionTitulo in TitulosDevolucion)
                        {
                            if (devolucionTitulo.TituloId == titulo.TituloId)
                            {
                                devolucionTitulo.TituloId = titulo.TituloId;
                                devolucionTitulo.TituloNombre = titulo.TituloNombre;
                                devolucionTitulo.Cantidad = titulo.Cantidad;
                                devolucionTitulo.PrecioBase = titulo.PrecioBase;
                                devolucionTitulo.PrecioVenta = titulo.PrecioVenta;
                                devolucionTitulo.SubTotal = titulo.SubTotal;
                                OnDevolucionTitulosChanged(TitulosDevolucion);
                                OnCompraTitulosChanged(Titulos);
                                RefrescarTitulos();
                            }
                        }
                    }

                    formAgregarTitulo.Close();
                };

                formAgregarTitulo.ShowDialog();
            }
        }
        private void ActualizarPrecioTitulos(VentaTitulo titulo)
        {
            if (_formMode!= ActionFormMode.Edit)
            {
                List<Titulo> titulosModificar;
                if (String.IsNullOrEmpty(titulo.CodigoBarra))
                    titulosModificar = Uow.Titulos.Listado().Where(t => t.Id == titulo.TituloId).ToList();
                else
                {
                    int codigo;
                    int codBarra = int.TryParse(titulo.CodigoBarra, out codigo) ? codigo : codigo;
                    if (codBarra == 0)
                        titulosModificar = Uow.Titulos.Listado().Where(t => t.Id == titulo.TituloId).ToList();
                    else
                        titulosModificar = Uow.Titulos.Listado().Where(t => t.CodigoBarra == titulo.CodigoBarra).ToList();
                }


                if (titulosModificar != null)
                {
                    foreach (var tituloModificar in titulosModificar)
                    {
                        tituloModificar.PrecioVentaTitulo = PrecioVenta;
                        tituloModificar.OperadorModificacionId = Context.OperadorActual.Id;
                        tituloModificar.FechaModificacion = _clock.Now;
                        tituloModificar.SucursalModificacionId = Context.SucursalActual.Id;
                        tituloModificar.UbicacionId = null;
                        tituloModificar.OperadorUltimoPrecioId = this.Context.OperadorActual.Id;

                        Uow.Titulos.Modificar(tituloModificar);
                    }
                    Uow.Commit();
                }
                Uow.Commit();
            }
            else if (_formMode == ActionFormMode.Edit)
            {
                List<Titulo> titulosModificar;
                if (String.IsNullOrEmpty(titulo.CodigoBarra))
                    titulosModificar = Uow.Titulos.Listado().Where(t => t.Id == titulo.TituloId).ToList();
                else
                {
                    int codigo;
                    int codBarra = int.TryParse(titulo.CodigoBarra, out codigo) ? codigo : codigo;
                    if (codBarra == 0)
                        titulosModificar = Uow.Titulos.Listado().Where(t => t.Id == titulo.TituloId).ToList();
                    else
                        titulosModificar = Uow.Titulos.Listado().Where(t => t.CodigoBarra == titulo.CodigoBarra).ToList();
                }


                if (titulosModificar != null)
                {
                    foreach (var tituloModificar in titulosModificar)
                    {
                        tituloModificar.PrecioCompraTitulo = PrecioBase;
                        tituloModificar.OperadorModificacionId = Context.OperadorActual.Id;
                        tituloModificar.FechaModificacion = _clock.Now;
                        tituloModificar.SucursalModificacionId = Context.SucursalActual.Id;
                        tituloModificar.UbicacionId = null;
                        tituloModificar.OperadorUltimoPrecioId = this.Context.OperadorActual.Id;

                        Uow.Titulos.Modificar(tituloModificar);
                    }
                    Uow.Commit();
                }
                Uow.Commit();
            }

        }
        private void RevertirPrecioOriginal(VentaTitulo titulo)
        {
            PrecioVenta = _precioVentaActual;

            titulo.PrecioVenta = PrecioVenta;

            ActualizarSubtotal();

            titulo.SubTotal = this.SubTotal;
        }
 private void EliminarTitulo(VentaTitulo ventaTitulo)
 {
     Titulos.Remove(ventaTitulo);
     RefrescarTitulos();
     OnVentaTitulosChanged(Titulos);
 }
        private void EditarTitulo(VentaTitulo ventaTitulo)
        {
            if (BtnAgregarTitulo.Visible)
            {
                using (var formAgregarTitulo = FormFactory.Create<FrmSeleccionarLibro>(ventaTitulo.TituloId,ActionFormMode.Create))
                {
                    formAgregarTitulo.TituloAgregado += (o, titulo) =>
                    {
                        if (!this.Titulos.Any(t => t.TituloId == titulo.TituloId))
                        {
                            Titulos.Add(titulo);
                            OnVentaTitulosChanged(Titulos);
                            RefrescarTitulos();
                        }
                        else
                        {
                            foreach (VentaTitulo ventaTitulo1 in Titulos)
                            {
                                if (ventaTitulo1.TituloId == titulo.TituloId)
                                {
                                    ventaTitulo1.TituloId = titulo.TituloId;
                                    ventaTitulo1.TituloNombre = titulo.TituloNombre;
                                    ventaTitulo1.ProveedorId = titulo.ProveedorId;
                                    ventaTitulo1.Cantidad = titulo.Cantidad;
                                    ventaTitulo1.CantidadConsignada = titulo.CantidadConsignada;
                                    ventaTitulo1.CantidadPropia = titulo.CantidadPropia;
                                    ventaTitulo1.PrecioBase = titulo.PrecioBase;
                                    ventaTitulo1.PrecioVenta = titulo.PrecioVenta;
                                    ventaTitulo1.Descuento = titulo.Descuento;
                                    ventaTitulo1.SubTotal = titulo.SubTotal;


                                    OnVentaTitulosChanged(Titulos);
                                    RefrescarTitulos();
                                }

                            }

                        }


                        formAgregarTitulo.Close();
                    };

                    formAgregarTitulo.ShowDialog();
                }
            }
            else //presupuesto
            {
                using (var formAgregarTitulo = FormFactory.Create<FrmSeleccionarLibroPresupuesto>(ventaTitulo.TituloId))
                {
                    formAgregarTitulo.TituloAgregado += (o, titulo) =>
                    {
                        if (!this.Titulos.Any(t => t.TituloId == titulo.TituloId))
                        {
                            Titulos.Add(titulo);
                            OnVentaTitulosChanged(Titulos);
                            RefrescarTitulos();
                        }
                        else
                        {
                            foreach (VentaTitulo ventaTitulo1 in Titulos)
                            {
                                if (ventaTitulo1.TituloId == titulo.TituloId)
                                {
                                    ventaTitulo1.TituloId = titulo.TituloId;
                                    ventaTitulo1.TituloNombre = titulo.TituloNombre;
                                    ventaTitulo1.ProveedorId = titulo.ProveedorId;
                                    ventaTitulo1.Cantidad = titulo.Cantidad;
                                    ventaTitulo1.CantidadConsignada = titulo.CantidadConsignada;
                                    ventaTitulo1.CantidadPropia = titulo.CantidadPropia;
                                    ventaTitulo1.PrecioBase = titulo.PrecioBase;
                                    ventaTitulo1.PrecioVenta = titulo.PrecioVenta;
                                    ventaTitulo1.Descuento = titulo.Descuento;
                                    ventaTitulo1.SubTotal = titulo.SubTotal;


                                    OnVentaTitulosChanged(Titulos);
                                    RefrescarTitulos();
                                }

                            }

                        }


                        formAgregarTitulo.Close();
                    };

                    formAgregarTitulo.ShowDialog();
                }
            }
        }