@springtree/eva-core
Version:
The EVA core typings
510 lines (433 loc) • 11.6 kB
TypeScript
declare module EVA.CRM.Core {
export namespace Errors {
export namespace UserFieldRequirements {
export const RequirementsNotMet = 'UserFieldRequirements:RequirementsNotMet';
}
}
export interface CreateCustomerReturn {
OrderID: number;
TargetOrderID: number;
SessionID?: string;
Lines?: CustomerReturnLine[];
ReturnWithoutProducts: boolean;
}
export interface CustomerReturnLine {
OrderLineID: number;
Quantity: number;
Reason: string;
}
/**
* Creates a return order for a set of products for which there is no original order in EVA.
*/
export interface CreateCustomerReturnWithoutOrder {
TargetOrderID: number;
SessionID?: string;
Lines: ProductReturnLine[];
CustomerID: number;
SoldFromOrganizationUnitID: number;
ShipToOrganizationUnitID: number;
}
export interface ProductReturnLine {
ProductID: number;
/**
* A positive number that indicates the quantity of products returned.
*/
Quantity: number;
Reason: string;
}
export interface GetRefundOptionsForOrder {
OrderID: number;
}
export interface GetRefundOptionsForOrderResponse {
IsRefundAvailable: boolean;
AmountAvailableToRefund?: number;
Reason: string;
Error: EVA.Core.ServiceError;
}
export interface GetReturnOrdersForOrder {
OrderID: number;
}
export interface GetReturnOrdersForOrderResponse {
Orders: ReturnOrder[];
Error: EVA.Core.ServiceError;
}
export interface ReturnOrder {
ID: number;
IsReturnWithoutProducts: boolean;
CreationTime?: string;
TotalAmountInTax?: number;
/**
* Obsolete
*/
ForeignTotalAmountInTax?: number;
CurrencyID: string;
IsPaid: boolean;
IsCompleted: boolean;
IsShipped: boolean;
PaidAmount?: number;
ForeignPaidAmount?: number;
}
export interface ReceiveReturnOrder {
OrderID: number;
Lines: ReturnedLine[];
}
export interface ReturnedLine {
OrderLineID: number;
Remark: string;
Quantity: number;
}
export interface ReceiveReturnOrderResponse {
Messages: EVA.Core.ConfirmShipmentResultMessage[];
Error: EVA.Core.ServiceError;
}
export interface RefundOrder {
OrderID: number;
Reason?: string;
AmountToRefund?: number;
}
export interface ReturnOrderLines {
OrderID: number;
Lines: ReturnLineDto[];
TargetOrderID: number;
SessionID?: string;
ForceCreate: boolean;
ReturnToSameStockOrganizationUnit: boolean;
}
export interface ReturnLineDto {
OrderLineID: number;
ProductID: number;
Quantity: number;
ResourceID: number;
Remark: string;
ReturnStockLabel: number;
}
export interface SetReturnOrderRefundCorrection {
OrderID: number;
NewOpenAmount?: number;
Reason?: string;
}
export interface GetUserInteractionByID {
ID: number;
}
export interface GetUserInteractionByIDResponse {
ID: number;
UserID: number;
User: {
FirstName: string;
LastName: string;
EmailAddress: string;
};
Text: string;
OrderID: number;
UserTaskID: number;
CreationTime?: string;
Error: EVA.Core.ServiceError;
}
export interface CreateUserInteraction {
UserID: number;
Text?: string;
OrderID: number;
UserTaskID: number;
}
export interface CreateUserInteractionResponse {
ID: number;
Error: EVA.Core.ServiceError;
}
export interface UpdateUserInteraction {
ID: number;
UserID: number;
Text?: string;
OrderID: number;
UserTaskID: number;
}
export interface DeleteUserInteraction {
ID: number;
}
export interface ListUserInteractions {
PageConfig?: EVA.Core.PageConfig;
}
export interface ListUserInteractionsResponse {
Result: EVA.Core.PagedResult<UserInteractionDto>;
Error: EVA.Core.ServiceError;
}
export interface UserInteractionDto {
ID: number;
UserID: number;
User: {
FirstName: string;
LastName: string;
EmailAddress: string;
};
CreatedByID: number;
CreatedBy: {
FirstName: string;
LastName: string;
EmailAddress: string;
};
Text: string;
OrderID: number;
UserTaskID: number;
CreationTime?: string;
}
export interface CompleteOrderInterventionTask {
WorkSet?: OrderInterventionWorkSet;
}
export interface OrderInterventionWorkSet {
UserTaskID: number;
OrderInterventionTaskID: number;
OrderID: number;
Reason: string;
Comment: string;
}
export interface ListOrderInterventionTasks {
PageConfig?: EVA.Core.PageConfig;
}
export interface ListOrderInterventionTasksResponse {
Result: EVA.Core.PagedResult<OrderInterventionTaskDto>;
Error: EVA.Core.ServiceError;
}
export interface OrderInterventionTaskDto {
ID: number;
UserTaskID: number;
Reason: string;
Comment: string;
OrderID: number;
CreationTime?: string;
AssignedToUser: string;
}
export interface StartOrderInterventionTask {
UserTaskID: number;
}
export interface StartOrderInterventionTaskResponse {
WorkSet: OrderInterventionWorkSet;
Error: EVA.Core.ServiceError;
}
export interface CompleteCustomerInteractionTask {
WorkSet?: CustomerInteractionWorkSet;
}
export interface CustomerInteractionWorkSet {
UserTaskID: number;
UserTask: EVA.Core.UserTaskDto;
TypeID: number;
TypeName: string;
CustomerID: number;
Customer: CustomerDto;
Priority: CustomerInteractionTaskPriorities;
}
export interface CustomerDto {
FirstName: string;
LastName: string;
EmailAddress: string;
PhoneNumber: string;
}
export const enum CustomerInteractionTaskPriorities {
None = 0,
Low = 1,
Normal = 2,
High = 3,
Immediate = 4
}
export interface GetCustomerInteractionTaskByID {
ID: number;
}
export interface GetCustomerInteractionTaskByIDResponse {
ID: number;
Priority: CustomerInteractionTaskPriorities;
Type: CustomerInteractionTaskTypeDto;
Customer: CustomerInteractionUserDto;
CustomerID: number;
UserTask: CustomerInteractionUserTaskDto;
UserTaskID: number;
Error: EVA.Core.ServiceError;
}
export interface CustomerInteractionTaskTypeDto {
ID: number;
Name: string;
Description: string;
FollowUpTypeID: number;
FollowUpTypeName: string;
}
export interface CustomerInteractionUserDto {
FullName: string;
PhoneNumber: string;
EmailAddress: string;
}
export interface CustomerInteractionUserTaskDto {
StartTime?: string;
DeadLine?: string;
Description: string;
UserID: number;
User: CustomerInteractionUserDto;
OrganizationUnitID: number;
OrganizationUnitName: string;
IsActive: boolean;
IsCompleted: boolean;
}
export interface CreateCustomerInteractionTask {
Priority: CustomerInteractionTaskPriorities;
TypeID: number;
CustomerID: number;
UserTask?: CustomerInteractionUserTaskDto;
}
export interface CreateCustomerInteractionTaskResponse {
ID: number;
Error: EVA.Core.ServiceError;
}
export interface DeleteCustomerInteractionTask {
ID: number;
}
export interface ListCustomerInteractionTasks {
PageConfig?: EVA.Core.PageConfig;
}
export interface ListCustomerInteractionTasksResponse {
Result: EVA.Core.PagedResult<CustomerInteractionTaskDto>;
Error: EVA.Core.ServiceError;
}
export interface CustomerInteractionTaskDto {
ID: number;
Priority: CustomerInteractionTaskPriorities;
Type: CustomerInteractionTaskTypeDto;
Customer: CustomerInteractionUserDto;
CustomerID: number;
UserTask: CustomerInteractionUserTaskDto;
UserTaskID: number;
}
export interface GetCustomerInteractionTaskTypeByID {
ID: number;
}
export interface GetCustomerInteractionTaskTypeByIDResponse {
ID: number;
Name: string;
Description: string;
FollowUpTypeID: number;
FollowUpTypeName: string;
Error: EVA.Core.ServiceError;
}
export interface CreateCustomerInteractionTaskType {
Name?: string;
Description?: string;
FollowUpTypeID: number;
}
export interface CreateCustomerInteractionTaskTypeResponse {
ID: number;
Error: EVA.Core.ServiceError;
}
export interface UpdateCustomerInteractionTaskType {
ID: number;
Description?: string;
FollowUpTypeID: number;
}
export interface DeleteCustomerInteractionTaskType {
ID: number;
}
export interface GetCustomerInteractionTaskTypes {
}
export interface GetCustomerInteractionTaskTypesResponse {
CustomerInteractionTaskTypes: CustomerInteractionTaskTypeDto[];
Error: EVA.Core.ServiceError;
}
export interface DetachFromCustomerInteractionTask {
UserTaskID: number;
}
export interface StartCustomerInteractionTask {
UserTaskID: number;
}
export interface StartCustomerInteractionTaskResponse {
WorkSet: CustomerInteractionWorkSet;
Error: EVA.Core.ServiceError;
}
/**
* Retrieves all applicable UserFields, along with the requirements, possible options *and* meta data.
*/
export interface GetUserFields {
}
export interface GetUserFieldsResponse {
Result: UserFieldDto[];
Error: EVA.Core.ServiceError;
}
export interface UserFieldDto {
ID: number;
Name: string;
Value: any;
Options: UserFieldOptionDto[];
Requirements: UserFieldRequirements;
}
export interface UserFieldOptionDto {
ID: number;
Name: string;
}
export interface UserFieldRequirements {
AllowBlank: boolean;
IsNumeric: boolean;
Minimum: number;
Maximum: number;
}
/**
* Retrieves all applicable UserFields, along with the requirements, possible options *and* set values as set by the specified user (in case of employee) or the current user (in case of customer).
*/
export interface GetUserFieldsForUser {
UserID: number;
}
export interface GetUserFieldsForUserResponse {
Result: UserFieldDto[];
Error: EVA.Core.ServiceError;
}
/**
* Saves a value for a UserField and specified user (in case of employee) or the current user (in case of customer). For UserFields that have Options set, `Value` is an array of selected option IDs - else, it's any value type object.
*/
export interface SetUserField {
UserFieldID: number;
UserID: number;
Value?: any;
}
/**
* Creates a new UserField as text field by default, but you can add `Requirements` to change behavior or add options the user should select using the `CreateUserFieldOption` service.
*/
export interface CreateUserField {
Name: string;
BackendID?: string;
DefaultValue?: string;
Requirements?: UserFieldRequirements;
}
/**
* Updates a UserField.
*/
export interface UpdateUserField {
ID: number;
Name: string;
BackendID?: string;
DefaultValue?: string;
Requirements?: UserFieldRequirements;
}
/**
* Deletes a UserField.
*/
export interface DeleteUserField {
ID: number;
}
/**
* Creates a new UserFieldOption for a UserField.
*/
export interface CreateUserFieldOption {
UserFieldID: number;
Name: string;
BackendID?: string;
Value?: string;
}
/**
* Updates a UserFieldOption.
*/
export interface UpdateUserFieldOption {
ID: number;
UserFieldID: number;
Name: string;
BackendID?: string;
Value?: string;
}
/**
* Deletes a UserFieldOption.
*/
export interface DeleteUserFieldOption {
ID: number;
}
}