add shipment in processing, update package, processing and receiving
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import 'package:fcs/domain/entities/fcs_shipment.dart';
|
||||
import 'package:fcs/domain/entities/package.dart';
|
||||
import 'package:fcs/helpers/theme.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/package/model/package_model.dart';
|
||||
import 'package:fcs/pages/widgets/display_text.dart';
|
||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||
import 'package:fcs/pages/widgets/local_app_bar.dart';
|
||||
import 'package:fcs/pages/widgets/local_text.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_controller.dart';
|
||||
import 'package:fcs/pages/widgets/multi_img_file.dart';
|
||||
import 'package:fcs/pages/widgets/progress.dart';
|
||||
@@ -15,13 +16,14 @@ import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../fcs_shipment/model/fcs_shipment_model.dart';
|
||||
import 'processing_edit_editor.dart';
|
||||
|
||||
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||
|
||||
class ProcessingInfo extends StatefulWidget {
|
||||
final Package? package;
|
||||
ProcessingInfo({this.package});
|
||||
final Package package;
|
||||
const ProcessingInfo({super.key, required this.package});
|
||||
|
||||
@override
|
||||
_ProcessingInfoState createState() => _ProcessingInfoState();
|
||||
@@ -32,21 +34,33 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
Package? _package;
|
||||
bool _isLoading = false;
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
FcsShipment? _shipment;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
initPackage(widget.package!);
|
||||
_initPackage(widget.package);
|
||||
_loadShipment();
|
||||
}
|
||||
|
||||
initPackage(Package? package) {
|
||||
if (package == null) return;
|
||||
_initPackage(Package package) {
|
||||
setState(() {
|
||||
_package = package;
|
||||
multiImgController.setImageUrls = package.photoUrls;
|
||||
});
|
||||
}
|
||||
|
||||
_loadShipment() async {
|
||||
if (widget.package.shipmentId == null) return;
|
||||
var s = await context
|
||||
.read<FcsShipmentModel>()
|
||||
.getFcsShipment(widget.package.shipmentId!);
|
||||
_shipment = s;
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
@@ -59,36 +73,7 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
labelTextKey: "processing.tracking.id",
|
||||
iconData: MaterialCommunityIcons.barcode_scan,
|
||||
);
|
||||
var fcsIDBox = DisplayText(
|
||||
text: _package != null ? _package!.fcsID : "",
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
);
|
||||
final phoneNumberBox = DisplayText(
|
||||
text: _package != null ? _package!.phoneNumber : "",
|
||||
labelTextKey: "processing.phone",
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
final customerNameBox = DisplayText(
|
||||
text: _package != null ? _package!.userName : "",
|
||||
labelTextKey: "processing.consignee.name",
|
||||
iconData: Icons.perm_identity,
|
||||
);
|
||||
var senderFcsIDBox = DisplayText(
|
||||
text: _package != null ? _package!.senderFCSID : "",
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
);
|
||||
final senderPhoneNumberBox = DisplayText(
|
||||
text: _package != null ? _package!.senderPhoneNumber : "",
|
||||
labelTextKey: "processing.phone",
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
final senderNameBox = DisplayText(
|
||||
text: _package != null ? _package!.senderName : "",
|
||||
labelTextKey: "processing.shipper.name",
|
||||
iconData: Icons.perm_identity,
|
||||
);
|
||||
|
||||
final marketBox = DisplayText(
|
||||
text: _package != null ? _package!.market : "-",
|
||||
labelTextKey: "processing.market",
|
||||
@@ -110,24 +95,77 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
title: "Receipt File",
|
||||
);
|
||||
|
||||
final consigneeBox = Container(
|
||||
final consigneeBox = userDisplayBox(context,
|
||||
lableKey: "box.consignee.title",
|
||||
icon: MaterialCommunityIcons.account_arrow_left,
|
||||
name: _package?.userName ?? "",
|
||||
fcsID: _package?.fcsID ?? "");
|
||||
|
||||
final senderBox = userDisplayBox(context,
|
||||
lableKey: "box.sender.title",
|
||||
icon: MaterialCommunityIcons.account_arrow_right,
|
||||
name: _package?.senderName ?? "",
|
||||
fcsID: _package?.senderFCSID ?? "");
|
||||
|
||||
final shipmentBox = Padding(
|
||||
padding: const EdgeInsets.only(top: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
fcsIDBox,
|
||||
phoneNumberBox,
|
||||
customerNameBox,
|
||||
],
|
||||
),
|
||||
);
|
||||
final shipperBox = Container(
|
||||
child: Column(
|
||||
children: [
|
||||
senderFcsIDBox,
|
||||
senderPhoneNumberBox,
|
||||
senderNameBox,
|
||||
LocalText(context, "package.shipment.title",
|
||||
color: primaryColor, fontSize: 17, fontWeight: FontWeight.normal),
|
||||
Row(
|
||||
children: [
|
||||
Flexible(
|
||||
child: DisplayText(
|
||||
text: _shipment?.shipmentNumber ?? '',
|
||||
labelTextKey: "FCSshipment.number",
|
||||
iconData: Ionicons.ios_airplane,
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
child: DisplayText(
|
||||
text: _shipment != null
|
||||
? _shipment!.processingDate != null
|
||||
? dateFormatter.format(_shipment!.processingDate!)
|
||||
: ""
|
||||
: "",
|
||||
labelTextKey: "package.processing.date",
|
||||
iconData: Icons.date_range,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Flexible(
|
||||
child: DisplayText(
|
||||
text: _shipment != null
|
||||
? _shipment!.cutoffDate != null
|
||||
? dateFormatter.format(_shipment!.cutoffDate!)
|
||||
: ""
|
||||
: "",
|
||||
labelTextKey: "FCSshipment.cutoff_date",
|
||||
iconData: Icons.date_range,
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
child: DisplayText(
|
||||
text: _shipment != null
|
||||
? _shipment!.etaDate != null
|
||||
? dateFormatter.format(_shipment!.etaDate!)
|
||||
: ""
|
||||
: "",
|
||||
labelTextKey: "FCSshipment.ETA",
|
||||
iconData: Icons.date_range,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
child: Scaffold(
|
||||
@@ -148,31 +186,32 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
]),
|
||||
body: Card(
|
||||
elevation: 0,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: ListView(children: <Widget>[
|
||||
trackingIdBox,
|
||||
Row(
|
||||
children: [
|
||||
Flexible(child: consigneeBox),
|
||||
Flexible(child: shipperBox)
|
||||
],
|
||||
),
|
||||
marketBox,
|
||||
descBox,
|
||||
remarkBox,
|
||||
_package!.photoUrls.length == 0 ? Container() : img,
|
||||
StatusTree(
|
||||
shipmentHistory: _package!.shipmentHistory,
|
||||
currentStatus: _package!.status ?? ""),
|
||||
SizedBox(height: 20)
|
||||
]),
|
||||
)),
|
||||
],
|
||||
),
|
||||
child:
|
||||
ListView(padding: const EdgeInsets.all(10.0), children: <Widget>[
|
||||
trackingIdBox,
|
||||
Row(
|
||||
children: [
|
||||
Flexible(child: consigneeBox),
|
||||
Flexible(
|
||||
child: _package?.senderFCSID != null &&
|
||||
_package?.senderFCSID != ""
|
||||
? senderBox
|
||||
: const SizedBox())
|
||||
],
|
||||
),
|
||||
marketBox,
|
||||
descBox,
|
||||
remarkBox,
|
||||
_package!.photoUrls.isEmpty ? Container() : img,
|
||||
shipmentBox,
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 15),
|
||||
child: StatusTree(
|
||||
shipmentHistory: _package!.shipmentHistory,
|
||||
currentStatus: _package!.status ?? ""),
|
||||
),
|
||||
SizedBox(height: 20)
|
||||
]),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -201,10 +240,11 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
}
|
||||
|
||||
_gotoEditor() async {
|
||||
if (_package == null) return;
|
||||
bool? deleted = await Navigator.push<bool>(
|
||||
context,
|
||||
CupertinoPageRoute(
|
||||
builder: (context) => ProcessingEditEditor(package: _package)));
|
||||
builder: (context) => ProcessingEditEditor(package: _package!)));
|
||||
if (deleted ?? false) {
|
||||
Navigator.pop(context);
|
||||
} else {
|
||||
@@ -212,7 +252,7 @@ class _ProcessingInfoState extends State<ProcessingInfo> {
|
||||
Provider.of<PackageModel>(context, listen: false);
|
||||
Package? p = await packageModel.getPackage(_package!.id!);
|
||||
if (p == null) return;
|
||||
initPackage(p);
|
||||
_initPackage(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user