class BusinessFeature { final int? id; final int? userId; final bool inventoryManagement; final bool salesManagement; final bool multiLocation; final String bomReductionStrategy; final bool stockDeductionOnInvoice; final String barcodeSource; final DateTime? createdAt; BusinessFeature({ this.id, this.userId, this.inventoryManagement = false, this.salesManagement = false, this.multiLocation = false, this.bomReductionStrategy = 'COMPONENTS_ONLY', this.stockDeductionOnInvoice = true, this.barcodeSource = 'SKU', this.createdAt, }); factory BusinessFeature.fromJson(Map json) { return BusinessFeature( id: json['id'], userId: json['userId'], inventoryManagement: json['inventoryManagement'] ?? false, salesManagement: json['salesManagement'] ?? false, multiLocation: json['multiLocation'] ?? false, bomReductionStrategy: json['bomReductionStrategy'] ?? 'COMPONENTS_ONLY', stockDeductionOnInvoice: json['stockDeductionOnInvoice'] ?? true, barcodeSource: json['barcodeSource'] ?? 'SKU', createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt']) : null, ); } Map toJson() { return { 'id': id, 'userId': userId, 'inventoryManagement': inventoryManagement, 'salesManagement': salesManagement, 'multiLocation': multiLocation, 'bomReductionStrategy': bomReductionStrategy, 'stockDeductionOnInvoice': stockDeductionOnInvoice, 'barcodeSource': barcodeSource, }; } BusinessFeature copyWith({ bool? inventoryManagement, bool? salesManagement, bool? multiLocation, String? bomReductionStrategy, bool? stockDeductionOnInvoice, String? barcodeSource, }) { return BusinessFeature( id: id, userId: userId, inventoryManagement: inventoryManagement ?? this.inventoryManagement, salesManagement: salesManagement ?? this.salesManagement, multiLocation: multiLocation ?? this.multiLocation, bomReductionStrategy: bomReductionStrategy ?? this.bomReductionStrategy, stockDeductionOnInvoice: stockDeductionOnInvoice ?? this.stockDeductionOnInvoice, barcodeSource: barcodeSource ?? this.barcodeSource, createdAt: createdAt, ); } }