/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 27/1/15 3:07 PM
*/
package com.odoo.addons.crm;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.support.list.OListAdapter;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.StringUtils;
import com.odoo.core.utils.controls.ExpandableHeightGridView;
import com.odoo.R;
import java.util.ArrayList;
import java.util.List;
import odoo.controls.OField;
import odoo.controls.OForm;
public class ConvertToOpportunityWizard extends ActionBarActivity implements View.OnClickListener, OField.IOnFieldValueChangeListener {
public static final String TAG = ConvertToOpportunityWizard.class.getSimpleName();
public static final String KEY_LEADS_IDS = "key_leads_ids";
private Bundle extra;
private OForm convert_form;
private CRMLead crmLead = null;
private OListAdapter mAdapter;
private List<Object> items = new ArrayList<>();
private ExpandableHeightGridView mOpportunityList;
private OField conversation_action;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.crm_convert_to_opportunity);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
getSupportActionBar().hide();
setResult(RESULT_CANCELED);
extra = getIntent().getExtras();
convert_form = (OForm) findViewById(R.id.convert_form);
convert_form.setEditable(true);
convert_form.initForm(null);
findViewById(R.id.create_opportunity).setOnClickListener(this);
findViewById(R.id.cancel).setOnClickListener(this);
conversation_action = (OField) findViewById(R.id.conversation_action);
conversation_action.setOnValueChangeListener(this);
init();
}
private void init() {
items.clear();
mOpportunityList = (ExpandableHeightGridView) findViewById(R.id.opportunities);
mOpportunityList.setExpanded(true);
crmLead = new CRMLead(this, null);
ODataRow lead = crmLead.browse(extra.getInt(OColumn.ROW_ID));
items.addAll(crmLead.select(null,
"partner_id = ? and id != ? and " + OColumn.ROW_ID + " != ?",
new String[]{
lead.getString("partner_id"),
"0",
lead.getString(OColumn.ROW_ID)
}));
mAdapter = new OListAdapter(this, R.layout.crm_convert_to_opportunity_item, items) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(ConvertToOpportunityWizard.this)
.inflate(getResource(), parent, false);
}
ODataRow row = (ODataRow) getItem(position);
OControls.setText(convertView, R.id.name, row.getString("name"));
OControls.setText(convertView, R.id.stage, row.getString("stage_name"));
OControls.setText(convertView, R.id.type, StringUtils.capitalizeString(row.getString("type")));
String date = ODateUtils.convertToDefault(row.getString("create_date"),
ODateUtils.DEFAULT_FORMAT, "MMMM, dd");
OControls.setText(convertView, R.id.create_date, date);
convertView.findViewById(R.id.remove_lead).setTag(position);
convertView.findViewById(R.id.remove_lead).setOnClickListener(ConvertToOpportunityWizard.this);
return convertView;
}
};
mOpportunityList.setAdapter(mAdapter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.create_opportunity:
ArrayList<Integer> ids = new ArrayList<>();
for (Object data : items) {
ODataRow row = (ODataRow) data;
ids.add(row.getInt("id"));
}
Intent result = new Intent();
result.putIntegerArrayListExtra(KEY_LEADS_IDS, ids);
setResult(RESULT_OK, result);
finish();
break;
case R.id.remove_lead:
int pos = (int) v.getTag();
items.remove(pos);
mAdapter.notifiyDataChange(items);
if (items.size() == 0) {
conversation_action.setValue(1);
}
break;
case R.id.cancel:
finish();
break;
}
}
@Override
public void onFieldValueChange(OField field, Object value) {
ODataRow record = (ODataRow) value;
int index = record.getInt(OColumn.ROW_ID);
switch (index) {
case -1:
case 0:
findViewById(R.id.opportunity_container).setVisibility(View.GONE);
break;
case 1:
findViewById(R.id.opportunity_container).setVisibility(View.VISIBLE);
init();
break;
}
}
}