Exemple #1
0
        private async Task <RespPagarDeudas> ProcesoRecibo(SarVtrrch HeaderCobranza)
        {
            RespPagarDeudas resultado = new RespPagarDeudas();

            await InsertaCwJmSchedules("WSCOBR");

            //Para dejar tiempo a Softland a que procese el recibo
            Thread.Sleep(15000);

            //Para recargar la entidad con los datos del recibo impactado en Softland.
            await Context.Entry(HeaderCobranza).ReloadAsync();

            switch (HeaderCobranza.SarVtrrchStatus)
            {
            case "S":
                Logger.Information($"El pago se recibio, procesado por Softland: {resultado.NroOperacion}");
                resultado.Estado       = 0;
                resultado.NroOperacion = HeaderCobranza.SarVtrrchCodfor + "|" + HeaderCobranza.SarVtrrchNrofor.ToString();
                break;

            case "W":
                Logger.Warning($"El pago se recibio, pero Softland aún no lo proceso, SAR_VTRRRCH_IDENTI = {HeaderCobranza.SarVtrrchIdenti}");
                resultado.Estado       = 0;
                resultado.NroOperacion = "Pago recibido, numero de comprobante pendiente de confirmar";
                break;

            case "E":
                Logger.Warning($"El pago se recibio, la registracion dio error: {HeaderCobranza.SarVtrrchErrmsg}");
                resultado.Estado       = 999;
                resultado.NroOperacion = "Error interno en aplicación";
                break;
            }

            return(resultado);
        }
Exemple #2
0
        public async Task <RespPagarDeudas> Post(string autentic1, string autentic2,
                                                 string CodBoca, string CodTerminal,
                                                 string CodDeuda, string CodEnte,
                                                 string IdTransaccion, string Importe)
        {
            RespPagarDeudas response = new RespPagarDeudas();

            this.logger.Information($"Se recibió pago, Boca: {CodBoca}, Terminal {CodTerminal}, " +
                                    $"Deuda:{CodDeuda}, Ente: {CodEnte}, Importe: {Importe}" +
                                    $", Identi:{IdTransaccion}");


            bool Autenticado = await _AuthenticationService.ValidoAutenticacion(autentic1, autentic2);

            if (Autenticado == true)
            {
                if (CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator == ".") //punto como separador decimal
                {
                    Importe = Importe.Replace(",", ".");
                }
                if (CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator == ",") //coma como separador decimal
                {
                    Importe = Importe.Replace(".", ",");
                }
                response = await Service.Post(CodBoca, CodTerminal,
                                              CodDeuda, CodEnte,
                                              IdTransaccion, Importe);
            }
            else
            {
                response.Estado = 200; //Datos de autenticación incorrectos
            }

            logger.Information($"Respuesta:{response.ToString()}");

            return(response);
        }
        public async Task <RespPagarDeudas> Post(string codBoca, string codTerminal, ComprobanteDeudaSoftland comprobanteDeuda,
                                                 string codEnte, string idTransaccion, string importe, int status)
        {
            RespPagarDeudas response = new RespPagarDeudas();

            SarVtrrch HeaderCobranza = new SarVtrrch
            {
                SarVtrrchIdenti  = idTransaccion,
                SarVtrrchStatus  = "W",
                SarVtrrchCodcom  = await RecuperarEquivalencia("WEBSER", "CODCOM", codEnte),
                SarVtrrchNrocta  = comprobanteDeuda.Nrocta,
                SarVtrrchCodemp  = "WILTEL2",
                SarVtrrchFchmov  = DateTime.Now.Date,
                SarVtFecalt      = DateTime.Now,
                SarVtFecmod      = DateTime.Now,
                SarVtDebaja      = "N",
                SarVtOalias      = "SAR_VTRRCH",
                SarVtrrchErrmsg  = "",
                SarVtUltopr      = "A",
                SarVtUserid      = "WEBAPI",
                UsrVtrrchWsestad = status,
                UsrVtrrchCodboc  = codBoca,
                UsrVtrrchCodter  = codTerminal,
                UsrVtrrchCodent  = Int16.Parse(codEnte)
            };


            SarVtrrcc01 AplicacionesCobranza = new SarVtrrcc01
            {
                SarVtrrcc01Identi = idTransaccion,
                SarVtrrcc01Nroitm = 1,
                SarVtrrcc01Modapl = comprobanteDeuda.Modfor,
                SarVtrrcc01Codapl = comprobanteDeuda.Codfor,
                SarVtrrcc01Nroapl = comprobanteDeuda.Nrofor,
                SarVtrrcc01Cuotas = 1,
                SarVtrrcc01Impnac = null,
                SarVtrrcc01Impext = null,
                SarVtrrcc01Cannac = Convert.ToDecimal(importe),
                SarVtrrcc01Canext = null,
                SarVtFecalt       = DateTime.Now,
                SarVtFecmod       = DateTime.Now,
                SarVtUserid       = "WEBAPI",
                SarVtUltopr       = "A",
                SarVtDebaja       = "N"
            };

            SarVtrrcc04 MediosdeCobro = new SarVtrrcc04
            {
                SarVtrrcc04Identi = idTransaccion,
                SarVtrrcc04Nroitm = 1,
                SarVtrrcc04Modcpt = null,
                SarVtrrcc04Tipcpt = await RecuperarEquivalencia("WEBSER", "TIPCPT", codEnte),
                SarVtrrcc04Codcpt = await RecuperarEquivalencia("WEBSER", "CODCPT", codEnte),
                SarVtrrcc04Import = Convert.ToDecimal(importe),
                SarVtFecalt       = DateTime.Now,
                SarVtFecmod       = DateTime.Now,
                SarVtUserid       = "WEBAPI",
                SarVtUltopr       = "A",
                SarVtDebaja       = "N"
            };

            try
            {
                Context.SarVtrrch.Add(HeaderCobranza);

                await Context.SaveChangesAsync();

                Context.SarVtrrcc01.Add(AplicacionesCobranza);

                await Context.SaveChangesAsync();

                Context.SarVtrrcc04.Add(MediosdeCobro);

                await Context.SaveChangesAsync();

                Logger.Information("Se insertaron registros en tablas SAR_VTRRCH e hijas");
            }
            catch (Exception error)
            {
                Logger.Fatal($"Error al insertar registros en tablas SAR_VTRRCH e hijas:{error}");
                response.Estado       = 999;
                response.NroOperacion = "";
            };

            if (status == 0)
            {
                response = await ProcesoRecibo(HeaderCobranza);
            }
            return(response);
        }
