| @@ -12,7 +12,8 @@ class AssetDetails extends StatefulWidget { | |||||
| // AssetDetails({Key key}) : super(key: key); | // AssetDetails({Key key}) : super(key: key); | ||||
| int no; | int no; | ||||
| List<String>lokasi; | List<String>lokasi; | ||||
| AssetDetails({this.no,this.lokasi}); | |||||
| String initTag; | |||||
| AssetDetails({this.no,this.lokasi,this.initTag}); | |||||
| @override | @override | ||||
| _AssetDetailsState createState() => _AssetDetailsState(); | _AssetDetailsState createState() => _AssetDetailsState(); | ||||
| } | } | ||||
| @@ -51,6 +52,30 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||||
| util.showToast('Alert', 'Asset data not found'); | util.showToast('Alert', 'Asset data not found'); | ||||
| } | } | ||||
| } | } | ||||
| redirectNonAudit()async { | |||||
| var blob = await DBHelper.database.getBlobbyTag(widget.initTag); | |||||
| print("checkExist $blob"); | |||||
| if(blob!=null){ | |||||
| widget.no = blob.no; | |||||
| await loadAsset(); | |||||
| // var blob = await DBHelper.database.getBlobbyTag(widget.initTag); | |||||
| // var result = await DBHelper.database.searchbyTagNumber(blob.tag_number.toUpperCase()); | |||||
| // if(result['DATA']!=null) { | |||||
| // result['DATA'].blob = blob.blob; | |||||
| // result['DATA'].no = blob.no; | |||||
| // result['DATA'].keterangan = blob.keterangan; | |||||
| // } | |||||
| // _asset = result['DATA']; | |||||
| // ket.text = blob.keterangan; | |||||
| } | |||||
| else{ | |||||
| setState(() { | |||||
| prefixCode.text = widget.initTag.substring(0,6); | |||||
| barCode.text = widget.initTag.substring(6); | |||||
| }); | |||||
| await findAsset(prefixCode.text+barCode.text); | |||||
| } | |||||
| } | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| @@ -66,6 +91,9 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||||
| if(widget.no!=null){ | if(widget.no!=null){ | ||||
| loadAsset(); | loadAsset(); | ||||
| } | } | ||||
| if(widget.initTag!=null){ | |||||
| redirectNonAudit(); | |||||
| } | |||||
| } | } | ||||
| findAsset(query,{silent=false})async{ | findAsset(query,{silent=false})async{ | ||||
| var result = await DBHelper.database.searchbyTagNumber(query.toUpperCase()); | var result = await DBHelper.database.searchbyTagNumber(query.toUpperCase()); | ||||
| @@ -540,6 +568,7 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||||
| if(insert!=null){ | if(insert!=null){ | ||||
| util.showToast("SUCCESS", 'Asset Inserted'); | util.showToast("SUCCESS", 'Asset Inserted'); | ||||
| await DBHelper.database.closeDb(); | await DBHelper.database.closeDb(); | ||||
| if(widget.initTag!=null)Navigator.pop(context); | |||||
| setState(() { | setState(() { | ||||
| barCode.text = ''; | barCode.text = ''; | ||||
| ket.text = ''; | ket.text = ''; | ||||
| @@ -549,12 +578,12 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix | |||||
| } | } | ||||
| } | } | ||||
| else{ | else{ | ||||
| var update = await DBHelper.database.updateAsset(_asset); | |||||
| if(update!=null){ | |||||
| util.showToast("SUCCESS", 'Asset Updated'); | |||||
| await DBHelper.database.closeDb(); | |||||
| Navigator.pop(context); | |||||
| } | |||||
| var update = await DBHelper.database.updateAsset(_asset); | |||||
| if(update!=null){ | |||||
| util.showToast("SUCCESS", 'Asset Updated'); | |||||
| await DBHelper.database.closeDb(); | |||||
| Navigator.pop(context); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| import 'package:assetstock/util/dbHandler.dart'; | import 'package:assetstock/util/dbHandler.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | import 'package:flutter/cupertino.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'asset_details.dart'; | |||||
| import 'util/prefsKey.dart'; | import 'util/prefsKey.dart'; | ||||
| import 'main.dart'; | import 'main.dart'; | ||||
| import 'util/Models.dart'; | import 'util/Models.dart'; | ||||
| @@ -43,6 +44,45 @@ class _AssetLogsState extends State<AssetLogs> { | |||||
| } | } | ||||
| } | } | ||||
| tableRow(idxAsset,index){ | |||||
| return InkWell( | |||||
| onTap: ()async{ | |||||
| var redirect = await showDialog( | |||||
| context: context, | |||||
| builder: (context)=>AlertDialog( | |||||
| title: Text('Pick nonAuditAsset'), | |||||
| content: Text("Select Asset ${idxAsset.tag_number}"), | |||||
| actions: [ | |||||
| FlatButton( | |||||
| onPressed: (){ | |||||
| Navigator.pop(context,true); | |||||
| }, | |||||
| child: Text("Add Asset"), | |||||
| ) | |||||
| ], | |||||
| ) | |||||
| ); | |||||
| if(redirect??false){ | |||||
| await Navigator.push(context, MaterialPageRoute(builder: (context) => new AssetDetails(initTag:idxAsset.tag_number))); | |||||
| // await fetchData(); | |||||
| // scaleCon.text = scale.toStringAsFixed(2); | |||||
| } | |||||
| }, | |||||
| child: Row( | |||||
| children: [ | |||||
| Container(padding: EdgeInsets.only(left: 5.0),width: widthtb*0.035,child: Text('${index+1}')), | |||||
| Container(width: widthtb*0.09,child: Text(idxAsset.tag_number)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.asset_desc)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.pic)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.gedung)), | |||||
| Container(width: widthtb*0.125,child: Text(idxAsset.lantai)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.ruangan)), | |||||
| ], | |||||
| ), | |||||
| ); | |||||
| } | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| fetchData(); | fetchData(); | ||||
| @@ -204,17 +244,7 @@ class _AssetLogsState extends State<AssetLogs> { | |||||
| decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
| border: Border(bottom: BorderSide(width: 0.8)) | border: Border(bottom: BorderSide(width: 0.8)) | ||||
| ), | ), | ||||
| child: Row( | |||||
| children: [ | |||||
| Container(padding: EdgeInsets.only(left: 5.0),width: widthtb*0.035,child: Text('${index+1}')), | |||||
| Container(width: widthtb*0.09,child: Text(idxAsset.tag_number)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.asset_desc)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.pic)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.gedung)), | |||||
| Container(width: widthtb*0.125,child: Text(idxAsset.lantai)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.ruangan)), | |||||
| ], | |||||
| ), | |||||
| child: tableRow(idxAsset,index), | |||||
| ); | ); | ||||
| else return Container(); | else return Container(); | ||||
| } | } | ||||
| @@ -223,17 +253,7 @@ class _AssetLogsState extends State<AssetLogs> { | |||||
| decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
| border: Border(bottom: BorderSide(width: 0.8)) | border: Border(bottom: BorderSide(width: 0.8)) | ||||
| ), | ), | ||||
| child: Row( | |||||
| children: [ | |||||
| Container(padding: EdgeInsets.only(left: 5.0),width: widthtb*0.035,child: Text('${index+1}')), | |||||
| Container(width: widthtb*0.09,child: Text(idxAsset.tag_number)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.asset_desc)), | |||||
| Container(width: widthtb*0.24,child: Text(idxAsset.pic)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.gedung)), | |||||
| Container(width: widthtb*0.125,child: Text(idxAsset.lantai)), | |||||
| Container(width: widthtb*0.13,child: Text(idxAsset.ruangan)), | |||||
| ], | |||||
| ), | |||||
| child: tableRow(idxAsset,index), | |||||
| ); | ); | ||||
| } | } | ||||
| }), | }), | ||||
| @@ -250,13 +270,13 @@ class _AssetLogsState extends State<AssetLogs> { | |||||
| ], | ], | ||||
| ), | ), | ||||
| ), | ), | ||||
| floatingActionButton: FloatingActionButton.extended( | |||||
| onPressed: (){ | |||||
| }, | |||||
| icon: Icon(Icons.sync), | |||||
| label: Text("Sync Approval"), | |||||
| ), | |||||
| // floatingActionButton: FloatingActionButton.extended( | |||||
| // onPressed: (){ | |||||
| // | |||||
| // }, | |||||
| // icon: Icon(Icons.sync), | |||||
| // label: Text("Sync Approval"), | |||||
| // ), | |||||
| ); | ); | ||||
| } | } | ||||
| } | } | ||||
| @@ -323,7 +323,6 @@ class _HomeState extends State<Home> { | |||||
| // var allUnits = await DBHelper.database.getAllAsset(); | // var allUnits = await DBHelper.database.getAllAsset(); | ||||
| // print('${allUnits.length} Units'); | // print('${allUnits.length} Units'); | ||||
| util.showToast('ALERT','Data Downloaded'); | util.showToast('ALERT','Data Downloaded'); | ||||
| await DBHelper.database.setOpenState(); | |||||
| } | } | ||||
| if(value==-1.0){ | if(value==-1.0){ | ||||
| util.showToast('ALERT','Data Error ${trans.error}'); | util.showToast('ALERT','Data Error ${trans.error}'); | ||||
| @@ -383,7 +382,7 @@ class _HomeState extends State<Home> { | |||||
| Directory documentsDirectory = await getApplicationDocumentsDirectory(); | Directory documentsDirectory = await getApplicationDocumentsDirectory(); | ||||
| String path = join(documentsDirectory.path, "assets.db"); | String path = join(documentsDirectory.path, "assets.db"); | ||||
| File db = File(path); | File db = File(path); | ||||
| if(db.existsSync())Navigator.pushNamed(context, '/stocking'); | |||||
| if(db.existsSync()) Navigator.pushNamed(context, '/stocking'); | |||||
| else{ | else{ | ||||
| util.showToast('Alert', 'Please download data master first'); | util.showToast('Alert', 'Please download data master first'); | ||||
| } | } | ||||
| @@ -38,6 +38,7 @@ class DBHelper{ | |||||
| String path = join(documentsDirectory.path, "assets.db"); | String path = join(documentsDirectory.path, "assets.db"); | ||||
| File file = File(path); | File file = File(path); | ||||
| print('Database created, ${file.lengthSync()}'); | print('Database created, ${file.lengthSync()}'); | ||||
| setOpenState(); | |||||
| } | } | ||||
| insertAsset(Asset newAsset) async{ | insertAsset(Asset newAsset) async{ | ||||
| @@ -65,6 +66,19 @@ class DBHelper{ | |||||
| } | } | ||||
| } | } | ||||
| getBlobbyTag(tag) async{ | |||||
| try{ | |||||
| final database = await db; | |||||
| var res = await database.query(tableName.insert,where: "${columnName.tag_number} = ?",whereArgs: [tag]); | |||||
| // var a = await database.rawQuery("select length(${columnName.blob}) / 1024 from ${tableName.insert} where ${columnName.no} = $no"); | |||||
| // print(a); | |||||
| return res.isNotEmpty ? Asset.fromJson(res.first): null; | |||||
| } | |||||
| catch(e){ | |||||
| print(e); | |||||
| return null; | |||||
| } | |||||
| } | |||||
| getBlobbyNo(no) async{ | getBlobbyNo(no) async{ | ||||
| try{ | try{ | ||||