Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 17
dado Va por buen camino
Cita:
Empezado por mesquivelh Ver Mensaje
Estoy usando el código publicado aquí con Delphi 2007, todo estaba bien hasta que intenté agragar una addenda a mi documento XML.

Lo hize de éste modo:

CFD.Addenda := 'CADENA|ADDENDA';

Y delphi me devuelve un error:

[DCC Error] Main.pas(767): E2129 Cannot assign to a read-only property

Entonces lo hize de éste modo:

CFD:Addenda.Text := 'CADENA|ADDENDA';

y delphi me lo genera bien, pero al validar en el SAT obtengo éste error:

El sello del comprobante es válido:
Se presentaron los siguientes errores al validar la estructura del comprobante \Bin\FacturaSello.xml
Error: cvc-complex-type.2.3: Element 'Addenda' cannot have character [children], because the type's content type is element-only.

¿Alguién me puede orientar sobre cómo agregar la addenda sin obtener errores?
Basicamente lo que te dice la validacion es que no esta bien formada la Addenda.

Yo tengo la "Addenda AMIS", es la que usan las empresas de Seguros como Mapfre, Zurich, Qualitas, etc etc

Para que empresa estas tratando de implementar la Addenda?, hay decenas, Chedraui, Soriana, Chrysler, AMECE, Liverpool, etc etc y mas etc
Responder Con Cita
  #2  
Antiguo 11-06-2010
mesquivelh mesquivelh is offline
Registrado
 
Registrado: may 2006
Posts: 7
Poder: 0
mesquivelh Va por buen camino
Cita:
Empezado por dado Ver Mensaje
Basicamente lo que te dice la validacion es que no esta bien formada la Addenda.

Yo tengo la "Addenda AMIS", es la que usan las empresas de Seguros como Mapfre, Zurich, Qualitas, etc etc

Para que empresa estas tratando de implementar la Addenda?, hay decenas, Chedraui, Soriana, Chrysler, AMECE, Liverpool, etc etc y mas etc
Es para PEMEX
Responder Con Cita
  #3  
Antiguo 11-06-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 17
dado Va por buen camino
Cita:
Empezado por mesquivelh Ver Mensaje
Es para PEMEX
Buscando la definicion de la addenda para PEMEX me encontre este documento

Y lo que alcanzo a ver es que esta Addenda, ES LA MAS FACIL que haya visto jamas (bueno, no he visto muchas, pero esta si es facil)

Hay un ejemplo de la addenda :

<Addenda>0047|2009|90309|T|137|GTT-0047|2009</Addenda>

Asi que lo que estas haciendo es correcto :

Código Delphi [-]
CFD.Addenda.Text := '0047|2009|90309|T|137|GTT-0047|2009'

Despues de todo los datos en el XML aparecen como deben ser y en la posicion que debe ser.

Entonces mi teoria es que el validador del SAT "no sabe" interpretar esta Addenda y por eso marca error.

Es mas, me atrevo a decir que el validador del SAT NO DEBERIA marcar error en NINGUNA ADDENDA, la misma ley dice que los datos de la addenda no son regulados por el SAT y son de formato libre.

Lo que creo que esta pasando es que necesitas agregar el "namespace" de la Addenda Pemex.

El namespace es la direccion donde se supone deberia estar la definicion de la addenda.

Por ejemplo el namespace de la factura digital es : xmlns="http://www.sat.gob.mx/cfd/2" junto con otras dos que por ahi aparecen.

Alguien del foro tendra una factura "real" de Pemex que haya pasado la validacion?

Por cierto !!! www.validacfd.com.mx ya valio!!!!
Responder Con Cita
  #4  
Antiguo 11-06-2010
mesquivelh mesquivelh is offline
Registrado
 
Registrado: may 2006
Posts: 7
Poder: 0
mesquivelh Va por buen camino
Muchas gracias dado, espero que tu suposición sea correcta.
Responder Con Cita
  #5  
Antiguo 14-06-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 17
dado Va por buen camino
Si, parece que el validador de Hacienda falla al validar las Addendas, estoy trabajando en una Addenda para Mapfre y un colega me proporciono una factura hecha por el prestigiado programa de Aspel.

Recalco lo de "prestigiado" ya que aunque no son una autoridad considero que emplearon muchos recursos para desarrollar un buen producto.

Al tratar de validar dicha factura me muestra los siguientes datos:

Código:
El sello del comprobante es válido:
Se presentaron los siguientes errores al validar la estructura del comprobante C:\Users\Desktop\Addenda_Amis (Aspel).xml
Error: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'ECFD'.

Realizando validación del sello con un certificado interno
Certificado usado : 00001000000001924752
El comprobante incluye un certificado codificado
Cadena original:
||blah|blah||
Digestión MD5 de cadena como HEX:
c876a849de4b1a6cfe4d9becd5f6970e
El sello del comprobante es válido
Asi que aunque no es una prueba "de fuego" si es una muestra de que el validador de hacienda se hace bolas con las addendas
Responder Con Cita
  #6  
Antiguo 18-06-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 17
nejamube Va por buen camino
Exclamation Las reglas cambian [big brother]

Pues como en big brother, las reglas cambian para factura electronica.

http://elempresario.mx/centro-soluci...ra-electronica
Responder Con Cita
  #7  
