package com.xiaomi.xms.sales.ui; import android.os.Bundle; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.activity.PaymentActivity; import com.xiaomi.xms.sales.adapter.PayModeSpinnerAdapter; import com.xiaomi.xms.sales.adapter.PrinterSpinnerAdapter; import com.xiaomi.xms.sales.loader.AddPayTypeLoader; import com.xiaomi.xms.sales.loader.PaymentInfoLoader; import com.xiaomi.xms.sales.loader.PrinterInfoLoader; import com.xiaomi.xms.sales.loader.PaymentInfoLoader.PayMode; import com.xiaomi.xms.sales.loader.PrinterInfoLoader; import com.xiaomi.xms.sales.loader.PrinterInfoLoader.PrinterMode; import com.xiaomi.xms.sales.model.Order; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.ToastUtil; import java.math.BigDecimal; import java.util.ArrayList; public class PaymentFragment extends BaseFragment { private static final int PAY_MODE_ALIPAY = 1; private static final int PAY_MODE_UPPAY = 2; public static final int ADD_PAYTYPE = 1; public static final int GET_PRINTER_LIST = 2; public static int PAY_TYPE = 100; private Button mPayButton; private Spinner mPayTypeSpinner; private PayModeSpinnerAdapter mPayTypeAdapter; private OrderLayout mOrderLayout; private Order mOrder; private String mOrderId; public ArrayList<PayMode> mPayModeList; private Bundle mBundle; private String payType; private String printerIp; private Spinner mPrinterSpinner; private PrinterSpinnerAdapter mPrinterAdapter; private ArrayList<PrinterMode> mPrinterList; private int orderType; private TextView orderPrinter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.order_info_fragment, container, false); mPayTypeSpinner = (Spinner) v.findViewById(R.id.pay_type); mPayTypeAdapter = new PayModeSpinnerAdapter(getActivity()); mPayTypeSpinner.setAdapter(mPayTypeAdapter); mPrinterSpinner = (Spinner) v.findViewById(R.id.printer); mPrinterAdapter = new PrinterSpinnerAdapter(getActivity()); mPrinterSpinner.setAdapter(mPrinterAdapter); if(mPrinterList == null){ mPrinterList = new ArrayList<PrinterMode>(); } orderPrinter = (TextView) v.findViewById(R.id.order_printer); mPrinterSpinner.setVisibility(View.GONE); orderPrinter.setVisibility(View.GONE); mPayButton = (Button) v.findViewById(R.id.pay_btn); mPayButton.setOnClickListener(mPayButtonClickListener); mOrderLayout = (OrderLayout) v.findViewById(R.id.order_table); handleIntent(); if (mPayModeList == null) { mPayModeList = new ArrayList<PaymentInfoLoader.PayMode>(); mPayModeList.add(new PayMode(getActivity().getString(R.string.pay_pos), getActivity().getString(R.string.pay_pos))); // mPayModeList.add(new PayMode(getActivity().getString(R.string.pay_cash),getActivity().getString(R.string.pay_cash))); //暂时不上 } return v; } private void handleIntent() { mBundle = getArguments(); if (mBundle != null) { mOrder = new Order(); mOrderId = mBundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID); orderType = mBundle.getInt(Constants.Intent.EXTRA_ORDER_TYPE); double totalPrice = Double.valueOf(mBundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_TOTAL_PRICE)); mOrder.setOrderId(mOrderId); mOrder.setFee(totalPrice); mOrder.setOrderType(orderType); } else { getActivity().finish(); } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mOrderLayout.fillOrderTable(mOrder); mPayTypeAdapter.updateData(mPayModeList); mPayTypeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { } @Override public void onNothingSelected(AdapterView<?> parent) { } }); mPrinterSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); if(orderType == 2){ //现货销售的订单才显示选择打印机 mPrinterSpinner.setVisibility(View.VISIBLE); orderPrinter.setVisibility(View.VISIBLE); getPrinterList(); } } /** * 获取打印机信息 */ public void getPrinterList(){ getLoaderManager().initLoader(GET_PRINTER_LIST, null, new LoaderCallbacks<PrinterInfoLoader.Result>() { @SuppressWarnings("unchecked") @Override public Loader<PrinterInfoLoader.Result> onCreateLoader( int id, Bundle arg1) { if (id == GET_PRINTER_LIST) { mLoader = new PrinterInfoLoader(getActivity(), Constants.PRINTER); mLoader.setNeedDatabase(false); return (Loader<PrinterInfoLoader.Result>) mLoader; } return null; } @Override public void onLoadFinished( Loader<PrinterInfoLoader.Result> arg0,PrinterInfoLoader.Result data) { if(data != null && data.p != null && data.p.size() > 0){ mPrinterList = data.p; mPrinterAdapter.updateData(mPrinterList); } } @Override public void onLoaderReset(Loader<PrinterInfoLoader.Result> arg0) { } }); } private OnClickListener mPayButtonClickListener = new OnClickListener() { @Override public void onClick(View v) { PaymentActivity father = (PaymentActivity) getActivity(); PayMode payMode = (PayMode)mPayTypeSpinner.getSelectedItem(); payType = payMode.mModeValue; PrinterMode printerMode = (PrinterMode)mPrinterSpinner.getSelectedItem(); if(printerMode != null && printerMode.mModeKey >=0 && printerMode.mIpAdress != null && printerMode.mIpAdress.length() > 0){ //只有现货销售的才会有选择打印机的 printerIp = printerMode.mIpAdress; mBundle.putString(Constants.Intent.EXTRA_PRINTER_IP,printerIp); } if(payType.equals(getActivity().getString(R.string.pay_pos))){ //POS机支付 father.showFragment(PaymentActivity.TAG_BLUETOOTH_FRAGMENT, mBundle, false); } else if(payType.equals(getActivity().getString(R.string.pay_cash))){ //现金支付 PAY_TYPE = Constants.CASH_PAY; addPayType(); father.showFragment(PaymentActivity.TAG_PAYMENT_CASH_FRAGMENT, mBundle, false); } } }; public void addPayType(){ getLoaderManager().initLoader(ADD_PAYTYPE, null, new LoaderCallbacks<AddPayTypeLoader.Result>() { @SuppressWarnings("unchecked") @Override public Loader onCreateLoader(int id, Bundle bundle) { if (id == ADD_PAYTYPE ) { AddPayTypeLoader mLoader = new AddPayTypeLoader(getActivity(), "payType", mOrderId, PAY_TYPE); mLoader.setNeedDatabase(false); return (Loader<AddPayTypeLoader.Result>) mLoader; } return null; } @Override public void onLoadFinished(Loader<AddPayTypeLoader.Result> loader, AddPayTypeLoader.Result data) { if(data == null || data.responseInfo == null || data.responseInfo.equalsIgnoreCase("error")){ ToastUtil.show(getActivity(), "添加支付方式失败!"); } } @Override public void onLoaderReset(Loader<AddPayTypeLoader.Result> arg0) { } }); } }