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
  #21  
Antiguo 25-01-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Como te he comentado, he reescrito todos los tipos de nuevo, sin nada de los namespaces.
A ver si manana te poongo el codigo completo del tipo facturae, para que veas lo simple (y mal para otros casos) que lo he dejado.
Responder Con Cita
  #22  
Antiguo 25-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
Sería de gran utilidad, muchas gracias.. aquí está una parte del mío (la de los nodos principales, todo no me deja por excesivamente largo) tal como salen del Data Binding por si queda más claro lo que quería decir

Código Delphi [-]
const
  TargetNamespace = 'http:....Facturae';

implementation

{ Global Functions }

function GetFacturae(Doc: IXMLDocument): IXMLFacturae;
begin
  Result := Doc.GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

function LoadFacturae(const FileName: string): IXMLFacturae;
begin
  Result:= LoadXMLDocument(FileName).GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

function NewFacturae: IXMLFacturae;
begin
  Result := NewXMLDocument.GetDocBinding('Facturae', TXMLFacturae, TargetNamespace) as IXMLFacturae;
end;

{ TXMLFacturae }

procedure TXMLFacturae.AfterConstruction;
begin
  RegisterChildNode('FileHeader', TXMLFileHeaderType);
  RegisterChildNode('Parties', TXMLPartiesType);
  RegisterChildNode('Invoices', TXMLInvoicesType);
  RegisterChildNode('Extensions', TXMLExtensionsType);
  RegisterChildNode('Signature', TXMLSignatureType_ds);
  inherited;
end;
Responder Con Cita
  #23  
Antiguo 26-01-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Como verás lo he simplificado al máximo. y escribo el xml casi de forma literal

Código:
/// Tipo TFacturae
type
  TFacturae = class
  private
    fFileHeader:  TFileHeader;
    fParties:     TParties;
    fInvoices:    TInvoices;
//    fExtensions:  TExtensions;
  public
    constructor Create;
    ///
    function ToXml: IXMLDOMElement;
    ///
    property FileHeader: TFileHeader  read fFileHeader  write fFileHeader;
    property Parties:    TParties     read fParties     write fParties;
    property Invoices:   TInvoices    read fInvoices    write fInvoices;
//    property fExtensions: TExtensions  read fExtensions  write fExtensions;
  end;

{ TFacturae }

  XMLNode_eFact_32_Facturae                                     = 'fe:Facturae';
    XMLNode_eFact_32_FileHeader                                   = 'FileHeader';
    XMLNode_eFact_32_SchemaVersion                                  = 'SchemaVersion';
    XMLNode_eFact_32_Modality                                     = 'Modality';
    XMLNode_eFact_32_InvoiceIssuerType                            = 'InvoiceIssuerType';

constructor TFacturae.Create;
begin
  fFileHeader := TFileHeader.Create;
  fParties    := TParties.Create;
  fInvoices   := TInvoices.Create;
end;

function TFacturae.ToXml: IXMLDOMElement;
var
  XMLDoc: IXMLDOMDocument;
  XMLElement: IXMLDOMElement;
begin
  XMLDoc := CoFreeThreadedDOMDocument30.Create;
  try
    XMLElement := XMLDoc.createElement( XMLNode_eFact_32_Facturae );
    if XMLElement <> nil then
    begin
      XMLElement.AppendChild(Self.fFileHeader.ToXml);
      XMLElement.AppendChild(Self.fParties.ToXml);
      XMLElement.AppendChild(Self.fInvoices.ToXml);
    end;
    result := XMLElement;
  finally
  end;
end;


type
  TFileHeader = class
  private
    fSchemaVersion:     string; // (E)
    fModality:          string; // (E)
    fInvoiceIssuerType: string; // (E)
//    fThirdParty:              TThirdParty;
    fBatch:             TBatch;
//    fFactoringAssignmentData: TFactoringAssignmentData;
  public
    constructor Create;

    function ToXml: IXMLDOMNode;

    property SchemaVersion:     string read fSchemaVersion      write fSchemaVersion;
    property Modality:               string read fModality           write fModality;
    property InvoiceIssuerType: string read fInvoiceIssuerType  write fInvoiceIssuerType;
    property Batch:                  TBatch read fBatch              write fBatch;
  end;