Antiguo 21-06-2010
jourdan jourdan is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 165
Poder: 24
jourdan Va por buen camino
Señores vengo saliendo de una junta y según me dicen para el 2011 va a haber cambios para los contribuyentes que quiran expedir sus propios comprobantes electronicas ya que estos van a tener que ser autentificados en tiempo real por un Proveedor Certificador Autorizado (van a ser empresas autorizadas por el SAT para autenfificar los CFE), con esto, los que desarrollamos algun sistema vamos a tener que contratar de todas maneras a un tercero autorizado por el SAT para que válide los comprobantes emitidos por nuestros sistemas.
Alguien sabe más de esto?
Gracias y saludos
__________________
Alejandro Jourdan
Responder Con Cita
  #8  
Antiguo 25-08-2011
ronco88 ronco88 is offline
Registrado
NULL
 
Registrado: ago 2011
Posts: 1
Poder: 0
ronco88 Va por buen camino
Addenda de Qualitas

Alguien me puede ayudar con la Addenda de Qualitas, debido a que cuando la genero me marca un Error: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'ECFD y quisiera ver que es lo que tengo mal

PD mesquivelh tu haces mencion de que tienes la Addenda AMIS, me podrias ayudar
Responder Con Cita
  #9  
Antiguo 22-05-2012
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 23
nuk3zito Va por buen camino
Cita:
Empezado por ronco88 Ver Mensaje
Alguien me puede ayudar con la Addenda de Qualitas, debido a que cuando la genero me marca un Error: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'ECFD y quisiera ver que es lo que tengo mal

PD mesquivelh tu haces mencion de que tienes la Addenda AMIS, me podrias ayudar
Si quieres, envíame tu CFD y te indico que es lo que está mal. Yo manejo esa addenda. Si quieres por MP
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #10  
Antiguo 24-07-2012
aigartua aigartua is offline
Registrado
NULL
 
Registrado: jul 2012
Posts: 1
Poder: 0
aigartua Va por buen camino
aportando algo mas

Bueno me he leido todo el hilo, yo programo en Lazarus, y hace unos años realicé esta solución, es algo muy parecido a lo que han dicho por aqui, solo les paso la función que utilicé para realizar la digestion completa tanto en md5 o sha1 y pasarla a base64, parametro msg la cadena orginal, tipo es para indicar el tipo de digestion MD5 o SHA1, la llave esta en formato DER:
Código Delphi [-]
// Función para obtener el sello del documento según los requerimientos
// y especificaciones del SAT
// Equivale a:
// openssl dgst -md5 -sign llave.pem cadenaoriginal.txt | openssl base64 -A > sello.txt
function TFinterfaz.sello(msg,tipo: widestring): string;
var
  Len: cardinal;
  mdctx: EVP_MD_CTX;
  inbuf, outbuf: array [0..4095] of char;
  key: puEVP_PKEY;
  bp: pBIO;
  pk: PuRSA;
  rkey: PuRSA;
  i: integer;
  s: string;

  // Función para encriptar a base64
  Function EncodeBase64(S : String) : String;
  Var
    S1,S2 : TStringStream;

  begin
    S1:=TStringStream.Create(S);
    Try
      S1.Position:=0;
      S2:=TStringStream.Create('');
      Try
        With TBase64EncodingStream.Create(S2) do
          Try
            CopyFrom(S1,S1.Size);
          Finally
            Free;
          end;
        Result:=S2.DataString;
      finally
        S2.Free;
      end;
   finally
     S1.Free;
   end;
  end;

  function TipoError: string;
  var
    ErrMsg: array [0..160] of char;
  begin
    ERR_error_string(ERR_get_error, @ErrMsg);
    result := StrPas(@ErrMsg);
  end;

begin
  // Inicializa la libreria de OpenSSL
  OpenSSL_add_all_algorithms;
  OpenSSL_add_all_ciphers;
  OpenSSL_add_all_digests;
  ERR_load_crypto_strings;
  // Leer la llave privada en formato DER con contraseña
  bp := BIO_new(BIO_s_file());
  BIO_read_filename(bp, Pchar(ruta+nomarchivo));
  pk := nil;
  rkey := PEM_read_bio_RSAPrivateKey(bp, pk, nil, PChar(passw));
  if rkey = nil then
    raise Exception.Create('Error en llave privada.' + TipoError);
  key := EVP_PKEY_new;
  EVP_PKEY_assign(key, EVP_PKEY_RSA, rkey);
  StrPCopy(inbuf, msg);
  if tipo = 'MD5' then
    // MD5
    EVP_SignInit(@mdctx, EVP_md5());
  if tipo = 'SHA1' then
    // SHA1
    EVP_SignInit(@mdctx, EVP_sha1());
  EVP_SignUpdate(@mdctx, @inbuf, StrLen(inbuf));
  EVP_SignFinal(@mdctx, @outbuf, Len, key);
  // Cierra la libreria y libera la memoria
  EVP_cleanup;
  // este procediemiento quita un byte porque regresaba el caracter final, quizá un #13 o #10 o \n
  // dado que el dll esta hecho en c pero por las prisas en su momento asi se quedó
  s:='';
  for i:=0 to len-1 do
    s:=s+outbuf[i];
  result:=EncodeBase64(S)
end;

espero que a alguien le sirva como a mi

Última edición por Casimiro Noteví fecha: 24-07-2012 a las 18:28:58. Razón: Poner etiquetas [delphi] [/delphi]
Responder Con Cita
  #11  
Antiguo 24-07-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico - Como crear sellos en FACTURA ELECTRONICA.. pcicom API de Windows 12 10-11-2012 18:46:55
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15


La franja horaria es GMT +2. Ahora son las 23:51:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi