/**
  * Retorna a lista de Produtos Venda que possuem um determinado Insumo
  * @return string
  * @throws NotFoundHttpException
  */
 public function actionListadeprodutosporinsumo()
 {
     $modelProduto = new Produto();
     $insumos = ArrayHelper::map(Produto::find()->join('INNER JOIN', 'insumo', 'idProduto = idprodutoInsumo ')->where(['isInsumo' => 1])->all(), 'idProduto', 'nome');
     if (Yii::$app->request->post()) {
         $searchModel = new ProdutoSearch();
         $listadeprodutosvenda = $searchModel->searchProdutosVenda(Yii::$app->request->post());
         $nomeInsumo = $this->findModel(Yii::$app->request->post()['idinsumo'])->nome;
         $produtosVenda = array();
         foreach ($listadeprodutosvenda as $pv) {
             array_push($produtosVenda, $modelProduto::findOne($pv->idprodutoVenda));
         }
         return $this->render('listadeprodutosporinsumo', ['insumos' => $insumos, 'produtosVenda' => $produtosVenda, 'nomeInsumo' => $nomeInsumo]);
     } else {
         return $this->render('listadeprodutosporinsumo', ['insumos' => $insumos]);
     }
 }
Exemple #2
0
 public function actionSelecionaProdutos()
 {
     $searchModel = new ProdutoSearch();
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
     return $this->render('selecionaProdutos', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]);
 }
Exemple #3
0
 /**
  * @param $idprodutoVenda
  * @return float|int
  * Calcula os custos de um Produto Venda, de acordo com o preço de compra(Valor da compra mais
  * atual) de um insumo e também de acordo com os custos fixos(Total de produtos vendidos/ total consumo
  * em um mês)
  *
  */
 public function calculoPrecoProduto($idprodutoVenda)
 {
     //Busca e guarda todos os insumos do Produto Venda
     $insumos = Insumo::find()->where(['idprodutoVenda' => $idprodutoVenda])->all();
     $precosugerido = 0;
     //Model para a busca dos dados de Produto
     $searchModel = new ProdutoSearch();
     //Guarda a soma da quantidade de Produtos Venda vendidos no mês
     $sumQuantidadeVendaProdutoVenda = $searchModel->searchQuantidadeProdutosEmVendas($idprodutoVenda);
     //Busca e guarda todos os tipos de Custo Fixo
     $tiposCustoFixo = Tipocustofixo::find()->all();
     $consumosCustoFixo = [];
     //Model para a busca dos dados de Custo Fixo
     $searchModelCustoFixo = new CustofixoSearch();
     $arrayTipoCustoFixoZero = [];
     //Guarda o consumo mensal de cada tipo de Custo Fixo
     foreach ($tiposCustoFixo as $custoFixo) {
         $consumoCustoFixo = $searchModelCustoFixo->searchConsumoCustoFixoporTipoMensal($custoFixo->idtipocustofixo);
         array_push($consumosCustoFixo, $consumoCustoFixo);
         if ($consumoCustoFixo > 0) {
             $ct = $sumQuantidadeVendaProdutoVenda / $consumoCustoFixo;
             $precosugerido += $ct;
         } else {
             array_push($arrayTipoCustoFixoZero, $custoFixo->tipocustofixo);
         }
     }
     if ($arrayTipoCustoFixoZero != null) {
         Yii::$app->session->setFlash('custofixozerados', "<div class=\"alert alert-warning\">\n               Não foram calculados os custos fixos de " . implode(",", $arrayTipoCustoFixoZero) . " pois não\n                há registro(s) dele(s) no mês anterior\n            </div>");
     }
     //Soma o(s) valor(es) do(s) insumo(s) do produto venda ao custo do produto
     foreach ($insumos as $key => $insumo) {
         $produtoCompra = $searchModel->searchProdutosCompra($insumo->idprodutoInsumo);
         if ($insumo != null && $produtoCompra != null) {
             $precosugerido += $produtoCompra->valorCompra * $insumo->quantidade / $produtoCompra->quantidade;
         }
     }
     return $precosugerido;
 }