public function afterSave() { $oProduto = Produto::model()->findByPk($this->produto_id); $oProduto->scenario = 'alteracaoCompra'; if ($this->isNewRecord) { $oProduto->quantidade = $oProduto->quantidade + $this->quantidade; $oProduto->save(); $oFinanceiro = new Financeiro(); $oFinanceiro->salvar(2, $this); } else { // $oProduto->quantidade = $oProduto->quantidade - $this->quantidade; // $oProduto->save(); // if ($this->qntAntigaTmp != $this->quantidade) { // if ($this->qntAntigaTmp < $this->quantidade) { // $diffQuantidade = $this->quantidade - $this->qntAntigaTmp; // $oProduto->quantidade = $oProduto->quantidade + $diffQuantidade; // } else { // $diffQuantidade = $this->qntAntigaTmp - $this->quantidade; // $oProduto->quantidade = $oProduto->quantidade - $diffQuantidade; // } // $oProduto->save(); // } } return parent::afterSave(); }
/** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndex() { if (!Yii::app()->user->isAdmin()) { $this->redirect(array('../index.php/venda')); } $totalProdutos = Produto::model()->getTotal(); $totalVendasHoje = Venda::model()->getTotalVendaHoje(); $totalVendasPrazoHoje = Venda::model()->getTotalvendasPrazoHoje(); $totalCliente = Cliente::model()->getTotal(); $totalPagamentos = Pagamento::model()->getToalPagamentosDia(); $totalFornecedores = Fornecedor::model()->getTotal(); $totalVendasVista = $totalVendasHoje - $totalVendasPrazoHoje; $data = array('totalProdutos' => $totalProdutos, 'totalVendaHoje' => $totalVendasHoje, 'totalVendasPrazoHoje' => $totalVendasPrazoHoje, 'totalCliente' => $totalCliente, 'totalPagamentos' => $totalPagamentos, 'totalFornecedores' => $totalFornecedores, 'totalVendasVista' => $totalVendasVista, 'itensMaisVendidos' => Produto::model()->getItensMaisVendidos()); $this->render('index', $data); }
public function actionAjaxGetItemCombinado() { $combinado = array(); if (Yii::app()->request->isPostRequest) { if (!empty($_POST['combinado'])) { $itemcombinado = ItemCombinado::model()->findAllByAttributes(array('combinado_id' => $_POST['combinado'])); $combinado = $itemcombinado[0]->combinados; $array = array(); foreach ($itemcombinado as $item) { $array[] = $item->produtos; } } else { $array = Produto::model()->ativos()->lanches()->findAll(); } echo CJSON::encode(array('item_combinados' => $array, 'combinado' => $combinado)); } else { throw new CHttpException(400); } }
public function afterSave() { if ($this->status == self::FECHADA && $this->isNewRecord) { $oFinanceiro = new Financeiro(); $oFinanceiro->salvar(1, $this->ordemServico, $this->usuario->nome); foreach ($this->ordemServico->ordemServicoItens as $item) { if ($item->tipo_item_id == OrdemServicoItem::PRODUTO) { $oLogRetiradaProduto = new LogRetiradaProduto(); $oLogRetiradaProduto->produto_id = $item->item_id; $oLogRetiradaProduto->quantidade = 1; $oLogRetiradaProduto->observacao = 'Ordem de Serviço: ' . $this->ordem_servico_id; $oLogRetiradaProduto->data_hora = date("Y-m-d H:i:s"); $oLogRetiradaProduto->usuario_id = Yii::app()->user->getId(); $oLogRetiradaProduto->ordem_servico_id = $this->ordem_servico_id; if (!$oLogRetiradaProduto->save()) { die(var_dump($oLogRetiradaProduto->getErrors())); } if ($item->item_id != 0) { $oProduto = Produto::model()->findByPk($item->item_id); $oProduto->decrementarQuantidade(); } } } } else { if ($this->status == self::CANCELADA) { $oFinanceiro = Financeiro::model()->findByAttributes(array('tipo_item' => Financeiro::ORDEM_SERVICO, 'tipo_item_id' => $this->ordem_servico_id)); $oFinanceiro->salvar(Financeiro::ORDEM_SERVICO, $this->ordemServico, $this->usuario->nome, 1); foreach ($this->ordemServico->ordemServicoItens as $item) { if ($item->tipo_item_id == OrdemServicoItem::PRODUTO) { $oLogRetiradaProduto = LogRetiradaProduto::model()->findByAttributes(array('ordem_servico_id' => $this->ordem_servico_id, 'produto_id' => $item->item_id)); $oLogRetiradaProduto->excluido = true; if (!$oLogRetiradaProduto->save()) { die(var_dump($oLogRetiradaProduto->getErrors())); } $oProduto = Produto::model()->findByPk($item->item_id); $oProduto->incrementarQuantidade(); } } } } parent::afterSave(); }
public function actionClient() { $cliente = Cliente::model()->findByPk(Yii::app()->user->getId()); $pedido = Pedido::open($cliente); $this->comandoExcluirItemPedido($pedido); if (isset($_POST['Produto'])) { $produto = Produto::model()->findByPk($_POST['Produto']['id']); if (count($produto) > 0) { $pedido->addItem($produto, $_POST['Produto']['qtd']); } } if (isset($_POST['refresh'])) { if ($pedido->batchItemUpdate($_POST)) { Yii::app()->user->setFlash('success', 'Pedido atualizado com sucesso!'); } else { Yii::app()->user->setFlash('error', 'Falha ao atualizar o pedido. Alguns itens econtram-se com estoque limitado.'); } } $this->render('show', array('pedido' => $pedido)); }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); $oClientes = Cliente::model()->ordemNome()->findAll(); $oLogItemNaoCadastrador = new LogItemNaoCadastrado(); $oOrdemServicoItem = new OrdemServicoItem(); $oServicos = Servico::model()->ordenarTitulo()->naoExcluido()->findAll(); $oProdutos = Produto::model()->ordenarTitulo()->naoExcluido()->findAll(); if (isset($_POST['OrdemServico'])) { $model->attributes = $_POST['OrdemServico']; if ($model->save()) { $oOrdemServicoItem->ordem_servico_id = $model->id; if (!empty($_POST['OrdemServicoItem'])) { $oOrdemServicoItem->salvarItens($_POST['OrdemServicoItem']); } if (!empty($_POST['LogItemNaoCadastrado'])) { $oOrdemServicoItem->salvarItensNaoCadastrados($_POST['LogItemNaoCadastrado']); } $this->redirect(array('view', 'id' => $model->id)); } } $this->render('update', array('model' => $model, 'oClientes' => $oClientes, 'oOrdemServicoItem' => $oOrdemServicoItem, 'valor_total' => $model->getValorTotal(), 'oLogItemNaoCadastrador' => $oLogItemNaoCadastrador, 'oServicos' => $oServicos, 'oProdutos' => $oProdutos)); }
public function actionView() { $produto = Produto::model()->findByPk(Yii::app()->getRequest()->getParam('id')); $this->render('view', array('produto' => $produto)); }
public function getProduto($param) { $query = Produto::model()->findAllBySql("select * from produto where descricao like '%" . $param . "%' limit 0,5"); return $query; }
private function atualizaEstoque($idProduto, $quantidade) { $produto = Produto::model()->findByPk($idProduto); $produto->estoque -= $quantidade; if ($produto->estoque < 0) { $produto->estoque = 0; } $produto->save(); }
/** * Manages all models. */ public function actionAdmin() { $model = new LogRetiradaProduto('search'); $model->unsetAttributes(); $oSearchForm = new SearchForm(); $aLogsRetiradasProdutos = array(); $oLogsRetiradasProdutos = LogRetiradaProduto::model()->findAll(); if (!empty($oLogsRetiradasProdutos)) { foreach ($oLogsRetiradasProdutos as $log) { $aLogsRetiradasProdutos['produto_id'][] = $log->produto_id; $aLogsRetiradasProdutos['usuario_id'][] = $log->usuario_id; } $oProdutos = Produto::model()->naoExcluido()->ordenarTitulo()->findAll(array('condition' => 'id in (' . implode(",", $aLogsRetiradasProdutos['produto_id']) . ')')); $oUsuarios = Usuario::model()->ordenarNome()->findAll(array('condition' => 'id in (' . implode(",", $aLogsRetiradasProdutos['usuario_id']) . ')')); } else { $oProdutos = Produto::model()->naoExcluido()->ordenarTitulo()->findAll(); $oUsuarios = Usuario::model()->ordenarNome()->findAll(); } if (isset($_GET['LogRetiradaProduto'])) { $model->attributes = $_GET['LogRetiradaProduto']; $oSearchForm->request = $_GET['LogRetiradaProduto']; } $headers = $model->getHeadersRelatorio(); $this->exportarRelatorio($model->search(), 'Relatório Retirada Estoque - ', $headers, date('YmdHis') . '_relatorio_retirada_estoque.csv'); $this->render('admin', array('model' => $model, 'oProdutos' => $oProdutos, 'oUsuarios' => $oUsuarios, 'exibeFormularioBusca' => $oSearchForm->checaRequisicaoVazia())); }
private function organizarEmCaixas($produtos) { $tipo = !Yii::app()->user->isGuest ? Clientetipo::model()->findByPk(Yii::app()->user->codclientetipo) : 0; $caixas = array(); $total = 0; foreach ($produtos as $prod) { $produto = Produto::model()->findByPk($prod->codproduto); // quantidade do produto $quantidade = $prod->quantidade; $prod_copy = $prod; // adicionar o nome do produto $prod_copy->name = $produto->titulo; // adicionar o valor do produto $prod_copy->price = $produto->valor; // adicionar o valor total $prod_copy->total = $prod_copy->price * $quantidade; // muda-se a quantidade do produto para incrementá-la em cada caixa $prod_copy->quantidade = 1; // valor bruto do produto $prod_copy->peso = $produto->categoria->peso * $quantidade; // todas as dimensões da caixa serão em cm e kg $prod_copy->width = $this->getDimensaoEmCm('cm', $produto->categoria->largura); $prod_copy->height = $this->getDimensaoEmCm('cm', $produto->categoria->altura); $prod_copy->length = $this->getDimensaoEmCm('cm', $produto->categoria->comprimento); // O peso do produto não é unitário como a dimensão. É multiplicado pela quantidade. Se quisermos o peso unitário, teremos que dividir pela quantidade. $prod_copy->weight = $this->getPesoEmKg('kg', $prod_copy->peso) / $quantidade; $cx_num = 0; for ($i = 1; $i <= $quantidade; $i++) { // valida as dimensões do produto com as dos Correios if ($this->validar($prod_copy)) { // cria-se a caixa caso ela não exista. isset($caixas[$cx_num]['weight']) ? true : ($caixas[$cx_num]['weight'] = 0); isset($caixas[$cx_num]['height']) ? true : ($caixas[$cx_num]['height'] = 0); isset($caixas[$cx_num]['width']) ? true : ($caixas[$cx_num]['width'] = 0); isset($caixas[$cx_num]['length']) ? true : ($caixas[$cx_num]['length'] = 0); $new_width = $caixas[$cx_num]['width'] + $prod_copy->width; $new_height = $caixas[$cx_num]['height'] + $prod_copy->height; $new_length = $caixas[$cx_num]['length'] + $prod_copy->length; $new_weight = $caixas[$cx_num]['weight'] + $prod_copy->weight; $cabe_do_lado = $new_width < $this->largura_max && $new_width + $caixas[$cx_num]['height'] + $caixas[$cx_num]['length'] < $this->soma_dim_max; $cabe_no_fundo = $new_length < $this->comprimento_max && $new_length + $caixas[$cx_num]['width'] + $caixas[$cx_num]['height'] < $this->soma_dim_max; $cabe_em_cima = $new_height < $this->altura_max && $new_height + $caixas[$cx_num]['width'] + $caixas[$cx_num]['length'] < $this->soma_dim_max; $peso_dentro_limite = $new_weight <= $this->peso_max ? true : false; // o produto cabe na caixa if (($cabe_do_lado || $cabe_no_fundo || $cabe_em_cima) && $peso_dentro_limite) { // já existe o mesmo produto na caixa, assim incrementa-se a sua quantidade if (isset($caixas[$cx_num]['produtos'][$prod_copy->codproduto])) { $caixas[$cx_num]['produtos'][$prod_copy->codproduto]->quantidade++; } else { $caixas[$cx_num]['produtos'][$prod_copy->codproduto] = $prod_copy; } // aumenta-se o peso da caixa $caixas[$cx_num]['weight'] += $prod_copy->weight; // ajusta-se as dimensões da nova caixa if ($cabe_do_lado) { $caixas[$cx_num]['width'] += $prod_copy->width; // a caixa vai ficar com a altura do maior produto que estiver nela $caixas[$cx_num]['height'] = max($caixas[$cx_num]['height'], $prod_copy->height); // a caixa vai ficar com o comprimento do maior produto que estiver nela $caixas[$cx_num]['length'] = max($caixas[$cx_num]['length'], $prod_copy->length); } elseif ($cabe_no_fundo) { $caixas[$cx_num]['length'] += $prod_copy->length; // a caixa vai ficar com a altura do maior produto que estiver nela $caixas[$cx_num]['height'] = max($caixas[$cx_num]['height'], $prod_copy->height); // a caixa vai ficar com a largura do maior produto que estiver nela $caixas[$cx_num]['width'] = max($caixas[$cx_num]['width'], $prod_copy->width); } elseif ($cabe_em_cima) { $caixas[$cx_num]['height'] += $prod_copy->height; //a caixa vai ficar com a altura do maior produto que estiver nela $caixas[$cx_num]['width'] = max($caixas[$cx_num]['width'], $prod_copy->width); //a caixa vai ficar com a largura do maior produto que estiver nela $caixas[$cx_num]['length'] = max($caixas[$cx_num]['length'], $prod_copy->length); } } else { $cx_num++; $i--; } } else { $caixas = array(); break 2; // sai dos dois foreach } } } return $caixas; }
public function beforeSave() { $retorno = parent::beforeSave(); $modelPizzaria = new Pizzaria(); if (!$this->isNewRecord) { return $retorno; } // Se tiver promoção, direcionar os itens as suas propriedades. if (isset($this->_promocoes)) { foreach ($this->_promocoes as &$promocao) { $modelIP = ItemPromocao::model()->ativos()->findByPk($promocao['item_promocao']); if (!empty($modelIP->produto_id)) { $this->_produtos[] = array('produto_id' => $modelIP->produto_id, 'promocao' => 1, 'quantidade' => !empty($promocao['quantidade']) ? $promocao['quantidade'] : null, 'preco' => $modelIP->promocoes->valor); } else { $this->_pizzas[] = array('sabores' => array($modelIP->tamanhoSabores->sabor_id), 'tamanho_id' => $modelIP->tamanhoSabores->tamanho_id, 'preco' => $modelIP->promocoes->valor, 'promocao' => 1); } } } else { $this->_promocoes = null; } if (isset($this->_produtos)) { foreach ($this->_produtos as &$produto) { $modelProduto = Produto::model()->ativos()->findByPk($produto['produto_id']); // Se for um produto promocional é o valor da promocao $this->preco_total += !isset($produto['promocao']) ? $modelProduto->preco * $produto['quantidade'] : $produto['preco']; } } if (isset($this->_combinados)) { foreach ($this->_combinados as &$combinado) { // Se for um combinado promocional é o valor da promocao if (!empty($combinado['combinado_id'])) { $modelCombinado = Combinado::model()->ativos()->findByPk($combinado['combinado_id']); $combinado['preco'] = $modelCombinado->preco; } else { foreach ($combinado['itens_combinado'] as $produto) { $modelProduto = Produto::model()->ativos()->findByPk($produto['produto_id']); $combinado['preco'] += $modelProduto->preco * $produto['quantidade']; } } $this->preco_total += $combinado['preco']; } } if (isset($this->_pizzas) && $modelPizzaria->tipo_restaurante == TipoRestaurante::_TIPO_PIZZARIA_) { foreach ($this->_pizzas as &$pizza) { $modelTamanho = Tamanho::model()->ativos()->findByPk($pizza['tamanho_id']); if (count($pizza['sabores']) > $modelTamanho->max_qtd_sabor) { return false; } $valorTamanhoBorda = 0; // Valida se a pizza tem borda recheada (se não tiver permitido ignora). if (isset($pizza['tamanho_borda_id']) && !empty($pizza['tamanho_borda_id']) && $modelPizzaria->borda_pizza) { $modelTamanhoBorda = TamanhoBorda::model()->ativos()->findByAttributes(array('tamanho_id' => $modelTamanho->id, 'borda_id' => $pizza['tamanho_borda_id'])); $pizza['tamanho_borda_id'] = $modelTamanhoBorda->id; $valorTamanhoBorda = $modelTamanhoBorda->preco; } $valorTipoMassa = 0; // Valida se a pizza tem massa diferenciada (se não tiver permitido ignora). if (isset($pizza['tamanho_tipo_massa_id']) && !empty($pizza['tamanho_tipo_massa_id']) && $modelPizzaria->massa_pizza) { $modelTamanhoTipoMassa = TamanhoTipoMassa::model()->ativos()->findByAttributes(array('tamanho_id' => $modelTamanho->id, 'tipo_massa_id' => $pizza['tamanho_tipo_massa_id'])); $pizza['tamanho_tipo_massa_id'] = $modelTamanhoTipoMassa->id; $valorTipoMassa = $modelTamanhoTipoMassa->preco; } $valorAdicionais = 0; $valorSabor = 0; $i = 0; foreach ($pizza['sabores'] as &$sabor) { $modelTamanhoSabor = TamanhoSabor::model()->ativos()->findByAttributes(array('tamanho_id' => $modelTamanho->id, 'sabor_id' => $sabor)); $sabor = $modelTamanhoSabor->id; // Se for uma pizza promocional, considere apenas o valor da promoção e só é permitido um sabor por pizza. if (isset($pizza['promocao'])) { $valorSabor = $pizza['preco']; break; } if ($modelTamanhoSabor->preco > $valorSabor) { $valorSabor = $modelTamanhoSabor->preco; } if ($i > $modelTamanho->max_qtd_sabor) { break; } $i++; } if (isset($pizza['adicionais']) && $modelPizzaria->adicional_pizza) { foreach ($pizza['adicionais'] as &$adicional) { $modelTA = TamanhoAdicional::model()->naoExcluido()->findByAttributes(array('tamanho_id' => $modelTamanho->id, 'adicional_id' => $adicional)); $adicional = $modelTA->id; $valorAdicionais += $modelTA->preco; } } $pizza['preco_total'] = $valorSabor + $valorAdicionais + $valorTipoMassa + $valorTamanhoBorda; $this->preco_total += $pizza['preco_total']; } } if ($this->forma_pagamento_id != FormaPagamento::_TIPO_DINHEIRO_ || $this->valor_pago == 0) { $this->valor_pago = $this->preco_total; } else { if ($this->preco_total > floatval($this->valor_pago)) { return false; } } return parent::beforeSave(); }
/** * Deletes a particular model. * If deletion is successful, the browser will be redirected to the 'admin' page. * @param integer $id the ID of the model to be deleted */ public function actionDelete($id) { $model = $this->loadModel($id); $model->excluida = 1; $conditions = 'sub_categoria_id = ' . $model->id; $produto = Produto::model()->find($conditions); $modelPendentes = ""; // Deleta todos os registros dependentes if (!empty($produto)) { $modelPendentes = Produto::model()->updateAll(array('excluido' => 1), $conditions); } if (empty($modelPendentes)) { $model->delete(); } else { $model->save(); } // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser if (!isset($_GET['ajax'])) { $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index')); } }
<th>ESTOQUE</th> <th>IMPRESSORAS</th> <th>QUANTIDADE</th> <th></th> </tr> </thead> <tbody> <?php $criteria = new CDbCriteria(); $criteria->together = true; $criteria->join = ' INNER JOIN categoria_produto ON t.id = categoria_produto.produto_id INNER JOIN categoria ON categoria_produto.categoria_id = categoria.id'; $criteria->addCondition("categoria.id = 2"); //id2 => Cartuchos $produtos = Produto::model()->findAll($criteria); ?> <?php foreach ($produtos as $key => $p) { ?> <tr> <td><?php echo $p->nome; ?> </td> <td><?php echo $p->estoque(); ?> </td> <td></td> <td><input type="text" name="quantidade" class="quantidade" value="1" /></td>
<!-- produtos --> <div id="produtos"> <table> <thead> <tr> <th>NOME</th> <th>ESTOQUE</th> <th>IMPRESSORAS</th> </tr> </thead> <tbody> <?php $produtos = Produto::model()->findAll(); ?> <?php foreach ($produtos as $key => $p) { ?> <tr> <td><?php echo $p->nome; ?> </td> <td><?php echo $p->estoque(); ?> </td> <td></td> </tr> <?php } ?>
/** * Manages all models. */ public function actionAdmin() { $model = new Compra('search'); $model->unsetAttributes(); $oSearchForm = new SearchForm(); $oCompras = Compra::model()->findAll(); $aCompras = array(); if (!empty($oCompras)) { foreach ($oCompras as $compra) { $aCompras['produto_id'][] = $compra->produto_id; $aCompras['usuario_id'][] = $compra->usuario_id; } $oProdutos = Produto::model()->naoExcluido()->ordenarTitulo()->findAll(array('condition' => 'id in (' . implode(",", $aCompras['produto_id']) . ')')); $oUsuarios = Usuario::model()->ordenarNome()->findAll(array('condition' => 'id in (' . implode(",", $aCompras['usuario_id']) . ')')); } else { $oProdutos = Produto::model()->naoExcluido()->ordenarTitulo()->findAll(); $oUsuarios = Usuario::model()->ordenarNome()->findAll(); } if (isset($_GET['Compra'])) { $model->attributes = $_GET['Compra']; $oSearchForm->request = $_GET['Compra']; } $this->render('admin', array('model' => $model, 'oProdutos' => $oProdutos, 'oUsuarios' => $oUsuarios, 'exibeFormularioBusca' => $oSearchForm->checaRequisicaoVazia())); }
public static function getArraySimplesFormatado() { $model = Produto::model()->ativos()->findAll(); foreach ($model as $item) { $array[$item->id] = $item->nome . " (" . $item->descricao . ")"; } return $array; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return Produto the loaded model * @throws CHttpException */ public function loadModel($id) { $model = Produto::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
public function batchItemUpdate($post_array) { $transaction = Yii::app()->db->beginTransaction(); try { $erros = false; foreach ($post_array['ItemPedido'] as $item) { $produto = Produto::model()->findByPk($item['produto_id']); if (count($produto) > 0) { $itempedido = $this->getItem($produto); $produto->returnToInventory($itempedido->getAttribute('quantidade')); $quantidade = $item['quantidade']; if ($produto->getFromInventory($quantidade)) { if (count($itempedido) > 0) { $itempedido->setAttribute('quantidade', $quantidade); if ($quantidade == 0) { $itempedido->delete(); } else { if (!$itempedido->update(array('quantidade'))) { throw new CHttpException(500, "Falha ao atualizar carrinho de compras"); } } } else { throw new CHttpException(500, "O inventario foi atualizado sem atualizacao de item de produto"); } } else { // O estoque encontra-se baixo $erros = true; } } } $transaction->commit(); return !$erros; } catch (Exception $e) { Yii::log("FALHA AO ATUALIZAR CARRINHO {$e->getMessage()}"); $transaction->rollback(); } return false; }