/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Formapagamento::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } // grid filtering conditions $query->andFilterWhere(['idTipoPagamento' => $this->idTipoPagamento]); $query->andFilterWhere(['like', 'titulo', $this->titulo])->andFilterWhere(['like', 'descricao', $this->descricao]); return $dataProvider; }
/** * Updates an existing Pedido model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $modelPedido = $this->findModel($id); $mensagem = ""; //Informa ao usuário mensagens de erro na view $situacaopedido = ArrayHelper::map(Situacaopedido::find()->all(), 'idSituacaoPedido', 'titulo'); $produtosVenda = ArrayHelper::map(Produto::find()->where(['isInsumo' => 0])->all(), 'idProduto', 'nome'); $itensPedido = Itempedido::find()->where(['idPedido' => $id])->all(); $formasPagamento = ArrayHelper::map(Formapagamento::find()->all(), 'idTipoPagamento', 'titulo'); $antigaSituacao = $modelPedido->idSituacaoAtual; $historicoSituacao = Historicosituacao::findOne([$modelPedido->idPedido, $modelPedido->idSituacaoAtual, Yii::$app->getUser()->id]); $historicoSituacao = Historicosituacao::find()->where(['idPedido' => $modelPedido->idPedido, 'user_id' => Yii::$app->getUser()->id])->orderBy('dataHora')->one(); //Recebe todas as mesas registradas $mesa = ArrayHelper::map(Mesa::find()->all(), 'idMesa', 'numeroDaMesa'); if ($modelPedido->load(Yii::$app->request->post()) && count($itensPedido) > 0) { //Carrega demais modelos //Inicia a transação: $transaction = \Yii::$app->db->beginTransaction(); try { //Tenta salvar um registro de Pedido: if ($modelPedido->save()) { //Carrega os dados dos itens do Pedido: $itemPedidoPost = Yii::$app->request->post()['Itempedido']; $itensInseridos = true; for ($i = 0; $i < count($itensPedido); $i++) { $itemPedido = Itempedido::findOne(['idPedido' => $id, 'idProduto' => $itensPedido[$i]->idProduto]); if ($itemPedido != null || $modelPedido->idSituacaoAtual == Pedido::CANCELADO) { $itemPedido->removerItemPedido(); } } //AQUI for ($i = 0; $i < count($itemPedidoPost['idProduto']); $i++) { $itemPedido = new Itempedido(); $itemPedido->idProduto = $itemPedidoPost['idProduto'][$i]; $itemPedido->quantidade = $itemPedidoPost['quantidade'][$i]; $produtoVenda = Produto::find()->where(['idProduto' => $itemPedido->idProduto])->one(); $itemPedido->total = floatval(number_format($produtoVenda->valorVenda * $itemPedido->quantidade, 2)); $itemPedido->idPedido = $modelPedido->idPedido; //Tenta salvar os itens do Pedido: if ($modelPedido->idSituacaoAtual != Pedido::CANCELADO) { //Verifica a quantidade em estoque de insumos $verificaEstoque = $itemPedido->verificaQtdEstProdutoPedido($itemPedido->idProduto, $itemPedido->quantidade); if (count($verificaEstoque) <= 0) { if ($itemPedido->save()) { Insumo::atualizaQtdNoEstoqueInsert($itemPedido->idProduto, $itemPedido->quantidade); } else { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; break; //encerra o laço for } } else { $insumosFaltando = ""; foreach ($verificaEstoque as $i => $insumo) { $insumosFaltando .= $insumo->nome; if ($i < count($verificaEstoque) - 1) { $insumosFaltando .= ", "; } } $mensagem = "<b>Pedido não foi alterado com sucesso! </b>Quantidade dos insumos(" . $insumosFaltando . ")\n ficarão abaixo da quantidade mínima de insumos em estoque."; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; break; //encerra o laço for } } } if ($antigaSituacao != $modelPedido->idSituacaoAtual || $historicoSituacao->user_id != Yii::$app->getUser()->id) { $modelPedido->cadastrarNovaHistoricoSituacaoPedido($modelPedido->idPedido, $modelPedido->idSituacaoAtual, Yii::$app->getUser()->id); } if ($modelPedido->idSituacaoAtual == Pedido::CONCLUIDO) { $caixa = new Caixa(); $caixa = $caixa->getCaixaAberto(); if ($caixa != null) { $caixa = Caixa::findOne($caixa->idcaixa); $caixa->valoremcaixa += floatval($modelPedido->totalPedido); $caixa->valorapurado += floatval($modelPedido->totalPedido); $caixa->valorlucro += number_format($caixa->calculaValorLucroPedido($modelPedido->idPedido), 2); if (!$caixa->save()) { $mensagem = "Não foi possível salvar os dados do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } } else { $mensagem = "Não foi possível concluir o Pedido, pois Caixa não está aberto"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; } } //Testa se todos os itens foram inseridos (ou tudo ou nada): if ($itensInseridos) { $transaction->commit(); return $this->redirect(['view', 'id' => $modelPedido->idPedido]); } } else { $mensagem = "Não foi possível salvar os dados do Pedido"; } } catch (\Exception $exception) { $transaction->rollBack(); $mensagem = "Ocorreu uma falha inesperada ao tentar salvar o Pedido"; } } return $this->render('update', ['modelPedido' => $modelPedido, 'situacaopedido' => $situacaopedido, 'produtosVenda' => $produtosVenda, 'itemPedido' => $itensPedido, 'formasPagamento' => $formasPagamento, 'mensagem' => $mensagem, 'mesa' => $mesa]); }
/** * @return \yii\db\ActiveQuery */ public function getFormapagamentoIdTipoPagamento() { return $this->hasOne(Formapagamento::className(), ['idTipoPagamento' => 'formapagamento_idTipoPagamento']); }
/** * Finds the Formapagamento model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Formapagamento the loaded modelFormapagamento * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($modelFormapagamento = Formapagamento::findOne($id)) !== null) { return $modelFormapagamento; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function searchPagamentosContasAReceberPorPeriodo($dataInicio, $dataFinal) { $query = []; $tiposPagamentos = []; $auxTiposPagamentos = []; $auxCountTiposPagamentos = []; $formasPagamentos = Formapagamento::find()->all(); $countTiposPagamentos = $this->searchCountPagamentosContasAReceberPorPeriodo($dataInicio, $dataFinal); foreach ($formasPagamentos as $key => $fp) { $auxQuery = \Yii::$app->db->createCommand("\n SELECT *, COUNT('idTipoPagamento') FROM (pagamento p JOIN contasareceber ON p.idConta = contasareceber.idconta) \n JOIN conta on conta.idconta = contasareceber.idconta WHERE contasareceber.dataHora BETWEEN '" . $dataInicio . "'\n and '" . $dataFinal . "' and formapagamento_idTipoPagamento =" . $fp->idTipoPagamento . " GROUP BY (DATE_FORMAT(contasareceber.dataHora,'%m-%d-%Y')) ORDER BY 'idTipoPagamento, contasareceber.dataHora ASC'\n \n ")->queryAll(); if (count($auxQuery) > 0) { foreach ($auxQuery as $aq) { array_push($auxCountTiposPagamentos, $aq["COUNT('idTipoPagamento')"]); } $auxTiposPagamentos = ['name' => $fp->titulo, 'data' => [intval($countTiposPagamentos[$key])]]; $auxCountTiposPagamentos = []; array_push($tiposPagamentos, $auxTiposPagamentos); } } return $tiposPagamentos; }