120 lines
4.3 KiB
PHP
Executable File
120 lines
4.3 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Products, Quotations & Invoices modules.
|
|
* Extensions to SugarCRM
|
|
* @package Advanced OpenSales for SugarCRM
|
|
* @subpackage Products
|
|
* @copyright SalesAgility Ltd http://www.salesagility.com
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
* along with this program; if not, see http://www.gnu.org/licenses
|
|
* or write to the Free Software Foundation,Inc., 51 Franklin Street,
|
|
* Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* @author SalesAgility Ltd <support@salesagility.com>
|
|
*/
|
|
|
|
/**
|
|
* THIS CLASS IS FOR DEVELOPERS TO MAKE CUSTOMIZATIONS IN
|
|
*/
|
|
require_once('modules/AOS_Products/AOS_Products_sugar.php');
|
|
#[\AllowDynamicProperties]
|
|
class AOS_Products extends AOS_Products_sugar
|
|
{
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
|
|
|
|
public function getGUID()
|
|
{
|
|
if (function_exists('com_create_guid')) {
|
|
return com_create_guid();
|
|
}
|
|
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
|
|
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
|
|
$hyphen = chr(45);// "-"
|
|
$uuid = substr($charid, 0, 8).$hyphen
|
|
.substr($charid, 8, 4).$hyphen
|
|
.substr($charid, 12, 4).$hyphen
|
|
.substr($charid, 16, 4).$hyphen
|
|
.substr($charid, 20, 12);
|
|
return $uuid;
|
|
}
|
|
|
|
public function save($check_notify = false)
|
|
{
|
|
global $sugar_config, $mod_strings;
|
|
|
|
if (isset($_POST['deleteAttachment']) && $_POST['deleteAttachment'] == '1') {
|
|
$this->product_image = '';
|
|
}
|
|
|
|
require_once('include/upload_file.php');
|
|
$GLOBALS['log']->debug('UPLOADING PRODUCT IMAGE');
|
|
|
|
if(!empty($_FILES['uploadimage']['name'])){
|
|
$imageFileName = $_FILES['uploadimage']['name'] ?? '';
|
|
if (!has_valid_image_extension('AOS_Products Uploaded image file: ' . $imageFileName , $imageFileName)) {
|
|
LoggerManager::getLogger()->fatal("AOS_Products save - Invalid image file ext : '$imageFileName'.");
|
|
throw new RuntimeException('Invalid request');
|
|
}
|
|
}
|
|
|
|
if (!empty($_FILES['uploadimage']['tmp_name']) && verify_uploaded_image($_FILES['uploadimage']['tmp_name'])) {
|
|
if ($_FILES['uploadimage']['size'] > $sugar_config['upload_maxsize']) {
|
|
die($mod_strings['LBL_IMAGE_UPLOAD_FAIL'] . $sugar_config['upload_maxsize']);
|
|
}
|
|
$prefix_image = $this->getGUID() . '_';
|
|
$this->product_image = $sugar_config['site_url'] . '/' . $sugar_config['upload_dir'] . $prefix_image . $_FILES['uploadimage']['name'];
|
|
move_uploaded_file($_FILES['uploadimage']['tmp_name'], $sugar_config['upload_dir'] . $prefix_image . $_FILES['uploadimage']['name']);
|
|
}
|
|
|
|
require_once('modules/AOS_Products_Quotes/AOS_Utils.php');
|
|
|
|
perform_aos_save($this);
|
|
|
|
return parent::save($check_notify);
|
|
}
|
|
|
|
public function getCustomersPurchasedProductsQuery()
|
|
{
|
|
$query = "
|
|
SELECT * FROM (
|
|
SELECT
|
|
aos_quotes.*,
|
|
accounts.id AS account_id,
|
|
accounts.name AS billing_account,
|
|
|
|
opportunity_id AS opportunity,
|
|
billing_contact_id AS billing_contact,
|
|
'' AS created_by_name,
|
|
'' AS modified_by_name,
|
|
'' AS assigned_user_name
|
|
FROM
|
|
aos_products
|
|
|
|
JOIN aos_products_quotes ON aos_products_quotes.product_id = aos_products.id AND aos_products.id = '{$this->id}' AND aos_products_quotes.deleted = 0 AND aos_products.deleted = 0
|
|
JOIN aos_quotes ON aos_quotes.id = aos_products_quotes.parent_id AND aos_quotes.stage = 'Closed Accepted' AND aos_quotes.deleted = 0
|
|
JOIN accounts ON accounts.id = aos_quotes.billing_account_id -- AND accounts.deleted = 0
|
|
|
|
GROUP BY aos_quotes.id
|
|
) AS aos_quotes
|
|
|
|
";
|
|
return $query;
|
|
}
|
|
}
|