Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2010
Roberto_Garcia Roberto_Garcia is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 3
Poder: 0
Roberto_Garcia Va por buen camino
Interface not supported

Saludos
He comenzado a trabajar con esto de los CFD para el sistema Aspel SAE 3.0 ya genere el archivo cfdv2.pas con XML Data Binding y ya redacte la carga de los datos pero al probarlo en esta instruccion
Código Delphi [-]
CFD := GetComprobante( XMLDoc );
me vota este error "Interface not supported" nunca habia usado XMLDocument a si que no tengo ni idea de donde revisar.

Código Delphi [-]

procedure TfpRUEBAS.CargarDatosCFD( TipoDocu, SaeFolio: string; DatosDb: T_ConfigDbSae;
  DatosEmisor: T_ConfigCFDEmisor );
var
  _FacD, _FacP, _Clie, _Inve: TTable;
  _DFacD: TDataSource;
  procedure _ConfigDb;
  begin
    _FacD := TTable.Create( nil );
    _FacP := TTable.Create( nil );
    _Clie := TTable.Create( nil );
    _Inve := TTable.Create( nil );
    _DFacD := TDataSource.Create( nil );
    DatosDb.TrasfiereDatos( tiFact0x, _FacD );
    DatosDb.TrasfiereDatos( tiFa0tyx, _FacP );
    DatosDb.TrasfiereDatos( tiClie0x, _Clie );
    DatosDb.TrasfiereDatos( tiInve0x, _Inve );
    _DFacD.DataSet := _FacD;
    _FacD.IndexName := 'FACT01';
    _FacP.IndexName := 'iTip_Doc';
    _Clie.IndexName := 'CCLIE';
    _Inve.IndexName := 'Clv_Art';
    _FacP.MasterSource := _DFacD;
    _FacP.MasterFields := 'TIP_DOC;CVE_DOC';
    _FacD.Open;
    _FacP.Open;
    _Clie.Open;
    _Inve.Open;
    if not _FacD.FindKey( [ TipoDocu, SaeFolio ] ) then begin
      MessageDlg( 'No se encontro el documento', mtWarning, [ mbOk ], 0 );
      XMLDoc.Active := False;
      Abort;
    end;
    if not _Clie.FindKey( [ _FacD.FieldByName( 'Cve_ClPv' ).Value ] ) then begin
      MessageDlg( 'No se encontro el Cliente', mtWarning, [ mbOk ], 0 );
      XMLDoc.Active := False;
      Abort;
    end;
  end;
begin
  XMLDoc.XML.Text := '<? xml version="1.0" encoding="UTF-8" ?> <Comprobante xmlns="---sat.gob.mx/cfd"> </Comprobante >';
  XMLDoc.Active := True;
  CFD := GetComprobante( XMLDoc ); // *** al ejecutar esta instruccion me vota el error
  CFD.SetAttribute( 'xmlns:xsi', '---w3.org/2001/XMLSchema-instance' );
  CFD.SetAttribute( 'xsi:schemaLocation', '---sat.gob.mx/cfd ---sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd' );
  _ConfigDb;
  with CFD do begin
    Version := '2.0';
    Serie := 'A';
    Folio := '1';
    Fecha := DateTimeToStr( Now );
    { TODO : Falta especifcar "Sello" }
    { TODO : Falta especifcar "NoAprobacion" }
    { TODO : Falta especifcar "AnoAprobacion" }
    FormaDePago := 'Pago en una sola exhibición';
    { TODO : Falta especifcar "NoCertificado" }
    { TODO : Falta especifcar "Certificado" }
    CondicionesDePago := IntToStr( _Clie.FieldValues[ 'Dias_Cred' ] ) + ' Dias';
    SubTotal := FloatToStrF( _FacD.FieldValues[ 'Can_tot' ], ffNumber, 14, 2 );
    Descuento := FloatToStrF( _FacD.FieldValues[ 'Des_tot' ], ffNumber, 14, 2 );
