/* Options: Date: 2026-05-19 10:51:39 Version: 8.22 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://dev-api-booster.richemont.com //GlobalNamespace: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: GetSaleDetails.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ import 'package:servicestack/servicestack.dart'; class ProductCategory implements IConvertible { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") String? brandCategoryId; /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID", IsRequired=true) String? grandCategoryId; /** * Master Category ID */ // @ApiMember(Description="Master Category ID") String? masterCategoryId; /** * Category ID */ // @ApiMember(Description="Category ID") String? categoryId; /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") String? subCategoryId; ProductCategory({this.brandCategoryId,this.grandCategoryId,this.masterCategoryId,this.categoryId,this.subCategoryId}); ProductCategory.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brandCategoryId = json['brandCategoryId']; grandCategoryId = json['grandCategoryId']; masterCategoryId = json['masterCategoryId']; categoryId = json['categoryId']; subCategoryId = json['subCategoryId']; return this; } Map toJson() => { 'brandCategoryId': brandCategoryId, 'grandCategoryId': grandCategoryId, 'masterCategoryId': masterCategoryId, 'categoryId': categoryId, 'subCategoryId': subCategoryId }; getTypeName() => "ProductCategory"; TypeContext? context = _ctx; } abstract class IPagedRequest { int? page; int? items; bool? noCount; String? sortBy; } class ProductCategory implements IConvertible { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") String? brandCategoryId; /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID") String? grandCategoryId; /** * Master Category ID */ // @ApiMember(Description="Master Category ID") String? masterCategoryId; /** * Category ID */ // @ApiMember(Description="Category ID") String? categoryId; /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") String? subCategoryId; ProductCategory({this.brandCategoryId,this.grandCategoryId,this.masterCategoryId,this.categoryId,this.subCategoryId}); ProductCategory.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brandCategoryId = json['brandCategoryId']; grandCategoryId = json['grandCategoryId']; masterCategoryId = json['masterCategoryId']; categoryId = json['categoryId']; subCategoryId = json['subCategoryId']; return this; } Map toJson() => { 'brandCategoryId': brandCategoryId, 'grandCategoryId': grandCategoryId, 'masterCategoryId': masterCategoryId, 'categoryId': categoryId, 'subCategoryId': subCategoryId }; getTypeName() => "ProductCategory"; TypeContext? context = _ctx; } class SaleDetail implements IConvertible { /** * Unique Identifier of the Sell-out created in Booster */ // @ApiMember(Description="Unique Identifier of the Sell-out created in Booster", IsRequired=true) int? saleId; /** * Unique Identifier of the Sell-out created in Booster */ // @ApiMember(Description="Unique Identifier of the Sell-out created in Booster", IsRequired=true) int? saleDetailId; /** * Booster Customer Id */ // @ApiMember(Description="Booster Customer Id") int? boosterCustomerId; /** * Richemont POS code */ // @ApiMember(Description="Richemont POS code", IsRequired=true) String? posCode; /** * Receipt or Invoice Number */ // @ApiMember(Description="Receipt or Invoice Number") String? documentNumber; /** * Date of the Sell-out */ // @ApiMember(Description="Date of the Sell-out", IsRequired=true) String? documentDate; /** * Position Number */ // @ApiMember(Description="Position Number") int? documentLineNumber; /** * Richemont Reference Code of the item */ // @ApiMember(Description="Richemont Reference Code of the item", IsRequired=true) String? articleCode; /** * Serial Number of the item */ // @ApiMember(Description="Serial Number of the item") String? serialNumber; /** * Use positive for standard Sell-out and negative quantity for return */ // @ApiMember(Description="Use positive for standard Sell-out and negative quantity for return", IsRequired=true) int? quantity; /** * Retail Price */ // @ApiMember(Description="Retail Price") double? retailPrice; /** * Sold Price */ // @ApiMember(Description="Sold Price") double? unitPrice; /** * Currency of the sold price */ // @ApiMember(Description="Currency of the sold price") String? currencyCode; /** * CCP Status Code */ // @ApiMember(Description="CCP Status Code") String? ccpStatusCode; /** * CCP Status Description */ // @ApiMember(Description="CCP Status Description") String? ccpStatusDescription; /** * CCP Retrigger enable */ // @ApiMember(Description="CCP Retrigger enable") bool? retriggerEnabled; /** * Warranty Extention Status */ // @ApiMember(Description="Warranty Extention Status") int? warrantyExtentionStatusId; /** * Warranty Extention Status */ // @ApiMember(Description="Warranty Extention Status") String? warrantyExtentionStatusDescription; /** * Sale Representative Email */ // @ApiMember(Description="Sale Representative Email") List? saleRepresentativeEmails; /** * Promoter Type IDs, possible values are: DAI, FIT, GRT */ // @ApiMember(Description="Promoter Type IDs, possible values are: DAI, FIT, GRT") String? promoterTypeId; /** * Sellout Type, possible values are: 'standard' or 'consigned' */ // @ApiMember(Description="Sellout Type, possible values are: 'standard' or 'consigned'", IsRequired=true) String? type; /** * Original Sale Detail Id */ // @ApiMember(Description="Original Sale Detail Id") int? originalSaleDetailId; SaleDetail({this.saleId,this.saleDetailId,this.boosterCustomerId,this.posCode,this.documentNumber,this.documentDate,this.documentLineNumber,this.articleCode,this.serialNumber,this.quantity,this.retailPrice,this.unitPrice,this.currencyCode,this.ccpStatusCode,this.ccpStatusDescription,this.retriggerEnabled,this.warrantyExtentionStatusId,this.warrantyExtentionStatusDescription,this.saleRepresentativeEmails,this.promoterTypeId,this.type,this.originalSaleDetailId}); SaleDetail.fromJson(Map json) { fromMap(json); } fromMap(Map json) { saleId = json['saleId']; saleDetailId = json['saleDetailId']; boosterCustomerId = json['boosterCustomerId']; posCode = json['posCode']; documentNumber = json['documentNumber']; documentDate = json['documentDate']; documentLineNumber = json['documentLineNumber']; articleCode = json['articleCode']; serialNumber = json['serialNumber']; quantity = json['quantity']; retailPrice = JsonConverters.toDouble(json['retailPrice']); unitPrice = JsonConverters.toDouble(json['unitPrice']); currencyCode = json['currencyCode']; ccpStatusCode = json['ccpStatusCode']; ccpStatusDescription = json['ccpStatusDescription']; retriggerEnabled = json['retriggerEnabled']; warrantyExtentionStatusId = json['warrantyExtentionStatusId']; warrantyExtentionStatusDescription = json['warrantyExtentionStatusDescription']; saleRepresentativeEmails = JsonConverters.fromJson(json['saleRepresentativeEmails'],'List',context!); promoterTypeId = json['promoterTypeId']; type = json['type']; originalSaleDetailId = json['originalSaleDetailId']; return this; } Map toJson() => { 'saleId': saleId, 'saleDetailId': saleDetailId, 'boosterCustomerId': boosterCustomerId, 'posCode': posCode, 'documentNumber': documentNumber, 'documentDate': documentDate, 'documentLineNumber': documentLineNumber, 'articleCode': articleCode, 'serialNumber': serialNumber, 'quantity': quantity, 'retailPrice': retailPrice, 'unitPrice': unitPrice, 'currencyCode': currencyCode, 'ccpStatusCode': ccpStatusCode, 'ccpStatusDescription': ccpStatusDescription, 'retriggerEnabled': retriggerEnabled, 'warrantyExtentionStatusId': warrantyExtentionStatusId, 'warrantyExtentionStatusDescription': warrantyExtentionStatusDescription, 'saleRepresentativeEmails': JsonConverters.toJson(saleRepresentativeEmails,'List',context!), 'promoterTypeId': promoterTypeId, 'type': type, 'originalSaleDetailId': originalSaleDetailId }; getTypeName() => "SaleDetail"; TypeContext? context = _ctx; } class GetSaleDetailsResponse implements IConvertible { /** * Index of the result set returnedr */ // @ApiMember(Description="Index of the result set returnedr", IsRequired=true) int? page; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned", IsRequired=true) int? items; /** * Total amount of pages / result sets */ // @ApiMember(Description="Total amount of pages / result sets", IsRequired=true) int? totalPages; /** * Total amount of results */ // @ApiMember(Description="Total amount of results", IsRequired=true) int? totalResults; /** * List of Sale Details */ // @ApiMember(Description="List of Sale Details", IsRequired=true) List? elements; GetSaleDetailsResponse({this.page,this.items,this.totalPages,this.totalResults,this.elements}); GetSaleDetailsResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { page = json['page']; items = json['items']; totalPages = json['totalPages']; totalResults = json['totalResults']; elements = JsonConverters.fromJson(json['elements'],'List',context!); return this; } Map toJson() => { 'page': page, 'items': items, 'totalPages': totalPages, 'totalResults': totalResults, 'elements': JsonConverters.toJson(elements,'List',context!) }; getTypeName() => "GetSaleDetailsResponse"; TypeContext? context = _ctx; } // @Route("/warranty", "GET") class GetSaleDetails implements IReturn, IPagedRequest, IConvertible, IGet { /** * Richemont Brand ID */ // @ApiMember(Description="Richemont Brand ID", IsRequired=true) String? brand; /** * Richemont POS code */ // @ApiMember(Description="Richemont POS code", IsRequired=true) String? posCode; /** * Receipt or Invoice Number */ // @ApiMember(Description="Receipt or Invoice Number") String? documentNumber; /** * Date of the Sell-out Start */ // @ApiMember(Description="Date of the Sell-out Start ") DateTime? documentDateFrom; /** * Date of the Sell-out End */ // @ApiMember(Description="Date of the Sell-out End") DateTime? documentDateTo; /** * Richemont Reference Code of the item */ // @ApiMember(Description="Richemont Reference Code of the item") String? articleCode; /** * Serial Number of the item */ // @ApiMember(Description="Serial Number of the item") String? serialNumber; /** * Unique Identifier of the Sell-out created in Booster */ // @ApiMember(Description="Unique Identifier of the Sell-out created in Booster") int? saleDetailId; /** * Unique Identifier of the Sell-out created in Booster */ // @ApiMember(Description="Unique Identifier of the Sell-out created in Booster") int? saleId; /** * Booster Customer Id */ // @ApiMember(Description="Booster Customer Id") int? boosterCustomerId; /** * Possible warranty extention status IDs, 1 (Activated), 2 (Requested), 3 (Refused), 4 (Error), 5 (Action Required), 6 (Pending) */ // @ApiMember(Description="Possible warranty extention status IDs, 1 (Activated), 2 (Requested), 3 (Refused), 4 (Error), 5 (Action Required), 6 (Pending)") List? warrantyExtensionStatusIds; /** * Product Categories */ // @ApiMember(Description="Product Categories") List? productCategories; /** * Index of the result set returned */ // @ApiMember(Description="Index of the result set returned", IsRequired=true) int? page; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned", IsRequired=true) int? items; /** * Omit precise record count - save on performance */ // @ApiMember(Description="Omit precise record count - save on performance") bool? noCount; /** * Sort Expression, Possible values: 'SaleDetailIdDESC', 'DocumentDate'. */ // @ApiMember(Description="Sort Expression, Possible values: 'SaleDetailIdDESC', 'DocumentDate'.") String? sortBy; GetSaleDetails({this.brand,this.posCode,this.documentNumber,this.documentDateFrom,this.documentDateTo,this.articleCode,this.serialNumber,this.saleDetailId,this.saleId,this.boosterCustomerId,this.warrantyExtensionStatusIds,this.productCategories,this.page,this.items,this.noCount,this.sortBy}); GetSaleDetails.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brand = json['brand']; posCode = json['posCode']; documentNumber = json['documentNumber']; documentDateFrom = JsonConverters.fromJson(json['documentDateFrom'],'DateTime',context!); documentDateTo = JsonConverters.fromJson(json['documentDateTo'],'DateTime',context!); articleCode = json['articleCode']; serialNumber = json['serialNumber']; saleDetailId = json['saleDetailId']; saleId = json['saleId']; boosterCustomerId = json['boosterCustomerId']; warrantyExtensionStatusIds = JsonConverters.fromJson(json['warrantyExtensionStatusIds'],'List',context!); productCategories = JsonConverters.fromJson(json['productCategories'],'List',context!); page = json['page']; items = json['items']; noCount = json['noCount']; sortBy = json['sortBy']; return this; } Map toJson() => { 'brand': brand, 'posCode': posCode, 'documentNumber': documentNumber, 'documentDateFrom': JsonConverters.toJson(documentDateFrom,'DateTime',context!), 'documentDateTo': JsonConverters.toJson(documentDateTo,'DateTime',context!), 'articleCode': articleCode, 'serialNumber': serialNumber, 'saleDetailId': saleDetailId, 'saleId': saleId, 'boosterCustomerId': boosterCustomerId, 'warrantyExtensionStatusIds': JsonConverters.toJson(warrantyExtensionStatusIds,'List',context!), 'productCategories': JsonConverters.toJson(productCategories,'List',context!), 'page': page, 'items': items, 'noCount': noCount, 'sortBy': sortBy }; createResponse() => GetSaleDetailsResponse(); getResponseTypeName() => "GetSaleDetailsResponse"; getTypeName() => "GetSaleDetails"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'dev_api_booster.richemont.com', types: { 'ProductCategory': TypeInfo(TypeOf.Class, create:() => ProductCategory()), 'IPagedRequest': TypeInfo(TypeOf.Interface), 'SaleDetail': TypeInfo(TypeOf.Class, create:() => SaleDetail()), 'GetSaleDetailsResponse': TypeInfo(TypeOf.Class, create:() => GetSaleDetailsResponse()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'GetSaleDetails': TypeInfo(TypeOf.Class, create:() => GetSaleDetails()), 'List': TypeInfo(TypeOf.Class, create:() => []), });