public static Response <byte> AnularReintegro(AnularVentaRequest request) { try { var anularVentaReintegro = new byte(); if (request.IdVenta > 0) { // Valida 'AnularDocumentoSUNAT' if (!request.Tipo.Equals("M") && request.ElectronicoEmpresa == "1") { // Anula 'DocumentoSUNAT' var objVentaReintegro = new VentaEntity { CodiEmpresa = request.CodiEmpresa, SerieBoleto = request.SerieBoleto, NumeBoleto = request.NumeBoleto, Tipo = request.Tipo, FechaVenta = request.FechaVenta, RucEmpresa = request.RucEmpresa }; var resAnularDocumentoSUNAT = VentaLogic.AnularDocumentoSUNAT(objVentaReintegro); if (!resAnularDocumentoSUNAT.Estado) { return(new Response <byte>(false, anularVentaReintegro, resAnularDocumentoSUNAT.MensajeError, false)); } } // Anula 'Reintegro' anularVentaReintegro = VentaRepository.AnularVenta(request.IdVenta, request.CodiUsuario); if (anularVentaReintegro > 0) { if (request.TipoPago == "03") { // Consulta 'PagoTarjetaVenta' var consultaPagoTarjetaVenta = VentaRepository.ConsultaPagoTarjetaVenta(request.IdVenta); // Actualiza 'CajaAnulacion' VentaRepository.ActualizarCajaAnulacion(consultaPagoTarjetaVenta); } //Elimina Boleto x Contrato si es que tiene ReintegroRepository.EliminarBoletoxContrato(request.IdVenta); //Libera Venta del Reintegro ReintegroRepository.LiberaReintegroEle(request.CodiEsca.Substring(1, 3), request.CodiEsca.Substring(5), request.CodiEmpresa.ToString(), request.CodiEsca.Substring(0, 1)); // Genera 'CorrelativoAuxiliar' var generarCorrelativoAuxiliarReintegro = VentaRepository.GenerarCorrelativoAuxiliar("CAJA", request.CodiOficina, request.CodiPuntoVenta, string.Empty); if (string.IsNullOrEmpty(generarCorrelativoAuxiliarReintegro)) { return(new Response <byte>(false, anularVentaReintegro, Message.MsgErrorGenerarCorrelativoAuxiliarReintegro, false)); } // Graba 'CajaReintegro' var objCajaReintegro = new CajaEntity { NumeCaja = generarCorrelativoAuxiliarReintegro.PadLeft(7, '0'), CodiEmpresa = request.CodiEmpresa, CodiSucursal = short.Parse(request.CodiOficina), FechaCaja = DataUtility.ObtenerFechaDelSistema(), TipoVale = "S", Boleto = String.Format("{0}-{1}", request.SerieBoleto.ToString().PadLeft(3, '0'), request.NumeBoleto.ToString().PadLeft(7, '0')), NomUsuario = String.Format("{0} {1}", request.CodiUsuario, request.NomUsuario), CodiBus = string.Empty, CodiChofer = string.Empty, CodiGasto = string.Empty, ConcCaja = String.Format("{0} {1}-{2}", "ANUL DE BOLETO REINT", request.SerieBoleto.ToString().PadLeft(3, '0'), request.NumeBoleto.ToString().PadLeft(7, '0')), Monto = request.PrecioVenta, CodiUsuario = short.Parse(request.CodiUsuario.ToString()), IndiAnulado = "F", TipoDescuento = "RE", TipoDoc = "16", TipoGasto = "P", Liqui = 0M, Diferencia = 0M, Recibe = "RE", CodiDestino = string.Empty, FechaViaje = "01/01/1900", HoraViaje = string.Empty, CodiPuntoVenta = short.Parse(request.CodiPuntoVenta), Voucher = string.Empty, Asiento = string.Empty, Ruc = string.Empty, IdVenta = 0, Origen = "AR", Modulo = "PR", Tipo = request.Tipo, IdCaja = 0 }; var grabarCajaReintegro = VentaRepository.GrabarCaja(objCajaReintegro); //Graba Auditoria luego de Liberar Asiento var objAuditoria = new AuditoriaEntity { CodiUsuario = Convert.ToInt16(request.CodiUsuario), NomUsuario = request.NomUsuario, Tabla = "VENTA", TipoMovimiento = "ANUL.REINTEGRO", Boleto = String.Format("{0}-{1}", request.SerieBoleto.ToString().PadLeft(3, '0'), request.NumeBoleto.ToString().PadLeft(7, '0')), NumeAsiento = "0", NomOficina = request.NomOficina, NomPuntoVenta = request.CodiPuntoVenta.PadLeft(3, '0'), Pasajero = "", FechaViaje = "01/01/1900", HoraViaje = "", NomDestino = "", Precio = 0M, Obs1 = "LIBERACION AL BOLETO : " + request.CodiEsca, Obs2 = "TERMINAL : " + request.Terminal.ToString().PadLeft(3, '0'), Obs3 = "", Obs4 = "CAJERO AFECTA " + request.CodiUsuario, Obs5 = "NRO VALE SALIDA : " + generarCorrelativoAuxiliarReintegro.PadLeft(7, '0') }; VentaRepository.GrabarAuditoria(objAuditoria); //TODO: Falta implementar Usp_Tb_venta_AnulaReintegro_ele } } return(new Response <byte>(true, anularVentaReintegro, "Se anuló el reintegro correctamente", true)); } catch (Exception ex) { Log.Instance(typeof(VentaLogic)).Error(System.Reflection.MethodBase.GetCurrentMethod().Name, ex); return(new Response <byte>(false, 0, Message.MsgExcAnulaReintegro, false)); } }