> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SuperOffice.WebApi.Agents.ISaleAgent

# \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent">\</a> Interface ISaleAgent

Namespace: [SuperOffice.WebApi.Agents](SuperOffice.WebApi.Agents.md)\
Assembly: SuperOffice.WebApi.dll

Sale data services

```csharp theme={null}
public interface ISaleAgent : IAgentBase, IDisposable
```

#### Implements

[IAgentBase](SuperOffice.WebApi.Agents.IAgentBase.md),
[IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

## Methods

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_AddSaleStakeholdersAsync\_System\_Int32\_SuperOffice\_WebApi\_Data\_SaleStakeholder\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> AddSaleStakeholdersAsync(int, SaleStakeholder\[], RequestOptions)

```csharp theme={null}
Task AddSaleStakeholdersAsync(int saleId, SaleStakeholder[] saleStakeholders, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`saleStakeholders` [SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_BatchUpdateNextDueDateAsync\_SuperOffice\_WebApi\_RequestOptions\_">\</a> BatchUpdateNextDueDateAsync(RequestOptions)

Re-calculate all the next due dates

```csharp theme={null}
Task BatchUpdateNextDueDateAsync(RequestOptions requestOptions = null)
```

#### Parameters

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_CreateDefaultSaleEntityAsync\_SuperOffice\_WebApi\_RequestOptions\_">\</a> CreateDefaultSaleEntityAsync(RequestOptions)

Set default values into a new SaleEntity.
NetServer calculates default values on the entity, which is required when creating/storing a new instance

```csharp theme={null}
Task<SaleEntity> CreateDefaultSaleEntityAsync(RequestOptions requestOptions = null)
```

#### Parameters

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleEntity](SuperOffice.WebApi.Data.SaleEntity.md)\&gt;

A blank SaleEntity

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_CreateDefaultSaleStakeholderAsync\_SuperOffice\_WebApi\_RequestOptions\_">\</a> CreateDefaultSaleStakeholderAsync(RequestOptions)

Set default values into a new SaleStakeholder.
NetServer calculates default values on the entity, which is required when creating/storing a new instance

```csharp theme={null}
Task<SaleStakeholder> CreateDefaultSaleStakeholderAsync(RequestOptions requestOptions = null)
```

#### Parameters

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\&gt;

A blank SaleStakeholder

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_CreateDefaultSaleSummaryAsync\_SuperOffice\_WebApi\_RequestOptions\_">\</a> CreateDefaultSaleSummaryAsync(RequestOptions)

Set default values into a new SaleSummary.
NetServer calculates default values on the entity, which is required when creating/storing a new instance

```csharp theme={null}
Task<SaleSummary> CreateDefaultSaleSummaryAsync(RequestOptions requestOptions = null)
```

#### Parameters

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleSummary](SuperOffice.WebApi.Data.SaleSummary.md)\&gt;

A blank SaleSummary

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_DeleteSaleEntityAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> DeleteSaleEntityAsync(int, RequestOptions)

Deletes the SaleEntity

```csharp theme={null}
Task DeleteSaleEntityAsync(int saleEntityId, RequestOptions requestOptions = null)
```

#### Parameters

`saleEntityId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The identity of the SaleEntity

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_DeleteSaleStakeholderAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> DeleteSaleStakeholderAsync(int, RequestOptions)

Deletes the SaleStakeholder

```csharp theme={null}
Task DeleteSaleStakeholderAsync(int saleStakeholderId, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholderId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The identity of the SaleStakeholder

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_DeleteSaleStakeholdersAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> DeleteSaleStakeholdersAsync(int\[], RequestOptions)

```csharp theme={null}
Task DeleteSaleStakeholdersAsync(int[] saleStakeholderIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholderIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetMyOpportunitiesAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetMyOpportunitiesAsync(int, RequestOptions)

Returning the opportunities (open sales) belonging to the user currently logged on

```csharp theme={null}
Task<Sale[]> GetMyOpportunitiesAsync(int count, RequestOptions requestOptions = null)
```

#### Parameters

`count` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The number of sales that is returned. -1 returns all.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Array of open sales (opportunities).

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetNextDueDateAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetNextDueDateAsync(int, RequestOptions)

Gets the next due date for a sale. The next due date is the next future appointment that is not completed.

```csharp theme={null}
Task<DateTime> GetNextDueDateAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Sale id

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)\&gt;

Next due date for the given sale.

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetNextSaleStageAsync\_System\_Int32\_System\_Boolean\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetNextSaleStageAsync(int, bool, RequestOptions)

Gets the next (not deleted) sale stage id if the current stage is deleted. If the current stage is not deleted, the CurrentStageId is returned

```csharp theme={null}
Task<int> GetNextSaleStageAsync(int saleId, bool includeCurrentStage, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`includeCurrentStage` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[int](https://learn.microsoft.com/dotnet/api/system.int32)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetOpenSalesForContactAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetOpenSalesForContactAsync(int, RequestOptions)

Returns all open sales for the contact provided.

```csharp theme={null}
Task<Sale[]> GetOpenSalesForContactAsync(int contactId, RequestOptions requestOptions = null)
```

#### Parameters

`contactId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The ID of the contact whose sales we want.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Aray of sales.

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetProbabilityFromStageAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetProbabilityFromStageAsync(int, RequestOptions)

Get the probability percentage for a given sale stage

```csharp theme={null}
Task<int> GetProbabilityFromStageAsync(int stageId, RequestOptions requestOptions = null)
```

#### Parameters

`stageId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Probability list id

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[int](https://learn.microsoft.com/dotnet/api/system.int32)\&gt;

Probability percentage

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetRecentSalesAsync\_System\_Int32\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetRecentSalesAsync(int, int, RequestOptions)

Returns the latest sales (that are sold) limited by their amount. The result is sorted descending with the latest first. If the amount is -1, the amount restriction is omitted.

```csharp theme={null}
Task<Sale[]> GetRecentSalesAsync(int amountLimit, int count, RequestOptions requestOptions = null)
```

#### Parameters

`amountLimit` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The amount limit in the local currency.

`count` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The maximum number of items to return. If -1 all are returned.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Array of all recent sales.

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleAsync(int, RequestOptions)

Gets a specific Sale object.

```csharp theme={null}
Task<Sale> GetSaleAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The identifier of the Sale object

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\&gt;

Sale

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleEntityAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleEntityAsync(int, RequestOptions)

Gets a specific SaleEntity object.

```csharp theme={null}
Task<SaleEntity> GetSaleEntityAsync(int saleEntityId, RequestOptions requestOptions = null)
```

#### Parameters

`saleEntityId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The identifier of the SaleEntity object

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleEntity](SuperOffice.WebApi.Data.SaleEntity.md)\&gt;

SaleEntity

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleListAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleListAsync(int\[], RequestOptions)

Gets an array of specific Sale objects.

```csharp theme={null}
Task<Sale[]> GetSaleListAsync(int[] saleIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

The identifiers of the Sale object

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Array of Sale objects

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleStakeholderAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleStakeholderAsync(int, RequestOptions)

Gets a specific SaleStakeholder object.

```csharp theme={null}
Task<SaleStakeholder> GetSaleStakeholderAsync(int saleStakeholderId, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholderId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The identifier of the SaleStakeholder object

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\&gt;

SaleStakeholder

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleStakeholderByIdAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleStakeholderByIdAsync(int\[], RequestOptions)

```csharp theme={null}
Task<SaleStakeholder[]> GetSaleStakeholderByIdAsync(int[] saleStakeholderIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholderIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleStakeholderListAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleStakeholderListAsync(int\[], RequestOptions)

Gets an array of specific SaleStakeholder objects.

```csharp theme={null}
Task<SaleStakeholder[]> GetSaleStakeholderListAsync(int[] saleStakeholderIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholderIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

The identifiers of the SaleStakeholder object

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]\&gt;

Array of SaleStakeholder objects

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSaleStakeholdersAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSaleStakeholdersAsync(int, RequestOptions)

```csharp theme={null}
Task<SaleStakeholder[]> GetSaleStakeholdersAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSalesByDateAsync\_System\_DateTime\_System\_DateTime\_System\_Int32\_SuperOffice\_WebApi\_Data\_SaleStatus\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSalesByDateAsync(DateTime, DateTime, int, SaleStatus, RequestOptions)

Returns all sales within a time period. The sales array can be limited by amount and status.

```csharp theme={null}
Task<Sale[]> GetSalesByDateAsync(DateTime fromDate, DateTime toDate, int amountLimit, SaleStatus status, RequestOptions requestOptions = null)
```

#### Parameters

`fromDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

The beginning of the time interval.

`toDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

The end of the time interval.

`amountLimit` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The amount limit in the local currency.  -1 means no amount limit

`status` [SaleStatus](SuperOffice.WebApi.Data.SaleStatus.md)

The sale status (Lost, Open, Sold, Unknown). SaleStatus.Unknown means no status filtering.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Array of sales.

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSalesFromContactAsync\_System\_Int32\_System\_Boolean\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSalesFromContactAsync(int, bool, RequestOptions)

Returns all sales for the contact provided.

```csharp theme={null}
Task<Sale[]> GetSalesFromContactAsync(int contactId, bool onlyOpenSales, RequestOptions requestOptions = null)
```

#### Parameters

`contactId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The ID of the contact whose sales we want.

`onlyOpenSales` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

If true, only get open sales.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

List of sales matching query

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSalesFromPersonAsync\_System\_Int32\_System\_Boolean\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSalesFromPersonAsync(int, bool, RequestOptions)

Returns all sales for the person provided.

```csharp theme={null}
Task<Sale[]> GetSalesFromPersonAsync(int personId, bool onlyOpenSales, RequestOptions requestOptions = null)
```

#### Parameters

`personId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The ID of the person whose sales we want.

`onlyOpenSales` [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

If true, only get open sales.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

List of sales matching query

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSummaryByAssociateAsync\_System\_Int32\_System\_DateTime\_System\_DateTime\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSummaryByAssociateAsync(int, DateTime, DateTime, RequestOptions)

```csharp theme={null}
Task<SaleSummary> GetSummaryByAssociateAsync(int associateId, DateTime fromDate, DateTime toDate, RequestOptions requestOptions = null)
```

#### Parameters

`associateId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`fromDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`toDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleSummary](SuperOffice.WebApi.Data.SaleSummary.md)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSummaryByContactAsync\_System\_Int32\_System\_DateTime\_System\_DateTime\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSummaryByContactAsync(int, DateTime, DateTime, RequestOptions)

```csharp theme={null}
Task<SaleSummary> GetSummaryByContactAsync(int contactId, DateTime fromDate, DateTime toDate, RequestOptions requestOptions = null)
```

#### Parameters

`contactId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`fromDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`toDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleSummary](SuperOffice.WebApi.Data.SaleSummary.md)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetSummaryByGroupAsync\_System\_Int32\_System\_DateTime\_System\_DateTime\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetSummaryByGroupAsync(int, DateTime, DateTime, RequestOptions)

```csharp theme={null}
Task<SaleSummary> GetSummaryByGroupAsync(int groupId, DateTime fromDate, DateTime toDate, RequestOptions requestOptions = null)
```

#### Parameters

`groupId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`fromDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`toDate` [DateTime](https://learn.microsoft.com/dotnet/api/system.datetime)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleSummary](SuperOffice.WebApi.Data.SaleSummary.md)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_GetUpcomingSalesAsync\_System\_Int32\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> GetUpcomingSalesAsync(int, int, RequestOptions)

Returns all open sales, sorted descending with the latest first.  If the weigthed amount is -1, the amount restriction is omitted.

```csharp theme={null}
Task<Sale[]> GetUpcomingSalesAsync(int weightedAmountLimit, int count, RequestOptions requestOptions = null)
```

#### Parameters

`weightedAmountLimit` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The amount weighted by the probability that the sale is closed (amount \* probability).

`count` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The maximum number of items to return. If -1 all are returned.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[Sale](SuperOffice.WebApi.Data.Sale.md)\[]\&gt;

Array of upcoming sales.

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_HasGuideActivitiesAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> HasGuideActivitiesAsync(int, RequestOptions)

```csharp theme={null}
Task<bool> HasGuideActivitiesAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_HasGuideAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> HasGuideAsync(int, RequestOptions)

Does this sale have a sale guide associated with its sale type?

```csharp theme={null}
Task<bool> HasGuideAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Sale id

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

True if the sale has a guide

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_HasStakeholderSettingAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> HasStakeholderSettingAsync(int, RequestOptions)

```csharp theme={null}
Task<bool> HasStakeholderSettingAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_IsNumberValidAsync\_System\_Int32\_System\_String\_SuperOffice\_WebApi\_RequestOptions\_">\</a> IsNumberValidAsync(int, string, RequestOptions)

Checks if the number is unique or required.  The setting is configured from admin under system options.

```csharp theme={null}
Task<bool> IsNumberValidAsync(int contactId, string number, RequestOptions requestOptions = null)
```

#### Parameters

`contactId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

SaleId

`number` [string](https://learn.microsoft.com/dotnet/api/system.string)

Number value to check for uniqueness/required

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

True if the number is valid

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_OfferAutoNextStageOnApppointmentCompletedAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> OfferAutoNextStageOnApppointmentCompletedAsync(int, RequestOptions)

```csharp theme={null}
Task<bool> OfferAutoNextStageOnApppointmentCompletedAsync(int appointmentId, RequestOptions requestOptions = null)
```

#### Parameters

`appointmentId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SaleHasQuoteAsync\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SaleHasQuoteAsync(int, RequestOptions)

Returns true is the sale has a quote

```csharp theme={null}
Task<bool> SaleHasQuoteAsync(int saleId, RequestOptions requestOptions = null)
```

#### Parameters

`saleId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The id of the sale

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[bool](https://learn.microsoft.com/dotnet/api/system.boolean)\&gt;

True if the sale has a quote

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SaveSaleEntityAsync\_SuperOffice\_WebApi\_Data\_SaleEntity\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SaveSaleEntityAsync(SaleEntity, RequestOptions)

Updates the existing SaleEntity or creates a new SaleEntity if the id parameter is 0.

```csharp theme={null}
Task<SaleEntity> SaveSaleEntityAsync(SaleEntity saleEntity, RequestOptions requestOptions = null)
```

#### Parameters

`saleEntity` [SaleEntity](SuperOffice.WebApi.Data.SaleEntity.md)

The SaleEntity that is saved.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleEntity](SuperOffice.WebApi.Data.SaleEntity.md)\&gt;

New or updated SaleEntity

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SaveSaleStakeholderAsync\_SuperOffice\_WebApi\_Data\_SaleStakeholder\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SaveSaleStakeholderAsync(SaleStakeholder, RequestOptions)

Updates the existing SaleStakeholder or creates a new SaleStakeholder if the id parameter is 0.

```csharp theme={null}
Task<SaleStakeholder> SaveSaleStakeholderAsync(SaleStakeholder saleStakeholder, RequestOptions requestOptions = null)
```

#### Parameters

`saleStakeholder` [SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)

The SaleStakeholder that is saved.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\&gt;

New or updated SaleStakeholder

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SetAsLostAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SetAsLostAsync(int\[], RequestOptions)

Change the status of one or more sales to Lost. Note that this does not affect the Completed state of the sale.

```csharp theme={null}
Task SetAsLostAsync(int[] saleIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

Array of sale ids to be marked as lost. All normal write access rules apply.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SetAsLostWithReasonAsync\_System\_Int32\_\_\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SetAsLostWithReasonAsync(int\[], int, RequestOptions)

Change the status of one or more sales to Lost. Note that this does not affect the Completed state of the sale.

```csharp theme={null}
Task SetAsLostWithReasonAsync(int[] saleIds, int reasonId, RequestOptions requestOptions = null)
```

#### Parameters

`saleIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

Array of sale ids to be marked as lost. All normal write access rules apply.

`reasonId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The ID of the lost reason.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SetAsSoldAsync\_System\_Int32\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SetAsSoldAsync(int\[], RequestOptions)

Change the status of one or more Sales to Sold. Note that this does not mark them as Completed.

```csharp theme={null}
Task SetAsSoldAsync(int[] saleIds, RequestOptions requestOptions = null)
```

#### Parameters

`saleIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

Array of sale ids to be marked as lost. All the normal write access rules apply.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_SetAsSoldWithReasonAsync\_System\_Int32\_\_\_System\_Int32\_SuperOffice\_WebApi\_RequestOptions\_">\</a> SetAsSoldWithReasonAsync(int\[], int, RequestOptions)

Change the status of one or more Sales to Sold. Note that this does not mark them as Completed.

```csharp theme={null}
Task SetAsSoldWithReasonAsync(int[] saleIds, int reasonId, RequestOptions requestOptions = null)
```

#### Parameters

`saleIds` [int](https://learn.microsoft.com/dotnet/api/system.int32)\[]

Array of sale ids to be marked as lost. All the normal write access rules apply.

`reasonId` [int](https://learn.microsoft.com/dotnet/api/system.int32)

The ID of the sold reason.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_UpdateSaleStakeholdersAsync\_SuperOffice\_WebApi\_Data\_SaleStakeholder\_\_\_SuperOffice\_WebApi\_RequestOptions\_">\</a> UpdateSaleStakeholdersAsync(SaleStakeholder\[], RequestOptions)

```csharp theme={null}
Task<SaleStakeholder[]> UpdateSaleStakeholdersAsync(SaleStakeholder[] stakeholders, RequestOptions requestOptions = null)
```

#### Parameters

`stakeholders` [SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[SaleStakeholder](SuperOffice.WebApi.Data.SaleStakeholder.md)\[]\&gt;

### \<a id="SuperOffice\_WebApi\_Agents\_ISaleAgent\_ValidateSaleEntityAsync\_SuperOffice\_WebApi\_Data\_SaleEntity\_SuperOffice\_WebApi\_RequestOptions\_">\</a> ValidateSaleEntityAsync(SaleEntity, RequestOptions)

Check that entity is ready for saving, return error messages by field.

```csharp theme={null}
Task<StringDictionary> ValidateSaleEntityAsync(SaleEntity saleEntity, RequestOptions requestOptions = null)
```

#### Parameters

`saleEntity` [SaleEntity](SuperOffice.WebApi.Data.SaleEntity.md)

Entity to be checked for errors.

`requestOptions` [RequestOptions](SuperOffice.WebApi.RequestOptions.md)

Override language/culture codes on this request.

#### Returns

[Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task-1)\<[StringDictionary](SuperOffice.WebApi.Data.StringDictionary.md)\&gt;

Error messages tagged by field.


## Related topics

- [SuperOffice.WebApi.Agents.SaleAgent](/en/api/reference/webapi/SuperOffice.WebApi.Agents.SaleAgent.md)
- [SuperOffice.WebApi.Agents.DocumentAgent](/en/api/reference/webapi/SuperOffice.WebApi.Agents.DocumentAgent.md)
- [SuperOffice.WebApi.Agents.IDocumentAgent](/en/api/reference/webapi/SuperOffice.WebApi.Agents.IDocumentAgent.md)
