Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

Es indispensable utilizar XSLT para generar cadena original

La factura esta basada en XML, independiente del lenguaje de programacion todos debemos saber acerca de esta tecnologia
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
rodmarquez21
Mensajes: 6
Registrado: Lun Ene 10, 2011 12:09 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por rodmarquez21 »

rodmarquez21 escribió:En el PDF de ejemplo de un cfdi del SAT vi que generan una cadena original para el complemento timbre fiscal, alguien sabe si existe algún xslt para generar esa cadena? ya me maté buscandolo en la página de sat y no lo encuentro... gracias!!!!!!! excelente foro DADO
Bueno heme aquí respondiéndome solito, lo encontré!!! ftp://ftp2.sat.gob.mx/asistencia_servic ... D_1_0.xslt

Jaja, me merezco un six!!
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por acanas »

Asi es, yo lo hago asi y no tengo ninguna falla.
Zyphersoft Development
magbeto
Mensajes: 1
Registrado: Sab Mar 26, 2011 9:09 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por magbeto »

Saludos
Estoy usando delphi 7 y tengo un problema al generar la cadena utilizo lo siguiente:
Var
Cadena:String;
begin
XSLPageProducer1.FileName := 'C:\CFD\xml\cadenaoriginal_2_0.xslt';
XSLPageProducer1.XMLData := XMLDoc;
Cadena:= XSLPageProducer1.Content;

pero me lanza este mensaje "No existe la plantilla con nombre 'Requerido' en la hoja de estilos"

modifique el archivo cadenaoriginal_2_0.xslt


<xsl:include href="C:\CFD\xml\utilerias.xslt"/>
<!--
En esta sección se define la inclusión de las demás plantillas de transformación para
la generación de las cadenas originales de los complementos fiscales
-->
<xsl:include href="C:\CFD\xml\ecc.xslt"/>
<xsl:include href="C:\CFD\xml\psgecfd.xslt"/>
<xsl:include href="C:\CFD\xml\donat.xslt"/>
<xsl:include href="C:\CFD\xml\divisas.xslt"/>
<xsl:include href="C:\CFD\xml\ecb.xslt"/>
<xsl:include href="C:\CFD\xml\detallista.xslt"/>
<xsl:include href="C:\CFD\xml\implocal.xslt"/>
<xsl:include href="C:\CFD\xml\terceros.xslt"/>

y ahora me va bien en winXP pero en win7 sigue el mismo problema alguna idea
Raym0n
Mensajes: 7
Registrado: Lun Ene 03, 2011 8:03 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por Raym0n »

Hola, antes que nada... DADO, felicidades por este foro, me a ayudado mas que poner el anexo 20 debajo de la almohada :lol: .

Tengo una preguntota, alguien sabe si esta mal el xslt para la cadena original del del TFD, tengo la generacion de la cadena del CFD y funciona bien, cuando aplico la del TFD solo arroja |||.

Esto es lo que tengo en el CFD en la parte del timbre

<cfdi:Complemento>
<tfd:TimbreFiscalDigital xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital TimbreFiscalDigital.xsd" selloCFD="KQ22IHjVRzqZrmLwXGLSpgJ4OXJ00gaSdwHfABi2B8QpvuHHyCPXSXlG9nm1iBkT3Kl0vK0dvYtfc7PmlLgAbZD3HXGSvEfp5OHepsrwmeZIc6Ln7Sf/I0xi2GWi6pHgnNu5NmGvBAcRYB7ReGNAYDRGzG8CBH5K8DU8hpfoSbc=" FechaTimbrado="2011-03-06T20:40:10" UUID="ad662d33-6934-459c-a128-bdf0393e0f44" noCertificadoSAT="30001000000100000801" version="1.0" selloSAT="j2gGwF26lCgiMEj7IlVTDaQrAsOtVU7yO6idRZrSXYnarFQ5cbUE79WER4O8g+TZ
pYnyeOoH7DskvzeSMlCG67Tp/+Rx74CSTvzLtfDjEK6mmzKHylcWMn9SizIGWRDB
RrxOv5P2BPLIwTY1/HUQ7I46/eBzAuTLHsiDhsNJCMk=
" />
</cfdi:Complemento>

y el codigo que utilizo es este que funciona bien para la cadena del CFD

Dim transformador As New Xml.Xsl.XslCompiledTransform()
transformador.Load(empresa("ruta") & "\XSLTs\cadenaoriginal_TFD_1_0.xslt")
transformador.Transform(pathXml, fileCadena)

De antemano, gracias por su ayuda.
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por acanas »

@Raymon: Te recomiendo compilar el esquema xslt de TFD para que sea más rapido al momento de obtener el timbre.

En .Net existe este comando:
xsltc /out:TFD10XSLT.DLL /class:Timbrado.V3.TFDXSLT cadenaoriginal_TFD_1_0.xslt

Esto lo que hace es que precompila el esquema y al momento de hacer la transformación mejora enormemente el desempeño!


