function orderAction() { $npds = $this->getRequest()->getParam('npd', array()); if (count($npds) == 0) { throw new Exception($this->i18n->_("Any npd wasn't selected")); } $sampleCatalog = $this->getSampleCatalog(); $sampleCatalog->beginTransaction(); try { foreach ($npds as $npdId => $row) { $orderedSamples = 0; foreach ($row['supplier'] as $i => $supplierId) { if (!isset($row['selected'][$i])) { continue; } //TODO: Cambiar esto al javascript $supplier = $row['supplier'][$i]; $quantity = $row['quantity'][$i]; $color = $row['color'][$i]; $remarks = $row['remarks'][$i]; $deadline = $row['deadline'][$i]; $cost = $row['cost'][$i]; $lastFolio = SampleQuery::create()->removeColumn()->addColumn(Sample::FOLIO)->addDescendingOrderBy(Sample::ID_SAMPLE)->fetchOne(); $sample = new Sample(); $sample->setIdNpdSheet($npdId); $sample->setIdSupplier($supplier == "" ? null : $supplier); $sample->setIdColor($color == 0 ? null : $color); $sample->setQuantity($quantity); $sample->setNotes($remarks); $sample->setDeadline($deadline); $sample->setCost($cost); $sample->setFolio($lastFolio + 1); $sample->setStatus(Sample::$Status['Ordered']); //die(print_r($sample)); $sampleCatalog->create($sample); $orderedSamples++; } if ($orderedSamples) { $npd = NpdSheetQuery::create()->findByPK($npdId); $this->getEventDispatcherService()->dispatchNPDEvent($npd, NPDEvent::NPD_ORDERED_SAMPLES); } } $sampleCatalog->commit(); } catch (Exception $e) { $sampleCatalog->rollBack(); throw $e; } $this->setFlash('ok', $this->i18n->_("Successfully ordered")); $this->getHelper('redirector')->goto('index'); }