public function searchLucro($dataInicio, $dataFinal) { //Guarda os pedidos concluídos $pedidosConcluidos = Pedido::find()->joinWith('pagamento')->joinWith('pagamento.contasareceber')->where(['between', 'dataHora', $dataInicio, $dataFinal])->where(['idSituacaoAtual' => 2])->all(); //Guarda os valores de lucro total dos pedidos concluidos diarios $valoresLucroTotal = []; //Modelo de Caixa usado para utilizar o metodo calculaValorLucroPedido($idPedido) $caixa = new Caixa(); //Guarda as datas que tiveram os pedidos concluidos de acordo com o intervalo informado $datasPedidosConcluidos = $this->getDatasParaCalculoDeLucro($dataInicio, $dataFinal); foreach ($datasPedidosConcluidos as $dataPedConc) { $auxValorLucro = 0; foreach ($pedidosConcluidos as $pedConc) { //Guarda a data do Pedido Concluido if (isset($pedConc['pagamento']['contasareceber']->dataHora)) { $dataPedidoConcluido = date('Y-m-d', strtotime($pedConc['pagamento']['contasareceber']->dataHora)); if ($dataPedidoConcluido == $dataPedConc) { $auxValorLucro += floatval(number_format($caixa->calculaValorLucroPedido($pedConc->idPedido), 2)); } } } //Guarda o valor do lucro no array tendo como chave a data do dia desse lucro $auxLucro = ['name' => date('d/m/Y', strtotime($dataPedConc)), 'data' => [$auxValorLucro]]; //Adiciona o valor total do lucro de um dia ao array array_push($valoresLucroTotal, $auxLucro); } return $valoresLucroTotal; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Caixa::find(); $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; } $query->andFilterWhere(['idcaixa' => $this->idcaixa, 'valorapurado' => $this->valorapurado, 'valoremcaixa' => $this->valoremcaixa, 'valorlucro' => $this->valorlucro, 'user_id' => Yii::$app->user->getId()]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Caixa::find(); $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; } $query->andFilterWhere(['idcaixa' => $this->idcaixa, 'loja_idloja' => $this->loja_idloja, 'valor' => $this->valor]); $query->andFilterWhere(['like', 'descricao', $this->descricao])->andFilterWhere(['like', 'status', $this->status]); return $dataProvider; }
/** * Displays a single DebitoAntigo model. * @param integer $id * @return mixed */ public function actionView($id) { $model = $this->findModel($id); $user = User::find()->where(['iduser' => Yii::$app->user->id])->one(); //Verifica se caixa aberto pelo usuário $caixa = Caixa::find()->where(['loja_idloja' => $user->loja_idloja])->one(); $caixaAberturaFechamentoVerify = CaixaAberturaFechamento::find()->where(['caixa_id' => $caixa->idcaixa])->orderBy('data DESC')->one(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { $connection = \Yii::$app->db; //throw Exception('Unable to save record.'); $transaction = $connection->beginTransaction(); try { $model->status = 'Pago'; $model->data_pagamento = date('Y-m-d H:i:s'); if (!$model->save()) { throw new Exception('Não foi possível salvar - #1.'); } //Se for dinheiro if ($model->forma_pagamento_id == FormaPagamento::DINHEIRO) { $caixaMovimentacao = new CaixaMovimentacao(); $caixaMovimentacao->data = date('Y-m-d H:i:s'); $caixaMovimentacao->valor = $model->valor; $caixaMovimentacao->caixa_movimentacao_tipo_id = 5; $caixaMovimentacao->caixa_idcaixa = $caixa->idcaixa; $caixaMovimentacao->validate(); if (!$caixaMovimentacao->save()) { throw new Exception('Não foi possível salvar - #2.'); } $caixa->valor += $model->valor; if (!$caixa->save()) { throw new Exception('Não foi possível salvar - #3.'); } } $transaction->commit(); Yii::$app->session->setFlash('success', \Yii::t('app', "Quitado com sucesso. ")); return $this->redirect(['index']); Yii::$app->end(); } catch (Exception $e) { Yii::$app->session->setFlash('danger', \Yii::t('app', 'Ops! Tivemos um erro. Tente novamente ou fale conosco')); $transaction->rollback(); return $this->refresh(); } return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('view', ['model' => $this->findModel($id), 'caixaAbertura' => $caixaAberturaFechamentoVerify, 'user' => $user]); } }
/** * @return \yii\db\ActiveQuery */ public function getCaixaIdcaixa() { return $this->hasOne(Caixa::className(), ['idcaixa' => 'caixa_idcaixa']); }
/** * @return \yii\db\ActiveQuery */ public function getCaixas() { return $this->hasMany(Caixa::className(), ['user_id' => 'id']); }
public function actionFinalizarPedido($formaPagamento, $idPedido) { if ($formaPagamento != null && $idPedido != null) { $pagamento = Pagamento::find()->where(['idPedido' => $idPedido])->one(); if ($pagamento != null) { $pedido = $this->findModel($idPedido); $pagamento->formapagamento_idTipoPagamento = $formaPagamento; //Inicia a transação: $transaction = \Yii::$app->db->beginTransaction(); try { $itensInseridos = true; if ($pagamento->save()) { if ($pedido != null) { $situacaoPedido = Pedido::CONCLUIDO; $pedido->idSituacaoAtual = $situacaoPedido; if ($pedido->save() && $pedido->cadastrarNovaHistoricoSituacaoPedido(intval($pedido->idPedido), intval($pedido->idSituacaoAtual), Yii::$app->getUser()->id)) { $caixa = new Caixa(); $caixa = $caixa->getCaixaAberto(); if ($caixa != null) { $caixa = Caixa::findOne($caixa->idcaixa); $caixa->valoremcaixa += $pedido->totalPedido; $caixa->valorapurado += $pedido->totalPedido; $caixa->valorlucro += number_format($caixa->calculaValorLucroPedido($pedido->idPedido), 2); if (!$caixa->save()) { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; echo Json::encode(false); } } else { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; echo Json::encode('caixanull'); } } else { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; echo Json::encode(false); } } else { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; echo Json::encode(false); } } else { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itensInseridos = false; echo Json::encode(false); } //Testa se todos os itens foram inseridos (ou tudo ou nada): if ($itensInseridos) { $transaction->commit(); echo Json::encode($pedido->idSituacaoAtual); } } catch (\Exception $exception) { $transaction->rollBack(); $mensagem = "Ocorreu uma falha inesperada ao tentar salvar o Pedido"; } } else { echo Json::encode(false); } } else { echo Json::encode(false); } }
/** * @return \yii\db\ActiveQuery */ public function getCaixas() { return $this->hasMany(Caixa::className(), ['loja_idloja' => 'idloja']); }
/** * Creates a new Venda model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { /*$data = '02/08/2015'; echo $dataConvertida = Yii::$app->utilcomponent->ConvDateToMySQL($data); echo '<br>'; echo date('Y-m-d'); if($dataConvertida == date('Y-m-d')){ echo 'igual'; } die;*/ $user = User::find()->where(['iduser' => Yii::$app->user->id])->one(); //Verifica se caixa aberto pelo usuário $caixa = Caixa::find()->where(['loja_idloja' => $user->loja_idloja])->one(); $caixaAberturaFechamentoVerify = CaixaAberturaFechamento::find()->where(['caixa_id' => $caixa->idcaixa])->orderBy('data DESC')->one(); if ($caixaAberturaFechamentoVerify != null and ($caixaAberturaFechamentoVerify->user_id != $user->id and $caixaAberturaFechamentoVerify->tipo == 'abertura' or $caixaAberturaFechamentoVerify->tipo == 'fechamento')) { $this->redirect(['caixa/abrir']); } $model = new Venda(); $model->data = date('Y-m-d H:i:m'); $model->loja_idloja = $user->loja_idloja; $vendaHasProduto = new VendaHasProduto(); $parcela = new Parcela(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { //VarDumper::dump($_POST,10,true);die; //Alisson, sempre que quiser DEBUGAR o código, faça como eu fiz na linha abaixo. Primeiro, imprime os valores $_POST que chegaram aqui e depois com DIE mata o processo, não deixando a aplicação continuar e salvar a venda. Serve para apenas vc conferir como os valores estão chegando. $connection = \Yii::$app->db; //throw Exception('Unable to save record.'); $transaction = $connection->beginTransaction(); try { $model->desconto = $model->desconto == NULL ? 0 : $model->desconto; if (!$model->save()) { throw new Exception('Não foi possível salvar - #1.'); } foreach ($_POST['VendaHasProduto'] as $item) { //ESTOQUE $estoque = Estoque::find()->where(['produto_idproduto' => $item['produto_idproduto'], 'loja_idloja' => $model->loja_idloja])->one(); if ($estoque->quantidade < $item['quantidade']) { //erro de validaçao aqui e chamar um exception } $estoque->quantidade -= $item['quantidade']; if (!$estoque->save()) { throw new Exception('Não foi possível salvar - #2.'); } //VENDA HAS PRODUTO $vendaHasProduto = new VendaHasProduto(); $vendaHasProduto->venda_idvenda = $model->idvenda; $vendaHasProduto->produto_idproduto = $item['produto_idproduto']; $vendaHasProduto->quantidade = $item['quantidade']; $vendaHasProduto->valor_unitario = Yii::$app->utilcomponent->formatNumberToMysql($item['valor_unitario']); if (!$vendaHasProduto->save()) { throw new Exception('Não foi possível salvar - #3.'); } } foreach ($_POST['Parcela'] as $key => $p) { //VENDA TEM PARCELAS $parcela = new Parcela(); $parcela->data_vencimento = Yii::$app->utilcomponent->ConvDateToMySQL($p['data_vencimento']); $parcela->valor_a_pagar = Yii::$app->utilcomponent->formatNumberToMysql($p['valor_a_pagar']); $parcela->parcela = $key; $parcela->venda_idvenda = $model->idvenda; $parcela->forma_pagamento_id = $p['forma_pagamento_id']; if ($parcela->data_vencimento == date('Y-m-d') and $p['forma_pagamento_id'] == FormaPagamento::DINHEIRO) { $parcela->data_pagamento = date('Y-m-d H:i:s'); $parcela->valor_pago = $parcela->valor_a_pagar; $parcela->status = 'paga'; $caixa->valor = $caixa->valor + $parcela->valor_pago; if (!$caixa->save()) { throw new Exception('Não foi possível salvar - #4.'); } $caixaMovimentacao = new CaixaMovimentacao(); $caixaMovimentacao->data = date('Y-m-d H:i:s'); $caixaMovimentacao->valor = $parcela->valor_pago; $caixaMovimentacao->caixa_movimentacao_tipo_id = 5; $caixaMovimentacao->caixa_idcaixa = $caixa->idcaixa; if (!$caixaMovimentacao->save()) { throw new Exception('Não foi possível salvar - #5.'); } } else { if ($p['forma_pagamento_id'] != FormaPagamento::DINHEIRO or $p['forma_pagamento_id'] == FormaPagamento::DINHEIRO & $parcela->data_vencimento != date('Y-m-d')) { //$parcela->data_pagamento = date('Y-m-d H:i:s'); //$parcela->valor_pago = $parcela->valor_a_pagar; $parcela->status = 'aberta'; } } if (!$parcela->save()) { foreach ($parcela->firstErrors as $erro) { $erro = $erro; break; } throw new Exception('Não foi possível salvar - #6.' . $erro); } } $transaction->commit(); return $this->redirect(['view', 'id' => $model->idvenda]); Yii::$app->session->setFlash('success', \Yii::t('app', "Sucesso. ")); return $this->refresh(); } catch (Exception $e) { Yii::$app->session->setFlash('danger', $e->getMessage()); $transaction->rollback(); return $this->refresh(); } } //die; if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->idvenda]); } else { return $this->render('create', ['model' => $model, 'vendaHasProduto' => $vendaHasProduto, 'parcela' => $parcela]); } }
/** * Finds the Caixa model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Caixa the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($modelCaixa = Caixa::findOne($id)) !== null) { return $modelCaixa; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }