public function saveAction() { $columns = $this->_model->info(Zend_Db_Table_Abstract::COLS); $array = array(); $this->_model->getAdapter()->beginTransaction(); $message = ''; // Declaração dos Render() do Zend para a Validação do Formulário $formRenders = array($this->_form->addElementsForm(), $this->_form->addElementsExistantStock(), $this->_form->addElementsStockControl()); // Função que valida os Campos do Formulario com multiplos Render() parent::validateMultipleForm($formRenders); // <----- try { foreach ($this->_values as $id => $value) { if (isset($value) && $value != '' && in_array($id, $columns)) { $array[$id] = addslashes($value); } } if ($this->_values['cdsupply'] != null) { $array['fgsupplycontrol'] = 1; if ($this->_values['cdsupplycentre'] != null && $this->_values['cdsupplier'] != null) { date_default_timezone_set('UTC'); $supplystockModel = new SupplystockModel(); $arraySupplyStock = array(); $arraySupplyStock['cdsupply'] = $this->_values['cdsupply']; $arraySupplyStock['cdsupplycentre'] = $this->_values['cdsupplycentre']; $arraySupplyStock['cdsupplier'] = $this->_values['cdsupplier']; $dtcheckin = date("Y-m-d") . " " . date("H:i"); $arraySupplyStock['dtcheckin'] = $dtcheckin; if ($this->_values['vlsupplyunit'] != null) { $vlunitprice = $this->_values['vlsupplyunit']; $vlsupplytoDB = str_replace(" ", "", $vlunitprice); $vlsupplytoDB = str_replace(",", ".", $vlsupplytoDB); $vlsupplytoDB = str_replace("R\$", "", $vlsupplytoDB); $arraySupplyStock['vlunitprice'] = $vlsupplytoDB; } if ($this->_values['nrsupplyquantity'] != null) { $supplyModel = new SupplyModel(); $arraySupplyStock['qtquantity'] = $this->_values['nrsupplyquantity']; $arraySupplyStock['qtsupplybalance'] = $this->_values['nrsupplyquantity']; $qtdebalance = $supplyModel->fetchRow("cdsupply = " . $this->_values['cdsupply']); $supplyModel->update(array("qtbalance" => $qtdebalance['qtbalance'] + $arraySupplyStock['qtsupplybalance']), "cdsupply = " . $this->_values['cdsupply']); } $supplystockModel->insert($arraySupplyStock); } } else { $array['fgsupplycontrol'] = 2; } $this->_model->insert($array); $message = "Cadastro realizado com sucesso."; $this->_model->getAdapter()->commit(); } catch (Exception $e) { $this->_model->getAdapter()->rollBack(); $message = ''; $message = "Erro na operação."; $message = $e->getMessage(); } $this->view->message = $message; }
public function saveAction() { parent::saveAction(); /* Instancia classe SupplyStock */ $supplystockModel = new SupplystockModel(); /* Instancia classe Supply */ $supplyModel = new SupplyModel(); /* Instancia classe SupplyFlow */ $supplyflowModel = new SupplyflowModel(); $supplies = json_decode($_GET['supply'], true); $i = 0; $supply = array(); $supplystockModel->getAdapter()->beginTransaction(); try { foreach ($supplies as $row) { $data = explode("-", $_POST['dtcheckout']); if ($row['dtexpires'] != "Indeterminado") { $expire = explode("-", $row['dtexpires']); } $valor = substr($row['vlunitprice'], 2); /* Adiciona lista de Itens na SupplyStock */ $supply[$i] = array('cdsupply' => $row['cdsupply'], 'qtquantity' => $row['qtquantity'], 'qtsupplybalance' => $row['qtquantity'], 'cdsupplycentre' => $_POST['cdsupplycentrefrom'], 'dtexpire' => $expire[2] . "-" . $expire[1] . "-" . $expire[0] . " 00:00:00", 'dtcheckin' => $data[2] . "-" . $data[1] . "-" . $data[0] . " " . $_POST['hrcheckin'] . ":00", 'cdsupplier' => $_POST['cdsupplyentrysupplier'], 'idinvoice' => $_POST['cdsupplyinvoice'], 'idbatch' => $_POST['cdsupplylot'], 'vlunitprice' => $valor); /* Insere registros na StockFlow */ $supplyflow[$i] = array('cdsupply' => $row['cdsupply'], 'qtquantity' => $row['qtquantity'], 'cdsupplycentreto' => $_POST['cdsupplycentrefrom'], 'fgsupplyioreason' => '4', 'dtcheckin' => date("Y-m-d H:i:s"), 'dtcheckout' => date("Y-m-d H:i:s"), 'cdsupplycentrefrom' => null); /* Atualiza quantidade de itens na Supply */ $dataSupplier = $supplyModel->fetchRow($supplyModel->getSupplyByCdSupply($row['cdsupply'])); $dataSupplier['qtbalance'] = $dataSupplier['qtbalance'] + $row['qtquantity']; $array['qtbalance'] = $dataSupplier['qtbalance']; $supplyModel->update($array, 'cdsupply = ' . $row['cdsupply']); $supplystockModel->insert($supply[$i]); $supplyflowModel->insert($supplyflow[$i]); $i++; } $lastId = $supplystockModel->getAdapter()->lastInsertId(); $message = "Cadastro efetuado com sucesso.<br>Número no Protocolo gerado: " . $lastId; $supplystockModel->getAdapter()->commit(); } catch (Exception $e) { $supplystockModel->getAdapter()->rollBack(); $message = "Erro na inserção dos dados."; } $this->view->message = $message; }
public function balanceSupplyStock($cdsupplycentrefrom, $cdsupplycentreto, $cdsupply, $qtquantity) { $supplystock = new SupplystockModel(); /* >>> Update centro de saída * Busca na tabela supplyStock o registro por centro e item/supply(getCdsupplystockFirstDtcheckin) por menor data de entrada. */ $supplystockDataFrom = $supplystock->fetchRow($supplystock->getCdsupplystockFirstDtcheckin($cdsupplycentrefrom, $cdsupply)); $cdsupplystock = $supplystockDataFrom->cdsupplystock; $supplystockDataFrom->qtsupplybalance = $supplystockDataFrom->qtsupplybalance - $qtquantity; $supplystock->update($supplystockDataFrom->toArray(), "cdsupplystock = " . $cdsupplystock); /* <<< */ /* >>> Update/Insert centro de entrada */ /* Busca na tabela supplyStock o registro por centro, item/supply e nota fiscal. * Condição da cláusula where(getCdsupplystockByIdinvoice): busca nota fiscal do item do centro de saída igual a nota fiscal do centro de entrada. * Se satisfeita a condição é feito update senão, é feito insert. * * Agora, pega essa gambi: */ $supplystockDataTo = $supplystock->fetchRow($supplystock->getCdsupplystockByIdinvoice($cdsupplycentreto, $cdsupply, $supplystockDataFrom->idinvoice)); if (sizeof($supplystockDataTo) > 0) { /* * *UPDATE** */ $cdsupplystock = $supplystockDataTo->cdsupplystock; $supplystockDataTo->qtsupplybalance = $supplystockDataTo->qtsupplybalance + $qtquantity; $supplystock->update($supplystockDataTo->toArray(), "cdsupplystock = " . $cdsupplystock); } else { /* * *INSERT** */ $cdsupplier = $supplystockDataFrom->cdsupplier; $vlunitprice = $supplystockDataFrom->vlunitprice; $dtexpire = $supplystockDataFrom->dtexpire; $idinvoice = $supplystockDataFrom->idinvoice; $dtcheckin = new Zend_Date(null, 'dd-MM-YYYY HH:mm:ss'); $dtcheckin = $dtcheckin->toString('YYYY-MM-dd HH:mm:ss'); $supplystockDataTo = array("cdsupplycentre" => $cdsupplycentreto, "cdsupply" => $cdsupply, "cdsupplier" => $cdsupplier, "qtquantity" => "0", "qtsupplybalance" => $qtquantity, "vlunitprice" => $vlunitprice, "dtexpire" => $dtexpire, "dtcheckin" => $dtcheckin, "idinvoice" => $idinvoice); $supplystock->insert($supplystockDataTo); } /* >>> */ }