{ FFileHeaderType }

  C_SchemaVersion_3_2 = '3.2';

  C_Modality_Individual = 'I';

  C_PersonTypeCode_Fisica   = 'F';
  C_PersonTypeCode_Juridica = 'J';

  C_ResidenceTypeCodeType_R = 'R';  /// - Residente en España
  C_ResidenceTypeCodeType_U = 'U';  /// - Residente en la UE

  C_InvoiceIssuerType_Emisor        = 'EM';

constructor TFileHeader.Create;
begin
  fSchemaVersion      := C_SchemaVersion_3_2_1;
  fModality           := C_Modality_Individual;
  fInvoiceIssuerType  := C_InvoiceIssuerType_Emisor;
  fBatch              := TBatch.Create;
end;

function TFileHeader.ToXml: IXMLDOMNode;
var
  XMLElement: IXMLDOMElement;
begin
  XMLElement := NewElementNode( nil, XMLNode_eFact_32_FileHeader );
  if XMLElement <> nil then
  begin
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_SchemaVersion, Self.fSchemaVersion, 0));
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_Modality, Self.fModality, 0));
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_InvoiceIssuerType, Self.fInvoiceIssuerType, 0));
    XMLElement.appendChild(Self.fBatch.ToXml);
  end;
  result := XMLElement;
end;

...
p.d.: Està hecho para Delphi5...
Responder Con Cita
  #24  
Antiguo 26-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
Perdón pero he andado liado y no he podido responder antes... Pues es un gran trabajo, interesante la aproximación que has hecho al problema y la manera que has encontrado de resolverlo.. Me lo miraré más a fondo a ver si consigo rehacer mi código también . una lástima que el binding no consiga hacerlo directamente ¡Muchísimas gracias!
Responder Con Cita
  #25  
Antiguo 27-01-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Yo tenía el mismo problema y lo resolví aquí, con la ayuda de Al González

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #26  
Antiguo 27-01-2015
lithium76 lithium76 is offline
Miembro
 
Registrado: ene 2015
Posts: 33
Poder: 0
lithium76 Va por buen camino
¡Muchas gracias, olbeup! ¡Muy amable! Gran aporte este post que has puesto.. Una pregunta, si me permites, tu no trabajas a partir de la interface del Data Binding, no? ¿ Son todo IXMLNode's, que vas colocando según correspndo no?
Responder Con Cita
  #27  
Antiguo 28-01-2015
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por lithium76 Ver Mensaje
¡Muchas gracias, olbeup! ¡Muy amable! Gran aporte este post que has puesto.. Una pregunta, si me permites, tu no trabajas a partir de la interface del Data Binding, no? ¿ Son todo IXMLNode's, que vas colocando según correspndo no?
Si, desde el IXMLDocument que es el principal y los IXMLNotes el resto.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #28  
Antiguo 04-02-2015
Kribbeling Kribbeling is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 5
Poder: 0
Kribbeling Va por buen camino
Cita:
Empezado por iMia Ver Mensaje
Como verás lo he simplificado al máximo. y escribo el xml casi de forma literal

Código:
/// Tipo TFacturae
type
  TFacturae = class
  private
    fFileHeader:  TFileHeader;
    fParties:     TParties;
    fInvoices:    TInvoices;
//    fExtensions:  TExtensions;
  public
    constructor Create;
    ///
    function ToXml: IXMLDOMElement;
    ///
    property FileHeader: TFileHeader  read fFileHeader  write fFileHeader;
    property Parties:    TParties     read fParties     write fParties;
    property Invoices:   TInvoices    read fInvoices    write fInvoices;
//    property fExtensions: TExtensions  read fExtensions  write fExtensions;
  end;

{ TFacturae }

  XMLNode_eFact_32_Facturae                                     = 'fe:Facturae';
    XMLNode_eFact_32_FileHeader                                   = 'FileHeader';
    XMLNode_eFact_32_SchemaVersion                                  = 'SchemaVersion';
    XMLNode_eFact_32_Modality                                     = 'Modality';
    XMLNode_eFact_32_InvoiceIssuerType                            = 'InvoiceIssuerType';

constructor TFacturae.Create;
begin
  fFileHeader := TFileHeader.Create;
  fParties    := TParties.Create;
  fInvoices   := TInvoices.Create;
end;

function TFacturae.ToXml: IXMLDOMElement;
var
  XMLDoc: IXMLDOMDocument;
  XMLElement: IXMLDOMElement;
