mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-26 16:18:47 +00:00
728 lines
20 KiB
PHP
728 lines
20 KiB
PHP
<?php
|
|
/*************************************
|
|
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
************************************/
|
|
|
|
/* crmv@127526 */
|
|
|
|
/**
|
|
* Provides utilities function to manage "fake modules", which are non-existant modules
|
|
* used in reports and relations to have a unified way of extracting data.
|
|
* At the moment the only modules handled are ProductsBlock and NewsletterStats
|
|
*/
|
|
class FakeModules {
|
|
|
|
public static $maxRealTabid = 200; // maximum tabid + 1 for real modules
|
|
|
|
public static $baseFakeRelationId = 10000; // minimum relationid for fake relations
|
|
|
|
public static $baseFakeBlockId = 10000; // minimum blockid for fake blocks
|
|
public static $baseFakeFieldId = 10000; // minimum fieldid for fake fields
|
|
|
|
public static $baseTaxBlockId = 20000; // min blockid for taxes in inventory modules
|
|
public static $baseTaxFieldId = 20000; // min fieldid for taxes in inventory modules
|
|
|
|
public static $baseConfProdFieldId = 100000; // crmv@198024
|
|
public static $maxConfProdFieldId = 200000; // crmv@198024
|
|
|
|
public static $fakeModules = array(
|
|
'ProductsBlock' => array(
|
|
'tabid' => 200, // fake tabid for the module
|
|
'fields' => 200, // number of reserved fields for this module
|
|
'tax_fields' => 100, // number of reserved tax fields
|
|
'blocks' => 10, // number of reserved blocks for this module
|
|
'field_offset' => 1, // start fieldids with this offset
|
|
'tax_offset' => 100, // offset for tax fields
|
|
'block_offset' => 1, // start of blockid
|
|
),
|
|
'NewsletterStats' => array(
|
|
'tabid' => 250,
|
|
'fields' => 20,
|
|
'blocks' => 10,
|
|
'field_offset' => 201,
|
|
'block_offset' => 11
|
|
),
|
|
'NewsletterTLinks' => array(
|
|
'tabid' => 260,
|
|
'fields' => 20,
|
|
'blocks' => 10,
|
|
'field_offset' => 221,
|
|
'block_offset' => 21
|
|
),
|
|
// crmv@150533
|
|
'PriceBooksPrices' => array(
|
|
'tabid' => 270,
|
|
'fields' => 10,
|
|
'blocks' => 10,
|
|
'field_offset' => 241,
|
|
'block_offset' => 31
|
|
)
|
|
// crmv@150533e
|
|
);
|
|
|
|
//crmv@181281
|
|
public static function getNewsletterModules() {
|
|
$focus = CRMEntity::getInstance('Newsletter');
|
|
return array_keys($focus->email_fields);
|
|
}
|
|
//crmv@181281e
|
|
|
|
public static function getModules() {
|
|
return array_keys(self::$fakeModules);
|
|
}
|
|
|
|
public static function isFakeModule($module) {
|
|
return array_key_exists($module, self::$fakeModules);
|
|
}
|
|
|
|
public static function getModuleLabel($module) {
|
|
if ($module == 'ProductsBlock') {
|
|
return getTranslatedString('LBL_RELATED_PRODUCTS', 'Settings');
|
|
} elseif ($module == 'NewsletterStats') {
|
|
return getTranslatedString('LBL_STATISTICS', 'Newsletter');
|
|
} elseif ($module == 'NewsletterTLinks') {
|
|
return getTranslatedString('Tracked Link', 'Campaigns');
|
|
// crmv@150533
|
|
} elseif ($module == 'PriceBooksPrices') {
|
|
return getTranslatedString('PriceBooksPrices', 'PriceBooks');
|
|
}
|
|
// crmv@150533e
|
|
return $module;
|
|
}
|
|
|
|
public static function getFieldLabel($module, $fieldname) {
|
|
$label = '';
|
|
$fields = self::getFields($module);
|
|
if (array_key_exists($fieldname, $fields)) {
|
|
$label = $fields[$fieldname]['label'];
|
|
}
|
|
return $label;
|
|
}
|
|
|
|
protected static function getTabId($module) {
|
|
global $adb, $table_prefix;
|
|
static $tabidCache = array();
|
|
if (!isset($tabidCache[$module])) {
|
|
$res = $adb->pquery("SELECT tabid FROM {$table_prefix}_tab WHERE name = ?", array($module));
|
|
$tabid = intval($adb->query_result_no_html($res, 0, 'tabid'));
|
|
$tabidCache[$module] = $tabid;
|
|
}
|
|
return $tabidCache[$module];
|
|
}
|
|
|
|
public static function isBlock($blockid, $module) {
|
|
$base = self::$baseFakeBlockId + self::$fakeModules[$module]['block_offset'];
|
|
return ($blockid >= $base && $blockid < $base + self::$fakeModules[$module]['blocks']);
|
|
}
|
|
|
|
public static function getBlocks($module) {
|
|
$base = self::$baseFakeBlockId + self::$fakeModules[$module]['block_offset'];
|
|
|
|
if ($module == 'ProductsBlock') {
|
|
$infos = array(
|
|
array(
|
|
'blockid' => $base,
|
|
'module' => $module,
|
|
'blocklabel' => 'LBL_RELATED_PRODUCTS',
|
|
'label' => getTranslatedString('LBL_RELATED_PRODUCTS', 'Settings'),
|
|
'sequence' => 100, // if merged into other modules, make sure it's the last
|
|
),
|
|
);
|
|
} elseif ($module == 'NewsletterStats') {
|
|
$infos = array(
|
|
array(
|
|
'blockid' => $base,
|
|
'module' => $module,
|
|
'blocklabel' => 'LBL_STATISTICS',
|
|
'label' => getTranslatedString('LBL_STATISTICS', 'Newsletter'),
|
|
'sequence' => 1,
|
|
),
|
|
);
|
|
} elseif ($module == 'NewsletterTLinks') {
|
|
$infos = array(
|
|
array(
|
|
'blockid' => $base,
|
|
'module' => $module,
|
|
'blocklabel' => 'Tracked Link',
|
|
'label' => getTranslatedString('Tracked Link', 'Campaigns'),
|
|
'sequence' => 1,
|
|
),
|
|
);
|
|
// crmv@150533
|
|
} elseif ($module == 'PriceBooksPrices') {
|
|
$infos = array(
|
|
array(
|
|
'blockid' => $base,
|
|
'module' => $module,
|
|
'blocklabel' => 'PriceBooksPrices',
|
|
'label' => getTranslatedString('PriceBooksPrices', 'PriceBooks'),
|
|
'sequence' => 1,
|
|
),
|
|
);
|
|
}
|
|
// crmv@150533e
|
|
|
|
return $infos;
|
|
}
|
|
|
|
public static function getBlockInfoById($blockid, $module) {
|
|
// crmv@159491
|
|
if (self::isInventoryTaxBlock($blockid)) {
|
|
return self::getInventoryTaxBlockInfoById($blockid);
|
|
}
|
|
// crmv@159491e
|
|
$infos = self::getBlocks($module);
|
|
foreach ($infos as $info) {
|
|
if ($info['blockid'] == $blockid) {
|
|
return $info;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function isField($fieldid, $module) {
|
|
$base = self::$baseFakeFieldId + self::$fakeModules[$module]['field_offset'];
|
|
return ($fieldid >= $base && $fieldid < $base + self::$fakeModules[$module]['fields']);
|
|
}
|
|
|
|
/**
|
|
* Check if the passed fieldid is a fake id
|
|
*/
|
|
public static function isFakeFieldId($fieldid, &$module) {
|
|
if (self::isInventoryTaxField($fieldid)) return true; // crmv@159491
|
|
foreach (self::$fakeModules as $mod => $modinfo) {
|
|
if (self::isField($fieldid, $mod)) {
|
|
$module = $mod;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check if the passed blockid is a fake id
|
|
*/
|
|
public static function isFakeBlockId($blockid, &$module) {
|
|
if (self::isInventoryTaxBlock($blockid)) return true; // crmv@159491
|
|
foreach (self::$fakeModules as $mod => $modinfo) {
|
|
if (self::isBlock($blockid, $mod)) {
|
|
$module = $mod;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function getFields($module) {
|
|
|
|
if ($module == 'ProductsBlock') {
|
|
return self::getPBFields();
|
|
} elseif ($module == 'NewsletterStats') {
|
|
return self::getNLFields();
|
|
} elseif ($module == 'NewsletterTLinks') {
|
|
return self::getTLinkFields();
|
|
// crmv@150533
|
|
} elseif ($module == 'PriceBooksPrices') {
|
|
return self::getPBPricesFields();
|
|
}
|
|
// crmv@150533e
|
|
}
|
|
|
|
/**
|
|
* get the fields in objects similar to WebserviceFields
|
|
*/
|
|
public static function getWSFields($module) {
|
|
$wsfields = array();
|
|
$fields = self::getFields($module);
|
|
foreach ($fields as $fieldname => $finfo) {
|
|
$wsfields[$fieldname] = self::createWSField($module, $finfo);
|
|
}
|
|
return $wsfields;
|
|
}
|
|
|
|
protected static function createWSField($module, $fieldinfo) {
|
|
global $adb;
|
|
$row = $fieldinfo;
|
|
$row['displaytype'] = '1';
|
|
$row['masseditable'] = '1';
|
|
$row['typeofdata'] = 'V~O'; // TODO!
|
|
$row['presence'] = '2';
|
|
$wsfield = WebserviceField::fromArray($adb, $row);
|
|
$wsfield->setFieldDataType($row['wstype']);
|
|
return $wsfield;
|
|
}
|
|
|
|
public static function getFieldInfoById($fieldid, $module) {
|
|
if (self::isInventoryTaxField($fieldid)) return self::getTaxFieldInfoById($fieldid); // crmv@159491
|
|
$fields = self::getFields($module);
|
|
foreach ($fields as $finfo) {
|
|
if ($finfo['fieldid'] == $fieldid) {
|
|
return $finfo;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function getFieldInfo($fieldname, $module) {
|
|
$fields = self::getFields($module);
|
|
foreach ($fields as $finfo) {
|
|
if ($finfo['fieldname'] == $fieldname) {
|
|
return $finfo;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
protected static function getPBFields() {
|
|
global $adb, $table_prefix;
|
|
|
|
$module = 'ProductsBlock';
|
|
|
|
$tabid = self::$fakeModules[$module]['tabid'];
|
|
$baseFieldid = self::$baseFakeFieldId + self::$fakeModules[$module]['field_offset'] - 1; // later is incremented
|
|
|
|
$blockinfo = self::getBlocks($module);
|
|
$blockinfo = $blockinfo[0];
|
|
|
|
$infos = array(
|
|
'id' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'id',
|
|
'fieldlabel' => 'Id',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => getInventoryModules(),
|
|
),
|
|
'productid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'productid',
|
|
'fieldlabel' => 'Product Name',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => getProductModules(),
|
|
),
|
|
'quantity' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'quantity',
|
|
'fieldlabel' => 'Quantity',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 7,
|
|
'wstype' => 'double',
|
|
),
|
|
'listprice' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'listprice',
|
|
'fieldlabel' => 'List Price',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 71,
|
|
'wstype' => 'double',
|
|
),
|
|
'discount' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'discount',
|
|
'fieldlabel' => 'Discount',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 7,
|
|
'wstype' => 'double',
|
|
),
|
|
'total_notaxes' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'total_notaxes',
|
|
'fieldlabel' => 'LBL_TOTAL_AFTER_DISCOUNT',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 71,
|
|
'wstype' => 'double',
|
|
),
|
|
'comment' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'comment',
|
|
'fieldlabel' => 'Comments',
|
|
'typeofdata' => 'V',
|
|
'uitype' => 1,
|
|
'wstype' => 'string',
|
|
),
|
|
'description' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'description',
|
|
'fieldlabel' => 'Description',
|
|
'typeofdata' => 'V',
|
|
'uitype' => 19,
|
|
'wstype' => 'text',
|
|
),
|
|
'linetotal' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'linetotal',
|
|
'fieldlabel' => 'Net Price',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 71,
|
|
'wstype' => 'double',
|
|
),
|
|
);
|
|
|
|
$taxFields = self::getTaxFields($module);
|
|
$infos = array_merge($infos, $taxFields);
|
|
|
|
$seq = 0;
|
|
foreach ($infos as &$info) {
|
|
$info['tabid'] = $tabid;
|
|
$info['module'] = $module;
|
|
if (!$info['fieldname']) $info['fieldname'] = $info['columnname']; // crmv@142671
|
|
$info['label'] = getTranslatedString($info['fieldlabel'], 'Quotes');
|
|
$info['tablename'] = $table_prefix.'_inventoryproductrel';
|
|
$info['block'] = $blockinfo['blockid'];
|
|
$info['sequence'] = ++$seq;
|
|
}
|
|
|
|
return $infos;
|
|
}
|
|
|
|
/* functions for tax block */
|
|
|
|
public static function isInventoryTaxBlock($blockid) {
|
|
// crmv@159491
|
|
$maxblockid = self::$baseTaxBlockId + self::$maxRealTabid * self::$maxRealTabid;
|
|
return ($blockid >= self::$baseTaxBlockId && $blockid < $maxblockid);
|
|
// crmv@159491e
|
|
}
|
|
|
|
public static function getInventoryTaxBlocks($module) {
|
|
$tabid = self::getTabid($module);
|
|
$baseBlockid = self::$baseTaxBlockId + self::$maxRealTabid * $tabid;
|
|
|
|
++$baseBlockid;
|
|
$infos = array(
|
|
array(
|
|
'module' => $module,
|
|
'blockid' => $baseBlockid,
|
|
'blocklabel' => 'LBL_TAX',
|
|
'label' => getTranslatedString('LBL_TAX', 'APP_STRINGS'),
|
|
'sequence' => 100, // after all other blocks
|
|
),
|
|
);
|
|
|
|
return $infos;
|
|
}
|
|
|
|
public static function getInventoryTaxBlockInfoById($blockid) {
|
|
$tabid = (int)(($blockid - self::$baseTaxBlockId)/self::$maxRealTabid); // crmv@159491
|
|
$module = getTabname($tabid);
|
|
$infos = self::getInventoryTaxBlocks($module);
|
|
foreach ($infos as $info) {
|
|
if ($info['blockid'] == $blockid) {
|
|
return $info;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* functions for tax fields (for PB or inventory modules */
|
|
|
|
public static function isInventoryTaxField($fieldid) {
|
|
$maxtaxId = self::$baseTaxFieldId + self::$maxRealTabid * self::$maxRealTabid;
|
|
return ($fieldid >= self::$baseTaxFieldId && $fieldid < $maxtaxId);
|
|
}
|
|
|
|
public static function getTaxFields($module) {
|
|
global $table_prefix;
|
|
|
|
$IUtils = InventoryUtils::getInstance();
|
|
|
|
$infos = array();
|
|
|
|
if ($module == 'ProductsBlock') {
|
|
$tabid = self::$fakeModules[$module]['tabid'];
|
|
$table = $table_prefix.'_inventoryproductrel';
|
|
$prodLabel = ' '.getTranslatedString('LBL_PRODUCT', 'APP_STRINGS'); // crmv@195745
|
|
$baseTaxFieldid = self::$baseFakeBlockId + self::$fakeModules[$module]['tax_offset'];
|
|
$blockid = 0; // overwritten later
|
|
} else {
|
|
$tabid = self::getTabid($module);
|
|
$table = $table_prefix.'_inventorytotals';
|
|
$prodLabel = '';
|
|
$baseTaxFieldid = self::$baseTaxFieldId + self::$maxRealTabid * $tabid;
|
|
|
|
$blockinfo = self::getInventoryTaxBlocks($module);
|
|
$blockinfo = $blockinfo[0];
|
|
$blockid = $blockinfo['blockid'];
|
|
}
|
|
|
|
// taxes for the single product line
|
|
$allTaxes = $IUtils->getAllTaxes('all');
|
|
// add total:
|
|
$allTaxes[] = array(
|
|
'taxid' => self::$fakeModules['ProductsBlock']['tax_fields'],
|
|
'taxname' => 'tax_total',
|
|
'taxlabel' => getTranslatedString('LBL_TOTAL', 'APP_STRINGS') // crmv@195745
|
|
);
|
|
$seq = 100;
|
|
foreach ($allTaxes as $tax) {
|
|
$taxname = $tax['taxname'];
|
|
$infos[$taxname] = array(
|
|
'tabid' => $tabid,
|
|
'block' => $blockid,
|
|
'module' => $module,
|
|
'trans_module' => $module == 'ProductsBlock' ? '' : getTranslatedString($module,$module), // crmv@195745
|
|
'fieldid' => $baseTaxFieldid + $tax['taxid'],
|
|
'tablename' => $table,
|
|
'columnname' => $taxname,
|
|
'fieldname' => $taxname,
|
|
// crmv@195745
|
|
'fieldlabel' => getTranslatedString('LBL_TAX', 'APP_STRINGS').$prodLabel.' ('.$tax['taxlabel'].')',
|
|
'label' => getTranslatedString('LBL_TAX', 'APP_STRINGS').$prodLabel.' ('.$tax['taxlabel'].')',
|
|
// crmv@195745e
|
|
'typeofdata' => 'N',
|
|
'uitype' => 71,
|
|
'wstype' => 'double',
|
|
'sequence' => $seq++,
|
|
);
|
|
}
|
|
|
|
return $infos;
|
|
}
|
|
|
|
public static function getTaxFieldInfo($module, $fieldname) {
|
|
$infos = self::getTaxFields($module);
|
|
$info = $infos[$fieldname];
|
|
return $info;
|
|
}
|
|
|
|
public static function getTaxFieldInfoById($fieldid) {
|
|
$tabid = (int)(($fieldid - self::$baseTaxFieldId)/self::$maxRealTabid);
|
|
$module = getTabname($tabid);
|
|
$infos = self::getTaxFields($module);
|
|
foreach ($infos as $info) {
|
|
if ($info['fieldid'] == $fieldid) {
|
|
return $info;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
protected static function getNLFields() {
|
|
|
|
$module = 'NewsletterStats';
|
|
|
|
$tabid = self::$fakeModules[$module]['tabid'];
|
|
$baseFieldid = self::$baseFakeFieldId + self::$fakeModules[$module]['field_offset'] - 1; // later is incremented
|
|
|
|
$blockinfo = self::getBlocks($module);
|
|
$blockinfo = $blockinfo[0];
|
|
|
|
$infos = array(
|
|
'newsletterid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'newsletterid',
|
|
'fieldlabel' => 'Newsletter',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => array('Newsletter'),
|
|
),
|
|
'crmid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'crmid',
|
|
'fieldlabel' => 'Recipient Name',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => self::getNewsletterModules(), //crmv@181281
|
|
),
|
|
'status' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'status',
|
|
'fieldlabel' => 'Status',
|
|
'typeofdata' => 'V',
|
|
'uitype' => 15,
|
|
'wstype' => 'picklist',
|
|
'allowed_values' => array(
|
|
'Scheduled' => getTranslatedString('Scheduled', 'Newsletter'),
|
|
'Sent' => getTranslatedString('Sent', 'Newsletter'),
|
|
'Failed' => getTranslatedString('Failed', 'Newsletter'),
|
|
),
|
|
),
|
|
'date_sent' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'date_sent',
|
|
'fieldlabel' => 'Sent Date',
|
|
'typeofdata' => 'T',
|
|
'uitype' => 70,
|
|
'wstype' => 'datetime',
|
|
),
|
|
'first_view' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'first_view',
|
|
'fieldlabel' => 'First View',
|
|
'typeofdata' => 'T',
|
|
'uitype' => 70,
|
|
'wstype' => 'datetime',
|
|
),
|
|
'last_view' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'last_view',
|
|
'fieldlabel' => 'Last View',
|
|
'typeofdata' => 'T',
|
|
'uitype' => 70,
|
|
'wstype' => 'datetime',
|
|
),
|
|
'num_views' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'num_views',
|
|
'fieldlabel' => 'No Views',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 7,
|
|
'wstype' => 'integer',
|
|
),
|
|
);
|
|
|
|
$seq = 0;
|
|
foreach ($infos as &$info) {
|
|
$info['tabid'] = $tabid;
|
|
$info['module'] = $module;
|
|
$info['fieldname'] = $info['columnname'];
|
|
$info['label'] = getTranslatedString($info['fieldlabel'], 'Newsletter');
|
|
$info['tablename'] = 'tbl_s_newsletter_queue';
|
|
$info['block'] = $blockinfo['blockid'];
|
|
$info['sequence'] = ++$seq;
|
|
}
|
|
|
|
return $infos;
|
|
}
|
|
|
|
protected static function getTLinkFields() {
|
|
|
|
$module = 'NewsletterTLinks';
|
|
|
|
$tabid = self::$fakeModules[$module]['tabid'];
|
|
$baseFieldid = self::$baseFakeFieldId + self::$fakeModules[$module]['field_offset'] - 1; // later is incremented
|
|
|
|
$blockinfo = self::getBlocks($module);
|
|
$blockinfo = $blockinfo[0];
|
|
|
|
$infos = array(
|
|
'newsletterid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'newsletterid',
|
|
'fieldlabel' => 'Newsletter',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => array('Newsletter'),
|
|
),
|
|
'crmid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'crmid',
|
|
'fieldlabel' => 'Recipient Name',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => self::getNewsletterModules(), //crmv@181281
|
|
),
|
|
'url' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'url',
|
|
'tablename' => 'tbl_s_newsletter_links',
|
|
'fieldlabel' => 'Link',
|
|
'typeofdata' => 'V',
|
|
'uitype' => 1,
|
|
'wstype' => 'url',
|
|
),
|
|
'firstclick' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'firstclick',
|
|
'fieldlabel' => 'First View',
|
|
'typeofdata' => 'T',
|
|
'uitype' => 70,
|
|
'wstype' => 'datetime',
|
|
),
|
|
'latestclick' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'latestclick',
|
|
'fieldlabel' => 'Last View',
|
|
'typeofdata' => 'T',
|
|
'uitype' => 70,
|
|
'wstype' => 'datetime',
|
|
),
|
|
'clicked' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'clicked',
|
|
'fieldlabel' => 'No Click',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 7,
|
|
'wstype' => 'integer',
|
|
),
|
|
);
|
|
|
|
$seq = 0;
|
|
foreach ($infos as &$info) {
|
|
$info['tabid'] = $tabid;
|
|
$info['module'] = $module;
|
|
$info['fieldname'] = $info['columnname'];
|
|
$info['label'] = getTranslatedString($info['fieldlabel'], 'Newsletter');
|
|
if (!$info['tablename']) $info['tablename'] = 'tbl_s_newsletter_tl';
|
|
$info['block'] = $blockinfo['blockid'];
|
|
$info['sequence'] = ++$seq;
|
|
}
|
|
|
|
return $infos;
|
|
}
|
|
|
|
// crmv@150533
|
|
protected static function getPBPricesFields() {
|
|
global $table_prefix;
|
|
|
|
$module = 'PriceBooksPrices';
|
|
|
|
$tabid = self::$fakeModules[$module]['tabid'];
|
|
$baseFieldid = self::$baseFakeFieldId + self::$fakeModules[$module]['field_offset'] - 1; // later is incremented
|
|
|
|
$blockinfo = self::getBlocks($module);
|
|
$blockinfo = $blockinfo[0];
|
|
|
|
$infos = array(
|
|
'pricebookid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'pricebookid',
|
|
'fieldlabel' => 'SINGLE_PriceBooks',
|
|
'label' => getTranslatedString('SINGLE_PriceBooks', 'APP_STRINGS'),
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => array('PriceBooks'),
|
|
),
|
|
'productid' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'productid',
|
|
'fieldlabel' => 'Product Name',
|
|
'typeofdata' => 'I',
|
|
'uitype' => 10,
|
|
'wstype' => 'reference',
|
|
'relmodules' => getProductModules(),
|
|
),
|
|
'listprice' => array(
|
|
'fieldid' => ++$baseFieldid,
|
|
'columnname' => 'listprice',
|
|
'fieldlabel' => 'LBL_PB_LIST_PRICE',
|
|
'typeofdata' => 'N',
|
|
'uitype' => 71,
|
|
'wstype' => 'double',
|
|
),
|
|
);
|
|
|
|
$seq = 0;
|
|
foreach ($infos as &$info) {
|
|
$info['tabid'] = $tabid;
|
|
$info['module'] = $module;
|
|
$info['fieldname'] = $info['columnname'];
|
|
if (!$info['label']) $info['label'] = getTranslatedString($info['fieldlabel'], 'PriceBooks');
|
|
if (!$info['tablename']) $info['tablename'] = $table_prefix.'_pricebookproductrel';
|
|
$info['block'] = $blockinfo['blockid'];
|
|
$info['sequence'] = ++$seq;
|
|
}
|
|
|
|
return $infos;
|
|
}
|
|
// crmv@150533e
|
|
} |