Beispiel #1
0
        private void ComprobanteDuplicarAction_Execute(object sender, SimpleActionExecuteEventArgs e)
        {
            var selectedComprobantes = View.SelectedObjects;

            if (selectedComprobantes.Count == 0)
            {
                throw new UserFriendlyException("Seleccione al menos un comprobante");
            }

            var cloner = new BasicObjectCloner(true);

            foreach (ComprobanteBase selected in selectedComprobantes)
            {
                selected.SetIgnoreOnChangedRecursive(true);
                var copy = (ComprobanteBase)cloner.CloneTo(selected, selected.GetType());

                DuplicarComprobante(copy);
            }

            ObjectSpace.CommitChanges();
            View.Refresh();
        }
Beispiel #2
0
        protected override void InicializarValores(IObjectSpace objectSpace, DocumentoItem movimiento)
        {
            if (movimiento.TipoMovimiento == TipoMovimiento.Alta)
            {
                movimiento.Ubicacion = objectSpace.CreateObject <Direccion>( );
            }
            else
            {
                DocumentoItem vigente;
                if ((vigente = movimiento.PolizaItem.ItemVigente) == null)
                {
                    return;
                }

                movimiento.NumeroAseguradora = vigente.NumeroAseguradora;
                movimiento.MateriaAsegurada  = vigente.MateriaAsegurada;
                movimiento.Plan = vigente.Plan;

                //Clonamos el objeto Direccion asociado; para que pueda hacer modificaciones sobre uno nuevo, en lugar de afectar el anterior
                var cloner = new BasicObjectCloner(true);
                movimiento.Ubicacion = ( Direccion )cloner.CloneTo(vigente.Ubicacion, typeof(Direccion));
            }
        }
        private void reversarAction_Execute(object sender, SimpleActionExecuteEventArgs e)
        {
            var selectedComprobantes = View.SelectedObjects;

            if (selectedComprobantes.Count == 0)
            {
                throw new UserFriendlyException("Seleccione al menos un comprobante");
            }

            var mensajes = "";
            var cloner   = new BasicObjectCloner(true);

            foreach (Comprobante comprobante in selectedComprobantes)
            {
                try
                {
                    if (comprobante.Estado != ComprobanteEstado.Confirmado)
                    {
                        throw new UserFriendlyException("No puede reversar un comprobante no confirmado.");
                    }

                    if (comprobante.ComprobanteReversion != null)
                    {
                        throw new UserFriendlyException("El comprobante ya se encuentra reversado.");
                    }

                    comprobante.SetIgnoreOnChangedRecursive(true);
                    var copy = ( Comprobante )cloner.CloneTo(comprobante, typeof(Comprobante));

                    copy.Estado = ComprobanteEstado.Pendiente;
                    copy.Fecha  = DateTime.Today;
                    var patronLeyendaReversado = Identificadores.GetInstance(ObjectSpace).PatronConceptoReversado;
                    if (!string.IsNullOrEmpty(patronLeyendaReversado))
                    {
                        copy.Concepto = string.Format(patronLeyendaReversado, copy.Concepto);
                    }

                    copy.ComprobanteReversion = null;
                    copy.Numero = 0;

                    foreach (var item in copy.Items)
                    {
                        item.DebeHaber = item.DebeHaber == DebeHaber.Debe ? DebeHaber.Haber : DebeHaber.Debe;
                    }

                    copy.Save( );

                    comprobante.ComprobanteReversion = copy;
                    comprobante.Save( );

                    ConfirmarComprobante(copy);
                }
                catch (Exception exc)
                {
                    mensajes += "\n" + comprobante.Descripcion + ": " + exc.Message;
                }
            }

            ObjectSpace.CommitChanges( );

            if (mensajes != "")
            {
                throw new UserFriendlyException("Errores en el reversado de uno o más comprobantes:" + mensajes);
            }

            View.Refresh( );
        }