Closed pradityamsook closed 3 years ago
Hey @pradityamsook can you please paste some code here? so I can get more idea about your issue.
`import 'dart:async'; import 'dart:collection'; import 'dart:convert'; import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:loadmore/loadmore.dart'; import 'package:odoo_api/odoo_api.dart'; import 'package:odoo_api/odoo_api_connector.dart'; import 'package:odoo_api/odoo_user_response.dart'; import 'package:task/pages/packing.dart';
void main() => runApp(MyApp());
final List
List listdata = [];
class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Flutter Hello World'), ); } }
class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title;
@override _MyHomePageState createState() => _MyHomePageState(); }
class Debouncer { final int milliseconds; VoidCallback action; Timer _timer; Debouncer({this.milliseconds}); run(VoidCallback action) { if (null != _timer) { _timer.cancel(); } _timer = Timer(Duration(milliseconds: milliseconds), action); } }
class _MyHomePageState extends State
// _MyHomePageState({Key key, @required this.allData}) : super(key: key);
var count = 10;
bool check = true;
var userName;
// List listdata = [];
List data = [];
List dataType = [];
List dataDeli = [];
List dataTypeINT, dataINT = [];
List
@override void initState() { super.initState(); _getOrders(); // getRecipts(); tabController = new TabController(vsync: this, length: 4); }
@override void dispose() { tabController.dispose(); super.dispose(); }
//------------------------------Progress Odoo data transfer------------------//
var client = OdooClient("http://sfsolutions1.dyndns.org:8020");
Future _getOrders() async {
final domain_receipts = [['picking_type_id', '=', 'Receipts']];
final domain_delivery = [['picking_type_id', '=', 'Delivery Orders']];
final domain_int = [['picking_type_id', '=', 'Internal Transfers']];
var fields = [
"id", "name", "partner_id", "state", "picking_type_id", "product_id",
"location_dest_id", "origin", "location_id", "purchase_number", "product_uom_qty",
"quantity_done", "move_lines", "product_uom",
];
var fieldsStockMove = ["product_uom_qty", "product_id", "id"];
// final Data dataTest = new Data("");
AuthenticateCallback auth = await client.authenticate(
"admin", "admin", "3KWMS_Test");
if (auth.isSuccess) {
final user = auth.getUser();
userName = user.username;
print("${user.username}");
} else {
print("Login failed");
}
OdooResponse update = await client.write("stock.picking", updateData, mapData);
if (!update.hasError()) {
setState(() {
check = false;
var response = update.getResult();
print(response);
});
}
/* Call back data use by method of class name's "OdooResponse" */
OdooResponse result =
await client.searchRead("stock.picking", domain_receipts, fields);
OdooResponse result_deli =
await client.searchRead("stock.picking", domain_delivery, fields);
OdooResponse result_int =
await client.searchRead("stock.picking", domain_int, fields);
OdooResponse stockMove =
await client.searchRead("stock.move", [], fieldsStockMove);
/****************************************************************/
if (!result.hasError()) {
// print("Successful"); setState(() { check = false; var response = result.getResult(); data = response['records']; listdata = data; // print("List data OK"); // print(listdata); print(listdata.length); }); } else { print(result.getError()); }
if (!result_deli.hasError()) {
// print("Successful Stock picking type"); setState((){ check = false; var response = result_deli.getResult(); dataType = response['records']; dataDeli = dataType; // print("Test ${dataType}"); }); } else { print(result_deli.getError()); }
if (!result_int.hasError()) {
// print("Successful Stock picking type"); setState((){ check = false; var response = result_int.getResult(); dataTypeINT = response['records']; dataINT = dataTypeINT; // print("Test ${dataTypeINT}"); }); } else { print(result_int.getError()); }
if (!stockMove.hasError()) {
// print("Successful Stock picking type"); setState((){ check = false; var response = stockMove.getResult(); var dataStock = response['records']; dataStk = dataStock; print("Test ${dataStk[0]["product_id"]}"); }); } else { print(stockMove.getError()); }
for (var i = 0; i <= listdata.length; i++) {
if (listdata[i]['state'].toString() == 'draft') {
listdata[i]['state'] = "Draft";
}
else if (listdata[i]['state'] == 'waiting') {
listdata[i]['state'] = "Waiting Another Operation";
}
else if (listdata[i]['state'] == 'confirmed') {
listdata[i]['state'] = "Waiting";
}
else if (listdata[i]['state'] == 'assigned') {
listdata[i]['state'] = "Ready";
}
else if (listdata[i]['state'] == 'done') {
listdata[i]['state'] = "Done";
}
else {
listdata[i]['state'] = "Cancelled";
}
OPTypeDeli = listdata;
// print(listdata[i]["product_uom"]);
}
for (var i = 0; i <= dataType.length; i++) {
if (dataType[i]['state'].toString() == 'draft') {
dataType[i]['state'] = "Draft";
}
else if (listdata[i]['state'] == 'waiting') {
dataType[i]['state'] = "Waiting Another Operation";
}
else if (listdata[i]['state'] == 'confirmed') {
dataType[i]['state'] = "Waiting";
}
else if (listdata[i]['state'] == 'assigned') {
dataType[i]['state'] = "Ready";
}
else if (listdata[i]['state'] == 'done') {
dataType[i]['state'] = "Done";
}
else {
dataType[i]['state'] = "Cancelled";
}
dataDeli = dataType;
}
}
@override Widget build(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; double screenHeight = MediaQuery.of(context).size.height; return Scaffold( appBar: AppBar( centerTitle: true, title: TextField( style: TextStyle( fontSize: 15.0, color: Colors.black, ), decoration: InputDecoration( contentPadding: EdgeInsets.all(10.0), border: OutlineInputBorder( borderRadius: BorderRadius.circular(5.0), borderSide: BorderSide.none), hintText: "Search..", prefixIcon: Icon( Icons.search, color: Colors.white, ), // suffixIcon: Icon( // Icons.list, // color: Colors.black, // ),
hintStyle: TextStyle(
fontSize: 15.0,
color: Colors.white,
),
),
maxLines: 1,
controller: searchButtonController,
onChanged: (string) {
_debouncer.run(() {
setState(() {
listdata = data
.where((u) => (u['name']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['partner_id']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['state']
.toString()
.toLowerCase()
.contains(string.toLowerCase())))
.toList();
dataDeli = dataType
.where((u) => (u['name']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['partner_id']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['state']
.toString()
.toLowerCase()
.contains(string.toLowerCase())))
.toList();
OPTypeDeli = data
.where((u) => (u['name']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['partner_id']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['state']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['picking_type_id'][1]
.toString()
.toLowerCase()
.contains(string.toLowerCase())
)).toList();
dataINT = dataTypeINT
.where((u) => (u['name']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['partner_id']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['state']
.toString()
.toLowerCase()
.contains(string.toLowerCase()) ||
u['picking_type_id'][1]
.toString()
.toLowerCase()
.contains(string.toLowerCase())
)).toList();
state.where((element) => element.toString().toLowerCase()
.contains(string.toLowerCase()));
});
});
},
),
bottom: new TabBar(
controller: tabController,
tabs: <Tab>[
new Tab(text: "PACKING", icon: Icon(Icons.local_mall)),
new Tab(text: "DELIVERY", icon: Icon(Icons.departure_board)),
new Tab(text: "STOCK TAKE", icon: Icon(Icons.add_shopping_cart)),
new Tab(text: "TRANSFER", icon: Icon(Icons.transfer_within_a_station)),
],
),
flexibleSpace: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: <Color>[Colors.lightBlueAccent, Colors.lightBlueAccent])
),
),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
UserAccountsDrawerHeader(
accountName: Text("User name: ${userName}"),
)
],
),
),
body: check
? Center(
child: CircularProgressIndicator(),
)
: listdata.length == 0
? Center(
child: Text("No Data Found"),
)
: TabBarView(
controller: tabController,
children: <Widget>[
//Packing mode//
Tab(
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: OPTypeDeli.length,
itemBuilder: (context, int index) {
return Container(
margin: EdgeInsets.all(4),
child: Card(
elevation: 2,
child: ListTile(
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Text(
OPTypeDeli[index]['state'].toString(),
style: TextStyle(
fontSize: 10,
color: Colors.black54,
),
),
Row(
children: <Widget>[
Icon(Icons.turned_in_not),
SizedBox(
height: 10,
),
Text(
OPTypeDeli[index]['name'].toString(),
style: TextStyle(
fontSize: 20,
),
),
]
),
SizedBox(
height: 10,
),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PackingRoute(
id: OPTypeDeli[index]["id"],
name: OPTypeDeli[index]["name"].toString(),
partner_id: OPTypeDeli[index]["partner_id"][1],
sourceLocate: OPTypeDeli[index]["location_id"][1].toString(),
destinationLocate: OPTypeDeli[index]["location_dest_id"][1].toString(),
sourceDocs: OPTypeDeli[index]["origin"] is !bool ? OPTypeDeli[index]["origin"].toString() : "N/A",
customerPO: OPTypeDeli[index]["purchase_number"] is !bool ? OPTypeDeli[index]["purchase_number"].toString() : "N/A",
product: OPTypeDeli[index]["product_id"][1].toString(),
productUOMQty: OPTypeDeli[index]["product_uom_qty"].toString(),
)
)
);
},
),
),
);
},
),
),
//*********************Delivery mode***********************//
Tab(
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: dataDeli.length,
itemBuilder: (context, int index) {
return Container(
margin: EdgeInsets.all(4),
child: Card(
elevation: 2,
child: ListTile(
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Text(
dataDeli[index]['state'].toString(),
style: TextStyle(
fontSize: 10,
color: Colors.black54,
),
),
Row(
children: <Widget>[
Icon(Icons.turned_in_not),
SizedBox(
height: 10,
),
Text(
dataDeli[index]['name'].toString(),
style: TextStyle(
fontSize: 20,
),
),
]
),
SizedBox(
height: 10,
),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PackingRoute(
name: dataDeli[index]["name"],
)
),
);
},
),
),
);
},
),
),
//*********************Stock take mode********************//
Tab(
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: listdata.length,
itemBuilder: (context, int index) {
return Container(
margin: EdgeInsets.all(4),
child: Card(
elevation: 2,
child: ListTile(
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Text(
listdata[index]['state'].toString(),
style: TextStyle(
fontSize: 10,
color: Colors.black54,
),
),
Row(
children: <Widget>[
Icon(Icons.turned_in_not),
SizedBox(
height: 10,
),
Text(
listdata[index]['name'].toString(),
style: TextStyle(
fontSize: 20,
),
),
]
),
SizedBox(
height: 10,
),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PackingRoute(
name: listdata[index]['name'],
)
),
);
},
),
),
);
},
),
),
//*********************Transfer mode**********************//
Tab(
child: ListView.builder(
scrollDirection: Axis.vertical,
itemCount: dataINT.length,
itemBuilder: (context, int index) {
return Container(
margin: EdgeInsets.all(4),
child: Card(
elevation: 2,
child: ListTile(
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 5,
),
Text(
dataINT[index]['state'].toString(),
style: TextStyle(
fontSize: 10,
color: Colors.black54,
),
),
Row(
children: <Widget>[
Icon(Icons.turned_in_not),
SizedBox(
height: 10,
),
Text(
dataINT[index]['name'].toString(),
style: TextStyle(
fontSize: 20,
),
),
]
),
SizedBox(
height: 10,
),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PackingRoute(
name: dataINT[index]["name"],
)
),
);
},
),
),
);
},
),
),
],
),
// floatingActionButton: FloatingActionButton( // backgroundColor: Colors.blue, // onPressed: () { // // }, // child: Icon(Icons.add), // ), ); } } `
This my code, Sorry if my code is chaos and bad concept.
try wih the new commit
I use "OdooResponse result_int = await client.searchRead("stock.picking", domain_int, fields);" then I want to get data from lines 's notebookpage. model name of line in notebookpage 's "stock.move"