Example #1
0
 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');
 }