add shipment in processing, update package, processing and receiving
This commit is contained in:
@@ -9,7 +9,6 @@ import 'package:fcs/pages/package/tracking_id_page.dart';
|
||||
import 'package:fcs/pages/main/util.dart';
|
||||
import 'package:fcs/pages/user_search/user_search.dart';
|
||||
import 'package:fcs/pages/widgets/display_text.dart';
|
||||
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||
import 'package:fcs/pages/widgets/input_text.dart';
|
||||
import 'package:fcs/pages/widgets/local_app_bar.dart';
|
||||
import 'package:fcs/pages/widgets/local_text.dart';
|
||||
@@ -22,22 +21,32 @@ import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../domain/entities/fcs_shipment.dart';
|
||||
import '../fcs_shipment/model/fcs_shipment_model.dart';
|
||||
import '../widgets/local_dropdown.dart';
|
||||
|
||||
class ProcessingEditEditor extends StatefulWidget {
|
||||
final Package? package;
|
||||
ProcessingEditEditor({this.package});
|
||||
final Package package;
|
||||
const ProcessingEditEditor({super.key, required this.package});
|
||||
|
||||
@override
|
||||
_ProcessingEditEditorState createState() => _ProcessingEditEditorState();
|
||||
}
|
||||
|
||||
class _ProcessingEditEditorState extends State<ProcessingEditEditor> {
|
||||
TextEditingController _remarkCtl = new TextEditingController();
|
||||
TextEditingController _descCtl = new TextEditingController();
|
||||
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||
|
||||
TextEditingController _remarkCtl = TextEditingController();
|
||||
TextEditingController _descCtl = TextEditingController();
|
||||
|
||||
Package? _package;
|
||||
User? _consignee;
|
||||
User? _sender;
|
||||
bool _isLoading = false;
|
||||
List<FcsShipment> _shipments = [];
|
||||
FcsShipment? _shipment;
|
||||
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -56,57 +65,47 @@ class _ProcessingEditEditorState extends State<ProcessingEditEditor> {
|
||||
fcsID: _package!.senderFCSID ?? "",
|
||||
name: _package!.senderName ?? "",
|
||||
phoneNumber: _package!.senderPhoneNumber ?? "");
|
||||
_loadShipment();
|
||||
}
|
||||
|
||||
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||
_loadShipment() async {
|
||||
var fcsShipments =
|
||||
await context.read<FcsShipmentModel>().getActiveFcsShipments();
|
||||
_shipments = fcsShipments;
|
||||
|
||||
bool isNew = false;
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
var s = FcsShipment(
|
||||
id: widget.package.id, shipmentNumber: widget.package.shipmentNumber);
|
||||
|
||||
if (_shipments.contains(s)) {
|
||||
_shipment = s;
|
||||
} else {
|
||||
_shipment = null;
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var fcsIDBox = Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: DisplayText(
|
||||
text: _consignee!.fcsID,
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
)),
|
||||
IconButton(
|
||||
icon: Icon(Icons.search, color: primaryColor),
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) {
|
||||
setState(() {
|
||||
this._consignee = u;
|
||||
});
|
||||
})),
|
||||
],
|
||||
);
|
||||
final namebox = DisplayText(
|
||||
text: _consignee!.name,
|
||||
labelTextKey: "processing.consignee.name",
|
||||
iconData: Icons.person,
|
||||
);
|
||||
final phoneNumberBox = DisplayText(
|
||||
text: _consignee!.phoneNumber,
|
||||
labelTextKey: "processing.phone",
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
|
||||
final trackingIdBox = DisplayText(
|
||||
text: _package!.trackingID,
|
||||
labelTextKey: "processing.tracking.id",
|
||||
iconData: MaterialCommunityIcons.barcode_scan,
|
||||
);
|
||||
|
||||
final completeProcessingBtn = fcsButton(
|
||||
context,
|
||||
getLocalString(context, 'processing.edit.complete.btn'),
|
||||
callack: _completeProcessing,
|
||||
);
|
||||
|
||||
final descBox = InputText(
|
||||
labelTextKey: 'processing.desc',
|
||||
iconData: MaterialCommunityIcons.message_text_outline,
|
||||
controller: _descCtl);
|
||||
|
||||
final remarkBox = InputText(
|
||||
labelTextKey: 'processing.remark',
|
||||
iconData: Entypo.new_message,
|
||||
@@ -118,57 +117,40 @@ class _ProcessingEditEditorState extends State<ProcessingEditEditor> {
|
||||
title: "Receipt File",
|
||||
);
|
||||
|
||||
final consigneeBox = Container(
|
||||
child: Column(
|
||||
children: [
|
||||
fcsIDBox,
|
||||
phoneNumberBox,
|
||||
namebox,
|
||||
],
|
||||
),
|
||||
);
|
||||
final consigneeBox = userSearchBox(context,
|
||||
lableKey: 'box.consignee.title',
|
||||
icon: MaterialCommunityIcons.account_arrow_left,
|
||||
user: _consignee,
|
||||
onSearch: () => searchUser(context, onUserSelect: (u) {
|
||||
setState(() {
|
||||
_consignee = u;
|
||||
});
|
||||
}, popPage: true));
|
||||
|
||||
var shipperIDBox = Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: DisplayText(
|
||||
text: _sender != null ? _sender!.fcsID : "",
|
||||
labelTextKey: "processing.fcs.id",
|
||||
icon: FcsIDIcon(),
|
||||
)),
|
||||
IconButton(
|
||||
icon: Icon(Icons.search, color: primaryColor),
|
||||
onPressed: () => searchUser(context, onUserSelect: (u) {
|
||||
setState(() {
|
||||
this._sender = u;
|
||||
});
|
||||
}, popPage: true)),
|
||||
],
|
||||
);
|
||||
final senderBox = userSearchBox(context,
|
||||
lableKey: 'box.sender.title',
|
||||
icon: MaterialCommunityIcons.account_arrow_right,
|
||||
user: _sender,
|
||||
onSearch: () => searchUser(context, onUserSelect: (u) {
|
||||
setState(() {
|
||||
_sender = u;
|
||||
});
|
||||
}, popPage: true));
|
||||
|
||||
final shipperPhoneNumberBox = DisplayText(
|
||||
text: _sender != null ? _sender!.phoneNumber : "",
|
||||
labelTextKey: "processing.phone",
|
||||
maxLines: 2,
|
||||
iconData: Icons.phone,
|
||||
);
|
||||
|
||||
final shipperNamebox = DisplayText(
|
||||
text: _sender != null ? _sender!.name : "",
|
||||
labelTextKey: "processing.shipper.name",
|
||||
maxLines: 2,
|
||||
iconData: Icons.person,
|
||||
);
|
||||
|
||||
final shipperBox = Container(
|
||||
child: Column(
|
||||
children: [
|
||||
shipperIDBox,
|
||||
shipperPhoneNumberBox,
|
||||
shipperNamebox,
|
||||
],
|
||||
),
|
||||
);
|
||||
final fcsShipmentsBox = Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 15),
|
||||
child: LocalDropdown<FcsShipment>(
|
||||
callback: (v) {
|
||||
setState(() {
|
||||
_shipment = v;
|
||||
});
|
||||
},
|
||||
labelKey: "box.shipment",
|
||||
iconData: Ionicons.ios_airplane,
|
||||
display: (u) => u.shipmentNumber,
|
||||
selectedValue: _shipment,
|
||||
values: _shipments,
|
||||
));
|
||||
|
||||
return LocalProgress(
|
||||
inAsyncCall: _isLoading,
|
||||
@@ -189,24 +171,26 @@ class _ProcessingEditEditorState extends State<ProcessingEditEditor> {
|
||||
},
|
||||
),
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
padding: const EdgeInsets.only(left: 12.0, right: 12, top: 10),
|
||||
child: ListView(
|
||||
children: [
|
||||
trackingIdBox,
|
||||
Row(
|
||||
children: [
|
||||
Flexible(child: consigneeBox),
|
||||
Flexible(child: shipperBox)
|
||||
Flexible(child: senderBox)
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
fcsShipmentsBox,
|
||||
marketDropdown(),
|
||||
descBox,
|
||||
remarkBox,
|
||||
const SizedBox(height: 10),
|
||||
img,
|
||||
SizedBox(height: 20),
|
||||
completeProcessingBtn,
|
||||
SizedBox(
|
||||
height: 20,
|
||||
)
|
||||
SizedBox(height: 30)
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -319,23 +303,16 @@ class _ProcessingEditEditorState extends State<ProcessingEditEditor> {
|
||||
}
|
||||
|
||||
isDataChanged() {
|
||||
if (isNew) {
|
||||
return _consignee!.fcsID != "" ||
|
||||
selectedMarket != null ||
|
||||
_descCtl.text != "" ||
|
||||
_remarkCtl.text != "" ||
|
||||
multiImgController.getAddedFile.isNotEmpty;
|
||||
} else {
|
||||
var _package = Package(
|
||||
fcsID: _consignee!.fcsID,
|
||||
senderFCSID: _sender!.fcsID,
|
||||
market: selectedMarket,
|
||||
desc: _descCtl.text,
|
||||
remark: _remarkCtl.text,
|
||||
photoUrls: widget.package!.photoUrls);
|
||||
return widget.package!.isChangedForEditProcessing(_package) ||
|
||||
multiImgController.getAddedFile.isNotEmpty ||
|
||||
multiImgController.getDeletedUrl.isNotEmpty;
|
||||
}
|
||||
var package = Package(
|
||||
fcsID: _consignee!.fcsID,
|
||||
senderFCSID: _sender!.fcsID,
|
||||
market: selectedMarket,
|
||||
desc: _descCtl.text,
|
||||
remark: _remarkCtl.text,
|
||||
photoUrls: widget.package.photoUrls,
|
||||
shipmentId: _shipment?.id);
|
||||
return widget.package.isChangedForEditProcessing(package) ||
|
||||
multiImgController.getAddedFile.isNotEmpty ||
|
||||
multiImgController.getDeletedUrl.isNotEmpty;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user