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(); }
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( ); }