begin
  XMLDoc := CoFreeThreadedDOMDocument30.Create;
  try
    XMLElement := XMLDoc.createElement( XMLNode_eFact_32_Facturae );
    if XMLElement <> nil then
    begin
      XMLElement.AppendChild(Self.fFileHeader.ToXml);
      XMLElement.AppendChild(Self.fParties.ToXml);
      XMLElement.AppendChild(Self.fInvoices.ToXml);
    end;
    result := XMLElement;
  finally
  end;
end;


type
  TFileHeader = class
  private
    fSchemaVersion:     string; // (E)
    fModality:          string; // (E)
    fInvoiceIssuerType: string; // (E)
//    fThirdParty:              TThirdParty;
    fBatch:             TBatch;
//    fFactoringAssignmentData: TFactoringAssignmentData;
  public
    constructor Create;

    function ToXml: IXMLDOMNode;

    property SchemaVersion:     string read fSchemaVersion      write fSchemaVersion;
    property Modality:               string read fModality           write fModality;
    property InvoiceIssuerType: string read fInvoiceIssuerType  write fInvoiceIssuerType;
    property Batch:                  TBatch read fBatch              write fBatch;
  end;

{ FFileHeaderType }

  C_SchemaVersion_3_2 = '3.2';

  C_Modality_Individual = 'I';

  C_PersonTypeCode_Fisica   = 'F';
  C_PersonTypeCode_Juridica = 'J';

  C_ResidenceTypeCodeType_R = 'R';  /// - Residente en España
  C_ResidenceTypeCodeType_U = 'U';  /// - Residente en la UE

  C_InvoiceIssuerType_Emisor        = 'EM';

constructor TFileHeader.Create;
begin
  fSchemaVersion      := C_SchemaVersion_3_2_1;
  fModality           := C_Modality_Individual;
  fInvoiceIssuerType  := C_InvoiceIssuerType_Emisor;
  fBatch              := TBatch.Create;
end;

function TFileHeader.ToXml: IXMLDOMNode;
var
  XMLElement: IXMLDOMElement;
begin
  XMLElement := NewElementNode( nil, XMLNode_eFact_32_FileHeader );
  if XMLElement <> nil then
  begin
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_SchemaVersion, Self.fSchemaVersion, 0));
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_Modality, Self.fModality, 0));
    XMLElement.appendChild(NewTextNode(XMLElement, XMLNode_eFact_32_InvoiceIssuerType, Self.fInvoiceIssuerType, 0));
    XMLElement.appendChild(Self.fBatch.ToXml);
  end;
  result := XMLElement;
end;

...
p.d.: Està hecho para Delphi5...
Muy Buenas ,

Esta es mi primera (bueno segunda) vez , no se si lo hago correctamente, en cualquier caso gracias.

Veo que has implementado codigo para la facturae, podrias pasarme algun ejemplo o las clases, muchas gracias .
Responder Con Cita
  #29  
Antiguo 04-02-2015
Kribbeling Kribbeling is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 5
Poder: 0
Kribbeling Va por buen camino
Cita:
Empezado por iMia Ver Mensaje
Manuel, muchas gracias por tu rapidisima respuesta...
Estoy intentando mirar de firmar unicamente el XML con Xades (nada de PDFs), y voy a buscar primero si lo puedo hacer sin componentes. Mirare a traves de alguna dll o algo asi. Ya que puedo generar el xml y en las plataformas de envio del xml a las administraciones publicas, dentro hay la opción de firmar gratuitamente con sus applets... por eso mirar de no pagar y repercutir el gasto a mis "ClientesDeGorra"
Si no al final acabare con SBB...
ademas la app esta hecha con Delphi 5... casi nada...


Buenas ,
No lo he mirado bien pero en ftp://ftp.zlatkovic.com/libxml/Delphi/ creo que tienes un ejemplo para firmar xml con las libXML y openssl.

Yo estoy empezando con todo este tema y si me pudieras pasar algun ejemplo o algo te lo agradeceria , x cierto creo que ya te lo he pedido en otro post.

Muchas gracias y un saludo .
Responder Con Cita
  #30  
Antiguo 11-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Para el tema de la firma... desde delphi sólo con componentes de terceros $$ o €€ ...

Yo lo voy a solucionar de otra forma...

La AEAT/Ministerio/estado/etc... da las clases para firmar... pero en JAVA....

Pues a hacerlo en java y hacer un shellexecute...

Empiezo las pruebas de firma... iré comentando....
Responder Con Cita
  #31  
