package com.xiaomi.xms.sales.ui; import java.io.IOException; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; 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.Button; import android.widget.TextView; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.activity.OrderEditActivity; import com.xiaomi.xms.sales.activity.OrderListActivity; import com.xiaomi.xms.sales.activity.SavePrinterActivity; import com.xiaomi.xms.sales.loader.OrderInfoLoader; import com.xiaomi.xms.sales.loader.PackedLoader; import com.xiaomi.xms.sales.loader.PayCheckLoader; import com.xiaomi.xms.sales.loader.PrinterSaveLoader; import com.xiaomi.xms.sales.model.Order; import com.xiaomi.xms.sales.model.Tags; import com.xiaomi.xms.sales.request.HostManager; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.LogUtil; import com.xiaomi.xms.sales.util.PrinterService; import com.xiaomi.xms.sales.util.ToastUtil; import com.xiaomi.xms.sales.widget.EmptyLoadingView; public class PaymentCashFragment extends BaseFragment { private static final String TAG = "PaymentCashFragment"; private static final int ORDER_INFO_LOADER = 0; private static final int PACKED_INFO_LOADER = 1; private static final int GET_ORDER_INFO = 1001; private static final int PAY_CHECK = 1000; private static final int SAVE_PRINTER = 100; private OrderInfoLoader mLoader; private TextView mOrderId; private TextView mOrderTime; private TextView mcashFee; private Button mSubmitBtn; private String mFee; private String mOrderIdStr; private int orderStatus; private int orderType; private String printerIP; private ProgressDialog mProgressDialog; private EmptyLoadingView mLoadingView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.payment_cash_fragment, container, false); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mOrderId = (TextView) view.findViewById(R.id.payment_order_id); mOrderTime = (TextView) view.findViewById(R.id.payment_order_add_time); mcashFee = (TextView) view.findViewById(R.id.payment_cash_fee); mSubmitBtn = (Button) view.findViewById(R.id.payment_cash_submit); mProgressDialog = new ProgressDialog(getActivity()); mProgressDialog.setCancelable(false); handleIntent(); return view; } private void handleIntent() { Bundle bundle = getArguments(); if (bundle != null) { mFee = bundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_TOTAL_PRICE); mOrderIdStr = bundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID); orderType = bundle.getInt(Constants.Intent.EXTRA_ORDER_TYPE); printerIP = bundle.getString(Constants.Intent.EXTRA_PRINTER_IP); mOrderId.setText(mOrderIdStr); mcashFee.setText("¥ " + mFee); mOrderTime.setText(bundle.getString(Constants.Intent.EXTRA_PAYMENT_ORDER_ADD_TIME)); } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mSubmitBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { payAction(); } }); } /** * 支付验证并处理后续流程 */ public void payAction(){ getLoaderManager().restartLoader(PAY_CHECK,null, new LoaderCallbacks<PayCheckLoader.Result>() { @SuppressWarnings("unchecked") @Override public Loader onCreateLoader(int id, Bundle bundle) { if (id == PAY_CHECK ) { PayCheckLoader mLoader = new PayCheckLoader(getActivity(),mOrderIdStr); mLoader.setNeedDatabase(false); return (Loader<PayCheckLoader.Result>) mLoader; } return null; } @Override public void onLoadFinished(Loader<PayCheckLoader.Result> loader, PayCheckLoader.Result data) { if(data != null && data.responseInfo != null && data.responseInfo.equalsIgnoreCase("OK")){ mProgressDialog.setMessage("正在处理支付, 请稍等..."); mProgressDialog.show(); //验证状态是否为已支付 getLoaderManager().restartLoader(ORDER_INFO_LOADER, null, new LoaderCallbacks<OrderInfoLoader.Result>() { @Override public Loader onCreateLoader(int id, Bundle arg1) { if (id == ORDER_INFO_LOADER) { mLoader = new OrderInfoLoader(getActivity()); mLoader.setNeedSecurityKeyTask(false); mLoader.setNeedDatabase(false); mLoader.setOrderId(mOrderIdStr); // mLoader.setProgressNotifiable(mLoadingView); return mLoader; } return null; } @Override public void onLoadFinished(Loader<OrderInfoLoader.Result> loader, OrderInfoLoader.Result data) { LogUtil.d(TAG, "info loaded."); if (data != null && data.mOrderInfo != null) { orderStatus = data.mOrderInfo.getOrderStatus(); if(orderStatus == 4){ //验证状态是否为已支付 ToastUtil.show(getActivity(), "现金支付完成"); if(orderType == 2){ //现货销售的才会自动配货出库等 //配货出库妥投/打单 mProgressDialog.dismiss(); mProgressDialog.setMessage("支付成功,正在配货出库, 请稍等..."); mProgressDialog.show(); getLoaderManager().restartLoader(PACKED_INFO_LOADER, null, new LoaderCallbacks<PackedLoader.Result>() { @Override public Loader onCreateLoader(int id, Bundle arg1) { if (id == PACKED_INFO_LOADER) { PackedLoader packedLoader = new PackedLoader(getActivity(),mOrderIdStr); packedLoader.setNeedDatabase(false); return packedLoader; } return null; } @Override public void onLoadFinished(Loader<PackedLoader.Result> loader, PackedLoader.Result data) { LogUtil.d(TAG, "info loaded."); if (data != null && data.responseInfo != null && data.responseInfo.equalsIgnoreCase("OK")) { ToastUtil.show(getActivity(), "配货完成"); Intent intent = new Intent(getActivity(),OrderEditActivity.class); intent.setAction(Constants.Intent.ACTION_ORDER_EDIT); intent.putExtra(Constants.Intent.EXTRA_PAYMENT_ORDER_ID,mOrderIdStr); intent.putExtra(Constants.Intent.EXTRA_ORDER_TYPE,orderType); intent.putExtra(Constants.Intent.EXTRA_ORDER_EDIT_ACTION,"ADD"); intent.putExtra(Constants.Intent.EXTRA_PRINTER_IP, printerIP); startActivity(intent); if (getActivity() != null) { getActivity().finish(); } } else{ Intent intent = new Intent(getActivity(), OrderListActivity.class); intent.setAction(Constants.Intent.ACTION_VIEW_ORDER); intent.putExtra(Constants.Intent.EXTRA_ORDER_TYPE, orderType); intent.putExtra(Constants.Intent.EXTRA_PAYMENT_ORDER_ID, mOrderIdStr); startActivity(intent); if (getActivity() != null) { getActivity().finish(); } } } @Override public void onLoaderReset(Loader<PackedLoader.Result> loader) { } }); mProgressDialog.dismiss(); } else{ mProgressDialog.dismiss(); Intent intent = new Intent(getActivity(), OrderEditActivity.class); intent.setAction(Constants.Intent.ACTION_ORDER_EDIT); intent.putExtra(Constants.Intent.EXTRA_PAYMENT_ORDER_ID, mOrderIdStr); intent.putExtra(Constants.Intent.EXTRA_ORDER_TYPE, orderType); intent.putExtra(Constants.Intent.EXTRA_ORDER_EDIT_ACTION, "ADD"); startActivity(intent); if (getActivity() != null) { getActivity().finish(); } } } else{ mProgressDialog.dismiss(); ToastUtil.show(getActivity(), "还未支付,请先到收银台支付!"); } } } @Override public void onLoaderReset(Loader<OrderInfoLoader.Result> loader) { } }); } else{ ToastUtil.show(getActivity(), data !=null && data.responseInfo != null && data.responseInfo.length() > 0 ? data.responseInfo :"IP不合法或支付信息有误!"); } } @Override public void onLoaderReset(Loader<PayCheckLoader.Result> arg0) { } }); } private void setSumbitButtonAttribute(boolean isClick, int resId) { mSubmitBtn.setEnabled(isClick); mSubmitBtn.setText(resId); } @Override public void onDestroyView() { LogUtil.i(TAG, "onDestroyView"); super.onDestroyView(); }; }