/* Options: Date: 2026-08-27 08:02:20 Version: 10.08 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 = 0; int items = 0; 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 = 0; /** * Unique Identifier of the Sell-out created in Booster */ // @ApiMember(Description="Unique Identifier of the Sell-out created in Booster", IsRequired=true) int saleDetailId = 0; /** * 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 = 0; /** * 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; /** * Sale Reason Id: 'NEW' or 'CPO' */ // @ApiMember(Description="Sale Reason Id: 'NEW' or 'CPO'", IsRequired=true) String saleReasonId = ""; SaleDetail({this.saleId=0,this.saleDetailId=0,this.boosterCustomerId,this.posCode="",this.documentNumber,this.documentDate="",this.documentLineNumber,this.articleCode="",this.serialNumber,this.quantity=0,this.retailPrice,this.unitPrice,this.currencyCode,this.ccpStatusCode,this.ccpStatusDescription,this.retriggerEnabled,this.warrantyExtentionStatusId,this.warrantyExtentionStatusDescription,this.saleRepresentativeEmails,this.promoterTypeId,this.type="",this.originalSaleDetailId,this.saleReasonId=""}); SaleDetail.fromJson(Map json) { fromMap(json); } fromMap(Map json) { saleId = json['saleId'] ?? 0; saleDetailId = json['saleDetailId'] ?? 0; boosterCustomerId = json['boosterCustomerId']; posCode = json['posCode'] ?? ""; documentNumber = json['documentNumber']; documentDate = json['documentDate'] ?? ""; documentLineNumber = json['documentLineNumber']; articleCode = json['articleCode'] ?? ""; serialNumber = json['serialNumber']; quantity = json['quantity'] ?? 0; 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']; saleReasonId = json['saleReasonId'] ?? ""; 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, 'saleReasonId': saleReasonId }; 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 = 0; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned", IsRequired=true) int items = 0; /** * Total amount of pages / result sets */ // @ApiMember(Description="Total amount of pages / result sets", IsRequired=true) int totalPages = 0; /** * Total amount of results */ // @ApiMember(Description="Total amount of results", IsRequired=true) int totalResults = 0; /** * List of Sale Details */ // @ApiMember(Description="List of Sale Details", IsRequired=true) List? elements; GetSaleDetailsResponse({this.page=0,this.items=0,this.totalPages=0,this.totalResults=0,this.elements}); GetSaleDetailsResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { page = json['page'] ?? 0; items = json['items'] ?? 0; totalPages = json['totalPages'] ?? 0; totalResults = json['totalResults'] ?? 0; 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 = 0; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned", IsRequired=true) int items = 0; /** * 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=0,this.items=0,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'] ?? 0; items = json['items'] ?? 0; 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:() => []), });