Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
Factura Electronica AFIP Resuelto/Funcionando

Sin ocx, sin componentes 100% codigo delphi

Tengo el codigo en delphi para solicitar cae y demas funciones del webservice de Afip funcionando 100% codigo puro de delphi sin OCX ni Componentes Raros.

Saludos..


PD: Enseguida pondré enlace al código, que lo subiré al FTP.


.

Última edición por Casimiro Notevi fecha: 15-07-2015 a las 00:01:43. Razón: Quitar email
Responder Con Cita
  #2  
Antiguo 15-07-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 286
Poder: 6
giulichajari Va por buen camino
Cita:
Empezado por adripugliesso Ver Mensaje
Sin ocx, sin componentes 100% codigo delphi

Tengo el codigo en delphi para solicitar cae y demas funciones del webservice de Afip funcionando 100% codigo puro de delphi sin OCX ni Componentes Raros.

Saludos..


PD: Enseguida pondré enlace al código, que lo subiré al FTP.


.
Es decir que te tomaste el trabajo de importar los webservices? y realizar todo el trabajo?
Felicitaciones entonces
Responder Con Cita
  #3  
Antiguo 15-07-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
Claro lo que hice fue importar los WDSL y luego utilizarlos en mi codigo.
Responder Con Cita
  #4  
Antiguo 15-07-2015
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.415
Poder: 18
egostar Va por buen camino
Cita:
Empezado por adripugliesso Ver Mensaje
Claro lo que hice fue importar los WDSL y luego utilizarlos en mi codigo.
Respecto al firmado, ¿que usaste? API, componentes ???

Saludos y felicidades.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 15-07-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
En el firmado lo unico que hago es usar el shellExecute llamando a un Bat que lo que hace es ejecutar las lineas de Openssl.


Código Delphi [-]
procedure CreaXMLFirmado();
var p1: string;
    r: PAnsiChar;
begin
  memo1.Clear;
  memo1.Lines.Add('c:');
  memo1.Lines.Add('cd /');
  memo1.Lines.Add('cd OpenSSL-Win32');
  memo1.Lines.Add('cd bin');
  memo1.Lines.Add('openssl smime -sign -in ' + ruta + 'ticketsf.xml -out '+ ruta + 'ticketf.xml -inkey ' + ruta + 'cert.key -signer '+ruta +'cert.crt -outform PEM -nodetach ');
  memo1.Lines.SaveToFile(ruta + 'firmar.bat');
  memo1.Clear;

ShellExecute(0, 'open', PAnsiChar(ruta + 'firmar.bat'), 'param1 param2',  nil,  SW_HIDE);
end;

tenes que tener instalado el Openssl en la ruta donde lo llamas

Última edición por Casimiro Notevi fecha: 15-07-2015 a las 22:18:14.
Responder Con Cita
  #6  
Antiguo 15-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.659
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:

Responder Con Cita
  #7  
Antiguo 15-07-2015
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.415
Poder: 18
egostar Va por buen camino
Cita:
Empezado por adripugliesso Ver Mensaje
En el firmado lo unico que hago es usar el shellExecute llamando a un Bat que lo que hace es ejecutar las lineas de Openssl.


Código Delphi [-]
procedure CreaXMLFirmado();
var p1: string;
    r: PAnsiChar;
begin
  memo1.Clear;
  memo1.Lines.Add('c:');
  memo1.Lines.Add('cd /');
  memo1.Lines.Add('cd OpenSSL-Win32');
  memo1.Lines.Add('cd bin');
  memo1.Lines.Add('openssl smime -sign -in ' + ruta + 'ticketsf.xml -out '+ ruta + 'ticketf.xml -inkey ' + ruta + 'cert.key -signer '+ruta +'cert.crt -outform PEM -nodetach ');
  memo1.Lines.SaveToFile(ruta + 'firmar.bat');
  memo1.Clear;

ShellExecute(0, 'open', PAnsiChar(ruta + 'firmar.bat'), 'param1 param2',
  nil,  SW_HIDE);
