barcode_scanner/lib/backend/schema/stock_picking/stock_picking_model.dart
mandreshope 61345869e1 feat: Implements stock picking data fetching WIP1
Adds a new API call (`getAllStockPiking`) to retrieve stock picking records from the backend.

Refactors stock picking data models:
- Renames models for better clarity (e.g., `StockPickingResponse` to `StockPickingResponseModel`).
- Makes all model fields nullable to handle varying API responses gracefully.
- Introduces specific nested models (`StockPickingCompanyModel`, `StockPickingPartnerModel`, `StockPickingLocationModel`, `StockPickingTypeModel`) for related entities, enhancing type safety and data structure.

Integrates the new API call into `ReceptionPageModel` and introduces distinct loading states (`loadingUser`, `loadingReceptions`) for improved UI feedback.
2025-07-29 11:47:06 +03:00

103 lines
3.7 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);
}