/**
* 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 13/1/15 11:20 AM
*/
package com.odoo.addons.phonecall.models;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.base.addons.res.ResPartner;
import com.odoo.base.addons.res.ResUsers;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OModel;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.annotation.Odoo;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.orm.fields.types.OBoolean;
import com.odoo.core.orm.fields.types.ODateTime;
import com.odoo.core.orm.fields.types.OFloat;
import com.odoo.core.orm.fields.types.OInteger;
import com.odoo.core.orm.fields.types.OSelection;
import com.odoo.core.orm.fields.types.OText;
import com.odoo.core.orm.fields.types.OVarchar;
import com.odoo.core.support.OUser;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.reminder.ReminderUtils;
import org.json.JSONArray;
import java.util.Date;
import odoo.ODomain;
public class CRMPhoneCalls extends OModel {
public static final String TAG = CRMPhoneCalls.class.getSimpleName();
public static final String AUTHORITY = "com.odoo.core.crm.provider.content.sync.crm_phonecall";
private Context mContext;
OColumn user_id = new OColumn("Responsible", ResUsers.class,
OColumn.RelationType.ManyToOne).setRequired();
OColumn partner_id = new OColumn("Contact", ResPartner.class,
OColumn.RelationType.ManyToOne).setRequired();
OColumn description = new OColumn("Description", OText.class);
OColumn state = new OColumn("status", OSelection.class)
.addSelection("open", "Confirmed")
.addSelection("cancel", "Cancelled")
.addSelection("pending", "Pending")
.addSelection("done", "Held");
OColumn name = new OColumn("Call summary", OVarchar.class).setRequired();
OColumn duration = new OColumn("Duration", OFloat.class);
OColumn categ_id = new OColumn("Category", CRMPhoneCallsCategory.class,
OColumn.RelationType.ManyToOne);
OColumn date = new OColumn("Date", ODateTime.class);
OColumn opportunity_id = new OColumn("Lead/Opportunity", CRMLead.class,
OColumn.RelationType.ManyToOne);
OColumn call_audio_file = new OColumn("recorded audio file",
OVarchar.class).setSize(200).setLocalColumn();
OColumn data_type = new OColumn("Data type", OVarchar.class).setSize(34)
.setLocalColumn().setDefaultValue("phone_call");
OColumn is_done = new OColumn("Mark as Done", OInteger.class)
.setLocalColumn().setDefaultValue("0");
OColumn partner_phone = new OColumn("Partner Phone", OVarchar.class).setSize(20);
@Odoo.Functional(depends = {"opportunity_id"}, store = true, method = "storeLeadName")
OColumn lead_name = new OColumn("Lead", OVarchar.class).setSize(100)
.setLocalColumn();
@Odoo.Functional(depends = {"user_id"}, store = true, method = "storeUserName")
OColumn user_name = new OColumn("Username", OVarchar.class).setSize(100)
.setLocalColumn();
@Odoo.Functional(depends = {"partner_id"}, store = true, method = "storeCustomerName")
OColumn customer_name = new OColumn("Username", OVarchar.class).setSize(100)
.setLocalColumn();
@Odoo.Functional(depends = {"categ_id"}, store = true, method = "storeCallType")
OColumn call_type = new OColumn("Call Type", OVarchar.class).setSize(100)
.setLocalColumn();
OColumn has_reminder = new OColumn("Has reminder", OBoolean.class).setLocalColumn()
.setDefaultValue("false");
OColumn reminder_datetime = new OColumn("Reminder type", ODateTime.class)
.setDefaultValue("false").setLocalColumn();
OColumn color_index = new OColumn("Color index", OInteger.class).setSize(5)
.setLocalColumn().setDefaultValue(6);
public CRMPhoneCalls(Context context, OUser user) {
super(context, "crm.phonecall", user);
mContext = context;
}
@Override
public Uri uri() {
return buildURI(AUTHORITY);
}
@Override
public ODomain defaultDomain() {
ODomain domain = new ODomain();
domain.add("user_id", "=", getUser().getUser_id());
return domain;
}
public String storeLeadName(OValues values) {
try {
if (!values.getString("opportunity_id").equals("false")) {
JSONArray opportunity_id = new JSONArray(values.getString("opportunity_id"));
return opportunity_id.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public String storeUserName(OValues values) {
try {
if (!values.getString("user_id").equals("false")) {
JSONArray user_id = new JSONArray(values.getString("user_id"));
return user_id.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public String storeCustomerName(OValues values) {
try {
if (!values.getString("partner_id").equals("false")) {
JSONArray partner_id = new JSONArray(values.getString("partner_id"));
return partner_id.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public String storeCallType(OValues values) {
try {
if (!values.getString("categ_id").equals("false")) {
JSONArray categ_id = new JSONArray(values.getString("categ_id"));
return categ_id.getString(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "false";
}
public void setReminder(int row_id) {
ODataRow row = browse(row_id);
Date start_date = ODateUtils.createDateObject(row.getString("date"),
ODateUtils.DEFAULT_FORMAT, false);
Date now = new Date();
if (now.compareTo(start_date) < 0) {
Bundle extra = row.getPrimaryBundleData();
extra.putString(ReminderUtils.KEY_REMINDER_TYPE, "phonecall");
if (ReminderUtils.get(mContext).resetReminder(start_date, extra)) {
OValues values = new OValues();
values.put("_is_dirty", "false");
values.put("has_reminder", "true");
update(row_id, values);
}
}
}
}