public async Task <IActionResult> ConsultarFacturaElectronicaAsync(int transID) { var dbContext = this._context.TransaccionHeaders.Include(d => d.TransDetails).Where(t => t.TransID == transID); if (dbContext == null) { return(NotFound()); } var transaccion = dbContext.ToList().FirstOrDefault(); if (transaccion == null) { return(NotFound()); } if (transaccion != null && transaccion.EnviadaHacienda && !string.IsNullOrEmpty(transaccion.ClaveHacienda)) { EmisorModel.Emisor emi = this._context.Emisor.FirstOrDefault(emisor => emisor.ID > 0); if (emi != null) { FacturaElectronicaCR fact = new FacturaElectronicaCR(); string rutaCertificado = emi.RutaArchivoCertificado; string rutaOutput = emi.OutputFolder; Emisor emisor = new Emisor(emi.NombreCompleto, emi.TipoIdentificacion, emi.NumeroIdentificacion, emi.Provincia, emi.Canton, emi.Distrito, emi.Barrio, emi.OtrasSenas, emi.CodigoPaisTelefono, emi.NumeroTelefono, emi.CorreoElectronico, rutaCertificado, emi.PinCertificado, emi.UsuarioApi.Trim(), emi.ClaveApi.Trim(), emi.OutputFolder); emisor.OutputFolder = emi.OutputFolder; fact.Emisor = emisor; string message = string.Empty; try { message = fact.ConsultaFactura(transaccion.ClaveHacienda, emisor.OutputFolder); } catch (Exception) { this.TempData["ErrorMessage"] = "Hubo un error consultando la factura. Intente mas tarde."; } if (message.ToLower().Equals("aceptada")) { transaccion.AceptadaHacienda = "true"; this.TempData["OKMessage"] = message; } else { transaccion.AceptadaHacienda = "false"; this.TempData["ErrorMessage"] = message; } this._context.TransaccionHeaders.Update(transaccion); await _context.SaveChangesAsync(); } } return(this.RedirectToAction(nameof(Edit), new { id = transID })); }
public async Task <IActionResult> EnviarFacturaElectronicaAsync(int transID) { var dbContext = this._context.TransaccionHeaders.Include(d => d.TransDetails).Where(t => t.TransID == transID); if (dbContext == null) { return(NotFound()); } var transaccion = dbContext.ToList().FirstOrDefault(); if (transaccion == null) { return(NotFound()); } if (transaccion != null && !transaccion.EnviadaHacienda) { Datos datos = new Datos(); string consecutivo = datos.CreaNumeroSecuencia("1", "1", "01", "00000019"); //string consecutivo = datos.CreaNumeroSecuencia("1", "1", "01", transaccion.TransIdStr); DateTime date = DateTime.Now; //string codigoSeguridad = datos.CreaCodigoSeguridad("01", "1", "1", date, transaccion.TransIdStr); string codigoSeguridad = datos.CreaCodigoSeguridad("01", "1", "1", date, "00000019"); string clave = datos.CreaClave("506", date.Day.ToString(), date.Month.ToString(), date.Year.ToString(), "207030159", consecutivo, "1", codigoSeguridad); Cliente client = this._context.Clientes.FirstOrDefault(cliente => cliente.ID == transaccion.ClienteID); EmisorModel.Emisor emi = this._context.Emisor.FirstOrDefault(emisor => emisor.ID > 0); if (client != null && emi != null) { //string rutaCertificado = "C:\\ATV Alexis\\Llave Criptografica (firma) stag\\020703015917.p12"; string rutaCertificado = emi.RutaArchivoCertificado; //string rutaOutput = "C:\\OutputFiles\\"; string rutaOutput = emi.OutputFolder; Receptor receptor = new Receptor(client.NombreCompleto, "01", client.CedulaSinGuiones, "506", client.Telefono.Replace("-", string.Empty), client.Email); Emisor emisor = new Emisor(emi.NombreCompleto, emi.TipoIdentificacion, emi.NumeroIdentificacion, emi.Provincia, emi.Canton, emi.Distrito, emi.Barrio, emi.OtrasSenas, emi.CodigoPaisTelefono, emi.NumeroTelefono, emi.CorreoElectronico, rutaCertificado, emi.PinCertificado, emi.UsuarioApi.Trim(), emi.ClaveApi.Trim(), emi.OutputFolder); int numeroLinea = 0; List <LineaDetalle> listaDetalles = new List <LineaDetalle>(); foreach (TransaccionDetail det in transaccion.TransDetails) { LineaDetalle detalle = new LineaDetalle(); detalle.NumeroLinea = ++numeroLinea; detalle.ArticuloTipo = "03"; detalle.ArticuloCodigo = det.VINVehiculo; detalle.Cantidad = 1; detalle.UnidadMedida = "Sp"; detalle.DetalleArticulo = "venta de vehiculo " + det.VINVehiculo; detalle.PrecioUnitario = Convert.ToDouble(det.PrecioAcordado); detalle.MontoDescuento = 0; detalle.NaturalezaDescuento = "0"; detalle.ImpuestoCodigo = "07"; detalle.ImpuestoTarifa = 0; detalle.isGravado = false; detalle.isServicio = true; listaDetalles.Add(detalle); } CustomFacturaElectronicaCR fact = new CustomFacturaElectronicaCR(consecutivo, clave, emisor, receptor, "01", string.Empty, "01", listaDetalles, "CRC", 1); XmlDocument xmlSinFirmar = fact.CreaXMLFacturaElectronica(); emisor.OutputFolder = rutaOutput; try { await fact.ProcesaAsync(xmlSinFirmar.OuterXml, emisor.OutputFolder, consecutivo); } catch (Exception) { transaccion.EnviadaHacienda = false; ///throw; this.TempData["ErrorMessage"] = "Error al enviar a Hacienda. Intente de nuevo más tarde."; } transaccion.ClaveHacienda = clave; transaccion.EnviadaHacienda = true; transaccion.ConsecutivoHacienda = consecutivo; this._context.TransaccionHeaders.Update(transaccion); await _context.SaveChangesAsync(); } } return(this.RedirectToAction(nameof(Edit), new { id = transID })); }