package com.refresh.pos.ui.sale; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import com.refresh.pos.R; import com.refresh.pos.domain.inventory.LineItem; import com.refresh.pos.domain.sale.Register; import com.refresh.pos.techicalservices.NoDaoSetException; import com.refresh.pos.ui.MainActivity; import com.refresh.pos.ui.component.UpdatableFragment; /** * UI for Sale operation. * @author Refresh Team * */ @SuppressLint("ValidFragment") public class SaleFragment extends UpdatableFragment { private Register register; private ArrayList<Map<String, String>> saleList; private ListView saleListView; private Button clearButton; private TextView totalPrice; private Button endButton; private UpdatableFragment reportFragment; private Resources res; /** * Construct a new SaleFragment. * @param */ public SaleFragment(UpdatableFragment reportFragment) { super(); this.reportFragment = reportFragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { try { register = Register.getInstance(); } catch (NoDaoSetException e) { e.printStackTrace(); } View view = inflater.inflate(R.layout.layout_sale, container, false); res = getResources(); saleListView = (ListView) view.findViewById(R.id.sale_List); totalPrice = (TextView) view.findViewById(R.id.totalPrice); clearButton = (Button) view.findViewById(R.id.clearButton); endButton = (Button) view.findViewById(R.id.endButton); initUI(); return view; } /** * Initiate this UI. */ private void initUI() { saleListView.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { showEditPopup(arg1,arg2); } }); clearButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ViewPager viewPager = ((MainActivity) getActivity()).getViewPager(); viewPager.setCurrentItem(1); } }); endButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(register.hasSale()){ showPopup(v); } else { Toast.makeText(getActivity().getBaseContext() , res.getString(R.string.hint_empty_sale), Toast.LENGTH_SHORT).show(); } } }); clearButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!register.hasSale() || register.getCurrentSale().getAllLineItem().isEmpty()) { Toast.makeText(getActivity().getBaseContext() , res.getString(R.string.hint_empty_sale), Toast.LENGTH_SHORT).show(); } else { showConfirmClearDialog(); } } }); } /** * Show list * @param list */ private void showList(List<LineItem> list) { saleList = new ArrayList<Map<String, String>>(); for(LineItem line : list) { saleList.add(line.toMap()); } SimpleAdapter sAdap; sAdap = new SimpleAdapter(getActivity().getBaseContext(), saleList, R.layout.listview_lineitem, new String[]{"name","quantity","price"}, new int[] {R.id.name,R.id.quantity,R.id.price}); saleListView.setAdapter(sAdap); } /** * Try parsing String to double. * @param value * @return true if can parse to double. */ public boolean tryParseDouble(String value) { try { Double.parseDouble(value); return true; } catch(NumberFormatException e) { return false; } } /** * Show edit popup. * @param anchorView * @param position */ public void showEditPopup(View anchorView,int position){ Bundle bundle = new Bundle(); bundle.putString("position",position+""); bundle.putString("sale_id",register.getCurrentSale().getId()+""); bundle.putString("product_id",register.getCurrentSale().getLineItemAt(position).getProduct().getId()+""); EditFragmentDialog newFragment = new EditFragmentDialog(SaleFragment.this, reportFragment); newFragment.setArguments(bundle); newFragment.show(getFragmentManager(), ""); } /** * Show popup * @param anchorView */ public void showPopup(View anchorView) { Bundle bundle = new Bundle(); bundle.putString("edttext", totalPrice.getText().toString()); PaymentFragmentDialog newFragment = new PaymentFragmentDialog(SaleFragment.this, reportFragment); newFragment.setArguments(bundle); newFragment.show(getFragmentManager(), ""); } @Override public void update() { if(register.hasSale()){ showList(register.getCurrentSale().getAllLineItem()); totalPrice.setText(register.getTotal() + ""); } else{ showList(new ArrayList<LineItem>()); totalPrice.setText("0.00"); } } @Override public void onResume() { super.onResume(); update(); } /** * Show confirm or clear dialog. */ private void showConfirmClearDialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); dialog.setTitle(res.getString(R.string.dialog_clear_sale)); dialog.setPositiveButton(res.getString(R.string.no), new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); dialog.setNegativeButton(res.getString(R.string.clear), new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { register.cancleSale(); update(); } }); dialog.show(); } }