Beispiel #1
0
        // 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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }