/** Defined colors for Evergreen Theme
*/
public static final int green=0x7f050009;
+ public static final int red=0x7f05000e;
public static final int title_background=0x7f050000;
public static final int title_separator=0x7f050008;
public static final int title_text=0x7f050001;
public static final int account_btn_check_out=0x7f090007;
public static final int account_btn_fines=0x7f090009;
public static final int account_btn_holds=0x7f090008;
- public static final int action_bar=0x7f090014;
- public static final int back_button=0x7f090015;
- public static final int cancel_hold=0x7f090025;
- public static final int cancel_hold_button=0x7f090016;
+ public static final int action_bar=0x7f090018;
+ public static final int back_button=0x7f090019;
+ public static final int cancel_hold=0x7f090029;
+ public static final int cancel_hold_button=0x7f09001a;
public static final int checkout_due_date=0x7f090005;
public static final int checkout_items_list=0x7f090001;
public static final int checkout_record_author=0x7f090003;
public static final int checkout_record_title=0x7f090002;
public static final int checkout_renewals_remaining=0x7f090004;
- public static final int chose_organisation=0x7f09003a;
+ public static final int chose_organisation=0x7f09003e;
public static final int fined_balance_owed=0x7f090010;
+ public static final int fines_author=0x7f090014;
+ public static final int fines_balance_owed=0x7f090013;
public static final int fines_overdue_materials_list=0x7f090011;
+ public static final int fines_status=0x7f090015;
+ public static final int fines_title=0x7f090012;
public static final int fines_total_owned=0x7f09000e;
public static final int fines_total_paid=0x7f09000f;
- public static final int header=0x7f090012;
- public static final int header_title=0x7f090013;
- public static final int hold_author=0x7f09001a;
- public static final int hold_contact_telephone=0x7f09001c;
- public static final int hold_enable_email_notification=0x7f09001e;
- public static final int hold_enable_phone_notification=0x7f09001d;
- public static final int hold_expiration_date=0x7f090020;
- public static final int hold_physical_description=0x7f09001b;
- public static final int hold_pickup_location=0x7f09001f;
- public static final int hold_recipient=0x7f090018;
- public static final int hold_status=0x7f090024;
- public static final int hold_suspend_hold=0x7f090021;
- public static final int hold_thaw_date=0x7f090027;
- public static final int hold_title=0x7f090019;
- public static final int holds_item_list=0x7f090023;
- public static final int holds_number=0x7f090022;
+ public static final int header=0x7f090016;
+ public static final int header_title=0x7f090017;
+ public static final int hold_author=0x7f09001e;
+ public static final int hold_contact_telephone=0x7f090020;
+ public static final int hold_enable_email_notification=0x7f090022;
+ public static final int hold_enable_phone_notification=0x7f090021;
+ public static final int hold_expiration_date=0x7f090024;
+ public static final int hold_physical_description=0x7f09001f;
+ public static final int hold_pickup_location=0x7f090023;
+ public static final int hold_recipient=0x7f09001c;
+ public static final int hold_status=0x7f090028;
+ public static final int hold_suspend_hold=0x7f090025;
+ public static final int hold_thaw_date=0x7f09002b;
+ public static final int hold_title=0x7f09001d;
+ public static final int holds_item_list=0x7f090027;
+ public static final int holds_number=0x7f090026;
public static final int main_btn_account=0x7f09000c;
public static final int main_btn_app_settings=0x7f09000d;
public static final int main_btn_search=0x7f09000b;
- public static final int place_hold=0x7f090026;
- public static final int record_details_info_author=0x7f090029;
- public static final int record_details_info_publisher=0x7f09002a;
- public static final int record_details_info_title=0x7f090028;
- public static final int record_details_simple_author=0x7f09002c;
- public static final int record_details_simple_isbn=0x7f090031;
- public static final int record_details_simple_publisher=0x7f09002d;
- public static final int record_details_simple_series=0x7f09002f;
- public static final int record_details_simple_subject=0x7f09002e;
- public static final int record_details_simple_synopsis=0x7f090030;
- public static final int record_details_simple_title=0x7f09002b;
+ public static final int place_hold=0x7f09002a;
+ public static final int record_details_info_author=0x7f09002d;
+ public static final int record_details_info_publisher=0x7f09002e;
+ public static final int record_details_info_title=0x7f09002c;
+ public static final int record_details_simple_author=0x7f090030;
+ public static final int record_details_simple_isbn=0x7f090035;
+ public static final int record_details_simple_publisher=0x7f090031;
+ public static final int record_details_simple_series=0x7f090033;
+ public static final int record_details_simple_subject=0x7f090032;
+ public static final int record_details_simple_synopsis=0x7f090034;
+ public static final int record_details_simple_title=0x7f09002f;
public static final int renew_button=0x7f090006;
- public static final int searchButton=0x7f090038;
- public static final int searchText=0x7f090037;
- public static final int search_more_items_button=0x7f090032;
- public static final int search_record_author=0x7f090035;
- public static final int search_record_img=0x7f090033;
- public static final int search_record_publishing=0x7f090036;
- public static final int search_record_title=0x7f090034;
+ public static final int searchButton=0x7f09003c;
+ public static final int searchText=0x7f09003b;
+ public static final int search_more_items_button=0x7f090036;
+ public static final int search_record_author=0x7f090039;
+ public static final int search_record_img=0x7f090037;
+ public static final int search_record_publishing=0x7f09003a;
+ public static final int search_record_title=0x7f090038;
public static final int search_result_number=0x7f090000;
- public static final int search_results_list=0x7f090039;
- public static final int update_hold_button=0x7f090017;
+ public static final int search_results_list=0x7f09003d;
+ public static final int update_hold_button=0x7f09001b;
}
public static final class layout {
public static final int checkout_list=0x7f030000;
public static final int dashbord_account=0x7f030002;
public static final int dashbord_main=0x7f030003;
public static final int fines=0x7f030004;
- public static final int hold_details=0x7f030005;
- public static final int holds_list=0x7f030006;
- public static final int holds_list_item=0x7f030007;
- public static final int main=0x7f030008;
- public static final int place_hold=0x7f030009;
- public static final int record_details_info=0x7f03000a;
- public static final int record_details_simple=0x7f03000b;
- public static final int search_result_footer_view=0x7f03000c;
- public static final int search_result_item=0x7f03000d;
- public static final int search_result_list=0x7f03000e;
+ public static final int fines_list_item=0x7f030005;
+ public static final int hold_details=0x7f030006;
+ public static final int holds_list=0x7f030007;
+ public static final int holds_list_item=0x7f030008;
+ public static final int main=0x7f030009;
+ public static final int place_hold=0x7f03000a;
+ public static final int record_details_info=0x7f03000b;
+ public static final int record_details_simple=0x7f03000c;
+ public static final int search_result_footer_view=0x7f03000d;
+ public static final int search_result_item=0x7f03000e;
+ public static final int search_result_list=0x7f03000f;
}
public static final class string {
public static final int app_name=0x7f070001;
public static final int enable_phone_notification=0x7f070010;
public static final int expiration_date=0x7f070014;
public static final int hello=0x7f070000;
+ public static final int overdue_materials=0x7f070020;
public static final int physical_description=0x7f07000e;
public static final int pickup_location=0x7f070013;
public static final int place_hold=0x7f070016;
</TableLayout>
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/overdue_materials"
+ android:textSize="18sp"
+ android:paddingTop="10dip"
+ android:paddingBottom="5dip"
+ />
<ListView
android:id="@+id/fines_overdue_materials_list"
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+
+ <TableRow
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ >
+
+ <TextView
+ android:id="@+id/fines_title"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="10"
+
+
+ />
+
+ <TextView
+ android:id="@+id/fines_balance_owed"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:textColor="@color/red"
+ android:textStyle="bold"
+ android:layout_weight="4"
+ android:layout_gravity="right"
+ />
+
+ </TableRow>
+
+ <TableRow
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ >
+
+ <TextView
+ android:id="@+id/fines_author"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_weight="10"
+ />
+
+ <TextView
+ android:id="@+id/fines_status"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:textStyle="bold"
+ android:layout_weight="4"
+ android:layout_gravity="right"
+ />
+ </TableRow>
+
+</TableLayout>
\ No newline at end of file
<color name="white">#ffffff</color>
<color name="blue">#1e90ff</color>
+ <color name="red">#ff0000</color>
</resources>
<string name="total_owned">Total Owned </string>
<string name="total_paid">Total Paid</string>
<string name="balance_owed">Balance Owed</string>
+ <string name="overdue_materials">Overdue Materials</string>
</resources>
\ No newline at end of file
import java.util.Map;
import org.evergreen.android.accountAccess.checkout.CircRecord;
+import org.evergreen.android.accountAccess.fines.FinesRecord;
import org.evergreen.android.accountAccess.holds.HoldRecord;
import org.evergreen.android.globals.Utils;
import org.evergreen.android.searchCatalog.RecordInfo;
* containing : transaction, circ, record
* @param : authToken, userID
* @returns : array of objects, must investigate
- */
- public static String METHOD_FETCH_TRANSACTIONS = "open-ils.actor.user.transactions.have_charged.fleshed";
+ */
+ public static String METHOD_FETCH_TRANSACTIONS = "open-ils.actor.user.transactions.have_charge.fleshed";
/** The METHOD_FETCH_MONEY_BILLING
* description :
return fines;
}
- private Object getTransactions(){
+ public ArrayList<FinesRecord> getTransactions(){
+
+ ArrayList<FinesRecord> finesRecords = new ArrayList<FinesRecord>();
Object transactions = Utils.doRequest(conn,SERVICE_ACTOR, METHOD_FETCH_TRANSACTIONS, new Object[]{authToken,userID});
- return transactions;
+
+ //get Array
+
+ List<Map<String,OSRFObject>> list = (List<Map<String,OSRFObject>>)transactions;
+
+ for(int i=0;i<list.size();i++){
+
+ Map<String,OSRFObject> item = list.get(i);
+
+ FinesRecord record = new FinesRecord(item.get("circ"),item.get("record"),item.get("transaction"));
+ finesRecords.add(record);
+ }
+
+ return finesRecords;
}
//---------------------------------------Book bags-----------------------------------//
package org.evergreen.android.accountAccess.fines;
+import java.util.ArrayList;
+import java.util.List;
+
import org.evergreen.android.R;
import org.evergreen.android.accountAccess.AccountAccess;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
+import android.graphics.Color;
import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
private TextView balance_owed;
- private ListView overdue_materials;
+ private ListView lv;
private Runnable getFinesInfo;
private ProgressDialog progressDialog;
+ private OverdueMaterialsArrayAdapter listAdapter;
+
+
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fines);
+ lv = (ListView) findViewById(R.id.fines_overdue_materials_list);
total_owned = (TextView) findViewById(R.id.fines_total_owned);
total_paid = (TextView) findViewById(R.id.fines_total_paid);
ac = AccountAccess.getAccountAccess();
+
+ ArrayList<FinesRecord> finesRecords = new ArrayList<FinesRecord>();
+ listAdapter = new OverdueMaterialsArrayAdapter(context, R.layout.fines_list_item,finesRecords);
+ lv.setAdapter(listAdapter);
+
+
progressDialog = ProgressDialog.show(this, null, "Retrieving fines");
getFinesInfo = new Runnable() {
final float[] fines = ac.getFinesSummary();
+ final ArrayList<FinesRecord> finesRecords = ac.getTransactions();
+
runOnUiThread(new Runnable() {
@Override
public void run() {
+ listAdapter.clear();
+
+ for(int i=0;i<finesRecords.size();i++)
+ listAdapter.add(finesRecords.get(i));
+
+ listAdapter.notifyDataSetChanged();
+
total_owned.setText(fines[0]+"");
total_paid.setText(fines[1]+"");
balance_owed.setText(fines[2]+"");
Thread getFinesTh = new Thread(getFinesInfo);
getFinesTh.start();
}
+
+ class OverdueMaterialsArrayAdapter extends ArrayAdapter<FinesRecord> {
+ private static final String tag = "CheckoutArrayAdapter";
+
+ private TextView fineTitle;
+ private TextView fineAuthor;
+ private TextView fineBalanceOwed;
+ private TextView fineStatus;
+
+ private List<FinesRecord> records = new ArrayList<FinesRecord>();
+
+ public OverdueMaterialsArrayAdapter(Context context, int textViewResourceId,
+ List<FinesRecord> objects) {
+ super(context, textViewResourceId, objects);
+ this.records = objects;
+ }
+
+ public int getCount() {
+ return this.records.size();
+ }
+
+ public FinesRecord getItem(int index) {
+ return this.records.get(index);
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View row = convertView;
+
+ // Get item
+ final FinesRecord record = getItem(position);
+
+ if(row == null){
+
+ Log.d(tag, "Starting XML view more infaltion ... ");
+ LayoutInflater inflater = (LayoutInflater) this.getContext()
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ row = inflater.inflate(R.layout.fines_list_item, parent, false);
+ Log.d(tag, "Successfully completed XML view more Inflation!");
+
+
+ }
+ // Get reference to TextView - title
+ fineTitle = (TextView) row.findViewById(R.id.fines_title);
+
+ // Get reference to TextView author
+ fineAuthor = (TextView) row.findViewById(R.id.fines_author);
+
+ //Get hold status
+ fineBalanceOwed = (TextView) row.findViewById(R.id.fines_balance_owed);
+
+ fineStatus = (TextView) row.findViewById(R.id.fines_status);
+ //set text
+
+
+ //set raw information
+ fineTitle.setText(record.title);
+ fineAuthor.setText(record.author);
+ fineBalanceOwed.setText(record.balance_owed);
+ //status.setText(record.getHoldStatus());
+ fineStatus.setText(record.getStatus());
+
+ if(record.getStatus().equals("returned")){
+ fineStatus.setTextColor(Color.argb(255, 0, 255, 0));
+ }
+ else
+ fineStatus.setTextColor(Color.argb(255, 255, 0, 0));
+
+ return row;
+ }
+ }
}
--- /dev/null
+package org.evergreen.android.accountAccess.fines;
+
+import java.util.Date;
+
+import org.evergreen.android.globals.GlobalConfigs;
+import org.opensrf.util.OSRFObject;
+
+public class FinesRecord {
+
+ public String title;
+
+ public String author;
+
+ public Date checkoutDate;
+
+ public Date dueDate;
+
+ public Date dateReturned;
+
+ public String balance_owed;
+
+ private Date checkin_time;
+
+ public FinesRecord(OSRFObject circ, OSRFObject mvr_record, OSRFObject mbts_transaction){
+
+
+ title = mvr_record.getString("title");
+ author = mvr_record.getString("author");
+
+ balance_owed = mbts_transaction.getString("total_owed");
+
+ if(circ.get("checkin_time") != null){
+ checkin_time = GlobalConfigs.parseDate(circ.getString("checkin_time"));
+ }
+ else
+ checkin_time = null;
+
+ }
+
+ //if returned or fines still acumulating
+ public String getStatus(){
+
+ if(checkin_time != null)
+ return "returned";
+
+ return "fines accruing";
+
+ }
+}