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


.

Diferencias entre CFD (V2.0) y CFDI (V3.0)

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 ]]
Avatar de Usuario
ramonzea
Mensajes: 167
Registrado: Mié Sep 15, 2010 12:23 am

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por ramonzea »

Muy bueno, pero las dudas? "SE PUBLICARA EN EL BLOG"

Cual BLOG?

Saludos.
carlossantillan
Mensajes: 4
Registrado: Jue Sep 23, 2010 9:42 pm

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por carlossantillan »

Muchas gracias por el link de los XSD y los XSLT.... coincido en que no sabemos a que "BLOG" se refieren los del SAT...

Nosotros ya tenemos listo la mayoría de los requisitos para CFD, CFDI, QRCode, Cancelaciones CFDI... no es tan complicado.... pero hay que leer muy bien por que puede prestarse a muchas confusiones. Está pesimo que no haya un punto de contacto en el área de tecnología....

Hay un detalle en el XSD de las cancelaciones..... hay un elemento que se llama "SelloEmisor" que es de ds:SignatureType (especificación XML Digital Signature), estoy confundido acerca del nombre ya que la especificacion de w3c indica que el elemento se llama "Signature" de tipo enveloped.... si alguien tiene alguna observación a esto.. será bienvenida.....

Saludos.
Avatar de Usuario
ramonzea
Mensajes: 167
Registrado: Mié Sep 15, 2010 12:23 am

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por ramonzea »

Bueno despues de 2 dias he avanzado mi modulito para interpretar el cfdv2.xsd y cfdv3.xsd, y despues de tanta lata me arroja el ejemplo completo de todos los datos que debe llevar la nueva CFDi, si en algo fallo espero me hagan saber.
El por que de este proceso? por que si se le ocurre al sat cambiar algo (que ocurre muy seguido :evil: ), con este proceso ya me ahorro mucha lata.

Saludos.

<?xml version="1.0" encoding="UTF-8"?> ; me faltan unos encabezdos que aun estoy analizando como interpretarlos.
<Comprobante Moneda="[Moneda]" TipoCambio="[TipoCambio]" certificado="[certificado]" condicionesDePago="[condicionesDePago]" descuento="[descuento]" fecha="[fecha]" folio="[folio]" formaDePago="[formaDePago]" metodoDePago="[metodoDePago]" motivoDescuento="[motivoDescuento]" noCertificado="[noCertificado]" sello="[sello]" serie="[serie]" subTotal="[subTotal]" tipoDeComprobante="[tipoDeComprobante]" total="[total]" version="3.0">
<Emisor nombre="[Emisor.nombre]" rfc="[Emisor.rfc]">
<DomicilioFiscal calle="[DomicilioFiscal.calle]" codigoPostal="[DomicilioFiscal.codigoPostal]" colonia="[DomicilioFiscal.colonia]" estado="[DomicilioFiscal.estado]" localidad="[DomicilioFiscal.localidad]" municipio="[DomicilioFiscal.municipio]" noExterior="[DomicilioFiscal.noExterior]" noInterior="[DomicilioFiscal.noInterior]" pais="[DomicilioFiscal.pais]" referencia="[DomicilioFiscal.referencia]"/>
<ExpedidoEn calle="[ExpedidoEn.calle]" codigoPostal="[ExpedidoEn.codigoPostal]" colonia="[ExpedidoEn.colonia]" estado="[ExpedidoEn.estado]" localidad="[ExpedidoEn.localidad]" municipio="[ExpedidoEn.municipio]" noExterior="[ExpedidoEn.noExterior]" noInterior="[ExpedidoEn.noInterior]" pais="[ExpedidoEn.pais]" referencia="[ExpedidoEn.referencia]"/>
</Emisor>
<Receptor nombre="[Receptor.nombre]" rfc="[Receptor.rfc]">
<Domicilio calle="[Domicilio.calle]" codigoPostal="[Domicilio.codigoPostal]" colonia="[Domicilio.colonia]" estado="[Domicilio.estado]" localidad="[Domicilio.localidad]" municipio="[Domicilio.municipio]" noExterior="[Domicilio.noExterior]" noInterior="[Domicilio.noInterior]" pais="[Domicilio.pais]" referencia="[Domicilio.referencia]"/>
</Receptor>
<Conceptos>
<Concepto cantidad="[cantidad]" descripcion="[descripcion]" importe="[importe]" noIdentificacion="[noIdentificacion]" unidad="[unidad]" valorUnitario="[valorUnitario]">
<InformacionAduanera aduana="[InformacionAduanera.aduana]" fecha="[InformacionAduanera.fecha]" numero="[InformacionAduanera.numero]"/>
<CuentaPredial numero="[CuentaPredial.numero]"/>
<ComplementoConcepto/>
<Parte cantidad="[Parte.cantidad]" descripcion="[Parte.descripcion]" importe="[Parte.importe]" noIdentificacion="[Parte.noIdentificacion]" unidad="[Parte.unidad]" valorUnitario="[Parte.valorUnitario]">
<InformacionAduanera aduana="[InformacionAduanera.aduana]" fecha="[InformacionAduanera.fecha]" numero="[InformacionAduanera.numero]"/>
</Parte>
</Concepto>
</Conceptos>
<Impuestos totalImpuestosRetenidos="[totalImpuestosRetenidos]" totalImpuestosTrasladados="[totalImpuestosTrasladados]">
<Retenciones>
<Retencion importe="[Retencion.importe]" impuesto="[Retencion.impuesto]"/>
</Retenciones>
<Traslados>
<Traslado importe="[Traslado.importe]" impuesto="[Traslado.impuesto]" tasa="[Traslado.tasa]"/>
</Traslados>
</Impuestos>
<Complemento/>
<Addenda/>
</Comprobante>
link_zda
Mensajes: 6
Registrado: Jue Jul 29, 2010 6:17 pm

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por link_zda »

