vtenext/modules/SDK/examples/VTE-SDK-1.php
2021-04-28 20:10:26 +02:00

232 lines
7.5 KiB
PHP

<?php
/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
die('Remove die!');
include_once('../../../config.inc.php');
chdir($root_directory);
require_once('include/utils/utils.php');
global $adb, $table_prefix;
VteSession::start();
// Turn on debugging level
include_once('vtlib/Vtecrm/Menu.php');
include_once('vtlib/Vtecrm/Module.php');
$vtlib_Utils_Log = true;
// Create module instance and save it first
$module = new Vtecrm_Module();
$module->name = 'InstalledBase';
$module->save();
// Initialize all the tables required
$module->initTables();
/**
* Creates the following table:
* vte_installedbase (installedbaseid INTEGER)
* vte_installedbasecf(installedbaseid INTEGER PRIMARY KEY)
*/
// Add the module to the Menu (entry point from UI)
$menu = Vtecrm_Menu::getInstance('Inventory');
$menu->addModule($module);
// Add the basic module block
$block1 = new Vtecrm_Block();
$block1->label = 'LBL_INSTALLEDBASE_INFORMATION';
$module->addBlock($block1);
// Add custom block (required to support Custom Fields)
$block2 = new Vtecrm_Block();
$block2->label = 'LBL_CUSTOM_INFORMATION';
$module->addBlock($block2);
// Add description block (required to support Description)
$block3 = new Vtecrm_Block();
$block3->label = 'LBL_DESCRIPTION_INFORMATION';
$module->addBlock($block3);
/** Create required fields and add to the block */
$field1 = new Vtecrm_Field();
$field1->name = 'installedbase_name';
$field1->table = $module->basetable;
$field1->label= 'InstalledBase Name';
$field1->columntype = 'C(255)';
$field1->uitype = 1;
$field1->typeofdata = 'V~M';
$field1->quickcreate = 0;
$block1->addField($field1);
// Set at-least one field to identifier of module record
$module->setEntityIdentifier($field1);
$field2 = new Vtecrm_Field();
$field2->name = 'description';
$field2->table = $table_prefix.'_crmentity';
$field2->label = 'Description';
$field2->uitype = 19;
$field2->typeofdata = 'V~O';// Varchar~Optional
$block3->addField($field2); /** table and column are automatically set */
//$field2->setPicklistValues( Array ('Employee', 'Trainee') );
$field3 = new Vtecrm_Field();
$field3->name = 'installation_period';
$field3->table = $module->basetable;
$field3->label = 'Installation Period';
$field3->uitype = 5;
$field3->columntype = 'D';
$field3->typeofdata = 'D~O'; // Date~Optional
$block1->addField($field3);
$field4 = new Vtecrm_Field();
$field4->name = 'edit_period';
$field4->table = $module->basetable;
$field4->label = 'Edit Period';
$field4->uitype = 5;
$field4->columntype = 'D';
$field4->typeofdata = 'D~O'; // Date~Optional
$block1->addField($field4);
/** table, column, label, set to default values */
$field5 = new Vtecrm_Field();
$field5->name = 'active';
$field5->label= 'Active';
$field5->table = $module->basetable;
$field5->column = 'active';
$field5->columntype = 'I(1)';
$field5->uitype = 56;
$field5->typeofdata = 'C~O';
$field5->quickcreate = 0;
$block1->addField($field5);
//$field4->setRelatedModules(Array('Contacts'));
$field6 = new Vtecrm_Field();
$field6->name = 'installation_state';//vte_installation_state
$field6->table = $module->basetable;
$field6->label = 'Installation State';
$field6->uitype = 15;
$field6->columntype = 'C(255)';
$field6->typeofdata = 'V~O';// Varchar~Optional
$block1->addField($field6); /** table and column are automatically set */
$field6->setPicklistValues( Array ('-- Nessuno -- ', 'In corso di evasione', 'Evasa', 'Fatturata') );
$field7 = new Vtecrm_Field();
$field7->name = 'account_id';
$field7->table = $module->basetable;
$field7->label= 'Account Id';
$field7->column = 'accountid';
$field7->uitype = 10;
$field7->columntype = 'I(19)';
$field7->typeofdata = 'I~O';
$field7->displaytype= 1;
$field7->helpinfo = 'Relate to an existing account';
$field7->quickcreate = 0;
$block1->addField($field7);
$field7->setRelatedModules(Array('Accounts'));
$field11 = new Vtecrm_Field();
$field11->name = 'responsabile';
$field11->table = $module->basetable;
$field11->label= 'Responsabile';
$field11->column = 'responsabile';
$field11->uitype = 77;
$field11->columntype = 'I(19)';
$field11->typeofdata = 'V~O';
$block1->addField($field11);
/** Common fields that should be in every module, linked to VTECRM core table */
$field8 = new Vtecrm_Field();
$field8->name = 'assigned_user_id';
$field8->label = 'Assigned To';
$field8->table = $table_prefix.'_crmentity';
$field8->column = 'smownerid';
$field8->uitype = 53;
$field8->typeofdata = 'V~M';
$field8->quickcreate = 0;
$block1->addField($field8);
$field9 = new Vtecrm_Field();
$field9->name = 'createdtime';
$field9->label= 'Created Time';
$field9->table = $table_prefix.'_crmentity';
$field9->column = 'createdtime';
$field9->uitype = 70;
$field9->typeofdata = 'T~O';
$field9->displaytype= 2;
$block1->addField($field9);
$field10 = new Vtecrm_Field();
$field10->name = 'modifiedtime';
$field10->label= 'Modified Time';
$field10->table = $table_prefix.'_crmentity';
$field10->column = 'modifiedtime';
$field10->uitype = 70;
$field10->typeofdata = 'T~O';
$field10->displaytype= 2;
$block1->addField($field10);
/** END */
// Create default custom filter (mandatory)
$filter1 = new Vtecrm_Filter();
$filter1->name = 'All';
$filter1->isdefault = true;
$module->addFilter($filter1);
// Add fields to the filter created
$filter1->addField($field1,1)->addField($field3,2)->addField($field5,3)->addField($field6,4)->addField($field7,5)->addField($field8,6);
// Create one more filter
$filter2 = new Vtecrm_Filter();
$filter2->name = 'Active Installation';
$module->addFilter($filter2);
// Add fields to the filter
$filter2->addField($field1);
$filter2->addField($field1,1)->addField($field3,2)->addField($field5,3)->addField($field6,4)->addField($field7,5)->addField($field8,6);
// Add rule to the filter field
$filter2->addRule($field5, 'EQUALS', '1');
/** Associate other modules to this module */
//$module->setRelatedList(Vtecrm_Module::getInstance('SalesOrder'), 'SalesOrder', Array('ADD'));
//$module->setRelatedList(Vtecrm_Module::getInstance('Potentials'), 'Potentials', Array('ADD'));
//get_dependents_list -> 1 -> N
//get_related_list -> N -> N
//relazione n a n
$module->setRelatedList(Vtecrm_Module::getInstance('Products'), 'Products', Array('SELECT'), 'get_related_list');
$module->setRelatedList(Vtecrm_Module::getInstance('ServiceContracts'), 'Service Contracts', Array('ADD','SELECT'));
$module->setRelatedList(Vtecrm_Module::getInstance('PurchaseOrder'), 'PurchaseOrder', Array('ADD'));
$products = Vtecrm_Module::getInstance('Products');
$products->setRelatedList(Vtecrm_Module::getInstance('InstalledBase'), 'Installed Base', Array('SELECT'));
$servicec = Vtecrm_Module::getInstance('ServiceContracts');
$servicec->setRelatedList(Vtecrm_Module::getInstance('InstalledBase'), 'Installed Base', Array('SELECT'));
$porder = Vtecrm_Module::getInstance('PurchaseOrder');
$porder->setRelatedList(Vtecrm_Module::getInstance('InstalledBase'), 'Installed Base', Array('SELECT'));
//relazione 1 a n
$accounts = Vtecrm_Module::getInstance('Accounts');
$accounts->setRelatedList(Vtecrm_Module::getInstance('InstalledBase'), 'Installed Base', Array('SELECT'), 'get_dependents_list');
/** Set sharing access of this module */
$module->setDefaultSharing('Private');
/** Enable and Disable available tools */
$module->enableTools(Array('Import', 'Export'));
$module->disableTools('Merge');
// per aggiungere il supporto ai webservices
$module->initWebservice();
Vtecrm_Module::fireEvent($module->name, Vtecrm_Module::EVENT_MODULE_POSTINSTALL);
?>