Example #1
0
 /**
  * Construtor da página
  */
 public function __construct()
 {
     parent::__construct();
     $this->connection = 'livro';
     $this->activeRecord = 'Cidade';
     // instancia um formulário
     $this->form = new FormWrapper(new Form('form_cidades'));
     // cria os campos do formulário
     $codigo = new Entry('id');
     $descricao = new Entry('nome');
     $estado = new Combo('id_estado');
     $codigo->setEditable(FALSE);
     Transaction::open('livro');
     $estados = Estado::all();
     $items = array();
     foreach ($estados as $obj_estado) {
         $items[$obj_estado->id] = $obj_estado->nome;
     }
     Transaction::close();
     $estado->addItems($items);
     $this->form->addField('Código', $codigo, 40);
     $this->form->addField('Descrição', $descricao, 300);
     $this->form->addField('Estado', $estado, 300);
     $this->form->addAction('Salvar', new Action(array($this, 'onSave')));
     $this->form->addAction('Limpar', new Action(array($this, 'onEdit')));
     // instancia a Datagrid
     $this->datagrid = new DatagridWrapper(new Datagrid());
     // instancia as colunas da Datagrid
     $codigo = new DatagridColumn('id', 'Código', 'right', 50);
     $nome = new DatagridColumn('nome', 'Nome', 'left', 150);
     $estado = new DatagridColumn('nome_estado', 'Estado', 'left', 150);
     // adiciona as colunas à Datagrid
     $this->datagrid->addColumn($codigo);
     $this->datagrid->addColumn($nome);
     $this->datagrid->addColumn($estado);
     // instancia duas ações da Datagrid
     $action1 = new DatagridAction(array($this, 'onEdit'));
     $action1->setLabel('Editar');
     $action1->setImage('ico_edit.png');
     $action1->setField('id');
     $action2 = new DatagridAction(array($this, 'onDelete'));
     $action2->setLabel('Deletar');
     $action2->setImage('ico_delete.png');
     $action2->setField('id');
     // adiciona as ações à Datagrid
     $this->datagrid->addAction($action1);
     $this->datagrid->addAction($action2);
     // cria o modelo da Datagrid, montando sua estrutura
     $this->datagrid->createModel();
     $panel = new Panel('Cidades');
     $panel->add($this->form);
     $panel2 = new Panel();
     $panel2->add($this->datagrid);
     // monta a página através de uma tabela
     $box = new VBox();
     $box->style = 'display:block';
     $box->add($panel);
     $box->add($panel2);
     parent::add($box);
 }
Example #2
0
 /**
  * Carrega a DataGrid com os objetos
  */
 function onReload()
 {
     try {
         Transaction::open($this->connection);
         $repository = new Repository($this->activeRecord);
         // cria um critério de seleção de dados
         $criteria = new Criteria();
         $criteria->setProperty('order', 'id');
         if (isset($this->filter)) {
             $criteria->add($this->filter);
         }
         // carreta os objetos que satisfazem o critério
         $objects = $repository->load($criteria);
         $this->datagrid->clear();
         if ($objects) {
             foreach ($objects as $object) {
                 // adiciona o objeto na DataGrid
                 $this->datagrid->addItem($object);
             }
         }
         Transaction::close();
     } catch (Exception $e) {
         new Message($e->getMessage());
     }
 }
Example #3
0
 /**
  * Construtor da página
  */
 public function __construct()
 {
     parent::__construct();
     $this->connection = 'livro';
     $this->activeRecord = 'Produto';
     // instancia um formulário
     $this->form = new FormWrapper(new Form('form_produtos'));
     // cria os campos do formulário
     $codigo = new Entry('id');
     $descricao = new Entry('descricao');
     $estoque = new Entry('estoque');
     $preco_custo = new Entry('preco_custo');
     $preco_venda = new Entry('preco_venda');
     $fabricante = new Combo('id_fabricante');
     $tipo = new RadioGroup('id_tipo');
     $unidade = new Combo('id_unidade');
     // carrega os fabricantes do banco de dados
     Transaction::open('livro');
     $fabricantes = Fabricante::all();
     $items = array();
     foreach ($fabricantes as $obj_fabricante) {
         $items[$obj_fabricante->id] = $obj_fabricante->nome;
     }
     $fabricante->addItems($items);
     $tipos = Tipo::all();
     $items = array();
     foreach ($tipos as $obj_tipo) {
         $items[$obj_tipo->id] = $obj_tipo->nome;
     }
     $tipo->addItems($items);
     $unidades = Unidade::all();
     $items = array();
     foreach ($unidades as $obj_unidade) {
         $items[$obj_unidade->id] = $obj_unidade->nome;
     }
     $unidade->addItems($items);
     Transaction::close();
     // define alguns atributos para os campos do formulário
     $codigo->setEditable(FALSE);
     $this->form->addField('Código', $codigo, 100);
     $this->form->addField('Descrição', $descricao, 300);
     $this->form->addField('Estoque', $estoque, 300);
     $this->form->addField('Preço custo', $preco_custo, 200);
     $this->form->addField('Preço venda', $preco_venda, 200);
     $this->form->addField('Fabricante', $fabricante, 300);
     $this->form->addField('Tipo', $tipo, 300);
     $this->form->addField('Unidade', $unidade, 300);
     $this->form->addAction('Salvar', new Action(array($this, 'onSave')));
     // cria um painél para conter o formulário
     $panel = new Panel('Produtos');
     $panel->add($this->form);
     // adiciona o formulário na página
     parent::add($panel);
 }