//  MotivoDescuento // Opcional
    Total := FloatToStrF(
      ( _FacD.FieldValues[ 'Can_tot' ] - _FacD.FieldValues[ 'Des_Tot' ] ) +
      _FacD.FieldValues[ 'Imp_Tot4' ], ffNumber, 14, 2 );
//  MetodoDePago // Opcional
    if TipoDocu = 'F' then
      TipoDeComprobante := 'ingreso' // ingreso egreso traslado
    else if TipoDocu = 'D' then
      TipoDeComprobante := 'egreso';
    with Emisor do begin
      Rfc := DatosEmisor.Rfc; // SIN ESPACIOS O GUIONES
      Nombre := DatosEmisor.Nombre;
      with DomicilioFiscal do begin
        Calle := DatosEmisor.DomFisCalle;
        NoExterior := DatosEmisor.DomFisNoExterior;
        NoInterior := DatosEmisor.DomFisNoInterior;
        Colonia := DatosEmisor.DomFisColonia;
        Localidad := DatosEmisor.DomFisLocalidad;
        Referencia := DatosEmisor.DomFisReferencia;
        Municipio := DatosEmisor.DomFisMunicipio;
        Estado := DatosEmisor.DomFisEstado;
        Pais := DatosEmisor.DomFisPais;
        CodigoPostal := DatosEmisor.DomFisCodigoPostal;
      end;
      with ExpedidoEn do begin
        Calle := DatosEmisor.ExpEnCalle;
        NoExterior := DatosEmisor.ExpEnNoExterior;
        NoInterior := DatosEmisor.ExpEnNoInterior;
        Colonia := DatosEmisor.ExpEnColonia;
        Localidad := DatosEmisor.ExpEnLocalidad;
        Referencia := DatosEmisor.ExpEnReferencia;
        Municipio := DatosEmisor.ExpEnMunicipio;
        Estado := DatosEmisor.ExpEnEstado;
        Pais := DatosEmisor.ExpEnPais;
        CodigoPostal := DatosEmisor.ExpEnCodigoPostal;
      end;
    end; // with emisor
    with Receptor do begin
      Rfc := _Clie.FieldValues[ 'Rfc' ];
      Nombre := _Clie.FieldValues[ 'Nombre' ];
      with Domicilio do begin
        Calle := _Clie.FieldValues[ 'Dir' ];
        //NoExterior := ; //opcional
        //NoInterior := ; //opcional
        Colonia := _Clie.FieldValues[ 'Colonia' ];
        //Localidad := //opcional
        //Referencia :=  //opcional
        Municipio := _Clie.FieldValues[ 'Pob' ];
        //Estado := //opcional
        Pais := _Clie.FieldValues[ 'Campostru2' ];
        CodigoPostal := _Clie.FieldValues[ 'Codigo' ];
      end;
    end; //With Receptor
    while not _FacP.Eof do begin
      with cfd.conceptos.add do begin
        Cantidad := FloatToStr( _FacP.FieldValues[ 'Cant' ] );
        Unidad := _FacP.FieldValues[ 'UNI_VENTA' ];
        //NoIdentificacion // opcional
        if _Inve.FindKey( [ _FacP.FieldValues[ 'Cve_Art' ] ] ) then
          Descripcion := _Inve.FieldValues[ 'Descr' ]
        else
          Descripcion := _FacP.FieldValues[ 'Cve_Art' ];
        ValorUnitario := FloatToStrF( _FacP.FieldValues[ 'Prec' ], ffNumber, 14, 2 );
        Importe := FloatToStrF( _FacP.FieldValues[ 'Prec' ] * _FacP.FieldValues[ 'Cant' ],
          ffNumber, 14, 2 );
        //InformacionAduanera  // no aplica
        //CuentaPredial // no aplica
        //ComplementoConcepto // no aplica
        //Parte // no aplica
      end;
      _FacP.Next;
    end;
    with Impuestos do begin
      //TotalImpuestosRetenidos  // no aplica
      TotalImpuestosTrasladados := _FacD.FieldValues[ 'Tot_Imp4' ];
      //Retenciones     // no aplica
      with Traslados.Add do begin
        Impuesto := 'IVA';
        Tasa := '16';
        Importe := FloatToStrF( _FacD.FieldValues[ 'Tot_Imp4' ],
          ffNumber, 14, 2 );
      end; //With Traslados
    end; //With Impuestos
    //Complemento
    //Addenda
  end; // with CFD
