Inviare una richiesta di congedo a flusso di lavoro

Si applica a queste app Dynamics 365:
Human Resources

In Microsoft Dynamics 365 Human Resources, è possibile utilizzare l'API MyLeaveRequests submit() per inviare una richiesta di congedo al flusso di lavoro. Questa API è esposta come azione nell'entità OData MyLeaveRequests.

Prerequisiti

La richiesta di congedo deve essere salvata nel database e deve essere recuperabile tramite l'entità MyLeaveRequests.

Autorizzazioni

Per chiamare questa API è necessario disporre di una delle seguenti autorizzazioni. Per ulteriori informazioni sulle autorizzazioni e su come selezionarle, vedere Autenticazione.

Tipo di autorizzazione Autorizzazioni (dalla meno privilegiata alla più privilegiata)
Delegata (account di lavoro o dell'istituto di istruzione) user_impersonation

Richiesta HTTPS

POST https://{cluster}.hr.talent.dynamics.com/namespaces/{namespace_guid}/data/MyLeaveRequests(RequestId='{requestId}', LeaveType='{leaveType}', LeaveDate={leaveDate}, dataAreaId={dataArea})/Microsoft.Dynamics.DataEntities.submit?cross-company=true

La richiesta è conforme agli standard OData. I parametri {requestId}, {leaveType}, {leaveDate} e {dataArea} si riferiscono ai campi che compongono la chiave naturale composita dell'entità MyLeaveRequests.

Nota

Sebbene i campi per l'entità MyLeaveRequests fanno riferimento a una singola riga nella richiesta di congedo, la chiamata dell'API di invio invia l'intera richiesta di congedo (tutte le righe) al flusso di lavoro.

Intestazioni richieste

Intestazione Value
Autorizzazione Portatore {token} (necessaria)
Content-Type application/json

Corpo della richiesta

Non fornire il corpo della richiesta per questo metodo.

Risposta

Una risposta positiva è sempre una risposta 204 Nessun contenuto.

I chiamanti non autorizzati riceveranno una risposta 401 Non autorizzato o a 403 Accesso negato.

Se l'invio non ha esito positivo (ad esempio a causa della convalida), la risposta sarà 500 Errore del server e il corpo della risposta includerà un oggetto JSON con ulteriori dettagli.

Esempio

POST https://aos-rts-sf-550e5c091f6-prod-westus2.hr.talent.dynamics.com/namespaces/b2eb8003-334f-4a84-ab63-edbe23569090/data/MyLeaveRequests(RequestId='USMF-000065', LeaveType='Vacation', LeaveDate=2019-10-04T12:00:00Z, dataAreaId='USMF')/Microsoft.Dynamics.DataEntities.submit
{
  "error": {
    "code": "",
    "message": "An error has occurred.",
    "innererror": {
      "message": "Exception occurred while executing action submit on Entity MyLeaveRequest: The request would put the 'Vacation' balance below the allowed minimum balance on 9/10/2019.",
      "type": "System.InvalidOperationException",
      "stacktrace": "   at Microsoft.Dynamics.Platform.Integration.Services.OData.Action.ActionInvokable.Invoke()   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateProcessor.ActionInvocation(ChangeOperationContext context, ActionInvokable action)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateManager.<>c__DisplayClass13_0.<ScheduleInvokable>b__0(ChangeOperationContext context)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.ChangeInfo.ExecuteActionsInCompanyContext(IEnumerable`1 actionList, ChangeOperationContext operationContext)\r\n   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.ChangeInfo.ExecuteActions(ChangeOperationContext context)   at Microsoft.Dynamics.Platform.Integration.Services.OData.Update.UpdateManager.SaveChanges()   at Microsoft.Dynamics.Platform.Integration.Services.OData.AxODataDelegatingHandler.<SaveChangesAsync>d__3.MoveNext()"
    }
  }
}

Convalida e messaggi d'errore

Come parte della chiamata all'API di invio, Human Resources esegue la convalida della logica aziendale prima dell'invio e ciò garantisce che la richiesta di congedo sia in uno stato valido per l'invio. I messaggi di errore che si potrebbero ricevere nella risposta se le convalide non riescono sono:

  • La richieste comporterebbe l'inserimento del saldo '{LeaveTypeId}' sotto al saldo minimo consentito in {date}.
  • Impossibile inviare la richiesta di permesso con stato Completata.
  • Impossibile inviare o salvare la richiesta poiché non sono state apportate modifiche. Aggiungere o aggiornare l'importo o il tipo di congedo e riprovare.
  • La richiesta di sospensione immessa contiene uno o più giorni con la stessa data e il tipo di congedo come richiesta in sospeso esistente. Richiamare la richiesta esistente per apportare le modifiche.
  • Il codice motivo '{ReasonCodeId}' non si applica ad alcun tipo di congedo nella richiesta.
  • Il tipo di congedo "{LeaveTypeId}" richiede un codice motivo. Selezionare il tipo e il codice motivo appropriati.
  • Il permesso non è stato inviato correttamente. Il permesso è stato salvato come una richiesta di bozza.

Vedere anche