Example #4
0
 public function show()
 {
     try {
         Transaction::open('livro');
         $c1 = Cidade::find(12);
         print $c1->nome . '<br>';
         print $c1->estado->nome . '<br>';
         print $c1->nome_estado . '<br>';
         $p1 = Pessoa::find(12);
         print $p1->nome . '<br>';
         print $p1->nome_cidade;
         Transaction::close();
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
 function getData($id_pessoa)
 {
     try {
         $pessoa_array = array();
         Transaction::open('livro');
         $pessoa = Pessoa::find($id_pessoa);
         if ($pessoa) {
             $pessoa_array = $pessoa->toArray();
         } else {
             return new SoapFault("Server", "Pessoa {$id_pessoa} não encontrado");
         }
         Transaction::close();
         return $pessoa_array;
     } catch (Exception $e) {
         Transaction::rollback();
         return new SoapFault("Server", $e->getMessage());
     }
 }
 public function listar()
 {
     try {
         Transaction::open('livro');
         $criteria = new Criteria();
         $criteria->setProperty('order', 'id');
         $repository = new Repository('Cidade');
         $cidades = $repository->load($criteria);
         if ($cidades) {
             foreach ($cidades as $cidade) {
                 print "{$cidade->id} - {$cidade->nome}<br>";
             }
         }
         Transaction::close();
     } catch (Exception $e) {
         print $e->getMessage();
     }
 }
 function count(Criteria $criteria)
 {
     $expression = $criteria->dump();
     $sql = "SELECT count(*) FROM " . constant($this->activeRecord . '::TABLENAME');
     if ($expression) {
         $sql .= ' WHERE ' . $expression;
     }
     if ($conn = Transaction::get()) {
         Transaction::log($sql);
         $result = $conn->query($sql);
         if ($result) {
             $row = $result->fetch();
         }
         return $row[0];
     } else {
         throw new Exception('Não há transação ativa!!');
     }
 }
Example #8
0
 /**
  * Salva os dados do formulário
  */
 function onSave()
 {
     try {
         Transaction::open($this->connection);
         $class = $this->activeRecord;
         $dados = $this->form->getData();
         $object = new $class();
         // instancia objeto
         $object->fromArray((array) $dados);
         // carrega os dados
         $object->store();
         // armazena o objeto
         Transaction::close();
         // finaliza a transação
         new Message('info', 'Dados armazenados com sucesso');
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
     }
 }
Example #9
0
 public function show()
 {
     try {
         Transaction::open('livro');
         $p1 = Pessoa::find(1);
         $p1->delGrupos();
         $p1->addGrupo(new Grupo(1));
         $p1->addGrupo(new Grupo(3));
         $grupos = $p1->getGrupos();
         if ($grupos) {
             foreach ($grupos as $grupo) {
                 print $grupo->id . ' - ';
                 print $grupo->nome . '<br>';
             }
         }
         Transaction::close();
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
Example #10
0
 public function show()
 {
     try {
         Transaction::open('livro');
         $p1 = Pessoa::find(1);
         print 'Valor total: ' . $p1->totalDebitos() . '<br>';
         echo '<hr>';
         $contas = $p1->getContasEmAberto();
         if ($contas) {
             foreach ($contas as $conta) {
                 print $conta->dt_emissao . ' - ';
                 print $conta->dt_vencimento . ' - ';
                 print $conta->valor . '<br>';
             }
         }
         Transaction::close();
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
Example #11
0
 public function show()
 {
     try {
         Transaction::open('livro');
         $venda = new Venda();
         $venda->cliente = new Pessoa(3);
         $venda->data_venda = date('Y-m-d');
         $venda->valor_venda = 0;
         $venda->desconto = 0;
         $venda->acrescimos = 0;
         $venda->obs = 'obs';
         $venda->addItem(new Produto(3), 2);
         $venda->addItem(new Produto(4), 1);
         $venda->valor_final = $venda->valor_venda + $venda->acrescimos - $venda->desconto;
         $venda->store();
         Transaction::close();
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
Example #12
0
 /**
  * Exclui um registro
  */
 function Delete($param)
 {
     try {
         $id = $param['id'];
         // obtém a chave
         Transaction::open($this->connection);
         // inicia transação com o BD
         $class = $this->activeRecord;
         $object = $class::find($id);
         // instancia objeto
         $object->delete();
         // deleta objeto do banco de dados
         Transaction::close();
         // finaliza a transação
         $this->onReload();
         // recarrega a datagrid
         new Message('info', "Registro excluído com sucesso");
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
     }
 }
Example #13
0
 /**
  * Carrega registro para edição
  */
 function onEdit($param)
 {
     try {
         if (isset($param['id'])) {
             $id = $param['id'];
             // obtém a chave
             Transaction::open($this->connection);
             // inicia transação com o BD
             $class = $this->activeRecord;
             $object = $class::find($id);
             // instancia o Active Record
             $this->form->setData($object);
             // lança os dados no formulário
             Transaction::close();
             // finaliza a transação
         }
     } catch (Exception $e) {
         new Message('error', '<b>Erro</b>' . $e->getMessage());
         Transaction::rollback();
     }
 }
Example #14
0
 /**
  * Exclui um registro
  */
 public function Delete($param)
 {
     try {
         $id = $param['id'];
         // obtém a chave
         Transaction::open('livro');
         // inicia transação com o banco 'livro'
         $pessoa = Pessoa::find($id);
         $pessoa->delete();
         // deleta objeto do banco de dados
         Transaction::close();
         // finaliza a transação
         $this->onReload();
         // recarrega a datagrid
         new Message('info', "Registro excluído com sucesso");
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
     }
 }
 private function getLast()
 {
     if ($conn = Transaction::get()) {
         $sql = "SELECT max(id) FROM {$this->getEntity()}";
         Transaction::log($sql);
         $result = $conn->query($sql);
         $row = $result->fetch();
         return $row[0];
     } else {
         throw new Exception('Não há transação ativa!!');
     }
 }
Example #16
0
 /**
  * Carrega registro para edição
  */
 public function onEdit($param)
 {
     try {
         if (isset($param['id'])) {
             $id = $param['id'];
             // obtém a chave
             Transaction::open('livro');
             // inicia transação com o BD
             $pessoa = Pessoa::find($id);
             $pessoa->ids_grupos = $pessoa->getIdsGrupos();
             $this->form->setData($pessoa);
             // lança os dados da pessoa no formulário
             Transaction::close();
             // finaliza a transação
         }
     } catch (Exception $e) {
         // exibe a mensagem gerada pela exceção
         new Message('error', '<b>Erro</b>' . $e->getMessage());
         // desfaz todas alterações no banco de dados
         Transaction::rollback();
     }
 }
Example #17
0
 /**
  * Retorna o último ID
  */
 private function getLast()
 {
     // inicia transação
     if ($conn = Transaction::get()) {
         // instancia instrução de SELECT
         $sql = "SELECT max(id) FROM {$this->getEntity()}";
         // cria log e executa instrução SQL
         Transaction::log($sql);
         $result = $conn->query($sql);
         // retorna os dados do banco
         $row = $result->fetch();
         return $row[0];
     } else {
         // se não tiver transação, retorna uma exceção
         throw new Exception('Não há transação ativa!!');
     }
 }
Example #18
0
 /**
  * Carrega registro para edição
  */
 public function onEdit($param)
 {
     if (isset($param['key'])) {
         $key = $param['key'];
         // obtém a chave
         Transaction::open('livro');
         // inicia transação com o BD
         $fabricante = Fabricante::find($key);
         // instancia o Active Record
         $this->form->setData($fabricante);
         // lança os dados no formulário
         Transaction::close();
         // finaliza a transação
         $this->onReload();
     }
 }
Example #19
0
 /**
  * Grava venda
  */
 public function onGravaVenda()
 {
     try {
         // inicia transação com o banco 'livro'
         Transaction::open('livro');
         $dados = $this->form->getData();
         $cliente = Pessoa::find($dados->id_cliente);
         if (!$cliente) {
             throw new Exception('Cliente não encontrado');
         }
         if ($cliente->totalDebitos() > 0) {
             throw new Exception('Débitos impedem esta operação');
         }
         $venda = new Venda();
         $venda->cliente = $cliente;
         $venda->data_venda = date('Y-m-d');
         $venda->valor_venda = $dados->valor_venda;
         $venda->desconto = $dados->desconto;
         $venda->acrescimos = $dados->acrescimos;
         $venda->valor_final = $dados->valor_final;
         $venda->obs = $dados->obs;
         // lê a variável $list da seção
         $itens = Session::getValue('list');
         if ($itens) {
             // percorre os itens
             foreach ($itens as $item) {
                 // adiciona o item na venda
                 $venda->addItem(new Produto($item->id_produto), $item->quantidade);
             }
         }
         $venda->store();
         // armazena venda no banco de dados
         // gera o financeiro
         Conta::geraParcelas($dados->id_cliente, 2, $dados->valor_final, $dados->parcelas);
         Transaction::close();
         // finaliza a transação
         Session::setValue('list', array());
         // limpa lista de itens da seção
         // exibe mensagem de sucesso
         new Message('info', 'Venda registrada com sucesso');
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
     }
 }
Example #20
0
 /**
  * Gera o relatório, baseado nos parâmetros do formulário
  */
 public function onGera()
 {
     require_once 'Lib/Twig/Autoloader.php';
     Twig_Autoloader::register();
     $loader = new Twig_Loader_Filesystem('App/Resources');
     $twig = new Twig_Environment($loader);
     $template = $twig->loadTemplate('vendas_report.html');
     // obtém os dados do formulário
     $dados = $this->form->getData();
     // joga os dados de volta ao formulário
     $this->form->setData($dados);
     $conv_data_to_us = function ($data) {
         $dia = substr($data, 0, 2);
         $mes = substr($data, 3, 2);
         $ano = substr($data, 6, 4);
         return "{$ano}-{$mes}-{$dia}";
     };
     // lê os campos do formulário, converte para o padrão americano
     $data_ini = $conv_data_to_us($dados->data_ini);
     $data_fim = $conv_data_to_us($dados->data_fim);
     // vetor de parâmetros para o template
     $replaces = array();
     $replaces['data_ini'] = $dados->data_ini;
     $replaces['data_fim'] = $dados->data_fim;
     try {
         // inicia transação com o banco 'livro'
         Transaction::open('livro');
         // instancia um repositório da classe Venda
         $repositorio = new Repository('Venda');
         // cria um critério de seleção por intervalo de datas
         $criterio = new Criteria();
         $criterio->setProperty('order', 'data_venda');
         if ($dados->data_ini) {
             $criterio->add(new Filter('data_venda', '>=', $data_ini));
         }
         if ($dados->data_fim) {
             $criterio->add(new Filter('data_venda', '<=', $data_fim));
         }
         // lê todas vendas que satisfazem ao critério
         $vendas = $repositorio->load($criterio);
         if ($vendas) {
             foreach ($vendas as $venda) {
                 $venda_array = $venda->toArray();
                 $venda_array['nome_cliente'] = $venda->cliente->nome;
                 $itens = $venda->itens;
                 if ($itens) {
                     foreach ($itens as $item) {
                         $item_array = $item->toArray();
                         $item_array['descricao'] = $item->produto->descricao;
                         $venda_array['itens'][] = $item_array;
                     }
                 }
                 $replaces['vendas'][] = $venda_array;
             }
         }
         // finaliza a transação
         Transaction::close();
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
         Transaction::rollback();
     }
     $content = $template->render($replaces);
     parent::add($content);
 }
Example #21
0
 /**
  * Retorna a quantidade de objetos da base de dados
  * que satisfazem um determinado critério de seleção.
  * @param $criteria = objeto do tipo TCriteria
  */
 function count(Criteria $criteria)
 {
     $expression = $criteria->dump();
     $sql = "SELECT count(*) FROM " . constant($this->activeRecord . '::TABLENAME');
     if ($expression) {
         $sql .= ' WHERE ' . $expression;
     }
     // obtém transação ativa
     if ($conn = Transaction::get()) {
         // registra mensagem de log
         Transaction::log($sql);
         // executa instrução de SELECT
         $result = $conn->query($sql);
         if ($result) {
             $row = $result->fetch();
         }
         // retorna o resultado
         return $row[0];
     } else {
         // se não tiver transação, retorna uma exceção
         throw new Exception('Não há transação ativa!!');
     }
 }
Example #22
0
 /**
  * Adiciona item
  */
 public function onAdiciona()
 {
     try {
         // obtém os dados do formulário
         $item = $this->form->getData();
         Transaction::open('livro');
         $produto = Produto::find($item->id_produto);
         if ($produto) {
             $item->descricao = $produto->descricao;
             $item->preco = $produto->preco_venda;
             $list = Session::getValue('list');
             // lê variável $list da seção
             $list[$item->id_produto] = $item;
             // acrescenta produto na variável $list
             Session::setValue('list', $list);
             // grava variável $list de volta à seção
         }
         Transaction::close('livro');
     } catch (Exception $e) {
         new Message('error', $e->getMessage());
     }
     // recarrega a listagem
     $this->onReload();
 }