/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Replenishment {
  
  export class CreateReplenishmentProposal extends EVA.API.RequestMessageGeneric<EVA.Replenishment.CreateReplenishmentProposalResponse> {
    SourceOrganizationUnitIDs : number[]; 
    TargetOrganizationUnitIDs : number[]; 
    StockLabels : EVA.Replenishment.CreateReplenishmentProposalStockLabelDto[]; 
  }
  
  export class CreateReplenishmentProposalResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposal extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalResponse> {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposalResponse extends EVA.API.GetResponse<EVA.Replenishment.ReplenishmentProposalDto> {
  }
  
  export class GetReplenishmentProposalSources extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalSourcesResponse> {
    ID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class GetReplenishmentProposalSourcesResponse extends EVA.API.GetResponse<EVA.Core.OrganizationUnitDto[]> {
  }
  
  export class GetReplenishmentProposalStockLabels extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalStockLabelsResponse> {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposalStockLabelsResponse extends EVA.API.GetResponse<EVA.Replenishment.StockLabelDto[]> {
  }
  
  export class GetReplenishmentProposalTargets extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalTargetsResponse> {
    ID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class GetReplenishmentProposalTargetsResponse extends EVA.API.GetResponse<EVA.Core.OrganizationUnitDto[]> {
  }
  
  export class ListReplenishmentProposalFilters {
    ID? : number; // Int32, nullable
    SourceIDs : number[]; 
    TargetIDs : number[]; 
    CreatedAfter? : string; // DateTime, nullable
    CreatedBefore? : string; // DateTime, nullable
    CreatedByName : string; 
  }
  
  export class ListReplenishmentProposalResultFilters {
    SourceIDs : number[]; 
    TargetIDs : number[]; 
    ProductIDs : number[]; 
    CustomID : string; 
    BrandName : string; 
  }
  
  export class ListReplenishmentProposalResults extends EVA.API.RequestMessageGeneric<EVA.Replenishment.ListReplenishmentProposalResultsResponse> {
    ID : number; // Int32
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Replenishment.ListReplenishmentProposalResultFilters>; 
  }
  
  export class ListReplenishmentProposalResultsResponse extends EVA.API.PagedResultResponse<EVA.Replenishment.ReplenishmentProposalResultListDto> {
  }
  
  export class ListReplenishmentProposals extends EVA.API.RequestMessageGeneric<EVA.Replenishment.ListReplenishmentProposalsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Replenishment.ListReplenishmentProposalFilters>; 
  }
  
  export class ListReplenishmentProposalsResponse extends EVA.API.PagedResultResponse<EVA.Replenishment.ReplenishmentProposalListDto> {
  }
  
  export class ReplenishmentProposalBlobDto {
    TypeID : string; 
    BlobID : string; 
  }
  
  export class ReplenishmentProposalDto {
    ID : number; // Int32
    BlobID : string; 
    Status : EVA.Replenishment.ReplenishmentProposalStatus; 
    CreationTime : string; // DateTime
    Blobs : EVA.Replenishment.ReplenishmentProposalBlobDto[]; 
  }
  
  export class ReplenishmentProposalListDto {
    ID : number; // Int32
    StatusID : number; // Int32
    CreatedByID : number; // Int32
    CreationTime : string; // DateTime
    CreatedBy : EVA.Core.UserDto; 
  }
  
  export class ReplenishmentProposalResultListDto {
    ID : number; // Int32
    ReplenishmentProposalID : number; // Int32
    SourceOrganizationUnitID : number; // Int32
    TargetOrganizationUnitID : number; // Int32
    ProductID : number; // Int32
    StockLabelID? : number; // Int32, nullable
    Quantity : number; // Int32
    SourceOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    TargetOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    Product : EVA.Core.ProductDto; 
    ProductName : string; 
    UnitCost? : number; // Decimal, nullable
    TotalCost? : number; // Decimal, nullable
    CurrencyID : string; 
  }
  
  export enum ReplenishmentProposalStatus {
    New = 0,
    Processing = 1,
    Processed = 2,
    Error = 9,
  }
  
  export class RetryReplenishmentProposal extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean; 
  }
  
  export class CreateReplenishmentProposalStockLabelDto {
    SequenceID : number; // Int32
    StockLabelID : number; // Int32
  }
  
  export class StockLabelDto {
    SequenceID : number; // Int32
    StockLabelID : number; // Int32
  }
  
}