Antiguo 11-02-2015
MasDelphi MasDelphi is offline
Miembro
 
Registrado: abr 2007
Posts: 10
Poder: 0
MasDelphi Va por buen camino
Buenas tardes.
También estoy en la misma situación que iMia y Manuel. Actualmente he logrado hacer la factura con el formato xml y validado por la página del ministerio.
El problema es que no logro validar la firma, he visto los componentes de SecureBlackBox, pero no son compatibles con Delphi 5. Actualmente estoy probando con OpenSSL, pero no he llegado a obtener buenos resultados.
Gracias por vuestra ayuda y consejos.
Responder Con Cita
  #32  
Antiguo 11-02-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por iMia Ver Mensaje
Para el tema de la firma... desde delphi sólo con componentes de terceros $$ o €€ ...

Yo lo voy a solucionar de otra forma...

La AEAT/Ministerio/estado/etc... da las clases para firmar... pero en JAVA....

Pues a hacerlo en java y hacer un shellexecute...

Empiezo las pruebas de firma... iré comentando....
Estupendo. Cualquier ayuda en ese sentido se agradece.
__________________
Be water my friend.
Responder Con Cita
  #33  
Antiguo 11-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Cita:
Empezado por Kribbeling Ver Mensaje
Buenas ,
No lo he mirado bien pero en ftp://ftp.zlatkovic.com/libxml/Delphi/ creo que tienes un ejemplo para firmar xml con las libXML y openssl.

Yo estoy empezando con todo este tema y si me pudieras pasar algun ejemplo o algo te lo agradeceria , x cierto creo que ya te lo he pedido en otro post.

Muchas gracias y un saludo .
Lo he mirado, esta bién , pero no me sirve...
No firma xml en formato Xades enveloped, que es el que se necesita para la efactura.
Como he comentado en el mensaje de encima, la única forma gratuita es con las clases de la AEAT, pero son clases java. hay que crear un programa en java (.jar) que use esas clases para firmar con 3 parametros, el xml, el certificado y el ficherode salida (".xml" firmado ... ".xsig") y llamarlo con un shell execute....
Responder Con Cita
  #34  
Antiguo 11-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Aquí estan las clases en java para firmar...

http://oficinavirtual.mityc.es/compo...des/index.html
Responder Con Cita
  #35  
Antiguo 12-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Cita:
Empezado por aposi
Cita:
Empezado por iMia
Cita:
Empezado por aposi
Hola iMia,
he visto que generas el xml para la Efactura.
Me podrias passar un ejemplo de com lo generas? es que nunca he trabajado con xml y con el XML Data Binding tengo algunos problemas.
Si fueras tanamable de passar como generas el arxivo y si tienes solucionado el tema de la firma estaria muy agradecido
Hola aposi,

No es complicado, es laborioso, por que yo me he creado las clases de cada tipo de dato, (manualmente, ya que con el Databinding no se puede, ya que el extractor de clases a partir del xsd no funciona bien si hay referencias externas) y en cada clase he creado el metodo ToXML que genera los nodos.
Todas las clases anidadas, de esa forma al crear el objeto "padre" se crean todas las clases "hijas" y solo hay que rellenarlas con datos y llar al método TOXML que devuelve los nodos del XML.

mira el código que puse...

a partit de aquí crear las clases TFileHeader, TParties, etc...
Me podrias passar el codigo que te has creado si no es mucha molestia?
Hombre... ya he puesto lo básico, para tener un punto de patida... que ya es pero que mucho...
Para ponerme en el camino yo solito, sin orientación, tardé un par de semanas... y un par de semanas en tener la serialización fina y a mi gusto... por que la herramineta que he comentado que sí serializa no era de mi gusto lo que dejaba...
He dado pistas y codigo para tener más de la mitad de la faena hecha... y utilizando el serializador, sería toda la faena hecha... pero para hacerla hay que leer mucho y comprender bien que hay que hacer...
Si te pongo todo el código y te doy hecho todo mi trabajo... ¿me pagas lo mismo que mi empresa por ese mes de trabajo?
Responder Con Cita
  #36  