Para los CFDi tampoco vamos a necesitar el noAprobación y anoAprobacion incluidos en la V2.0 ¿es correcto?

En el complemento Timbrado Fiscal ¿cuales serían los nodos que debemos dejar vacios para que el SAT los llene? ¿Todos excepto la versión? o de esto aún no ha dicho nada el SAT.

Saludos.
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por Dado »

link_zda escribió:Para los CFDi tampoco vamos a necesitar el noAprobación y anoAprobacion incluidos en la V2.0 ¿es correcto?

En el complemento Timbrado Fiscal ¿cuales serían los nodos que debemos dejar vacios para que el SAT los llene? ¿Todos excepto la versión? o de esto aún no ha dicho nada el SAT.

Saludos.
Es correcto, me falto poner en el primer post que la V3.0 ya NO LLEVA noAprobacion ni anoAprobacion.

Esto es debido a que ahora el folio (llamado UUID) se lo pone el SAT al momento de timbrar.

No debes dejar ningun nodo vacio, lo que pasa es que el timbrado va a ser atravez de un "Complemento" que lleva 6 datos, ahi si supongo que dejas vacio el selloSAT :

Complemento Timbre Fiscal Digital :

Version - fijo a 1.0
UUID - Es como el "folio" de 36 caracteres
FechaTimbrado - este dato yo creo que si lo llena el SAT
SelloCFD - El sello del XML que calculaste antes de enviar tu comprobante a timbrar
noCertificadoSAT - el numero de serie del certificado que esta usando el SAT
selloSAT - idem...

Todavia no he llegado al envio-recepccion del timbre, se ve que es un poco complejo ya que hay que sellar digitalmente el XML luego "envolverlo" en el protocolo SOAP y despues esperar una respuesta.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
link_zda
Mensajes: 6
Registrado: Jue Jul 29, 2010 6:17 pm

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por link_zda »

Ok muchas gracias por el apoyo y jeje si se escucha algo complicado eso del envio-recepción del Timbrado :?
Saludos :p
ssjantonio
Mensajes: 14
Registrado: Lun Oct 18, 2010 12:00 am

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por ssjantonio »