Si esta mal, yo tuve que modificarlo poquito

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital">
	<!-- Con el siguiente método se establece que la salida deberá ser en texto -->
	<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
	<xsl:template name="Requerido">
		<xsl:param name="valor"/>|<xsl:call-template name="ManejaEspacios">
			<xsl:with-param name="s" select="$valor"/>
		</xsl:call-template>
	</xsl:template>
	<!-- Normalizador de espacios en blanco -->
	<xsl:template name="ManejaEspacios">
		<xsl:param name="s"/>
		<xsl:value-of select="normalize-space(string($s))"/>
	</xsl:template>
	<!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
	<xsl:template match="/Complemento/TimbreFiscalDigital">|<xsl:apply-templates select="/tfd:TimbreFiscalDigital"/>||</xsl:template>
	<!--  Aquí iniciamos el procesamiento de los datos incluidos en el comprobante -->
	<xsl:template match="tfd:TimbreFiscalDigital">
		<!-- Iniciamos el tratamiento de los atributos del Timbre-->		
		<xsl:call-template name="Requerido">
			<xsl:with-param name="valor" select="./@version"/>
		</xsl:call-template>
		<xsl:call-template name="Requerido">
			<xsl:with-param name="valor" select="./@UUID"/>
		</xsl:call-template>
		<xsl:call-template name="Requerido">
			<xsl:with-param name="valor" select="./@FechaTimbrado"/>
		</xsl:call-template>
		<xsl:call-template name="Requerido">
			<xsl:with-param name="valor" select="./@selloCFD"/>
		</xsl:call-template>
		<xsl:call-template name="Requerido">
			<xsl:with-param name="valor" select="./@noCertificadoSAT"/>
		</xsl:call-template>
	</xsl:template>
</xsl:stylesheet>
Zyphersoft Development
Raym0n
Mensajes: 7
Registrado: Lun Ene 03, 2011 8:03 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por Raym0n »

Gracias, acanas, donde ejecuto ese comando?, imagino que eso tambien lo puedo aplicar para la cadena del CFD....

Ya me genero la cadena original del TFD, no se si algo tengo mal porque no la cerro toda, le falto el final, voy a ver si la tengo mal o si solo te no agrego los || del final, me la dejo asi..

|1.0|ad662d33-6934-459c-a128-bdf0393e0f44|2011-03-06T20:40:10|KQ22IHjVRzqZrmLwXGLSpgJ4OXJ00gaSdwHfABi2B8QpvuHHyCPXSXlG9nm1iBkT3Kl0vK0dvYtfc7PmlLgAbZD3HXGSvEfp5OHepsrwmeZIc6Ln7Sf/I0xi2GWi6pHgnNu5NmGvBAcRYB7ReGNAYDRGzG8CBH5K8DU8hpfoSbc=|30001000000100000801
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por acanas »

Raym0n escribió:Gracias, acanas, donde ejecuto ese comando?, imagino que eso tambien lo puedo aplicar para la cadena del CFD....

Ya me genero la cadena original del TFD, no se si algo tengo mal porque no la cerro toda, le falto el final, voy a ver si la tengo mal o si solo te no agrego los || del final, me la dejo asi..

|1.0|ad662d33-6934-459c-a128-bdf0393e0f44|2011-03-06T20:40:10|KQ22IHjVRzqZrmLwXGLSpgJ4OXJ00gaSdwHfABi2B8QpvuHHyCPXSXlG9nm1iBkT3Kl0vK0dvYtfc7PmlLgAbZD3HXGSvEfp5OHepsrwmeZIc6Ln7Sf/I0xi2GWi6pHgnNu5NmGvBAcRYB7ReGNAYDRGzG8CBH5K8DU8hpfoSbc=|30001000000100000801
En el command prompt pero del visual studio ya que ese tiene los paths que apuntan a las herramientas adicionales que vienen en el SDK del .Net Framework.
Zyphersoft Development
Raym0n
Mensajes: 7
Registrado: Lun Ene 03, 2011 8:03 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por Raym0n »

Gracias nuevamente, simpre se aprenden cosas nuevas :) , ahorita aplico lo del comando. Una pregunta, por casualidad no usas crystal reports, ya tengo todo el reporte, lo que me falta es agregarle el codigo, pero no puedo agregar la foto, lo quise hacer con un parametfield para hacerlo dinamico pero no quiere agarrar el path que le asigno.
Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por acanas »

Raym0n escribió:Gracias nuevamente, simpre se aprenden cosas nuevas :) , ahorita aplico lo del comando. Una pregunta, por casualidad no usas crystal reports, ya tengo todo el reporte, lo que me falta es agregarle el codigo, pero no puedo agregar la foto, lo quise hacer con un parametfield para hacerlo dinamico pero no quiere agarrar el path que le asigno.
Fijate que no, uso devexpress xtrareports.
Zyphersoft Development
Raym0n
Mensajes: 7
Registrado: Lun Ene 03, 2011 8:03 pm

Re: Es indispensable utilizar XSLT para generar cadena origi

Mensaje por Raym0n »

Ni modo a seguirle buscando. Ya lo probe, funciona de maravilla con la libreria, voy a pasar la cadena original a lo mismo.... solo que tengo los agregados de manera local, haber que se me ocurre para hacer eso, talvez incluir todos los archivos en el principal.
Cerrado