end;

tenes que tener instalado el Openssl en la ruta donde lo llamas
Muy interesante , muchas gracias.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 03-08-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
Metodo para Solicitar el CAE

Código Delphi [-]
procedure TForm1.Button8Click(Sender: TObject);
var
  port: ServiceSoap;
  respuesta: FECAEResponse;
  Auth: FEAuthRequest;
  Request: FECAERequest;

  CAECabReq : FECAECabRequest;
  CAEDetReq : FECAEDetRequest;
  ACAEDetReq : ArrayOfFECAEDetRequest;
  ADetIva : ArrayOfAlicIva;
  DetIva21 : AlicIva;
  DetIva105 : AlicIva;
  Tributos : Tributo;
  ATributos : ArrayOfTributo;
  CbtesAsoc : CbteAsoc;
  ACbtesAsoc : ArrayOfCbteAsoc;

  x, i : Integer;
  NroComp : Integer;

  iva : boolean;

begin


  screen.Cursor := crHourGlass;


//  edDesde.Text := TimeToStr(now);
  auth      := FeAuthRequest.Create;
  Request   :=  FECAERequest.Create;
  CAEDetReq := FECAEDetRequest.Create;
  CAECabReq := FECAECabRequest.Create;
  DetIva21  := AlicIva.Create;
  DetIva105 := AlicIva.Create;

  SetLength(ACAEDetReq,1);

  Request.FeCabReq        := CAECabReq;
  ACAEDetReq[0]           := CAEDetReq;
  Request.FeDetReq        := ACAEDetReq;

  //si tiene percepciones crea array
//  if STRTOFLOAT(edtPercIIBB.Text) > 0 then
//  begin
//    Tributos := Tributo.Create;
//    SetLength(ATributos,1);
//    ATributos[0]                             := Tributos;
//    Request.FeDetReq[0].Tributos             := ATributos;
//  end;

  //si tiene los 2 ivas dimensiona para 2 sino 1
//  if (STRTOFLOAT(edtIVA105.Text) > 0) and (STRTOFLOAT(edtIVA21.Text) > 0)
//  then
//  begin
//    SetLength(ADetIva,2);
//    ADetIVA[0]              := DetIva21;
//    ADetIVA[1]              := DetIva105;
//    Request.FeDetReq[0].Iva := ADetIva;
//  end
//  else
//  begin
    SetLength(ADetIva,1);
   ADetIVA[0]              := DetIva21;
    Request.FeDetReq[0].Iva := ADetIva;

//  end;


  // si lleva documento vinculado
//  i:= dbTipoCbte.KeyValue;
//  if (i IN [2,3,7,8]) then
//  begin
//    CbtesAsoc := CbteAsoc.Create;
//    SetLength(ACbtesAsoc,1);
//    ACbtesAsoc[0]                             := CbtesAsoc;
//    Request.FeDetReq[0].CbtesAsoc             := ACbtesAsoc;