end;
Responder Con Cita
  #2  
Antiguo 13-11-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por Roberto_Garcia Ver Mensaje
XMLDoc.XML.Text := '<? xml version="1.0" encoding="UTF-8" ?> <Comprobante xmlns="---sat.gob.mx/cfd"> </Comprobante >';

En algun punto estas formando mal tu XML.

Intenta XMLDoc.XML.Text = ''; por el momento, para que no truene, luego empieza a agregarle encabezados, mi sospecha es que tienes un espacio en blanco en el ultimo tag </Comprobante___>

Nos comentas como quedo al final
Responder Con Cita
  #3  
Antiguo 16-11-2010
E=M*C^2 E=M*C^2 is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
E=M*C^2 Va por buen camino
Liberada la librería para generar CFD y CFDI

Solamente quiero comentar que ya esta libera la primera versión de la librería que permite el CFD y CFDI, como se le conoce comúnmente: la factura electrónica.


Pueden leer mas de esto aquí:

electronicdocument.wordpress.com
Responder Con Cita
  #4  
Antiguo 16-11-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por E=M*C^2 Ver Mensaje
Solamente quiero comentar que ya esta libera la primera versión de la librería que permite el CFD y CFDI, como se le conoce comúnmente: la factura electrónica.


Pueden leer mas de esto aquí:

electronicdocument.wordpress.com

Excelente aportacion.

Oye que sabes acerca del envio al PAC para el timbrado?

Ese asunto es urgente..........
Responder Con Cita
  #5  
Antiguo 17-11-2010
E=M*C^2 E=M*C^2 is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
E=M*C^2 Va por buen camino
Cita:
Empezado por dado Ver Mensaje
Excelente aportacion.

Oye que sabes acerca del envio al PAC para el timbrado?

Ese asunto es urgente..........
Hola...

Como tal si tengo información acerca del tema, pero por no se me es permitido comentar al respecto.

Lo que site puedo decir es que la biblioteca de clases que he creado permitirá la generación del CFDI. Ya he publicado mas informacion al respecto
Responder Con Cita
  #6  
Antiguo 23-11-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por E=M*C^2 Ver Mensaje
Hola...

Como tal si tengo información acerca del tema, pero por no se me es permitido comentar al respecto.

Lo que site puedo decir es que la biblioteca de clases que he creado permitirá la generación del CFDI. Ya he publicado mas informacion al respecto
Crees que pueda haber informacion para diciembre?

En este momento no hay PAC's y no hay informacion del timbrado, dudo que alguien pueda crear un solo CFDI entrando el 2011.
Responder Con Cita
  #7  
Antiguo 23-11-2010
E=M*C^2 E=M*C^2 is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
E=M*C^2 Va por buen camino
Cfdi

Cita:
Empezado por dado Ver Mensaje
Crees que pueda haber informacion para diciembre?

En este momento no hay PAC's y no hay informacion del timbrado, dudo que alguien pueda crear un solo CFDI entrando el 2011.

No sé a qué te refieras con información, pero si de lo que se trata es a generar un CFDI, déjame comentarte que las reglas ya están totalmente definidas.

Es cierto lo que comentas, en este momento no existe una empresa en el país, que haya sido certificada como PAC, pero si conozco varias que están en dicho proceso.

