Esempio n. 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);
        }
Esempio n. 2
0
        private async Task <RespAnular> ProcesoAnulacion(SarVtrrch HeaderCobranza)
        {
            RespAnular respuesta = new RespAnular();

            await InsertaCwJmSchedules("WSCOBR");

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

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

            switch (HeaderCobranza.SarVtrrchStatus)
            {
            case "S":
                Logger.Information($"La anulación se recibio, procesada ok por Softland");
                respuesta.Estado = 0;
                break;

            case "W":
                Logger.Warning($"La anulación se recibio, pero Softland aún no la proceso, SAR_VTRRRCH_IDENTI = {HeaderCobranza.SarVtrrchIdenti}");
                respuesta.Estado = 999;
                break;

            case "E":
                Logger.Warning($"La anulación se recibio, el procesamiento dio error: {HeaderCobranza.SarVtrrchErrmsg}");
                respuesta.Estado = 999;
                break;

            default:
                respuesta.Estado = 999;
                break;
            }
            return(respuesta);
        }
        public async Task <bool> ExisteTransaccion(string IdTransaccion)
        {
            SarVtrrch vtrrch = await Context.SarVtrrch.FindAsync(IdTransaccion);

            if (vtrrch != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 4
0
        public async Task <RespAnular> Post(string codBoca, string codTerminal, string idTransaccion, string codfor, int nrofor)
        {
            RespAnular response = new RespAnular
            {
                Estado = 0
            };

            SarVtrrch HeaderCobranza = new SarVtrrch
            {
                SarVtrrchIdenti  = "A" + idTransaccion,
                SarVtrrchStatus  = "A",
                SarVtrrchCodcom  = await RecuperarEquivalencia("WEBSER", "ANUCOM", codBoca),
                SarVtrrchNrocta  = "",
                SarVtrrchCodemp  = "WILTEL2",
                SarVtrrchModfor  = "VT",
                SarVtrrchCodfor  = codfor,
                SarVtrrchNrofor  = nrofor,
                SarVtrrchFchmov  = DateTime.Now.Date,
                SarVtFecalt      = DateTime.Now,
                SarVtFecmod      = DateTime.Now,
                SarVtDebaja      = "N",
                SarVtOalias      = "SAR_VTRRCH",
                SarVtrrchErrmsg  = "",
                SarVtUltopr      = "A",
                SarVtUserid      = "WEBAPI",
                UsrVtrrchWsestad = 999,
                UsrVtrrchCodboc  = codBoca,
                UsrVtrrchCodter  = codTerminal
            };

            try
            {
                Context.SarVtrrch.Add(HeaderCobranza);
                await Context.SaveChangesAsync();

                Logger.Information("Se insertó registro de anulación en tabla SAR_VTRRCH ");
            }
            catch (Exception error)
            {
                Logger.Fatal($"Error al insertar registro de anulacion en tabla SAR_VTRRCH :{error}");
                response.Estado = 999;
                return(response);
            };

            response = await ProcesoAnulacion(HeaderCobranza);

            return(response);
        }
        public async Task <RespEstadoTransaccion> Get(string codBoca, string codTerminal, string idTransaccion)
        {
            RespEstadoTransaccion response = new RespEstadoTransaccion
            {
                Estado       = 0,
                NroOperacion = ""
            };

            SarVtrrch vtrrch = await Context.SarVtrrch.FindAsync(idTransaccion);

            if (vtrrch != null)
            {
                response.Estado = vtrrch.UsrVtrrchWsestad;
                if (vtrrch.UsrVtrrchWsestad == 0)
                {
                    switch (vtrrch.SarVtrrchStatus)
                    {
                    case "S":
                        response.NroOperacion = vtrrch.SarVtrrchCodfor + "|" + vtrrch.SarVtrrchNrofor.ToString();
                        response.Estado       = 0;
                        break;

                    case "E":
                        response.NroOperacion = "";
                        response.Estado       = 999;
                        break;

                    case "W":
                        response.NroOperacion = "Pago recibido, numero de comprobante pendiente de confirmar";
                        response.Estado       = 0;
                        break;
                    }
                }
            }
            else
            {
                response.Estado = 300; //Transaccion inexistente
            }

            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);
        }