更新到 5.2 正式版后第一次 SVN 提交。
yuchenghu@hawebs.net git-svn-id: https://svn.code.sf.net/p/hawebs/svn@611 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
This commit is contained in:
@@ -0,0 +1,259 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: Contains a variety of utility functions used to display UI
|
||||
* components such as form vtiger_headers and footers. Intended to be modified on a per
|
||||
* theme basis.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
function get_validate_import_fields_js (&$req_fields,&$all_fields)
|
||||
{
|
||||
global $mod_strings;
|
||||
|
||||
$err_multiple = $mod_strings['ERR_MULTIPLE'];
|
||||
$err_required = $mod_strings['ERR_MISSING_REQUIRED_FIELDS'];
|
||||
$err_select_full_name = $mod_strings['ERR_SELECT_FULL_NAME'];
|
||||
$print_required_array = "";
|
||||
|
||||
foreach ($req_fields as $required=>$unused)
|
||||
{
|
||||
$print_required_array .= "required['$required'] = '". $all_fields[$required] . "';\n";
|
||||
|
||||
}
|
||||
|
||||
$the_script = <<<EOQ
|
||||
|
||||
<script type="text/javascript" language="Javascript">
|
||||
<!-- to hide script contents from old browsers
|
||||
|
||||
function verify_data(form)
|
||||
{
|
||||
var isError = false;
|
||||
var errorMessage = "";
|
||||
|
||||
var hash = new Object();
|
||||
|
||||
var required = new Object();
|
||||
|
||||
$print_required_array
|
||||
|
||||
for(i=0;i < form.length;i++)
|
||||
{
|
||||
if ( form.elements[i].name.indexOf("colnum",0) == 0)
|
||||
{
|
||||
|
||||
if ( form.elements[i].value == "-1")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ( hash[ form.elements[i].value ] == 1)
|
||||
{
|
||||
// got same vtiger_field more than once
|
||||
isError = true;
|
||||
}
|
||||
hash[form.elements[i].value] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (isError == true)
|
||||
{
|
||||
alert( "$err_multiple" );
|
||||
return false;
|
||||
}
|
||||
|
||||
if (hash['full_name'] == 1 && (hash['last_name'] == 1 || hash['first_name'] == 1) )
|
||||
{
|
||||
alert( "$err_select_full_name" );
|
||||
return false;
|
||||
}
|
||||
|
||||
for(var vtiger_field_name in required)
|
||||
{
|
||||
// contacts hack to bypass errors if full_name is set
|
||||
if (field_name == 'last_name' &&
|
||||
hash['full_name'] == 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ( hash[ vtiger_field_name ] != 1 )
|
||||
{
|
||||
isError = true;
|
||||
errorMessage += "$err_required " + required[field_name];
|
||||
}
|
||||
}
|
||||
|
||||
if (isError == true)
|
||||
{
|
||||
alert( errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// end hiding contents from old browsers -->
|
||||
</script>
|
||||
|
||||
EOQ;
|
||||
|
||||
return $the_script;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function get_validate_upload_js ()
|
||||
{
|
||||
global $mod_strings;
|
||||
|
||||
$err_missing_required_fields = $mod_strings['ERR_MISSING_REQUIRED_FIELDS'];
|
||||
$lbl_select_file = $mod_strings['ERR_SELECT_FILE'];
|
||||
$lbl_custom = $mod_strings['LBL_CUSTOM'];
|
||||
|
||||
$the_script = <<<EOQ
|
||||
|
||||
<script type="text/javascript" language="Javascript">
|
||||
<!-- to hide script contents from old browsers
|
||||
|
||||
function verify_data(form)
|
||||
{
|
||||
var isError = false;
|
||||
var errorMessage = "";
|
||||
if (form.userfile.value == "")
|
||||
{
|
||||
isError = true;
|
||||
errorMessage += "\\n$lbl_select_file";
|
||||
}
|
||||
else
|
||||
{
|
||||
for(i=0;i < form.delimiter.length;i++)
|
||||
{
|
||||
if ( form.delimiter[i].value == "custom"
|
||||
&& form.delimiter[i].checked == true
|
||||
&& form.custom_delim.value == "")
|
||||
{
|
||||
isError = true;
|
||||
errorMessage += "\\n$lbl_custom";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isError == true)
|
||||
{
|
||||
alert("$err_missing_required_fields" + errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// end hiding contents from old browsers -->
|
||||
</script>
|
||||
|
||||
EOQ;
|
||||
|
||||
return $the_script;
|
||||
}
|
||||
|
||||
/** function used to form the combo values with the available importable fields
|
||||
* @param array reference &$column_fields - reference of the column fields which will be like lastname=>1, etc where as the key is the field name based on the import module and value is 1
|
||||
* @param int $colnum - column number
|
||||
* @param array reference &$required_fields - required fields of the import module
|
||||
* @param string $suggest_field - field to show as selected in the combo box
|
||||
* @param array $translated_fields - list of fields which are available to map
|
||||
* @param string $module - tablename for the import module
|
||||
* @return picklist $output - return the combo box ie., picklist with the fields which are available to map
|
||||
*/
|
||||
function getFieldSelect(&$column_fields,$colnum,&$required_fields,$suggest_field,$translated_fields,$module)
|
||||
{
|
||||
global $mod_strings;
|
||||
global $app_strings;
|
||||
global $outlook_contacts_field_map;
|
||||
require_once('include/database/PearDatabase.php');
|
||||
global $adb;
|
||||
|
||||
$output = "<select class=\"small\" id=\"colnum" . $colnum ."\" name=\"colnum" . $colnum ."\">\n";
|
||||
$output .= "<option value=\"-1\">". $mod_strings['LBL_DONT_MAP'] . "</option>";
|
||||
|
||||
$count = 0;
|
||||
$req_mark = "";
|
||||
|
||||
require_once("include/database/PearDatabase.php");
|
||||
|
||||
$adb->println("Field select");
|
||||
$adb->println($translated_fields);
|
||||
|
||||
asort($translated_fields);
|
||||
|
||||
foreach ($translated_fields as $field=>$name){
|
||||
if (! isset($column_fields[$field])){
|
||||
continue;
|
||||
}
|
||||
$output .= "<option value=\"".$field;
|
||||
|
||||
if ( isset( $suggest_field) && $field == $suggest_field){
|
||||
$output .= "\" SELECTED>";
|
||||
}else{
|
||||
$output .= "\">";
|
||||
}
|
||||
|
||||
if ( isset( $required_fields[$field])){
|
||||
$req_mark = " ". $app_strings['LBL_REQUIRED_SYMBOL'];
|
||||
}else{
|
||||
$req_mark = "";
|
||||
}
|
||||
|
||||
$output .= $name . $req_mark."</option>\n";
|
||||
$count ++;
|
||||
}
|
||||
|
||||
$output .= "</select>\n";
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
function get_readonly_js ()
|
||||
{
|
||||
?>
|
||||
<script type="text/javascript" language="Javascript">
|
||||
<!-- to hide script contents from old browsers
|
||||
|
||||
function set_readonly(form){
|
||||
if (form.save_map.checked){
|
||||
form.save_map.value='on';
|
||||
form.save_map_as.readOnly=false;
|
||||
form.save_map_as.focus();
|
||||
}else{
|
||||
form.save_map.value='off';
|
||||
form.save_map_as.value="";
|
||||
form.save_map_as.readOnly=true;
|
||||
}
|
||||
}
|
||||
|
||||
// end hiding contents from old browsers -->
|
||||
</script>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,217 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: Defines the Account SugarBean Account entity with the necessary
|
||||
* methods and variables.
|
||||
********************************************************************************/
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('modules/Potentials/Potentials.php');
|
||||
require_once('modules/Documents/Documents.php');
|
||||
require_once('modules/Emails/Emails.php');
|
||||
require_once('modules/Accounts/Accounts.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
|
||||
// Account is used to store vtiger_account information.
|
||||
class ImportAccount extends Accounts {
|
||||
var $db;
|
||||
|
||||
// Get _dom arrays from Database
|
||||
//$comboFieldNames = Array('accounttype'=>'account_type_dom'
|
||||
// ,'industry'=>'industry_dom');
|
||||
//$comboFieldArray = getComboArray($comboFieldNames);
|
||||
|
||||
|
||||
// This is the list of vtiger_fields that are required.
|
||||
var $required_fields = array("accountname"=>1);
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array(
|
||||
"map_member_of","modseq_number",
|
||||
//"add_billing_address_streets"
|
||||
//,"add_shipping_address_streets"
|
||||
//,"fix_website"
|
||||
);
|
||||
|
||||
/*
|
||||
function fix_website()
|
||||
{
|
||||
if ( isset($this->website) &&
|
||||
preg_match("/^http:\/\//",$this->website) )
|
||||
{
|
||||
$this->website = substr($this->website,7);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function add_industry()
|
||||
{
|
||||
if ( isset($this->industry) &&
|
||||
! isset( $comboFieldArray['industry_dom'][$this->industry]))
|
||||
{
|
||||
unset($this->industry);
|
||||
}
|
||||
}
|
||||
|
||||
function add_type()
|
||||
{
|
||||
if ( isset($this->type) &&
|
||||
! isset($comboFieldArray['account_type_dom'][$this->type]))
|
||||
{
|
||||
unset($this->type);
|
||||
}
|
||||
}
|
||||
|
||||
function add_billing_address_streets()
|
||||
{
|
||||
if ( isset($this->billing_address_street_2))
|
||||
{
|
||||
$this->billing_address_street .=
|
||||
" ". $this->billing_address_street_2;
|
||||
}
|
||||
|
||||
if ( isset($this->billing_address_street_3))
|
||||
{
|
||||
$this->billing_address_street .=
|
||||
" ". $this->billing_address_street_3;
|
||||
}
|
||||
if ( isset($this->billing_address_street_4))
|
||||
{
|
||||
$this->billing_address_street .=
|
||||
" ". $this->billing_address_street_4;
|
||||
}
|
||||
}
|
||||
|
||||
function add_shipping_address_streets()
|
||||
{
|
||||
if ( isset($this->shipping_address_street_2))
|
||||
{
|
||||
$this->shipping_address_street .=
|
||||
" ". $this->shipping_address_street_2;
|
||||
}
|
||||
|
||||
if ( isset($this->shipping_address_street_3))
|
||||
{
|
||||
$this->shipping_address_street .=
|
||||
" ". $this->shipping_address_street_3;
|
||||
}
|
||||
|
||||
if ( isset($this->shipping_address_street_4))
|
||||
{
|
||||
$this->shipping_address_street .=
|
||||
" ". $this->shipping_address_street_4;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// This is the list of vtiger_fields that are importable.
|
||||
// some if these do not map directly to database columns
|
||||
/*var $importable_fields = Array(
|
||||
"id"=>1
|
||||
,"name"=>1
|
||||
,"website"=>1
|
||||
,"industry"=>1
|
||||
,"account_type"=>1
|
||||
,"ticker_symbol"=>1
|
||||
,"parent_name"=>1
|
||||
,"employees"=>1
|
||||
,"ownership"=>1
|
||||
,"phone_office"=>1
|
||||
,"phone_fax"=>1
|
||||
,"phone_alternate"=>1
|
||||
,"email1"=>1
|
||||
,"email2"=>1
|
||||
,"rating"=>1
|
||||
,"sic_code"=>1
|
||||
,"annual_revenue"=>1
|
||||
,"billing_address_street"=>1
|
||||
,"billing_address_street_2"=>1
|
||||
,"billing_address_street_3"=>1
|
||||
,"billing_address_street_4"=>1
|
||||
,"billing_address_city"=>1
|
||||
,"billing_address_state"=>1
|
||||
,"billing_address_postalcode"=>1
|
||||
,"billing_address_country"=>1
|
||||
,"shipping_address_street"=>1
|
||||
,"shipping_address_street_2"=>1
|
||||
,"shipping_address_street_3"=>1
|
||||
,"shipping_address_street_4"=>1
|
||||
,"shipping_address_city"=>1
|
||||
,"shipping_address_state"=>1
|
||||
,"shipping_address_postalcode"=>1
|
||||
,"shipping_address_country"=>1
|
||||
,"description"=>1
|
||||
);
|
||||
*/
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportAccount() {
|
||||
parent::Accounts();
|
||||
$this->log = LoggerManager::getLogger('import_account');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportAccount");
|
||||
$this->initImportableFields("Accounts");
|
||||
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
/** function used to map with existing Mamber Of(Account) if the account is map with an member of during import
|
||||
*/
|
||||
function map_member_of()
|
||||
{
|
||||
global $adb;
|
||||
|
||||
$account_name = $this->column_fields['account_id'];
|
||||
$adb->println("Entering map_member_of account_id=".$account_name);
|
||||
|
||||
if ((! isset($account_name) || $account_name == '') )
|
||||
{
|
||||
$adb->println("Exit map_member_of. Account Name(Member Of) not set for this entity.");
|
||||
return;
|
||||
}
|
||||
|
||||
$account_name = trim($account_name);
|
||||
|
||||
//Query to get the available Account which is not deleted
|
||||
$query = "select accountid from vtiger_account inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_account.accountid WHERE vtiger_account.accountname=? and vtiger_crmentity.deleted=0";
|
||||
$account_id = $adb->query_result($adb->pquery($query, array($account_name)),0,'accountid');
|
||||
|
||||
if($account_id == '' || !isset($account_id))
|
||||
$account_id = 0;
|
||||
|
||||
$this->column_fields['account_id'] = $account_id;
|
||||
|
||||
$adb->println("Exit map_member_of. Fetched Account for '".$account_name."' and the account_id = $account_id");
|
||||
}
|
||||
|
||||
// Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['account_no'] = '';
|
||||
}
|
||||
// END
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
** The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
include('modules/Import/ImportMap.php');
|
||||
include('modules/Import/Forms.php');
|
||||
|
||||
//This is to delete the map
|
||||
|
||||
if($_REQUEST['ajax_action'] == 'check_dup_map_name')
|
||||
{
|
||||
$map_name=$_REQUEST['name'];
|
||||
global $adb;
|
||||
$query="select * from vtiger_import_maps where deleted=0 and name=?";
|
||||
$Result = $adb->pquery($query, array($map_name));
|
||||
$noofrows = $adb->num_rows($Result);
|
||||
if($noofrows > 0)
|
||||
echo "false"; //Map name already exists
|
||||
else
|
||||
echo "true";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if($_REQUEST['delete_map'] != '')
|
||||
{
|
||||
$query = "update vtiger_import_maps set deleted=1 where id = ?";
|
||||
$adb->pquery($query, array($_REQUEST['mapping']));
|
||||
}
|
||||
|
||||
$mapping_file = new ImportMap();
|
||||
$mapping_arr = $mapping_file->getSavedMappingContent($_REQUEST['mapping']);
|
||||
|
||||
$importable_fields = $_SESSION['import_module_object_column_fields'];
|
||||
$field_count = $_SESSION['import_module_field_count'];
|
||||
$required_fields = $_SESSION['import_module_object_required_fields'];
|
||||
$translated_column_fields = $_SESSION['import_module_translated_column_fields'];
|
||||
|
||||
$tablename = '';
|
||||
$has_header = $_SESSION['import_has_header'];
|
||||
$firstrow = $_SESSION['import_firstrow'];
|
||||
$field_map = &$mapping_arr;//$_SESSION['import_field_map'];
|
||||
$smarty_array1 = array();
|
||||
|
||||
for($i=0;$i<$field_count;$i++)
|
||||
{
|
||||
$suggest = '';
|
||||
if ($has_header && isset( $field_map[$firstrow[$i]] ) )
|
||||
{
|
||||
$suggest = $field_map[$firstrow[$i]];
|
||||
}
|
||||
else if (isset($field_map[$i]))
|
||||
{
|
||||
$suggest = $field_map[$i];
|
||||
}
|
||||
|
||||
$smarty_array1[$i+1] = getFieldSelect( $importable_fields,
|
||||
$i,
|
||||
$required_fields,
|
||||
$suggest,
|
||||
$translated_column_fields,
|
||||
$tablename
|
||||
);
|
||||
}
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
$smarty->assign("FIRSTROW",$firstrow);
|
||||
$smarty->assign("SELECTFIELD",$smarty_array1);
|
||||
|
||||
$smarty->display('ImportMap.tpl');
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
|
||||
global $mod_strings;
|
||||
global $allow_exports;
|
||||
|
||||
require_once('include/utils/UserInfoUtil.php');
|
||||
if ($_REQUEST['module'] == 'Products' ||
|
||||
$_REQUEST['module'] == 'Contacts' ||
|
||||
$_REQUEST['module'] == 'Potentials' ||
|
||||
$_REQUEST['module'] == 'Accounts' ||
|
||||
$_REQUEST['module'] == 'Leads')
|
||||
{
|
||||
if(isPermitted($_REQUEST['module'],'Import') == 0)
|
||||
{
|
||||
?>
|
||||
<li>
|
||||
<a href="index.php?module=<?php echo vtlib_purify($_REQUEST['module']); ?>&action=Import&step=1&return_module=<?php echo vtlib_purify($_REQUEST['module']); ?>&return_action=index"><?php echo $app_strings['LBL_IMPORT']; ?> <?php echo $mod_strings['LBL_MODULE_NAME']?></a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
if ( $allow_exports=='all' ||
|
||||
( $allow_exports=='admin' && is_admin($current_user)) )
|
||||
{
|
||||
if($_REQUEST['module'] != 'Calendar')
|
||||
{
|
||||
if(isPermitted($_REQUEST['module'],'Export') == 'yes')
|
||||
{
|
||||
?>
|
||||
<li>
|
||||
<a href="index.php?module=<?php echo vtlib_purify($_REQUEST['module']); ?>&action=Export&all=1"><?php echo $app_strings['LBL_EXPORT_ALL']?> <?php echo $mod_strings['LBL_MODULE_NAME']?></a>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,305 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
********************************************************************************/
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
|
||||
// Contact is used to store customer information.
|
||||
class ImportContact extends Contacts {
|
||||
// these are vtiger_fields that may be set on import
|
||||
// but are to be processed and incorporated
|
||||
// into vtiger_fields of the parent class
|
||||
var $db;
|
||||
var $full_name;
|
||||
var $primary_address_street_2;
|
||||
var $primary_address_street_3;
|
||||
var $alt_address_street_2;
|
||||
var $alt_address_street_3;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array(
|
||||
//"get_names_from_full_name"
|
||||
"add_create_account",
|
||||
"map_reports_to",
|
||||
"modseq_number",
|
||||
//,"add_salutation"
|
||||
//,"add_lead_source"
|
||||
//,"add_birthdate"
|
||||
//,"add_do_not_call"
|
||||
//,"add_email_opt_out"
|
||||
//,"add_primary_address_streets"
|
||||
//,"add_alt_address_streets"
|
||||
);
|
||||
/*
|
||||
function add_salutation()
|
||||
{
|
||||
if ( isset($this->salutation) &&
|
||||
! isset( $comboFieldArray['salutation_dom'][ $this->salutation ]) )
|
||||
{
|
||||
$this->salutation = '';
|
||||
}
|
||||
}
|
||||
|
||||
function add_lead_source()
|
||||
{
|
||||
if ( isset($this->lead_source) &&
|
||||
! isset( $comboFieldArray['lead_source_dom'][ $this->lead_source ]) )
|
||||
{
|
||||
$this->lead_source = '';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function add_birthdate()
|
||||
{
|
||||
if ( isset($this->birthdate))
|
||||
{
|
||||
if (! preg_match('/^\d{4}-\d{1,2}-\d{1,2}$/',$this->birthdate))
|
||||
{
|
||||
$this->birthdate = '';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function add_do_not_call()
|
||||
{
|
||||
if ( isset($this->do_not_call) && $this->do_not_call != 'on')
|
||||
{
|
||||
$this->do_not_call = '';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function add_email_opt_out()
|
||||
{
|
||||
if ( isset($this->email_opt_out) && $this->email_opt_out != 'on')
|
||||
{
|
||||
$this->email_opt_out = '';
|
||||
}
|
||||
}
|
||||
|
||||
function add_primary_address_streets()
|
||||
{
|
||||
if ( isset($this->primary_address_street_2))
|
||||
{
|
||||
$this->primary_address_street .= " ". $this->primary_address_street_2;
|
||||
}
|
||||
|
||||
if ( isset($this->primary_address_street_3))
|
||||
{
|
||||
$this->primary_address_street .= " ". $this->primary_address_street_3;
|
||||
}
|
||||
}
|
||||
|
||||
function add_alt_address_streets()
|
||||
{
|
||||
if ( isset($this->alt_address_street_2))
|
||||
{
|
||||
$this->alt_address_street .= " ". $this->alt_address_street_2;
|
||||
}
|
||||
|
||||
if ( isset($this->alt_address_street_3))
|
||||
{
|
||||
$this->alt_address_street .= " ". $this->alt_address_street_3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function get_names_from_full_name()
|
||||
{
|
||||
if ( ! isset($this->full_name))
|
||||
{
|
||||
return;
|
||||
}
|
||||
$arr = array();
|
||||
|
||||
$name_arr = preg_split('/\s+/',$this->full_name);
|
||||
|
||||
if ( count($name_arr) == 1)
|
||||
{
|
||||
$this->last_name = $this->full_name;
|
||||
}
|
||||
|
||||
$this->first_name = array_shift($name_arr);
|
||||
|
||||
$this->last_name = join(' ',$name_arr);
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
// Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['contact_no'] = '';
|
||||
}
|
||||
// END
|
||||
|
||||
/** function used to create or map with existing account if the contact has mapped with an account during import
|
||||
*/
|
||||
function add_create_account()
|
||||
{
|
||||
global $adb;
|
||||
// global is defined in UsersLastImport.php
|
||||
global $imported_ids;
|
||||
global $current_user;
|
||||
|
||||
$acc_name = $this->column_fields['account_id'];
|
||||
$adb->println("contact add_create acc=".$acc_name);
|
||||
|
||||
if ((! isset($acc_name) || $acc_name == '') )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$arr = array();
|
||||
|
||||
// check if it already exists
|
||||
$focus = new Accounts();
|
||||
|
||||
$query = '';
|
||||
|
||||
// if user is defining the vtiger_account id to be associated with this contact..
|
||||
|
||||
//Modified to remove the spaces at first and last in vtiger_account name -- after 4.2 patch 2
|
||||
$acc_name = trim($acc_name);
|
||||
|
||||
//Modified the query to get the available account only ie., which is not deleted
|
||||
$query = "select vtiger_crmentity.deleted, vtiger_account.* from vtiger_account, vtiger_crmentity WHERE accountname=? and vtiger_crmentity.crmid =vtiger_account.accountid and vtiger_crmentity.deleted=0";
|
||||
$result = $adb->pquery($query, array($acc_name));
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
|
||||
$adb->println("fetched account");
|
||||
$adb->println($row);
|
||||
|
||||
// we found a row with that id
|
||||
if (isset($row['accountid']) && $row['accountid'] != -1)
|
||||
{
|
||||
$focus->id = $row['accountid'];
|
||||
$adb->println("Account row exists - using same id=".$focus->id);
|
||||
}
|
||||
|
||||
// if we didnt find the vtiger_account, so create it
|
||||
if (! isset($focus->id) || $focus->id == '')
|
||||
{
|
||||
$adb->println("Createing new vtiger_account");
|
||||
$focus->column_fields['accountname'] = $acc_name;
|
||||
$focus->column_fields['assigned_user_id'] = $current_user->id;
|
||||
$focus->column_fields['modified_user_id'] = $current_user->id;
|
||||
|
||||
//$focus->saveentity("Accounts");
|
||||
$focus->save("Accounts");
|
||||
$acc_id = $focus->id;
|
||||
|
||||
$adb->println("New Account created id=".$focus->id);
|
||||
|
||||
// avoid duplicate mappings:
|
||||
if (! isset( $imported_ids[$acc_id]) )
|
||||
{
|
||||
$adb->println("inserting vtiger_users last import for vtiger_accounts");
|
||||
// save the new vtiger_account as a vtiger_users_last_import
|
||||
$last_import = new UsersLastImport();
|
||||
$last_import->assigned_user_id = $current_user->id;
|
||||
$last_import->bean_type = "Accounts";
|
||||
$last_import->bean_id = $focus->id;
|
||||
$last_import->save();
|
||||
$imported_ids[$acc_id] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$adb->println("prev contact accid=".$this->column_fields["account_id"]);
|
||||
// now just link the vtiger_account
|
||||
$this->column_fields["account_id"] = $focus->id;
|
||||
$adb->println("curr contact accid=".$this->column_fields["account_id"]);
|
||||
|
||||
}
|
||||
|
||||
/** function used to map with existing Reports To(Contact) if the contact is map with reports to during import
|
||||
*/
|
||||
function map_reports_to()
|
||||
{
|
||||
global $adb;
|
||||
|
||||
$contact_name = $this->column_fields['contact_id'];
|
||||
$adb->println("Entering map_reports_to contact_id=".$contact_name);
|
||||
|
||||
if ((! isset($contact_name) || $contact_name == '') )
|
||||
{
|
||||
$adb->println("Exit map_reports_to. Contact Name(Reports To) not set for this entity.");
|
||||
return;
|
||||
}
|
||||
|
||||
$contact_name = trim($contact_name);
|
||||
|
||||
//Query to get the available Contact (Reports To) which is not deleted
|
||||
$query = "select contactid from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid WHERE concat(vtiger_contactdetails.lastname,' ',vtiger_contactdetails.firstname) = ? and vtiger_crmentity.deleted=0";
|
||||
$contact_id = $adb->query_result($adb->pquery($query, array($contact_name)),0,'contactid');
|
||||
|
||||
if($contact_id == '' || !isset($contact_id))
|
||||
$contact_id = 0;
|
||||
|
||||
$this->column_fields['contact_id'] = $contact_id;
|
||||
|
||||
$adb->println("Exit map_reports_to. Fetched Contact (Reports To) for '".$contact_name."' and the contactid = $contact_id");
|
||||
}
|
||||
|
||||
|
||||
// This is the list of vtiger_fields that can be imported
|
||||
// some of these don't map directly to columns in the db
|
||||
|
||||
//we need to add two or more arrays as the columns are distributed across the vtiger_tables now
|
||||
/*var $importable_fields = array(
|
||||
"contactid"=>1,
|
||||
"firstname"=>1,
|
||||
"lastname"=>1,
|
||||
"salutation"=>1,
|
||||
"donotcall"=>1,
|
||||
"emailoptout"=>1,
|
||||
"accountid"=>1,
|
||||
"title"=>1,
|
||||
"department"=>1,
|
||||
"phone"=>1,
|
||||
"mobile"=>1,
|
||||
"fax"=>1,
|
||||
"email"=>1,
|
||||
"otheremail"=>1,
|
||||
"yahooid"=>1,
|
||||
);*/
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportContact() {
|
||||
parent::Contacts();
|
||||
$this->log = LoggerManager::getLogger('import_contact');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportContact");
|
||||
$this->initImportableFields("Contacts");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header: /advent/projects/wesat/vtiger_crm/sugarcrm/modules/Import/ImportLead.php,v 1.3 2005/03/05 05:41:09 jack Exp $
|
||||
* Description: Defines the Account SugarBean Account entity with the necessary
|
||||
* methods and variables.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('modules/Potentials/Potentials.php');
|
||||
require_once('modules/Documents/Documents.php');
|
||||
require_once('modules/Emails/Emails.php');
|
||||
require_once('modules/Accounts/Accounts.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
require_once('modules/Leads/Leads.php');
|
||||
|
||||
|
||||
class ImportLead extends Leads {
|
||||
var $db;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array("assign_user", "modseq_number");
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** function used to set the assigned_user_id value in the column_fields when we map the username during import
|
||||
*/
|
||||
function assign_user()
|
||||
{
|
||||
global $current_user;
|
||||
$ass_user = $this->column_fields["assigned_user_id"];
|
||||
$this->db->println("assign_user ".$ass_user." cur_user=".$current_user->id);
|
||||
|
||||
if( $ass_user != $current_user->id)
|
||||
{
|
||||
$this->db->println("searching and assigning ".$ass_user);
|
||||
|
||||
$result = $this->db->pquery("select id from vtiger_users where id = ? union select groupid as id from vtiger_groups where groupid = ?", array($ass_user, $ass_user));
|
||||
if($this->db->num_rows($result)!=1)
|
||||
{
|
||||
$this->db->println("not exact records setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
if (isset($row['id']) && $row['id'] != -1)
|
||||
{
|
||||
$this->db->println("setting id as ".$row['id']);
|
||||
$this->column_fields["assigned_user_id"] = $row['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->println("setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['lead_no'] = '';
|
||||
}
|
||||
// END
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportLead() {
|
||||
parent::Leads();
|
||||
$this->log = LoggerManager::getLogger('import_lead');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportLead");
|
||||
$this->initImportableFields("Leads");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,226 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
|
||||
// Contact is used to store customer information.
|
||||
class ImportMap extends SugarBean
|
||||
{
|
||||
var $log;
|
||||
var $db;
|
||||
|
||||
// Stored vtiger_fields
|
||||
var $id;
|
||||
var $name;
|
||||
var $module;
|
||||
var $content;
|
||||
var $has_header;
|
||||
var $deleted;
|
||||
var $date_entered;
|
||||
var $date_modified;
|
||||
var $assigned_user_id;
|
||||
var $is_published;
|
||||
|
||||
var $table_name = "vtiger_import_maps";
|
||||
var $table_index= 'id';
|
||||
var $object_name = "ImportMap";
|
||||
|
||||
var $tab_name_index = Array("import_maps"=>"id");
|
||||
var $new_schema = true;
|
||||
|
||||
var $column_fields = Array("id"
|
||||
,"name"
|
||||
,"module"
|
||||
,"content"
|
||||
,"has_header"
|
||||
,"deleted"
|
||||
,"date_entered"
|
||||
,"date_modified"
|
||||
,"assigned_user_id"
|
||||
,"is_published"
|
||||
);
|
||||
|
||||
/** Constructor
|
||||
*/
|
||||
function ImportMap()
|
||||
{
|
||||
$this->log = LoggerManager::getLogger('file');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
}
|
||||
|
||||
/** function used to get the id, name, module and content as string
|
||||
* @return string Object:ImportMap id=$this->id name=$this->name module=$this->module content=$this->content
|
||||
*/
|
||||
function toString()
|
||||
{
|
||||
return "Object:ImportMap id=$this->id name=$this->name module=$this->module content=$this->content";
|
||||
}
|
||||
|
||||
/** function used to save the mapping
|
||||
* @param int $owner_id - user id who is the owner for this mapping
|
||||
* @param string $name - name of the mapping
|
||||
* @param string $module - module name in which we have saved the mapping
|
||||
* @param string $has_header - has_header value
|
||||
* @param string $content - all fields which are concatenated with & symbol
|
||||
* @return int $result - return 1 if the mapping contents updated
|
||||
*/
|
||||
function save_map( $owner_id, $name, $module, $has_header,$content )
|
||||
{
|
||||
$query_arr = array('assigned_user_id'=>$owner_id,'name'=>$name);
|
||||
|
||||
//$this->retrieve_by_string_fields($query_arr, false);
|
||||
|
||||
$result = 1;
|
||||
$this->assigned_user_id = $owner_id;
|
||||
|
||||
$this->name = $name;
|
||||
$this->module = $module;
|
||||
|
||||
$this->content = "".$this->db->getEmptyBlob()."";
|
||||
$this->has_header = $has_header;
|
||||
$this->deleted = 0;
|
||||
|
||||
//check whether this map name is already exist, if yes then overwrite the existing one, else create new
|
||||
$res = $this->db->pquery("select id from vtiger_import_maps where name=?", array(trim($name)));
|
||||
if($this->db->num_rows($res) > 0)
|
||||
{
|
||||
$this->id = $this->db->query_result($res,0,'id');
|
||||
}
|
||||
|
||||
$returnid = $this->save();
|
||||
|
||||
$this->db->updateBlob($this->table_name,"content","name='". $this->db->sql_escape_string($name)."' and module='".$module."'",$content);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/** function used to publish or unpublish the mapping
|
||||
* @param int $user_id - user id who is publishing the map
|
||||
* @param string $flag - yes or no
|
||||
* @return value - if flag is yes then update the db and return 1 otherwise return -1
|
||||
*/
|
||||
function mark_published($user_id,$flag)
|
||||
{
|
||||
$other_map = new ImportMap();
|
||||
|
||||
if ($flag == 'yes')
|
||||
{
|
||||
// if you are trying to publish your map
|
||||
// but there's another published map
|
||||
// by the same name
|
||||
|
||||
$query_arr = array('name'=>$this->name,
|
||||
'is_published'=>'yes');
|
||||
}
|
||||
else
|
||||
{
|
||||
// if you are trying to unpublish a map
|
||||
// but you own an unpublished map by the same name
|
||||
$query_arr = array('name'=>$this->name,
|
||||
'assigned_user_id'=>$user_id,
|
||||
'is_published'=>'no');
|
||||
}
|
||||
$other_map->retrieve_by_string_fields($query_arr, false);
|
||||
|
||||
if ( isset($other_map->id) )
|
||||
{
|
||||
//.. don't do it!
|
||||
return -1;
|
||||
}
|
||||
|
||||
$query = "UPDATE $this->table_name set is_published=?, assigned_user_id=? where id=?";
|
||||
$params = array($flag, $user_id, $this->id);
|
||||
$this->db->pquery($query,$params,true,"Error marking import map published: ");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/** function to retrieve all the column fields and set as properties
|
||||
* @param array $fields_array - fields array of the corresponding module
|
||||
* @return array $obj_arr - return an array which contains the retrieved column_field values as properties
|
||||
*/
|
||||
function retrieve_all_by_string_fields($fields_array)
|
||||
{
|
||||
$where_clause = $this->get_where($fields_array);
|
||||
$query = "SELECT * FROM $this->table_name $where_clause";
|
||||
$this->log->debug("Retrieve $this->object_name: ".$query);
|
||||
$result = & $this->db->query($query,true," Error: ");
|
||||
$obj_arr = array();
|
||||
|
||||
while ($row = $this->db->fetchByAssoc($result,-1,FALSE) )
|
||||
{
|
||||
$focus = new ImportMap();
|
||||
|
||||
foreach($this->column_fields as $field)
|
||||
{
|
||||
if(isset($row[$field]))
|
||||
{
|
||||
$focus->$field = $row[$field];
|
||||
}
|
||||
}
|
||||
array_push($obj_arr,$focus);
|
||||
}
|
||||
return $obj_arr;
|
||||
}
|
||||
|
||||
/** function used to get the list of saved mappings
|
||||
* @param string $module - module name which we currently importing
|
||||
* @return array $map_lists - return the list of mappings in the format of [id]=>name
|
||||
*/
|
||||
function getSavedMappingsList($module)
|
||||
{
|
||||
$query = "SELECT * FROM $this->table_name where module=? and deleted=0";
|
||||
$result = $this->db->pquery($query,array($module),true," Error: ");
|
||||
$map_lists = array();
|
||||
|
||||
while ($row = $this->db->fetchByAssoc($result,-1,FALSE) )
|
||||
{
|
||||
$map_lists[$row['id']] = $row['name'];
|
||||
}
|
||||
return $map_lists;
|
||||
}
|
||||
|
||||
/** function used to retrieve the mapping content for the passed mapid
|
||||
* @param int $mapid - mapid for the selected map
|
||||
* @return array $mapping_arr - return the array which contains the mapping_arr[name]=value from the content of the map
|
||||
*/
|
||||
function getSavedMappingContent($mapid)
|
||||
{
|
||||
$query = "SELECT * FROM $this->table_name where id=? and deleted=0";
|
||||
$result = $this->db->pquery($query,array($mapid),true," Error: ");
|
||||
$mapping_arr = array();
|
||||
|
||||
$pairs = split("&",$this->db->query_result($result,0,'content'));
|
||||
foreach ($pairs as $pair)
|
||||
{
|
||||
list($name,$value) = split("=",$pair);
|
||||
$mapping_arr["$name"] = $value;
|
||||
}
|
||||
|
||||
return $mapping_arr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: Defines the Account SugarBean Account entity with the necessary
|
||||
* methods and variables.
|
||||
********************************************************************************/
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('modules/Potentials/Potentials.php');
|
||||
require_once('modules/Documents/Documents.php');
|
||||
require_once('modules/Emails/Emails.php');
|
||||
require_once('modules/Accounts/Accounts.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
|
||||
// Account is used to store vtiger_account information.
|
||||
class ImportOpportunity extends Potentials {
|
||||
var $db;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array(
|
||||
"assign_user",
|
||||
"map_campaign_source",
|
||||
"modseq_number",
|
||||
);
|
||||
/** function used to set the assigned_user_id value in the column_fields when we map the username during import
|
||||
*/
|
||||
function assign_user()
|
||||
{
|
||||
global $current_user;
|
||||
$ass_user = $this->column_fields["assigned_user_id"];
|
||||
$this->db->println("assign_user ".$ass_user." cur_user=".$current_user->id);
|
||||
|
||||
if( $ass_user != $current_user->id)
|
||||
{
|
||||
$this->db->println("searching and assigning ".$ass_user);
|
||||
|
||||
$result = $this->db->pquery("select id from vtiger_users where id = ? union select groupid as id from vtiger_groups where groupid = ?", array($ass_user, $ass_user));
|
||||
if($this->db->num_rows($result)!=1)
|
||||
{
|
||||
$this->db->println("not exact records setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
if (isset($row['id']) && $row['id'] != -1)
|
||||
{
|
||||
$this->db->println("setting id as ".$row['id']);
|
||||
$this->column_fields["assigned_user_id"] = $row['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->println("setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/** function used to map with existing Campaign Source if the potential is map with an campaign during import
|
||||
*/
|
||||
function map_campaign_source(){
|
||||
global $adb;
|
||||
|
||||
$campaign_name = $this->column_fields['campaignid'];
|
||||
$adb->println("Entering map_campaign_source campaignid=".$campaign_name);
|
||||
|
||||
if ((! isset($campaign_name) || $campaign_name == '') ){
|
||||
$adb->println("Exit map_campaign_source. Campaign Name not set for this entity.");
|
||||
return;
|
||||
}
|
||||
|
||||
$campaign_name = trim($campaign_name);
|
||||
|
||||
//Query to get the available campaign which is not deleted
|
||||
$query = "select campaignid from vtiger_campaign inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_campaign.campaignid WHERE vtiger_campaign.campaignname=? and vtiger_crmentity.deleted=0";
|
||||
|
||||
$campaignid = $adb->query_result($adb->pquery($query, array($campaign_name)),0,'campaignid');
|
||||
|
||||
if($campaignid == '' || !isset($campaignid)){
|
||||
$campaignid = 0;
|
||||
}
|
||||
|
||||
$this->column_fields['campaignid'] = $campaignid;
|
||||
$adb->println("Exit map_campaign_source. Fetched Campaign for '".$campaign_name."' and the campaignid = $campaignid");
|
||||
}
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportOpportunity() {
|
||||
parent::Potentials();
|
||||
$this->log = LoggerManager::getLogger('import_opportunity');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
|
||||
$this->db->println("IMP ImportOpportunity");
|
||||
$this->initImportableFields("Potentials");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
// Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['potential_no'] = '';
|
||||
}
|
||||
// END
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,163 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: Defines the Account SugarBean Account entity with the necessary
|
||||
* methods and variables.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('modules/Potentials/Potentials.php');
|
||||
require_once('modules/Documents/Documents.php');
|
||||
require_once('modules/Emails/Emails.php');
|
||||
require_once('modules/Accounts/Accounts.php');
|
||||
require_once('modules/Products/Products.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
require_once('modules/Leads/Leads.php');
|
||||
|
||||
|
||||
class ImportProduct extends Products {
|
||||
var $db;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array(
|
||||
"assign_user",
|
||||
"map_vendor_name",
|
||||
"map_member_of",
|
||||
"modseq_number",
|
||||
);
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** function used to set the assigned_user_id value in the column_fields when we map the username during import
|
||||
*/
|
||||
function assign_user()
|
||||
{
|
||||
global $current_user;
|
||||
$ass_user = $this->column_fields["assigned_user_id"];
|
||||
$this->db->println("assign_user ".$ass_user." cur_user=".$current_user->id);
|
||||
|
||||
if( $ass_user != $current_user->id)
|
||||
{
|
||||
$this->db->println("searching and assigning ".$ass_user);
|
||||
|
||||
$result = $this->db->pquery("select id from vtiger_users where id = ?", array($ass_user));
|
||||
if($this->db->num_rows($result)!=1)
|
||||
{
|
||||
$this->db->println("not exact records setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
if (isset($row['id']) && $row['id'] != -1)
|
||||
{
|
||||
$this->db->println("setting id as ".$row['id']);
|
||||
$this->column_fields["assigned_user_id"] = $row['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->println("setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportProduct() {
|
||||
parent::Products();
|
||||
$this->log = LoggerManager::getLogger('import_product');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportProduct");
|
||||
$this->initImportableFields("Products");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
/** function used to map with existing Vendor if the product is map with an vendor during import
|
||||
*/
|
||||
function map_vendor_name()
|
||||
{
|
||||
global $adb;
|
||||
|
||||
$vendor_name = $this->column_fields['vendor_id'];
|
||||
$adb->println("Entering map_vendor_name vendor_id=".$vendor_name);
|
||||
|
||||
if ((! isset($vendor_name) || $vendor_name == '') )
|
||||
{
|
||||
$adb->println("Exit map_vendor_name. Vendor Name not set for this entity.");
|
||||
return;
|
||||
}
|
||||
|
||||
$vendor_name = trim($vendor_name);
|
||||
|
||||
//Query to get the available Vendor which is not deleted
|
||||
$query = "select vendorid from vtiger_vendor inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_vendor.vendorid WHERE vtiger_vendor.vendorname=? and vtiger_crmentity.deleted=0";
|
||||
$vendor_id = $adb->query_result($adb->pquery($query, array($vendor_name)),0,'vendorid');
|
||||
|
||||
if($vendor_id == '' || !isset($vendor_id))
|
||||
$vendor_id = 0;
|
||||
|
||||
$this->column_fields['vendor_id'] = $vendor_id;
|
||||
|
||||
$adb->println("Exit map_vendor_name. Fetched Vendor for '".$vendor_name."' and the vendorid = $vendor_id");
|
||||
}
|
||||
|
||||
/** Function used to map with existing Member Of(Product) if the product is map with an member of during import
|
||||
*/
|
||||
function map_member_of()
|
||||
{
|
||||
global $adb;
|
||||
|
||||
$product_name = $this->column_fields['product_id'];
|
||||
$adb->println("Entering map_member_of product_id=".$product_name);
|
||||
|
||||
if ((! isset($product_name) || $product_name == '') )
|
||||
{
|
||||
$adb->println("Exit map_member_of. Product Name(Member Of) not set for this entity.");
|
||||
return;
|
||||
}
|
||||
|
||||
$product_name = trim($product_name);
|
||||
|
||||
//Query to get the available Product which is not deleted
|
||||
$query = "select productid from vtiger_products inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_products.productid WHERE vtiger_products.productname=? and vtiger_crmentity.deleted=0";
|
||||
$product_id = $adb->query_result($adb->pquery($query, array($product_name)),0,'productid');
|
||||
|
||||
if($product_id == '' || !isset($product_id))
|
||||
$product_id = 0;
|
||||
|
||||
$this->column_fields['product_id'] = $product_id;
|
||||
|
||||
$adb->println("Exit map_member_of. Fetched Account for '".$product_name."' and the account_id = $product_id");
|
||||
}
|
||||
|
||||
//Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['product_no'] = '';
|
||||
}
|
||||
// END
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,548 @@
|
||||
<?php
|
||||
/*+********************************************************************************
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*********************************************************************************/
|
||||
|
||||
require_once('data/CRMEntity.php');
|
||||
|
||||
$count = 0;
|
||||
$skip_required_count = 0;
|
||||
|
||||
/** function used to save the records into database
|
||||
* @param array $rows - array of total rows of the csv file
|
||||
* @param array $rows1 - rows to be saved
|
||||
* @param object $focus - object of the corresponding import module
|
||||
* @param int $ret_field_count - total number of fields(columns) available in the csv file
|
||||
* @param int $col_pos_to_field - field position in the mapped array
|
||||
* @param int $start - starting row count value to import
|
||||
* @param int $recordcount - count of records to be import ie., number of records to import
|
||||
* @param string $module - import module
|
||||
* @param int $totalnoofrows - total number of rows available
|
||||
* @param int $skip_required_count - number of records skipped
|
||||
This function will redirect to the ImportStep3 if the available records is greater than the record count (ie., number of records import in a single loop) otherwise (total records less than 500) then it will be redirected to import step last
|
||||
*/
|
||||
function InsertImportRecords($rows,$rows1,$focus,$ret_field_count,$col_pos_to_field,$start,$recordcount,$module,$totalnoofrows,$skip_required_count)
|
||||
{
|
||||
global $current_user;
|
||||
global $adb;
|
||||
global $mod_strings;
|
||||
global $dup_ow_count;
|
||||
global $process_fields;
|
||||
|
||||
// MWC ** Getting vtiger_users
|
||||
$temp = get_user_array(FALSE);
|
||||
foreach ( $temp as $key=>$data)
|
||||
$users_groups_list[$data] = $key;
|
||||
|
||||
$temp = get_group_array(FALSE);
|
||||
foreach ( $temp as $key=>$data)
|
||||
$users_groups_list[$data] = $key;
|
||||
|
||||
p(print_r(users_groups_list,1));
|
||||
$adb->println("Users List : ");
|
||||
$adb->println($users_groups_list);
|
||||
$dup_count = 0;
|
||||
$count = 0;
|
||||
$dup_ow_count = 0;
|
||||
$process_fields='false';
|
||||
if($start == 0)
|
||||
{
|
||||
$_SESSION['totalrows'] = $rows;
|
||||
$_SESSION['return_field_count'] = $ret_field_count;
|
||||
$_SESSION['column_position_to_field'] = $col_pos_to_field;
|
||||
}
|
||||
$ii = $start;
|
||||
// go thru each row, process and save()
|
||||
foreach ($rows1 as $row)
|
||||
{
|
||||
$adb->println("Going to Save the row ".$ii." =====> ");
|
||||
$adb->println($row);
|
||||
global $mod_strings;
|
||||
|
||||
$do_save = 1;
|
||||
//MWC
|
||||
$my_userid = $current_user->id;
|
||||
|
||||
//If we want to set default values for some fields for each entity then we have to set here
|
||||
if($module == 'Products' || $module == 'Services')//discontinued is not null. if we unmap active, NULL will be inserted and query will fail
|
||||
$focus->column_fields['discontinued'] = 'on';
|
||||
|
||||
for($field_count = 0; $field_count < $ret_field_count; $field_count++)
|
||||
{
|
||||
p("col_pos[".$field_count."]=".$col_pos_to_field[$field_count]);
|
||||
|
||||
if ( isset( $col_pos_to_field[$field_count]) )
|
||||
{
|
||||
p("set =".$field_count);
|
||||
if (! isset( $row[$field_count]) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
p("setting");
|
||||
|
||||
// TODO: add check for user input
|
||||
// addslashes, striptags, etc..
|
||||
$field = $col_pos_to_field[$field_count];
|
||||
|
||||
//picklist function is added to avoid duplicate picklist entries
|
||||
$pick_orginal_val = getPicklist($field,$row[$field_count]);
|
||||
|
||||
if($pick_orginal_val != null)
|
||||
{
|
||||
$focus->column_fields[$field]=$pick_orginal_val;
|
||||
}
|
||||
//MWC
|
||||
elseif ( $field == "assignedto" || $field == "assigned_user_id" )
|
||||
{
|
||||
//Here we are assigning the user id in column fields, so in function assign_user (ImportLead.php and ImportProduct.php files) we should use the id instead of user name when query the user
|
||||
//or we can use $focus->column_fields['smownerid'] = $users_groups_list[$row[$field_count]];
|
||||
$focus->column_fields[$field] = $users_groups_list[trim($row[$field_count])];
|
||||
p("setting my_userid=$my_userid for user=".$row[$field_count]);
|
||||
}
|
||||
else
|
||||
{
|
||||
//$focus->$field = $row[$field_count];
|
||||
$focus->column_fields[$field] = $row[$field_count];
|
||||
p("Setting ".$field."=".$row[$field_count]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
if($focus->column_fields['notify_owner'] == '')
|
||||
{
|
||||
$focus->column_fields['notify_owner'] = '0';
|
||||
}
|
||||
if($focus->column_fields['reference'] == '')
|
||||
{
|
||||
$focus->column_fields['reference'] = '0';
|
||||
}
|
||||
if($focus->column_fields['emailoptout'] == '')
|
||||
{
|
||||
$focus->column_fields['emailoptout'] = '0';
|
||||
}
|
||||
if($focus->column_fields['donotcall'] == '')
|
||||
{
|
||||
$focus->column_fields['donotcall'] = '0';
|
||||
}
|
||||
if($focus->column_fields['discontinued'] == '')
|
||||
{
|
||||
$focus->column_fields['discontinued'] = '0';
|
||||
}
|
||||
if($focus->column_fields['active'] == '')
|
||||
{
|
||||
$focus->column_fields['active'] = '0';
|
||||
}
|
||||
p("setting done");
|
||||
|
||||
p("do save before req vtiger_fields=".$do_save);
|
||||
|
||||
$adb->println($focus->required_fields);
|
||||
foreach ($focus->required_fields as $field=>$notused)
|
||||
{
|
||||
$fv = trim($focus->column_fields[$field]);
|
||||
if (! isset($fv) || $fv == '')
|
||||
{
|
||||
// Leads Import does not allow an empty lastname because the link is created on the lastname
|
||||
// Without lastname the Lead could not be opened.
|
||||
// But what if the import file has only company and telefone information?
|
||||
// It would be stupid to skip all the companies which don't have a contact person yet!
|
||||
// So we set lastname ="?????" and the user can later enter a name.
|
||||
// So the lastname is still mandatory but may be empty.
|
||||
if ($field == 'lastname' && $module == 'Leads')
|
||||
{
|
||||
$focus->column_fields[$field] = '?????';
|
||||
}
|
||||
else
|
||||
{
|
||||
p("fv ".$field." not set");
|
||||
$do_save = 0;
|
||||
$skip_required_count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! isset($focus->column_fields["assigned_user_id"]) || $focus->column_fields["assigned_user_id"]==='' || $focus->column_fields["assigned_user_id"]===NULL) {
|
||||
$focus->column_fields["assigned_user_id"] = $my_userid;
|
||||
}
|
||||
|
||||
//added for duplicate handling
|
||||
if(is_record_exist($module,$focus))
|
||||
{
|
||||
if($do_save != 0)
|
||||
{
|
||||
$do_save = 0;
|
||||
$dup_count++;
|
||||
}
|
||||
}
|
||||
p("do save=".$do_save);
|
||||
|
||||
if ($do_save)
|
||||
{
|
||||
p("saving..");
|
||||
|
||||
if ( ! isset($focus->column_fields["assigned_user_id"]) || $focus->column_fields["assigned_user_id"]=='')
|
||||
{
|
||||
//$focus->column_fields["assigned_user_id"] = $current_user->id;
|
||||
//MWC
|
||||
$focus->column_fields["assigned_user_id"] = $my_userid;
|
||||
}
|
||||
|
||||
//handle uitype 10
|
||||
foreach($focus->importable_fields as $fieldname=>$uitype){
|
||||
$uitype = $focus->importable_fields[$fieldname];
|
||||
if($uitype == 10){
|
||||
//added to handle security permissions for related modules :: for e.g. Accounts/Contacts in Potentials
|
||||
if(method_exists($focus, "add_related_to")){
|
||||
if(!$focus->add_related_to($module, $fieldname)){
|
||||
if(array_key_exists($fieldname, $focus->required_fields)){
|
||||
$do_save = 0;
|
||||
$skip_required_count++;
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// now do any special processing for ex., map account with contact and potential
|
||||
if($process_fields == 'false'){
|
||||
$focus->process_special_fields();
|
||||
}
|
||||
$focus->saveentity($module);
|
||||
//$focus->saveentity($module);
|
||||
$return_id = $focus->id;
|
||||
|
||||
$last_import = new UsersLastImport();
|
||||
$last_import->assigned_user_id = $current_user->id;
|
||||
$last_import->bean_type = $_REQUEST['module'];
|
||||
$last_import->bean_id = $focus->id;
|
||||
$last_import->save();
|
||||
$count++;
|
||||
}
|
||||
$ii++;
|
||||
}
|
||||
|
||||
$_REQUEST['count'] = $ii;
|
||||
if(isset($_REQUEST['module']))
|
||||
$modulename = vtlib_purify($_REQUEST['module']);
|
||||
|
||||
$end = $start+$recordcount;
|
||||
$START = $start + $recordcount;
|
||||
$RECORDCOUNT = $recordcount;
|
||||
$dup_check_type = $_REQUEST['dup_type'];
|
||||
$auto_dup_type = $_REQUEST['auto_type'];
|
||||
|
||||
if($end >= $totalnoofrows) {
|
||||
$module = 'Import';//$_REQUEST['module'];
|
||||
$action = 'ImportSteplast';
|
||||
//exit;
|
||||
$imported_records = $totalnoofrows - $skip_required_count;
|
||||
if($imported_records == $totalnoofrows) {
|
||||
$skip_required_count = 0;
|
||||
}
|
||||
if($dup_check_type == "auto") {
|
||||
if($auto_dup_type == "ignore") {
|
||||
$dup_info = $mod_strings['Duplicate_Records_Skipped_Info'].$dup_count;
|
||||
$imported_records -= $dup_count;
|
||||
}
|
||||
else if($auto_dup_type == "overwrite") {
|
||||
$dup_info = $mod_strings['Duplicate_Records_Overwrite_Info'].$dup_ow_count;
|
||||
$imported_records -= $dup_ow_count;
|
||||
}
|
||||
}
|
||||
else
|
||||
$dup_info = "";
|
||||
|
||||
if($imported_records < 0) $imported_records = 0;
|
||||
|
||||
$message= urlencode("<b>".$mod_strings['LBL_SUCCESS']."</b>"."<br><br>" .$mod_strings['LBL_SUCCESS_1']." $imported_records " .$mod_strings['of'].' '.$totalnoofrows."<br><br>" .$mod_strings['LBL_SKIPPED_1']." $skip_required_count <br><br>".$dup_info );
|
||||
} else {
|
||||
$module = 'Import';
|
||||
$action = 'ImportStep3';
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
setTimeout("b()",1000);
|
||||
function b()
|
||||
{
|
||||
document.location.href="index.php?action=<?php echo $action?>&module=<?php echo $module?>&modulename=<?php echo $modulename?>&startval=<?php echo $end?>&recordcount=<?php echo $RECORDCOUNT?>&noofrows=<?php echo $totalnoofrows?>&message=<?php echo $message?>&skipped_record_count=<?php echo $skip_required_count?>&parenttab=<?php echo vtlib_purify($_SESSION['import_parenttab'])?>&dup_type=<?php echo $dup_check_type?>&auto_type=<?php echo $auto_dup_type?>";
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
$_SESSION['import_display_message'] = '<br>'.$start.' '.$mod_strings['to'].' '.$end.' '.$mod_strings['of'].' '.$totalnoofrows.' '.$mod_strings['are_imported_succesfully'];
|
||||
//return $_SESSION['import_display_message'];
|
||||
}
|
||||
|
||||
function is_record_exist($module,$focus)
|
||||
{
|
||||
global $adb;
|
||||
global $dup_ow_count;
|
||||
$dup_check_type = $_REQUEST['dup_type'];
|
||||
$auto_dup_type = "";
|
||||
$sec_parameter = "";
|
||||
if($dup_check_type == 'auto')
|
||||
{
|
||||
$auto_dup_type = $_REQUEST['auto_type'];
|
||||
}
|
||||
if($auto_dup_type == "ignore")
|
||||
{
|
||||
$sec_parameter = getSecParameterforMerge($module);
|
||||
if($module == "Leads")
|
||||
{
|
||||
$sel_qry = "select count(*) as count from vtiger_leaddetails
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_leaddetails.leadid
|
||||
inner join vtiger_leadsubdetails on vtiger_leaddetails.leadid = vtiger_leadsubdetails.leadsubscriptionid
|
||||
inner join vtiger_leadaddress on vtiger_leadaddress.leadaddressid = vtiger_leaddetails.leadid
|
||||
left join vtiger_leadscf on vtiger_leadscf.leadid = vtiger_leaddetails.leadid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
where vtiger_crmentity.deleted = 0 AND vtiger_leaddetails.converted = 0 $sec_parameter";
|
||||
}
|
||||
else if($module == "Accounts")
|
||||
{
|
||||
$sel_qry = "SELECT count(*) as count FROM vtiger_account
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_account.accountid
|
||||
INNER JOIN vtiger_accountbillads ON vtiger_account.accountid = vtiger_accountbillads.accountaddressid
|
||||
INNER JOIN vtiger_accountshipads ON vtiger_account.accountid = vtiger_accountshipads.accountaddressid
|
||||
LEFT JOIN vtiger_accountscf ON vtiger_account.accountid = vtiger_accountscf.accountid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
WHERE vtiger_crmentity.deleted = 0 $sec_parameter";
|
||||
}
|
||||
else if($module == "Contacts")
|
||||
{
|
||||
$sel_qry = "SELECT count(*) as count FROM vtiger_contactdetails
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid
|
||||
INNER JOIN vtiger_contactaddress ON vtiger_contactaddress.contactaddressid = vtiger_contactdetails.contactid
|
||||
INNER JOIN vtiger_contactsubdetails ON vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_contactscf ON vtiger_contactscf.contactid = vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_customerdetails ON vtiger_customerdetails.customerid=vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
WHERE vtiger_crmentity.deleted = 0 $sec_parameter";
|
||||
}
|
||||
else if($module == "Products")
|
||||
{
|
||||
$sel_qry = "SELECT count(*) as count FROM vtiger_products
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_products.productid
|
||||
LEFT JOIN vtiger_productcf ON vtiger_productcf.productid = vtiger_products.productid
|
||||
WHERE vtiger_crmentity.deleted = 0 ";
|
||||
}
|
||||
else if($module == "Vendors")
|
||||
{
|
||||
$sel_qry = "select count(*) as count from vtiger_vendor
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_vendor.vendorid
|
||||
LEFT JOIN vtiger_vendorcf ON vtiger_vendorcf.vendorid = vtiger_vendor.vendorid
|
||||
WHERE vtiger_crmentity.deleted = 0";
|
||||
} else {
|
||||
$sel_qry = "select count(*) as count from $focus->table_name
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = $focus->table_name.$focus->table_index";
|
||||
// Consider custom table join as well.
|
||||
if(isset($focus->customFieldTable)) {
|
||||
$sel_qry .= " INNER JOIN ".$focus->customFieldTable[0]." ON ".$focus->customFieldTable[0].'.'.$focus->customFieldTable[1] .
|
||||
" = $focus->table_name.$focus->table_index";
|
||||
}
|
||||
$sel_qry .= " LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id
|
||||
WHERE vtiger_crmentity.deleted = 0 $sec_parameter";
|
||||
}
|
||||
$sel_qry .= get_where_clause($module,$focus->column_fields);
|
||||
$result = $adb->query($sel_qry);
|
||||
$cnt = $adb->query_result($result,0,"count");
|
||||
if($cnt > 0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if($auto_dup_type == "overwrite")
|
||||
{
|
||||
return overwrite_duplicate_records($module,$focus);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
//function to get the where clause for the duplicate - select query
|
||||
function get_where_clause($module,$column_fields) {
|
||||
global $current_user, $dup_ow_count, $adb;
|
||||
$where_clause = "";
|
||||
$field_values_array=getFieldValues($module);
|
||||
$field_values=$field_values_array['fieldnames_list'];
|
||||
$tblname_field_arr = explode(",",$field_values);
|
||||
$uitype_arr = $field_values_array['fieldname_uitype'];
|
||||
|
||||
$focus = CRMEntity::getInstance($module);
|
||||
|
||||
foreach($tblname_field_arr as $val) {
|
||||
list($tbl,$col,$fld) = explode(".",$val);
|
||||
$col_name = $tbl ."." . $col;
|
||||
$field_value=$column_fields[$fld];
|
||||
|
||||
if($fld == $focus->table_index && $column_fields[$focus->table_index] !='' && !is_integer($column_fields[$focus->table_index])) {
|
||||
$field_value = getEntityId($module, $column_fields[$focus->table_index]);
|
||||
}
|
||||
|
||||
if(is_uitype($uitype_arr[$fld],'_users_list_') && $field_value == '') {
|
||||
$field_value = $current_user->id;
|
||||
}
|
||||
$where_clause .= " AND ifnull(". $adb->sql_escape_string($col_name) .",'') = ifnull('". $adb->sql_escape_string($field_value) ."','') ";
|
||||
}
|
||||
return $where_clause;
|
||||
}
|
||||
//function to overwrite the existing duplicate records with the importing record's values
|
||||
function overwrite_duplicate_records($module,$focus)
|
||||
{
|
||||
global $adb;
|
||||
global $dup_ow_count;
|
||||
global $process_fields;
|
||||
|
||||
//Fix for 6187 : overwriting records during duplicate merge to handle uitype 10
|
||||
//handle uitype 10
|
||||
foreach($focus->importable_fields as $fieldname=>$uitype){
|
||||
$uitype = $focus->importable_fields[$fieldname];
|
||||
if($uitype == 10){
|
||||
//added to handle security permissions for related modules :: for e.g. Accounts/Contacts in Potentials
|
||||
if(method_exists($focus, "add_related_to")){
|
||||
if(!$focus->add_related_to($module, $fieldname)){
|
||||
if(array_key_exists($fieldname, $focus->required_fields)){
|
||||
$do_save = 0;
|
||||
$skip_required_count++;
|
||||
continue 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$where_clause = "";
|
||||
$where = get_where_clause($module,$focus->column_fields);
|
||||
$sec_parameter = getSecParameterforMerge($module);
|
||||
if($module == "Leads")
|
||||
{
|
||||
$sel_qry = "select vtiger_leaddetails.leadid from vtiger_leaddetails
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_leaddetails.leadid
|
||||
inner join vtiger_leadsubdetails on vtiger_leaddetails.leadid = vtiger_leadsubdetails.leadsubscriptionid
|
||||
inner join vtiger_leadaddress on vtiger_leadaddress.leadaddressid = vtiger_leaddetails.leadid
|
||||
left join vtiger_leadscf on vtiger_leadscf.leadid = vtiger_leaddetails.leadid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
where vtiger_crmentity.deleted = 0 AND vtiger_leaddetails.converted = 0 $where $sec_parameter order by vtiger_leaddetails.leadid ASC";
|
||||
}
|
||||
else if($module == "Accounts")
|
||||
{
|
||||
$sel_qry = "SELECT vtiger_account.accountid FROM vtiger_account
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_account.accountid
|
||||
INNER JOIN vtiger_accountbillads ON vtiger_account.accountid = vtiger_accountbillads.accountaddressid
|
||||
INNER JOIN vtiger_accountshipads ON vtiger_account.accountid = vtiger_accountshipads.accountaddressid
|
||||
LEFT JOIN vtiger_accountscf ON vtiger_account.accountid = vtiger_accountscf.accountid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
WHERE vtiger_crmentity.deleted = 0 $where $sec_parameter order by vtiger_account.accountid ASC";
|
||||
}
|
||||
else if($module == "Contacts")
|
||||
{
|
||||
$sel_qry = "SELECT vtiger_contactdetails.contactid FROM vtiger_contactdetails
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid
|
||||
INNER JOIN vtiger_contactaddress ON vtiger_contactaddress.contactaddressid = vtiger_contactdetails.contactid
|
||||
INNER JOIN vtiger_contactsubdetails ON vtiger_contactsubdetails.contactsubscriptionid = vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_contactscf ON vtiger_contactscf.contactid = vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_customerdetails ON vtiger_customerdetails.customerid=vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid
|
||||
WHERE vtiger_crmentity.deleted = 0 $where $sec_parameter order by vtiger_contactdetails.contactid ASC";
|
||||
}
|
||||
else if($module == "Products")
|
||||
{
|
||||
$sel_qry = "SELECT vtiger_products.productid FROM vtiger_products
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_products.productid
|
||||
LEFT JOIN vtiger_productcf ON vtiger_productcf.productid = vtiger_products.productid
|
||||
WHERE vtiger_crmentity.deleted = 0 $where order by vtiger_products.productid ASC";
|
||||
}
|
||||
else if($module == "Vendors")
|
||||
{
|
||||
$sel_qry = "SELECT vtiger_vendor.vendorid FROM vtiger_vendor
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_vendor.vendorid
|
||||
LEFT JOIN vtiger_vendorcf ON vtiger_vendorcf.vendorid = vtiger_vendor.vendorid
|
||||
WHERE vtiger_crmentity.deleted = 0 $where order by vtiger_vendor.vendorid ASC";
|
||||
}
|
||||
else {
|
||||
$sel_qry = "SELECT $focus->table_name.$focus->table_index FROM $focus->table_name
|
||||
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = $focus->table_name.$focus->table_index";
|
||||
// Consider custom table join as well.
|
||||
if(isset($focus->customFieldTable)) {
|
||||
$sel_qry .= " INNER JOIN ".$focus->customFieldTable[0]." ON ".$focus->customFieldTable[0].'.'.$focus->customFieldTable[1] .
|
||||
" = $focus->table_name.$focus->table_index";
|
||||
}
|
||||
$sel_qry .= " LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id
|
||||
WHERE vtiger_crmentity.deleted = 0 $where $sec_parameter order by $focus->table_name.$focus->table_index ASC";
|
||||
}
|
||||
$result = $adb->query($sel_qry);
|
||||
$no_rows = $adb->num_rows($result);
|
||||
// now do any special processing for ex., map account with contact and potential
|
||||
$focus->process_special_fields();
|
||||
$process_fields='true';
|
||||
$moduleObj = new $module();
|
||||
if($no_rows > 0)
|
||||
{
|
||||
for($i=0;$i<$no_rows;$i++)
|
||||
{
|
||||
$id_field = $moduleObj->table_index;
|
||||
$id_value = $adb->query_result($result,$i,$id_field);
|
||||
if($i == 0)
|
||||
{
|
||||
$moduleObj->mode = "edit";
|
||||
$moduleObj->id = $id_value;
|
||||
$moduleObj->column_fields = $focus->column_fields;
|
||||
$moduleObj->save($module);
|
||||
}
|
||||
else{
|
||||
DeleteEntity($module,$module,$moduleObj,$id_value,"");
|
||||
}
|
||||
}
|
||||
$dup_ow_count = $dup_ow_count+$no_rows;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
//picklist function is added to avoid duplicate picklist entries
|
||||
function getPicklist($field,$value)
|
||||
{
|
||||
global $table_picklist,$converted_table_picklist_values;
|
||||
|
||||
//for the first run these will be defined and for the subsequent redirections
|
||||
//pick up from session.
|
||||
if(is_array($table_picklist)){
|
||||
$_SESSION['import_table_picklist'] = $table_picklist;
|
||||
}else{
|
||||
$table_picklist = $_SESSION['import_table_picklist'];
|
||||
}
|
||||
if(is_array($converted_table_picklist_values)){
|
||||
$_SESSION['import_converted_picklist_values'] = $converted_table_picklist_values;
|
||||
}else{
|
||||
$converted_table_picklist_values = $_SESSION['import_converted_picklist_values'];
|
||||
}
|
||||
|
||||
$orginal_val = $table_picklist[$field];
|
||||
$converted_val = $converted_table_picklist_values[$field];
|
||||
$temp_val = strtolower($value);
|
||||
if(is_array($converted_val) && in_array($temp_val,$converted_val)) {
|
||||
$existkey = array_search($temp_val,$converted_val);
|
||||
$correct_val=$orginal_val[$existkey];
|
||||
return $correct_val;
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/*+********************************************************************************
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('modules/Import/ImportLead.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportOpportunity.php');
|
||||
require_once('modules/Import/ImportProduct.php');
|
||||
require_once('modules/Import/ImportMap.php');
|
||||
require_once('modules/Import/ImportTicket.php');
|
||||
require_once('modules/Import/ImportVendors.php');
|
||||
require_once('include/utils/CommonUtils.php');
|
||||
|
||||
global $mod_strings;
|
||||
global $app_strings;
|
||||
global $app_list_strings;
|
||||
global $current_user,$default_charset;
|
||||
|
||||
global $import_mod_strings;
|
||||
|
||||
$focus = 0;
|
||||
|
||||
global $theme;
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
$log->info($mod_strings['LBL_MODULE_NAME'] . " Upload Step 1");
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("IMP", $import_mod_strings);
|
||||
|
||||
$smarty->assign("CATEGORY", htmlspecialchars($_REQUEST['parenttab'],ENT_QUOTES,$default_charset));
|
||||
|
||||
$import_object_array = Array(
|
||||
"Leads"=>"ImportLead",
|
||||
"Accounts"=>"ImportAccount",
|
||||
"Contacts"=>"ImportContact",
|
||||
"Potentials"=>"ImportOpportunity",
|
||||
"Products"=>"ImportProduct",
|
||||
"HelpDesk"=>"ImportTicket",
|
||||
"Vendors"=>"ImportVendors"
|
||||
);
|
||||
|
||||
if(isset($_REQUEST['module']) && $_REQUEST['module'] != '')
|
||||
{
|
||||
$object_name = $import_object_array[$_REQUEST['module']];
|
||||
// vtlib customization: Hook added to enable import for un-mapped modules
|
||||
$module = $_REQUEST['module'];
|
||||
if($object_name == null) {
|
||||
checkFileAccess("modules/$module/$module.php");
|
||||
require_once("modules/$module/$module.php");
|
||||
$object_name = $module;
|
||||
$callInitImport = true;
|
||||
}
|
||||
// END
|
||||
$focus = new $object_name();
|
||||
// vtlib customization: Call the import initializer
|
||||
if($callInitImport) $focus->initImport($module);
|
||||
// END
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "Sorry! Import Option is not provided for this module.";
|
||||
exit;
|
||||
}
|
||||
|
||||
if(isset($_REQUEST['return_module'])) $smarty->assign("RETURN_MODULE", vtlib_purify($_REQUEST['return_module']));
|
||||
if(isset($_REQUEST['return_action'])) $smarty->assign("RETURN_ACTION", vtlib_purify($_REQUEST['return_action']));
|
||||
|
||||
$smarty->assign("THEME", $theme);
|
||||
$smarty->assign("IMAGE_PATH", $image_path);
|
||||
$smarty->assign("PRINT_URL", "phprint.php?jt=".session_id().$GLOBALS['request_string']);
|
||||
|
||||
$smarty->assign("HEADER", $app_strings['LBL_IMPORT']." ". $mod_strings['LBL_MODULE_NAME']);
|
||||
$smarty->assign("HAS_HEADER_CHECKED"," CHECKED");
|
||||
|
||||
$smarty->assign("MODULE", $_REQUEST['module']);
|
||||
$smarty->assign("MODULELABEL", getTranslatedString($_REQUEST['module'],$_REQUEST['module']));
|
||||
$smarty->assign("SOURCE", $_REQUEST['source']);
|
||||
|
||||
//we have set this as default. upto 4.2.3 we have Outlook, Act, SF formats. but now CUSTOM is enough to import
|
||||
$lang_key = "CUSTOM";
|
||||
$smarty->assign("INSTRUCTIONS_TITLE",$mod_strings["LBL_IMPORT_{$lang_key}_TITLE"]);
|
||||
|
||||
for($i = 1; isset($mod_strings["LBL_{$lang_key}_NUM_$i"]);$i++)
|
||||
{
|
||||
$smarty->assign("STEP_NUM",$mod_strings["LBL_NUM_$i"]);
|
||||
$smarty->assign("INSTRUCTION_STEP",$mod_strings["LBL_{$lang_key}_NUM_$i"]);
|
||||
}
|
||||
|
||||
$smarty->display("ImportStep1.tpl");
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,459 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('modules/Import/ImportLead.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportOpportunity.php');
|
||||
require_once('modules/Import/ImportProduct.php');
|
||||
require_once('modules/Import/Forms.php');
|
||||
require_once('modules/Import/parse_utils.php');
|
||||
require_once('modules/Import/ImportMap.php');
|
||||
//Pavani: Import this file to Support Imports for Trouble tickets and vendors
|
||||
require_once('modules/Import/ImportTicket.php');
|
||||
require_once('modules/Import/ImportVendors.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('include/CustomFieldUtil.php');
|
||||
require_once('include/utils/CommonUtils.php');
|
||||
|
||||
@session_unregister('column_position_to_field');
|
||||
@session_unregister('totalrows');
|
||||
@session_unregister('recordcount');
|
||||
@session_unregister('startval');
|
||||
@session_unregister('return_field_count');
|
||||
$_SESSION['totalrows'] = '';
|
||||
$_SESSION['recordcount'] = 250;
|
||||
$_SESSION['startval'] = 0;
|
||||
|
||||
global $mod_strings;
|
||||
global $mod_list_strings;
|
||||
global $app_strings;
|
||||
global $app_list_strings;
|
||||
global $current_user,$default_charset;
|
||||
global $import_file_name;
|
||||
global $upload_maxsize;
|
||||
|
||||
global $import_dir;
|
||||
$focus = 0;
|
||||
$max_lines = 3;
|
||||
|
||||
$delimiter = ',';
|
||||
if (isset($_REQUEST['delimiter']))
|
||||
{
|
||||
$delimiter = vtlib_purify($_REQUEST['delimiter']);
|
||||
}
|
||||
|
||||
$has_header = 0;
|
||||
if (isset($_REQUEST['has_header']))
|
||||
{
|
||||
$has_header = 1;
|
||||
}
|
||||
|
||||
global $theme;
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
if (!is_uploaded_file($_FILES['userfile']['tmp_name']) )
|
||||
{
|
||||
show_error_import($mod_strings['LBL_IMPORT_MODULE_ERROR_NO_UPLOAD']);
|
||||
exit;
|
||||
}
|
||||
else if ($_FILES['userfile']['size'] > $upload_maxsize)
|
||||
{
|
||||
show_error_import( $mod_strings['LBL_IMPORT_MODULE_ERROR_LARGE_FILE'] . " ". $upload_maxsize. " ". $mod_strings['LBL_IMPORT_MODULE_ERROR_LARGE_FILE_END']);
|
||||
exit;
|
||||
}
|
||||
if( !is_writable( $import_dir ))
|
||||
{
|
||||
show_error_import($mod_strings['LBL_IMPORT_MODULE_NO_DIRECTORY'].$import_dir.$mod_strings['LBL_IMPORT_MODULE_NO_DIRECTORY_END']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$tmp_file_name = $import_dir. "IMPORT_".$current_user->id;
|
||||
|
||||
move_uploaded_file($_FILES['userfile']['tmp_name'], $tmp_file_name);
|
||||
|
||||
// Convert ISO-8859 file (as saved by MS Excel) into UTF-8 to preserve umlauts and accents
|
||||
if ($_REQUEST["format"] != "UTF-8")
|
||||
{
|
||||
$fh = fopen($tmp_file_name,"r");
|
||||
$content = fread($fh, filesize($tmp_file_name));
|
||||
fclose($fh);
|
||||
|
||||
if (function_exists("mb_convert_encoding"))
|
||||
{
|
||||
$content = mb_convert_encoding($content, 'UTF-8', $_REQUEST["format"]);
|
||||
} else {
|
||||
$content = iconv('UTF-8', $_REQUEST["format"], $content);
|
||||
}
|
||||
|
||||
$fh = fopen($tmp_file_name,"w");
|
||||
fwrite($fh, $content);
|
||||
fclose($fh);
|
||||
}
|
||||
|
||||
// Now parse the file and look for errors
|
||||
$ret_value = 0;
|
||||
|
||||
if ($_REQUEST['source'] == 'act')
|
||||
{
|
||||
$ret_value = parse_import_act($tmp_file_name,$delimiter,$max_lines,$has_header);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ret_value = parse_import($tmp_file_name,$delimiter,$max_lines,$has_header);
|
||||
}
|
||||
|
||||
if ($ret_value == -1)
|
||||
{
|
||||
show_error_import( $mod_strings['LBL_CANNOT_OPEN'] );
|
||||
exit;
|
||||
}
|
||||
else if ($ret_value == -2)
|
||||
{
|
||||
show_error_import( $mod_strings['LBL_NOT_SAME_NUMBER'] );
|
||||
exit;
|
||||
}
|
||||
else if ( $ret_value == -3 )
|
||||
{
|
||||
show_error_import( $mod_strings['LBL_NO_LINES'] );
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows = $ret_value['rows'];
|
||||
$ret_field_count = $ret_value['field_count'];
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("TMP_FILE", $tmp_file_name );
|
||||
$smarty->assign("SOURCE", vtlib_purify($_REQUEST['source']));
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
|
||||
if(isset($_REQUEST['return_module'])) $smarty->assign("RETURN_MODULE", vtlib_purify($_REQUEST['return_module']));
|
||||
if(isset($_REQUEST['return_action'])) $smarty->assign("RETURN_ACTION", vtlib_purify($_REQUEST['return_action']));
|
||||
|
||||
$smarty->assign("THEME", $theme);
|
||||
$smarty->assign("IMAGE_PATH", $image_path);
|
||||
$smarty->assign("PRINT_URL", "phprint.php?jt=".session_id().$GLOBALS['request_string']);
|
||||
|
||||
$smarty->assign("HEADER", $app_strings['LBL_IMPORT']." ". $mod_strings['LBL_MODULE_NAME']);
|
||||
$smarty->assign("HASHEADER", $has_header);
|
||||
|
||||
$import_object_array = Array(
|
||||
"Leads"=>"ImportLead",
|
||||
"Accounts"=>"ImportAccount",
|
||||
"Contacts"=>"ImportContact",
|
||||
"Potentials"=>"ImportOpportunity",
|
||||
"Products"=>"ImportProduct",
|
||||
"HelpDesk"=>"ImportTicket",
|
||||
"Vendors"=>"ImportVendors"
|
||||
);
|
||||
|
||||
if(isset($_REQUEST['module']) && $_REQUEST['module'] != '')
|
||||
{
|
||||
$object_name = $import_object_array[$_REQUEST['module']];
|
||||
// vtlib customization: Hook added to enable import for un-mapped modules
|
||||
$module = $_REQUEST['module'];
|
||||
if($object_name == null) {
|
||||
checkFileAccess("modules/$module/$module.php");
|
||||
require_once("modules/$module/$module.php");
|
||||
$object_name = $module;
|
||||
$callInitImport = true;
|
||||
}
|
||||
// END
|
||||
$focus = new $object_name();
|
||||
// vtlib customization: Call the import initializer
|
||||
if($callInitImport) $focus->initImport($module);
|
||||
//initialized the required fields,used to check for mandatory fields while importing
|
||||
$focus->initRequiredFields($module);
|
||||
// END
|
||||
}
|
||||
else
|
||||
{
|
||||
$focus = new ImportContact();
|
||||
}
|
||||
|
||||
|
||||
$total_num_rows=sizeof($rows);
|
||||
$firstrow = $rows[0];
|
||||
if($total_num_rows >1 )
|
||||
{
|
||||
$secondrow = $rows[1];
|
||||
}
|
||||
if($total_num_rows >2)
|
||||
{
|
||||
$thirdrow = $rows[2];
|
||||
}
|
||||
|
||||
//If the cell value is very large then UI mapping will be collpased. So we will display partial text
|
||||
foreach($firstrow as $ind => $val)
|
||||
{
|
||||
if(strlen($val) > 30)
|
||||
$firstrow[$ind] = substr(to_html($val),0,30)." ..........";
|
||||
else
|
||||
$firstrow[$ind] = to_html($val);
|
||||
}
|
||||
if (isset($secondrow)) { //Asha: Fix for ticket #4432
|
||||
foreach($secondrow as $ind => $val)
|
||||
{
|
||||
if(strlen($val) > 30)
|
||||
$secondrow[$ind] = substr(to_html($val),0,30)." ..........";
|
||||
else
|
||||
$secondrow[$ind] = to_html($val);
|
||||
|
||||
}
|
||||
if (isset($thirdrow)) { //Asha: Fix for ticket #4432
|
||||
foreach($thirdrow as $ind => $val)
|
||||
{
|
||||
if(strlen($val) > 30)
|
||||
$thirdrow[$ind] = substr(to_html($val),0,30)." ..........";
|
||||
else
|
||||
$thirdrow[$ind] = to_html($val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$field_map = $outlook_contacts_field_map;
|
||||
|
||||
$mapping_file = new ImportMap();
|
||||
$saved_map_lists = $mapping_file->getSavedMappingsList($_REQUEST['return_module']);
|
||||
$map_list_combo = '<select class="small" name="source" id="saved_source" disabled onchange="getImportSavedMap(this)">';
|
||||
$map_list_combo .= '<OPTION value="-1" selected>--Select--</OPTION>';
|
||||
if(is_array($saved_map_lists))
|
||||
{
|
||||
foreach($saved_map_lists as $mapid => $mapname)
|
||||
{
|
||||
$map_list_combo .= '<OPTION value='.$mapid.'>'.$mapname.'</OPTION>';
|
||||
}
|
||||
}
|
||||
$map_list_combo .= '</select>';
|
||||
//This link is Delete link for the selected mapping
|
||||
$map_list_combo .= " <span id='delete_mapping' style='visibility:hidden;'><a href='javascript:; deleteMapping();'>Del</a></span>";
|
||||
$smarty->assign("SAVED_MAP_LISTS",$map_list_combo);
|
||||
|
||||
|
||||
if ( count($mapping_arr) > 0){
|
||||
$field_map = &$mapping_arr;
|
||||
}else if ($_REQUEST['source'] == 'other'){
|
||||
if ($_REQUEST['module'] == 'Contacts'){
|
||||
$field_map = $outlook_contacts_field_map;
|
||||
}else if ($_REQUEST['module'] == 'Accounts'){
|
||||
$field_map = $outlook_accounts_field_map;
|
||||
}else if ($_REQUEST['module'] == 'Potentials'){
|
||||
$field_map = $salesforce_opportunities_field_map;
|
||||
}
|
||||
}
|
||||
|
||||
$add_one = 1;
|
||||
$start_at = 0;
|
||||
|
||||
if($has_header){
|
||||
$add_one = 0;
|
||||
$start_at = 1;
|
||||
}
|
||||
|
||||
for($row_count = $start_at; $row_count < count($rows); $row_count++){
|
||||
$smarty->assign("ROWCOUNT", $row_count + $add_one);
|
||||
}
|
||||
|
||||
$list_string_key = strtolower($_REQUEST['module']);
|
||||
$list_string_key .= "_import_fields";
|
||||
|
||||
//Now we are getting the import fields from DB instead of hard coded array $mod_list_strings
|
||||
$translated_column_fields = getImportFieldsList($_REQUEST['module']);//$mod_list_strings[$list_string_key];
|
||||
|
||||
$cnt=1;
|
||||
for($field_count = 0; $field_count < $ret_field_count; $field_count++){
|
||||
|
||||
$smarty->assign("COLCOUNT", $field_count + 1);
|
||||
$suggest = "";
|
||||
|
||||
if($_REQUEST['module']=='Accounts'){
|
||||
$tablename='account';
|
||||
$focus1=new Accounts();
|
||||
}
|
||||
if($_REQUEST['module']=='Contacts'){
|
||||
$tablename='contactdetails';
|
||||
$focus1=new Contacts();
|
||||
}
|
||||
if($_REQUEST['module']=='Leads'){
|
||||
$tablename='leaddetails';
|
||||
$focus1=new Leads();
|
||||
}
|
||||
if($_REQUEST['module']=='Potentials'){
|
||||
$tablename='potential';
|
||||
$focus1=new Potentials();
|
||||
}
|
||||
if($_REQUEST['module']=='Products'){
|
||||
$tablename='products';
|
||||
$focus1=new Products();
|
||||
}
|
||||
if($_REQUEST['module']=='HelpDesk'){
|
||||
$tablename='troubletickets';
|
||||
$focus1=new HelpDesk();
|
||||
}
|
||||
if($_REQUEST['module']=='Vendors'){
|
||||
$tablename='Vendors';
|
||||
$focus1=new Vendors();
|
||||
}
|
||||
|
||||
// vtlib customization: Hook to provide generic import for other modules
|
||||
if($_REQUEST['module']) {
|
||||
$focus1 = CRMEntity::getInstance($_REQUEST['module']);
|
||||
$tablename = $focus->table_name;
|
||||
}
|
||||
// END
|
||||
|
||||
$smarty->assign("FIRSTROW",$firstrow);
|
||||
$smarty->assign("SECONDROW",$secondrow);
|
||||
$smarty->assign("THIRDROW",$thirdrow);
|
||||
$smarty_array[$field_count + 1] = getFieldSelect( $focus->importable_fields,
|
||||
$field_count,
|
||||
$focus->required_fields,
|
||||
$suggest,
|
||||
$translated_column_fields,
|
||||
$tablename
|
||||
);
|
||||
|
||||
$pos = 0;
|
||||
foreach($rows as $row ){
|
||||
if( isset($row[$field_count]) && $row[$field_count] != ''){
|
||||
$smarty->assign("CELL",htmlspecialchars($row[$field_count]));
|
||||
}
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
@session_unregister('import_delimiter');
|
||||
@session_unregister('import_has_header');
|
||||
@session_unregister('import_firstrow');
|
||||
@session_unregister('import_field_map');
|
||||
@session_unregister('import_module_object_column_fields');
|
||||
@session_unregister('import_module_field_count');
|
||||
@session_unregister('import_module_object_required_fields');
|
||||
@session_unregister('import_module_translated_column_fields');
|
||||
$_SESSION['import_delimiter'] = $delimiter;
|
||||
$_SESSION['import_has_header'] = $has_header;
|
||||
$_SESSION['import_firstrow'] = $firstrow;
|
||||
$_SESSION['import_field_map'] = $field_map;
|
||||
$_SESSION['import_module_object_column_fields'] = $focus->importable_fields;
|
||||
$_SESSION['import_module_field_count'] = $field_count;
|
||||
$_SESSION['import_module_object_required_fields'] = $focus1->required_fields;
|
||||
$_SESSION['import_module_translated_column_fields'] = $translated_column_fields;
|
||||
|
||||
$smarty->assign("SELECTFIELD",$smarty_array);
|
||||
$smarty->assign("ROW", $row);
|
||||
|
||||
$module_key = "LBL_".strtoupper($_REQUEST['module'])."_NOTE_";
|
||||
|
||||
for ($i = 1;isset($mod_strings[$module_key.$i]);$i++){
|
||||
$smarty->assign("NOTETEXT", $mod_strings[$module_key.$i]);
|
||||
}
|
||||
|
||||
if($has_header){
|
||||
$smarty->assign("HAS_HEADER", 'on');
|
||||
}else{
|
||||
$smarty->assign("HAS_HEADER", 'off');
|
||||
}
|
||||
|
||||
$smarty->assign("AVALABLE_FIELDS", getMergeFields($module,"available_fields"));
|
||||
$smarty->assign("FIELDS_TO_MERGE", getMergeFields($module,"fileds_to_merge"));
|
||||
if(isPermitted($module,'DuplicatesHandling','') == 'yes'){
|
||||
$smarty->assign("DUPLICATESHANDLING", 'DuplicatesHandling');
|
||||
}
|
||||
|
||||
$smarty->assign("MODULE", vtlib_purify($_REQUEST['module']));
|
||||
$smarty->assign("MODULELABEL", getTranslatedString($_REQUEST['module'],$_REQUEST['module']));
|
||||
$parenttab = getParentTab();
|
||||
$smarty->assign('CATEGORY' , $parenttab);
|
||||
$_SESSION['import_parenttab'] = $parenttab;
|
||||
$smarty->assign("JAVASCRIPT2", get_readonly_js() );
|
||||
|
||||
$smarty->display('ImportStep2.tpl');
|
||||
|
||||
?>
|
||||
<script language="javascript" type="text/javascript">
|
||||
function validate_import_map()
|
||||
{
|
||||
var tagName;
|
||||
var count = 0;
|
||||
var field_count = "<?php echo $field_count; ?>";
|
||||
var required_fields = new Array();
|
||||
var required_fields_name = new Array();
|
||||
var seq_string = '';
|
||||
<?php
|
||||
foreach($focus->required_fields as $name => $index)
|
||||
{
|
||||
?>
|
||||
required_fields[count] = "<?php echo $name; ?>";
|
||||
required_fields_name[count] = "<?php echo $translated_column_fields[$name]; ?>";
|
||||
count = count + 1;
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
for(loop_count = 0; loop_count<field_count;loop_count++)
|
||||
{
|
||||
tagName = document.getElementById('colnum'+loop_count);
|
||||
optionData = tagName.options[tagName.selectedIndex].value;
|
||||
|
||||
if(optionData != -1)
|
||||
{
|
||||
tmp = seq_string.indexOf("\""+optionData+"\"");
|
||||
if(tmp == -1)
|
||||
{
|
||||
seq_string = seq_string + "\""+optionData+"\"";
|
||||
}
|
||||
else
|
||||
{
|
||||
//if a vtiger_field mapped more than once, alert the user and return
|
||||
alert("'"+tagName.options[tagName.selectedIndex].text+"<?php echo $mod_strings['PLEASE_CHECK_MAPPING']?>");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//check whether the mandatory vtiger_fields have been mapped.
|
||||
for(inner_loop = 0; inner_loop<required_fields.length;inner_loop++)
|
||||
{
|
||||
if(seq_string.indexOf(required_fields[inner_loop]) == -1)
|
||||
{
|
||||
alert('<?php echo $mod_strings['MAP_MANDATORY_FIELD']?>'+required_fields_name[inner_loop]+'"');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//This is to check whether the save map name has been given or not when save map check box is checked
|
||||
if(document.getElementById("save_map").checked == true)
|
||||
{
|
||||
if(trim(document.getElementById("save_map_as").value) == '')
|
||||
{
|
||||
alert("<?php echo $mod_strings['ENTER_SAVEMAP_NAME'] ?>");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,312 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('modules/Import/ImportLead.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportOpportunity.php');
|
||||
require_once('modules/Import/ImportProduct.php');
|
||||
require_once('modules/Import/ImportMap.php');
|
||||
require_once('modules/Import/ImportTicket.php');
|
||||
require_once('modules/Import/ImportVendors.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('modules/Import/parse_utils.php');
|
||||
require_once('include/ListView/ListView.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('modules/Import/ImportSave.php');
|
||||
|
||||
function p($str){
|
||||
global $adb;
|
||||
$adb->println("IMP :".$str);
|
||||
}
|
||||
|
||||
function implode_assoc($inner_delim, $outer_delim, $array){
|
||||
$output = array();
|
||||
foreach( $array as $key => $item ){
|
||||
$output[] = $key . $inner_delim . $item;
|
||||
}
|
||||
return implode($outer_delim, $output);
|
||||
}
|
||||
|
||||
global $mod_strings;
|
||||
global $app_list_strings;
|
||||
global $app_strings;
|
||||
global $current_user;
|
||||
global $import_file_name;
|
||||
global $theme;
|
||||
global $upload_maxsize;
|
||||
global $site_URL;
|
||||
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
$log->info("Upload Step 3");
|
||||
|
||||
include("include/saveMergeCriteria.php");
|
||||
|
||||
$delimiter = ',';
|
||||
// file handle
|
||||
$count = 0;
|
||||
$error = "";
|
||||
$col_pos_to_field = array();
|
||||
$header_to_field = array();
|
||||
$field_to_pos = array();
|
||||
$focus = 0;
|
||||
$current_bean_type = "";
|
||||
$id_exists_count = 0;
|
||||
$broken_ids = 0;
|
||||
|
||||
$delimiter = $_SESSION['import_delimiter'];
|
||||
|
||||
$has_header = 0;
|
||||
|
||||
if(isset( $_REQUEST['has_header']) && $_REQUEST['has_header'] == 'on'){
|
||||
$has_header = 1;
|
||||
}
|
||||
|
||||
if($_REQUEST['modulename'] != ''){
|
||||
$_REQUEST['module'] = vtlib_purify($_REQUEST['modulename']);
|
||||
}
|
||||
|
||||
$import_object_array = Array(
|
||||
"Leads"=>"ImportLead",
|
||||
"Accounts"=>"ImportAccount",
|
||||
"Contacts"=>"ImportContact",
|
||||
"Potentials"=>"ImportOpportunity",
|
||||
"Products"=>"ImportProduct",
|
||||
"HelpDesk"=>"ImportTicket",
|
||||
"Vendors"=>"ImportVendors"
|
||||
);
|
||||
|
||||
if(isset($_REQUEST['module']) && $_REQUEST['module'] != ''){
|
||||
$current_bean_type = $import_object_array[$_REQUEST['module']];
|
||||
// vtlib customization: Hook added to enable import for un-mapped modules
|
||||
$module = $_REQUEST['module'];
|
||||
if($current_bean_type == null) {
|
||||
checkFileAccess("modules/$module/$module.php");
|
||||
require_once("modules/$module/$module.php");
|
||||
$current_bean_type = $module;
|
||||
$callInitImport = true;
|
||||
}
|
||||
// END
|
||||
}else{
|
||||
$current_bean_type = "ImportContact";
|
||||
}
|
||||
|
||||
$focus = new $current_bean_type();
|
||||
// vtlib customization: Call the import initializer
|
||||
if($callInitImport) $focus->initImport($module);
|
||||
// END
|
||||
|
||||
//Constructing the custom vtiger_field Array
|
||||
require_once('include/CustomFieldUtil.php');
|
||||
$custFldArray = getCustomFieldArray($_REQUEST['module']);
|
||||
p("IMP 3: custFldArray");
|
||||
p($custFldArray);
|
||||
|
||||
//Initializing an empty Array to store the custom vtiger_field Column Name and Value
|
||||
$resCustFldArray = Array();
|
||||
|
||||
p("Getting from request");
|
||||
// loop through all request variables
|
||||
foreach ($_REQUEST as $name=>$value){
|
||||
p("name=".$name." value=".$value);
|
||||
// only look for var names that start with "colnum"
|
||||
if ( strncasecmp( $name, "colnum", 6) != 0 ){
|
||||
continue;
|
||||
}
|
||||
if ($value == "-1"){
|
||||
continue;
|
||||
}
|
||||
|
||||
$user_field = $value;
|
||||
$pos = substr($name,6);
|
||||
|
||||
if ( isset( $field_to_pos[$user_field]) ){
|
||||
show_error_import($mod_strings['LBL_ERROR_MULTIPLE']);
|
||||
exit;
|
||||
}
|
||||
|
||||
p("user_field=".$user_field." if=".$focus->importable_fields[$user_field]);
|
||||
|
||||
if ( isset( $focus->importable_fields[$user_field] ) || isset( $custFldArray[$user_field] )){
|
||||
p("user_field SET=".$user_field);
|
||||
$field_to_pos[$user_field] = $pos;
|
||||
$col_pos_to_field[$pos] = $user_field;
|
||||
}
|
||||
}
|
||||
|
||||
p("field_to_pos");
|
||||
$adb->println($field_to_pos);
|
||||
p("col_pos_to_field");
|
||||
$adb->println($col_pos_to_field);
|
||||
|
||||
$max_lines = -1;
|
||||
$ret_value = 0;
|
||||
|
||||
if(isset($_REQUEST['tmp_file'])) {
|
||||
$_SESSION['tmp_file'] = vtlib_purify($_REQUEST['tmp_file']);
|
||||
} else {
|
||||
$_REQUEST['tmp_file'] = vtlib_purify($_SESSION['tmp_file']);
|
||||
}
|
||||
// End
|
||||
|
||||
if ($_REQUEST['source'] == 'act'){
|
||||
$ret_value = parse_import_act($_REQUEST['tmp_file'],$delimiter,$max_lines,$has_header);
|
||||
}else{
|
||||
$ret_value = parse_import($_REQUEST['tmp_file'],$delimiter,$max_lines,$has_header);
|
||||
}
|
||||
|
||||
$datarows = $ret_value['rows'];
|
||||
|
||||
$ret_field_count = $ret_value['field_count'];
|
||||
|
||||
//we have to get all picklist entries and add with the corresponding picklist table
|
||||
if(isset($datarows) && is_array($datarows)){
|
||||
//This file will be included only once at the first time. Will not be included when we redirect from ImportSave
|
||||
include("modules/Import/picklist_addition.php");
|
||||
}
|
||||
|
||||
$saved_ids = array();
|
||||
|
||||
$firstrow = 0;
|
||||
|
||||
if (! isset($datarows)){
|
||||
$error = $mod_strings['LBL_FILE_ALREADY_BEEN_OR'];
|
||||
$datarows = array();
|
||||
}
|
||||
|
||||
if ($has_header == 1){
|
||||
$firstrow = array_shift($datarows);
|
||||
}
|
||||
|
||||
//Mark the last imported records as deleted which are imported by the current user in vtiger_users_last_import vtiger_table
|
||||
if(!isset($_REQUEST['startval'])){
|
||||
$seedUsersLastImport = new UsersLastImport();
|
||||
$seedUsersLastImport->mark_deleted_by_user_id($current_user->id);
|
||||
}
|
||||
$skip_required_count = 0;
|
||||
|
||||
p("processing started ret_field_count=".$ret_field_count);
|
||||
$adb->println($datarows);
|
||||
|
||||
$error = '';
|
||||
$focus = new $current_bean_type();
|
||||
$focus->initRequiredFields($module);
|
||||
|
||||
// SAVE MAPPING IF REQUESTED
|
||||
if(isset($_REQUEST['save_map']) && $_REQUEST['save_map'] == 'on' && isset($_REQUEST['save_map_as']) && $_REQUEST['save_map_as'] != ''){
|
||||
p("save map");
|
||||
$serialized_mapping = '';
|
||||
|
||||
if( $has_header){
|
||||
foreach($col_pos_to_field as $pos=>$field_name){
|
||||
if ( isset($firstrow[$pos]) && isset( $field_name)){
|
||||
$header_to_field[ $firstrow[$pos] ] = $field_name;
|
||||
}
|
||||
}
|
||||
$serialized_mapping = implode_assoc("=","&",$header_to_field);
|
||||
}else{
|
||||
$serialized_mapping = implode_assoc("=","&",$col_pos_to_field);
|
||||
}
|
||||
|
||||
$mapping_file_name = $_REQUEST['save_map_as'];
|
||||
$mapping_file = new ImportMap();
|
||||
|
||||
$result = $mapping_file->save_map( $current_user->id,
|
||||
$mapping_file_name,
|
||||
$_REQUEST['module'],
|
||||
$has_header,
|
||||
$serialized_mapping );
|
||||
|
||||
$adb->println("Save map done");
|
||||
$adb->println($result);
|
||||
}
|
||||
//save map - ends
|
||||
|
||||
if(isset($_SESSION['totalrows']) && $_SESSION['totalrows'] != ''){
|
||||
$xrows = $_SESSION['totalrows'];
|
||||
}else{
|
||||
$xrows = $datarows;
|
||||
}
|
||||
if(isset($_SESSION['return_field_count'])){
|
||||
$ret_field_count = $_SESSION['return_field_count'];
|
||||
}
|
||||
if(isset($_SESSION['column_position_to_field'])){
|
||||
$col_pos_to_field = $_SESSION['column_position_to_field'];
|
||||
}
|
||||
if($xrows != ''){
|
||||
$datarows = $xrows;
|
||||
}
|
||||
if($_REQUEST['skipped_record_count'] != ''){
|
||||
$skipped_record_count = vtlib_purify($_REQUEST['skipped_record_count']);
|
||||
}else{
|
||||
$_REQUEST['skipped_record_count'] = 0;
|
||||
}
|
||||
|
||||
if($_REQUEST['noofrows'] != ''){
|
||||
$totalnoofrows = vtlib_purify($_REQUEST['noofrows']);
|
||||
}else{
|
||||
$totalnoofrows = count($datarows);
|
||||
}
|
||||
|
||||
if($_REQUEST['recordcount'] != ''){
|
||||
$RECORDCOUNT = vtlib_purify($_REQUEST['recordcount']);
|
||||
}else{
|
||||
$RECORDCOUNT = vtlib_purify($_SESSION['recordcount']);
|
||||
}
|
||||
|
||||
if($_REQUEST['startval'] != ''){
|
||||
$START = vtlib_purify($_REQUEST['startval']);
|
||||
}else{
|
||||
$START = vtlib_purify($_SESSION['startval']);
|
||||
}
|
||||
|
||||
if(($START+$RECORDCOUNT) > $totalnoofrows){
|
||||
$RECORDCOUNT = $totalnoofrows - $START;
|
||||
}
|
||||
|
||||
$loopcount = ($totalnoofrows/$RECORDCOUNT)+1;
|
||||
|
||||
$focus->initImportableFields($module);
|
||||
if($totalnoofrows > $RECORDCOUNT && $START < $totalnoofrows){
|
||||
$rows1 = Array();
|
||||
for($j=$START;$j<$START+$RECORDCOUNT;$j++){
|
||||
$rows1[] = $datarows[$j];
|
||||
}
|
||||
|
||||
$res = InsertImportRecords($datarows,$rows1,$focus,$ret_field_count,$col_pos_to_field,$START,$RECORDCOUNT,vtlib_purify($_REQUEST['module']),$totalnoofrows,$skipped_record_count);
|
||||
if($START != 0){
|
||||
echo '<b>'.$res.'</b>';
|
||||
}
|
||||
|
||||
$count = vtlib_purify($_REQUEST['count']);
|
||||
}else{
|
||||
if($START == 0){
|
||||
$res = InsertImportRecords($datarows,$datarows,$focus,$ret_field_count,$col_pos_to_field,$START,$totalnoofrows,vtlib_purify($_REQUEST['module']),$totalnoofrows,$skipped_record_count);
|
||||
}
|
||||
}
|
||||
|
||||
//Display the imported records message
|
||||
echo "<div align='center' width='100%'><font color='green'><b>".$_SESSION['import_display_message']."</b></font></div>";
|
||||
?>
|
||||
@@ -0,0 +1,306 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('data/Tracker.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/ImportOpportunity.php');
|
||||
require_once('modules/Import/ImportLead.php');
|
||||
//Pavani: Import this file to Support Imports for Trouble tickets and vendors
|
||||
require_once('modules/Import/ImportTicket.php');
|
||||
require_once('modules/Import/ImportVendors.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('modules/Import/parse_utils.php');
|
||||
require_once('include/ListView/ListView.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('include/utils/utils.php');
|
||||
|
||||
global $mod_strings;
|
||||
global $app_list_strings;
|
||||
global $app_strings;
|
||||
global $current_user;
|
||||
$currentModule = "Import";
|
||||
$req_module=vtlib_purify($_REQUEST['modulename']);
|
||||
|
||||
if (! isset( $_REQUEST['module']))
|
||||
{
|
||||
$_REQUEST['module'] = 'Home';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_id']))
|
||||
{
|
||||
$_REQUEST['return_id'] = '';
|
||||
}
|
||||
if (! isset( $_REQUEST['return_module']))
|
||||
{
|
||||
$_REQUEST['return_module'] = '';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_action']))
|
||||
{
|
||||
$_REQUEST['return_action'] = '';
|
||||
}
|
||||
|
||||
// Delete data file used for import
|
||||
// http://trac.vtiger.com/cgi-bin/trac.cgi/ticket/5255
|
||||
if(isset($_REQUEST['tmp_file'])) {
|
||||
$tmp_file = vtlib_purify($_REQUEST['tmp_file']);
|
||||
} else if(isset($_SESSION['tmp_file'])) {
|
||||
$tmp_file = vtlib_purify($_SESSION['tmp_file']);
|
||||
}
|
||||
if(isset($tmp_file) && file_exists($tmp_file)) unlink($tmp_file);
|
||||
// End
|
||||
|
||||
global $theme;
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
$log->info("Import Step last");
|
||||
|
||||
$parenttab = getParenttab();
|
||||
//This Buttons_List1.tpl is is called to display the add, search, import and export buttons ie., second level tabs
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("IMP", $import_mod_strings);
|
||||
$smarty->assign("THEME", $theme);
|
||||
$smarty->assign("IMAGE_PATH", $image_path);
|
||||
|
||||
$smarty->assign("MODULE", vtlib_purify($_REQUEST['modulename']));
|
||||
$smarty->assign("SINGLE_MOD", vtlib_purify($_REQUEST['modulename']));
|
||||
$smarty->assign("CATEGORY", vtlib_purify($_SESSION['import_parenttab']));
|
||||
//@session_unregister("import_parenttab");
|
||||
if($req_module != 'Accounts' || $req_module != 'Contacts' || $req_module != 'Products' || $req_module != 'Leads' || $req_module != 'HelpDesk' || $req_module != 'Potentials' || $req_module != 'Vendors' )
|
||||
{
|
||||
$smarty->display("Buttons_List1.tpl");
|
||||
}
|
||||
|
||||
if ( isset($_REQUEST['message']))
|
||||
{
|
||||
?>
|
||||
<br>
|
||||
|
||||
<table align="center" cellpadding="5" cellspacing="0" width="95%" class="mailClient importLeadUI small">
|
||||
<tr>
|
||||
<td height="50" valign="middle" align="left" class="mailClientBg genHeaderSmall">
|
||||
<?php echo $mod_strings['LBL_MODULE_NAME']; ?> <?php echo getTranslatedString($_REQUEST['modulename'],$_REQUEST['modulename']); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr>
|
||||
<td align="left" style="padding-left:40px;width:75%;" >
|
||||
<?php if($req_module == 'Contacts' || $req_module == 'Accounts' || $req_module == 'Leads' || $req_module == 'Products' || $req_module == 'HelpDesk' || $req_module == 'Potentials' || $req_module == 'Vendors')
|
||||
{ ?>
|
||||
<span class="genHeaderGray"><?php echo $mod_strings['LBL_STEP_4_4']; ?></span>
|
||||
<?php }
|
||||
else { ?>
|
||||
<span class="genHeaderGray"><?php echo $mod_strings['LBL_STEP_3_3']; ?></span>
|
||||
<?php } ?>
|
||||
<span class="genHeaderSmall"><?php echo $mod_strings['LBL_MAPPING_RESULTS']; ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left:140px;">
|
||||
<?php
|
||||
echo vtlib_purify($_REQUEST['message']);
|
||||
?>
|
||||
<br><br><br> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="reportCreateBottom" >
|
||||
<table width="100%" border="0" cellpadding="5" cellspacing="0" >
|
||||
<tr>
|
||||
<td align="right" valign="top"><form enctype="multipart/form-data" name="Import" method="POST" action="index.php" onsubmit="VtigerJS_DialogBox.block();">
|
||||
<input type="hidden" name="module" value="<?php echo vtlib_purify($_REQUEST['modulename']); ?>">
|
||||
<input type="hidden" name="action" id="import_action" value="Import">
|
||||
<input type="hidden" name="step" value="1">
|
||||
<input type="hidden" name="return_id" value="<?php echo vtlib_purify($_REQUEST['return_id']); ?>">
|
||||
<input type="hidden" name="return_module" value="<?php echo vtlib_purify($_REQUEST['return_module']); ?>">
|
||||
<input type="hidden" name="return_action" value="<?php echo (($_REQUEST['return_action'] != '')?vtlib_purify($_REQUEST['return_action']):'index'); ?>">
|
||||
<input type="hidden" name="parenttab" id="parenttab" value="<?php echo $parenttab; ?>">
|
||||
<input title="<?php echo $mod_strings['LBL_FINISHED'] ?>" accessKey="" class="crmbutton small save" type="submit" name="button" value=" <?php echo $mod_strings['LBL_FINISHED'] ?> " onclick="this.form.action.value=this.form.return_action.value;this.form.return_module.value=this.form.return_module.value;return true;">
|
||||
<input title="<?php echo $mod_strings['LBL_IMPORT_MORE'] ?>" accessKey="" class="crmbutton small save" type="submit" name="button" value=" <?php echo $mod_strings['LBL_IMPORT_MORE'] ?> " onclick="this.form.return_module.value=this.form.module.value; return true;">
|
||||
<?php
|
||||
//if check added for duplicate records handling -srini
|
||||
if($_REQUEST['dup_type'] == 'manual') { ?>
|
||||
<input name="lastimport" value="<?php echo $mod_strings['LBL_LAST_IMPORT']?>" class="crmbutton small save" type="button" onclick="lastImport('<?php echo $currentModule; ?>','<?php echo $req_module; ?>');">
|
||||
<?php } ?>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
|
||||
<td align="left">
|
||||
<form name="Import" method="POST" action="index.php">
|
||||
<input type="hidden" name="module" value="<?php echo vtlib_purify($_REQUEST['modulename']); ?>">
|
||||
<input type="hidden" name="action" value="Import">
|
||||
<input type="hidden" name="step" value="undo">
|
||||
<input type="hidden" name="return_module" value="<?php echo vtlib_purify($_REQUEST['return_module']); ?>">
|
||||
<input type="hidden" name="return_id" value="<?php echo vtlib_purify($_REQUEST['return_id']); ?>">
|
||||
<input type="hidden" name="return_action" value="<?php echo vtlib_purify($_REQUEST['return_action']); ?>">
|
||||
<input type="hidden" name="parenttab" value="<?php echo $parenttab; ?>">
|
||||
<input title="<?php echo $mod_strings['LBL_UNDO_LAST_IMPORT']; ?>" accessKey="" class="crmbutton small cancel" type="submit" name="button" value=" <?php echo $mod_strings['LBL_UNDO_LAST_IMPORT'] ?> ">
|
||||
</form></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
//if check added for duplicate records handling -srini
|
||||
if( $_REQUEST['dup_type'] == 'manual')
|
||||
{
|
||||
echo "<br>";
|
||||
$return_module=vtlib_purify($_REQUEST['modulename']);
|
||||
|
||||
$ret_arr=getDuplicateRecordsArr($req_module);
|
||||
$fld_values=$ret_arr[0];
|
||||
$total_num_group=count($fld_values);
|
||||
$fld_name=$ret_arr[1];
|
||||
|
||||
$smarty->assign("MODULE",$req_module);
|
||||
$smarty->assign("MODULELABEL",getTranslatedString($req_module,$req_module));
|
||||
$smarty->assign("NUM_GROUP",$total_num_group);
|
||||
$smarty->assign("FIELD_NAMES",$fld_name);
|
||||
$smarty->assign("CATEGORY",$parenttab);
|
||||
$smarty->assign("ALL_VALUES",$fld_values);
|
||||
$smarty->assign("MOD", return_module_language($current_language,$req_module));
|
||||
$smarty->assign("IMAGE_PATH",$image_path);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("CMOD", $mod_strings);
|
||||
$smarty->assign("MODE",'view');
|
||||
$smarty->assign("NAVIGATION",$ret_arr["navigation"]);//Added for page navigation
|
||||
if(isPermitted($req_module,'Delete','') == 'yes')
|
||||
$button_del = $app_strings[LBL_MASS_DELETE];
|
||||
$smarty->assign("DELETE",$button_del);
|
||||
if(isset($_REQUEST['ajax']) && $_REQUEST['ajax'] != '')
|
||||
$smarty->display("FindDuplicateAjax.tpl");
|
||||
else
|
||||
$smarty->display('FindDuplicateDisplay.tpl');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<br><br>";
|
||||
$currentModule = "Import";
|
||||
global $limit;
|
||||
global $list_max_entries_per_page;
|
||||
$implict_account = false;
|
||||
$import_modules_array = Array(
|
||||
"Leads"=>"Leads",
|
||||
"Accounts"=>"Accounts",
|
||||
"Contacts"=>"Contacts",
|
||||
"Potentials"=>"Potentials",
|
||||
"Products"=>"Products",
|
||||
"HelpDesk"=>"ImportTicket",
|
||||
"Vendors"=>"ImportVendors"
|
||||
);
|
||||
|
||||
// vtlib customization: Hook provide to include custom modules
|
||||
$module = $_REQUEST['modulename'];
|
||||
checkFileAccess("modules/$module/$module.php");
|
||||
require_once("modules/$module/$module.php");
|
||||
$import_modules_array[$module] = $module;
|
||||
// END
|
||||
|
||||
foreach($import_modules_array as $module_name => $object_name)
|
||||
{
|
||||
$seedUsersLastImport = new UsersLastImport();
|
||||
$seedUsersLastImport->bean_type = $module_name;
|
||||
$list_query = $seedUsersLastImport->create_list_query($o,$w);
|
||||
$current_module_strings = return_module_language($current_language, $module_name);
|
||||
|
||||
$object = new $object_name();
|
||||
$seedUsersLastImport->list_fields = $object->list_fields;
|
||||
|
||||
$list_result = $adb->query($list_query);
|
||||
//Retreiving the no of rows
|
||||
$noofrows = $adb->num_rows($list_result);
|
||||
|
||||
if($noofrows>=1)
|
||||
{
|
||||
if($module_name != 'Accounts')
|
||||
{
|
||||
$implict_account=true;
|
||||
}
|
||||
|
||||
if($module_name == 'Accounts' && $implict_account==true)
|
||||
$display_header_msg = "Newly created Accounts";
|
||||
else
|
||||
$display_header_msg = "".$mod_strings['LBL_LAST_IMPORTED']." ".$app_strings[$module_name]."";
|
||||
|
||||
//Display the Header Message
|
||||
echo "
|
||||
<table width='100%' border='0' cellpadding='5' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='dvtCellLabel' align='left'>
|
||||
<b>".$mod_strings['LBL_LAST_IMPORTED']." ".$app_strings[$module_name]." </b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
";
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("IMAGE_PATH",$image_path);
|
||||
$smarty->assign("MODULE",$module_name);
|
||||
$smarty->assign("MODULELABEL",getTranslatedString($module_name,$module_name));
|
||||
$smarty->assign("SINGLE_MOD",$module_name);
|
||||
$smarty->assign("SHOW_MASS_SELECT",'false');
|
||||
|
||||
//Retreiving the start value from request
|
||||
if($module_name == $_REQUEST['nav_module'] && isset($_REQUEST['start']) && $_REQUEST['start'] != '') {
|
||||
$start = vtlib_purify($_REQUEST['start']);
|
||||
} else {
|
||||
$start = 1;
|
||||
}
|
||||
|
||||
$info_message='&recordcount='.vtlib_purify($_REQUEST['recordcount']).'&noofrows='.vtlib_purify($_REQUEST['noofrows']).'&message='.vtlib_purify($_REQUEST['message']).'&skipped_record_count='.vtlib_purify($_REQUEST['skipped_record_count']);
|
||||
$url_string = '&modulename='.vtlib_purify($_REQUEST['modulename']).'&nav_module='.$module_name.$info_message;
|
||||
$viewid = '';
|
||||
|
||||
//Retreive the Navigation array
|
||||
$navigation_array = getNavigationValues($start, $noofrows, $list_max_entries_per_page);
|
||||
$navigationOutput = getTableHeaderNavigation($navigation_array, $url_string,"Import","ImportSteplast",$viewid);
|
||||
|
||||
//Retreive the List View Header and Entries
|
||||
$listview_header = getListViewHeader($object,$module_name);
|
||||
$listview_entries = getListViewEntries($object,$module_name,$list_result,$navigation_array,"","","EditView","Delete","");
|
||||
//commented to remove navigation buttons from import list view
|
||||
//$smarty->assign("NAVIGATION", $navigationOutput);
|
||||
$smarty->assign("HIDE_CUSTOM_LINKS", 1);//Added to hide the CustomView links in imported records ListView
|
||||
|
||||
// Remove all the links for the list view header as they do not work in this page.
|
||||
for($i=0;$i<count($listview_header);$i++) {
|
||||
$listview_header[$i] = strip_tags($listview_header[$i]);
|
||||
}
|
||||
$smarty->assign("LISTHEADER", $listview_header);
|
||||
$smarty->assign("LISTENTITY", $listview_entries);
|
||||
|
||||
$smarty->display("ListViewEntries.tpl");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($_SESSION['import_table_picklist']);
|
||||
unset($_SESSION['import_converted_picklist_values+95']);
|
||||
?>
|
||||
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
********************************************************************************/
|
||||
|
||||
require_once('data/Tracker.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('modules/Import/parse_utils.php');
|
||||
require_once('include/utils/utils.php');
|
||||
|
||||
global $mod_strings;
|
||||
global $app_list_strings;
|
||||
global $app_strings;
|
||||
global $current_user;
|
||||
global $theme;
|
||||
|
||||
if (! isset( $_REQUEST['module']))
|
||||
{
|
||||
$_REQUEST['module'] = 'Home';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_id']))
|
||||
{
|
||||
$_REQUEST['return_id'] = '';
|
||||
}
|
||||
if (! isset( $_REQUEST['return_module']))
|
||||
{
|
||||
$_REQUEST['return_module'] = '';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_action']))
|
||||
{
|
||||
$_REQUEST['return_action'] = '';
|
||||
}
|
||||
|
||||
$parenttab = getParenttab();
|
||||
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
$log->info("Import Undo");
|
||||
$last_import = new UsersLastImport();
|
||||
$ret_value = $last_import->undo($current_user->id);
|
||||
|
||||
// vtlib customization: Invoke undo import function of the module.
|
||||
$module = $_REQUEST['module'];
|
||||
$undo_focus = CRMEntity::getInstance($module);
|
||||
if(method_exists($undo_focus, 'undo_import')) {
|
||||
$ret_value += $undo_focus->undo_import($module, $current_user->id);
|
||||
}
|
||||
// END
|
||||
|
||||
?>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
<table align="center" cellpadding="5" cellspacing="0" width="95%" class="mailClient importLeadUI small">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF" height="50" valign="middle" align="left" class="mailClientBg genHeaderSmall"> <?php echo $mod_strings['LBL_MODULE_NAME']; ?> <?php echo $app_strings[$_REQUEST['module']] ; ?> </td>
|
||||
</tr>
|
||||
<tr><td> </td></tr>
|
||||
<tr>
|
||||
<td align="left" style="padding-left:40px;">
|
||||
<?php $req_module = vtlib_purify($_REQUEST['module']);
|
||||
if($req_module == 'Contacts' || $req_module == 'Accounts' || $req_module == 'Leads' || $req_module == 'Products' || $req_module == 'HelpDesk' || $req_module == 'Potentials' || $req_module == 'Vendors')
|
||||
{ ?>
|
||||
<span class="genHeaderGray"><?php echo $mod_strings['LBL_STEP_4_4']; ?></span>
|
||||
<?php }
|
||||
else { ?>
|
||||
<span class="genHeaderGray"><?php echo $mod_strings['LBL_STEP_3_3']; ?></span>
|
||||
<?php } ?>
|
||||
<span class="genHeaderSmall"><?php echo $mod_strings['LBL_MAPPING_RESULTS']; ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left:140px;">
|
||||
<br>
|
||||
<?php
|
||||
if ($ret_value) {
|
||||
?>
|
||||
<?php echo "<b>" . $mod_strings['LBL_SUCCESS']."</b>" ?><BR><br>
|
||||
<?php echo $mod_strings['LBL_LAST_IMPORT_UNDONE'] ?>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
?>
|
||||
<?php echo $mod_strings['LBL_FAIL'] ?><br>
|
||||
<?php echo $mod_strings['LBL_NO_IMPORT_TO_UNDO'] ?>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right" class="reportCreateBottom" >
|
||||
<form name="Import" method="POST" action="index.php" onsubmit="VtigerJS_DialogBox.block();">
|
||||
<input type="hidden" name="module" value="<?php echo vtlib_purify($_REQUEST['module']); ?>">
|
||||
<input type="hidden" name="action" value="Import">
|
||||
<input type="hidden" name="step" value="1">
|
||||
<input type="hidden" name="return_module" value="<?php echo vtlib_purify($_REQUEST['module']) ?>">
|
||||
<input type="hidden" name="return_id" value="<?php echo vtlib_purify($_REQUEST['RETURN_ID']) ?>">
|
||||
<input type="hidden" name="return_action" value="<?php echo vtlib_purify($_REQUEST['RETURN_ACTION']) ?>">
|
||||
<input type="hidden" name="parenttab" value="<?php echo $parenttab ?>">
|
||||
<input title="<?php echo $mod_strings['LBL_TRY_AGAIN'] ?>" accessKey="" class="crmbutton small save" type="submit" name="button" value=" <?php echo $mod_strings['LBL_TRY_AGAIN'] ?> ">
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/*+********************************************************************************
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*********************************************************************************/
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('modules/HelpDesk/HelpDesk.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
|
||||
class ImportTicket extends HelpDesk {
|
||||
var $db;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array("assign_user","add_product","empty_relatedto","modseq_number");
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** function used to set the assigned_user_id value in the column_fields when we map the username during import
|
||||
*/
|
||||
function assign_user()
|
||||
{
|
||||
global $current_user;
|
||||
$ass_user = $this->column_fields["assigned_user_id"];
|
||||
$this->db->println("assign_user ".$ass_user." cur_user=".$current_user->id);
|
||||
|
||||
if( $ass_user != $current_user->id)
|
||||
{
|
||||
$this->db->println("searching and assigning ".$ass_user);
|
||||
|
||||
$result = $this->db->pquery("select id from vtiger_users where id = ? union select groupid as id from vtiger_groups where groupid = ?",array($ass_user, $ass_user));
|
||||
if($this->db->num_rows($result)!=1)
|
||||
{
|
||||
$this->db->println("not exact records setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
if (isset($row['id']) && $row['id'] != -1)
|
||||
{
|
||||
$this->db->println("setting id as ".$row['id']);
|
||||
$this->column_fields["assigned_user_id"] = $row['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->println("setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function add_product()
|
||||
{
|
||||
global $adb,$imported_ids,$current_user;
|
||||
|
||||
$pro_name = $this->column_fields['product_id'];
|
||||
if((! isset($pro_name) || $pro_name == '') )
|
||||
return;
|
||||
|
||||
//check if it already exists
|
||||
$focus = new Products();
|
||||
$query = '';
|
||||
|
||||
//Modified to remove the spaces at first and last in vtiger_product name
|
||||
$pro_name = trim($pro_name);
|
||||
|
||||
//Modified the query to get the available product only ie., which is not deleted
|
||||
$query = "select vtiger_products.* ,vtiger_crmentity.deleted from vtiger_products,vtiger_crmentity WHERE productname=? and vtiger_crmentity.crmid = vtiger_products.productid and vtiger_crmentity.deleted=0";
|
||||
$result = $adb->pquery($query, array($pro_name));
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
$adb->println($row);
|
||||
|
||||
// we found a row with that id
|
||||
if (isset($row['productid']) && $row['productid'] != -1)
|
||||
$focus->id = $row['productid'];
|
||||
|
||||
$this->column_fields["product_id"] = $focus->id;
|
||||
}
|
||||
function empty_relatedto()
|
||||
{
|
||||
global $adb;
|
||||
$parent_name = $this->column_fields["parent_id"];
|
||||
if($parent_name == '' || $parent_name == NULL)
|
||||
$parent_id = 0;
|
||||
else
|
||||
{ //get the account
|
||||
$relatedTo = explode(':',$parent_name);
|
||||
$parent_module = $relatedTo[0]; $parent_module = trim($parent_module," ");
|
||||
$parent_name = $relatedTo[3]; $parent_name = trim($parent_name," ");
|
||||
$num_rows = 0;
|
||||
if($parent_module == 'Contacts')
|
||||
{
|
||||
$query ="select crmid from vtiger_contactdetails, vtiger_crmentity WHERE concat(lastname,' ',firstname)=? and vtiger_crmentity.crmid =vtiger_contactdetails.contactid and vtiger_crmentity.deleted=0";
|
||||
$result = $adb->pquery($query, array($parent_name));
|
||||
$num_rows=$adb->num_rows($result);
|
||||
}
|
||||
else if($parent_module == 'Accounts')
|
||||
{
|
||||
$query = "select crmid from vtiger_account, vtiger_crmentity WHERE accountname=? and vtiger_crmentity.crmid =vtiger_account.accountid and vtiger_crmentity.deleted=0";
|
||||
$result = $adb->pquery($query, array($parent_name));
|
||||
$num_rows = $adb->num_rows($result);
|
||||
}
|
||||
else $num_rows=0;
|
||||
if($num_rows == 0) $parent_id = 0;
|
||||
else $parent_id = $adb->query_result($result,0,"crmid");
|
||||
}
|
||||
$this->column_fields['parent_id'] = $parent_id;
|
||||
}
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportTicket() {
|
||||
parent::HelpDesk();
|
||||
$this->log = LoggerManager::getLogger('import_ticket');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportTicket");
|
||||
$this->initImportableFields("HelpDesk");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
// Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['ticket_no'] = '';
|
||||
}
|
||||
// END
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/*+********************************************************************************
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*********************************************************************************/
|
||||
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('modules/Vendors/Vendors.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('include/ComboUtil.php');
|
||||
|
||||
class ImportVendors extends Vendors {
|
||||
var $db;
|
||||
|
||||
// This is the list of the functions to run when importing
|
||||
var $special_functions = array("assign_user","modseq_number");
|
||||
|
||||
var $importable_fields = Array();
|
||||
|
||||
/** function used to set the assigned_user_id value in the column_fields when we map the username during import
|
||||
*/
|
||||
function assign_user()
|
||||
{
|
||||
global $current_user;
|
||||
$ass_user = $this->column_fields["assigned_user_id"];
|
||||
$this->db->println("assign_user ".$ass_user." cur_user=".$current_user->id);
|
||||
|
||||
if( $ass_user != $current_user->id)
|
||||
{
|
||||
$this->db->println("searching and assigning ".$ass_user);
|
||||
|
||||
$result = $this->db->query("select id from vtiger_users where id = '".$ass_user."'");
|
||||
if($this->db->num_rows($result)!=1)
|
||||
{
|
||||
$this->db->println("not exact records setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$row = $this->db->fetchByAssoc($result, -1, false);
|
||||
if (isset($row['id']) && $row['id'] != -1)
|
||||
{
|
||||
$this->db->println("setting id as ".$row['id']);
|
||||
$this->column_fields["assigned_user_id"] = $row['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->println("setting current userid");
|
||||
$this->column_fields["assigned_user_id"] = $current_user->id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Constructor which will set the importable_fields as $this->importable_fields[$key]=1 in this object where key is the fieldname in the field table
|
||||
*/
|
||||
function ImportVendors() {
|
||||
parent::Vendors();
|
||||
$this->log = LoggerManager::getLogger('import_vendors');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
$this->db->println("IMP ImportVendors");
|
||||
$this->initImportableFields("Vendors");
|
||||
$this->db->println($this->importable_fields);
|
||||
}
|
||||
|
||||
//Module Sequence Numbering
|
||||
function modseq_number() {
|
||||
$this->column_fields['vendor_no'] = '';
|
||||
}
|
||||
// END
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,475 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
include_once('config.php');
|
||||
require_once('include/logging.php');
|
||||
require_once('include/database/PearDatabase.php');
|
||||
require_once('data/SugarBean.php');
|
||||
|
||||
$imported_ids = array();
|
||||
|
||||
// Contact is used to store customer information.
|
||||
class UsersLastImport extends SugarBean
|
||||
{
|
||||
var $log;
|
||||
var $db;
|
||||
|
||||
// Stored vtiger_fields
|
||||
var $id;
|
||||
var $assigned_user_id;
|
||||
var $bean_type;
|
||||
var $bean_id;
|
||||
|
||||
var $table_name = "vtiger_users_last_import";
|
||||
var $object_name = "UsersLastImport";
|
||||
var $column_fields = Array(
|
||||
"id"
|
||||
,"assigned_user_id"
|
||||
,"bean_type"
|
||||
,"bean_id"
|
||||
,"deleted"
|
||||
);
|
||||
|
||||
var $new_schema = true;
|
||||
|
||||
var $additional_column_fields = Array();
|
||||
|
||||
var $list_fields = Array();
|
||||
var $list_fields_name = Array();
|
||||
var $list_link_field;
|
||||
|
||||
/** Constructor
|
||||
*/
|
||||
function UsersLastImport() {
|
||||
$this->log = LoggerManager::getLogger('UsersLastImport');
|
||||
$this->db = PearDatabase::getInstance();
|
||||
}
|
||||
|
||||
/** function used to delete the old entries for this user
|
||||
* @param int $user_id - user id to whom's last imported records to delete
|
||||
* @return void
|
||||
*/
|
||||
function mark_deleted_by_user_id($user_id)
|
||||
{
|
||||
$query = "DELETE FROM $this->table_name where assigned_user_id=?";
|
||||
$this->db->pquery($query,array($user_id),true,"Error deleting last imported records: ");
|
||||
}
|
||||
|
||||
/** function used to get the list query of the imported records
|
||||
* @param reference &$order_by - reference of the variable order_by to add with the query
|
||||
* @param reference &$where - where condition to add with the query
|
||||
* @return string $query - return the list query to get the imported records list
|
||||
*/
|
||||
function create_list_query(&$order_by, &$where)
|
||||
{
|
||||
global $current_user;
|
||||
$query = '';
|
||||
|
||||
$this->db->println("create list bean_type = ".$this->bean_type." where = ".$where);
|
||||
|
||||
if ($this->bean_type == 'Contacts')
|
||||
{
|
||||
$query = "SELECT distinct crmid,
|
||||
vtiger_account.accountname as accountname,
|
||||
vtiger_contactdetails.contactid,
|
||||
vtiger_contactdetails.accountid,
|
||||
vtiger_contactdetails.yahooid,
|
||||
vtiger_contactdetails.firstname,
|
||||
vtiger_contactdetails.lastname,
|
||||
vtiger_contactdetails.phone,
|
||||
vtiger_contactdetails.title,
|
||||
vtiger_contactdetails.email,
|
||||
vtiger_users.id as assigned_user_id,
|
||||
smownerid,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name
|
||||
FROM vtiger_contactdetails
|
||||
left join vtiger_users_last_import on vtiger_users_last_import.bean_id=vtiger_contactdetails.contactid
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid
|
||||
LEFT JOIN vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
LEFT JOIN vtiger_account ON vtiger_account.accountid=vtiger_contactdetails.accountid
|
||||
WHERE vtiger_users_last_import.assigned_user_id= '{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Contacts'
|
||||
AND vtiger_users_last_import.deleted=0 AND vtiger_crmentity.deleted=0";
|
||||
|
||||
}
|
||||
else if ($this->bean_type == 'Accounts')
|
||||
{
|
||||
$query = "SELECT distinct vtiger_account.*, vtiger_accountbillads.bill_city,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
|
||||
crmid, smownerid
|
||||
FROM vtiger_account
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_account.accountid
|
||||
inner join vtiger_accountbillads on vtiger_crmentity.crmid=vtiger_accountbillads.accountaddressid
|
||||
left join vtiger_users_last_import on vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
left join vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
WHERE
|
||||
vtiger_users_last_import.assigned_user_id=
|
||||
'{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Accounts'
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted=0";
|
||||
}else if ($this->bean_type == 'Potentials'){
|
||||
$query = "SELECT distinct vtiger_account.accountid accountid, vtiger_account.accountname accountname,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name, vtiger_crmentity.crmid, smownerid,
|
||||
vtiger_potential.*
|
||||
FROM vtiger_potential
|
||||
inner join vtiger_crmentity
|
||||
on vtiger_crmentity.crmid=vtiger_potential.potentialid
|
||||
left join vtiger_account
|
||||
on vtiger_account.accountid=vtiger_potential.related_to
|
||||
left join vtiger_users
|
||||
ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups
|
||||
ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
left join vtiger_users_last_import
|
||||
on vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
where vtiger_users_last_import.assigned_user_id='{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Potentials'
|
||||
AND vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted=0";
|
||||
}else if($this->bean_type == 'Leads'){
|
||||
$query = "SELECT distinct vtiger_leaddetails.*, vtiger_crmentity.crmid, vtiger_leadaddress.phone,vtiger_leadsubdetails.website,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
|
||||
smownerid
|
||||
FROM vtiger_leaddetails
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_leaddetails.leadid
|
||||
inner join vtiger_leadaddress on vtiger_crmentity.crmid=vtiger_leadaddress.leadaddressid
|
||||
inner join vtiger_leadsubdetails on vtiger_crmentity.crmid=vtiger_leadsubdetails.leadsubscriptionid
|
||||
left join vtiger_users_last_import on vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
left join vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
WHERE
|
||||
vtiger_users_last_import.assigned_user_id=
|
||||
'{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Leads'
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted=0";
|
||||
}
|
||||
|
||||
//Pavani: Query to retrieve trouble tickets, vendors data from database
|
||||
else if($this->bean_type == 'HelpDesk')
|
||||
{
|
||||
$query = "SELECT distinct vtiger_troubletickets.*, vtiger_crmentity.crmid,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
|
||||
smownerid
|
||||
FROM vtiger_troubletickets
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_troubletickets.ticketid
|
||||
left join vtiger_users_last_import on vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
left join vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
WHERE
|
||||
vtiger_users_last_import.assigned_user_id=
|
||||
'{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='HelpDesk'
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted=0";
|
||||
}
|
||||
|
||||
else if($this->bean_type == 'Vendors')
|
||||
{
|
||||
$query = "SELECT distinct vtiger_vendor.*, vtiger_crmentity.crmid,
|
||||
case when (vtiger_users.user_name not like '') then vtiger_users.user_name else vtiger_groups.groupname end as user_name,
|
||||
smownerid
|
||||
FROM vtiger_vendor
|
||||
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_vendor.vendorid
|
||||
left join vtiger_users_last_import on vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
left join vtiger_users ON vtiger_crmentity.smownerid=vtiger_users.id
|
||||
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
|
||||
WHERE
|
||||
vtiger_users_last_import.assigned_user_id=
|
||||
'{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Vendors'
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted=0";
|
||||
}
|
||||
//pavani...end
|
||||
|
||||
else if($this->bean_type == 'Products')
|
||||
{
|
||||
$query = "SELECT vtiger_crmentity.crmid, vtiger_products.*, vtiger_productcf.*
|
||||
FROM vtiger_products
|
||||
INNER JOIN vtiger_crmentity
|
||||
ON vtiger_crmentity.crmid = vtiger_products.productid
|
||||
INNER JOIN vtiger_productcf
|
||||
ON vtiger_products.productid = vtiger_productcf.productid
|
||||
LEFT JOIN vtiger_vendor
|
||||
ON vtiger_vendor.vendorid = vtiger_products.vendor_id
|
||||
LEFT JOIN vtiger_users_last_import
|
||||
ON vtiger_users_last_import.bean_id=vtiger_crmentity.crmid
|
||||
LEFT JOIN vtiger_users
|
||||
ON vtiger_users.id = vtiger_products.handler
|
||||
WHERE
|
||||
vtiger_users_last_import.assigned_user_id= '{$current_user->id}'
|
||||
AND vtiger_users_last_import.bean_type='Products'
|
||||
AND vtiger_users_last_import.deleted=0
|
||||
AND vtiger_crmentity.deleted = 0";
|
||||
|
||||
}
|
||||
// vtlib customization: Hook for getting the query from the module class itself.
|
||||
else {
|
||||
require_once("modules/$this->bean_type/$this->bean_type.php");
|
||||
$bean_focus = new $this->bean_type();
|
||||
$query = $bean_focus->create_import_query($this->bean_type);
|
||||
}
|
||||
// END
|
||||
|
||||
return $query;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
function list_view_parse_additional_sections(&$list_form)
|
||||
{
|
||||
if ($this->bean_type == "Contacts")
|
||||
{
|
||||
if( isset($this->yahoo_id) && $this->yahoo_id != '')
|
||||
{
|
||||
$list_form->parse("main.row.yahoo_id");
|
||||
}
|
||||
else
|
||||
{
|
||||
$list_form->parse("main.row.no_yahoo_id");
|
||||
}
|
||||
}
|
||||
return $list_form;
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported records of the current user
|
||||
* @param int $user_id - user id, whose last imported records want to be deleted
|
||||
* @return int $count - return the number of total deleted records (contacts, accounts, opportunities, leads and products)
|
||||
*/
|
||||
function undo($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
|
||||
$count += $this->undo_contacts($user_id);
|
||||
$count += $this->undo_accounts($user_id);
|
||||
$count += $this->undo_opportunities($user_id);
|
||||
$count += $this->undo_leads($user_id);
|
||||
$count += $this->undo_products($user_id);
|
||||
$count += $this->undo_HelpDesk($user_id);
|
||||
$count += $this->undo_activities($user_id);
|
||||
$count += $this->undo_Vendors($user_id);
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported contacts of the current user
|
||||
* @param int $user_id - user id, whose last imported contacts want to be deleted
|
||||
* @return int $count - return the number of deleted contacts
|
||||
*/
|
||||
function undo_contacts($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Contacts' AND deleted=0";
|
||||
$this->log->info($query1);
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported leads of the current user
|
||||
* @param int $user_id - user id, whose last imported leads want to be deleted
|
||||
* @return int $count - return the number of deleted leads
|
||||
*/
|
||||
function undo_leads($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Leads' AND deleted=0";
|
||||
$this->log->info($query1);
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
//Pavani: Function to cancel latest import of trouble tickets and vendors of the particular user
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported tickets of the current user
|
||||
* @param int $user_id - user id, whose last imported tickets want to be deleted
|
||||
* @return int $count - return the number of deleted tickets
|
||||
*/
|
||||
function undo_HelpDesk($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id='$user_id' AND bean_type='HelpDesk' AND deleted=0";
|
||||
|
||||
$this->log->info($query1);
|
||||
|
||||
$result1 = $this->db->query($query1) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid='{$row1['bean_id']}'";
|
||||
|
||||
$this->log->info($query2);
|
||||
|
||||
$result2 = $this->db->query($query2) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported vendors of the current user
|
||||
* @param int $user_id - user id, whose last imported vendors want to be deleted
|
||||
* @return int $count - return the number of deleted vendors
|
||||
*/
|
||||
function undo_Vendors($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id='$user_id' AND bean_type='Vendors' AND deleted=0";
|
||||
|
||||
$this->log->info($query1);
|
||||
|
||||
$result1 = $this->db->query($query1) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid='{$row1['bean_id']}'";
|
||||
|
||||
$this->log->info($query2);
|
||||
|
||||
$result2 = $this->db->query($query2) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported accounts of the current user
|
||||
* @param int $user_id - user id, whose last imported accounts want to be deleted
|
||||
* @return int $count - return the number of deleted accounts
|
||||
*/
|
||||
function undo_accounts($user_id)
|
||||
{
|
||||
// this should just be a loop foreach module type
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Accounts' AND deleted=0";
|
||||
$this->log->info($query1);
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported potentials of the current user
|
||||
* @param int $user_id - user id, whose last imported potentials want to be deleted
|
||||
* @return int $count - return the number of deleted potentials
|
||||
*/
|
||||
function undo_opportunities($user_id)
|
||||
{
|
||||
// this should just be a loop foreach module type
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Potentials' AND deleted=0";
|
||||
|
||||
$this->log->info($query1);
|
||||
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported products of the current user
|
||||
* @param int $user_id - user id, whose last imported products want to be deleted
|
||||
* @return int $count - return the number of deleted products
|
||||
*/
|
||||
function undo_products($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Products' AND deleted=0";
|
||||
$this->log->info($query1);
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
/** function used to delete (update deleted=1 in crmentity table) the last imported products of the current user
|
||||
* @param int $user_id - user id, whose last imported products want to be deleted
|
||||
* @return int $count - return the number of deleted products
|
||||
*/
|
||||
function undo_activities($user_id)
|
||||
{
|
||||
$count = 0;
|
||||
$query1 = "select bean_id from vtiger_users_last_import where assigned_user_id=? AND bean_type='Calendar' AND deleted=0";
|
||||
$this->log->info($query1);
|
||||
$result1 = $this->db->pquery($query1, array($user_id)) or die("Error getting last import for undo: ".mysql_error());
|
||||
|
||||
while ( $row1 = $this->db->fetchByAssoc($result1))
|
||||
{
|
||||
$query2 = "update vtiger_crmentity set deleted=1 where crmid=?";
|
||||
$this->log->info($query2);
|
||||
$result2 = $this->db->pquery($query2, array($row1['bean_id'])) or die("Error undoing last import: ".mysql_error());
|
||||
|
||||
$count++;
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
*Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('include/utils/utils.php');
|
||||
|
||||
/** function used to show the error message occured during import process
|
||||
* @param string $message - Error message to display in the screen, where the passed error message will be displayed in screen using Importerror.tpl file
|
||||
*/
|
||||
function show_error_import($message)
|
||||
{
|
||||
global $import_mod_strings;
|
||||
|
||||
global $theme;
|
||||
|
||||
global $log;
|
||||
global $mod_strings;
|
||||
global $app_strings;
|
||||
|
||||
$theme_path="themes/".$theme."/";
|
||||
|
||||
$image_path=$theme_path."images/";
|
||||
|
||||
$log->info("Upload Error");
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
|
||||
|
||||
if (isset($_REQUEST['return_module'])) $smarty->assign("RETURN_MODULE", vtlib_purify($_REQUEST['return_module']));
|
||||
|
||||
if (isset($_REQUEST['return_action'])) $smarty->assign("RETURN_ACTION", vtlib_purify($_REQUEST['return_action']));
|
||||
|
||||
$smarty->assign("THEME", $theme);
|
||||
|
||||
$category = getParenttab();
|
||||
$smarty->assign("CATEGORY", $category);
|
||||
|
||||
$smarty->assign("IMAGE_PATH", $image_path);
|
||||
$smarty->assign("PRINT_URL", "phprint.php?jt=".session_id().$GLOBALS['request_string']);
|
||||
|
||||
$smarty->assign("MODULE", vtlib_purify($_REQUEST['module']));
|
||||
$smarty->assign("MESSAGE", $message);
|
||||
|
||||
$smarty->display('Importerror.tpl');
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
*Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
//error_reporting(E_ALL);
|
||||
//error_reporting(0);
|
||||
global $current_language;
|
||||
|
||||
$mod_strings = return_module_language($current_language, "Import");
|
||||
|
||||
include_once('modules/Import/error.php');
|
||||
|
||||
|
||||
$outlook_contacts_field_map = array(
|
||||
"Title"=>"salutation",
|
||||
// SPECIAL FIELD:
|
||||
"Full Name"=>"full_name",
|
||||
"Company"=>"company",
|
||||
// END
|
||||
"First Name"=>"first_name",
|
||||
"Last Name"=>"last_name",
|
||||
"Job Title"=>"title",
|
||||
"Department"=>"department",
|
||||
"Birthday"=>"birthdate",
|
||||
"Home Phone"=>"phone_home",
|
||||
"Mobile Phone"=>"phone_mobile",
|
||||
"Business Phone"=>"phone_work",
|
||||
"Other Phone"=>"phone_other",
|
||||
"Business Fax"=>"phone_fax",
|
||||
"E-mail Address"=>"email1",
|
||||
"E-mail 2"=>"email2",
|
||||
"Assistant's Name"=>"assistant",
|
||||
"Assistant's Phone"=>"assistant_phone",
|
||||
"Business Street"=>"primary_address_street",
|
||||
"Business City"=>"primary_address_city",
|
||||
"Business State"=>"primary_address_state",
|
||||
"Business Postal Code"=>"primary_address_postalcode",
|
||||
"Business Country/Region"=>"primary_address_country",
|
||||
"Home Street"=>"alt_address_street",
|
||||
"Home City"=>"alt_address_city",
|
||||
"Home State"=>"alt_address_state",
|
||||
"Home Postal Code"=>"alt_address_postalcode",
|
||||
"Home Country/Region"=>"alt_address_country",
|
||||
);
|
||||
|
||||
|
||||
$outlook_accounts_field_map = array(
|
||||
"Company"=>"name",
|
||||
"Business Street"=>"billing_address_street",
|
||||
"Business City"=>"billing_address_city",
|
||||
"Business State"=>"billing_address_state",
|
||||
"Business Country"=>"billing_address_country",
|
||||
"Business Postal Code"=>"billing_address_postalcode",
|
||||
"Business Fax"=>"phone_fax",
|
||||
"Company Main Phone"=>"phone_office",
|
||||
"Web Page"=>"website",
|
||||
//Government ID Number,
|
||||
//Organizational ID Number,
|
||||
);
|
||||
|
||||
$act_contacts_field_map = array(
|
||||
"Web Site"=>"website",
|
||||
"Company"=>"account_name",
|
||||
"Name Suffix"=>"salutation",
|
||||
"Title"=>"title",
|
||||
"First Name"=>"first_name",
|
||||
"Last Name"=>"last_name",
|
||||
"Address 1"=>"primary_address_street",
|
||||
"Address 2"=>"primary_address_street_2",
|
||||
"Address 3"=>"primary_address_street_3",
|
||||
"City"=>"primary_address_city",
|
||||
"State"=>"primary_address_state",
|
||||
"Zip"=>"primary_address_postalcode",
|
||||
"Country"=>"primary_address_country",
|
||||
"Phone"=>"phone_work",
|
||||
"Phone Ext-"=>"phone_work_ext",
|
||||
"Mobile Phone"=>"phone_mobile",
|
||||
"Alt Phone"=>"phone_other",
|
||||
"Fax"=>"phone_fax",
|
||||
"E-mail Login"=>"email1",
|
||||
"E-mail"=>"email1",
|
||||
"E-Mail 2"=>"email2",
|
||||
"Assistant"=>"assistant",
|
||||
"Asst. Phone"=>"assistant_phone",
|
||||
"Home Address 1"=>"alt_address_street",
|
||||
"Home Address 2"=>"alt_address_street_2",
|
||||
"Home Address 3"=>"alt_address_street_3",
|
||||
"Home City"=>"alt_address_city",
|
||||
"Home State"=>"alt_address_state",
|
||||
"Home Zip"=>"alt_address_postalcode",
|
||||
"Home Country"=>"alt_address_country",
|
||||
"Home Phone"=>"phone_home",
|
||||
);
|
||||
|
||||
|
||||
$act_accounts_field_map = array(
|
||||
"Revenue"=>"annual_revenue",
|
||||
"Number of Employees"=>"employees",
|
||||
"Company"=>"name",
|
||||
"Address 1"=>"billing_address_street",
|
||||
"City"=>"billing_address_city",
|
||||
"State"=>"billing_address_state",
|
||||
"Zip Code"=>"billing_address_postalcode",
|
||||
"Country"=>"billing_address_country",
|
||||
"Phone"=>"phone_office",
|
||||
"Fax Phone"=>"phone_fax",
|
||||
"Ticker Symbol"=>"ticker_symbol",
|
||||
"Web Site"=>"website",
|
||||
);
|
||||
|
||||
/*
|
||||
"Last Activity"=>"",
|
||||
"Last Modified Date"=>"",
|
||||
"Created Date"=>"",
|
||||
"Reports To"=>"",
|
||||
"Last Stay-in-Touch Request Date"=>"",
|
||||
"Last Stay-in-Touch Save Date"=>"",
|
||||
*/
|
||||
$salesforce_contacts_field_map = array(
|
||||
"Salutation"=>"salutation",
|
||||
"Description"=>"description",
|
||||
"First Name"=>"first_name",
|
||||
"Last Name"=>"last_name",
|
||||
"Title"=>"title",
|
||||
"Department"=>"department",
|
||||
"Birthdate"=>"birthdate",
|
||||
"Lead Source"=>"lead_source",
|
||||
"Assistant"=>"assistant",
|
||||
"Asst. Phone"=>"assistant_phone",
|
||||
"Contact ID"=>"id",
|
||||
"Mailing Street"=>"primary_address_street",
|
||||
"Mailing Address Line1"=>"primary_address_street_2",
|
||||
"Mailing Address Line2"=>"primary_address_street_3",
|
||||
"Mailing Address Line3"=>"primary_address_street_4",
|
||||
"Mailing City"=>"primary_address_city",
|
||||
"Mailing State"=>"primary_address_state",
|
||||
"Mailing Zip/Postal Code"=>"primary_address_postalcod3",
|
||||
"Mailing Country"=>"primary_address_country",
|
||||
"Other Street"=>"alt_address_street",
|
||||
"Other Address Line 1"=>"alt_address_street_2",
|
||||
"Other Address Line 2"=>"alt_address_street_3",
|
||||
"Other Address Line 3"=>"alt_address_street_4",
|
||||
"Other City"=>"alt_address_city",
|
||||
"Other State"=>"alt_address_state",
|
||||
"Other Zip/Postal Code"=>"alt_address_postalcode",
|
||||
"Other Country"=>"alt_address_country",
|
||||
"Phone"=>"phone_work",
|
||||
"Mobile"=>"phone_mobile",
|
||||
"Home Phone"=>"phone_home",
|
||||
"Other Phone"=>"phone_other",
|
||||
"Fax"=>"phone_fax",
|
||||
"Email"=>"email1",
|
||||
"Email Opt Out"=>"email_opt_out",
|
||||
"Do Not Call"=>"do_not_call",
|
||||
"Account Name"=>"account_name",
|
||||
"Account ID"=>"account_id",
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
ommited vtiger_fields to map:
|
||||
"Account Number"=>"",
|
||||
"Account Site"=>"",
|
||||
"Last Activity"=>"",
|
||||
"Parent Account"=>"",
|
||||
"Parent Account ID"=>"",
|
||||
"Parent Account Site"=>"",
|
||||
"Created Date"=>"",
|
||||
"Last Modified Date"=>"",
|
||||
"Billing Address Line3"=>"",
|
||||
"Shipping Address Line3"=>"",
|
||||
*/
|
||||
$salesforce_accounts_field_map = array(
|
||||
"Account Name"=>"name",
|
||||
"Annual Revenue"=>"annual_revenue",
|
||||
"Type"=>"type",
|
||||
"Ticker Symbol"=>"ticker_symbol",
|
||||
"Rating"=>"rating",
|
||||
"Industry"=>"industry",
|
||||
"SIC Code"=>"sic_code",
|
||||
"Ownership"=>"ownership",
|
||||
"Employees"=>"employees",
|
||||
"Description"=>"description",
|
||||
"Account ID"=>"id",
|
||||
"Billing Street"=>"billing_address_street",
|
||||
"Billing Address Line1"=>"billing_address_street_2",
|
||||
"Billing Address Line2"=>"billing_address_street_3",
|
||||
"Billing City"=>"billing_address_city",
|
||||
"Billing State"=>"billing_address_state",
|
||||
"Billing Zip/Postal Code"=>"billing_address_postalcode",
|
||||
"Billing Country"=>"billing_address_country",
|
||||
"Shipping Street"=>"shipping_address_street",
|
||||
"Shipping Address Line1"=>"shipping_address_street_2",
|
||||
"Shipping Address Line2"=>"shipping_address_street_3",
|
||||
"Shipping City"=>"shipping_address_city",
|
||||
"Shipping State"=>"shipping_address_state",
|
||||
"Shipping Zip/Postal Code"=>"shipping_address_postalcode",
|
||||
"Shipping Country"=>"shipping_address_country",
|
||||
"Phone"=>"phone_office",
|
||||
"Fax"=>"phone_fax",
|
||||
"Website"=>"website"
|
||||
);
|
||||
|
||||
/*
|
||||
"Fiscal Quarter"=>"",
|
||||
"Age"=>"",
|
||||
"Expected Revenue"=>"",
|
||||
*/
|
||||
$salesforce_opportunities_field_map = array(
|
||||
|
||||
"Opportunity Name"=>"name" ,
|
||||
"Type"=>"opportunity_type",
|
||||
"Lead Source"=>"lead_source",
|
||||
"Amount"=>"amount",
|
||||
"Created Date"=>"date_entered",
|
||||
"Close Date"=>"date_closed",
|
||||
"Next Step"=>"next_step",
|
||||
"Stage"=>"sales_stage",
|
||||
"Probability (%)"=>"probability",
|
||||
"Account Name"=>"account_name"
|
||||
);
|
||||
|
||||
if (! isset($_REQUEST['step'] ) )
|
||||
{
|
||||
$_REQUEST['step'] = 1;
|
||||
}
|
||||
|
||||
$mod_list_strings = return_mod_list_strings_language($current_language,"Import");
|
||||
|
||||
checkFileAccess('modules/Import/ImportStep'. $_REQUEST['step']. '.php');
|
||||
include_once('modules/Import/ImportStep'. $_REQUEST['step']. '.php');
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,432 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: Defines the English language pack for the Account module.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________..
|
||||
********************************************************************************/
|
||||
|
||||
|
||||
$mod_strings = Array(
|
||||
'LBL_IMPORT_MODULE_NO_DIRECTORY'=>'The directory ',
|
||||
'LBL_IMPORT_MODULE_NO_DIRECTORY_END'=>' does not exist or is not writable',
|
||||
'LBL_IMPORT_MODULE_ERROR_NO_UPLOAD'=>'File was not uploaded successfully, try again',
|
||||
'LBL_IMPORT_MODULE_ERROR_LARGE_FILE'=>'File is too large. Max:',
|
||||
'LBL_IMPORT_MODULE_ERROR_LARGE_FILE_END'=>'Bytes. Change $upload_maxsize in config.php',
|
||||
'LBL_MODULE_NAME'=>'Import',
|
||||
'LBL_TRY_AGAIN'=>'Try Again',
|
||||
'LBL_ERROR'=>'Error:',
|
||||
'ERR_MULTIPLE'=>'Multiple columns have been defined with the same field name.',
|
||||
'ERR_MISSING_REQUIRED_FIELDS'=>'Missing required fields:',
|
||||
'ERR_SELECT_FULL_NAME'=>'You cannot select Full Name when First Name and Last Name are selected.',
|
||||
'ERR_SELECT_FILE'=>'Select a file to upload.',
|
||||
'LBL_SELECT_FILE'=>'Select file:',
|
||||
'LBL_CUSTOM'=>'Custom',
|
||||
'LBL_DONT_MAP'=>'-- Do not map this field --',
|
||||
'LBL_STEP_1_TITLE'=>'Step 1 of 4: Select Data Source',
|
||||
'LBL_WHAT_IS'=>'Please select a data source from the following:',
|
||||
'LBL_MICROSOFT_OUTLOOK'=>'Microsoft Outlook',
|
||||
'LBL_ACT'=>'Act!',
|
||||
'LBL_SALESFORCE'=>'Salesforce.com',
|
||||
'LBL_MY_SAVED'=>'My Saved Sources:',
|
||||
'LBL_PUBLISH'=>'publish',
|
||||
'LBL_DELETE'=>'delete',
|
||||
'LBL_PUBLISHED_SOURCES'=>'Published Sources:',
|
||||
'LBL_UNPUBLISH'=>'un-publish',
|
||||
'LBL_NEXT'=>'Next',
|
||||
'LBL_BACK'=>'Back',
|
||||
'LBL_STEP_2_TITLE'=>'Step 2 of 4: Upload Export File',
|
||||
'LBL_HAS_HEADER'=>'Has Header',
|
||||
|
||||
'LBL_NUM_1'=>'1.',
|
||||
'LBL_NUM_2'=>'2.',
|
||||
'LBL_NUM_3'=>'3.',
|
||||
'LBL_NUM_4'=>'4.',
|
||||
'LBL_NUM_5'=>'5.',
|
||||
'LBL_NUM_6'=>'6.',
|
||||
'LBL_NUM_7'=>'7.',
|
||||
'LBL_NUM_8'=>'8.',
|
||||
'LBL_NUM_9'=>'9.',
|
||||
'LBL_NUM_10'=>'10.',
|
||||
'LBL_NUM_11'=>'11.',
|
||||
'LBL_NUM_12'=>'12.',
|
||||
'LBL_NOW_CHOOSE'=>'Now choose that file to import:',
|
||||
'LBL_IMPORT_OUTLOOK_TITLE'=>'Microsoft Outlook 98 and 2000 can export data in the <b>Comma Separated Values</b> format which can be used to import data into the system. To export your data from Outlook, follow the steps below:',
|
||||
'LBL_OUTLOOK_NUM_1'=>'Start <b>Outlook</b>',
|
||||
'LBL_OUTLOOK_NUM_2'=>'Select the <b>File</b> menu, then the <b>Import and Export ...</b> menu option',
|
||||
'LBL_OUTLOOK_NUM_3'=>'Choose <b>Export to a file</b> and click Next',
|
||||
'LBL_OUTLOOK_NUM_4'=>'Choose <b>Comma Separated Values (Windows)</b> and click <b>Next</b>.<br> Note: You may be prompted to install the export component',
|
||||
'LBL_OUTLOOK_NUM_5'=>'Select the <b>Contacts</b> folder and click <b>Next</b>. You can select different contacts folders if your contacts are stored in multiple folders',
|
||||
'LBL_OUTLOOK_NUM_6'=>'Choose a filename and click <b>Next</b>',
|
||||
'LBL_OUTLOOK_NUM_7'=>'Click <b>Finish</b>',
|
||||
'LBL_IMPORT_ACT_TITLE'=>'Act! can export data in the <b>Comma Separated Values</b> format which can be used to import data into the system. To export your data from Act!, follow the steps below:',
|
||||
'LBL_ACT_NUM_1'=>'Launch <b>ACT!</b>',
|
||||
'LBL_ACT_NUM_2'=>'Select the <b>File</b> menu, the <b>Data Exchange</b> menu option, then the <b>Export...</b> menu option',
|
||||
'LBL_ACT_NUM_3'=>'Select the file type <b>Text-Delimited</b>',
|
||||
'LBL_ACT_NUM_4'=>'Choose a filename and location for the exported data and click <b>Next</b>',
|
||||
'LBL_ACT_NUM_5'=>'Select <b>Contacts records only</b>',
|
||||
'LBL_ACT_NUM_6'=>'Click the <b>Options...</b> button',
|
||||
'LBL_ACT_NUM_7'=>'Select <b>Comma</b> as the field separator character',
|
||||
'LBL_ACT_NUM_8'=>'Check the <b>Yes, export field names</b> checkbox and click <b>OK</b>',
|
||||
'LBL_ACT_NUM_9'=>'Click <b>Next</b>',
|
||||
'LBL_ACT_NUM_10'=>'Select <b>All Records</b> and then Click <b>Finish</b>',
|
||||
|
||||
'LBL_IMPORT_SF_TITLE'=>'Salesforce.com can export data in the <b>Comma Separated Values</b> format which can be used to import data into the system. To export your data from Salesforce.com, follow the steps below:',
|
||||
'LBL_SF_NUM_1'=>'Open your browser, go to http://www.salesforce.com, and login with your email address and password',
|
||||
'LBL_SF_NUM_2'=>'Click on the <b>Reports</b> tab on the top menu',
|
||||
'LBL_SF_NUM_3'=>'To export Accounts:</b> Click on the <b>Active Accounts</b> link<br><b>To export Contacts:</b> Click on the <b>Mailing List</b> link',
|
||||
'LBL_SF_NUM_4'=>'On <b>Step 1: Select your report type</b>, select <b>Tabular Report</b>click <b>Next</b>',
|
||||
'LBL_SF_NUM_5'=>'On <b>Step 2: Select the report columns</b>, choose the columns you want to export and click <b>Next</b>',
|
||||
'LBL_SF_NUM_6'=>'On <b>Step 3: Select the information to summarize</b>, just click <b>Next</b>',
|
||||
'LBL_SF_NUM_7'=>'On <b>Step 4: Order the report columns</b>, just click <b>Next</b>',
|
||||
'LBL_SF_NUM_8'=>'On <b>Step 5: Select your report criteria</b>, under <b>Start Date</b>, choose a date far enough in the past to include all your Accounts. You can also export a subset of Accounts using more advanced criteria. When you are done, click <b>Run Report</b>',
|
||||
'LBL_SF_NUM_9'=>'A report will be generated, and the page should display <b>Report Generation Status: Complete.</b> Now click <b>Export to Excel</b>',
|
||||
'LBL_SF_NUM_10'=>'On <b>Export Report:</b>, for <b>Export File Format:</b>, choose <b>Comma Delimited .csv</b>. Click <b>Export</b>.',
|
||||
'LBL_SF_NUM_11'=>'A dialog will pop up for you to save the export file to your computer.',
|
||||
'LBL_IMPORT_CUSTOM_TITLE'=>'Many applications will allow you to export data into a <b>Comma Delimited text file (.csv)</b>. Generally most applications follow these general steps:',
|
||||
'LBL_CUSTOM_NUM_1'=>'Launch the application and Open the data file',
|
||||
'LBL_CUSTOM_NUM_2'=>'Select the <b>Save As...</b> or <b>Export...</b> menu option',
|
||||
'LBL_CUSTOM_NUM_3'=>'Save the file in a <b>CSV</b> or <b>Comma Separated Values</b> format',
|
||||
|
||||
'LBL_STEP_3_TITLE'=>'Step 3 of 4: Confirm Fields and Import',
|
||||
'LBL_STEP_1'=>'Step 1 of 3 : ',
|
||||
'LBL_STEP_1_TITLE'=>'Select the .CSV File',
|
||||
'LBL_STEP_1_TEXT'=> ' vtiger CRM supports importing records from .csv (<b> Comma Separated Values</b> ) files. To start import, browse to locate the .CSV file and click on the Next button to Continue.',
|
||||
|
||||
'LBL_SELECT_FIELDS_TO_MAP'=>'In the list below, select the fields in your import file that should be imported into each field in the system. When you are finished, click <b>Import Now</b>',
|
||||
|
||||
'LBL_DATABASE_FIELD'=>'Database Field',
|
||||
'LBL_HEADER_ROW'=>'Header Row',
|
||||
'LBL_ROW'=>'Row',
|
||||
'LBL_SAVE_AS_CUSTOM'=>'Save as Custom Mapping :',
|
||||
'LBL_CONTACTS_NOTE_1'=>'Either Last Name or Full Name must be mapped.',
|
||||
'LBL_CONTACTS_NOTE_2'=>'If Full Name is mapped, then First Name and Last Name are ignored.',
|
||||
'LBL_CONTACTS_NOTE_3'=>'If Full Name is mapped, then the data in Full Name will be split into First Name and Last Name when inserted into the database.',
|
||||
'LBL_CONTACTS_NOTE_4'=>'Fields ending in Address Street 2 and Address Street 3 are concatenated together with the main Address Street Field when inserted into the database.',
|
||||
'LBL_ACCOUNTS_NOTE_1'=>'Account Name must be mapped.',
|
||||
'LBL_ACCOUNTS_NOTE_2'=>'Fields ending in Address Street 2 and Address Street 3 are concatenated together with the main Address Street Field when inserted into the database.',
|
||||
'LBL_POTENTIALS_NOTE_1'=>'Potential Name, Account Name, Date Closed, and Sales Stage are required fields.',
|
||||
'LBL_OPPORTUNITIES_NOTE_1'=>'Opportunity Name, Account Name, Date Closed, and Sales Stage are required fields.',
|
||||
'LBL_LEADS_NOTE_1'=>'Last Name must be mapped.',
|
||||
'LBL_LEADS_NOTE_2'=>'Company Name must be mapped.',
|
||||
'LBL_IMPORT_NOW'=>'Import Now',
|
||||
'LBL_'=>'',
|
||||
'LBL_CANNOT_OPEN'=>'Cannot open the imported file for reading',
|
||||
'LBL_NOT_SAME_NUMBER'=>'There were not the same number of fields per line in your file',
|
||||
'LBL_NO_LINES'=>'There were no lines in your import file',
|
||||
'LBL_FILE_ALREADY_BEEN_OR'=>'The import file has already been processed or does not exist',
|
||||
'LBL_SUCCESS'=>'Success! ',
|
||||
'LBL_SUCCESSFULLY'=>'Succesfully Imported',
|
||||
'LBL_LAST_IMPORT_UNDONE'=>'Your Last Import Was Undone',
|
||||
'LBL_NO_IMPORT_TO_UNDO'=>'There was no import to undo.',
|
||||
'LBL_FAIL'=>'Fail:',
|
||||
'LBL_RECORDS_SKIPPED'=>'records skipped because they were missing one or more required fields',
|
||||
'LBL_IDS_EXISTED_OR_LONGER'=>'records skipped because the id\'s either existed or where longer than 36 characters',
|
||||
'LBL_RESULTS'=>'Results',
|
||||
'LBL_IMPORT_MORE'=>'Import More',
|
||||
'LBL_FINISHED'=>'Finished',
|
||||
'LBL_UNDO_LAST_IMPORT'=>'Undo Last Import',
|
||||
|
||||
'LBL_SUCCESS_1' => 'No. of Records Successfully Imported : ',
|
||||
'LBL_SKIPPED_1' => 'No. of Records Skipped as they were missing one or more required fields : ',
|
||||
|
||||
//Added for patch2 - Products Import Notes
|
||||
'LBL_PRODUCTS_NOTE_1'=>'Product Name must be mapped',
|
||||
'LBL_PRODUCTS_NOTE_2'=>'Before import please check whether a single column has been mapped twice',
|
||||
|
||||
//Added for version 5
|
||||
'LBL_FILE_LOCATION'=>'File Location :',
|
||||
'LBL_STEP_2_3'=>'Step 2 of 3 :',
|
||||
'LBL_LIST_MAPPING'=>'List & Mapping',
|
||||
'LBL_STEP_2_MSG'=>'The following tables shows the imported',
|
||||
'LBL_STEP_2_MSG1'=>'and other details.',
|
||||
'LBL_STEP_2_TXT'=>'To map the fields, select the corresponding in combo boxes for each',
|
||||
'LBL_USE_SAVED_MAPPING'=>'Use Saved Mapping :',
|
||||
'LBL_MAPPING'=>'Mapping',
|
||||
'LBL_HEADERS'=>'Headers :',
|
||||
'LBL_ERROR_MULTIPLE'=>'Same fields may be mapped twice. Please check the mapped fields.',
|
||||
'LBL_STEP_3_3'=>'Step 3 of 3 : ',
|
||||
'LBL_MAPPING_RESULTS'=>'Mapping Results ',
|
||||
'LBL_LAST_IMPORTED'=>'Last Imported',
|
||||
//Added for sript alerts
|
||||
'PLEASE_CHECK_MAPPING' => "' is mapped more than once. Please check the mapping.",
|
||||
'MAP_MANDATORY_FIELD' => 'Please map the mandatory field "',
|
||||
'ENTER_SAVEMAP_NAME' => 'Please Enter Save Map Name',
|
||||
|
||||
//Added for 5.0.3
|
||||
'to'=>'to',
|
||||
'of'=>'of',
|
||||
'are_imported_succesfully'=>'are imported successfully',
|
||||
|
||||
// Added after 5.0.4 GA
|
||||
|
||||
//added for duplicate handling
|
||||
'LBL_LAST_IMPORT'=>'Last Imported',
|
||||
'Select_Criteria_For_Duplicate' => 'Select Criteria For Duplicate Records Handling',
|
||||
'Manual_Merging' => 'Manual Merging',
|
||||
'Auto_Merging' => 'Auto Merging',
|
||||
'Ignore_Duplicate' => 'Ignore the duplicate import records',
|
||||
'Overwrite_Duplicate' => 'Overwrite the duplicate records',
|
||||
'Duplicate_Records_Skipped_Info' => 'No. of Records Skipped as they were duplicates : ',
|
||||
'Duplicate_Records_Overwrite_Info' => 'No. of Records Overwritten as they were duplicates : ',
|
||||
'LBL_STEP_4_4' => 'Step 4 of 4 : ',
|
||||
'LBL_STEP_3_4'=>'Step 3 of 4 :',
|
||||
'LBL_STEP_2_4'=>'Step 2 of 4 :',
|
||||
'LBL_STEP_1_4'=>'Step 1 of 4 : ',
|
||||
|
||||
'LBL_DELIMITER' => 'Delimiter:',
|
||||
'LBL_FORMAT' => 'Format:',
|
||||
);
|
||||
|
||||
/*$mod_list_strings = Array(
|
||||
"id"=>"Contact ID"
|
||||
,"first_name"=>"First Name"
|
||||
,"last_name"=>"Last Name"
|
||||
,"salutation"=>"Salutation"
|
||||
,"lead_source"=>"Lead Source"
|
||||
,"birthdate"=>"Lead Source"
|
||||
,"do_not_call"=>"Do Not Call"
|
||||
,"email_opt_out"=>"Email Opt Out"
|
||||
,"primary_address_street_2"=>"Primary Address Street 2"
|
||||
,"primary_address_street_3"=>"Primary Address Street 3"
|
||||
,"alt_address_street_2"=>"Other Address Street 2"
|
||||
,"alt_address_street_3"=>"Other Address Street 3"
|
||||
,"full_name"=>"Full Name"
|
||||
,"account_name"=>"Account Name"
|
||||
,"account_id"=>"Account ID"
|
||||
,"title"=>"Title"
|
||||
,"department"=>"Department"
|
||||
,"birthdate"=>"Birthdate"
|
||||
,"do_not_call"=>"Do Not Call"
|
||||
,"phone_home"=>"Phone (Home)"
|
||||
,"phone_mobile"=>"Phone (Mobile)"
|
||||
,"phone_work"=>"Phone (Work)"
|
||||
,"phone_other"=>"Phone (Other)"
|
||||
,"phone_fax"=>"Fax"
|
||||
,"email1"=>"Email"
|
||||
,"email2"=>"Email (Other)"
|
||||
,"yahoo_id"=>"Yahoo! ID"
|
||||
,"assistant"=>"Assistant"
|
||||
,"assistant_phone"=>"Assistant Phone"
|
||||
,"primary_address_street"=>"Primary Address Street"
|
||||
,"primary_address_city"=>"Primary Address City"
|
||||
,"primary_address_state"=>"Primary Address State"
|
||||
,"primary_address_postalcode"=>"Primary Address Postalcode"
|
||||
,"primary_address_country"=>"Primary Address Country"
|
||||
,"alt_address_street"=>"Other Address Street"
|
||||
,"alt_address_city"=>"Other Address City"
|
||||
,"alt_address_state"=>"Other Address State"
|
||||
,"alt_address_postalcode"=>"Other Address Postalcode"
|
||||
,"alt_address_country"=>"Other Address Country"
|
||||
,"description"=>"Description"
|
||||
|
||||
),*/
|
||||
$mod_list_strings = Array(
|
||||
'contacts_import_fields' => Array(
|
||||
//"id"=>"Contact ID"
|
||||
"firstname"=>"First Name"
|
||||
,"lastname"=>"Last Name"
|
||||
,"salutationtype"=>"Salutation"
|
||||
,"leadsource"=>"Lead Source"
|
||||
,"birthday"=>"Birthdate"
|
||||
,"donotcall"=>"Do Not Call"
|
||||
,"emailoptout"=>"Email Opt Out"
|
||||
//,"primary_address_street_2"=>"Primary Address Street 2"
|
||||
//,"primary_address_street_3"=>"Primary Address Street 3"
|
||||
//,"alt_address_street_2"=>"Other Address Street 2"
|
||||
//,"alt_address_street_3"=>"Other Address Street 3"
|
||||
//,"full_name"=>"Full Name"
|
||||
//,"account_name"=>"Account Name"
|
||||
,"account_id"=>"Account Name"
|
||||
,"title"=>"Title"
|
||||
,"department"=>"Department"
|
||||
//,"birthdate"=>"Birthdate"
|
||||
//,"do_not_call"=>"Do Not Call"
|
||||
,"homephone"=>"Phone (Home)"
|
||||
,"mobile"=>"Phone (Mobile)"
|
||||
,"phone"=>"Phone (Work)"
|
||||
,"otherphone"=>"Phone (Other)"
|
||||
,"fax"=>"Fax"
|
||||
,"email"=>"Email"
|
||||
,"otheremail"=>"Email (Other)"
|
||||
,"yahooid"=>"Yahoo! ID"
|
||||
,"assistant"=>"Assistant"
|
||||
,"assistantphone"=>"Assistant Phone"
|
||||
,"mailingstreet"=>"Mailing Address Street"
|
||||
,"mailingpobox"=>"Mailing Address PO Box"
|
||||
,"mailingcity"=>"Mailing Address City"
|
||||
,"mailingstate"=>"Mailing Address State"
|
||||
,"mailingzip"=>"Mailing Address Postalcode"
|
||||
,"mailingcountry"=>"Mailing Address Country"
|
||||
,"otherstreet"=>"Other Address Street"
|
||||
,"otherpobox"=>"Other Address PO Box"
|
||||
,"othercity"=>"Other Address City"
|
||||
,"otherstate"=>"Other Address State"
|
||||
,"otherzip"=>"Other Address Postalcode"
|
||||
,"othercountry"=>"Other Address Country"
|
||||
,"description"=>"Description"
|
||||
,"assigned_user_id"=>"Assigned To"
|
||||
),
|
||||
|
||||
'accounts_import_fields' => Array(
|
||||
//"id"=>"Account ID",
|
||||
"accountname"=>"Account Name",
|
||||
"website"=>"Website",
|
||||
"industry"=>"Industry",
|
||||
"accounttype"=>"Type",
|
||||
"tickersymbol"=>"Ticker Symbol",
|
||||
"parent_name"=>"Member of",
|
||||
"employees"=>"Employees",
|
||||
"ownership"=>"Ownership",
|
||||
"phone"=>"Phone",
|
||||
"fax"=>"Fax",
|
||||
"otherphone"=>"Other Phone",
|
||||
"email1"=>"Email",
|
||||
"email2"=>"Other Email",
|
||||
"rating"=>"Rating",
|
||||
"siccode"=>"SIC Code",
|
||||
"annual_revenue"=>"Annual Revenue",
|
||||
"bill_street"=>"Billing Address Street",
|
||||
//"billing_address_street_2"=>"Billing Address Street 2",
|
||||
//"billing_address_street_3"=>"Billing Address Street 3",
|
||||
//"billing_address_street_4"=>"Billing Address Street 4",
|
||||
"bill_pobox"=>"Billing Address PO Box",
|
||||
"bill_city"=>"Billing Address City",
|
||||
"bill_state"=>"Billing Address State",
|
||||
"bill_code"=>"Billing Address Postalcode",
|
||||
"bill_country"=>"Billing Address Country",
|
||||
"ship_street"=>"Shipping Address Street",
|
||||
//"shipping_address_street_2"=>"Shipping Address Street 2",
|
||||
//"shipping_address_street_3"=>"Shipping Address Street 3",
|
||||
//"shipping_address_street_4"=>"Shipping Address Street 4",
|
||||
"ship_pobox"=>"Shipping Address PO Box",
|
||||
"ship_city"=>"Shipping Address City",
|
||||
"ship_state"=>"Shipping Address State",
|
||||
"ship_code"=>"Shipping Address Postalcode",
|
||||
"ship_country"=>"Shipping Address Country",
|
||||
"description"=>"Description",
|
||||
"assigned_user_id"=>"Assigned To"
|
||||
),
|
||||
|
||||
'potentials_import_fields' => Array(
|
||||
//"id"=>"Account ID"
|
||||
"potentialname"=>"Potential Name"
|
||||
, "account_id"=>"Account Name"
|
||||
, "opportunity_type"=>"Potential Type"
|
||||
, "leadsource"=>"Lead Source"
|
||||
, "amount"=>"Amount"
|
||||
, "closingdate"=>"Closing Date"
|
||||
, "nextstep"=>"Next Step"
|
||||
, "sales_stage"=>"Sales Stage"
|
||||
, "probability"=>"Probability"
|
||||
, "description"=>"Description"
|
||||
,"assigned_user_id"=>"Assigned To"
|
||||
),
|
||||
|
||||
|
||||
'leads_import_fields' => Array(
|
||||
"salutationtype"=>"Salutation",
|
||||
"firstname"=>"First Name",
|
||||
"phone"=>"Phone",
|
||||
"lastname"=>"Last Name",
|
||||
"mobile"=>"Mobile",
|
||||
"company"=>"Company",
|
||||
"fax"=>"Fax",
|
||||
"designation"=>"Designation",
|
||||
"email"=>"Email",
|
||||
"leadsource"=>"Lead Source",
|
||||
"website"=>"Website",
|
||||
"industry"=>"Industry",
|
||||
"leadstatus"=>"Lead Status",
|
||||
"annualrevenue"=>"Annual Revenue",
|
||||
"rating"=>"Rating",
|
||||
"noofemployees"=>"No Of Employees",
|
||||
"assigned_user_id"=>"Assigned To",
|
||||
"yahooid"=>"Yahoo Id",
|
||||
"lane"=>"Street",
|
||||
"pobox"=>"PO Box",
|
||||
"code"=>"Postal Code",
|
||||
"city"=>"City",
|
||||
"country"=>"Country",
|
||||
"state"=>"State",
|
||||
"description"=>"Description"
|
||||
,"assigned_user_id"=>"Assigned To"
|
||||
),
|
||||
|
||||
'products_import_fields' => Array(
|
||||
'productname'=>'Product Name',
|
||||
'productcode'=>'Product Code',
|
||||
'productcategory'=>'Product Category',
|
||||
'manufacturer'=>'Manufacturer',
|
||||
'product_description'=>'Product Description',
|
||||
'qty_per_unit'=>'Quantity Per/Unit',
|
||||
'unit_price'=>'Unit Price',
|
||||
'weight'=>'Weight',
|
||||
'pack_size'=>'Pack Size',
|
||||
'start_date'=>'Start Date',
|
||||
'expiry_date'=>'Expiration Date',
|
||||
'cost_factor'=>'Cost Factor',
|
||||
'commissionmethod'=>'Commission Method',
|
||||
'discontinued'=>'Discontinued',
|
||||
'commissionrate'=>'Commission Rate',
|
||||
'sales_start_date'=>'Sales Start Date',
|
||||
'sales_end_date'=>'Sales End Date',
|
||||
'usageunit'=>'Usage Unit',
|
||||
'serialno'=>'Serial No',
|
||||
'currency'=>'currency',
|
||||
'reorderlevel'=>'Reorder Level',
|
||||
'website'=>'Web Site',
|
||||
'taxclass'=>'Tax Class',
|
||||
'mfr_part_no'=>'Manufacture Part No',
|
||||
'vendor_part_no'=>'Vendor Part No',
|
||||
'qtyinstock'=>'Quantity in Stock',
|
||||
'productsheet'=>'Product Sheet',
|
||||
'qtyindemand'=>'Quantity in Demand',
|
||||
'glacct'=>'GL Account',
|
||||
'assigned_user_id'=>'Assigned To'
|
||||
),
|
||||
//Pavani...adding list of import fields for helpdesk and vendors
|
||||
'helpdesk_import_fields' => Array(
|
||||
"ticketid"=>"Ticket Id",
|
||||
"priority"=>"Priority",
|
||||
"severity"=>"Severity",
|
||||
"status"=>"Status",
|
||||
"category"=>"Category",
|
||||
"title"=>"Title",
|
||||
"description"=>"Description",
|
||||
"solution"=>"Solution"
|
||||
),
|
||||
|
||||
'vendors_import_fields' => Array(
|
||||
"vendorid"=>"Vender Id",
|
||||
"vendorname"=>"Vendor Name",
|
||||
"phone"=>"Phone",
|
||||
"email"=>"Email",
|
||||
"website"=>"Website",
|
||||
"category"=>"Category",
|
||||
"street"=>"Street",
|
||||
"city"=>"City",
|
||||
"state"=>"State",
|
||||
"pobox"=>"Post Box",
|
||||
"postalcode"=>"Postal Code",
|
||||
"country"=>"Country",
|
||||
"description"=>"Description"
|
||||
)
|
||||
//Pavani...end list
|
||||
);
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,431 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright (C) 2006-2010 YUCHENG HU
|
||||
*
|
||||
* ---------------------------------------------
|
||||
* HA WEBSYSTEMS
|
||||
* http://www.hawebs.net
|
||||
* https://www.hawebs.org/forums/computer/
|
||||
*
|
||||
* CONTACT
|
||||
* huyuchengus@gmail.com / yuchenghu@hawebs.net
|
||||
*
|
||||
* ---------------------------------------------
|
||||
* [A] GNU GENERAL PUBLIC LICENSE GNU/LGPL
|
||||
* [B] Apache License, Version 2.0
|
||||
*
|
||||
* ---------------------------------------------
|
||||
* NOTE
|
||||
* 1. 所有的语言配置文件请采用 UTF-8 编码
|
||||
*
|
||||
* ---------------------------------------------
|
||||
*/
|
||||
$mod_strings = Array(
|
||||
'LBL_IMPORT_MODULE_NO_DIRECTORY' => '目录 ',
|
||||
'LBL_IMPORT_MODULE_NO_DIRECTORY_END' => ' 不存在或没有记录',
|
||||
'LBL_IMPORT_MODULE_ERROR_NO_UPLOAD' => '文件无法顺利上传,请再重试',
|
||||
'LBL_IMPORT_MODULE_ERROR_LARGE_FILE' => '文件太大,大小上限:',
|
||||
'LBL_IMPORT_MODULE_ERROR_LARGE_FILE_END' => '字节,在 config.php 中调整 $upload_maxsize设定',
|
||||
'LBL_MODULE_NAME' => '导入',
|
||||
'LBL_TRY_AGAIN' => '重试',
|
||||
'LBL_ERROR' => '错误:',
|
||||
'ERR_MULTIPLE' => '定义字段可多行输入.',
|
||||
'ERR_MISSING_REQUIRED_FIELDS' => '漏填必须字段:',
|
||||
'ERR_SELECT_FULL_NAME' => '当姓或名被选择时,您就不能再选全名.',
|
||||
'ERR_SELECT_FILE' => '选择文件以供上传.',
|
||||
'LBL_SELECT_FILE' => '选择文件:',
|
||||
'LBL_CUSTOM' => '自订',
|
||||
'LBL_DONT_MAP' => '-- 没有标记这个字段 --',
|
||||
'LBL_STEP_1_TITLE' => '步骤 1 到 4: 选择数据来源',
|
||||
'LBL_WHAT_IS' => '请选择数据来源:',
|
||||
'LBL_MICROSOFT_OUTLOOK' => 'Microsoft Outlook',
|
||||
'LBL_ACT' => 'Act!',
|
||||
'LBL_SALESFORCE' => 'Salesforce.com',
|
||||
'LBL_MY_SAVED' => '我所储存的来源:',
|
||||
'LBL_PUBLISH' => '发布',
|
||||
'LBL_DELETE' => '删除',
|
||||
'LBL_PUBLISHED_SOURCES' => '发布来源:',
|
||||
'LBL_UNPUBLISH' => '不发布',
|
||||
'LBL_NEXT' => '下一步',
|
||||
'LBL_BACK' => '上一步',
|
||||
'LBL_STEP_2_TITLE' => '步骤 2 of 4: 上传导入文件',
|
||||
'LBL_HAS_HEADER' => '标题行:',
|
||||
|
||||
'LBL_NUM_1'=>'1.',
|
||||
'LBL_NUM_2'=>'2.',
|
||||
'LBL_NUM_3'=>'3.',
|
||||
'LBL_NUM_4'=>'4.',
|
||||
'LBL_NUM_5'=>'5.',
|
||||
'LBL_NUM_6'=>'6.',
|
||||
'LBL_NUM_7'=>'7.',
|
||||
'LBL_NUM_8'=>'8.',
|
||||
'LBL_NUM_9'=>'9.',
|
||||
'LBL_NUM_10'=>'10.',
|
||||
'LBL_NUM_11'=>'11.',
|
||||
'LBL_NUM_12'=>'12.',
|
||||
'LBL_NOW_CHOOSE' => '选择读入文件:',
|
||||
'LBL_IMPORT_OUTLOOK_TITLE' => 'Microsoft Outlook 98 and 2000 能依据标点符号区分各字段数据以读入或导出数据,请随后续的指示操作:',
|
||||
'LBL_OUTLOOK_NUM_1' => '开始 <b>Outlook</b>',
|
||||
'LBL_OUTLOOK_NUM_2' => '选择指定的 <b>文件</b> 清单, 以利 <b>读入及导出 ...</b> 清单选项',
|
||||
'LBL_OUTLOOK_NUM_3' => '选择 <b>导出文件</b> 和点选下一步',
|
||||
'LBL_OUTLOOK_NUM_4' => '选择 <b>区分逗号值 (Windows)</b> 并点选 <b>下一步</b>.<br>备注: 您在安装导出组件时所必须作的相关提示',
|
||||
'LBL_OUTLOOK_NUM_5' => '选择 <b>联络人</b> 数据夹和点选 <b>下一步</b>. 如果您选择重了复选数据夹,您就能够选择不同的联络人数据夹',
|
||||
'LBL_OUTLOOK_NUM_6' => '选择文件名称并点选 <b>下一步</b>',
|
||||
'LBL_OUTLOOK_NUM_7' => '选择 <b>完成</b>',
|
||||
'LBL_IMPORT_ACT_TITLE' => '动作提示! 您所读入导出的数据会依据 <b>区分标点符号</b> 格式来执行!, 请随后续的指示操作:',
|
||||
'LBL_ACT_NUM_1' => '开始 <b>执行!</b>',
|
||||
'LBL_ACT_NUM_2' => '选择 <b>文件</b> 清单, <b>数据交换</b> 清单选项, 以利 <b>导出...</b> 清单选项',
|
||||
'LBL_ACT_NUM_3' => '选择文件类型 <b>Text-Delimited</b>',
|
||||
'LBL_ACT_NUM_4' => '选择文件及其位置以利输出数据,并点选 <b>下一步</b>',
|
||||
'LBL_ACT_NUM_5' => '选择 <b>仅限联络人记录</b>',
|
||||
'LBL_ACT_NUM_6' => '点选 <b>选项...</b> 按钮',
|
||||
'LBL_ACT_NUM_7' => '选择 <b>标点符号</b> 区分字段字符',
|
||||
'LBL_ACT_NUM_8' => '检查 <b>确定, 导出字段名称</b> 核取并点选选 <b>OK</b>',
|
||||
'LBL_ACT_NUM_9' => '点选 <b>下一步</b>',
|
||||
'LBL_ACT_NUM_10' => '选择 <b>全部记录</b> 和点选 <b>完成</b>',
|
||||
|
||||
'LBL_IMPORT_SF_TITLE' => 'Salesforce.com 能输出数据以导入数据到系统中,利用 <b>区分标点符号</b> 格式来执行,请随后续的指示操作:',
|
||||
'LBL_SF_NUM_1' => '开启您的浏览器, 到 http://www.salesforce.com, 和登入您的电子邮件地址及密码',
|
||||
'LBL_SF_NUM_2' => '在顶层清单中,点选 <b>导出</b> ',
|
||||
'LBL_SF_NUM_3' => '输出公司:</b> 点选 <b>经常往来公司</b> 连结<br><b>输出联络人:</b> 选择 <b>电子邮件列表</b> 连结',
|
||||
'LBL_SF_NUM_4' => '<b>步骤 1: 选择您的报告类型</b>, 选择 <b>表格报告</b>点选 <b>下一步</b>',
|
||||
'LBL_SF_NUM_5' => '<b>步骤 2: 选择报告栏</b>, 点选您要输出的字段 <b>下一步</b>',
|
||||
'LBL_SF_NUM_6' => '<b>步骤 3: 选择总结讯息</b>, 点选 <b>下一步</b>',
|
||||
'LBL_SF_NUM_7' => '<b>步骤 4: 命令输出字段</b>, 点选 <b>下一步</b>',
|
||||
'LBL_SF_NUM_8' => '<b>步骤 5: 选择您的输出标准</b>, 在 <b>开始日期</b>下方, 选择足够的日期范围值到您的公司. 您您可以输出公司相关的信息利用更多的进阶选项. 当您完成, 点选 <b>报告</b>',
|
||||
'LBL_SF_NUM_9' => '报告将产生, 并且该页面会显示 <b>报告执行身份: 编译.</b> 立即点选 <b>输出到Excel电子电子表格</b>',
|
||||
'LBL_SF_NUM_10' => '在 <b>输出报告:</b>, 从 <b>输出文件格式:</b>, 选择 <b>标点符号区分.csv</b>. 点选 <b>输出</b>.',
|
||||
'LBL_SF_NUM_11' => '将会弹出对话窗口让您可以储存输出文件.',
|
||||
'LBL_IMPORT_CUSTOM_TITLE' => '许多应用将会依您的输出数据所设定的 <b>标点符号区分 (.csv)</b>. 通常将会依一般设定值来执行:',
|
||||
'LBL_CUSTOM_NUM_1' => '开始应用执行并打开数据文件',
|
||||
'LBL_CUSTOM_NUM_2' => '选择 <b>另存...</b> 或 <b>输出...</b> 清单选项',
|
||||
'LBL_CUSTOM_NUM_3' => '储存文件的格式依据 <b>CSV</b> 或 <b>标点符号设定值</b>',
|
||||
|
||||
'LBL_STEP_3_TITLE' => '步骤 3 / 4: 确认导入字段',
|
||||
'LBL_STEP_1' => '步骤 1 / 3:',
|
||||
'LBL_STEP_1_TITLE'=>'选择 .CSV 文件',
|
||||
'LBL_STEP_1_TEXT' => ' vtiger CRM 支持从 .csv (<b> 逗点分隔数据</b> ) 文件导入数据,请选择指定的文件后点选继续按钮。<br/><b>注意:请在执行导入前,首先修改导入文件的编码为:UTF-8或ISO-8859-1</b>',
|
||||
|
||||
'LBL_SELECT_FIELDS_TO_MAP' => '在列表下方, 从您读入的文件中选择输入的字段. 当您完成时,点选 <b>立即读入</b>',
|
||||
|
||||
'LBL_DATABASE_FIELD' => '数据库字段',
|
||||
'LBL_HEADER_ROW' => '字段标题',
|
||||
'LBL_ROW' => '列',
|
||||
'LBL_SAVE_AS_CUSTOM' => '储存自订标记:',
|
||||
'LBL_CONTACTS_NOTE_1' => '不管是名或全名都必须被标记选择.',
|
||||
'LBL_CONTACTS_NOTE_2' => '如果全名被标记选择, 那姓与名字段就会取消.',
|
||||
'LBL_CONTACTS_NOTE_3' => '如果全名被标记选择,当要写入数据库时它们会被自动分割成姓与名.',
|
||||
'LBL_CONTACTS_NOTE_4' => '数据新增到数据库时,在地址2与地址3的信息会与主要地址字段合并',
|
||||
'LBL_ACCOUNTS_NOTE_1' => '公司名称必须被选择标记.',
|
||||
'LBL_ACCOUNTS_NOTE_2' => '当要写入数据库时,将地址街道巷号2和街道巷号3的数据合并在主要地址字段.',
|
||||
'LBL_POTENTIALS_NOTE_1' => '潜在机会名称,公司名称,结束日期与销售策略都是必填字段',
|
||||
'LBL_OPPORTUNITIES_NOTE_1' => '潜在案件名称, 公司名称, 结束日期, 和客服场地所需的字段.',
|
||||
'LBL_LEADS_NOTE_1' => '必须指定姓氏',
|
||||
'LBL_LEADS_NOTE_2' => '必须指定公司名称',
|
||||
'LBL_IMPORT_NOW' => '立即读入',
|
||||
'LBL_' => '',
|
||||
'LBL_CANNOT_OPEN' => '无法读取导入的文件',
|
||||
'LBL_NOT_SAME_NUMBER' => '在您指定的文件中每列的各字段的号码不一致',
|
||||
'LBL_NO_LINES' => '在您读入的文件中没有行号',
|
||||
'LBL_FILE_ALREADY_BEEN_OR' => '您所指定导入的文件已经处理过或不存在',
|
||||
'LBL_SUCCESS' => '服务系统操作:',
|
||||
'LBL_SUCCESSFULLY' => '读入系统操作',
|
||||
'LBL_LAST_IMPORT_UNDONE' => '您最后一笔读入的信息已取消',
|
||||
'LBL_NO_IMPORT_TO_UNDO' => '没有读入的信息供取消.',
|
||||
'LBL_FAIL' => '失败:',
|
||||
'LBL_RECORDS_SKIPPED' => '该笔记录略过,因为缺漏必要字段值',
|
||||
'LBL_IDS_EXISTED_OR_LONGER' => '该笔记录略过,因为记录编号已存在或长度超过36字符',
|
||||
'LBL_RESULTS' => '结果',
|
||||
'LBL_IMPORT_MORE' => '读入更多...',
|
||||
'LBL_FINISHED' => '已完成',
|
||||
'LBL_UNDO_LAST_IMPORT' => '取消最后一笔的读入',
|
||||
|
||||
'LBL_SUCCESS_1' => '成功导入数据笔数:',
|
||||
'LBL_SKIPPED_1' => '略过的数据笔数(可能缺少一或多个字段):',
|
||||
|
||||
//Added for patch2 - Products Import Notes
|
||||
'LBL_PRODUCTS_NOTE_1' => '必须对应产品名称',
|
||||
'LBL_PRODUCTS_NOTE_2' => '在导入前请先确认单一字段是否被指定两次',
|
||||
|
||||
//Added for version 5
|
||||
'LBL_FILE_LOCATION' => '文件位置:',
|
||||
'LBL_STEP_2_3' => '步骤 2 / 3:',
|
||||
'LBL_LIST_MAPPING' => '列表与对应',
|
||||
'LBL_STEP_2_MSG' => '下面数据表显示导入的数据',
|
||||
'LBL_STEP_2_MSG1' => '与其它细节。',
|
||||
'LBL_STEP_2_TXT' => '对应字段的方式是在下面相对方块中调整个别项目',
|
||||
'LBL_USE_SAVED_MAPPING' => '使用预存对应:',
|
||||
'LBL_MAPPING' => '对应',
|
||||
'LBL_HEADERS' => '页首:',
|
||||
'LBL_ERROR_MULTIPLE' => '同样的字段对应两次,请检查对应字段。',
|
||||
'LBL_STEP_3_3' => '步骤 3 / 3 :',
|
||||
'LBL_MAPPING_RESULTS' => '对应结果',
|
||||
'LBL_LAST_IMPORTED' => '最新导入的',
|
||||
//Added for sript alerts
|
||||
'PLEASE_CHECK_MAPPING' => "' 映射一次以上。请检查映射.",
|
||||
'MAP_MANDATORY_FIELD' => 'Please map the mandatory field "',
|
||||
'ENTER_SAVEMAP_NAME' => '请输入要保存的地图名',
|
||||
|
||||
//Added for 5.0.3
|
||||
'to'=>'to',
|
||||
'of'=>'of',
|
||||
'are_imported_succesfully'=>'导入成功',
|
||||
|
||||
// Added after 5.0.4 GA
|
||||
|
||||
//added for duplicate handling
|
||||
'LBL_LAST_IMPORT'=>'Last Imported',
|
||||
'Select_Criteria_For_Duplicate' => 'Select Criteria For Duplicate Records Handling',
|
||||
'Manual_Merging' => 'Manual Merging',
|
||||
'Auto_Merging' => 'Auto Merging',
|
||||
'Ignore_Duplicate' => 'Ignore the duplicate import records',
|
||||
'Overwrite_Duplicate' => 'Overwrite the duplicate records',
|
||||
'Duplicate_Records_Skipped_Info' => 'No. of Records Skipped as they were duplicates : ',
|
||||
'Duplicate_Records_Overwrite_Info' => 'No. of Records Overwritten as they were duplicates : ',
|
||||
'LBL_STEP_4_4' => 'Step 4 of 4 : ',
|
||||
'LBL_STEP_3_4'=>'Step 3 of 4 :',
|
||||
'LBL_STEP_2_4'=>'Step 2 of 4 :',
|
||||
'LBL_STEP_1_4'=>'Step 1 of 4 : ',
|
||||
|
||||
'LBL_DELIMITER' => '定界符:',
|
||||
'LBL_FORMAT' => '编码:',
|
||||
);
|
||||
|
||||
/*$mod_list_strings = Array(
|
||||
"id"=>"Contact ID"
|
||||
,"first_name"=>"First Name"
|
||||
,"last_name"=>"Last Name"
|
||||
,"salutation"=>"Salutation"
|
||||
,"lead_source"=>"Lead Source"
|
||||
,"birthdate"=>"Lead Source"
|
||||
,"do_not_call"=>"Do Not Call"
|
||||
,"email_opt_out"=>"Email Opt Out"
|
||||
,"primary_address_street_2"=>"Primary Address Street 2"
|
||||
,"primary_address_street_3"=>"Primary Address Street 3"
|
||||
,"alt_address_street_2"=>"Other Address Street 2"
|
||||
,"alt_address_street_3"=>"Other Address Street 3"
|
||||
,"full_name"=>"Full Name"
|
||||
,"account_name"=>"Account Name"
|
||||
,"account_id"=>"Account ID"
|
||||
,"title"=>"Title"
|
||||
,"department"=>"Department"
|
||||
,"birthdate"=>"Birthdate"
|
||||
,"do_not_call"=>"Do Not Call"
|
||||
,"phone_home"=>"Phone (Home)"
|
||||
,"phone_mobile"=>"Phone (Mobile)"
|
||||
,"phone_work"=>"Phone (Work)"
|
||||
,"phone_other"=>"Phone (Other)"
|
||||
,"phone_fax"=>"Fax"
|
||||
,"email1"=>"Email"
|
||||
,"email2"=>"Email (Other)"
|
||||
,"yahoo_id"=>"Yahoo! ID"
|
||||
,"assistant"=>"Assistant"
|
||||
,"assistant_phone"=>"Assistant Phone"
|
||||
,"primary_address_street"=>"Primary Address Street"
|
||||
,"primary_address_city"=>"Primary Address City"
|
||||
,"primary_address_state"=>"Primary Address State"
|
||||
,"primary_address_postalcode"=>"Primary Address Postalcode"
|
||||
,"primary_address_country"=>"Primary Address Country"
|
||||
,"alt_address_street"=>"Other Address Street"
|
||||
,"alt_address_city"=>"Other Address City"
|
||||
,"alt_address_state"=>"Other Address State"
|
||||
,"alt_address_postalcode"=>"Other Address Postalcode"
|
||||
,"alt_address_country"=>"Other Address Country"
|
||||
,"description"=>"Description"
|
||||
|
||||
),*/
|
||||
$mod_list_strings = Array(
|
||||
'contacts_import_fields' => Array(
|
||||
//"id"=>"Contact ID"
|
||||
"firstname"=>"名字"
|
||||
,"lastname"=>"姓氏"
|
||||
,"salutationtype"=>"称号"
|
||||
,"leadsource"=>"资料来源"
|
||||
,"birthday"=>"出生日期"
|
||||
,"donotcall"=>"请勿来电"
|
||||
,"emailoptout"=>"请勿来信"
|
||||
//,"primary_address_street_2"=>"Primary Address Street 2"
|
||||
//,"primary_address_street_3"=>"Primary Address Street 3"
|
||||
//,"alt_address_street_2"=>"Other Address Street 2"
|
||||
//,"alt_address_street_3"=>"Other Address Street 3"
|
||||
//,"full_name"=>"Full Name"
|
||||
//,"account_name"=>"Account Name"
|
||||
,"account_id" => "公司名称"
|
||||
,"title"=>"标题"
|
||||
,"department"=>"部门"
|
||||
//,"birthdate"=>"Birthdate"
|
||||
//,"do_not_call"=>"Do Not Call"
|
||||
,"homephone"=>"电话(家庭)"
|
||||
,"mobile"=>"电话 (手机)"
|
||||
,"phone"=>"电话 (工作)"
|
||||
,"otherphone"=>"电话 (其他)"
|
||||
,"fax"=>"传真"
|
||||
,"email"=>"Email"
|
||||
,"otheremail"=>"Email (其他)"
|
||||
,"yahooid"=>"Yahoo! ID"
|
||||
,"assistant"=>"助理"
|
||||
,"assistantphone"=>"助理电话"
|
||||
,"mailingstreet"=>"信件地址(街道巷号)"
|
||||
,"mailingpobox"=>"信件地址(邮政信箱)"
|
||||
,"mailingcity"=>"信件地址(乡镇市区)"
|
||||
,"mailingstate"=>"信件地址(县市)"
|
||||
,"mailingzip"=>"信件地址(邮政编码)"
|
||||
,"mailingcountry"=>"信件地址(国家)"
|
||||
,"otherstreet"=>"其它地址(街道巷号)"
|
||||
,"otherpobox"=>"其它地址(邮政信箱)"
|
||||
,"othercity"=>"其它地址(乡镇市区)"
|
||||
,"otherstate"=>"其它地址(县市)"
|
||||
,"otherzip"=>"其它地址(邮政编码)"
|
||||
,"othercountry"=>"其它地址(国家)"
|
||||
,"description"=>"描述"
|
||||
,"assigned_user_id"=>"担当者"
|
||||
),
|
||||
|
||||
'accounts_import_fields' => Array(
|
||||
//"id"=>"Account ID",
|
||||
"accountname"=>"公司名称",
|
||||
"website"=>"网站",
|
||||
"industry"=>"企业",
|
||||
"accounttype"=>"类型",
|
||||
"tickersymbol"=>"传票符号",
|
||||
"parent_name"=>"成员",
|
||||
"employees"=>"员工",
|
||||
"ownership"=>"潜在客户",
|
||||
"phone"=>"电话",
|
||||
"fax"=>"传真",
|
||||
"otherphone"=>"其他电话",
|
||||
"email1"=>"Email",
|
||||
"email2"=>"其他电邮",
|
||||
"rating"=>"评价",
|
||||
"siccode"=>"统一编号",
|
||||
"annual_revenue"=>"年营业额",
|
||||
"bill_street"=>"账单地址(街道巷号)",
|
||||
//"billing_address_street_2"=>"Billing Address Street 2",
|
||||
//"billing_address_street_3"=>"Billing Address Street 3",
|
||||
//"billing_address_street_4"=>"Billing Address Street 4",
|
||||
"bill_pobox"=>"账单地址(邮政信箱)",
|
||||
"bill_city"=>"账单地址(乡镇市区)",
|
||||
"bill_state"=>"账单地址(县市)",
|
||||
"bill_code"=>"账单地址(邮政编码)",
|
||||
"bill_country"=>"账单地址(国家)",
|
||||
"ship_street"=>"送货地址(街道巷号)",
|
||||
//"shipping_address_street_2"=>"Shipping Address Street 2",
|
||||
//"shipping_address_street_3"=>"Shipping Address Street 3",
|
||||
//"shipping_address_street_4"=>"Shipping Address Street 4",
|
||||
"ship_pobox"=>"收货住址(邮政信箱)",
|
||||
"ship_city"=>"送货地址(乡镇市区)",
|
||||
"ship_state"=>"送货地址(县市)",
|
||||
"ship_code"=>"送货地址(邮政编码)",
|
||||
"ship_country"=>"送货地址(国家)",
|
||||
"description"=>"描述",
|
||||
"assigned_user_id"=>"负责人"
|
||||
),
|
||||
|
||||
'potentials_import_fields' => Array(
|
||||
//"id"=>"Account ID"
|
||||
"potentialname"=>"潜在案件名称"
|
||||
, "account_id"=>"公司名称"
|
||||
, "opportunity_type"=>"潜在案件类型"
|
||||
, "leadsource"=>"资料来源"
|
||||
, "amount"=>"合计"
|
||||
, "closingdate"=>"关闭日期"
|
||||
, "nextstep"=>"下一步设定"
|
||||
, "sales_stage"=>"客服位置"
|
||||
, "probability"=>"可能性"
|
||||
, "description"=>"描述"
|
||||
,"assigned_user_id"=>"负责人"
|
||||
),
|
||||
|
||||
|
||||
'leads_import_fields' => Array(
|
||||
"salutationtype"=>"称号",
|
||||
"firstname"=>"姓",
|
||||
"phone"=>"电话",
|
||||
"lastname"=>"名",
|
||||
"mobile"=>"手机",
|
||||
"company"=>"公司",
|
||||
"fax"=>"传真",
|
||||
"designation"=>"任命",
|
||||
"email"=>"Email",
|
||||
"leadsource"=>"资料来源",
|
||||
"website"=>"网站",
|
||||
"industry"=>"企业",
|
||||
"leadstatus"=>"潜在客户职位",
|
||||
"annualrevenue"=>"年营业额",
|
||||
"rating"=>"评价",
|
||||
"noofemployees"=>"没有雇员",
|
||||
"assigned_user_id"=>"负责人",
|
||||
"yahooid"=>"Yahoo Id",
|
||||
"lane"=>"街道巷号",
|
||||
"pobox"=>"邮政信箱",
|
||||
"code"=>"邮政编码",
|
||||
"city"=>"乡镇市区",
|
||||
"country"=>"国家",
|
||||
"state"=>"县市",
|
||||
"description"=>"描述",
|
||||
"assigned_user_id"=>"负责人"
|
||||
),
|
||||
|
||||
'products_import_fields' => Array(
|
||||
'productname' => '产品名称',
|
||||
'productcode' => '产品代码',
|
||||
'productcategory' => '产品类别',
|
||||
'manufacturer' => '制造商',
|
||||
'product_description' => '产品介绍',
|
||||
'qty_per_unit' => '单位数量',
|
||||
'unit_price' => '单位价格',
|
||||
'weight' => '重量',
|
||||
'pack_size' => '包装大小',
|
||||
'start_date' => '开始日期',
|
||||
'expiry_date' => '到期日',
|
||||
'cost_factor' => '成本要素',
|
||||
'commissionmethod' => '佣金计算方式',
|
||||
'discontinued' => '停售',
|
||||
'commissionrate' => '佣金率',
|
||||
'sales_start_date' => '开始销售日期',
|
||||
'sales_end_date' => '停止销售日期',
|
||||
'usageunit' => '使用单位',
|
||||
'serialno' => '序号',
|
||||
'currency' => '货币',
|
||||
'reorderlevel' => '安全库存',
|
||||
'website' => '网站',
|
||||
'taxclass' => '税别',
|
||||
'mfr_part_no' => '制造零件编号',
|
||||
'vendor_part_no' => '厂商零件编号',
|
||||
'qtyinstock' => '库存数量',
|
||||
'productsheet' => '产品表',
|
||||
'qtyindemand' => '需求数量',
|
||||
'glacct' => '会计科目',
|
||||
'assigned_user_id' => '负责人'
|
||||
),
|
||||
//Pavani...adding list of import fields for helpdesk and vendors
|
||||
'helpdesk_import_fields' => Array(
|
||||
"ticketid"=>"Ticket Id",
|
||||
"priority"=>"Priority",
|
||||
"severity"=>"Severity",
|
||||
"status"=>"Status",
|
||||
"category"=>"Category",
|
||||
"title"=>"Title",
|
||||
"description"=>"Description",
|
||||
"solution"=>"Solution"
|
||||
),
|
||||
|
||||
'vendors_import_fields' => Array(
|
||||
"vendorid"=>"Vender Id",
|
||||
"vendorname"=>"Vendor Name",
|
||||
"phone"=>"Phone",
|
||||
"email"=>"Email",
|
||||
"website"=>"Website",
|
||||
"category"=>"Category",
|
||||
"street"=>"Street",
|
||||
"city"=>"City",
|
||||
"state"=>"State",
|
||||
"pobox"=>"Post Box",
|
||||
"postalcode"=>"Postal Code",
|
||||
"country"=>"Country",
|
||||
"description"=>"Description"
|
||||
)
|
||||
//Pavani...end list
|
||||
);
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
/*********************************************************************************
|
||||
* $Header$
|
||||
* Description: TODO: To be written.
|
||||
********************************************************************************/
|
||||
|
||||
require_once('Smarty_setup.php');
|
||||
require_once('data/Tracker.php');
|
||||
require_once('modules/Import/ImportContact.php');
|
||||
require_once('modules/Import/ImportAccount.php');
|
||||
require_once('modules/Import/ImportOpportunity.php');
|
||||
require_once('modules/Import/ImportLead.php');
|
||||
//Pavani: Import this file to Support Imports for Trouble tickets and vendors
|
||||
require_once('modules/Import/ImportTicket.php');
|
||||
require_once('modules/Import/ImportVendors.php');
|
||||
require_once('modules/Import/UsersLastImport.php');
|
||||
require_once('modules/Import/parse_utils.php');
|
||||
require_once('include/ListView/ListView.php');
|
||||
require_once('modules/Contacts/Contacts.php');
|
||||
require_once('include/utils/utils.php');
|
||||
|
||||
global $mod_strings;
|
||||
global $app_list_strings;
|
||||
global $app_strings;
|
||||
global $current_user;
|
||||
$currentModule = "Import";
|
||||
|
||||
if (! isset( $_REQUEST['module']))
|
||||
{
|
||||
$_REQUEST['module'] = 'Home';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_id']))
|
||||
{
|
||||
$_REQUEST['return_id'] = '';
|
||||
}
|
||||
if (! isset( $_REQUEST['return_module']))
|
||||
{
|
||||
$_REQUEST['return_module'] = '';
|
||||
}
|
||||
|
||||
if (! isset( $_REQUEST['return_action']))
|
||||
{
|
||||
$_REQUEST['return_action'] = '';
|
||||
}
|
||||
|
||||
global $theme;
|
||||
$theme_path="themes/".$theme."/";
|
||||
$image_path=$theme_path."images/";
|
||||
require_once($theme_path.'layout_utils.php');
|
||||
|
||||
$log->info("Import Step last");
|
||||
|
||||
$parenttab = getParenttab();
|
||||
//This Buttons_List1.tpl is is called to display the add, search, import and export buttons ie., second level tabs
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("IMP", $import_mod_strings);
|
||||
$smarty->assign("THEME", $theme);
|
||||
$smarty->assign("IMAGE_PATH", $image_path);
|
||||
|
||||
$smarty->assign("MODULE", vtlib_purify($_REQUEST['req_mod']));
|
||||
$smarty->assign("SINGLE_MOD", vtlib_purify($_REQUEST['modulename']));
|
||||
$smarty->assign("CATEGORY", vtlib_purify($_SESSION['import_parenttab']));
|
||||
|
||||
global $limit;
|
||||
global $list_max_entries_per_page;
|
||||
|
||||
$implict_account = false;
|
||||
|
||||
$import_modules_array = Array(
|
||||
"Leads"=>"Leads",
|
||||
"Accounts"=>"Accounts",
|
||||
"Contacts"=>"Contacts",
|
||||
"Potentials"=>"Potentials",
|
||||
"Products"=>"Products",
|
||||
"HelpDesk"=>"ImportTicket",
|
||||
"Vendors"=>"ImportVendors"
|
||||
);
|
||||
|
||||
if(!empty($_REQUEST['req_mod'])) {
|
||||
$req_mod = $_REQUEST['req_mod'];
|
||||
checkFileAccess("modules/$req_mod/$req_mod.php");
|
||||
require_once("modules/$req_mod/$req_mod.php");
|
||||
if(!isset($import_modules_array[$req_mod])) {
|
||||
$import_modules_array[$req_mod] = $req_mod;
|
||||
}
|
||||
}
|
||||
|
||||
foreach($import_modules_array as $module_name => $object_name)
|
||||
{
|
||||
|
||||
$seedUsersLastImport = new UsersLastImport();
|
||||
$seedUsersLastImport->bean_type = $module_name;
|
||||
$list_query = $seedUsersLastImport->create_list_query($o,$w);
|
||||
$current_module_strings = return_module_language($current_language, $module_name);
|
||||
|
||||
$object = new $object_name();
|
||||
$seedUsersLastImport->list_fields = $object->list_fields;
|
||||
|
||||
$list_result = $adb->query($list_query);
|
||||
//Retreiving the no of rows
|
||||
$noofrows = $adb->num_rows($list_result);
|
||||
|
||||
if($noofrows < 1) {
|
||||
if($module_name == $_REQUEST['req_mod']) {
|
||||
echo "<link rel='stylesheet' type='text/css' href='themes/$theme/style.css'>";
|
||||
echo "<table border='0' cellpadding='5' cellspacing='0' width='100%' height='450px'><tr><td align='center'>";
|
||||
echo "<div style='border: 3px solid rgb(153, 153, 153); background-color: rgb(255, 255, 255); width: 55%; position: relative; z-index: 10000000;'>
|
||||
|
||||
<table border='0' cellpadding='5' cellspacing='0' width='98%'>
|
||||
<tbody><tr>
|
||||
<td rowspan='2' width='11%'><img src='". vtiger_imageurl('empty.jpg', $theme) ."' ></td>
|
||||
<td style='border-bottom: 1px solid rgb(204, 204, 204);' nowrap='nowrap' width='70%'>
|
||||
<span class='genHeaderSmall'>$app_strings[LBL_NO] $mod_strings[LBL_LAST_IMPORTED] $app_strings[$module_name]</span></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>";
|
||||
echo "</td></tr></table>";
|
||||
}
|
||||
} else {
|
||||
if($module_name != 'Accounts')
|
||||
{
|
||||
$implict_account=true;
|
||||
}
|
||||
|
||||
if($module_name == 'Accounts' && $implict_account==true)
|
||||
$display_header_msg = "Newly created Accounts";
|
||||
else
|
||||
$display_header_msg = "".$mod_strings['LBL_LAST_IMPORTED']." ".$app_strings[$module_name]."";
|
||||
|
||||
//Display the Header Message
|
||||
echo "
|
||||
<table width='100%' border='0' cellpadding='5' cellspacing='0'>
|
||||
<tr>
|
||||
<td class='dvtCellLabel' align='left'>
|
||||
<b>".$mod_strings['LBL_LAST_IMPORTED']." ".$app_strings[$module_name]." </b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
";
|
||||
|
||||
$smarty = new vtigerCRM_Smarty;
|
||||
|
||||
$smarty->assign("MOD", $mod_strings);
|
||||
$smarty->assign("APP", $app_strings);
|
||||
$smarty->assign("IMAGE_PATH",$image_path);
|
||||
$smarty->assign("MODULE",$module_name);
|
||||
$smarty->assign("SINGLE_MOD",$module_name);
|
||||
$smarty->assign("SHOW_MASS_SELECT",'false');
|
||||
|
||||
//Retreiving the start value from request
|
||||
if($module_name == $_REQUEST['nav_module'] && isset($_REQUEST['start']) && $_REQUEST['start'] != '') {
|
||||
$start = vtlib_purify($_REQUEST['start']);
|
||||
} else {
|
||||
$start = 1;
|
||||
}
|
||||
|
||||
$info_message='&recordcount='.vtlib_purify($_REQUEST['recordcount']).'&noofrows='.vtlib_purify($_REQUEST['noofrows']).'&message='.vtlib_purify($_REQUEST['message']).'&skipped_record_count='.vtlib_purify($_REQUEST['skipped_record_count']);
|
||||
$url_string = '&modulename='.vtlib_purify($_REQUEST['modulename']).'&nav_module='.$module_name.$info_message;
|
||||
$viewid = '';
|
||||
|
||||
//Retreive the Navigation array
|
||||
$navigation_array = getNavigationValues($start, $noofrows, $list_max_entries_per_page);
|
||||
$navigationOutput = getTableHeaderNavigation($navigation_array, $url_string,"Import","ImportSteplast",$viewid);
|
||||
|
||||
//Retreive the List View Header and Entries
|
||||
$listview_header = getListViewHeader($object,$module_name);
|
||||
$listview_entries = getListViewEntries($object,$module_name,$list_result,$navigation_array,"","","EditView","Delete","");
|
||||
//commented to remove navigation buttons from import list view
|
||||
//$smarty->assign("NAVIGATION", $navigationOutput);
|
||||
$smarty->assign("HIDE_CUSTOM_LINKS", 1);//Added to hide the CustomView links in imported records ListView
|
||||
|
||||
// Remove all the links for the list view header as they do not work in this page.
|
||||
for($i=0;$i<count($listview_header);$i++) {
|
||||
$listview_header[$i] = strip_tags($listview_header[$i]);
|
||||
}
|
||||
$smarty->assign("LISTHEADER", $listview_header);
|
||||
$smarty->assign("LISTENTITY", $listview_entries);
|
||||
|
||||
// Include required scripts
|
||||
echo '<link rel="stylesheet" type="text/css" href="'.$theme_path.'/style.css">';
|
||||
echo '<script language="JavaScript" type="text/javascript" src="include/js/general.js"></script>';
|
||||
echo '<script language="JavaScript" type="text/javascript" src="include/js/' . $_SESSION['authenticated_user_language'] . '.lang.js?' . $_SESSION['vtiger_version'] . '"></script>';
|
||||
echo '<script language="JavaScript" type="text/javascript" src="modules/'. vtlib_purify($_REQUEST['req_mod']) . '/' . vtlib_purify($_REQUEST['req_mod']) . '.js"></script>';
|
||||
echo '<script language="javascript" type="text/javascript" src="include/scriptaculous/prototype.js"></script>';
|
||||
|
||||
$smarty->display("ListViewEntries.tpl");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
/*********************************************************************************
|
||||
* The contents of this file are subject to the SugarCRM Public License Version 1.1.2
|
||||
* ("License"); You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at http://www.sugarcrm.com/SPL
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
* The Original Code is: SugarCRM Open Source
|
||||
* The Initial Developer of the Original Code is SugarCRM, Inc.
|
||||
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.;
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
********************************************************************************/
|
||||
|
||||
// takes a string and parses it into one record per line,
|
||||
// one vtiger_field per delimiter, to a maximum number of lines
|
||||
// some vtiger_files have a header, some dont.
|
||||
// keeps track of which vtiger_fields are used
|
||||
|
||||
/** function used to parse the file
|
||||
* @param string $file_name - file name
|
||||
* @param character $delimiter - delimiter of the csv file
|
||||
* @param int $max_lines - maximum number of lines to parse
|
||||
* @param int $has_header - if the file has header then 1 otherwise 0
|
||||
* @return array $ret_array - return an array which will be "rows"=>&$rows, "field_count"=>$field_count where as &rows is the reference of rows which contains all the parsed rows and $field_count is the number of fields available per row
|
||||
*/
|
||||
function parse_import($file_name,$delimiter,$max_lines,$has_header)
|
||||
{
|
||||
$line_count = 0;
|
||||
|
||||
$field_count = 0;
|
||||
|
||||
$rows = array();
|
||||
|
||||
if (! file_exists($file_name))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
$fh = fopen($file_name,"r");
|
||||
|
||||
if (! $fh)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
while ( (( $fields = fgetcsv($fh, 4096, $delimiter) ) !== FALSE)
|
||||
&& ( $max_lines == -1 || $line_count < $max_lines))
|
||||
{
|
||||
|
||||
if ( count($fields) == 1 && isset($fields[0]) && $fields[0] == '')
|
||||
{
|
||||
break;
|
||||
}
|
||||
$this_field_count = count($fields);
|
||||
|
||||
//Added to handle the case where the last value in a row is "" and
|
||||
//the field value in the next row is "" then for some reason these rows
|
||||
//are getting parsed as same row, this does not happen if the line seperator is
|
||||
// linux line endings.
|
||||
$matches = array();
|
||||
preg_match("/^''\s*''$/",$fields[$field_count - 1],$matches);
|
||||
if(($this_field_count + 1)/2 == $field_count && count($matches) > 0){
|
||||
$chunks = array_chunk($fields,$field_count);
|
||||
$fields = $chunks[0];
|
||||
array_push($rows,$chunks[1]);
|
||||
$line_count++;
|
||||
}else{
|
||||
$field_count = $this_field_count;
|
||||
}
|
||||
|
||||
array_push($rows,$fields);
|
||||
|
||||
$line_count++;
|
||||
|
||||
}
|
||||
|
||||
// got no rows
|
||||
if ( count($rows) == 0)
|
||||
{
|
||||
return -3;
|
||||
}
|
||||
|
||||
$ret_array = array(
|
||||
"rows"=>&$rows,
|
||||
"field_count"=>$field_count
|
||||
);
|
||||
|
||||
return $ret_array;
|
||||
|
||||
}
|
||||
|
||||
/** function used to parse the act file
|
||||
* @param string $file_name - file name
|
||||
* @param character $delimiter - delimiter of the csv file
|
||||
* @param int $max_lines - maximum number of lines to parse
|
||||
* @param int $has_header - if the file has header then 1 otherwise 0
|
||||
* @return array $ret_array - return an array which will be "rows"=>&$rows, "field_count"=>$field_count where as &rows is the reference of rows which contains all the parsed rows and $field_count is the number of fields available per row
|
||||
*/
|
||||
function parse_import_act($file_name,$delimiter,$max_lines,$has_header)
|
||||
{
|
||||
$line_count = 0;
|
||||
|
||||
$field_count = 0;
|
||||
|
||||
$rows = array();
|
||||
|
||||
if (! file_exists($file_name))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
$fh = fopen($file_name,"r");
|
||||
|
||||
if (! $fh)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
while ( ($line = fgets($fh, 4096))
|
||||
&& ( $max_lines == -1 || $line_count < $max_lines) )
|
||||
|
||||
{
|
||||
|
||||
$line = trim($line);
|
||||
$line = substr_replace($line,"",0,1);
|
||||
$line = substr_replace($line,"",-1);
|
||||
$fields = explode("\",\"",$line);
|
||||
|
||||
$this_field_count = count($fields);
|
||||
|
||||
if ( $this_field_count > $field_count)
|
||||
{
|
||||
$field_count = $this_field_count;
|
||||
}
|
||||
|
||||
array_push($rows,$fields);
|
||||
|
||||
$line_count++;
|
||||
|
||||
}
|
||||
|
||||
// got no rows
|
||||
if ( count($rows) == 0)
|
||||
{
|
||||
return -3;
|
||||
}
|
||||
|
||||
$ret_array = array(
|
||||
"rows"=>&$rows,
|
||||
"field_count"=>$field_count
|
||||
);
|
||||
|
||||
return $ret_array;
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/*+********************************************************************************
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
||||
* ("License"); You may not use this file except in compliance with the License
|
||||
* The Original Code is: vtiger CRM Open Source
|
||||
* The Initial Developer of the Original Code is vtiger.
|
||||
* Portions created by vtiger are Copyright (C) vtiger.
|
||||
* All Rights Reserved.
|
||||
*******************************************************************************/
|
||||
|
||||
global $adb;
|
||||
$tabid = getTabid($_REQUEST['module']);
|
||||
|
||||
//First we have to collect all available picklist and their values from the corresponding picklist tables
|
||||
$picklist_result = $adb->pquery("select fieldname from vtiger_field where uitype in ('15') and tabid=? and vtiger_field.presence in (0,2)", array($tabid));
|
||||
$no_of_picklists = $adb->num_rows($picklist_result);
|
||||
for($i=0;$i<$no_of_picklists;$i++)
|
||||
{
|
||||
$fieldname = $adb->query_result($picklist_result, $i, 'fieldname');
|
||||
$tablename = "vtiger_".$fieldname;
|
||||
$picklist_result2 = $adb->query("select * from $tablename");
|
||||
$available_picklists[] = $fieldname;
|
||||
//Now get all picklist values
|
||||
for($j=0;$j<$adb->num_rows($picklist_result2);$j++)
|
||||
{
|
||||
$table_picklist[$fieldname][$j]=$adb->query_result($picklist_result2, $j, $fieldname);
|
||||
$converted_table_picklist_values[$fieldname][$j] = strtolower($adb->query_result($picklist_result2, $j, $fieldname));
|
||||
}
|
||||
}
|
||||
|
||||
$csv_picklist_values = array();
|
||||
//Collect all picklist values from csv file
|
||||
foreach($field_to_pos as $fieldname => $ind)
|
||||
{
|
||||
if(in_array($fieldname,$available_picklists))
|
||||
{
|
||||
$adb->println("Picklist - $fieldname is mapped.");
|
||||
$picklist_pos[$fieldname] = $ind;
|
||||
for($i=1;$i<count($datarows);$i++)
|
||||
{
|
||||
$csv_picklist_values[$fieldname][] = $datarows[$i][$ind];
|
||||
}
|
||||
//Remove the repeated entries and make this array with unique entries
|
||||
|
||||
$csv_picklist_values[$fieldname] = array_unique($csv_picklist_values[$fieldname]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Now we have to add the CSV picklists in the picklist table if it is not exist
|
||||
foreach($csv_picklist_values as $fieldname => $temp_array)
|
||||
{
|
||||
$tablename = "vtiger_$fieldname";
|
||||
|
||||
foreach($temp_array as $ind => $picklist_value)
|
||||
{
|
||||
$pick_val = strtolower($picklist_value);
|
||||
//Check whether $picklist_value is exist in the array of available picklist entries
|
||||
if(!in_array($pick_val, $converted_table_picklist_values[$fieldname]))
|
||||
{
|
||||
|
||||
//Not exist, so we have to add this $picklist_value in $fieldname(picklist name) table
|
||||
$picklist_value = addslashes($picklist_value);
|
||||
|
||||
$adb->println("$picklist_value has to be added in the table $tablename");
|
||||
|
||||
$cfId=$adb->getUniqueID($tablename);
|
||||
$unique_picklist_value = getUniquePicklistID();
|
||||
$qry="insert into $tablename values(?,?,?,?)";
|
||||
$adb->pquery($qry, array($cfId,$picklist_value,1,$unique_picklist_value));
|
||||
//added to fix ticket#4492
|
||||
$picklistId_qry = "select picklistid from vtiger_picklist where name=?";
|
||||
$picklistId_res = $adb->pquery($picklistId_qry,array($fieldname));
|
||||
$picklist_Id = $adb->query_result($picklistId_res,0,'picklistid');
|
||||
|
||||
$role_id = $current_user->roleid;
|
||||
$sort_qry = "select max(sortid)+1 as sortid from vtiger_role2picklist where picklistid=? and roleid=?";
|
||||
$sort_qry_res = $adb->pquery($sort_qry,array($picklist_Id,$role_id));
|
||||
$sort_id = $adb->query_result($sort_qry_res,0,'sortid');
|
||||
$role_picklist = "insert into vtiger_role2picklist values (?,?,?,?)";
|
||||
$adb->pquery($role_picklist,array($role_id,$unique_picklist_value,$picklist_Id,$sort_id));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user