public function save(DetailsReceiveInventory $detailsReceiveInventory) { $data = array('receive_inventory' => $detailsReceiveInventory->getReceiveInventory(), 'cost' => $detailsReceiveInventory->getCost(), 'iva' => $detailsReceiveInventory->getIva(), 'product' => $detailsReceiveInventory->getProduct(), 'manifest_file' => $detailsReceiveInventory->getManifestFile(), 'register_date' => date("Y-m-d H:i:s", time()), 'update_date' => date("Y-m-d H:i:s", time())); $id = (int) $detailsReceiveInventory->getId(); if ($id == 0) { $this->tableGateway->insert($data); $id = $this->tableGateway->getLastInsertValue(); if ($id) { return $id; } else { return false; } } else { if ($this->get($id)) { $this->tableGateway->update($data, array('id' => $id)); return $id; } else { return false; } } }
public function detailsAction() { $container = new Container('receive_inventory'); $viewModel = new ViewModel(); if (!$container->id) { return $this->redirect()->toRoute('process/receive_inventory'); } $receiveInventoryId = $container->id; $user = $container->user; $receiveInventory = $this->getReceiveInventoryTable()->get($receiveInventoryId, $user); $form = $this->getServiceLocator()->get('Process\\Form\\DetailsReceiveInventoryForm'); $detailsReceiveInventory = new DetailsReceiveInventory(); $form->setInputFilter($detailsReceiveInventory->getInputFilter()); $request = $this->getRequest(); $data = $request->getPost()->toArray(); $form->setData($data); if ($request->isPost()) { $serials = array(); $qty = (int) $data['qty']; $serialValuesElementErrors = true; for ($i = 0; $i < $qty; $i++) { $serialValue = $data['serials'][$i][0]; if (isset($serialValue) && !empty($serialValue)) { $serials[$i] = array_filter($data['serials'][$i]); } else { $serialValuesElementErrors = false; break; } } if ($form->isValid() && $serialValuesElementErrors) { $fileService = $this->getServiceLocator()->get('Admin\\Service\\FileService'); $fileService->setDestination($this->config['component']['details_receive_inventory']['file_path']); $fileService->setSize($this->config['file_characteristics']['file']['size']); $fileService->setExtension($this->config['file_characteristics']['file']['extension']); $manifestFile = $fileService->copy($this->params()->fromFiles('manifest_file')); $data['cost'] = str_replace('.', '', $data['cost']); $data['receive_inventory'] = $container->id; $data['serials'] = json_encode($serials); $data['manifest_file'] = $manifestFile ? $manifestFile : ""; $detailsReceiveInventory->exchangeArray($data); $detailsReceiveInventoryId = $this->getDetailsReceiveInventoryTable()->save($detailsReceiveInventory); $productsReceiveInventory = new ProductsReceiveInventory(); $productsReceiveInventory->setDetailsReceiveInventory($detailsReceiveInventoryId); $productsReceiveInventory->setSerial($serials); $this->getProductsReceiveInventoryTable()->save($productsReceiveInventory); return $this->redirect()->toRoute('process/receive_inventory/add/details'); } else { if (!$serialValuesElementErrors) { $serialValuesMessageError = "debe ingresar el serial principal para cada producto"; $viewModel->setVariable('serialValuesMessageError', $serialValuesMessageError); } } } $detailsReceiveInventory = $this->getDetailsReceiveInventoryTable()->get($container->id); $detailReceiveInventoryList = array(); foreach ($detailsReceiveInventory as $detailReceiveInventory) { $productsReceiveInventory = $this->getProductsReceiveInventoryTable()->getSerialList($detailReceiveInventory->getId()); $serials = array(); foreach ($productsReceiveInventory as $productReceiveInventory) { $serials[] = $productReceiveInventory->getSerial(); $detailReceiveInventory->setQty($productReceiveInventory->getNumber()); } $detailReceiveInventory->setSerials($serials); $detailReceiveInventoryList[] = $detailReceiveInventory; } //dumpx($detailReceiveInventoryList); $viewModel->setVariable('form', $form); $viewModel->setVariable('receiveInventory', $receiveInventory); $viewModel->setVariable('config', $this->config); $viewModel->setVariable('detailReceiveInventoryList', $detailReceiveInventoryList); $viewModel->setTemplate("process/receive-inventory/details"); return $viewModel; }