Example #1
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();
     }
 }
    */
    public function getItens()
    {
        return $this->itens;
    }
    public function finalizarVenda()
    {
        foreach ($this->itens as $item) {
            $quantidade = $item[0];
            $produto = $item[1];
            //Soma Total
            $total += $produto->calculaPrecoVenda() * $quantidade;
            //Diminuir estoque
            $produto->resgistraVenda($quantidade);
        }
        return $total;
    }
}
#Fim da Class Venda
#-----------------------------------
//Intanciar o objecto venda
$venda = new Venda();
//Adicionar alguns produtos
$venda->addItem(3, new Produto('Vinho', 10, 15));
//58.5
$venda->addItem(2, new Produto('Salame', 20, 20));
//52
$venda->addItem(1, new Produto('Queijo', 30, 10));
//13
//finalizar a venda
echo $venda->finalizarVenda();
<?php

require_once 'classes/dm/Produto.php';
require_once 'classes/dm/Venda.php';
require_once 'classes/dm/VendaMapper.php';
try {
    $p1 = new Produto();
    $p1->id = 1;
    $p1->preco = 12;
    $p2 = new Produto();
    $p2->id = 2;
    $p2->preco = 14;
    $venda = new Venda();
    $venda->addItem(10, $p1);
    $venda->addItem(20, $p2);
    $conn = new PDO('sqlite:database/estoque.db');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    VendaMapper::setConnection($conn);
    VendaMapper::save($venda);
} catch (Exception $e) {
    print $e->getMessage();
}
 function onGravaVenda()
 {
     date_default_timezone_set('America/Sao_Paulo');
     // obtém os dados do formulário de conclusão de venda
     $form = new ConcluiVendaForm();
     $dados = $form->getData();
     // inicia transação com o banco 'sq_livro'
     TTransaction::open('sq_livro');
     // instancia novo objeto Venda
     $venda = new Venda();
     // define os atributos a serem gravados
     $venda->id_cliente = $dados->id_cliente;
     $venda->data_venda = date('Y-m-d');
     $venda->desconto = $dados->desconto;
     $venda->valor_total = $dados->valor_total;
     $venda->valor_pago = $dados->valor_pago;
     // lê a variável $list da seção
     $itens = TSession::getValue('list');
     if ($itens) {
         // percorre os itens
         foreach ($itens as $item) {
             // adiciona o item na venda
             $venda->addItem($item);
         }
     }
     // armazena venda no banco de dados
     $venda->store();
     // finaliza a transação
     TTransaction::close();
     // limpa lista de itens da seção
     TSession::setValue('list', array());
     // exibe mensagem de sucesso
     new TMessage('info', 'Venda registrada com sucesso');
     // recarrega lista de itens
     $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());
     }
 }