Antiguo 12-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por iMia Ver Mensaje
Si te pongo todo el código y te doy hecho todo mi trabajo... ¿me pagas lo mismo que mi empresa por ese mes de trabajo?
No es necesario ese tipo de comentarios, si quieres compartir tu código lo compartes y si no quieres, entonces mejor no digas nada. Aquí compartimos código y todo ese código es fruto de nuestro trabajo, encontrarás programas completos que se han compartido, utilidades, trucos, código de toda clase y tipo, algunos han costado poco hacerlo y otros son trabajo de meses o años.
Pero por eso estamos aquí, para compartir nuestros conocimientos, no para decirle a los demás que "a mí me costó un mes de trabajo, ¿me lo pagarás?"
Espero que lo hayas compartido, y en caso contrario, este no es tu sitio.
Responder Con Cita
  #37  
Antiguo 12-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No es necesario ese tipo de comentarios, si quieres compartir tu código lo compartes y si no quieres, entonces mejor no digas nada. Aquí compartimos código y todo ese código es fruto de nuestro trabajo, encontrarás programas completos que se han compartido, utilidades, trucos, código de toda clase y tipo, algunos han costado poco hacerlo y otros son trabajo de meses o años.
Pero por eso estamos aquí, para compartir nuestros conocimientos, no para decirle a los demás que "a mí me costó un mes de trabajo, ¿me lo pagarás?"
Espero que lo hayas compartido, y en caso contrario, este no es tu sitio.
Estoy comentando, explicando los pasos que he hecho, compartiendo , aportando mis pocos conocimientos con los demás, explicando los problemas que me he econtradom, para que los demás no los tengan que sufrir, poniendo parte del código que he hecho ...
Pero me insiste en que se lo pase todo... un foro es para compartir, que es lo que estoy haciendo, para ayudar y encaminar, que es lo que he hecho, para ahorrar horas de investigación, que es lo que he hecho... No para hacerle el trabajo a los demás... por que "como nunca he trabajo con XML"... leches, ni yo antes tampoco... pero ahora sí... por que he leido, investigado, he probado, me he equivocado, vamos, que he aprendido... y no por que me lo han dado hecho sin tener yo que hacer ningún esfuerzo...y sabes de sobras que en todos los foros, de este tipo de gente hay mucha... que sus únicas aportaciones son pedir código y luego silencio...

P.D.: Si no soy bienvenido, y a parte de aportar mi reducida experiencia y problemas que me he encontrado, estoy obligado a poner todo el codigo... pues tambien se dice... y me largo por donde he venido... sin problemas...
Responder Con Cita
  #38  
Antiguo 12-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver, iMia, tienes razón, peeero... me refiero a "las formas", te entiendo perfectamente, somos los primeros que ante casos de ese tipo, no hacemos el trabajo a los demás. Pero no le decimos que nos ha costado un mes de trabajo y que nos lo pague.
Lo que hacemos es indicarle un tutorial, preguntarle en qué parte tiene problemas, qué cosas es la que no entiende, etc. o sea, ayudar a encaminarlo.
Desde luego, que el que llega y dice: "tengo que hacer esto, pasadme el código", lo mandamos a tomar.........
Responder Con Cita
  #39  
Antiguo 12-02-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Yo tambien entiendo tu postura como moderador, que conste.
Pero después de indicarle 2 veces, que mire lo que he puesto, que ya he puesto código, lo que he explicado , por donde ir, qué utilizar para que no tenga que hacer casi nada... me sigue insistiendo... es que, se vé claramente que ni se ha leido las 40 páginas del esquema de la eFactura, ni lo compara con el codigo que he puesto, es que si hubiese hecho un minimo esfuerzo, vería claramente por donde seguir...
Por eso me he "encendido" un poco... por que no pregunta... "tengo un problema aquí o allí..." si no que... "me puedes pasar tu codigo"...
Tampoco creo que le haya dicho DIRECTAMENTE... "me lo vas a pagar?"... en el sentido que quiero que me lo pague.. si no que le he intentado hacer ver que lo que pide tiene un coste de tiempo (y el tiempo es oro...) , muy grande para pedir todo e insistir, con emoticonos, para que no fuese una respuesta seca...

Última edición por iMia fecha: 12-02-2015 a las 11:22:51.
Responder Con Cita
  #40  
Antiguo 12-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tienes razón, porque algunos no quieren aprender, sino que le den el trabajo hecho.
Disculpa si he sido un poco bruto, es que es difícil entender "el tono" de lo que ha escrito otra persona cuando no puedes verle la cara, su expresión, sus gestos, etc.
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 spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15
programa para validar formato de archivo de texto n3mohack Varios 4 21-04-2005 00:27:00


La franja horaria es GMT +2. Ahora son las 21:14:52.


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