//  end;


  iva:=false;

  auth.Cuit   := cuit;
  auth.token  := token;
  auth.Sign   := sign;


  //   FeCabReq
  Request.FeCabReq.CantReg  := 1;  //   cantidad de registros
  Request.FeCabReq.CbteTipo := 1;    //   1=fc.A 2=nd.A 3=nc.A    6=fc.B 7=nd.B 8=nc.B
  Request.FeCabReq.PtoVta   := 2;    //   Punto de venta

  //   FecDetReq
  Request.FeDetReq[0].Concepto  := 1;   //   1=productos, 2=servicios, 3=ambos
  Request.FeDetReq[0].DocTipo   := 80; //80 -cuit   86 - cuil   96-dni
  Request.FeDetReq[0].DocNro    := 20000000001; //cuit del cliente

  NroComp := STRTOINT64(edit1.Text);
  
  Request.FeDetReq[0].CbteDesde   := NroComp;
  Request.FeDetReq[0].CbteHasta   := NroComp;
  Request.FeDetReq[0].CbteFch     := formatdatetime('yyyymmdd',now);
  Request.FeDetReq[0].ImpTotal    := 121;
  Request.FeDetReq[0].ImpTotConc  := 0;
  Request.FeDetReq[0].ImpNeto     := 100;
  Request.FeDetReq[0].ImpOpEx     := 0;
  Request.FeDetReq[0].ImpIva      := 21;
  Request.FeDetReq[0].ImpTrib     := 0;  //si tiene percepciones de IIBB o IVA van aca

  if Request.FeDetReq[0].Concepto <> 1 then
  begin
    //------------------------------------------------------------------------
    Request.FeDetReq[0].FchServDesde := FormatDateTime('yyyymmdd',now);         //   solo para concepto 2 o 3
    Request.FeDetReq[0].FchServHasta := FormatDateTime('yyyymmdd',now);          //   solo para concepto 2 o 3
    Request.FeDetReq[0].FchVtoPago   := FormatDateTime('yyyymmdd',now);          //   solo para concepto 2 o 3
    //------------------------------------------------------------------------
  end;

  Request.FeDetReq[0].MonId      := 'PES';
  Request.FeDetReq[0].MonCotiz   := 1;
  //    Request.FeDetReq[0].FchServDesde :=          //   solo para concepto 2 o 3


 // i:= dbTipoCbte.KeyValue;
 // if (i IN [2,3,7,8]) then //es nota de debito o credito lleva doc asociado
 // begin
 //   Request.FeDetReq[0].CbtesAsoc[0].Tipo   := dbTipoCbteVinc.KeyValue;    //  tipo del comprobante asociado (nc/nd)
 //   Request.FeDetReq[0].CbtesAsoc[0].PtoVta := STRTOINT(edtCompVincPto.Text);    //  Punto de venta de la nc
 //   Request.FeDetReq[0].CbtesAsoc[0].Nro    := STRTOINT64(edtCompVincComp.Text);    //  numero de la (nc/nd)
 //end;

  //carga retencion de IIBB si tiene
//  if STRTOFLOAT(edtPercIIBB.Text) > 0 then
//  begin
//      Request.FeDetReq[0].Tributos[0].Id       :=  2;    //2-Imp provincial
//      Request.FeDetReq[0].Tributos[0].Desc     :=  'PERCEPCION DE IIBB BS AS' ;    // Descripcion
//      Request.FeDetReq[0].Tributos[0].BaseImp  :=  STRTOFLOAT(edtSubtotal.Text);    // base imponible
//      Request.FeDetReq[0].Tributos[0].Alic     :=  STRTOFLOAT(edtPercep.Text);    // alicuota
//      Request.FeDetReq[0].Tributos[0].importe  :=  STRTOFLOAT(edtPercIIBB.Text) ;    // imp del tributo
//  end;

  //la factura contiene 2 tipos de iva 10.5 y 21%
//  if (STRTOFLOAT(edtIVA105.Text) > 0) and (STRTOFLOAT(edtIVA21.Text) > 0) then
//  begin
//    Request.FeDetReq[0].Iva[1].id       := 4;     //   alicuota 10.5%
//    Request.FeDetReq[0].Iva[1].BaseImp  := STRTOFLOAT(LNeto105.Caption); //   base imponible
//    Request.FeDetReq[0].Iva[1].importe  := STRTOFLOAT(edtIva105.Text);//   Importe del impuesto
//
//    Request.FeDetReq[0].Iva[0].id       := 5;     //   alicuota 21%
//    Request.FeDetReq[0].Iva[0].BaseImp  := STRTOFLOAT(LNeto21.Caption); //   base imponible
//    Request.FeDetReq[0].Iva[0].importe  := STRTOFLOAT(edtIva21.TExt);//   Importe del impuesto
//    iva := true;
//  end;

  //la factura contiene iva 10.5
//  if (STRTOFLOAT(edtIVA105.Text) > 0) and NOT(iva) then
//  begin
//    Request.FeDetReq[0].Iva[0].id       := 4;     //   alicuota 10.5%
//    Request.FeDetReq[0].Iva[0].BaseImp  := STRTOFLOAT(LNeto105.Caption); //   base imponible
//    Request.FeDetReq[0].Iva[0].importe  := STRTOFLOAT(edtIva105.Text);//   Importe del impuesto
//  end;


  //la factura contiene iva 21
//  if NOT(iva) and (STRTOFLOAT(edtIVA21.Text) > 0) then
//  begin
    Request.FeDetReq[0].Iva[0].id       := 5;     //   alicuota 21%
    Request.FeDetReq[0].Iva[0].BaseImp  := 100; //   base imponible
    Request.FeDetReq[0].Iva[0].importe  := 21;//   Importe del impuesto
//  end;

    //la factura NO LLEVA IVA DISCRIMINADO ES B
//  if (LLetra.Caption = 'B') then
//  begin
//    Request.FeDetReq[0].Iva[0].id       := 3;     //   alicuota 10.5%
//    Request.FeDetReq[0].Iva[0].BaseImp  := STRTOFLOAT(edtSubtotal.Text); //   base imponible
//    Request.FeDetReq[0].Iva[0].importe  := 0;//   Importe del impuesto
//  end;


  //    Request.FeDetReq[0].Opcionales[0].Id    := s(4)    //  id del opcional
  //    Request.FeDetReq[0].Opcionales[0].Valor := s(250); //  valor
  

    port := GetServiceSoap(false,'', httprio1);

    Respuesta := port.FECAESolicitar(Auth,Request );


    Memo1.Lines.Add('RESULTADO: ' + respuesta.fedetresp[0].Resultado);
    Memo1.Lines.Add('CAE: ' + respuesta.fedetresp[0].CAE);
    Memo1.Lines.Add('FECHA VENC: ' + respuesta.fedetresp[0].CAEFchVto);




    //si retorna cae, registra venta
//    if (respuesta.fedetresp[0].Resultado = 'A') then RegistraVenta;




    //--------------------------
    //   ARRAY DE OBSERVACIONES
    //--------------------------
  for x := 0 to high( Respuesta.feDetResp[0].observaciones ) do

      Showmessage('Observ. Code  : '+inttostr(respuesta.fedetresp[0].observaciones[x].Code) +
      ' - Observ. Msg.  : '+respuesta.fedetresp[0].Observaciones[x].Msg);

  
  for x := 0 to High( respuesta.Errors ) do
    Showmessage('Errores : '+inttostr(Respuesta.Errors[x].Code)+' || '+Respuesta.Errors[x].Msg);
   

  auth.Free;
  respuesta.Free;
  Tributos.Free;
  CbtesAsoc.Free;
  DetIva21.Free;
  DetIva105.Free;
 // edHasta.Text := timetostr(now);

  screen.Cursor := crDefault;
end;
Responder Con Cita
  #9  
Antiguo 03-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.834
Poder: 9
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Muy interesante, y eso que lo hiciste por el camino mas dificil

El compañero Delphius de DelphiAccess (aunque tambien esta en este foro) propuso en algun momento una iniciativa para implementar los WebService. Seria interesante que el punto de partida sea tu trabajo

Saludos
Responder Con Cita
  #10  
Antiguo 04-08-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
Importate

Les comento algo que es clave y sin esto no funcionan los servicios del Webservice de Afip usando WSDL.

1 - Importamos el servicio de WSDL de Afip a nuestra aplicacion para ello vamos a:

Archivo - Nuevos - Otros - Solapa WebService - WDSL Importer

Luego en direccion de importacion ponemos:

Ambiente de prueba (Testing/Homologación):
WS Autenticación y Autorización: https://wsaahomo.afip.gov.ar/ws/services/LoginCms?WSDL
WS Facturación Electrónica: https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL

Ambiente real (Producción):
WS Autenticación y Autorización: https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL
WS Facturación Electrónica: https://servicios1.afip.gov.ar/wsfev1/service.asmx?WSDL

