FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hola,
Me estreno en el foro, yo estoy desarrollando con VB/C# Os pego como lo hago yo para subir facturas emitidas, esta todo de prueba: Tengo un bucle For para simular la generación varias facturas, me conecto sin problema y recibo resultado de cada uno de los registros. Dim MensajeError As String = "" Dim MensajeAcierto As String = "" Dim sFactura As String = "" Dim sRutaCert As String = "" ' Dim Mails As New LNclsMail Dim decodedBytes As Byte() decodedBytes = Convert.FromBase64String(My.Settings.ClaveCertificado) Dim sClaveCert As String sClaveCert = Encoding.UTF8.GetString(decodedBytes) 'Obtener certificado desde fichero p12 sRutaCert = System.AppDomain.CurrentDomain.BaseDirectory() & My.Settings.NombreCertificado cert = New System.Security.Cryptography.X509Certificates.X509Certificate2(sRutaCert, sClaveCert) 'Se llama a la clase siiService, creada a partir del WS y cambiando el inherits por : Microsoft.Web.Services3.WebServicesClientProtocol Dim webserviceProxy As New siiFacturasEmitidas webserviceProxy.ClientCertificates.Add(cert) Dim signatureToken As X509SecurityToken = GetSecurityToken() Dim requestContext As SoapContext = webserviceProxy.RequestSoapContext requestContext.Security.Tokens.Add(signatureToken) Dim sig As New MessageSignature(signatureToken) requestContext.Security.Timestamp.TtlInSeconds = 60 requestContext.Security.Elements.Add(sig) Dim testC As New SuministroLRFacturasEmitidas Dim cab As New CabeceraSii Dim fac As New LRfacturasEmitidasType Dim resul As RespuestaLRFEmitidasType Dim perso As New PersonaFisicaJuridicaESType perso.NIF = "XXXXXXXXX" perso.NombreRazon = "Empresa de pruebas" cab.Titular = perso cab.TipoComunicacion = "0" testC.Cabecera = cab For i = 20 To 30 Dim fras As New LRfacturasEmitidasType Dim perio As New RegistroSiiPeriodoImpositivo perio.Ejercicio = 2015 perio.Periodo = "01" fras.PeriodoImpositivo = perio Dim idfra As New IDFacturaExpedidaType Dim empresa As New IDFacturaExpedidaTypeIDEmisorFactura Dim cver As New VersionSiiType cab.IDVersionSii = cver.Item05 empresa.NIF = "XXXXXXXXXXX" idfra.IDEmisorFactura = empresa idfra.NumSerieFacturaEmisor = i + 10 idfra.FechaExpedicionFacturaEmisor = "15-01-2015" fras.IDFactura = idfra Dim fraexp As New FacturaExpedidaType fraexp.TipoFactura = "1" fraexp.ClaveRegimenEspecialOTrascendencia = "01" fraexp.ImporteTotal = "26.70" fraexp.DescripcionOperacion = "Compra xxxxxxxxx" fras.FacturaExpedida = fraexp Dim persona As New PersonaFisicaJuridicaType persona.NombreRazon = "Empresa yyyyyyy" persona.NIFRepresentante = "94235500B" Dim contrap As New PersonaFisicaJuridicaType contrap = persona Dim sujeta As New SujetaType Dim sujetanoexenta As New SujetaTypeNoExenta Dim detalleiva As New DetalleIVAEmitidaType Dim tpdesglose As New TipoSinDesgloseType Dim desglose As New FacturaExpedidaTypeTipoDesglose sujetanoexenta.TipoNoExenta = sujetanoexenta.TipoNoExenta.S1 ReDim sujetanoexenta.DesgloseIVA(0) detalleiva.TipoImpositivo = "21" detalleiva.BaseImponible = "22.07" detalleiva.CuotaRepercutida = "4.63" detalleiva.TipoRecargoEquivalencia = 0 detalleiva.CuotaRecargoEquivalencia = 0 sujetanoexenta.DesgloseIVA(0) = detalleiva sujeta.NoExenta = sujetanoexenta tpdesglose.Sujeta = sujeta desglose.Item = tpdesglose fraexp.TipoDesglose = desglose Dim cfra As New LRConsultaEmitidasType Dim cfil As New LRFiltroEmitidasType Dim ccla As New IDFacturaExpedidaBCType Dim cempr As New IDFacturaExpedidaBCTypeIDEmisorFactura Dim ccab As New CabeceraConsultaSii Dim cper As New PersonaFisicaJuridicaUnicaESType Dim cperio As New RegistroSiiPeriodoImpositivo Dim cperio2 As New RegistroSiiPeriodoImpositivo ccla.FechaExpedicionFacturaEmisor = "15-01-2015" cempr.NIF = "XXXXXXXXX" ccla.IDEmisorFactura = cempr ccla.NumSerieFacturaEmisor = "1" cfil.ClavePaginacion = ccla cperio.Ejercicio = 2015 cperio2.Ejercicio = 2015 cperio2.Periodo = "01" cfil.PeriodoImpositivo = cperio2 cfra.FiltroConsulta = cfil cfra.FiltroConsulta.ClavePaginacion = ccla ReDim Preserve testC.RegistroLRFacturasEmitidas(i) testC.RegistroLRFacturasEmitidas(i) = fras Next i resul = webserviceProxy.SuministroLRFacturasEmitidas(testC) |
#2
|
||||
|
||||
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
Recuerda poner los tags al código fuente, ejemplo: Gracias |
#3
|
|||
|
|||
Cita:
Hola batuzail, Hay 3 formas de crear el xml a enviar a AEAT-SII: -forma1: mediante cadenas de texto concatenadas -forma2: usando XmlReader, XmlWriter y otras clases asociadas -forma3: usando las clases generadas al crear el proxy con wsdl.exe en .NET. Yo estoy trabajando en la forma 3 y mi codigo es muy parecido al tuyo (el tuyo es mas elegante y compacto), pero en ambos casos tenemos un problema sin resolver, que es poner el elemento raiz, o sea: <soapenv:Envelope xmlns:soapenv="...//schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="...://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="...://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> Y ademas que todas las etiquetas tienen que llevar su espacio de nombres y su nombre, por ejemplo: <siiLR:SuministroLRFacturasEmitidas> <sii:Cabecera> <sii:IDVersionSii> Etc. Al menos según los ejemplos que pone Hacienda en el pdf “ SII_Descripcion_ServicioWeb_v0.5_es_es.pdf”, en el apartado 8.1.1.1.Ejemplo mensaje de XML de alta, por lo que entiendo que sera obligatorio Yo he cogido tu codigo y le he añadido antes de la ultima linea, las siguientes lineas para ver el xml generaro 'ANEXO/INCISO: Serializacion a XML 'forma 1: por Consola en Ventana Resultados el resultado aparece en la ventana Resultados y podras ver que no tiene la cabecera que piden, ni las etiquetas cumplen con el disñeo <espacioNombres:nombreEtiqueta> No se si lo que digo es correcto o no importa, aunque yo creo que si. Voy a seguir investigando, dentro de la forma 3 a ver si lo consigo. Si descubres algo, ya diras. Otra duda gorda: Yo tengo la clase siiService tal que asi ¿Por que? ¿cual es la utilidad o ventaja? Muchas gracias por tu aporte y tu info Última edición por jlegido fecha: 28-02-2017 a las 19:03:17. Razón: Por que han sido borrados dos partes del codigo |
#4
|
|||
|
|||
Hola jlegido,
A mi me funciona correctamente y envío los registros y recibo un csv válido y en caso de error recibo el error, también me funciona la consulta en caso de consultar una factura ya emitida. No se a que te refieres con añadir los datos de cabecera, puede que sea algo que al pasarlo a xml no hace. Sobre mi clase Código:
Partial Public Class siiService Inherits Microsoft.Web.Services3.WebServicesClientProtocol Saludos |
#5
|
|||
|
|||
Cita:
Hola batuzail, Ante todo muchas gracias por tu rapida respuesta, que creo me es de bastante utilidad y me quita un peso de encima. Yo me referia a que al enviar el contenido xml, este debe tener, antes de los nodos de datos, lo siguiente: Código:
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="htp://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="htps://ww2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="htps://ww2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd"> De todas formas, lo fundamental es QUE A TI, CON EL CODIGO QUE PUSISTE AQUÍ EN EL FORO, TE FUNCIONA PERFECTAMENTE, con lo cual doy por hecho: 1) Que tu solucion es buena (por que, ademas la has probado incluso con certificado) 2) Que esa cabecera a lo mejor no es necesaria, o al enviar el mensaje a la AEAT-SII se genera implicitamente Me queda tambien muy claro el uso de: Código:
Public Class siiService Inherits Microsoft.Web.Services3.WebServicesClientProtocol, Saludos |
#6
|
|||
|
|||
Hola.
Aunque se que este club es de Delphi, estoy intentando crear una solución en Java para el problema. Tengo alguna experiencia con Java y ninguna con webservices. He visto tu código .NET, que es quizá lo más parecido a Java que he encontrado por ahí, pero me surgen dudas. Lamento no haber encontrado ningún foro de Java y por eso me veo obligado a preguntar aquí. Os comento mi situación. Tengo ya creado una objeto SuministroLRFacturasEmitidas (supongo que correctamente) que contiene una factura de ejemplo, y también tengo un objeto X509Certificate con un certificado obtenido a partir de un fichero .PFX. Entiendo que sólo me quedaría invocar a los métodos necesarios para enviar el objeto y recibir la respuesta, pero no se como. Si alguien pudiera ayudarme, estaría muy agradecido. levo muchas horas con esto y no avanzo. Gracias |
#7
|
|||
|
|||
Efectivamente, el foro es sólo de Delphi pero en este hilo están participando programadores de otros varios lenguajes. Bienvenidos, creo que nadie estorba. Pero no sólo existe esta división. También está el grupo que prefiere crear primero su propio XML y luego enviarlo por los varios medios que existen, y otro sector, que parece mayoritario, que manda la información creándola sobre la marcha mediante el uso de las funciones de los WSDL. Quizás por este motivo seguir el hilo sea algo complicado y en algunos momentos desorienta.
Pero lo importante es que todos hemos aprendido bastante. Muchas gracias a los que habeis aportado ideas y código. Saludos, |
#8
|
|||
|
|||
Sii vs modulo 340
Hola:
Soy nuevo en el foro. Tenemos que empezar con sii y todavia no sabemos en que lo vamos a hacer. no se si llegamos tarde. La pregunta es. - ¿La información para el SII la estais encontrando en la que ya teneis para el modulo 340?. - Habeis pensado en implementar alguna validación contra SII. ejemplo. cuento cuanta facutaras tengo en mi sistema el dia 1/03/2017 (y me dice 3454 por 1.345 Euros) lanzar consultar al SII para ver si realmente tengo 345 facturas por un total de 1.345 euros) O simplemente os vais a fiar de que el SII os ha dicho que la factura esta correctamente enviada. |
#9
|
||||
|
||||
Cita:
Saludos
__________________
Be water my friend. |
#10
|
|||
|
|||
Cobros en metálico recibido end_point
Hola:
Estoy validando todos los ejemplos de xml de SII usando directamente la web de aeat. Me funcionan todos excepto los de cobros : (8.1.5. Alta de Cobros en metálico) uso el end_point : /wlpl/SSII-FACT/ws/fr/SiiFactPAGV1SOAP y recibo el error. <faultstring>Codigo[4124].Error La direccion no se corresponde con el fichero de entrada.</faultstring> aunque en otras ocasiones el error devuelto era: <faultstring>403.No autorizado</faultstring> ¿alquien tiene un xml correcto con su correspondiente end_point? gracias Código:
<soapenv:Envelope> <soapenv:Header/> <soapenv:Body> <!-- Alta de Cobros en metálico recibido --> <!-- /wlpl/SSII-FACT/ws/fr/SiiFactPAGV1SOAP --> <siiLR:SuministroLRCobrosMetalico> <sii:Cabecera> <sii:IDVersionSii>0.6</sii:IDVersionSii> <sii:Titular> <sii:NombreRazon>Mi_nombrel</sii:NombreRazon> <sii:NIF>MI_numero_NIF</sii:NIF> </sii:Titular> <sii:TipoComunicacion>A0</sii:TipoComunicacion> </sii:Cabecera> <siiLR:RegistroLRCobrosMetalico> <sii:PeriodoImpositivo> <sii:Ejercicio>2017</sii:Ejercicio> <sii:Periodo>0A</sii:Periodo> </sii:PeriodoImpositivo> <siiLR:Contraparte> <sii:NombreRazon>LA_OTRA_EMPRESA</sii:NombreRazon> <sii:NIF>NIF_OTRA_EMPRESA</sii:NIF> </siiLR:Contraparte> <siiLR:ImporteTotal>6130.56</siiLR:ImporteTotal> </siiLR:RegistroLRCobrosMetalico> </siiLR:SuministroLRCobrosMetalico> </soapenv:Body> </soapenv:Envelope> |
#11
|
|||
|
|||
yo para las pruebas "https://www7.aeat.es/wlpl/SSII-FACT/ws/pm/SiiFactCMV1SOAP" y funciona correctamente.
|
#12
|
|||
|
|||
Cita:
y para <siiLR:SuministroLRCobrosEmitidas> 8.1.11. alta cobros de fact dada de alta en Libro de Facturas Expedidas.xml ¿que endpoint se usa.? En que documento se recogen los endpoint, para cada tipo de petición no lo veo en la web. |
#13
|
|||
|
|||
Endpoint incorrecto
Cita:
Estás enviado un cobro a los pagos. La URL correcta del enpoint de cobros es: https://www7.aeat.es/wlpl/SSII-FACT/...iFactCOBV1SOAP |
#14
|
|||
|
|||
Selecccionar un Valor de la lista SuministroFactEmitidas.CountryType2
Tengo la siguiente duda, a ver si alguien me puede echar un cable.
En mi BD dispongo del código ISO de todos los paises, es decir, de todos los pases cuyo código corresponde con la lista SuministroFactEmitidas.CountryType2. El problema es que no soy capaz de indicar en el registro FacturaExpedida.Contraparte.IDOtro.CodigoPais el código de pais, me explico. No puedo indicar lo siguiente V_FACEMI_SII[i].FacturaExpedida.Contraparte.IDOtro.CodigoPais := 'DE' Para hacerlo correctamente debo indicarlo así V_FACEMI_SII[i].FacturaExpedida.Contraparte.IDOtro.CodigoPais := SuministroFactEmitidas.CountryType2(2). Pero para esto necesito saber que posición ocupa el pais del cliente en la lista de constantes SuministroFactEmitidas.CountryType2. Como habéis resuelto este tema? Existe alguna forma de indicarle SuministroFactEmitidas.CountryType2("La posición que ocupe el pais DE")? Quedo a la espera de vuestras noticias. Muchisimas Gracias por adelantado. |
#15
|
|||
|
|||
Cita:
|
#16
|
||||
|
||||
La unica forma que creo que existe es hacerte una función de retorne el numero que ocupa cada pais. Igual que para el resto de listas que hay que sumistrar, tipo facturas, etcc ya que no quieren un dato sino un índice de una tabla.
Por cierto esperate a la version 7 por que han cambiado la lista de paises. |
#17
|
|||
|
|||
Cita:
Se puede hacer de manera directa, sin tener que preocuparnos por si cambian sus códigos internos de países o lo que sea. Por ejemplo, si quisiéramos asignar el país Francia, teniendo el código ISO (FR), sería de esta manera:
Si el GetEnumValue lo podemos utilizar en todos los otros tipos de campo |
#18
|
|||
|
|||
CountryType2
Cita:
Hola a todos, Estoy tratando de seleccionar el código de país en mi aplicación de C#. Mi problema es que estoy tratando de asignar un país sin tener que crear una función con un "if" para cada código de país. He visto que en Delphi parece que lo habéis solucionado. ¿Sabéis como se podría hacer en C#? Muchas gracias. |
#19
|
|||
|
|||
Mira el post #721 y #725
|
#20
|
|||
|
|||
Yo uso el nif/cif intracomunitario, los 2 primeros digitos coinciden con el codigo pais...
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4170 | Hace 3 Semanas 17:29:05 |
AEAT envio de datos vía Webservice problemas con WSDL | CelsoO | Internet | 11 | 09-10-2019 20:03:41 |
webService Soap de la Administración Digital Española notific@ | apicito | Internet | 3 | 31-01-2017 11:25:28 |
Error en Webservice funcion envio de sms | webmasterplc | Delphi para la web | 5 | 25-07-2013 20:10:29 |
Problemas con envío de XML a un WebService | davidvamo | Internet | 1 | 13-02-2007 15:49:20 |
|