Ejemplo n.º 1
0
        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));
            }
        }