paquitohm wrote:Víctor,
Desde
https://www.agenciatributaria.es/AEAT.d ... s_web.html
Se puede obtener el esquema xsd https://prewww2.aeat.es/static_files/co ... macion.xsd
que me parece a mi que lleva todo lo necesario.
Usando visual studio code, en teoría se podria hacer según dice Microsoft en https://learn.microsoft.com/en-us/visua ... ew=vs-2022
Alguno teneis visual code instalado y quereis intentarlo ?
Instalé el otro dia xmlspy para esto y no he podido y me da cosa instalar otra FAT aplicacion para esto.
En todo caso parece que tambien se podria hacer con el utilitario xsd.exe de visual code. Si alguien lo tiene por el hd agradeceria que la compartiera en hmpaquito en hotmail punto com
***
PD 1. Se trataría de obtener un .xml completo con todas las casuisticas. Los ejemplos que pueden venir en el .pdf de referencia de la Agencia podrían no describir ejemplos que comprendieran toda la sintaxis posible.
PD 2. Precisamente esto deberia ser tambien un trabajo de la IA. Le suministramos el .xsd y le pedimos el un ejemplo completo de un .xml. La gratuita ya la he probado y dice que mensaje muy largo
PD 3. Estaría bien cogerse uno de esos lenguajes que si genera el sistema de metodos y objetos y pasarlo a Harbour. Por ejemplo, se generan todas las clases en Delphi y luego se le dice a la IA que las traduzca a Harbour. Qué gran adelanto y qué base más buena sería para empezar con buen pie este tema. Quizás se pueda hacer con el VSC en C#
Cheers
<sum:RegFactuSistemaFacturacion>
<sum1:Cabecera>
<sum1:ObligadoEmision>
<sum1:NombreRazon>XXXXX</sum1:NombreRazon>
<sum1:NIF>AAAA</sum1:NIF>
</sum1:ObligadoEmision>
</sum1:Cabecera>
<sum:RegistroFactura>
Garbi wrote:Tengo muchas dudas, en principio parece sencillo usar veri*factu, hacer la factura subirla en formato .xml e imprimirla con el QR.
Pero soy el único que no se por donde empezar.
Tengo el fichero de Facturacion-Verifactu xls que describe como tiene que hacerse el xml. Pero no veo o no localizo ningún ejemplo xml para poder empezar.
El código QR más o menos lo tengo claro lo que lleva, pero según he visto debe de ir en la parte superior del documento según he visto en un pdf del diseño, vamos estoy seguro que me van a decir que modificar la cabecera de la factura nada,que si acaso al final de la factura.
Hay alguien que al menos a mi (y seguro que servirá para otros usuarios) me pueda guiar, porque ya esto mareado y con algo de ansiedad por que si habrá 9 meses para implantar pero me temo que no voy a ser capaz de hacerlo.
Y además con las sanciones que hay por no estar al día no es para ir jugándotelo.
Y no creo que Victor, Paquito solamente estén en ello.
Gracias a todos por vuestra ayuda.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd"
xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd"
xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
<soapenv:Header />
<soapenv:Body>
<sum:RegFactuSistemaFacturacion>
<sum1:Cabecera>
<sum1:ObligadoEmision>
<sum1:NombreRazon>XXXXX</sum1:NombreRazon>
<sum1:NIF>AAAA</sum1:NIF>
</sum1:ObligadoEmision>
</sum1:Cabecera>
<sum:RegistroFactura>
<sum:RegistroAlta>
<sum1:IDVersion>1.0</sum1:IDVersion>
<sum1:IDFactura>
<sum1:IDEmisorFactura>AAAA</sum1:IDEmisorFactura>
<sum1:NumSerieFactura>12345</sum1:NumSerieFactura>
<sum1:FechaExpedicionFactura>13-09-2024</sum1:FechaExpedicionFactura>
</sum1:IDFactura>
<sum1:NombreRazonEmisor>XXXXX</sum1:NombreRazonEmisor>
<sum1:TipoFactura>F1</sum1:TipoFactura>
<sum1:DescripcionOperacion>Descripc</sum1:DescripcionOperacion>
<sum1:Destinatarios>
<sum1:IDDestinatario>
<sum1:NombreRazon>YYYY</sum1:NombreRazon>
<sum1:NIF>BBBB</sum1:NIF>
</sum1:IDDestinatario>
</sum1:Destinatarios>
<sum1:Desglose>
<sum1:DetalleDesglose>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
<sum1:TipoImpositivo>4</sum1:TipoImpositivo>
<sum1:BaseImponibleOimporteNoSujeto>10</sum1:BaseImponibleOimporteNoSujeto>
<sum1:CuotaRepercutida>0.4</sum1:CuotaRepercutida>
</sum1:DetalleDesglose>
<sum1:DetalleDesglose>
<sum1:ClaveRegimen>01</sum1:ClaveRegimen>
<sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
<sum1:TipoImpositivo>21</sum1:TipoImpositivo>
<sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
<sum1:CuotaRepercutida>21</sum1:CuotaRepercutida>
</sum1:DetalleDesglose>
</sum1:Desglose>
<sum1:CuotaTotal>21.4</sum1:CuotaTotal>
<sum1:ImporteTotal>131.4</sum1:ImporteTotal>
<sum1:Encadenamiento>
<sum1:RegistroAnterior>
<sum1:IDEmisorFactura>AAAA</sum1:IDEmisorFactura>
<sum1:NumSerieFactura>44</sum1:NumSerieFactura>
<sum1:FechaExpedicionFactura>13-09-2024</sum1:FechaExpedicionFactura>
<sum1:Huella>HuellaRegistroAnterior</sum1:Huella>
</sum1:RegistroAnterior>
</sum1:Encadenamiento>
<sum1:SistemaInformatico>
<sum1:NombreRazon>SSSS</sum1:NombreRazon>
<sum1:NIF>NNNN</sum1:NIF>
<sum1:NombreSistemaInformatico>NombreSistemaInformatico</sum1:NombreSistemaInformatico>
<sum1:IdSistemaInformatico>77</sum1:IdSistemaInformatico>
<sum1:Version>1.0.03</sum1:Version>
<sum1:NumeroInstalacion>383</sum1:NumeroInstalacion>
<sum1:TipoUsoPosibleSoloVerifactu>N</sum1:TipoUsoPosibleSoloVerifactu>
<sum1:TipoUsoPosibleMultiOT>S</sum1:TipoUsoPosibleMultiOT>
<sum1:IndicadorMultiplesOT>S</sum1:IndicadorMultiplesOT>
</sum1:SistemaInformatico>
<sum1:FechaHoraHusoGenRegistro>2024-09-13T19:20:30+01:00</sum1:FechaHoraHusoGenRegistro>
<sum1:TipoHuella>01</sum1:TipoHuella>
<sum1:Huella>Huella</sum1:Huella>
</sum:RegistroAlta>
</sum:RegistroFactura>
</sum:RegFactuSistemaFacturacion>
</soapenv:Body>
</soapenv:Envelope>
yo sigo pegándome con el SistemaFacturación.wsdl a ver si puedo sacar algo en claro.
La vía más rápida es montar la clase según las especificaciones de SuministroInformación.xsd y listos, pero si se puede hacer algo automático, puede ahorrar muchas horas de trabajo
Hay alguien que al menos a mi (y seguro que servirá para otros usuarios) me pueda guiar, porque ya esto mareado y con algo de ansiedad por que si habrá 9 meses para implantar pero me temo que no voy a ser capaz de hacerlo.
Y además con las sanciones que hay por no estar al día no es para ir jugándotelo.
Y no creo que Victor, Paquito solamente estén en ello.
paquitohm wrote:Un monton de horas le he echado yo al xmlspy sin poder sacar un xml completo de ejemplo. Le he hecho de todo. Quizas mis cortos conocimientos sobre el lenguaje de modelado xml me han pasado factura. He decidido que cuando empiece con eso lo haré con un ejemplo que haya por ahi como hice en su dia con el sii y con el ticketbai.
paquitohm wrote:A mi lo que me preocupa es cual va a ser el sistema que tenemos que usar. VF introduce una variable t desconocida hasta ahora: Flujo de datos. Eso obliga a acumular xmls en un mismo envio y por supuesto obliga tambien a esperar una respuesta multiple.
El tratamiento de las anulaciones tambien da para alguna charla
Garbi wrote:Vamos por partes.
1.- Crear fichero xml
Tenemos nuestros datos en .dbf
Con el ejemplo que hay de un ejemplo de xml podría usar las funciones
fcreate() para crear el xml
ir añadiendo lineas con outfile()
y una vez terminado todo con fclose() cerrar el fichero.
¿Con eso obtendría un fichero valido xml?
Es por empezar por algo, y saber si estoy perdiendo el tiempo o voy por buen camino.
¿Qué pensáis?
paquitohm wrote:Garbi,
Esto no tiene nada pero sólo hay que trabajarlo. Peor lo tienen los del no VF Grosso modo esto sería el tema:
0 - Darse de alta como desarrollador y ponerle un nombre y version al programa
1 - Tener un certificado digital para poder enviar2 - Generar el .xml con las ultimas facturas generadas. En SII y en TicketBAI genero el xml tomando como base un .xml y haciendo sustituciones de string. Si el nodo es complejo, entonces lo trato "aparte". Por ejemplo %NODO_DESGLOSE_IVA%. No digo que sea lo ideal, pero me funciona. Tampoco tiene mucha menos complejidad la estructura por clases que es la forma mas sofisticada.
3 - Hacer llamada curl (yo uso curl.exe desde los tiempos del sii) de envio y recoger respuesta y evaluar lo respondido por la agencia
4 - Esperar el tiempo t para volver a hacer otro envio.
Este (o parecido) es el esquema básico. Podemos ir completando cada punto.
Esas son las Altas de facturas. Las anulaciones, si las hay, se podrian tratar en un bloque todas juntas.
Salu2
Garbi wrote:Estoy haciendo todo lo posible pero creo que mi nivel no da para realizar esta actualización sin mucha ayuda.
Víctor y Paquito están muy por encima de mi nivel.
Además no comprendo porque no hay más compañeros que no les afecte esta actualización y no tengan dudas.
He echado un vistazo a chilkat, o xmlspy pero no tengo los conocimientos para poder realizar el xml que se debería enviar a Veri*Factu.
Y lo peor es que esto va a entrar en marcha si o si y la gente esta tan tranquila con softwares antiguos y no le dan ninguna publicidad en los medios para que se vayan preparando.
Yo voy a seguir intentándolo pero lo veo muy complicado para mi nivel.
Un saludo a todos.
VictorCasajuana wrote:En el punto 2, para el ticketbai hay etiquetas que aparecen o no según el tipo de factura, creo que en verifactu será igual, ahí utilizas un .xml base para cada tipo de factura?
//-------------------------------------------------------------------------//
// Esquema base inicial es IDVersion TBAI 1.2
METHOD EsquemaXmlAlta()
Local c
/*
Tres tipos de sustituciones:
%ETI_XXXXX%
%VALOR_XXX%
%BLOQUE_XX%
*/
TEXT INTO c
<?xml version="1.0" encoding="UTF-8"?>
//**<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV1-2.xsd ">
<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd ">
//**<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd">
//**<T:TicketBai xmlns:T="urn:ticketbai:emision">
<Cabecera>
<IDVersionTBAI>%VALOR_IDVERSIONTBAI%</IDVersionTBAI>
</Cabecera>
<Sujetos>
<Emisor>
<NIF>%VALOR_EMISOR_NIF%</NIF>
<ApellidosNombreRazonSocial>%VALOR_EMISOR_APELLIDOSNOMBRERAZONSOCIAL%</ApellidosNombreRazonSocial>
</Emisor>
<Destinatarios>
<IDDestinatario>
<NIF>%VALOR_DESTINATARIO_NIF%</NIF>
//** Al menos para Intracomunitarias
<IDOtro>
<CodigoPais>%VALOR_DESTINATARIO_CODIGOPAIS%</CodigoPais>
<IDType>%VALOR_DESTINATARIO_IDTYPE%</IDType>
<ID>%VALOR_DESTINATARIO_ID%</ID>
</IDOtro>
<ApellidosNombreRazonSocial>%VALOR_DESTINATARIO_APELLIDOSNOMBRERAZONSOCIAL%</ApellidosNombreRazonSocial>
<CodigoPostal>%VALOR_DESTINATARIO_CODIGOPOSTAL%</CodigoPostal>
<Direccion>%VALOR_DESTINATARIO_DIRECCION%</Direccion>
</IDDestinatario>
</Destinatarios>
<VariosDestinatarios>N</VariosDestinatarios>
<EmitidaPorTercerosODestinatario>%VALOR_EMITIDA_POR_TERCEROS_O_DESTINATARIO%</EmitidaPorTercerosODestinatario>
</Sujetos>
<Factura>
<CabeceraFactura>
<SerieFactura>%VALOR_SERIEFACTURA%</SerieFactura>
<NumFactura>%VALOR_NUMFACTURA%</NumFactura>
<FechaExpedicionFactura>%VALOR_FECHAEXPEDICIONFACTURA%</FechaExpedicionFactura>
<HoraExpedicionFactura>%VALOR_HORAEXPEDICIONFACTURA%</HoraExpedicionFactura>
<FacturaSimplificada>%VALOR_FACTURASIMPLIFICADA%</FacturaSimplificada>
<FacturaEmitidaSustitucionSimplificada>%VALOR_FACTURAEMITIDASUSTITUCIONSIMPLIFICADA%</FacturaEmitidaSustitucionSimplificada>
//** RECTIFICATIVAS
<FacturaRectificativa>
<Codigo>%VALOR_FR1_CODIGO%</Codigo>
<Tipo>%VALOR_FR1_TIPO%</Tipo>
//** //-INICIO--- - - - - - - - - - - - - - -//
//** // Estos campos solo se utilizaran cuando es una Factura Rectificativa por Sustitucion
<ImporteRectificacionSustitutiva>
<BaseRectificada>%VALOR_FR1_BASERECTIFICADA%</BaseRectificada>
<CuotaRectificada>%VALOR_FR1_CUOTARECTIFICADA%</CuotaRectificada>
</ImporteRectificacionSustitutiva>
//** //-FIN------ - - - - - - - - - - - - - -//
</FacturaRectificativa>
<FacturasRectificadasSustituidas>
<IDFacturaRectificadaSustituida>
<NumFactura>%VALOR_FR2_NUMFACTURA%</NumFactura>
<FechaExpedicionFactura>%VALOR_FR2_FECHAEXPEDICIONFACTURA%</FechaExpedicionFactura>
</IDFacturaRectificadaSustituida>
</FacturasRectificadasSustituidas>
</CabeceraFactura>
<DatosFactura>
<FechaOperacion>%VALOR_FECHAOPERACION%</FechaOperacion>
<DescripcionFactura>%VALOR_DESCRIPCIONFACTURA%</DescripcionFactura>
<DetallesFactura>
%BLOQUE_DETALLESFACTURA%
</DetallesFactura>
<ImporteTotalFactura>%VALOR_IMPORTETOTALFACTURA%</ImporteTotalFactura>
<Claves>
<IDClave>
<ClaveRegimenIvaOpTrascendencia>%VALOR_CLAVEREGIMENIVAOPTRASCENDENCIA%</ClaveRegimenIvaOpTrascendencia>
</IDClave>
</Claves>
</DatosFactura>
<TipoDesglose>
//** Espa ol
<DesgloseFactura>
%BLOQUE_DESGLOSE_GENERAL_1%
</DesgloseFactura>
//** Extranjero
<DesgloseTipoOperacion>
//** Entrega de Bienes
<Entrega>
%BLOQUE_DESGLOSE_GENERAL_2%
</Entrega>
//** Prestacion de Servicios
//** Este no esta implementado. Habria que montar un poco de revolucion separando
//** lineas de Entrega de Bienes de lineas de Prestacion de Servicios. Ademas al
//** tener las mismas etiquetas valor los 3 BLOQUE_DESGLOSE_GENERAL, habria que
//** hacer algo para que se distiguieran quien es quien
<PrestacionServicios>
%BLOQUE_DESGLOSE_GENERAL_3%
</PrestacionServicios>
</DesgloseTipoOperacion>
</TipoDesglose>
</Factura>
<HuellaTBAI>
<EncadenamientoFacturaAnterior>
<SerieFacturaAnterior>%VALOR_SERIEFACTURAANTERIOR%</SerieFacturaAnterior>
<NumFacturaAnterior>%VALOR_NUMFACTURAANTERIOR%</NumFacturaAnterior>
<FechaExpedicionFacturaAnterior>%VALOR_FECHAEXPEDICIONFACTURAANTERIOR%</FechaExpedicionFacturaAnterior>
<SignatureValueFirmaFacturaAnterior>%VALOR_SIGNATUREVALUEFIRMAFACTURAANTERIOR%</SignatureValueFirmaFacturaAnterior>
</EncadenamientoFacturaAnterior>
<Software>
<LicenciaTBAI>%VALOR_SOFTWARE_LICENCIATBAI%</LicenciaTBAI>
<EntidadDesarrolladora>
<NIF>%VALOR_SOFTWARE_NIF%</NIF>
</EntidadDesarrolladora>
<Nombre>%VALOR_SOFTWARE_NOMBRE%</Nombre>
<Version>%VALOR_SOFTWARE_VERSION%</Version>
</Software>
//** OPCIONAL <NumSerieDispositivo>%VALOR_NUMSERIEDISPOSITIVO%</NumSerieDispositivo>
</HuellaTBAI>
</T:TicketBai>
ENDTEXT
RETURN c
*
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot], Timm Sodtalbers and 62 guests