/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Itempedido::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(['idPedido' => $this->idPedido, 'idProduto' => $this->idProduto, 'quantidade' => $this->quantidade, 'total' => $this->total]);
     return $dataProvider;
 }
Beispiel #2
0
 /**
  * Calcula o lucro do Pedido
  * @param $idPedido
  * @return float
  */
 public function calculaValorLucroPedido($idPedido)
 {
     $itensPedido = Itempedido::find()->where(['idPedido' => $idPedido])->all();
     $lucroTotal = 0;
     if (count($itensPedido) > 0) {
         foreach ($itensPedido as $ip) {
             $produto = Produto::findOne($ip->idProduto);
             if ($produto != null) {
                 $quantidade = $ip->quantidade;
                 $valorProduto = $produto->valorVenda;
                 $precoCustoProduto = $produto->calculoPrecoProduto($produto->idProduto);
                 $diferenca = $valorProduto * $quantidade - $precoCustoProduto * $quantidade;
                 $lucroTotal += $diferenca;
             }
         }
     }
     return number_format($lucroTotal, 2);
 }
Beispiel #3
0
 /**
  * Retorna os itens do pedido para o index de Pedido
  * @return array|null
  */
 public function getItensPedido()
 {
     $itensPedido = Itempedido::findAll($this->idPedido);
     $aux = [];
     if (count($itensPedido) > 0) {
         //Guarda os nomes e quantidades dos itens pedido
         $aux = [];
         foreach ($itensPedido as $ip) {
             $produto = Produto::findOne($ip->idProduto);
             if ($produto != null) {
                 array_push($aux, [$produto->nome, $ip->quantidade]);
             }
         }
         return $aux;
     } else {
         return null;
     }
 }
 /**
  * Deletes an existing Pedido model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @param integer $id
  * @return mixed
  */
 public function actionDelete($id)
 {
     //Guarda a mensagem
     $mensagem = "";
     $transaction = \Yii::$app->db->beginTransaction();
     try {
         $itenspedido = Itempedido::find()->where(['idPedido' => $id])->all();
         foreach ($itenspedido as $p) {
             Insumo::atualizaQtdNoEstoqueDelete($p->idProduto, $p->quantidade);
         }
         if ($this->findModel($id)->delete()) {
             $transaction->commit();
         }
     } catch (\Exception $exception) {
         $transaction->rollBack();
         $mensagem = "Ocorreu uma falha inesperada ao tentar salvar ";
     }
     $searchModel = new PedidoSearch();
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
     return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'mensagem' => $mensagem]);
 }
 /**
  * Finds the Itempedido model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $idPedido
  * @param integer $idProduto
  * @return Itempedido the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($idPedido, $idProduto)
 {
     if (($model = Itempedido::findOne(['idPedido' => $idPedido, 'idProduto' => $idProduto])) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
 /**
  * Gera um gráfico com as vendas de um Produto Venda
  * @param $idproduto
  * @return string
  * @throws NotFoundHttpException
  */
 public function actionAvaliacaoproduto($idproduto)
 {
     $modelProduto = $this->findModel($idproduto);
     if (Yii::$app->request->post()) {
         $groupbyavaliacao = Yii::$app->request->post()['Produto']['groupbyavaliacao'];
         $datainicioavaliacao = Yii::$app->request->post()['datainicioavaliacao'];
         $datafimavaliacao = Yii::$app->request->post()['datafimavaliacao'];
         switch ($groupbyavaliacao) {
             case 'DAY':
                 $formatdate = 'd';
                 break;
             case 'MONTH':
                 $formatdate = 'm';
                 break;
             case 'YEAR':
                 $formatdate = 'Y';
                 break;
             default:
                 $formatdate = 'd';
                 break;
         }
         $vendas = Itempedido::find();
         $vendas->select('*, sum(quantidade) as total, ' . $groupbyavaliacao . '(dataHora) as periodo')->joinWith('produto')->joinWith('pedido.pagamento.contasareceber.conta')->andFilterWhere(['produto.idProduto' => $idproduto])->andFilterWhere(['>=', 'dataHora', $datainicioavaliacao])->andFilterWhere(['<=', 'dataHora', $datafimavaliacao])->groupBy('periodo')->orderBy('dataHora ASC');
         $qtdvendas = array();
         $datasvendas = array();
         foreach ($vendas->all() as $key => $v) {
             array_push($qtdvendas, intval($v->total));
             if ($formatdate == 'm') {
                 array_push($datasvendas, Yii::t('app', date('F', strtotime($v->pedido->pagamento->contasareceber->dataHora))));
             } elseif ($formatdate == 'Y') {
                 array_push($datasvendas, date('Y', strtotime($v->pedido->pagamento->contasareceber->dataHora)));
             } else {
                 array_push($datasvendas, date('d/m/Y', strtotime($v->pedido->pagamento->contasareceber->dataHora)));
             }
         }
         return $this->render('avaliacaoproduto', ['qtdvendas' => $qtdvendas, 'datasvendas' => $datasvendas, 'datainicio' => $datainicioavaliacao, 'datafim' => $datafimavaliacao, 'datainicioavaliacao' => date('d/m/Y', strtotime($datainicioavaliacao)), 'datafimavaliacao' => date('d/m/Y', strtotime($datafimavaliacao)), 'modelProduto' => $modelProduto]);
     } else {
         return $this->render('avaliacaoproduto', ['modelProduto' => $modelProduto]);
     }
 }
Beispiel #7
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getItempedidos()
 {
     return $this->hasMany(Itempedido::className(), ['idProduto' => 'idProduto']);
 }