From f2432a33a1b9ce530b65ddd1df85d88cd25290fe Mon Sep 17 00:00:00 2001 From: PhyoThandar Date: Thu, 15 Oct 2020 18:48:32 +0630 Subject: [PATCH] update disount --- assets/local/localization_en.json | 7 +- assets/local/localization_mu.json | 11 +- lib/domain/entities/discount.dart | 11 -- lib/pages/discount/discount_editor.dart | 44 ++++-- lib/pages/discount/discount_list.dart | 7 +- lib/pages/discount/model/discount_model.dart | 14 -- lib/pages/invoice/payment_pdf_screen.dart | 3 +- lib/pages/rates/shipment_rates.dart | 35 ++--- lib/pages/rates/shipment_rates_calculate.dart | 136 +++++++++++++----- lib/pages/rates/shipment_rates_edit.dart | 1 - 10 files changed, 163 insertions(+), 106 deletions(-) diff --git a/assets/local/localization_en.json b/assets/local/localization_en.json index 10e00ec..7e9b6b4 100644 --- a/assets/local/localization_en.json +++ b/assets/local/localization_en.json @@ -337,6 +337,7 @@ "rate.cal.title":"Calculate Shipping Cost", "rate.min_weight":"Min weight for free delivery within yangon", "rate.delivery_fee":"Delivery fees", + "rate.total_estimated_amount":"Total estimated amount", "rate.volumetric_ratio":"Volumetric ratio", "rate.custom.form.title":"CUSTOM", "rate.cutom.product_type":"Product type", @@ -345,6 +346,7 @@ "rate.discount.rate":"Discount rate", "rate.custom_duty.title":"Custom Duties", "rate.custom_duty":"Custom Duty", + "rate.cargo.type":"Cargo Types", "rate.discount_by_weight":"Discounts by weight", "rate.discount_by_weight.edit.delete.confirm":"Delete this discount by weight?", "rate.custom.edit.delete.confirm":"Delete this custom duty?", @@ -361,9 +363,9 @@ "Invoices Start ================================================================":"", "invoices.btn": "Invoices", - "invoices.title": "INVOICES", + "invoices.title": "Invoices", "invoices.add":"New invoice", - "invoice.form.title":"INVOICE", + "invoice.form.title":"Invoice", "invoice.payment":"Payment receipt", "invoice.add_box":"Add carton", "invoice.add_package":"Add package", @@ -412,6 +414,7 @@ "discount.name":"Customer name", "discount.amount":"Amount", "discount.status":"Status", + "discount.edit.delete.confirm":"Delete this discount?", "Discount End ================================================================":"", "delivery_addresses Start ================================================================":"", diff --git a/assets/local/localization_mu.json b/assets/local/localization_mu.json index a4aa854..8d73dd6 100644 --- a/assets/local/localization_mu.json +++ b/assets/local/localization_mu.json @@ -336,16 +336,18 @@ "rate.edit.title":"စျေးနှုန်းများပြုပြင်ရန်", "rate.cal.title":"စျေးနှုန်းများတွက်ချက်ရန်", "rate.min_weight":"Min Weight for Free delivery within Yangon", - "rate.delivery_fee":"Delivery fees", + "rate.delivery_fee":"ပို့ဆောင်ခ", + "rate.total_estimated_amount":"စုစုပေါင်းခန့်မှန်းပမာဏ", "rate.volumetric_ratio":"Volumetric Ratio", "rate.custom.form.title":"အကောက်ခွန်", "rate.cutom.product_type":"ကုန်ပစ္စည်းအမျိုးအစား", "rate.custom.fee":"အခကြေးငွေ", "rate.discount.weight":"အလေးချိန်", "rate.discount.rate":"လျှော့စျေးနှုန်း", - "rate.custom_duty.title":"Custom Duties", - "rate.custom_duty":"Custom Duty", - "rate.discount_by_weight":"Discounts by weight", + "rate.custom_duty.title":"အကောက်ခွန်များ", + "rate.custom_duty":"အကောက်ခွန်", + "rate.cargo.type":"ကုန်ပစ္စည်းအမျိုးအစား", + "rate.discount_by_weight":"အထူးလျှော့စျေး", "rate.discount_by_weight.edit.delete.confirm":"Delete this discount by weight?", "rate.custom.edit.delete.confirm":"Delete this custom duty?", "Rate End ================================================================":"", @@ -411,6 +413,7 @@ "discount.name":"ဝယ်ယူသူအမည်", "discount.amount":"ပမာဏ", "discount.status":"အခြေအနေ", + "discount.edit.delete.confirm":"Delete this discount?", "Discount End ================================================================":"", "delivery_addresses Start ================================================================":"", diff --git a/lib/domain/entities/discount.dart b/lib/domain/entities/discount.dart index 2228807..1815a72 100644 --- a/lib/domain/entities/discount.dart +++ b/lib/domain/entities/discount.dart @@ -6,16 +6,6 @@ class Discount { String status; double amount; -<<<<<<< HEAD - Discount( - {this.id, - this.code, - this.customer, - this.amount, - this.status, - this.weight, - this.discountRate}); -======= Discount({ this.id, this.code, @@ -45,5 +35,4 @@ class Discount { status: map['status'], ); } ->>>>>>> upstream/master } diff --git a/lib/pages/discount/discount_editor.dart b/lib/pages/discount/discount_editor.dart index c693d4a..e8d0a15 100644 --- a/lib/pages/discount/discount_editor.dart +++ b/lib/pages/discount/discount_editor.dart @@ -1,9 +1,11 @@ import 'package:fcs/domain/entities/discount.dart'; +import 'package:fcs/domain/entities/user.dart'; import 'package:fcs/helpers/theme.dart'; import 'package:fcs/localization/app_translations.dart'; import 'package:fcs/pages/discount/model/discount_model.dart'; import 'package:fcs/pages/main/util.dart'; import 'package:fcs/pages/rates/model/shipment_rate_model.dart'; +import 'package:fcs/pages/user_search/user_serach.dart'; import 'package:fcs/pages/widgets/display_text.dart'; import 'package:fcs/pages/widgets/input_text.dart'; import 'package:fcs/pages/widgets/progress.dart'; @@ -27,9 +29,10 @@ class _DiscountEditorState extends State { TextEditingController _codeController = new TextEditingController(); TextEditingController _amountController = new TextEditingController(); TextEditingController _statusController = new TextEditingController(); - TextEditingController _customerController = new TextEditingController(); bool _isNew = false; + String customerName = ''; + String customerId = ''; @override void initState() { @@ -39,10 +42,10 @@ class _DiscountEditorState extends State { _codeController.text = _discount.code; _amountController.text = _discount.amount.toString(); _statusController.text = _discount.status; - _customerController.text = 'Ko Nyi'; + customerName = widget.discount.customerName; + customerId = widget.discount.customerId; } else { _isNew = true; - _customerController.text = ''; } } @@ -53,11 +56,6 @@ class _DiscountEditorState extends State { iconData: FontAwesomeIcons.algolia, controller: _codeController); - final nameBox = InputText( - labelTextKey: 'discount.name', - iconData: Feather.user, - controller: _customerController); - final amountBox = InputText( labelTextKey: 'discount.amount', iconData: FontAwesomeIcons.moneyBill, @@ -69,6 +67,25 @@ class _DiscountEditorState extends State { iconData: Icons.av_timer, ); + final customerBox = Row( + children: [ + Expanded( + child: DisplayText( + text: customerName != null ? customerName : "", + labelTextKey: "discount.name", + iconData: Feather.user, + )), + IconButton( + icon: Icon(Icons.search, color: primaryColor), + onPressed: () => searchUser(context, callbackUserSelect: (u) { + setState(() { + customerId = u.id; + customerName = u.name; + }); + })), + ], + ); + return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( @@ -98,8 +115,10 @@ class _DiscountEditorState extends State { child: ListView( children: [ codeBox, - nameBox, amountBox, + SizedBox(height: 7), + customerBox, + SizedBox(height: 7), widget.discount == null ? Container() : Container( @@ -129,7 +148,8 @@ class _DiscountEditorState extends State { Provider.of(context, listen: false); Discount _discount = Discount( code: _codeController.text, - customer: _customerController.text, + customerName: customerName, + customerId: customerId, amount: double.parse(_amountController.text)); if (_isNew) { await discountModel.addDiscount(_discount); @@ -149,7 +169,7 @@ class _DiscountEditorState extends State { _delete() { showConfirmDialog( - context, "cargo_type.edit.delete.confirm", _deleteCargoType); + context, "discount.edit.delete.confirm", _deleteCargoType); } _deleteCargoType() async { @@ -158,7 +178,7 @@ class _DiscountEditorState extends State { }); try { var discountModel = Provider.of(context, listen: false); - await discountModel.deleteCargoType(widget.discount.id); + await discountModel.deleteDiscount(widget.discount); Navigator.pop(context); } catch (e) { showMsgDialog(context, "Error", e.toString()); diff --git a/lib/pages/discount/discount_list.dart b/lib/pages/discount/discount_list.dart index 20dd68e..c21d749 100644 --- a/lib/pages/discount/discount_list.dart +++ b/lib/pages/discount/discount_list.dart @@ -2,6 +2,7 @@ import 'package:fcs/helpers/theme.dart'; import 'package:fcs/localization/app_translations.dart'; import 'package:fcs/pages/discount/model/discount_model.dart'; import 'package:fcs/pages/main/util.dart'; +import 'package:fcs/pages/widgets/local_text.dart'; import 'package:fcs/pages/widgets/progress.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -138,7 +139,11 @@ class _DiscountListState extends State { ); }, icon: Icon(Icons.add), - label: Text(AppTranslations.of(context).text("discount.new")), + label: LocalText( + context, + 'discount.new', + color: Colors.white, + ), backgroundColor: primaryColor, ), ), diff --git a/lib/pages/discount/model/discount_model.dart b/lib/pages/discount/model/discount_model.dart index ef8f9e5..13ce253 100644 --- a/lib/pages/discount/model/discount_model.dart +++ b/lib/pages/discount/model/discount_model.dart @@ -1,11 +1,6 @@ -<<<<<<< HEAD -import 'dart:ffi'; - -======= import 'dart:async'; import 'package:cloud_firestore/cloud_firestore.dart'; ->>>>>>> upstream/master import 'package:fcs/data/services/services.dart'; import 'package:fcs/domain/entities/discount.dart'; import 'package:fcs/pages/main/model/base_model.dart'; @@ -16,11 +11,8 @@ class DiscountModel extends BaseModel { StreamSubscription listener; -<<<<<<< HEAD -======= List discounts = []; ->>>>>>> upstream/master void initUser(user) { super.initUser(user); _load(); @@ -61,10 +53,4 @@ class DiscountModel extends BaseModel { Future deleteDiscount(Discount discount) async { return Services.instance.commonService.deleteDiscount(discount.id); } - - Future addDiscount(Discount discount) {} - - Future updateDiscount(Discount discount) {} - - Future deleteCargoType(String id) {} } diff --git a/lib/pages/invoice/payment_pdf_screen.dart b/lib/pages/invoice/payment_pdf_screen.dart index ce8f1e6..a341664 100644 --- a/lib/pages/invoice/payment_pdf_screen.dart +++ b/lib/pages/invoice/payment_pdf_screen.dart @@ -25,10 +25,9 @@ class _PaymentPDFScreenState extends State @override Widget build(BuildContext context) { - print(' widget.path => ${widget.path}'); - print(' pages => ${pages}'); return Scaffold( appBar: AppBar( + centerTitle: true, backgroundColor: primaryColor, title: LocalText(context, 'invoice.pdf', color: Colors.white, fontSize: 20), diff --git a/lib/pages/rates/shipment_rates.dart b/lib/pages/rates/shipment_rates.dart index 030db89..abffd93 100644 --- a/lib/pages/rates/shipment_rates.dart +++ b/lib/pages/rates/shipment_rates.dart @@ -77,7 +77,7 @@ class _ShipmentRatesState extends State { child: ListView( // crossAxisAlignment: CrossAxisAlignment.center, children: [ - fcsButton(context, "Calculate shipping cost", callack: () { + fcsButton(context, getLocalString(context, "rate.cal.title"), callack: () { Navigator.of(context).push(CupertinoPageRoute( builder: (context) => ShipmentRatesCal())); }), @@ -88,13 +88,10 @@ class _ShipmentRatesState extends State { padding: EdgeInsets.only(left: 25, top: 10, right: 25), child: Row( children: [ - Text( - "Cargo Types", - style: TextStyle( - color: primaryColor, - fontWeight: FontWeight.bold, - fontSize: 15), - ), + LocalText(context, "rate.cargo.type", + color: primaryColor, + fontWeight: FontWeight.bold, + fontSize: 15), Spacer(), IconButton( icon: Icon(Icons.edit, color: primaryColor), @@ -115,13 +112,10 @@ class _ShipmentRatesState extends State { padding: EdgeInsets.only(left: 25, top: 10, right: 25), child: Row( children: [ - Text( - "Discounts by weight", - style: TextStyle( - color: primaryColor, - fontWeight: FontWeight.bold, - fontSize: 15), - ), + LocalText(context, "rate.discount_by_weight", + color: primaryColor, + fontWeight: FontWeight.bold, + fontSize: 15), Spacer(), IconButton( icon: Icon(Icons.edit, color: primaryColor), @@ -152,13 +146,10 @@ class _ShipmentRatesState extends State { padding: EdgeInsets.only(left: 25, top: 10, right: 25), child: Row( children: [ - Text( - "Custom Duties", - style: TextStyle( - color: primaryColor, - fontWeight: FontWeight.bold, - fontSize: 15), - ), + LocalText(context, "rate.custom_duty", + color: primaryColor, + fontWeight: FontWeight.bold, + fontSize: 15), Spacer(), IconButton( icon: Icon(Icons.edit, color: primaryColor), diff --git a/lib/pages/rates/shipment_rates_calculate.dart b/lib/pages/rates/shipment_rates_calculate.dart index f1a1257..e417432 100644 --- a/lib/pages/rates/shipment_rates_calculate.dart +++ b/lib/pages/rates/shipment_rates_calculate.dart @@ -1,9 +1,13 @@ import 'package:fcs/helpers/theme.dart'; import 'package:fcs/localization/app_translations.dart'; import 'package:fcs/pages/rates/model/shipment_rate_model.dart'; +import 'package:fcs/pages/widgets/display_text.dart'; +import 'package:fcs/pages/widgets/length_picker.dart'; import 'package:fcs/pages/widgets/local_text.dart'; +import 'package:fcs/pages/widgets/local_title.dart'; import 'package:fcs/pages/widgets/progress.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter_icons/flutter_icons.dart'; import 'package:provider/provider.dart'; import 'package:flutter/material.dart'; @@ -18,10 +22,26 @@ class ShipmentRatesCal extends StatefulWidget { class _ShipmentRatesCalState extends State { bool _isLoading = false; String cargoType; + TextEditingController _widthController = new TextEditingController(); + TextEditingController _heightController = new TextEditingController(); + TextEditingController _lengthController = new TextEditingController(); + double shipmentWeight = 0; + double volumetricRatio = 0; @override void initState() { super.initState(); + + //for shipment weight + volumetricRatio = Provider.of(context, listen: false) + .rate + .volumetricRatio; + // _lengthController.addListener(_calShipmentWeight); + // _widthController.addListener(_calShipmentWeight); + // _heightController.addListener(_calShipmentWeight); + _lengthController.text = '10'; + _widthController.text = '10'; + _heightController.text = '10'; } @override @@ -33,6 +53,44 @@ class _ShipmentRatesCalState extends State { Widget build(BuildContext context) { var shipmentRateModel = Provider.of(context); + final lengthBox = LengthPicker( + controller: _lengthController, + lableKey: "box.length", + ); + final widthBox = LengthPicker( + controller: _widthController, + lableKey: "box.width", + ); + final heightBox = LengthPicker( + controller: _heightController, + lableKey: "box.height", + ); + + final dimBox = Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Icon(FontAwesome.arrow_circle_right, color: primaryColor), + ), + SizedBox(child: lengthBox, width: 80), + SizedBox(child: widthBox, width: 80), + SizedBox(child: heightBox, width: 80), + ], + ); + + final shipmentWeightBox = DisplayText( + text: shipmentWeight != null ? shipmentWeight.toStringAsFixed(0) : "6", + labelTextKey: "box.shipment_weight", + iconData: MaterialCommunityIcons.weight, + ); + + final actualWeightBox = DisplayText( + text: shipmentWeight != null ? shipmentWeight.toStringAsFixed(0) : "", + labelTextKey: "box.actual_weight", + iconData: MaterialCommunityIcons.weight, + ); + return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( @@ -56,8 +114,8 @@ class _ShipmentRatesCalState extends State { child: Row( children: [ Expanded( - child: - Text('Cargo Type', style: TextStyle(fontSize: 15))), + child: LocalText(context, 'rate.cargo.type', + color: Colors.grey, fontSize: 15)), Container( width: 150.0, child: DropdownButtonFormField( @@ -79,46 +137,50 @@ class _ShipmentRatesCalState extends State { ], ), ), - _row('Width (inches)', "", "", "10", input: true), - _row('Height (inches)', "", "", "10", input: true), - _row('Length (inches)', "", "", "10", input: true), - _row('Actual Weight (pounds)', "", "", "0", input: true), - Container( - padding: EdgeInsets.only(left: 25, top: 15, bottom: 5), - child: Row( - children: [ - Text('Shipment Weight', style: TextStyle(fontSize: 15)), - Spacer(), - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(bottom: 3.0), - child: Text( - '6', - style: - TextStyle(color: primaryColor, fontSize: 16), - ), - ), - Text( - 'pounds', - style: TextStyle(color: Colors.grey, fontSize: 16), - ), - ], - ), - ], - )), + // LocalTitle(textKey: "box.dimension"), + dimBox, + shipmentWeightBox, + actualWeightBox, + SizedBox(height: 50), Center( - child: Text( - "Delivery fee:\$ 5", - style: TextStyle(color: primaryColor, fontSize: 16), + child: Container( + alignment: Alignment.center, + width: 150, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + LocalText(context, "rate.delivery_fee", + color: primaryColor, fontSize: 16), + Text( + ':\$ 5', + style: TextStyle( + color: primaryColor, + fontSize: 16, + ), + ) + ], + ), )), SizedBox(height: 20), Center( - child: Text( - "Total estimated amount:\$ 41", - style: TextStyle(color: primaryColor, fontSize: 20), + child: Container( + width: 220, + alignment: Alignment.center, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + LocalText(context, "rate.total_estimated_amount", + color: primaryColor, fontSize: 16), + Text( + ':\$ 41', + style: TextStyle( + color: primaryColor, + fontSize: 16, + ), + ) + ], + ), )) ], ), diff --git a/lib/pages/rates/shipment_rates_edit.dart b/lib/pages/rates/shipment_rates_edit.dart index 4527f4a..7a6e138 100644 --- a/lib/pages/rates/shipment_rates_edit.dart +++ b/lib/pages/rates/shipment_rates_edit.dart @@ -311,7 +311,6 @@ class _ShipmentRatesEditState extends State { deliveryFee: double.parse(_deliveryFee.text), freeDeliveryWeight: double.parse(_minWeight.text), volumetricRatio: double.parse(_volumetricRatio.text)); - await shipmentRateModel.updateRate(_rate); Navigator.pop(context); } catch (e) {