private void BtnGuardar_Click(object sender, EventArgs e) { if (_venta.EstadoVentaId == EstadoVentaEnum.Anulada) { _messageBoxDisplayService.ShowWarning("Factura ya anulada"); return; } var operador = this.ObtenerOperadorAdministrador(); if (operador == null) { return; } if (!this.EsOperadorAdmin) { //Guardamos el operador que autorizo la operacion. _venta.OperadorAutoriza = operador.Id; } //Anular la Venta _venta.EstadoVentaId = EstadoVentaEnum.Anulada; _venta.FechaModificacion = _clock.Now; _venta.OperadorModificacionId = Context.OperadorActual.Id; _venta.SucursalModificacionId = Context.SucursalActual.Id; Uow.Ventas.Modificar(_venta); //devolver el stock foreach (VentaDetalleDto ventaDetalleDto in _ventaDetalleDto) { var tituloStock = Uow.TitulosStock.Obtener( ts => ts.TituloId == ventaDetalleDto.TituloId && ts.SucursalId == Context.SucursalActual.Id); tituloStock.StkPr += ventaDetalleDto.CantidadPropia; tituloStock.StkCn += ventaDetalleDto.CantidadConsig; tituloStock.FechaModificacion = _clock.Now; tituloStock.OperadorModificacionId = Context.OperadorActual.Id; tituloStock.SucursalModificacionId = Context.SucursalActual.Id; Uow.TitulosStock.Modificar(tituloStock); } //Devovler caja Caja caja = this.Context.CajaActual; if (caja.Ingresos == null) caja.Ingresos = 0; caja.Ingresos -= (float?)_venta.TotalPagado; if (caja.Saldo == null) caja.Saldo = 0; caja.Saldo -= (float?)_venta.TotalPagado; caja.FechaModificacion = _clock.Now; caja.SucursalModificacionId = Context.SucursalActual.Id;//Sucursal del operador caja.OperadorModificacionId = (Context.OperadorActual.Id);//Id el operador Uow.Cajas.Modificar(caja); //CajaMovimiento var cajaMovimientoAnterior = Uow.CajaMovimientos.Obtener(c => c.ComprobanteId == _venta.Id); CajaMovimiento cajaMovimiento = new CajaMovimiento(); cajaMovimiento.Id = Guid.NewGuid(); cajaMovimiento.CajaId = caja.Id; if (_venta.CondicionVentaId == CondicionVentaEnum.CuentaCorriente) cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.AnulaciónFacCtaCte; else cajaMovimiento.TipoMovimientoCajaId = TipoMovimientoCajaEnum.AnulaciónFacContado; cajaMovimiento.TipoComprobante = TipoComprobanteEnum.FacturaAnulada; cajaMovimiento.ComprobanteId = _venta.Id; cajaMovimiento.Senia = cajaMovimientoAnterior.Senia; cajaMovimiento.Importe = cajaMovimientoAnterior.Importe; cajaMovimiento.ImpFac = cajaMovimientoAnterior.ImpFac; cajaMovimiento.Recargo = cajaMovimientoAnterior.Recargo; cajaMovimiento.Efectivo = cajaMovimientoAnterior.Efectivo; cajaMovimiento.Tarjeta = cajaMovimientoAnterior.Tarjeta; cajaMovimiento.Cheque = cajaMovimientoAnterior.Cheque; cajaMovimiento.Deposito = cajaMovimientoAnterior.Deposito; cajaMovimiento.PcAlta = Environment.MachineName; cajaMovimiento.SucursalAltaId = _venta.SucursalAltaId; cajaMovimiento.OperadorAltaId = _venta.OperadorAltaId; cajaMovimiento.FechaAlta = _clock.Now; cajaMovimiento.SucursalModificacionId = Context.SucursalActual.Id;//Sucursal del operador cajaMovimiento.OperadorModificacionId = (Context.OperadorActual.Id);//Id el operador cajaMovimiento.FechaModificacion = _clock.Now; Uow.CajaMovimientos.Agregar(cajaMovimiento); //MovimientoCliente ClientesMovimiento clientesMovimiento = new ClientesMovimiento(); clientesMovimiento.IdCliente = _venta.ClienteId; clientesMovimiento.IdTipoComprobante = (int)TipoComprobanteEnum.FacturaAnulada; clientesMovimiento.IdComprobante = _venta.Id; clientesMovimiento.Concepto = TipoComprobanteEnum.FacturaAnulada.ToString(); clientesMovimiento.Debe = _venta.TotalPagado; clientesMovimiento.FechaGeneracion = _clock.Now; clientesMovimiento.FechaAlta = _clock.Now; clientesMovimiento.SucursalAltaId = Context.SucursalActual.Id;//Sucursal del operador clientesMovimiento.OperadorAltaId = (Context.OperadorActual.Id);//Id el operador Uow.ClientesMovimientos.Agregar(clientesMovimiento); //Actulizar señas de cliente var monto = cajaMovimientoAnterior.Senia; if (monto > 0 && monto != null) { int sucursal = 1; ClienteMontoFavor clienteMontoFavor = new ClienteMontoFavor(); clienteMontoFavor.Id = Guid.NewGuid(); clienteMontoFavor.ClienteId = _venta.ClienteId; clienteMontoFavor.FechaComprobante = _clock.Now; clienteMontoFavor.TipoComprobanteId = TipoComprobanteEnum.SeñaCliente; clienteMontoFavor.LCN = "R" + sucursal.ToString().PadLeft(4, '0') + CalcularLCN().PadLeft(8, '0'); clienteMontoFavor.Concepto = "Seña " + clienteMontoFavor.LCN; clienteMontoFavor.Importe = monto; clienteMontoFavor.ImpOcupado = 0; clienteMontoFavor.Observaciones = TipoComprobanteEnum.SeñaCliente.ToString() + "Por anulación de factura"; clienteMontoFavor.FechaAlta = _clock.Now; clienteMontoFavor.OperadorAltaId = Context.OperadorActual.Id; clienteMontoFavor.SucursalAltaId = Context.SucursalActual.Id; Uow.ClientesMontosFavor.Agregar(clienteMontoFavor); } //si la venta fue en CuentaCorriente, Anular las cuotas if (_venta.CondicionVentaId==CondicionVentaEnum.CuentaCorriente) { var cuotas = Uow.ClientesCuentasCorrientes.Listado().Where(cc => cc.VentaId == _venta.Id); foreach (ClienteCuentaCorriente cuota in cuotas) { cuota.Pagado = cuota.Importe; cuota.Observaciones = "Venta Anulada"; cuota.FechaModificacion = _clock.Now; cuota.OperadorModificacionId = Context.OperadorActual.Id; cuota.SucursalModificacionId = Context.SucursalActual.Id; Uow.ClientesCuentasCorrientes.Modificar(cuota); } } //Si la venta fue con tarjeta, setear en 0 el estado del movimiento if (cajaMovimientoAnterior.Tarjeta!= null) { var tarjetamovimiento = Uow.TarjetasMovimientos.Obtener(t => t.CajaMovimientoId == cajaMovimientoAnterior.Id); if (tarjetamovimiento != null) { tarjetamovimiento.Estado = 0; tarjetamovimiento.FechaModificacion = _clock.Now; tarjetamovimiento.OperadorModificacionId = Context.OperadorActual.Id; tarjetamovimiento.SucursalModificacionId = Context.SucursalActual.Id; Uow.TarjetasMovimientos.Modificar(tarjetamovimiento); } } //si la venta fue con deposito, setear la columna debito=credito para que se anule if (cajaMovimientoAnterior.Deposito != null) { var cuentaMovimiento = Uow.CuentasMovimientos.Obtener(t => t.ComprobanteId == _venta.Id); if (cuentaMovimiento != null) { cuentaMovimiento.Debito = cuentaMovimiento.Credito; cuentaMovimiento.FechaModificacion = _clock.Now; cuentaMovimiento.OperadorModificacionId = Context.OperadorActual.Id; cuentaMovimiento.SucursalModificacionId = Context.SucursalActual.Id; Uow.CuentasMovimientos.Modificar(cuentaMovimiento); } } //si la venta fue con Cheque, setear estadocheque=1 if (cajaMovimientoAnterior.Cheque != null) { var chequeTercero = Uow.ChequesTercero.Obtener(t => t.CajaMovimientoId == cajaMovimientoAnterior.Id); if (chequeTercero != null) { chequeTercero.EstadoChequeId = 1; chequeTercero.FechaModificacion = _clock.Now; chequeTercero.OperadorModificacionId = Context.OperadorActual.Id; chequeTercero.SucursalModificacionId = Context.SucursalActual.Id; Uow.ChequesTercero.Modificar(chequeTercero); } } Uow.Commit(); _messageBoxDisplayService.ShowSuccess("Factura anulada correctamente"); //this.Close(); OnAccionTerminada(); }
private void AgregarClienteMovimiento(VentaDataBase ventaData, Venta venta) { //ClienteMovimiento ClientesMovimiento clientesMovimiento = new ClientesMovimiento(); clientesMovimiento.IdCliente = ventaData.ClienteId; clientesMovimiento.IdTipoComprobante = (int?)ventaData.TipoComprobanteSeleccionado; clientesMovimiento.IdComprobante = venta.Id; clientesMovimiento.Concepto = ventaData.TipoComprobanteSeleccionado.ToString(); clientesMovimiento.Haber = ventaData.TotalPagar; clientesMovimiento.FechaGeneracion = _clock.Now; clientesMovimiento.FechaAlta = _clock.Now; clientesMovimiento.SucursalAltaId = ventaData.SucursalId; clientesMovimiento.OperadorAltaId = ventaData.OperadorId; Uow.ClientesMovimientos.Agregar(clientesMovimiento); }