// GET: api/Programado public HttpResponseMessage Get() { string mensajeRetorno = ""; Lp_Comprobante lpComprobante = new Lp_Comprobante(); bool resultado = lpComprobante.InsertarProgramacion(ref mensajeRetorno); En_Respuesta oRespuesta = new En_Respuesta(); if (resultado) oRespuesta.Codigo = "0"; else oRespuesta.Codigo = "99"; oRespuesta.Descripcion = mensajeRetorno; return Request.CreateResponse(HttpStatusCode.Created, oRespuesta); }
public En_Respuesta RegistroComprobante(En_ComprobanteElectronico Comprobante) { log.Info("Invocación al método RegistroComprobante"); En_Respuesta oRespuesta = new En_Respuesta(); string rutaXML = ""; try { DebitNoteType debitNote = new DebitNoteType(); LlenarCabecera(Comprobante, ref debitNote); LlenarDocumentoRefenciado(Comprobante, ref debitNote); LlenarEmisor(Comprobante.Emisor, ref debitNote); LlenarReceptor(Comprobante.Receptor, ref debitNote); LlenarDescuentoCargo(Comprobante, ref debitNote); LlenarMontosIGV(Comprobante, ref debitNote); LlenarMontosTotales(Comprobante, ref debitNote); LlenarDetalle(Comprobante, ref debitNote); string codigoHASH = "", nombreXML = "", firma = ""; byte[] archivoXML = null; nombreXML = string.Format("{0}-{1}-{2}.xml", Comprobante.Emisor.NumeroDocumentoIdentidad, Comprobante.TipoComprobante, Comprobante.SerieNumero); CrearXML(ref debitNote, Comprobante, ref codigoHASH, ref archivoXML, ref firma); string mensajeRetorno = ""; Lp_Comprobante lpComprobante = new Lp_Comprobante(); bool resultado = lpComprobante.InsertarComprobante(Comprobante, nombreXML, archivoXML, codigoHASH, firma, ref mensajeRetorno); oRespuesta.Codigo = (resultado) ? "0" : "99"; oRespuesta.Descripcion = mensajeRetorno; string carpetaTemp = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Temporal"); rutaXML = Path.Combine(carpetaTemp, nombreXML); if (File.Exists(rutaXML)) { File.Delete(rutaXML); } } catch (Exception ex) { oRespuesta.Codigo = "99"; oRespuesta.Descripcion = "Ocurrió un error general, mensaje: " + ex.Message.ToString(); if (rutaXML != "" && File.Exists(rutaXML)) { File.Delete(rutaXML); } } return(oRespuesta); }
public int RegistrarRespuestaSunat(En_Respuesta oRespuesta) { int respuesta = 0; List <SqlParameter> parameters = new List <SqlParameter>(); parameters.Add(new SqlParameter { ParameterName = "@CodigoSUNAT", SqlDbType = SqlDbType.VarChar, Size = 50, Value = oRespuesta.Codigo }); parameters.Add(new SqlParameter { ParameterName = "@IdComprobante", SqlDbType = SqlDbType.BigInt, Value = oRespuesta.Idcomprobante }); parameters.Add(new SqlParameter { ParameterName = "@Archivo", SqlDbType = SqlDbType.VarBinary, Value = oRespuesta.Archivo }); parameters.Add(new SqlParameter { ParameterName = "@Descripcion", SqlDbType = SqlDbType.VarChar, Value = oRespuesta.Descripcion }); parameters.Add(new SqlParameter { ParameterName = "@FechaSunat", SqlDbType = SqlDbType.VarChar, Size = 20, Value = oRespuesta.FecharespuestaSunat }); parameters.Add(new SqlParameter { ParameterName = "@HoraSunat", SqlDbType = SqlDbType.VarChar, Size = 20, Value = oRespuesta.HoraRespuestaSunat }); //SqlCommand cmd = new SqlCommand(); //cmd.Parameters.Add("@CodigoSUNAT", SqlDbType.VarChar, 50).Value = oRespuesta.Codigo; //cmd.Parameters.Add("@IdComprobante", SqlDbType.VarChar, 10).Value = oRespuesta.Idcomprobante; //cmd.Parameters.Add("@Archivo", SqlDbType.VarChar, 10).Value = oRespuesta.Archivo; //cmd.Parameters.Add("@Descripcion", SqlDbType.VarChar, 10).Value = oRespuesta.Descripcion; //cmd.Parameters.Add("@FechaSunat", SqlDbType.VarChar, 10).Value = oRespuesta.FecharespuestaSunat; //cmd.Parameters.Add("@HoraSunat", SqlDbType.VarChar, 10).Value = oRespuesta.HoraRespuestaSunat; try { respuesta = SqlHelper.ExecuteNonQuery("usp_RegistraRespuestaSUNAT", parameters); return(respuesta); } catch (Exception ex) { throw new Exception(ex.Message); } }
public En_Respuesta LeerRespuestaXml(string nombreArchivoDescomprimido) { string cadenaXML = ""; En_Respuesta oRespuesta = new En_Respuesta(); StreamReader strreader = new StreamReader(nombreArchivoDescomprimido, System.Text.Encoding.UTF8); cadenaXML = strreader.ReadToEnd(); XmlDocument xmlRespuesta = new XmlDocument(); xmlRespuesta.LoadXml(cadenaXML); strreader.Dispose(); XPathNavigator nav = xmlRespuesta.CreateNavigator(); XmlNamespaceManager ns = ObtenerXmlNamespaces(nav); foreach (XPathNavigator nodoXML in nav.Select("*/cac:DocumentResponse/cac:Response", ns)) { oRespuesta.Codigo = NodeValue(nodoXML.SelectSingleNode("cbc:ResponseCode", ns), ""); oRespuesta.Descripcion = NodeValue(nodoXML.SelectSingleNode("cbc:Description", ns), ""); } List <string> listaMensaje = new List <string>(); foreach (XPathNavigator nodoXML in nav.Select("*/cbc:Note", ns)) { string mensaje = NodeValue(nodoXML.SelectSingleNode("cbc:ResponseCode", ns), ""); if (mensaje.Trim().Length > 0) { listaMensaje.Add(mensaje); } } if (listaMensaje.Count > 0) { oRespuesta.Detalle = listaMensaje.ToArray(); } oRespuesta.FecharespuestaSunat = NodeValue(nav.SelectSingleNode("*/cbc:ResponseDate", ns), ""); oRespuesta.HoraRespuestaSunat = NodeValue(nav.SelectSingleNode("*/cbc:ResponseTime", ns), ""); return(oRespuesta); }
public Boolean ExtraerCDR(long Idcomprobante, byte[] archivoRespuesta) { log.Info("Extraer CDR" + Idcomprobante.ToString()); En_Respuesta oRespuesta = new En_Respuesta(); Ln_Utilitario oUtilitario = new Ln_Utilitario(); string nombreArchivoRespuesta = String.Format("{0}{1}{2}{3}{4}{5}.zip", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond, Idcomprobante); try { string rutaTemporal = RutaTemporalCdr("TempCDR"); if (!Directory.Exists(rutaTemporal)) { Directory.CreateDirectory(rutaTemporal); } System.IO.File.WriteAllBytes(rutaTemporal + @"\" + nombreArchivoRespuesta, archivoRespuesta); string nombreArchivoDescomprimido = oUtilitario.Descomprimir(rutaTemporal, nombreArchivoRespuesta); oRespuesta = oUtilitario.LeerRespuestaXml(nombreArchivoDescomprimido); oRespuesta.Idcomprobante = Idcomprobante; oRespuesta.Archivo = archivoRespuesta; //guardar en base de datos oDatos.RegistrarRespuestaSunat(oRespuesta); string archivoEliminar = rutaTemporal + @"\" + nombreArchivoDescomprimido; if (File.Exists(archivoEliminar)) { File.Delete(archivoEliminar); } } catch (Exception ex) { //throw ex.Message; } return(true); }
public static En_Respuesta ComprobanteValido(En_ComprobanteElectronico comprobante, ref bool esValido) { En_Respuesta respuesta = new En_Respuesta(); try { List <En_Validacion> validaciones = new Da_Validacion().ListarValidaciones(); respuesta = ValidarEntidad(validaciones, comprobante, ref esValido); if (!esValido) { return(respuesta); } if (comprobante.ComprobanteDetalle != null) { foreach (En_ComprobanteDetalle detalle in comprobante.ComprobanteDetalle) { respuesta = ValidarEntidad(validaciones, detalle, ref esValido); if (!esValido) { return(respuesta); } if (detalle.ComprobanteDetalleImpuestos != null) { foreach (En_ComprobanteDetalleImpuestos detalleImpuesto in detalle.ComprobanteDetalleImpuestos) { respuesta = ValidarEntidad(validaciones, detalleImpuesto, ref esValido); if (!esValido) { return(respuesta); } } } } } if (comprobante.DescuentoCargo != null) { foreach (En_DescuentoCargo descuentoCargo in comprobante.DescuentoCargo) { respuesta = ValidarEntidad(validaciones, descuentoCargo, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.DocumentoReferenciaDespacho != null) { foreach (En_DocumentoReferencia documentoReferenciaDespacho in comprobante.DocumentoReferenciaDespacho) { respuesta = ValidarEntidad(validaciones, documentoReferenciaDespacho, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.DocumentoReferenciaNota != null) { foreach (En_DocumentoReferenciaNota documentoReferenciaNota in comprobante.DocumentoReferenciaNota) { respuesta = ValidarEntidad(validaciones, documentoReferenciaNota, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.DocumentoSustentoNota != null) { respuesta = ValidarEntidad(validaciones, comprobante.DocumentoSustentoNota, ref esValido); if (!esValido) { return(respuesta); } } if (comprobante.Emisor != null) { respuesta = ValidarEntidad(validaciones, comprobante.Emisor, ref esValido); if (!esValido) { return(respuesta); } if (comprobante.Emisor.Contacto != null) { respuesta = ValidarEntidad(validaciones, comprobante.Emisor.Contacto, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.Receptor != null) { respuesta = ValidarEntidad(validaciones, comprobante.Receptor, ref esValido); if (!esValido) { return(respuesta); } if (comprobante.Receptor.Contacto != null) { respuesta = ValidarEntidad(validaciones, comprobante.Receptor.Contacto, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.Leyenda != null) { foreach (var leyenda in comprobante.Leyenda) { respuesta = ValidarEntidad(validaciones, leyenda, ref esValido); if (!esValido) { return(respuesta); } } } if (comprobante.MontoTotales != null && comprobante.MontoTotales.Gravado != null) { respuesta = ValidarEntidad(validaciones, comprobante.MontoTotales.Gravado, ref esValido); if (!esValido) { return(respuesta); } if (comprobante.MontoTotales.Gravado.GravadoIGV != null) { respuesta = ValidarEntidad(validaciones, comprobante.MontoTotales.Gravado.GravadoIGV, ref esValido); if (!esValido) { return(respuesta); } } } } catch (Exception ex) { esValido = false; respuesta.Codigo = "99"; respuesta.Descripcion = ex.Message.ToString(); } return(respuesta); }