/** * @Given existen los siguientes códigos de barras: */ public function createBarcodes(TableNode $tableNode) { $em = $this->getEntityManager(); foreach ($tableNode->getHash() as $barcodeHash) { $barcode = new Barcode(); $barcode->setType($barcodeHash['tipo']); $barcode->setCode($barcodeHash['codigo']); $barcode->setComment($barcodeHash['comentario']); //We obtain the corresponding identifier to the trademark name $em = $this->getEntityManager(); $trademark = $em->getRepository('AppBundle:Trademark')->findOneBy(array('name' => $barcodeHash['marca'])); $barcode->setTrademark($trademark); $em->persist($barcode); } $em->flush(); }
/** * @param ErrorElement $errorElement * @param Barcode $object */ public function validate(ErrorElement $errorElement, $object) { if (!$object->getWithCounter()) { if ($object->getBasecode() < 0 || $object->getBasecode() > 99999) { $errorElement->with('basecode')->addViolation('Recuerde que son cinco dígitos desde 00000 a 99999')->end(); } else { /** @var QueryBuilder $query */ $query = $this->getModelManager()->createQuery($this->getClass(), 'o'); $barcode = $query->where('o.code = :code')->setParameter('code', $object->generateCode())->getQuery()->execute(); if (!empty($barcode)) { $errorElement->with('basecode')->addViolation('El código está en uso')->end(); } } } else { do { $object->getTrademark()->incCounter(); $query = $this->getModelManager()->createQuery($this->getClass(), 'o'); $barcode = $query->where('o.code = :code')->setParameter('code', $object->generateCode())->getQuery()->execute(); } while (!empty($barcode)); } }
/** * Remove products * * @param \AppBundle\Entity\Product $products */ public function removeProduct(\AppBundle\Entity\Product $products) { $this->barcodes->removeElement($products); }