'PriceGuide', 'DatasetName' => 'valuations', 'Entity' => '\PriceGuide\Entity\PriceGuide', 'References' => array( 'valuation' => '\Valuation\Entity\Valuation', 'stock' => '\Stock\Entity\Stock', 'createdBy' => '\User\Entity\Profile', 'company' => '\Company\Entity\Company' ), 'Dependants' => array() ); /** * @var array */ protected $metaGrid = array( 'Type' => 'Grid', 'Export' => true, 'Builder' => '\PriceGuide\Report\PriceGuideGrid', 'Writer' => '\Utility\Export\ExcelReport', 'Output' => 'Download', 'Contract' => 'Recurring', 'Options' => array( 'Boolean' => array( 'ExportToExcel' => false ) ), 'RequiredInput' => array(), 'OptionalInput' => array( 'Grid' => array( 'NumberOfRecords' => 'Integer', 'Page' => 'Integer', 'Filter' => 'Array', 'OrderBy' => 'Array' ) ), 'Base' => 'priceGuide', 'NumberOfRecords' => 20, 'Query' => 'SELECT [SELECTION] FROM \PriceGuide\Entity\PriceGuide priceGuide JOIN priceGuide.members members JOIN members.member mmbr JOIN mmbr.company memberCompany JOIN priceGuide.company company JOIN company.region region JOIN priceGuide.stock stock JOIN stock.vehicleYear vehicleYear JOIN stock.type type JOIN type.model model JOIN model.make make LEFT JOIN company.group companyGroup LEFT JOIN company.groupDivision groupDivision LEFT JOIN stock.exteriorColour exteriorColour LEFT JOIN priceGuide.offers offer WITH IDENTITY(offer.company) = [company] LEFT JOIN offer.company offercompany LEFT JOIN stock.valuation valuation [WHERE] [ORDER]', 'Selection' => 'priceGuide, mmbr, company, companyGroup, groupDivision, region, stock, vehicleYear, make, model, type, exteriorColour, offer, offercompany, valuation', 'Filter' => array( 'mmbr.status' => 'Active', 'statusFilter' => array( 'priceGuide.jobState' => 'IN Open4Offers,Updateable Offers', 'offer.id' => '!NULL' ), 'priceGuide.archived' => 0 ), 'OrderBy' => array('priceGuide.created' => 'DESC'), 'Fields' => array( 'id', 'created' => 'DateTime', 'updated' => 'DateTime', 'jobState', 'offers' => array(array( 'id', 'amount', 'status', 'created' => 'DateTime', 'company' => array( 'id', 'name' ) )), 'company' => array( 'name', 'region' => array( 'name' ) ), 'stock' => array( 'created' => 'DateTime', 'type' => array( 'name', 'model' => array( 'name', 'make' => array( 'name' ) ), ), 'vehicleYear' => array( 'name' ), 'exteriorColour' => array( 'name' ), 'km', 'tradePrice', 'retailPrice', 'listPrice', 'numberOfOffers', 'highestOffer', 'valuation' => array( 'requiredPrice' ) ) ) ); /** * @var array */ protected $metaView = array( 'Type' => 'Update', 'Contract' => 'Recurring', 'Expand' => array( 'company', 'contact', 'group', 'groupDivision', 'stock', 'damages', 'accessories', 'category', 'make', 'model', 'type', 'mainImage', 'frontImage', 'rightImage', 'leftImage', 'backImage', 'interiorImage', 'engineImage', 'natisImage', 'contact', 'fuelType', 'transmissionType', 'condition', 'fullServiceHistory', 'exteriorColour', 'interiorColour', 'upholstery', 'papers', 'natis', 'spareKeys', 'vehicleYear', 'valuation_' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaCreate = array( 'Type' => 'Create', 'Contract' => 'Recurring', 'ExecuteAfter' => array( 'sendToMembers' ), 'RequiredInput' => array( 'PriceGuide' => array( 'company' => 'Id', 'stock' => 'Id' ) ), 'OptionalInput' => array() ); /** * @var array */ protected $metaUpdate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'RequiredInput' => array( 'PriceGuide' => array( 'company' => 'Id', 'stock' => 'Id' ) ), 'OptionalInput' => array() ); /** * @var array */ protected $metaSendToSales = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ConditionalContract' => array( 'noSendToSalesWithoutValuation' ), 'ExecuteAfter' => array( 'setPreviousStateToComplete' ), 'RelatedEntityFromInput' => array( 'Valuation' => array( 'Workflow' => '\Valuation\Workflow', 'Service' => '\Valuation\Service\Valuation', 'Field' => 'valuation' ) ), 'RequiredInput' => array( 'Valuation' => array( 'amountOffered' => 'Decimal', 'salesProfile' => 'Id' ) ), 'OptionalInput' => array( 'Valuation' => array( 'salesComments' => 'String500' ) ) ); /** * Add some dynamic filtering to our grids. */ public function __construct() { $authData = \Utility\Registry::getAuthData(); switch (\Utility\Registry::getUserType()) { case 'B4C User': $groupFilter = \Utility\Registry::getSudo('Group', false); $groupFilter && $this->metaGrid['Filter']['IDENTITY(memberCompany.group)'] = $groupFilter; $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && $this->metaGrid['Filter']['IDENTITY(memberCompany.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($groupFilter && $divisionFilter && $companyFilter) { $this->metaGrid['Filter']['memberCompany.id'] = $companyFilter; $this->metaGrid['Query'] = str_replace( '[company]', $companyFilter, $this->metaGrid['Query'] ); } else { $this->metaGrid['Query'] = str_replace( '[company]', '0', $this->metaGrid['Query'] ); } break; case 'Group User': $this->metaGrid['Filter']['IDENTITY(memberCompany.group)'] = $authData['company']['group']['id']; $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && $this->metaGrid['Filter']['IDENTITY(memberCompany.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($divisionFilter && $companyFilter) { $this->metaGrid['Filter']['memberCompany.id'] = $companyFilter; $this->metaGrid['Query'] = str_replace( '[company]', $companyFilter, $this->metaGrid['Query'] ); } else { $this->metaGrid['Query'] = str_replace( '[company]', '0', $this->metaGrid['Query'] ); } break; case 'Dealer Principle': $this->metaGrid['Filter']['IDENTITY(memberCompany.groupDivision)'] = $authData['company']['groupDivision']['id']; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->metaGrid['Filter']['memberCompany.id'] = $companyFilter; $this->metaGrid['Query'] = str_replace( '[company]', $companyFilter, $this->metaGrid['Query'] ); } else { $this->metaGrid['Query'] = str_replace( '[company]', '0', $this->metaGrid['Query'] ); } break; default: $this->metaGrid['Filter']['memberCompany.id'] = $authData['company']['id']; $this->metaGrid['Query'] = str_replace( '[company]', $authData['company']['id'], $this->metaGrid['Query'] ); break; } } }