Exemple #4
0
        public async Task <RespPagarDeudas> Post(string CodBoca, string CodTerminal,
                                                 string CodDeuda, string CodEnte,
                                                 string IdTransaccion, string Importe)
        {
            RespPagarDeudas response = new RespPagarDeudas
            {
                Estado       = 0,
                NroOperacion = ""
            };

            bool existe = await Repository.ExisteTransaccion(IdTransaccion);

            if (existe == true)
            {
                response.Estado       = 999; //Error interno... la transaccion ya existe
                response.NroOperacion = "";
                Logger.Warning($"El id transaccion {IdTransaccion} ya fue recibido.");
                return(response);
            }


            ComprobanteDeudaSoftland comprobanteDeuda = await Repository.RecuperarComprobanteDeuda(CodDeuda);

            if (comprobanteDeuda.Codfor == null)
            {
                response.Estado       = 4; // Codigo de Deuda inexistente
                response.NroOperacion = "";
                Logger.Warning($"Codigo de Deuda inexistente, Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}");
                return(response);
            }

            //A pedido de Diego Ballario, se elimina este control (Mail 29/05/2020)
            //if (comprobanteDeuda.Fchvnc.Date < DateTime.Now.Date)
            //{
            //    response.Estado = 3; //Deuda vencida
            //    response.NroOperacion = "";
            //    Logger.Warning($"Deuda vencida, el día {comprobanteDeuda.Fchvnc.Date} - Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}");
            //    return response;
            //}

            if (comprobanteDeuda.Saldo == 0)
            {
                response.Estado       = 7; // La deuda ya fue cancelada
                response.NroOperacion = "";
                Logger.Warning($"La deuda ya fue cancelada - Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}");
                return(response);
            }

            if (comprobanteDeuda.Saldo < Convert.ToDecimal(Importe))
            {
                response.Estado       = 10; //El importe no puede ser superior al monto adeudado del comprobante
                response.NroOperacion = "";
                Logger.Warning($"El importe no puede ser superior al monto adeudado del comprobante - " +
                               $"Codfor: {comprobanteDeuda.Codfor}, Nrofor: {comprobanteDeuda.Nrofor}" +
                               $"Monto adeudado:{comprobanteDeuda.Saldo}, Importe pagado: {Importe}");
                return(response);
            }

            if (response.Estado != 999)
            {
                response = await Repository.Post(CodBoca, CodTerminal,
                                                 comprobanteDeuda, CodEnte,
                                                 IdTransaccion, Importe, response.Estado);
            }


            return(response);
        }