Ver Mensaje Individual
  #8  
Antiguo 03-08-2015
adripugliesso adripugliesso is offline
Miembro
NULL
 
Registrado: jul 2015
Posts: 49
Reputación: 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