Estuve haciendo pruebas para el CFDI, pero veo que el ejemplo que publica el SAT no tiene en el xml la moneda y el tipo de cambio, no me esta validando la cadena original con el CSD del emisor, esta es mi cadena original:

Cadena original corregida (sigue sin validar)

Código: Seleccionar todo

||3.0|2010-03-06T20:38:12|ingreso|PAGO EN UNA SOLA EXHIBICION|488.50|||488.50|PPL961114GZ1|PHARMA PLUS SA DE CV|AV. RIO MIXCOAC|No. 140|ACACIAS|BENITO JUAREZ|MEXICO, D.F.|Mexico|03240|AV. UNIVERSIDAD|1858|OXTOPULCO|DISTRITO FEDERAL|Mexico|03910|PEPJ8001019Q8|JUAN PEREZ PEREZ|AV UNIVERSIDAD|16 EDF 3|DPTO 101|COPILCO UNIVERSIDAD|COYOACAN|DISTRITO FEDERAL|Mexico|04360|1.0|CAPSULAS|VIBRAMICINA 100MG 10|244.00|244.00|1.0|BOTELLA|CLORUTO 500M|137.93|137.93|1.0|TABLETAS|SEDEPRON 250MG 10|84.50|84.50|IVA|0.00|0.00|IVA|16.00|22.07||
Ya estoy usando SHA-1, alguien ha podido validar este CFDI de ejemplo, estoy omitiendo algo?

Saludos.
Última edición por ssjantonio el Lun Oct 18, 2010 10:16 pm, editado 1 vez en total.
mauricio
Mensajes: 372
Registrado: Mié Ago 11, 2010 1:55 am
Ubicación: México, D.F.
Contactar:

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por mauricio »

Hola...

Moneda y tipo de cambio son opcionales. ¿como estas haciendo la validación?

Saludos
Todo lo que no es dado es perdido
ssjantonio
Mensajes: 14
Registrado: Lun Oct 18, 2010 12:00 am

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por ssjantonio »

Este es mi codigo fuente para validar V2.0 y V3.0, la única diferencia es que cada uno de los comprobantes implementa la interfaz con sus métodos para generar la cadena original y para especificar el algoritmo de digestión:

Código: Seleccionar todo

public static bool ValidarComprobante(Generic.CFD.Core.IComprobante cfd, byte[] cerRawData)
{
            X509Certificate cer;
            cer = new X509Certificate(cerRawData);

            string cerNum = Security.Crypto.GetCerNumber(cer);
            if (cerNum != cfd.noCertificado)
                throw new CFD.ExceptionUnexpectedCSD(string.Format("El certificado usado '{0}' no concuerda con el especificado '{1}'", cfd.noCertificado, cerNum));

            //Generar la cadena en caso de que no haya sido generada antes
            if (string.IsNullOrEmpty(cfd.cadenaOriginal))
                cfd.cadenaOriginal = cfd.GenerarCadenaOriginal();

            RSACryptoServiceProvider rsa = Security.Crypto.GetPublicKeyFromX509Certificate(cer);
            if (rsa == null)
                throw new CFD.ExceptionInvalidCSD("Certificado no válido");

            byte[] bCadena = Encoding.UTF8.GetBytes(cfd.cadenaOriginal);
            byte[] bSello = System.Convert.FromBase64String(cfd.sello);
            try
            {
                //SHA1 para version 3.0
                string hash = GetHashFunction(bSello);
                //Solo para asegurarme que la función este funcionando correctamente
                debug.Assert(cfd.version == "3.0" && hash == "SHA1");
                //Verificar
                return rsa.VerifyData(bCadena, System.Security.Cryptography.CryptoConfig.MapNameToOID(hash), bSello);
            }
            catch (Exception ex)
            {
                throw new CFD.ExceptionValidaCFD("Error al validar el sello", ex);
            }
}
Avatar de Usuario
Dado
Mensajes: 15980
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Diferencias entre CFD (V2.0) y CFDI (V3.0)

Mensaje por Dado »

La validacion de CFDI (V3.0) tiene un problema grave, hay diferencias en la definicion de la cadena original.

Chequen este hilo y denme su opinion.
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
Cerrado