
Introduces an `isDone` extension property for stock picking records to simplify status checks. Enhances the `StockPickingCard` to visually represent the picking's completion status with a distinct icon and color (green for 'done', grey for 'in progress'), improving clarity at a glance. Information row values are now consistently uppercased. Conditionally displays scan-related actions (QuickActionComponent and FloatingActionButton) in the reception details page, making them available only when the picking is not yet completed. This guides users by preventing interactions on finished operations.
107 lines
3.8 KiB
Dart
107 lines
3.8 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'stock_picking_model.freezed.dart';
|
|
part 'stock_picking_model.g.dart';
|
|
|
|
@freezed
|
|
abstract class StockPickingResponseModel with _$StockPickingResponseModel {
|
|
const factory StockPickingResponseModel({
|
|
String? jsonrpc,
|
|
int? id,
|
|
StockPickingResultModel? result,
|
|
}) = _StockPickingResponseModel;
|
|
|
|
factory StockPickingResponseModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingResponseModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingResultModel with _$StockPickingResultModel {
|
|
const factory StockPickingResultModel({
|
|
int? length,
|
|
List<StockPickingRecordModel>? records,
|
|
}) = _StockPickingResultModel;
|
|
|
|
factory StockPickingResultModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingResultModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingRecordModel with _$StockPickingRecordModel {
|
|
const factory StockPickingRecordModel({
|
|
int? id,
|
|
@JsonKey(name: 'company_id') StockPickingCompanyModel? companyId,
|
|
@JsonKey(name: 'priority') String? priority,
|
|
@JsonKey(name: 'name') String? name,
|
|
@JsonKey(name: 'partner_id') StockPickingPartnerModel? partnerId,
|
|
@JsonKey(name: 'location_dest_id')
|
|
StockPickingLocationModel? locationDestId,
|
|
@JsonKey(name: 'location_id') StockPickingLocationModel? locationId,
|
|
@JsonKey(name: 'user_id') dynamic userId,
|
|
@JsonKey(name: 'scheduled_date') String? scheduledDate,
|
|
@JsonKey(name: 'picking_type_code') String? pickingTypeCode,
|
|
@JsonKey(name: 'products_availability_state')
|
|
dynamic productsAvailabilityState,
|
|
@JsonKey(name: 'products_availability') dynamic productsAvailability,
|
|
@JsonKey(name: 'date_deadline') String? dateDeadline,
|
|
@JsonKey(name: 'date_done') dynamic dateDone,
|
|
@JsonKey(name: 'origin') String? origin,
|
|
@JsonKey(name: 'backorder_id') dynamic backorderId,
|
|
@JsonKey(name: 'picking_type_id') StockPickingTypeModel? pickingTypeId,
|
|
@JsonKey(name: 'state') String? state,
|
|
@JsonKey(name: 'activity_exception_decoration')
|
|
dynamic activityExceptionDecoration,
|
|
@JsonKey(name: 'activity_exception_icon') dynamic activityExceptionIcon,
|
|
@JsonKey(name: 'json_popover') dynamic jsonPopover,
|
|
}) = _StockPickingRecordModel;
|
|
|
|
factory StockPickingRecordModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingRecordModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingCompanyModel with _$StockPickingCompanyModel {
|
|
const factory StockPickingCompanyModel({@JsonKey(name: 'id') int? id}) =
|
|
_StockPickingCompanyModel;
|
|
|
|
factory StockPickingCompanyModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingCompanyModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingPartnerModel with _$StockPickingPartnerModel {
|
|
const factory StockPickingPartnerModel({
|
|
int? id,
|
|
@JsonKey(name: 'display_name') String? displayName,
|
|
}) = _StockPickingPartnerModel;
|
|
|
|
factory StockPickingPartnerModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingPartnerModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingLocationModel with _$StockPickingLocationModel {
|
|
const factory StockPickingLocationModel({
|
|
int? id,
|
|
@JsonKey(name: 'complete_name') String? completeName,
|
|
}) = _StockPickingLocationModel;
|
|
|
|
factory StockPickingLocationModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingLocationModelFromJson(json);
|
|
}
|
|
|
|
@freezed
|
|
abstract class StockPickingTypeModel with _$StockPickingTypeModel {
|
|
const factory StockPickingTypeModel({
|
|
int? id,
|
|
@JsonKey(name: 'display_name') String? displayName,
|
|
}) = _StockPickingTypeModel;
|
|
|
|
factory StockPickingTypeModel.fromJson(Map<String, dynamic> json) =>
|
|
_$StockPickingTypeModelFromJson(json);
|
|
}
|
|
|
|
extension StockPickingRecordModelExt on StockPickingRecordModel {
|
|
bool get isDone => state == "done";
|
|
}
|