/** * This function exports all the data for a given module * Param $type - module name * Return type text */ function export($type) { global $log, $list_max_entries_per_page; $log->debug("Entering export(" . $type . ") method ..."); global $adb; $focus = 0; $content = ''; if ($type != "") { // vtlib customization: Hook to dynamically include required module file. // Refer to the logic in setting $currentModule in index.php $focus = CRMEntity::getInstance($type); } $log = LoggerManager::getLogger('export_' . $type); $db = PearDatabase::getInstance(); $oCustomView = new CustomView("{$type}"); $viewid = $oCustomView->getViewId("{$type}"); $sorder = $focus->getSortOrder(); $order_by = $focus->getOrderBy(); $search_type = $_REQUEST['search_type']; $export_data = $_REQUEST['export_data']; if (isset($_SESSION['export_where']) && $_SESSION['export_where'] != '' && $search_type == 'includesearch') { $where = $_SESSION['export_where']; } $query = $focus->create_export_query($where); if ($search_type != 'includesearch' && $type != 'Calendar') { $stdfiltersql = $oCustomView->getCVStdFilterSQL($viewid); $advfiltersql = $oCustomView->getCVAdvFilterSQL($viewid); if (isset($stdfiltersql) && $stdfiltersql != '') { $query .= ' and ' . $stdfiltersql; } if (isset($advfiltersql) && $advfiltersql != '') { $query .= ' and ' . $advfiltersql; } } $params = array(); if (($search_type == 'withoutsearch' || $search_type == 'includesearch') && $export_data == 'selecteddata') { $idstring = explode(";", $_REQUEST['idstring']); if ($type == 'Accounts' && count($idstring) > 0) { $query .= ' and vtiger_account.accountid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Contacts' && count($idstring) > 0) { $query .= ' and vtiger_contactdetails.contactid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Potentials' && count($idstring) > 0) { $query .= ' and vtiger_potential.potentialid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Leads' && count($idstring) > 0) { $query .= ' and vtiger_leaddetails.leadid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Products' && count($idstring) > 0) { $query .= ' and vtiger_products.productid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Documents' && count($idstring) > 0) { $query .= ' and vtiger_notes.notesid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'HelpDesk' && count($idstring) > 0) { $query .= ' and vtiger_troubletickets.ticketid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } elseif ($type == 'Vendors' && count($idstring) > 0) { $query .= ' and vtiger_vendor.vendorid in (' . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); } else { if (count($idstring) > 0) { // vtlib customization: Hook to make the export feature available for custom modules. $query .= " and {$focus->table_name}.{$focus->table_index} in (" . generateQuestionMarks($idstring) . ')'; array_push($params, $idstring); // END } } } if (isset($order_by) && $order_by != '') { if ($order_by == 'smownerid') { $query .= ' ORDER BY user_name ' . $sorder; } elseif ($order_by == 'lastname' && $type == 'Documents') { $query .= ' ORDER BY vtiger_contactdetails.lastname ' . $sorder; } elseif ($order_by == 'crmid' && $type == 'HelpDesk') { $query .= ' ORDER BY vtiger_troubletickets.ticketid ' . $sorder; } else { $tablename = getTableNameForField($type, $order_by); $tablename = $tablename != '' ? $tablename . "." : ''; if ($adb->dbType == "pgsql") { $query .= ' GROUP BY ' . $tablename . $order_by; } $query .= ' ORDER BY ' . $tablename . $order_by . ' ' . $sorder; } } if ($export_data == 'currentpage') { $current_page = ListViewSession::getCurrentPage($type, $viewid); $limit_start_rec = ($current_page - 1) * $list_max_entries_per_page; if ($limit_start_rec < 0) { $limit_start_rec = 0; } $query .= ' LIMIT ' . $limit_start_rec . ',' . $list_max_entries_per_page; } $query = str_replace_first("INNER JOIN vtiger_accounting ON vtiger_crmentity.crmid=vtiger_accounting.accountingid", "INNER JOIN vtiger_accounting ON vtiger_accounting.accountingid = vtiger_crmentity.crmid INNER JOIN vtiger_accounting_payments ON vtiger_accounting_payments.idtransaction=vtiger_accounting.accountingid", $query); $query = str_replace("vtiger_accounting.accountingduedate", "vtiger_accounting_payments.paymentduedate", $query); $query = str_replace("vtiger_accounting.accountingpaymentdate", "vtiger_accounting_payments.paymentdate", $query); $query = str_replace("vtiger_accounting.accountingamountpartial", "vtiger_accounting_payments.amount", $query); $query = str_replace("vtiger_accounting.accountingpaymentmethod", "vtiger_accounting_payments.paymentmethod", $query); $query = str_replace("vtiger_accounting.paymentrefpartial", "vtiger_accounting_payments.ref", $query); $query = str_replace("vtiger_accounting.paymentpaidpartial", "vtiger_accounting_payments.paid", $query); $query = str_replace("vtiger_accounting.paymentvatpartial", "vtiger_accounting_payments.tax", $query); $query = str_replace("vtiger_accounting.paymentassocpartial", "vtiger_accounting_payments.associnv", $query); $query = str_replace("FROM vtiger_crmentity", ", vtiger_accounting_payments.ref AS paymentrefpartial,vtiger_accounting_payments.paymentduedate AS accountingduedate," . "vtiger_accounting_payments.paymentdate AS accountingpaymentdate,vtiger_accounting_payments.amount AS accountingamountpartial,vtiger_accounting_payments.tax AS paymentvatpartial," . "vtiger_accounting_payments.paymentmethod AS accountingpaymentmethod,vtiger_accounting_payments.associnv AS paymentassocpartial,vtiger_accounting_payments.paid AS paymentpaidpartial FROM vtiger_crmentity", $query); $result = $adb->pquery($query, $params, true, "Error exporting {$type}: " . "<BR>{$query}"); $fields_array = $adb->getFieldsArray($result); $fields_array = array_diff($fields_array, array("user_name")); $__processor = new ExportUtils($type, $fields_array); // Translated the field names based on the language used. $translated_fields_array = array(); $j = 0; $acc_config = Accounting::loadConfigParams(); foreach ($fields_array as $fld) { //for($i=0; $i<count($fields_array); $i++) { if ($fld == "paymentassocpartial") { if (!isset($acc_config['associnvoice']) || $acc_config['associnvoice'] == "false") { continue; } } if ($fld == "paymentvatpartial") { if (!isset($acc_config['showvat']) || $acc_config['showvat'] == "false") { continue; } } $translated_fields_array[$j++] = getTranslatedString($fld, $type); } $header = implode("\",\"", array_values($translated_fields_array)); $header = "\"" . $header; $header .= "\"\r\n"; /** Output header information */ echo $header; $column_list = implode(",", array_values($fields_array)); while ($val = $adb->fetchByAssoc($result, -1, false)) { $new_arr = array(); $val = $__processor->sanitizeValues($val); foreach ($val as $key => $value) { if ($key == "paymentid") { $id = $value; } } foreach ($val as $key => $value) { if ($key == "paymentassocpartial") { if (!isset($acc_config['associnvoice']) || $acc_config['associnvoice'] == "false") { continue; } } if ($key == "paymentvatpartial") { if (!isset($acc_config['showvat']) || $acc_config['showvat'] == "false") { continue; } } if ($type == 'Documents' && $key == 'description') { $value = strip_tags($value); $value = str_replace(' ', '', $value); array_push($new_arr, $value); } elseif ($key == "paymentassocpartial") { $value = trim($value); if (!empty($value)) { $parent_module = getSalesEntityType($value); $displayValueArray = getEntityName($parent_module, $value); if (!empty($displayValueArray)) { foreach ($displayValueArray as $k => $v) { $displayValue = $v; } } if (!empty($parent_module) && !empty($displayValue)) { $value = $parent_module . "::::" . $displayValue; } else { $value = ""; } } else { $value = ''; } array_push($new_arr, $value); } elseif ($key == "accountingduedate" || $key == "accountingpaymentdate") { if ($value == "0000-00-00") { $value = ""; } array_push($new_arr, $value); } elseif ($key != "user_name") { // Let us provide the module to transform the value before we save it to CSV file $value = $focus->transform_export_value($key, $value); array_push($new_arr, preg_replace("/\"/", "\"\"", $value)); } } $line = implode("\",\"", $new_arr); $line = "\"" . $line; $line .= "\"\r\n"; /** Output each row information */ echo $line; } $log->debug("Exiting export method ..."); return true; }
echo "NO MODULES SELECTED"; exit; } $smarty->assign("MODULE", $fld_module); $mode = ""; if (isset($_REQUEST['mode']) && $_REQUEST['mode'] != '') { $mode = $_REQUEST['mode']; } $smarty->assign("MODE", $mode); $smarty->assign("FORMODULE", $fld_module); $smarty->assign("MOD", $mod_strings); global $vtiger_current_version; preg_match_all('/([\\d.]+)/', $vtiger_current_version, $match); $vtiger_current_version = implode("", $match[0]); eval(base64_decode("Z2xvYmFsICRhcHBsaWNhdGlvbl91bmlxdWVfa2V5OyRfU0VTU0lPTlsndXNlcm5hbWUnXT1zaGExKCRhcHBsaWNhdGlvbl91bmlxdWVfa2V5KTs=")); $config = Accounting::loadConfigParams(); global $current_language, $adb; $invocieLang = return_module_language($current_language, "Invoice"); $sql = "SELECT * FROM vtiger_invoicestatus where presence = ? OR presence = ?"; $result = $adb->pquery($sql, array(0, 1)); $nFields = $adb->num_rows($result); $invoiceStatus = array(); for ($i = 0; $i < $nFields; $i++) { $status = $adb->query_result($result, $i, 'invoicestatus'); $invoiceStatus[$status] = isset($invocieLang[$status]) ? $invocieLang[$status] : $status; } $smarty->assign('ACCOUNTING_CONFIG', $config); $smarty->assign('INVOICE_STATUS', $invoiceStatus); $customflds = array(); _getCustomFieldTrans("Invoice", $customflds); $smarty->assign('INVOICE_CUSTOM_FLD', $customflds);
static function testconn($connid, $connseed, $type) { acc_testConn(Accounting::loadConfigParams(), sha1($connid), $connseed, $type == 1 ? "u" : "i"); }
function createPayment($entity) { $config = Accounting::loadConfigParams(); if ($config['createpaymentwf'] != 'true') { return; } $inv_id = $entity->data['id']; $inv_id = explode("x", $entity->data['id']); $inv_id = $inv_id[1]; if ($entity->data['account_id'] != '') { $account_id = $entity->data['account_id']; $account_id = explode("x", $entity->data['account_id']); $account_id = $account_id[1]; } else { $account_id = $entity->data['contact_id']; $account_id = explode("x", $entity->data['contact_id']); $account_id = $account_id[1]; } if ($entity->data['assigned_user_id'] != '') { $assigned = 'assigned_user_id'; $assigned_user_id = $entity->data['assigned_user_id']; $assigned_user_id = explode("x", $entity->data['assigned_user_id']); $assigned_user_id = $assigned_user_id[1]; } else { $assigned = 'assigned_group_id'; $assigned_user_id = $entity->data['assigned_group_id']; $assigned_user_id = explode("x", $entity->data['assigned_group_id']); $assigned_user_id = $assigned_user_id[1]; } $params = array('module' => 'Accounting', 'action' => 'Save', 'accounting_id' => 'AUTO GEN ON SAVE', 'paymentref' => $entity->data['subject'], 'assigntype' => $assigned == 'assigned_user_id' ? 'U' : 'G', $assigned => $assigned_user_id, 'accountingtype' => 'Income', 'accountingrelated2_type' => 'Invoice', 'accountingrelated2' => $inv_id, 'accountingrelated1_type' => $entity->data['account_id'] != "" ? "Accounts" : "Contacts", 'accountingrelated1' => $account_id, 'accountingcategory' => '', 'accountingamount' => $entity->data['hdnGrandTotal'], 'accountingstate' => 'Pending', 'accountingcurrency' => $current_user->currency_code, 'accountingpaidamount' => 0, 'accountingpaidoustanding' => $entity->data['hdnGrandTotal'], 'nPayments' => 1, 'paymentref_0' => '', 'paymentmethod_0' => '', 'paymentamount_0' => $entity->data['hdnGrandTotal'], 'paymentduedate_0' => $entity->data['hdnGrandTotal'], 'paymentdate_0' => '', 'description' => ''); $focus = new Accounting(); $focus->column_fields = $params; $focus->save("Accounting"); global $adb; if ($config['createpaymentwf'] == true) { if (!(!isset($config['wf_nopayments']) || !isset($config['wf_firstpaymentdate']) || !isset($config['wf_firstpaymentamount']) || !isset($config['wf_frecuency']))) { if (!isset($entity->data[$config['wf_nopayments']]) || $entity->data[$config['wf_nopayments']] == "" || (int) $entity->data[$config['wf_nopayments']] < 1) { $entity->data[$config['wf_nopayments']] = 1; } if (!isset($entity->data[$config['wf_firstpaymentamount']]) || $entity->data[$config['wf_firstpaymentamount']] == "") { $entity->data[$config['wf_firstpaymentamount']] = 0; } if (!isset($entity->data[$config['wf_firstpaymentdate']]) || $entity->data[$config['wf_firstpaymentdate']] == "") { $entity->data[$config['wf_firstpaymentdate']] = ''; } if (!isset($entity->data[$config['wf_frecuency']]) || $entity->data[$config['wf_frecuency']] == "") { $entity->data[$config['wf_frecuency']] = ''; } $total = $entity->data['hdnGrandTotal'] == "" ? 0 : $entity->data['hdnGrandTotal']; $nopayments = $entity->data[$config['wf_nopayments']]; if ($nopayments > 1) { $payment_amount1 = $entity->data[$config['wf_firstpaymentamount']]; if ($payment_amount1 == 0) { $payment_amountn = ($total - $payment_amount1) / $nopayments; $payment_amount1 = $payment_amountn; } else { $payment_amountn = ($total - $payment_amount1) / ($nopayments - 1); } $payment_duedate = $entity->data[$config['wf_firstpaymentdate']]; $payment_frecuency = $entity->data[$config['wf_frecuency']]; for ($i = 0; $i < $nopayments; $i++) { $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount, paymentduedate, paymentdate, paid, ref, associnv, assoc_display, assoc_mod, paymentmethod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; if ($i == 0) { $data_arr = array($focus->id, $payment_amount1, $payment_duedate, '', '0', '', '', '', '', '---'); } else { $data_arr = array($focus->id, $payment_amountn, $payment_duedate, '', '0', '', '', '', '', '---'); } if ($payment_frecuency != '' && $payment_duedate != '') { $payment_duedate = strtotime('+' . $payment_frecuency . ' day', strtotime($payment_duedate)); $payment_duedate = date('Y-m-j', $payment_duedate); } foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } } else { $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount, tax, paymentduedate, paymentdate, paid, ref, associnv, assoc_display, assoc_mod, paymentmethod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $tax = ''; $data_arr = array($focus->id, $entity->data['hdnGrandTotal'], $tax, $entity->data['duedate'], $date, '0', '', '', '', '', ''); foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } } } }
function handleEvent($eventName, $data) { if ($eventName == 'vtiger.entity.beforesave.modifiable') { Accounting::sv_payments($data->getModuleName()); } if ($eventName == 'vtiger.entity.aftersave') { global $adb, $current_user; $nPayments = $_REQUEST['nPayments']; $payments = array(); $config = Accounting::loadConfigParams(); if ($_REQUEST['action'] == 'Save') { $sql = "DELETE FROM vtiger_accounting_payments WHERE idtransaction=?"; $res = $adb->pquery($sql, array($data->getId())); if ($nPayments == "2") { if ($_REQUEST['paymentref_0'] == "" && $_REQUEST['paymentamount_0'] == "" && $_REQUEST['paymentdate_0'] == "" && $_REQUEST['paymentduedate_0'] == "" && $_REQUEST['paymentassoc_0_display'] == "" && $_REQUEST['paymenttax_0'] == "") { $_REQUEST['paymentamount_0'] = $_REQUEST['accountingamount']; $_REQUEST['paymentref_0'] = $_REQUEST['paymentref']; } } for ($i = 0; $i <= $nPayments; $i++) { if (!isset($_REQUEST['paymentamount_' . $i])) { continue; } $payment = array(); $payment['amount'] = round($_REQUEST['paymentamount_' . $i], $config['decimals']); $payment['date'] = $_REQUEST['paymentdate_' . $i]; $payment['duedate'] = $_REQUEST['paymentduedate_' . $i]; $payment['ref'] = $_REQUEST['paymentref_' . $i]; $payment['associnv'] = $_REQUEST['paymentassoc_' . $i]; $payment['associnv_display'] = $_REQUEST['paymentassoc_' . $i . '_display']; $payment['paymentassoc_mod'] = $_REQUEST['paymentassoc_' . $i . '_mod']; $payment['paymentmethod'] = $_REQUEST['paymentmethod_' . $i]; $payment['paymenttax'] = $_REQUEST['paymenttax_' . $i]; if ($payment['paymentmethod'] == "") { $payment['paymentmethod'] = "---"; } Accounting::sv_payments($data->getModuleName()); $date_format = explode("-", $current_user->date_format); $date_aux = explode("-", $payment['date']); $date = array(); if ($payment['date'] != "") { for ($j = 0; $j < 3; $j++) { if ($date_format[$j] == "yyyy") { $date[0] = $date_aux[$j]; } else { if ($date_format[$j] == "mm") { $date[1] = $date_aux[$j]; } else { if ($date_format[$j] == "dd") { $date[2] = $date_aux[$j]; } } } } $date = $date[0] . "-" . $date[1] . "-" . $date[2]; } else { $date = "0000-00-00"; } $date_aux = explode("-", $payment['duedate']); $duedate = array(); if ($payment['duedate'] != "") { for ($j = 0; $j < 3; $j++) { if ($date_format[$j] == "yyyy") { $duedate[0] = $date_aux[$j]; } else { if ($date_format[$j] == "mm") { $duedate[1] = $date_aux[$j]; } else { if ($date_format[$j] == "dd") { $duedate[2] = $date_aux[$j]; } } } } $duedate = $duedate[0] . "-" . $duedate[1] . "-" . $duedate[2]; } else { $duedate = "0000-00-00"; } if (isset($_REQUEST['partial_paid_' . $i])) { $payment['paid'] = '1'; } else { $payment['paid'] = '0'; } $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount, tax, paymentduedate, paymentdate, paid, ref, associnv, assoc_display, assoc_mod, paymentmethod) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $data_arr = array($data->getId(), $payment['amount'], $payment['paymenttax'], $duedate, $date, $payment['paid'], $payment['ref'], $payment['associnv'], $payment['associnv_display'], $payment['paymentassoc_mod'], $payment['paymentmethod']); foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } if ($config['invoicewf'] == "true" && $_REQUEST['accountingrelated2_type'] == "Invoice" && $_REQUEST['accountingrelated2'] != "") { global $mod_strings; if ($_REQUEST['accountingstate'] == "Paid") { $invoicestatus = $config['invoicewfpaid']; } else { $invoicestatus = $config['invoicewfpending']; } $_REQUEST['file'] = 'DetailViewAjax'; $_REQUEST['module'] = 'Invoice'; $_REQUEST['action'] = 'InvoiceAjax'; $_REQUEST['record'] = $_REQUEST['accountingrelated2']; $_REQUEST['recordid'] = $_REQUEST['accountingrelated2']; $_REQUEST['fldName'] = 'invoicestatus'; $_REQUEST['fieldValue'] = $invoicestatus; $_REQUEST['ajxaction'] = 'DETAILVIEW'; $_REQUEST["tableName"] = ""; include "modules/Accounting/InvoiceDetailViewAjax.php"; } if ($config['invoicewf'] == "true") { global $mod_strings; if ($_REQUEST['accountingstate'] == "Paid") { $invoicestatus = $config['invoicewfpaid']; } else { $invoicestatus = $config['invoicewfpending']; } $q = "select associnv, paid from vtiger_accounting_payments where idtransaction = ? and assoc_mod = ? and associnv IS NOT NULL and associnv <> ''"; $result = $adb->pquery($q, array($data->getId(), 'Invoice')); $nPayments = $adb->num_rows($result); $payments = array(); for ($i = 0; $i < $nPayments; $i++) { $invid = $adb->query_result($result, $i, 'associnv'); $paid = $adb->query_result($result, $i, 'paid'); if ($paid == '1') { $invoicestatus = $config['invoicewfpaid']; } else { $invoicestatus = $config['invoicewfpending']; } $_REQUEST['file'] = 'DetailViewAjax'; $_REQUEST['module'] = 'Invoice'; $_REQUEST['action'] = 'InvoiceAjax'; $_REQUEST['record'] = $invid; $_REQUEST['recordid'] = $invid; $_REQUEST['fldName'] = 'invoicestatus'; $_REQUEST['fieldValue'] = $invoicestatus; $_REQUEST['ajxaction'] = 'DETAILVIEW'; $_REQUEST["tableName"] = ""; include "modules/Accounting/InvoiceDetailViewAjax.php"; } } } } global $adb; $q = "UPDATE vtiger_accounting SET accountingduedate = " . "(SELECT MIN(vtiger_accounting_payments.paymentduedate) FROM vtiger_accounting_payments " . "WHERE vtiger_accounting_payments.idtransaction = vtiger_accounting.accountingid AND " . "vtiger_accounting_payments.paymentduedate <> '0000-00-00' AND vtiger_accounting.accountingid=?) " . "WHERE vtiger_accounting.accountingid=?"; $adb->pquery($q, array($data->getId(), $data->getId())); $q = "UPDATE vtiger_accounting SET accountingpaymentdate = " . "(SELECT MIN(vtiger_accounting_payments.paymentdate) FROM vtiger_accounting_payments " . "WHERE vtiger_accounting_payments.idtransaction = vtiger_accounting.accountingid AND " . "vtiger_accounting_payments.paymentdate <> '0000-00-00' AND vtiger_accounting.accountingid=?) " . "WHERE vtiger_accounting.accountingid=?"; $adb->pquery($q, array($data->getId(), $data->getId())); }
function updateCustomLinks($addlinks = true) { global $adb, $mod_strings, $currentModule, $vtiger_current_version; getRelativeModules($module, $search, $enabled); if ($currentModule == 'Accounting') { $mod_strings_aux = $mod_strings; } else { $mod_strings_aux = return_module_language($_SESSION["authenticated_user_language"], 'Accounting'); } $sendfax_label = $mod_strings_aux['_LBL_ACC_SELECT_ACC'] == "" ? "Send ACC" : $mod_strings_aux['_LBL_ACC_SELECT_ACC']; $config = Accounting::loadConfigParams(); $bFixCustomLinksBug = isset($config["fixcustomlinksbug"]) && $config["fixcustomlinksbug"] == "true" ? true : false; preg_match_all('/([\\d.]+)/', $vtiger_current_version, $match); $vtiger_current_version = implode("", $match[0]); if (version_compare($vtiger_current_version, '5.2.0', '>=')) { $bFixCustomLinksBug = true; Accounting::updateConfigParam("fixcustomlinksbug", "true"); } $adb->pquery('DELETE FROM vtiger_links WHERE linktype=? AND linkurl=?', array('HEADERSCRIPT', 'modules/Accounting/LinkToACC.js.php?module=$MODULE$')); $adb->pquery('DELETE FROM vtiger_links WHERE linktype=? AND linkurl=?', array('HEADERSCRIPT', 'modules/Accounting/LinkToACC.js')); $adb->pquery('DELETE FROM vtiger_links WHERE linktype=? AND linkurl=?', array('LISTVIEWBASIC', 'return _onFaxSendShowQuickDivFix(\'$MODULE$\',this)')); $adb->pquery('DELETE FROM vtiger_links WHERE linktype=? AND linkurl=?', array('LISTVIEWBASIC', 'return _onFaxSendShowQuickDiv(\'$MODULE$\',this)')); $adb->pquery('DELETE FROM vtiger_links WHERE linktype=? AND linkurl=?', array('DETAILVIEWBASIC', 'index.php?module=Accounting&action=EditView&return_module=$MODULE$&return_action=DetailView&return_id=$RECORD$&parent_id=$RECORD$&linkAction=true')); if ($addlinks == false) { return; } $mods = Accounting::loadModsButtons(); include_once 'vtlib/Vtiger/Module.php'; foreach ($mods as $mod) { $mod[1] = $mod[1] == 1 ? "true" : "false"; $mod[2] = $mod[2] == 1 ? "true" : "false"; $module = Vtiger_Module::getInstance($mod[0]); if ($mod[2] == "true") { $checkres = $adb->pquery('SELECT linkid FROM vtiger_links WHERE tabid=? AND linktype=? AND linkurl=? AND linkicon=?', array($module->id, 'DETAILVIEWBASIC', 'index.php?module=Accounting&action=EditView&return_module=$MODULE$&return_action=DetailView&return_id=$RECORD$&parent_id=$RECORD$&linkAction=true', 'modules/Accounting/images/ACC_Send.gif')); if (!$adb->num_rows($checkres)) { $adb->pquery('INSERT INTO vtiger_links (linkid,tabid,linktype,linklabel,linkurl,linkicon,sequence) VALUES(?,?,?,?,?,?,?)', array($adb->getUniqueID('vtiger_links'), $module->id, 'DETAILVIEWBASIC', $sendfax_label, 'index.php?module=Accounting&action=EditView&return_module=$MODULE$&return_action=DetailView&return_id=$RECORD$&parent_id=$RECORD$&linkAction=true', 'modules/Accounting/images/ACC_Send.gif', 0)); } } if ($mod[1] == "true") { if ($bFixCustomLinksBug == false) { $type = 'HEADERSCRIPT'; $url = 'modules/Accounting/LinkToACC.js.php?module=$MODULE$'; } else { $type = 'LISTVIEWBASIC'; $url = 'return _onFaxSendShowQuickDivFix(\'$MODULE$\',this)'; } $checkres = $adb->pquery('SELECT linkid FROM vtiger_links WHERE tabid=? AND linktype=? AND linkurl=?', array($module->id, $type, $url)); if (!$adb->num_rows($checkres)) { $adb->pquery('INSERT INTO vtiger_links (linkid,tabid,linktype,linklabel,linkurl,sequence) VALUES(?,?,?,?,?,?)', array($adb->getUniqueID('vtiger_links'), $module->id, $type, $sendfax_label, $url, 0)); } $checkres = $adb->pquery('SELECT linkid FROM vtiger_links WHERE tabid=? AND linktype=? AND linkurl=?', array($module->id, 'HEADERSCRIPT', 'modules/Accounting/LinkToACC.js')); if (!$adb->num_rows($checkres)) { $adb->pquery('INSERT INTO vtiger_links (linkid,tabid,linktype,linklabel,linkurl,sequence) VALUES(?,?,?,?,?,?)', array($adb->getUniqueID('vtiger_links'), $module->id, 'HEADERSCRIPT', $sendfax_label, 'modules/Accounting/LinkToACC.js', 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; $acc_config = Accounting::loadConfigParams(); // 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() $lastacc = ""; $bMultiple = false; $rows2 = array(); $payments = array(); $sub = 0; $ref_idx = ""; foreach ($col_pos_to_field as $idx => $fld) { if ($fld == "accounting_id") { $ref_idx = $idx; break; } } $ref_idx = 0; foreach ($rows1 as $row) { if (array_key_exists($row[0], $payments) == false) { $bMultiple = false; } else { $bMultiple = true; } /* if ($row[0] == $lastacc) { $bMultiple = true; } else { $bMultiple = false; } $lastacc = $row[0]; */ if ($bMultiple == false) { array_push($rows2, $row); $payments[$row[0]] = array(); } else { $sub++; } $idx = 1; $paid = $row[$ret_field_count - $idx++]; if ($acc_config["associnvoice"] == "true") { $associnv = $row[$ret_field_count - $idx++]; } $paymentmethod = $row[$ret_field_count - $idx++]; if ($acc_config["showvat"] == "true") { $tax = $row[$ret_field_count - $idx++]; } $amount = $row[$ret_field_count - $idx++]; $paymentdate = $row[$ret_field_count - $idx++]; $paymentduedate = $row[$ret_field_count - $idx++]; $ref = $row[$ret_field_count - $idx++]; $invid = ''; $assocmodule = ''; $assocdisplay = ''; if ($associnv != "") { //check the module of the field $arr = array(); $arr = explode("::::", $associnv); $assocmodule = $arr[0]; $assocdisplay = $arr[1]; $focus1 = CRMEntity::getInstance($assocmodule); $entityNameArr = getEntityField($assocmodule); $entityName = $entityNameArr['fieldname']; $query = "SELECT vtiger_crmentity.deleted, {$focus1->table_name}.*\n\t\t\t\t\t\tFROM {$focus1->table_name}\n\t\t\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid={$focus1->table_name}.{$focus1->table_index}\n\t\t\t\t\t\t\twhere {$entityName}=? and vtiger_crmentity.deleted=0"; $result = $adb->pquery($query, array($assocdisplay)); $invid = $adb->query_result($result, 0, $focus1->table_index); } $payment = array('ref' => $ref, 'paymentduedate' => $paymentduedate, 'paymentdate' => $paymentdate, 'amount' => $amount, 'paymenttax' => $tax, 'paymentmethod' => $paymentmethod, 'associnv' => $invid, 'associnv_display' => $assocdisplay, 'paymentassoc_mod' => $assocmodule, 'paid' => $paid); array_push($payments[$row[0]], $payment); } $totalnoofrows -= $sub; $rows1 = $rows2; $recordcount = count($rows1); 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; } 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]]; $imported_user = $current_user->id; $q = "SELECT groupid FROM vtiger_groups WHERE groupname=?"; $res = $adb->pquery($q, array(trim($row[$field_count]))); if ($adb->num_rows($res) > 0) { $imported_user = $adb->query_result($res, 0, "groupid"); } else { $q = "SELECT id FROM vtiger_users WHERE user_name=?"; $res = $adb->pquery($q, array(trim($row[$field_count]))); if ($adb->num_rows($res) == 0) { $imported_user = $adb->query_result($res, 0, "id"); } } $focus->column_fields[$field] = $imported_user; p("setting my_userid={$my_userid} for user="******"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; // $focus->column_fields['accounting_id'] $sql = "INSERT INTO vtiger_accounting_payments (idtransaction, amount," . ($acc_config["showvat"] == "true" ? "tax," : "") . " paymentduedate, paymentdate, paid, ref," . ($acc_config["associnvoice"] == "true" ? "associnv,assoc_display,assoc_mod," : "") . " paymentmethod) VALUES (" . ($acc_config["showvat"] == "true" ? "?," : "") . ($acc_config["associnvoice"] == "true" ? "?,?,?," : "") . "?, ?, ?, ?, ?, ?, ?)"; foreach ($payments[$row[0]] as $payment) { if ($acc_config["associnvoice"] == "true" && $acc_config["showvat"] == "true") { $data_arr = array($return_id, $payment['amount'], $payment['paymenttax'], $payment['paymentduedate'], $payment['paymentdate'], $payment['paid'], $payment['ref'], $payment['associnv'], $payment['associnv_display'], $payment['paymentassoc_mod'], $payment['paymentmethod']); } else { if ($acc_config["associnvoice"] == "true" && $acc_config["showvat"] == "false") { $data_arr = array($return_id, $payment['amount'], $payment['paymentduedate'], $payment['paymentdate'], $payment['paid'], $payment['ref'], $payment['associnv'], $payment['associnv_display'], $payment['paymentassoc_mod'], $payment['paymentmethod']); } else { if ($acc_config["associnvoice"] == "false" && $acc_config["showvat"] == "true") { $data_arr = array($return_id, $payment['amount'], $payment['paymenttax'], $payment['paymentduedate'], $payment['paymentdate'], $payment['paid'], $payment['ref'], $payment['paymentmethod']); } else { if ($acc_config["associnvoice"] == "false" && $acc_config["showvat"] == "false") { $data_arr = array($return_id, $payment['amount'], $payment['paymentduedate'], $payment['paymentdate'], $payment['paid'], $payment['ref'], $payment['paymentmethod']); } } } } foreach ($data_arr as &$param) { if (!isset($param)) { $param = ""; } } $res = $adb->pquery($sql, $data_arr); } $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']; }