/** * Updates an existing Custofixo model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $modelCustofixo = $this->findModel($id); $tiposCustoFixo = ArrayHelper::map(Tipocustofixo::find()->all(), 'idtipocustofixo', 'tipocustofixo'); if ($modelCustofixo->load(Yii::$app->request->post()) && $modelCustofixo->save()) { return $this->redirect(['view', 'id' => $modelCustofixo->idconta]); } else { return $this->render('update', ['modelCustofixo' => $modelCustofixo, 'tiposCustoFixo' => $tiposCustoFixo]); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Tipocustofixo::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(['idtipocustofixo' => $this->idtipocustofixo]); $query->andFilterWhere(['like', 'tipocustofixo', $this->tipocustofixo]); return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getTipocustofixoIdtipocustofixo() { return $this->hasOne(Tipocustofixo::className(), ['idtipocustofixo' => 'tipocustofixo_idtipocustofixo']); }
/** * Updates an existing Conta model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $modelConta = $this->findModel($id); //Guarda o tipo de conta $tipodeConta = $modelConta->tipoConta; $mensagem = ""; //Informa ao usuário mensagens de erro na view $tiposConta = ['contasapagar' => 'Conta a pagar', 'contasareceber' => 'Conta a receber', 'custofixo' => 'Custo Fixo']; if (Contasapagar::findOne($id)) { $modelContaapagar = Contasapagar::findOne($id); } else { $modelContaapagar = new Contasapagar(); } if (Contasareceber::findOne($id)) { $modelContasareceber = Contasareceber::findOne($id); } else { $modelContasareceber = new Contasareceber(); } if (Custofixo::findOne($id)) { $modelCustofixo = Custofixo::findOne($id); } else { $modelCustofixo = new Custofixo(); } $tiposCustoFixo = ArrayHelper::map(Tipocustofixo::find()->all(), 'idtipocustofixo', 'tipocustofixo'); if ($modelConta->load(Yii::$app->request->post())) { $modelConta->tipoConta = $tipodeConta; //Inicia a transação: $transaction = \Yii::$app->db->beginTransaction(); try { //Tenta salvar um registro : if ($modelConta->save()) { $itemInserido = true; $conta = Yii::$app->request->post()['Conta']; $contasapagar = Yii::$app->request->post()['Contasapagar']; $contasareceber = Yii::$app->request->post()['Contasareceber']; $custofixo = Yii::$app->request->post()['Custofixo']; if ($conta['tipoConta'] == 'contasapagar') { $modelContaapagar->idconta = $modelConta->idconta; $modelContaapagar->dataVencimento = $contasapagar['dataVencimento']; if (!$modelContaapagar->save()) { $mensagem = "Não foi possível salvar os dados de algum item do Pedido"; $transaction->rollBack(); //desfaz alterações no BD $itemInserido = false; } } else { if ($conta['tipoConta'] == 'contasareceber') { $modelContasareceber->idconta = $modelConta->idconta; if ($contasareceber['dataHora'] != null) { $modelContasareceber->dataHora = $contasareceber['dataHora']; if (!$modelContasareceber->save()) { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itemInserido = false; } } } else { if ($conta['tipoConta'] == 'custofixo') { $modelCustofixo->idconta = $modelConta->idconta; $modelContaapagar->idconta = $modelConta->idconta; $modelContaapagar->dataVencimento = $contasapagar['dataVencimento']; $modelCustofixo->consumo = $custofixo['consumo']; $modelCustofixo->tipocustofixo_idtipocustofixo = $custofixo['tipocustofixo_idtipocustofixo']; if ($modelContaapagar->save()) { if (!$modelCustofixo->save()) { $mensagem = "Não foi possível salvar os dados "; $transaction->rollBack(); //desfaz alterações no BD $itemInserido = false; } } else { $mensagem = "Não foi possível salvar os dados"; $transaction->rollBack(); //desfaz alterações no BD $itemInserido = false; } } } } if ($itemInserido) { $transaction->commit(); return $this->redirect(['view', 'id' => $modelConta->idconta]); } } } catch (\Exception $exception) { $transaction->rollBack(); $mensagem = "Ocorreu uma falha inesperada ao tentar salvar "; } } return $this->render('update', ['modelConta' => $modelConta, 'tiposConta' => $tiposConta, 'modelContaapagar' => $modelContaapagar, 'modelContasareceber' => $modelContasareceber, 'modelCustofixo' => $modelCustofixo, 'tiposCustoFixo' => $tiposCustoFixo, 'mensagem' => $mensagem]); }
/** * @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; }
/** * Finds the Tipocustofixo model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Tipocustofixo the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($modelTipocustofixo = Tipocustofixo::findOne($id)) !== null) { return $modelTipocustofixo; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }