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 15-07-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 14
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
  #2  
Antiguo 15-07-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
Poder: 0
adripugliesso Va por buen camino
Claro lo que hice fue importar los WDSL y luego utilizarlos en mi codigo.
Responder Con Cita
  #3  
Antiguo 15-07-2015
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
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
  #4  
Antiguo 15-07-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
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 Noteví fecha: 15-07-2015 a las 21:18:14.
Responder Con Cita
  #5  
Antiguo 15-07-2015
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:

Responder Con Cita
  #6  
Antiguo 15-07-2015
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
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
  #7  
Antiguo 03-08-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
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
  #8  
Antiguo 03-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 18
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
  #9  
Antiguo 19-05-2017
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 24
hgiacobone Va por buen camino
Estimado amigo adripugliesso
Subiste el código al FTP del sitio ?
Donde podemos encontrar más info sobre tu solución?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·

Última edición por hgiacobone fecha: 19-05-2017 a las 20:11:33. Razón: no te digo
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 30 30-01-2021 04:10:34
Factura Electrónica AFIP Argentina SergioFrey Noticias 2 19-05-2017 21:02:03
xml+xsl a pdf(Factura Electronica) jgutti Varios 4 21-02-2012 16:08:23
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06


La franja horaria es GMT +2. Ahora son las 13:06:02.


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