Al hacer esto se nos va a agregar a nuestra aplicacion las unit con los metodos directos de los webservice de afip para usar como funciones internas de la aplicacion.

2 - Lo importante y aca viene el secreto es que en las dos unit que se agregan de WSFEv1 hay que ir a la parte de INITIALIZATION y agregar la linea:

Código Delphi [-]
 //se agrega esto
  InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
Responder Con Cita
  #11  
Antiguo 04-08-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
Otros Detalles

Para los que usen webservice importando el WSDL

Forma de llamar a un método, en este caso (FEParamGetTiposDoc):
Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
var
  FEAuth : FEAuthRequest;
  x : Integer;
  s: DocTipoResponse;
  WS: ServiceSoap;
begin
  screen.Cursor := crHourGlass;

  WS := GetServiceSoap(false,'', httprio1);

  FEAuth  := FEAuthRequest.Create;
  try
    FEAuth.Token := token;
    FEAuth.Sign  := sign;
    FEAuth.Cuit  := cuit;

    Memo1.Clear;

    s := WS.FEParamGetTiposDoc(FEAuth);

    if (Length(s.ResultGet) > 0) then
    begin
      for x := 0 to high( s.ResultGet ) do
      Memo1.lines.Add(
        INTTOSTR(s.ResultGet[x].id)+' || '+
        s.ResultGet[x].Desc+' || '+
        s.ResultGet[x].FchDesde+' || '+
        s.ResultGet[x].FchHasta );
     end;

      if (Length(s.Errors) > 0) then
      showmessage(s.Errors[0].Msg);

  finally
    FEAuth.Free;
    s.Free;
  end;
  screen.Cursor := crDefault;
end;
Lo importante en esto es agregar en el componente HTTPRIO:
Código Delphi [-]
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
  SOAPResponse: TStream);
var
  texto : String;
   f: Integer;
   sl: TStringList;
begin
   SoapResponse.Position := 0;
   f:= FileCreate('after.xml');
   sMemo1.lines.add('===========  AFTER EXECUTE  =====================');
   setlength( texto, SOAPResponse.size );
   soapResponse.Read(Texto[1], SOAPResponse.Size);
   smemo1.lines.add( Texto );
   smemo1.lines.add('----------------------------------------------');
   sMemo1.lines.add( MethodName );
   smemo1.lines.add('======== FIN AFTER EXECUTE ======================');

   FileWrite(f, texto[1], Length(texto));
   FileClose(f);

   sl := TStringList.Create;
   try
     sl.Text := Texto;
     sl.SaveToFile('after-sl.xml');
   finally
     sl.Free;
   end;

end;

Última edición por Casimiro Notevi fecha: 05-08-2015 a las 00:15:59.
Responder Con Cita
  #12  
Antiguo 04-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.659
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
De nuestra guía de estilo:
Cita:
6. No escribir nunca los mensajes en mayúsculas, esto denota falta de respeto a los foristas.
Escribir en mayúsculas equivale a gritar.
Responder Con Cita
  #13  
Antiguo 05-08-2015
adripugliesso adripugliesso is offline
Miembro
 
Registrado: jul 2015
Posts: 46
Poder: 0
adripugliesso Va por buen camino
disculpas no lo sabia, como lo modifico??
Responder Con Cita
  #14  
Antiguo 05-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.659
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues es así en todo internet en todo el mundo
Voy a editarlo.
Gracias por tu colaboración
Responder Con Cita
  #15  
Antiguo 19-08-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 49
Poder: 0
iMia Va por buen camino
Fantástica aportación y explicación Adripugliesso...
Ye falta explicar el porque de un par de cosas...

- El añadir la llamada "InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);" en la claúsula Inizialization es por que ese WS no soporta SOAP 1.2 con tipos text/xml... con eso se le indica que el contenido es simplemente text. Es debido a un fallo en los servidores de tomcat que no se suelen configurar de forma correcta.