La información del timbrado ya está definida, tal vez a lo que refieres es como te vas a comunicar con el PAC, bueno, déjame comentarte que en esa parte ya varios de las empresas que están trabajando en la certificación, tiene definido el modelo de trabajo; pero como te comento es algo que no se me tiene permitido divulgar.

En cuanto a la generación del CFDI entrando el 2011, también tengo mis dudas, pero bueno, eso es algo que el tiempo lo dira.

Y repito, lo único que si puedo asegurar es que toda esa funcionalidad y muchas estará presente en la biblioteca de clases que he generado, que aprovechando déjenme decirles que ya estor pronto por liberar la siguiente versión en donde podrán generar el CFD con todo tipo de complementos.

Si alguien le interesa revisarlas, les dejo la liga.

http://electronicdocument.wordpress.com/
Responder Con Cita
  #8  
Antiguo 16-11-2010
nejamube nejamube is offline
Miembro
 
Registrado: nov 2009
Ubicación: Buenos Aires
Posts: 65
Poder: 15
nejamube Va por buen camino
Post NO FUNCIONA en D2010

Cita:
Empezado por E=M*C^2 Ver Mensaje
Solamente quiero comentar que ya esta libera la primera versión de la librería que permite el CFD y CFDI, como se le conoce comúnmente: la factura electrónica.


Pueden leer mas de esto aquí:

electronicdocument.wordpress.com
Buen trabajo, pero no funciona en la version Delphi 2010 y supongo que tampoco en D2011.

Responder Con Cita
  #9  
Antiguo 16-11-2010
Roberto_Garcia Roberto_Garcia is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 3
Poder: 0
Roberto_Garcia Va por buen camino
Cita:
Empezado por dado Ver Mensaje
En algun punto estas formando mal tu XML.

Intenta XMLDoc.XML.Text = ''; por el momento, para que no truene, luego empieza a agregarle encabezados, mi sospecha es que tienes un espacio en blanco en el ultimo tag </Comprobante___>

Nos comentas como quedo al final
Gracias dado por la sugerencia ya quedo solucionado

Código Delphi [-]
  XMLDoc.Active := True;
  XMLDoc.Version := '1.0';
  XMLDoc.Encoding := 'UTF-8';
  CFD := GetComprobante( XMLDoc );
  CFD.DeclareNamespace( 'xsi', '---.w3.org/2001/XMLSchema-instance' );
  CFD.Schema := '---.sat.gob.mx/cfd/2 ---.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd';
Responder Con Cita
  #10  
Antiguo 16-11-2010
Roberto_Garcia Roberto_Garcia is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 3
Poder: 0
Roberto_Garcia Va por buen camino
Un solo CFD tres sellos distintos todos los valida

Saludos tengo una duda haciendo pruebas con diversos contenidos tuve un problema con la funcion SelloDigital de la unidad Sello.pas proprocionada por felipe el problema era el tamallo del buffer de entrada ya que generaba una cadena muy grande asi que lo modifique

Código Delphi [-]
function SelloDigital( llaveprivada, cadenaoriginal: string ): string;
var Len: cardinal;
  mdctx: EVP_MD_CTX;
  //  inbuf, outbuf: array[ 0..1023 ] of char; // original
  inbuf: array[ 0..8192 ] of char; // modificacion
  outbuf: array[ 0..1023 ] of char;
  key: pEVP_PKEY;
begin

y asi se solucionaba el problema. Accidentalmente genere un documento que ya habia sigo generado con el buffer de [0..1023] y me di cuenta de que el sello cambia:

buffer [0..1023] sello = J8De10sWc5XjCcM3YkPd405B6mPsHu1J9ujPK5NwjV8bpkg5sslVw2wf10Irn5T1V1WunKPCJ78+7Ctn7H0yY5H3/nhrjnJ49pzAT+bmdmb/5D9U7EXNu8dRojJ4whc+x0IcHBz6eBXkT422iGL2F4OC2wTJjclmCd08PHiiskQ=

