update disount

This commit is contained in:
PhyoThandar
2020-10-15 18:48:32 +06:30
parent 50f7673e85
commit f2432a33a1
10 changed files with 163 additions and 106 deletions

View File

@@ -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
}

View File

@@ -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<DiscountEditor> {
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<DiscountEditor> {
_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<DiscountEditor> {
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<DiscountEditor> {
iconData: Icons.av_timer,
);
final customerBox = Row(
children: <Widget>[
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<DiscountEditor> {
child: ListView(
children: <Widget>[
codeBox,
nameBox,
amountBox,
SizedBox(height: 7),
customerBox,
SizedBox(height: 7),
widget.discount == null
? Container()
: Container(
@@ -129,7 +148,8 @@ class _DiscountEditorState extends State<DiscountEditor> {
Provider.of<DiscountModel>(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<DiscountEditor> {
_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<DiscountEditor> {
});
try {
var discountModel = Provider.of<DiscountModel>(context, listen: false);
await discountModel.deleteCargoType(widget.discount.id);
await discountModel.deleteDiscount(widget.discount);
Navigator.pop(context);
} catch (e) {
showMsgDialog(context, "Error", e.toString());

View File

@@ -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<DiscountList> {
);
},
icon: Icon(Icons.add),
label: Text(AppTranslations.of(context).text("discount.new")),
label: LocalText(
context,
'discount.new',
color: Colors.white,
),
backgroundColor: primaryColor,
),
),

View File

@@ -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<QuerySnapshot> listener;
<<<<<<< HEAD
=======
List<Discount> discounts = [];
>>>>>>> upstream/master
void initUser(user) {
super.initUser(user);
_load();
@@ -61,10 +53,4 @@ class DiscountModel extends BaseModel {
Future<void> deleteDiscount(Discount discount) async {
return Services.instance.commonService.deleteDiscount(discount.id);
}
Future<void> addDiscount(Discount discount) {}
Future<void> updateDiscount(Discount discount) {}
Future<void> deleteCargoType(String id) {}
}

View File

@@ -25,10 +25,9 @@ class _PaymentPDFScreenState extends State<PaymentPDFScreen>
@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),

View File

@@ -77,7 +77,7 @@ class _ShipmentRatesState extends State<ShipmentRates> {
child: ListView(
// crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
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<ShipmentRates> {
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<ShipmentRates> {
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<ShipmentRates> {
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),

View File

@@ -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<ShipmentRatesCal> {
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<ShipmentRateModel>(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<ShipmentRatesCal> {
Widget build(BuildContext context) {
var shipmentRateModel = Provider.of<ShipmentRateModel>(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<ShipmentRatesCal> {
child: Row(
children: <Widget>[
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<ShipmentRatesCal> {
],
),
),
_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: <Widget>[
Text('Shipment Weight', style: TextStyle(fontSize: 15)),
Spacer(),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
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,
),
)
],
),
))
],
),

View File

@@ -311,7 +311,6 @@ class _ShipmentRatesEditState extends State<ShipmentRatesEdit> {
deliveryFee: double.parse(_deliveryFee.text),
freeDeliveryWeight: double.parse(_minWeight.text),
volumetricRatio: double.parse(_volumetricRatio.text));
await shipmentRateModel.updateRate(_rate);
Navigator.pop(context);
} catch (e) {