Ver Mensaje Individual
  #2  
Antiguo Hace 2 Semanas
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 921
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado me tome la libertad de realizar algunos cambios que creo serán beneficiosos...Si considera que no, los puede desechar.

En mi opinion el código queda mas claro...Bueno eso es una apreciación muy personal...

Código Delphi [-]
procedure TF_Inicio.btFacturaRapidaClick(Sender: TObject);
var
  MainObject, lJNestedObject, lJRestoredObject, ObjArticu, ObjLinea: TJSONObject;
  Array_Articu,Array_Linea: TJSONArray;
begin
  try
    // Veo las facturas que están pendientes de enviar
      Memo1.Visible := True;
      Memo1.Lines.Clear;

      Array_Articu := TJSONArray.Create;
     
      F_Data.FDQry.Active := False;
      F_Data.FDQry.Sql.Clear;
      F_Data.FDQry.Sql.Add('Select * ');
      F_Data.FDQry.Sql.Add('from facemi');
      F_Data.FDQry.Sql.Add('where fae_entregado =:fae_entregado');
      F_Data.FDQry.ParamByName('fae_entregado').AsString:='N';
      F_Data.FDQry.Open;
      F_Data.FDQry.First;
    
      while not F_Data.FDQry.eof do
      begin
           ObjArticu := TJSONObject.Create;
           ObjArticu.AddPair(TJSONPair.Create('fae_serie',F_Data.FDQry.FieldByName('FAE_SERIE').AsString));
           ObjArticu.AddPair(TJSONPair.Create('fae_nro',F_Data.FDQry.FieldByName('FAE_NRO').AsInteger));
              
           F_Data.FDQry1.Active := False;
           F_Data.FDQry1.Sql.Clear;           
           F_Data.FDQry1.Sql.Add('Select * ');
           F_Data.FDQry1.Sql.Add('from lifacl');
           F_Data.FDQry1.Sql.Add('where lfa_serie =:lfa_serie and ');
           F_Data.FDQry1.Sql.Add('      lfa_fnro =:lfa_fnro');
           F_Data.FDQry1.Sql.Add('order by lfa_linea asc');
           F_Data.FDQry1.ParamByName('lfa_serie').AsString:=F_Data.FDQry.FieldByName('FAE_SERIE').AsString;
           ObjArticu.AddPair(TJSONPair.Create('fae_nro',TJSONNumber.Create(FDQry.FieldByName('FAE_NRO').AsInteg  er)));

           F_Data.FDQry1.Open;
           F_Data.FDQry1.First;
           
           Array_Linea := TJSONArray.Create;
          
           while not F_Data.FDQry1.eof  do
           begin
                ObjLinea := TJSONObject.Create;
                ObjLinea.AddPair(TJSONPair.Create('lfa_serie',F_Data.FDQry1.FieldByName('LFA_SERIE').AsString));
                ObjLinea.AddPair(TJSONPair.Create('lfa_fnro',TJSONNumber.Create(FDQry1.FieldByName('LFA_FNRO').AsInt  eger)));
                ObjLinea.AddPair(TJSONPair.Create('lfa_linea',TJSONNumber.Create(FDQry1.FieldByName('LFA_LINEA').AsI  nteger)));
        
                Array_Linea.Add(ObjLinea);
        
                F_Data.FDQry1.Next;
           end;
           ObjArticu.AddPair(TJSONPair.Create('lifacl', Array_Linea ) ) ;

           Array_Articu.Add(ObjArticu);       
       
     F_Data.FDQry.Next;
      end;

          Memo1.Text := Array_Articu.ToJSON;
          Memo1.Text := copy(Memo1.Text,11, length(Memo1.Text)-11);

          {$IF DEFINED (WIN32) or DEFINED (WIN64)}
            TFile.WriteAllText('jsonfile.json', Array_Articu.ToJSON); //Solo para windows
          {$ENDIF}

          RestClient3.BaseURL := servidorWS + 'Facemi/Importar';
          RestRequest3.ClearBody;  //Si no se pone solo se puede ejecutar el post una sola vez
          RestRequest3.Body.Add(Array_Articu.ToJSON,TRestContentType.ctAPPLICATION_JSON);
          //RestRequest3.Body.Add(Memo1.Text,TRestContentType.ctAPPLICATION_JSON);
          RestRequest3.Execute;
  except
    on e: exception do
      showmessage(e.Message);
  end;
end;

Espero que le sea de ayuda u oriente en la solución de su problema....

Saludos cordiales
Responder Con Cita