buffer [0..8192] sello =
D17vTGYcaG5RksH9hiZZ/xEi7yBvhqF1Jn35T3NitMwPu7au1kqTmCEbG4zDqH595Q14LSWdWBQfz/7gajIFwwMkvkXOt1VGng4iC/WKUw1aU/1VwqfdX4MWSC/YgGqUYH6DFqwSIc3pp3TdxRY5Y8pLULaxxLJXC18XKQFThFI=

Probe ambos en el validador de hacienda ---.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html y resulta que los dos CFD me los validaba.

Mi pregunta es ¿se puede modificar el buffer? y si es asi ¿afecta que genere un sello distinto?
Responder Con Cita
  #11  
Antiguo 17-11-2010
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
El "sello" o timbrado va a depender de las reglas que publique en el SAT antes del 31 de diciembre. Recordemos que una cosa es la ley de ingresos y otra los reglamentos. Como está la librería publicada funciona a la perfección para el esquema actual, pero tendremos que esperar para actualizarla al nuevo. Desgraciadamente esto ya se sale un poco de lo técnico pero así es. Hay que estar pendientes para actuar rápidamente.

Por cierto muchas empresas están sugiriendo que "te apures para adoptar las 'grandes ventajas' que ofrece el SAT si adoptas este esquema en este 2010", no digo nombres pero nada mas falso precisamente las ventajas son mayores a quien se espere al siguiente esquema. Estaré al pendiente y les seguiré informando...
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #12  
Antiguo 23-11-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Cita:
Empezado por Roberto_Garcia Ver Mensaje
Saludos tengo una duda haciendo pruebas con diversos contenidos tuve un problema con la funcion SelloDigital de la unidad Sello.pas proprocionada por felipe el problema era el tamallo del buffer de entrada ya que generaba una cadena muy grande asi que lo modifique


Código Delphi [-]
function SelloDigital( llaveprivada, cadenaoriginal: string ): string;
var Len: cardinal;
mdctx: EVP_MD_CTX;
// inbuf, outbuf: array[ 0..1023 ] of char; // original
inbuf: array[ 0..8192 ] of char; // modificacion
outbuf: array[ 0..1023 ] of char;
key: pEVP_PKEY;
begin





y asi se solucionaba el problema. Accidentalmente genere un documento que ya habia sigo generado con el buffer de [0..1023] y me di cuenta de que el sello cambia:

buffer [0..1023] sello = J8De10sWc5XjCcM3YkPd405B6mPsHu1J9ujPK5NwjV8bpkg5sslVw2wf10Irn5T1V1WunKPCJ78+7Ctn7H0yY5H3/nhrjnJ49pzAT+bmdmb/5D9U7EXNu8dRojJ4whc+x0IcHBz6eBXkT422iGL2F4OC2wTJjclmCd08PHiiskQ=

buffer [0..8192] sello =
D17vTGYcaG5RksH9hiZZ/xEi7yBvhqF1Jn35T3NitMwPu7au1kqTmCEbG4zDqH595Q14LSWdWBQfz/7gajIFwwMkvkXOt1VGng4iC/WKUw1aU/1VwqfdX4MWSC/YgGqUYH6DFqwSIc3pp3TdxRY5Y8pLULaxxLJXC18XKQFThFI=

Probe ambos en el validador de hacienda ---.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html y resulta que los dos CFD me los validaba.

Mi pregunta es ¿se puede modificar el buffer? y si es asi ¿afecta que genere un sello distinto?
Asegurate que estas firmando el mismisimo XML SIN CAMBIO EN LA FECHA y hora de elaboracion, ya que si cambia la fecha y hora de elaboracion entonces cambia el sello.
Responder Con Cita
Respuesta



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 13:52:46.


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