/** * 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); }
/** * 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()); } }
/** * 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); }
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(); } }
/** * 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()); } }
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(); } }
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(); } }
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(); } }
/** * 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()); } }
/** * 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(); } }
/** * 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()); } }
/** * 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(); } }
/** * 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(); } }
/** * 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()); } }
/** * 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); }
/** * 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(); }