public async Task <ActionResult> ReintegroAnualar(AnularVentaRequest request)
        {
            try
            {
                string result = string.Empty;
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri(url);
                    var _body = "{" +
                                "\"IdVenta\": " + request.IdVenta +
                                ",\"CodiEsca\": \"" + request.CodiEsca + "\"" +
                                ",\"CodiEmpresa\": " + request.CodiEmpresa +
                                ",\"SerieBoleto\": " + request.SerieBoleto +
                                ",\"NumeBoleto\": " + request.NumeBoleto +
                                ",\"Tipo\": \"" + request.Tipo + "\"" +
                                ",\"FechaVenta\": \"" + request.FechaVenta + "\"" +
                                ",\"CodiUsuario\": " + usuario.CodiUsuario +
                                ",\"TipoPago\": \"" + request.TipoPago + "\"" +
                                ",\"CodiOficina\": " + usuario.CodiSucursal +
                                ",\"CodiPuntoVenta\": " + usuario.CodiPuntoVenta +
                                ",\"NomUsuario\": \"" + usuario.Nombre + "\"" +
                                ",\"PrecioVenta\": \"" + request.PrecioVenta + "\"" +
                                ",\"CodiDestinoPas\": \"" + request.CodiDestinoPas + "\"" +
                                ",\"IngresoManualPasajes\": " + request.IngresoManualPasajes.ToString().ToLower() +
                                ",\"NomOficina\": \"" + usuario.CodiSucursal + "\"" +
                                ",\"Terminal\": " + usuario.Terminal.ToString("D3") +

                                ",\"RucEmpresa\" : \"" + request.RucEmpresa + "\"" +
                                ",\"ElectronicoEmpresa\" : \"" + request.ElectronicoEmpresa + "\"" +
                                "}";
                    HttpResponseMessage response = await client.PostAsync("AnularReintegro", new StringContent(_body, Encoding.UTF8, "application/json"));

                    if (response.IsSuccessStatusCode)
                    {
                        result = await response.Content.ReadAsStringAsync();
                    }
                }

                JToken tmpResult = JObject.Parse(result);

                Response <byte> res = new Response <byte>()
                {
                    Estado     = (bool)tmpResult["Estado"],
                    Mensaje    = (string)tmpResult["Mensaje"],
                    Valor      = (byte)tmpResult["Valor"],
                    EsCorrecto = (bool)tmpResult["EsCorrecto"]
                };

                return(Json(res, JsonRequestBehavior.AllowGet));
            }
            catch
            {
                return(Json(new Response <byte>(false, Constant.EXCEPCION, 0), JsonRequestBehavior.AllowGet));
            }
        }
예제 #2
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));
            }
        }