using System.Collections.Immutable;
using Connected.Annotations;
using Connected.Common.Documents;
using Connected.Notifications;
using Connected.ServiceModel;
namespace Connected.Logistics.Documents.Receive;
///
/// Represents service for the document.
///
[Service]
[ServiceUrl(DocumentUrls.Receives)]
public interface IReceivePostingDocumentService : IDocumentService
{
event ServiceEventHandler> PlannedItemUpdated;
///
/// Inserts a new .
///
/// The arguments containing the properties of the new document.
/// The id of the newly inserted document.
Task Insert(InsertReceivePostingDocumentArgs args);
///
/// Updates document.
///
/// The arguments containing changed properties of the document.
Task Update(UpdateReceivePostingDocumentArgs args);
///
/// Performs partial update on the for the properties specified
/// in arguments.
///
/// The arguments containing properties that need to be updated.
Task Patch(PatchArgs args);
///
/// Deletes from the storage.
///
/// The arguments containing the id of the document that is about to be deleted.
Task Delete(PrimaryKeyArgs args);
///
/// Selects for the specified id.
///
/// The arguments containing the id.
/// is found, null otherwise.
Task Select(PrimaryKeyArgs args);
///
/// Queries for the specified document.
///
/// The arguments containing the id of the parent receive document.
/// if found, null otherwise.
Task> Query(PrimaryKeyArgs args);
///
/// Inserts a new into the document.
///
/// The arguments containing the properties of the new item.
/// The id of the newly inserted item.
Task InsertItem(InsertReceivePostingItemArgs args);
Task PatchPlanedItem(PatchArgs args);
///
/// Queries the items for the specified .
///
/// The arguments containing the id of the document for which the items to be
/// queried.
/// The list of items that belong to the specified document.
Task> QueryItems(PrimaryKeyArgs args);
///
/// Selects the item for the specified id.
///
/// The arguments containing the id of the item.
/// The if found, null otherwise.
Task SelectItem(PrimaryKeyArgs args);
///
/// Updates .
///
/// The arguments containing the changed properties of the item.
Task UpdatePlannedItem(UpdateReceivePlannedItemArgs args);
Task SelectPlannedItem(PrimaryKeyArgs args);
Task SelectPlannedItem(SelectReceivePlannedItemArgs args);
Task> QueryPlannedItems(PrimaryKeyArgs args);
Task> QueryPlannedItems(PrimaryKeyArgs args);
}