- En el HTTPRIO, añadir el afterexecute, no es realmente necesario, pero se hace para monitorear los mensajes recibidos y poder guardarlo y analizarlos... pero es algo que se puede obviar...
Responder Con Cita
  #16  
Antiguo 22-04-2016
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 209
Poder: 14
rruffino Va por buen camino
Consulta

Hola, buenas noches!
Yo tambien estoy usando directamente los webservices pero se me ha dado un caso, y es cuando el comprobante a validar solo tiene importes EXENTOS, cuando armo el objeto de Detalle, necesito sacarle el apartado IVA para no presentarlo sino da error en la validacion. Alguien sabe como hacerlo?
Responder Con Cita
  #17  
Antiguo 23-04-2016
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 286
Poder: 6
giulichajari Va por buen camino
Por lo que veo si has usado openssl, entonces no usas el WSDL de WSAA de autorizacion digamos??
Responder Con Cita
  #18  
Antiguo 29-04-2016
hsbelli hsbelli is offline
Registrado
 
Registrado: abr 2016
Posts: 1
Poder: 0
hsbelli Va por buen camino
hola, en que seccion del ftp esta el archivo con los fuentes y como se llama dicho archivo?
gracias!

saludos
Responder Con Cita
  #19  
Antiguo 20-07-2016
fredymam fredymam is offline
Registrado
 
Registrado: oct 2005
Posts: 2
Poder: 0
fredymam Va por buen camino
Hola!! comunidad

Estaba teniendo el mismo problema en Delphi7 y la corrección que publicaron
Código Delphi [-]
 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
resolvió gran parte

Aunque ahora tengo otro problema con CbtesAsoc, Tributos y Otros; y resulta imposible enviarlos vacíos, dando el siguiente error:

--->> Observaciones:
Code: 10062 - Msg.: Si envia CbtesAsoc, CbteAsoc es obligatorio.
Code: 10052 - Msg.: Si envia Opcionales, Opcional es obligatorio.


Código Delphi [-]
var
  Retenciones : ArrayOfTributo;
  Detalle        : FECAEDetRequest;
begin
  SetLength(Retenciones,0);
  Detalle.CbtesAsoc := Retenciones;
Responder Con Cita
  #20  
Antiguo 24-04-2017
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
OpenSSL

Hola Amigo, gracias por el aporte.
Estoy interesado en ver como llamas al webservices "logincms", yo estoy haciendo lo siguiente , pero obtengo siempre el mensaje de error "El CMS es inválido".
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 vService:uLogincms.LoginCMS;
 vCms:String;
begin
    Memo1.Clear;
    Memo1.Lines.LoadFromFile('C:\Afip\myProject\manual\tra.xml.firmado');
    vcms:=Memo1.Lines.Text;
    vService:=ulogincms.GetLoginCMS();
    Memo1.lines.text:=vService.loginCms(vcms);

La unit uLogincms es el wdsl importado de https://wsaahomo.afip.gov.ar/ws/services/LoginCms?wsdl

Podrías darme una mano con esto por favor? , no encontré en el FTP el código que habias dicho que lo subirías .

Gracias


Cita:
Empezado por adripugliesso Ver Mensaje
Sin ocx, sin componentes 100% codigo delphi

Tengo el codigo en delphi para solicitar cae y demas funciones del webservice de Afip funcionando 100% codigo puro de delphi sin OCX ni Componentes Raros.

Saludos..


PD: Enseguida pondré enlace al código, que lo subiré al FTP.


.
__________________
Q Onda?
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
Factura Electronica - Afip Argentina Joe_Balda Varios 13 19-05-2017 22:03:40
Factura Electrónica AFIP Argentina SergioFrey Noticias 2 19-05-2017 22:02:03
xml+xsl a pdf(Factura Electronica) jgutti Varios 4 21-02-2012 17:08:23
factura electronica cmm07 Varios 4 02-04-2009 18:46:03
factura electronica spia Varios 2 22-02-2009 22:30:06


La franja horaria es GMT +2. Ahora son las 18:02:19.


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