[ 'next' => 'ean', 'chars_type' => 'code128', ], 'ean' => [ 'next' => 'code', 'chars_type' => 'ean13', ], ]; /** * @var CurrencyContext */ private $currencyContext; public function getLabel() { return $this->label; } public function getDimensions() { return [$this->column, $this->rows]; } public function getTemplate() { return $this->template; } public function getData($IDs, $vars) { $products = []; foreach ($IDs as $item) { if (empty($item['idv'])) { $item['idv'] = null; } if (!isset($item['pcs']) || $item['pcs'] == '') { $item['pcs'] = $vars['pcs']; } $SQL = $this->fetchData($item)->execute()->fetchAll(); foreach ($SQL as $product) { $product['pieces'] = $item['pcs']; $product['discount'] = toDecimal($product['discount']); $product['productPrice'] = new \KupShop\KupShopBundle\Util\Price\ProductPrice(toDecimal($product['price']), $this->currencyContext->getDefault(), $product['vat'], $product['discount']); if (!empty($product[$vars['barcode_by']])) { $product['barcode'] = [ 'type' => $vars['barcode_by'], 'chars' => $vars['barcode_by'] === 'ean' ? formatEAN($product[$vars['barcode_by']]) : $product[$vars['barcode_by']], 'chars_type' => $this->types[$vars['barcode_by']]['chars_type'], ]; } elseif (!empty($product[$this->types[$vars['barcode_by']]['next']])) { $product['barcode'] = [ 'type' => $this->types[$vars['barcode_by']]['next'], 'chars' => $this->types[$vars['barcode_by']]['next'] === 'ean' ? formatEAN($product[$this->types[$vars['barcode_by']]['next']]) : $product[$this->types[$vars['barcode_by']]['next']], 'chars_type' => $this->types[$this->types[$vars['barcode_by']]['next']]['chars_type'], ]; } else { $product['barcode'] = []; } if (!empty($product['producer_photo'])) { $product['producer_photo'] = @getImage($product['producer'], $product['producer_photo'], '../producer/', 7); } $products[] = $product; } } return $products; } public function fetchData($item) { $fields = 'p.id as id_product, pv.id as id_variation, pv.title variation_title, p.title product_title, COALESCE(pv.price, p.price) as price, v.vat, COALESCE(pv.ean, p.ean) as ean, p.discount'; if (findModule(\Modules::PRODUCTS_VARIATIONS, \Modules::SUB_CODE)) { $fields .= ', COALESCE(pv.code, p.code) as code'; } else { $fields .= ', p.code as code'; } $qb = sqlQueryBuilder()->select($fields) ->from('products', 'p') ->leftJoin('p', 'products_variations', 'pv', 'pv.id_product=p.id') ->leftJoin('p', 'vats', 'v', 'v.id=p.vat') ->where(\Query\Operator::equals(['p.id' => $item['idp']])) ->andWhere(\Query\Operator::equalsNullable(['pv.id' => $item['idv']])); return $qb; } /** * @required */ public function setCurrencyContext(CurrencyContext $currencyContext): void { $this->currencyContext = $currencyContext; } }