Files
crm.e5.pl/modules/EcmProducts/DetailView.php
2025-10-08 07:49:19 +02:00

348 lines
20 KiB
PHP
Executable File

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
global $sugar_version, $sugar_config, $current_user, $app_strings, $mod_strings, $current_user, $app_list_strings, $db;
$app_list_strings['ecmproducts_parent_dom'] = array (
'Accounts' => $app_list_strings['moduleList']['Accounts'],
'Leads' => $app_list_strings['moduleList']['Leads'],
);
require_once('modules/EcmProducts/EcmProduct.php');
require_once('modules/EcmProducts/Forms.php');
require_once('include/time.php');
require_once('include/json_config.php');
$json_config = new json_config();
$focus = new EcmProduct();
if(isset($_REQUEST['record'])){
$focus->retrieve($_REQUEST['record']);
//if(isset($focus->id) && $focus->id != '')$focus->format_all_fields();
}
if(isset($focus->url5)){
$focus->url5 = '<a target="new" href="' .$focus->url5 . '">' . $focus->url5. '</a>';
}
if(isset($focus->url6)){
$focus->url6 = '<a target="new" href="' .$focus->url6 . '">' . $focus->url6. '</a>';
}
if(isset($focus->url7)){
$focus->url7 = '<a target="new" href="' .$focus->url7 . '">' . $focus->url7. '</a>';
}
if(isset($focus->url8)){
$focus->url8 = '<a target="new" href="' .$focus->url8 . '">' . $focus->url8. '</a>';
}
if(isset($focus->url9)){
$focus->url9 = '<a target="new" href="' .$focus->url9 . '">' . $focus->url9. '</a>';
}
$json = getJSONobj();
require_once('include/MVC/View/SugarView.php');
require_once('modules/EcmProducts/views/DetailView/view.detail.ecmproducts.php');
$detail = new ViewDetailEcmProducts();
$detail->ss = new Sugar_Smarty();
$detail->bean = $focus;
$detail->preDisplay();
$uunit_array = array();
$uunit='';
$result = $db->query("select id,name from ecmproductusageunits order by name asc");
while(($row=$db->fetchByAssoc($result))!=null)
{
$uunit.='<option value="'.$row['id'].'"';
if($focus->usage_unit_id==$row['id'])$uunit.=' selected';
$uunit.='>'.$row['name'].'</option>';
$uunit_array[$row['id']] = $row['name'];
}
$detail->ss->assign("USAGE_UNIT_ID",$uunit);
$detail->ss->assign("PRODUCTION_DESCRIPTION",$focus->production_description);
$tax='';
$result = $db->query("select id,name from ecmvats where deleted='0' order by name asc");
while(($row=$db->fetchByAssoc($result))!=null)
{
$tax.='<option value="'.$row['id'].'"';
if($focus->vat_id==$row['id'])$tax.=' selected';
$tax.='>'.$row['name'].'</option>';
}
$detail->ss->assign("VAT_ID",$tax);
$fbas='';
$result = $db->query("select id,name from ecmproductbasis order by name asc");
while(($row=$db->fetchByAssoc($result))!=null)
{
$fbas.='<option value="'.$row['id'].'"';
if($focus->fob_basis_id==$row['id'])$fbas.=' selected';
$fbas.='>'.$row['name'].'</option>';
}
$detail->ss->assign("FOB_BASIS_ID",$fbas);
$pack='';
$result = $db->query("select id,name from ecmproductpackingtypes order by name asc");
while(($row=$db->fetchByAssoc($result))!=null)
{
$pack.='<option value="'.$row['id'].'"';
if($focus->packing_type_id==$row['id'])$pack.=' selected';
$pack.='>'.$row['name'].'</option>';
}
$detail->ss->assign("PACKING_TYPE_ID",$pack);
//load currencies
require_once('modules/Currencies/Currency.php');
$currency = new Currency();
$currency_list = $currency->get_full_list('name');
$currency->retrieve('-99');
if(is_array($currency_list))
{
$currency_list = array_merge(Array($currency), $currency_list);
}
else
{
$currency_list = Array($currency);
}
$arr = array();
foreach($currency_list as $key=>$value)
{
$arr[$value->id] = $value->name;
}
$detail->ss->assign("EXCHANGE_RATE_NAME", $arr[$focus->exchange_rate_id]);
function show_image($img, $big)
{
if(is_file($img))
{
$obraz=@GetImageSize($img);
$obig = @GetImageSize($big);
if($obraz[0]>=180)
{
$szerokosc=180;
$wysokosc=$obraz[1]*$szerokosc/$obraz[0];
}
else
{
$szerokosc=$obraz[0];
$wysokosc=$obraz[1];
}
$height=$obig[1]+20;
$width=$obig[0]+20;
return '<a style="cursor:pointer;" onclick="window.open(\''.$big.'\',\'Image\',\'height='.$height.',width='.$width.'\');"><img src="pic.php?p='.$img.'&w='.$szerokosc.'&h='.$wysokosc.'"></a>';
}
}
$detail->ss->assign("PRODUCT_PICTURE", show_image("modules/EcmProducts/upload/images/".$focus->product_picture,"modules/EcmProducts/upload/images/big/".$focus->product_picture));
$detail->ss->assign("PACKING_FRONT_PICTURE", show_image("modules/EcmProducts/upload/images/".$focus->packing_front_picture,"modules/EcmProducts/upload/images/big/".$focus->packing_front_picture));
$detail->ss->assign("DRIVER_1", $focus->driver_1);
if($focus->driver_1)$detail->ss->assign("DRIVER_1_DOWNLOAD",'<a href="modules/EcmProducts/upload/'.$focus->driver_1.'">Download</a>');
$detail->ss->assign("DRIVER_2", $focus->driver_2);
if($focus->driver_2)$detail->ss->assign("DRIVER_2_DOWNLOAD",'<a href="modules/EcmProducts/upload/'.$focus->driver_2.'">Download</a>');
//add mz
$pl3 = $this->bean->showPositions3();
$detail->ss->assign('POSITIONS3', $pl3);
$pl4 = $this->bean->showPrices();
$detail->ss->assign('POSITIONS4', $pl4);
$ii='<table cellspacing="0" cellpadding="0" border="0" width="400">
<tr>
<td><b>'.$mod_strings['LBL_II_STOCK'].'</b></td>
<td><b>'.$mod_strings['LBL_II_QTY'].'</b></td>
<td><b>'.$mod_strings['LBL_II_PRICE'].'</b></td>
</tr>';
$w=$GLOBALS['db']->query("select ecmstocks.name as sname,ecmstocks.id as sid,sum(ecmstockstates.quantity) as q,avg(ecmstockstates.price) as p from ecmstockstates inner join ecmstocks on ecmstocks.id=ecmstockstates.stock_id where ecmstockstates.deleted='0' and ecmstockstates.product_id='".$focus->id."' group by ecmstockstates.stock_id order by ecmstocks.name asc");
while($r=$GLOBALS['db']->fetchByAssoc($w)){
if($r['q']>0)$ii.='<tr><td><a href="index.php?query=true&module=EcmStockOperations&action=&searchFormTab=basic_search&product_id_basic='.$_REQUEST['record'].'&product_name_basic='.$focus->name.'&stock_id_basic='.$r['sid'].'&stock_name_basic='.$r['sname'].'">'.$r['sname']."</a></td><td>".$r['q']."</td><td>".number_format($r['p'],2,$GLOBALS['sugar_config']['default_decimal_seperator'],$GLOBALS['sugar_config']['default_number_grouping_seperator'])."</td></tr>";
}
// get stock addresses
$result = $GLOBALS['db']->query("SELECT stock_address, is_not_full FROM ecmproducts_stock_addresses WHERE ecmproduct_id='$focus->id';");
$stock_addresses = "";
while($row=$GLOBALS['db']->fetchByAssoc($result)) {
if ($row['is_not_full'] == '1') {
$stock_addresses .= " <span style='color: red;'>".$row['stock_address']."</span>";
} else {
$stock_addresses .= " ".$row['stock_address'];
}
}
$focus->stock_addresses = $stock_addresses;
$ii.='</table>';
$detail->ss->assign("INVENTORY_INFORMATION",$ii);
$rp_app=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(p.product_quantity) as s from ecmproducts_ecmpurchaseorders as p inner join ecmpurchaseorders as e on e.id=p.ecmpurchaseorder_id where p.ecmproduct_id='".$focus->id."' and p.deleted='0' and e.status='accepted'"));
$rp_cr=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select sum(p.product_quantity) as s from ecmproducts_ecmpurchaseorders as p inner join ecmpurchaseorders as e on e.id=p.ecmpurchaseorder_id where p.ecmproduct_id='".$focus->id."' and p.deleted='0' and e.status='registered'"));
$detail->ss->assign("ORDERED",$rp_app['s']+$rp_cr['s']);
$detail->ss->assign("CARTON_DIMENSIONS_1",format_number($focus->carton_dimensions_1,2));
$detail->ss->assign("CARTON_DIMENSIONS_2",format_number($focus->carton_dimensions_2,2));
$detail->ss->assign("CARTON_DIMENSIONS_3",format_number($focus->carton_dimensions_3,2));
$detail->ss->assign("PACKING_DIMENSIONS_1",$focus->packing_dimensions_1);
$detail->ss->assign("PACKING_DIMENSIONS_2",$focus->packing_dimensions_2);
$detail->ss->assign("PACKING_DIMENSIONS_3",$focus->packing_dimensions_3);
if($focus->product_picture)$detail->ss->assign("PRODUCT_PICTURE_UPLOAD",$mod_strings['LBL_UPLOADED']);
if($focus->packing_front_picture)$detail->ss->assign("PACKING_FRONT_PICTURE_UPLOAD",$mod_strings['LBL_UPLOADED']);
if($focus->driver_1)$detail->ss->assign("DRIVER_1_UPLOAD",$mod_strings['LBL_UPLOADED']);
if($focus->driver_2)$detail->ss->assign("DRIVER_2_UPLOAD",$mod_strings['LBL_UPLOADED']);
$result = $GLOBALS['db']->query("select ean,remarks,short_description,long_description,language,price from ecmproduct_language where ecmproduct_id='".$_REQUEST['record']."'");
while($row=$GLOBALS['db']->fetchByAssoc($result))
{
$detail->ss->assign("EAN_".$row['language'],$row['ean']);
$detail->ss->assign("REMARKS_".$row['language'],$row['remarks']);
$detail->ss->assign("SHORT_DESCRIPTION_".$row['language'],$row['short_description']);
$detail->ss->assign("LONG_DESCRIPTION_".$row['language'],str_replace("&lt;","<",str_replace("&gt;",">",$row['long_description'])));
$detail->ss->assign("PRICE_".$row['language'],number_format($row['price'],2,",","."));
}
$send_xml=true;
if(!file_exists("modules/EcmProducts/upload/images/big/".$focus->product_picture))$send_xml=false;
if(!file_exists("modules/EcmProducts/upload/images/big/".$focus->packing_front_picture))$send_xml=false;
$r=$GLOBALS['db']->fetchByAssoc($GLOBALS['db']->query("select ean,remarks,short_description,long_description,language,price from ecmproduct_language where language='pl' and ecmproduct_id='".$_REQUEST['record']."'"));
if(!$r['ean'] || !$r['short_description'] || !$r['long_description'] || !$r['price'])$send_xml=false;
if($send_xml)$detail->ss->assign("SEND_XML",1);
else $detail->ss->assign("SEND_XML",0);
//add mz 2014-12-09
//QR CODE
//require_once 'phpqrcode/phpqrcode.php';
//QRcode::png($this->bean->code.', '.$this->bean->name.' ['.$this->bean->id.']', 'modules/EcmProducts/QRcodes/'.$this->bean->id.'.png', QR_ECLEVEL_L, 4,10);
$detail->ss->assign("QRCODE", 'Kody QR tymczasowo wyłączone.');
//end mz
/*
$desc='';
$desc.='<input title="Product Card" class="button" onclick="if(document.getElementById(\'div_desc\').style.display==\'none\')document.getElementById(\'div_desc\').style.display=\'block\';else document.getElementById(\'div_desc\').style.display=\'none\';" type="button" name="productcard" id="productcard" value="Create Catalogue">';
$desc.='<div id="div_desc" style="border: 1px solid #cccccc;background:#e6e6e6;padding:5px;position:absolute;display:none;">';
$desc.='Show header: <select name="show_header" id="show_header"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='Show content: <select name="show_content" id="show_content"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='To image: <select name="image" id="image"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='Title page: <select name="title" id="title"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='Show price: <select name="show_price" id="show_price"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='Extra info: <select name="extra" id="extra"><option value="1">Yes</option><option value="0" selected>No</option></select><br /><br />';
$desc.='Price: <select name="price" id="price"><option value="srp_price">SRP Price</option></select><br /><br />';
$desc.='Language: <select name="language" id="language"><option value="pl">pl</option><option value="en">en</option></select><br /><br />';
$desc.='EAN: <select name="ean" id="ean"><option value="1">1</option><option value="2">2</option></select><br /><br />';
$desc.='<input type="button" class="button" name="generate" id="generate" value="Generate" onclick="window.open(\'index.php?module=EcmProducts&action=generateProductCardsFromProduct&record='.$_REQUEST['record'].'&to_pdf=1&price=\'+document.getElementById(\'price\').value+\'&header=\'+document.getElementById(\'show_header\').value+\'&content=\'+document.getElementById(\'show_content\').value+\'&extra=\'+document.getElementById(\'extra\').value+\'&create_img=\'+document.getElementById(\'image\').value+\'&show_price=\'+document.getElementById(\'show_price\').value+\'&title=\'+document.getElementById(\'title\').value+\'&language=\'+document.getElementById(\'language\').value+\'&ean=\'+document.getElementById(\'ean\').value);"></div>';
$detail->ss->assign("CATALOGUE",$desc);
*/
//add mz - nowa karta produktu
global $mod_strings;
$desc='';
$desc.='<input title="Product Card" class="button" onclick="if(document.getElementById(\'div_desc2\').style.display==\'none\')document.getElementById(\'div_desc2\').style.display=\'block\';else document.getElementById(\'div_desc2\').style.display=\'none\';" type="button" name="productcard" id="productcard" value="'.$mod_strings['LBL_PRODUCT_CARD'].'">';
$desc.='<div id="div_desc2" style="border: 1px solid #cccccc;background:#e6e6e6;padding:5px;position:absolute;display:none;">';
$desc.='Zdjęcie: <select name="new_image" id="new_image"><option value="1">Tak</option><option value="0" selected>Nie</option></select><br /><br />';
$desc.='Pokaż cene: <select name="new_show_price" id="new_show_price"><option value="1">Tak</option><option value="0" selected>Nie</option></select><br /><br />';
$desc.='Cena: <select name="new_price" id="new_price"><option value="srp_price">SRP Price</option>';
$res = $GLOBALS['db']->query("SELECT p.name, p.id FROM ecmprices_ecmproducts AS pp
INNER JOIN ecmprices AS p
ON pp.ecmprice_id = p.id
WHERE pp.ecmproduct_id='".$focus->id."'
AND pp.price!=0");
while ($row = $GLOBALS['db']->fetchByAssoc($res)) {
$desc.='<option value="'.$row['id'].'">'.$row['name'].'</option>';
}
$desc.='</select><br /><br />';
$desc.='Język: <select name="new_language" id="new_language"><option value="pl">pl</option><option value="en">en</option></select><br /><br />';
$desc.='EAN: <select name="new_ean" id="new_ean"><option value="1">1</option><option value="2">2</option></select><br /><br />';
$desc.='<input type="button" class="button" name="generate" id="generate" value="Generuj" onclick="window.open(\'index.php?module=EcmProducts&action=generateCard&record='.$_REQUEST['record'].'&to_pdf=1&price=\'+document.getElementById(\'new_price\').value+\'&create_img=\'+document.getElementById(\'new_image\').value+\'&show_price=\'+document.getElementById(\'new_show_price\').value+\'&language=\'+document.getElementById(\'new_language\').value+\'&ean=\'+document.getElementById(\'new_ean\').value);"></div>';
$detail->ss->assign("CATALOGUE_NEW",$desc);
$desc='<div id="div_desc" style="border: 1px solid #cccccc;background:#e6e6e6;padding:5px;position:absolute;display:none;">';
$desc.='<input type="checkbox" name="show_characteristic" id="show_characteristic" value="1" checked">Show attributes<br />';
$desc.='<input type="checkbox" name="show_description" id="show_description" value="1" checked">Show description<br />';
$desc.='<input type="checkbox" name="show_specification" id="show_specification" value="1" checked">Show specification<br />';
$desc.='<input type="checkbox" name="print_version" id="print_version" value="1" checked">Print version<br />';
$desc.='Language: <select name="language" id="language"><option value="">pl</option><option value="en">en</option></select><br /><br />';
$desc.='<input type="button" class="button" name="generate" id="generate" value="Generate" onclick="window.open(\'index.php?module=EcmProducts&action=productCard&record='.$_REQUEST['record'].'&to_pdf=1&show_characteristic=\'+document.getElementById(\'show_characteristic\').checked+\'&show_specification=\'+document.getElementById(\'show_specification\').checked+\'&show_description=\'+document.getElementById(\'show_description\').checked+\'&print_version=\'+document.getElementById(\'print_version\').checked+\'&language=\'+document.getElementById(\'language\').value);"></div>';
$detail->ss->assign("DIV_DESC",$desc);
$desc='<div id="div_desc_card" style="border: 1px solid #cccccc;background:#e6e6e6;padding:5px;position:absolute;display:none;">';
$desc.='<input type="checkbox" name="show_characteristic_card" id="show_characteristic_card" value="1" checked">Show attributes<br />';
$desc.='<input type="checkbox" name="show_description_card" id="show_description_card" value="1" checked">Show description<br />';
$desc.='<input type="checkbox" name="show_specification_card" id="show_specification_card" value="1" checked">Show specification<br />';
$desc.='Language: <select name="language" id="language"><option value="">pl</option><option value="en">en</option></select><br /><br />';
$desc.='<input type="button" class="button" name="generate_card" id="generate_card" value="Generate" onclick="window.open(\'index.php?module=EcmProducts&action=productCard&record='.$_REQUEST['record'].'&to_pdf=1&show_characteristic=\'+document.getElementById(\'show_characteristic_card\').checked+\'&show_specification=\'+document.getElementById(\'show_specification_card\').checked+\'&show_description=\'+document.getElementById(\'show_description_card\').checked+\'&html=1\'+\'&language=\'+document.getElementById(\'language\').value,\'create_html\',\'location=0,status=0,scrollbars=0,width=640,height=500\');"></div>';
$detail->ss->assign("DIV_DESC_CARD",$desc);
//Added for Graduated Prices - Begin
/* require_once('modules/EcmProducts/EcmProductGraduatedPrices.php');
$epgp = new EcmProductGraduatedPrices($focus->graduated_prices);
$detail->ss->assign("PRODUCT_GRADUATED_PRICES_HTML", $epgp->getHtmlDetail());*/
//Added for Graduated Prices - End
//Added for Components
$detail->ss->assign("POSITION_LIST", $focus->getPositionList());
$file = 'modules/EcmGroupSales/EcmGroupSale.php';
if(file_exists($file)) {
$cc = array();
require_once($file);
$cc = EcmGroupSale::loadSettings();
}
$OPT = array();
$OPT['row_item_height'] = $cc['row_item_height'];
$OPT['row_item_height_selected'] = $cc['row_item_height_selected'];
$OPT['rows_on_item_list'] = $cc['rows_on_item_list'];
$OPT['position_table_height'] = $OPT['row_item_height']*$OPT['rows_on_item_list']+40+$OPT['rows_on_item_list']*4;
$OPT['quick_product_item_adding'] = $cc['quick_product_item_adding'];
global $current_user;
$tmp = $current_user->getPreference('num_grp_sep');
if(!isset($tmp) || $tmp == '' || $tmp == NULL) $tmp = $sugar_config['default_number_grouping_seperator'];
$OPT['sep_1000'] = $tmp;
$tmp = $current_user->getPreference('dec_sep');
if(!isset($tmp) || $tmp == '' || $tmp == NULL) $tmp = $sugar_config['default_decimal_seperator'];
$OPT['dec_sep'] = $tmp;
$tmp = $current_user->getPreference('default_currency_significant_digits');
if(!isset($tmp) || $tmp == '' || $tmp == NULL) $tmp = $sugar_config['default_currency_significant_digits'];
$OPT['dec_len'] = $tmp;
$OPT['default_unit'] = "1";
$OPT['default_vat'] = "19.00";
$OPT['default_category'] = "";
$OPT['default_currency'] = "-99";
$OPT['type'] = $focus->type;
$OPT['to_is_vat_free'] = $focus->to_is_vat_free;
$uunit='';
foreach($app_list_strings['ecmproducts_unit_dom'] as $key=>$value){
$uunit.='<option value="'.$key.'"';
if($focus->usage_unit_id==$key)$uunit.=' selected';
$uunit.='>'.$value.'</option>';
}
$OPT['ecmproduct_usage_units_options'] =$app_list_strings['ecmproducts_unit_dom'];
$scriptOpt = '
<script language="javascript">
var VAT = '.str_replace('&quot;','\"',$json->encode($VAT)).';
var OPT = '.str_replace('&quot;','\"',$json->encode($OPT)).';
var MOD = '.str_replace('&quot;','\"',$json->encode($mod_strings)).';
var N;
</script>';
echo $scriptOpt;
$detail->ss->assign("OPT", $OPT);
//Added for Components
global $current_user;
$ul= $focus->getProductUsingComponent();
$usage_list = '';
foreach($ul as $key => $value) {
$usage_list .= "<a target='_blank' href='index.php?module=EcmProducts&action=DetailView&record=".$value['id']."'>".$value['code']."</a><br>";
}
$detail->ss->assign("USAGE_LIST", $usage_list);
$detail->ss->assign("CREATED_BY_NAME", $focus->created_by_name);
echo $detail->display();
require_once('include/SubPanel/SubPanelTiles.php');
$subpanel = new SubPanelTiles($focus, "EcmProducts");
echo $subpanel->display();
?>