public function getConfigSendMail($empreendimentos)
 {
     $UsuariosDao = new UsuarioDao();
     if (is_array($empreendimentos) && count($empreendimentos) > 0) {
         $dados_send_mail = array();
         $EmpreendimentoDao = new EmpreendimentoDao();
         foreach ($empreendimentos as $emp) {
             $empreendimento = $EmpreendimentoDao->getEmpreendimentoById($emp['id']);
             $config_send_mail = $this->getConfiguracoes($emp['id'], 'config_send_mail');
             $config_send_mail = $config_send_mail['config_send_mail'];
             parse_str($config_send_mail, $config_send_mail);
             $user_in = "";
             if (!(is_array($config_send_mail) && (array_key_exists('user', $config_send_mail) && array_key_exists('color', $config_send_mail)))) {
                 return false;
             }
             foreach ($config_send_mail['user'] as $id_adm) {
                 $user_in .= $id_adm . ",";
             }
             $user_in = "IN (" . substr($user_in, 0, -1) . ")";
             $user = $UsuariosDao->getUsuarios(null, null, array('usu.id' => array("exp" => $user_in), "emp.id" => $emp['id']), array('usu.nome', 'usu.email'));
             $config_send_mail['user'] = $user['usuarios'];
             $dados_send_mail[] = array('empreendimento' => $empreendimento, 'config_send_mail' => $config_send_mail);
         }
         return $dados_send_mail;
     } else {
         return false;
     }
 }
 public static function getEmpreendimentos()
 {
     $empreendimentoDao = new EmpreendimentoDao();
     $empreendimento = $empreendimentoDao->getEmpreendimentos();
     if ($empreendimento) {
         Flight::json($empreendimento);
     } else {
         Flight::halt(404, 'Nenhum empreendimento encontrado.');
     }
 }
<?php

$EmpreendimentoDao = new EmpreendimentoDao();
$ItemVendaDao = new ItemVendaDao();
$VendaDao = new VendaDao();
$UsuarioDao = new UsuarioDao();
$CidadeDao = new CidadeDao();
$EstadoDao = new EstadoDao();
$Conexao = new Conexao();
$aux = json_decode($dados['json']);
$vlr_saldo_devedor = 0;
$empreendimento = $EmpreendimentoDao->getEmpreendimentoById($aux->id_empreendimento);
if (!$aux->pagamento_fulso) {
    $venda = $VendaDao->getVenda($aux->id_venda);
    $produtos = $ItemVendaDao->getItens($aux->id_venda);
    $vlr_saldo_devedor = !empty($venda['vlr_saldo_anterior']) ? (double) $venda['vlr_saldo_anterior'] : 0;
    $id_venda = $aux->id_venda;
    $queryPagamentos = "SELECT tpv.id_forma_pagamento,if(tpv.id_forma_pagamento = 6,COUNT(*),NULL) n_parcelas, ROUND(SUM(tpv.valor_pagamento),2) AS valor_pagamento,tfp.descricao_forma_pagamento\n\t\t\tFROM tbl_movimentacao_caixa AS tmc  \n\t\t\tINNER JOIN tbl_pagamentos_venda AS tpv ON tmc.id_lancamento_entrada = tpv.id \n\t\t\tINNER JOIN tbl_forma_pagamento AS tfp ON tpv.id_forma_pagamento = tfp.id\n\t\t\tINNER JOIN tbl_conta_bancaria AS tcb ON tpv.id_conta_bancaria = tcb.id\n\t\t\tWHERE tmc.id_venda = {$id_venda}\n\t\t\tAND (tcb.id_tipo_conta  <> 5 OR (tcb.id_tipo_conta =5 AND (tpv.flg_caixa_fechado = 0 OR tpv.flg_caixa_fechado IS NULL ) ))\n\t\t\tGROUP BY if(tpv.id_parcelamento IS NULL \n\t\t\tAND tpv.id_forma_pagamento = 6,tpv.id, if(tpv.id_forma_pagamento <> 6,tpv.id, (if(tpv.id_forma_pagamento <> 6,tpv.id,tpv.id_parcelamento))))";
    $pagamentos = parse_arr_values($Conexao->select($queryPagamentos, true, null, null), 'all');
    $pagamentos = is_array($pagamentos) ? $pagamentos : array();
} else {
    $id_controle_pagamento = $aux->id_controle_pagamento;
    $queryPagamentos = "SELECT tpv.id_forma_pagamento,if(tpv.id_forma_pagamento = 6,COUNT(*),NULL) n_parcelas, ROUND(SUM(tpv.valor_pagamento),2) AS valor_pagamento,tfp.descricao_forma_pagamento \n\t\t\tFROM tbl_pagamentos_venda AS tpv \n\t\t\tINNER JOIN tbl_forma_pagamento AS tfp ON tpv.id_forma_pagamento = tfp.id\n\t\t\tINNER JOIN tbl_conta_bancaria AS tcb ON tpv.id_conta_bancaria = tcb.id\n\t\t\tWHERE tpv.id_controle_pagamento = {$id_controle_pagamento}\n\t\t\tAND (tcb.id_tipo_conta  <> 5 OR (tcb.id_tipo_conta =5 AND (tpv.flg_caixa_fechado = 0 OR tpv.flg_caixa_fechado IS NULL ) ))\n\t\t\tGROUP BY if(tpv.id_parcelamento IS NULL \n\t\t\tAND tpv.id_forma_pagamento = 6,tpv.id, if(tpv.id_forma_pagamento <> 6,tpv.id, (if(tpv.id_forma_pagamento <> 6,tpv.id,tpv.id_parcelamento))))";
    $produtos = array();
    $vlr_saldo_devedor = $aux->vlr_saldo_devedor;
    $pagamentos = parse_arr_values($Conexao->select($queryPagamentos, true, null, null), 'all');
    $venda = array("venda_confirmada" => null);
}
$id_cliente = $aux->id_cliente;
$cliente = $UsuarioDao->getUsuario($aux->id_empreendimento, $id_cliente);
$estado = array('uf' => '', 'nome' => '');
 public static function getDadosCnf($id_venda, $id_caixa)
 {
     $vendaDao = new VendaDao();
     $venda = $vendaDao->getVenda($id_venda);
     $itemVendaDao = new ItemVendaDao();
     $itensVenda = $itemVendaDao->getItens($id_venda, null, null, null);
     $empreendimentoDao = new EmpreendimentoDao();
     $empreendimento = $empreendimentoDao->getEmpreendimentoById($venda['id_empreendimento']);
     $contaBancariaDao = new ContaBancariaDao();
     $caixa = $contaBancariaDao->getContaBancaria($id_caixa);
     $usuarioDao = new UsuarioDao();
     $saldoDevedor = $usuarioDao->getSaldoDevedor($venda['id_empreendimento'], $venda['id_cliente']);
     $configuracaoDao = new ConfiguracaoDao();
     $config = $configuracaoDao->getConfiguracoes($venda['id_empreendimento']);
     Flight::json(array('venda' => $venda, 'itensVenda' => $itensVenda, 'empreendimento' => $empreendimento, 'printerModel' => $caixa['mod_impressora'], 'saldoDevedor' => $saldoDevedor['vlr_saldo_devedor']));
 }
 public static function deleteEmpreendimento($id)
 {
     $EmpreendimentoDao = new EmpreendimentoDao();
     if (is_numeric($id)) {
         if ($EmpreendimentoDao->deleteEmpreendimento($id)) {
             Flight::halt(200, '');
         } else {
             Flight::halt(500, 'erro ao excluir');
         }
     } else {
         Flight::halt(406, 'parametro recusado');
     }
 }
 public static function cadastrarCliente()
 {
     try {
         $UsuarioDao = new UsuarioDao();
         $ClienteDao = new ClienteDao();
         $ClienteTO = new ClienteTO();
         $PessoaFisicaTO = new PessoaFisicaTO();
         $PessoaFisicaDao = new PessoaFisicaDao();
         $EmpreendimentoDao = new EmpreendimentoDao();
         $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
         $validator = new DataValidator();
         $ClienteTO->__setAll($_POST);
         $tipo_cadastro = "pf";
         $PessoaFisicaTO->rg = isset($_POST["rg"]) ? $_POST["rg"] : NULL;
         $PessoaFisicaTO->cpf = isset($_POST["cpf"]) ? $_POST["cpf"] : NULL;
         $UsuarioEmpreendimentoTO->id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : array();
         $validator->set_msg('O id_empreendimento é obrigatório')->set('nome', $UsuarioEmpreendimentoTO->id_empreendimento)->is_required();
         if (empty($PessoaFisicaTO->cpf)) {
             $validator->set_msg('O nome do cliente é obrigatório')->set('nome', $ClienteTO->nome)->is_required();
         }
         if (empty($ClienteTO->nome)) {
             $validator->set_msg('O cpf do cliente é obrigatório')->set('cpf', $PessoaFisicaTO->cpf)->is_required();
         }
         if (!empty($ClienteTO->email)) {
             $validator->set_msg('E-mail inválido')->set('email', $ClienteTO->email)->is_email();
         }
         if (!$validator->validate()) {
             Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
             return;
         }
         $Conexao = new Conexao();
         $Conexao::getInstance();
         $Conexao->beginTransaction();
         $last_id = $ClienteDao->saveCliente($ClienteTO);
         if ($last_id) {
             $UsuarioEmpreendimentoTO->id_usuario = $last_id;
             $PessoaFisicaTO->usuarios_id = $last_id;
             if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                 $Conexao->rollback();
                 Flight::halt(500, 'Erro ao cadastrar cpf do cliente');
             }
             $UsuarioEmpreendimentoTO->id_usuario = $last_id;
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 $Conexao->rollback();
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
             $dados_usuario = $UsuarioDao->getUsuario($UsuarioEmpreendimentoTO->id_empreendimento, $last_id);
             Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('usuario' => $dados_usuario)))->send();
         } else {
             $Conexao->rollback();
             Flight::halt(500, 'Erro ao cadastrar o cliente');
         }
     } catch (Exception $e) {
         if (isset($Conexao)) {
             $Conexao->rollback();
         }
         jsonException($e);
     }
 }
 public static function requestSaveUsuario()
 {
     try {
         $usuario = $_POST['usuario'];
         $id_empreendimento = $_POST['id_empreendimento'];
         $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao();
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $PrestaShopDao = new PrestaShopDao($_POST['id_empreendimento']);
         $ClienteDao = new ClienteDao();
         $ClienteTO = new ClienteTO();
         $ClienteTO->nome = getKeyArr($usuario, 'firstname');
         $ClienteTO->apelido = getKeyArr($usuario, 'lastname');
         $ClienteTO->dta_nacimento = getKeyArr($usuario, 'birthday');
         $ClienteTO->email = getKeyArr($usuario, 'email');
         $ClienteTO->flg_tipo = 'cliente';
         $last_id = $ClienteDao->saveCliente($ClienteTO);
         if (!$last_id) {
             throw new Exception('Erro ao salvar usuario', 1);
         }
         $EmpreendimentoDao = new EmpreendimentoDao();
         $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         $UsuarioEmpreendimentoTO->id_empreendimento = $id_empreendimento;
         if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
             throw new Exception('erro ao lincar usuario ao empreendimento');
         }
         $AutenticacaoTO = new AutenticacaoTO();
         $AutenticacaoTO->id_usuario = $last_id;
         $AutenticacaoTO->senha = getKeyArr($usuario, 'passwd');
         $AutenticacaoTO->login = getKeyArr($usuario, 'email');
         if (!empty($AutenticacaoTO->senha) && !empty($AutenticacaoTO->login)) {
             if (!$ClienteDao->saveAutenticacao($AutenticacaoTO)) {
                 throw new Exception('Erro ao inserir Autenticacao');
             }
         }
         $PessoaFisicaDao = new PessoaFisicaDao();
         $PessoaFisicaTO = new PessoaFisicaTO();
         $PessoaFisicaTO->usuarios_id = $last_id;
         $PessoaFisicaTO->rg = NULL;
         $PessoaFisicaTO->cpf = NULL;
         if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
             throw new Exception('Erro ao cadastrar tipo da pessoa (pf,pj)');
         }
         $ConfiguracaoDao = new ConfiguracaoDao();
         $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
         if (isset($config['prestashop_id_perfil_padrao']) && !empty($config['prestashop_id_perfil_padrao'])) {
             $UsuarioPerfilEmpreendimentoDao = new UsuarioPerfilEmpreendimentoDao();
             $UsuarioPerfilEmpreendimentoTO = new UsuarioPerfilEmpreendimentoTO();
             $UsuarioPerfilEmpreendimentoTO->id_empreendimento = $id_empreendimento;
             $UsuarioPerfilEmpreendimentoTO->id_perfil = $config['prestashop_id_perfil_padrao'];
             $UsuarioPerfilEmpreendimentoTO->id_usuario = $last_id;
             $UsuarioPerfilEmpreendimentoDao->saveUsuarioPerfilEmpreendimento($UsuarioPerfilEmpreendimentoTO);
         }
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop';
         $ReferenciaIntegracaoTO->tabela = 'tbl_usuarios';
         $ReferenciaIntegracaoTO->id_item = $last_id;
         $ReferenciaIntegracaoTO->id_item_referencia = $usuario['id'];
         $ReferenciaIntegracaoTO->tipo = 'usuario';
         $ReferenciaIntegracaoTO->id_empreendimento = $id_empreendimento;
         if (!$ReferenciaIntegracaoDao->save($ReferenciaIntegracaoTO)) {
             throw new Exception('Erro ao criar referencia no sistema', 1);
         }
     } catch (Exception $e) {
         $log = new KLogger("logs/logErrorPrestaShop.txt", KLogger::DEBUG);
         $log->LogError($e->getMessage() . '- file:' . $e->getFile() . ' - line:' . $e->getLine());
         $log->LogDebug(json_encode($_POST));
         $log->LogJunp();
         Flight::halt(500, $e->getMessage());
     }
 }
 public static function updateCliente()
 {
     $ClienteTO = new stdClass();
     $ClienteDao = new ClienteDao();
     $PessoaJuridicaDao = new PessoaJuridicaDao();
     $PessoaFisicaTO = new PessoaFisicaTO();
     $PessoaJuridicaTO = new PessoaJuridicaTO();
     $validator = new DataValidator();
     $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $where = $_POST['where'];
     foreach ($_POST['campos'] as $key => $value) {
         if ($key != 'cpf' && $key != 'rg') {
             $ClienteTO->{$key} = $value;
         }
     }
     $PessoaFisicaTO->rg = isset($_POST['campos']["rg"]) ? $_POST['campos']["rg"] : "";
     $PessoaFisicaTO->cpf = isset($_POST['campos']["cpf"]) ? $_POST['campos']["cpf"] : "";
     $PessoaFisicaDao = new PessoaFisicaDao();
     $PessoaFisicaTO->usuarios_id = $ClienteTO->id;
     if (!$PessoaFisicaDao->updatePessoaFisica($PessoaFisicaTO)) {
         Flight::halt(500, 'Erro ao atualizar o cliente');
     }
     $validator->set_msg('Campo obrigatório')->set('nome', $ClienteTO->nome)->is_required();
     if (!empty($ClienteTO->email)) {
         $validator->set_msg('Email inválido')->set('email', $ClienteTO->email)->is_email();
     }
     $validator->set_msg('Campo obrigatório')->set('celular', $ClienteTO->celular)->is_required();
     $validator->set_msg('Campo obrigatório')->set('tel_fixo', $ClienteTO->tel_fixo)->is_required();
     if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) {
         $validator->_errors['empreendimentos'][] = 'É obrigatório informar pelo menos um empreendimento';
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     $result = $ClienteDao->ClienteUpdate($ClienteTO, $where);
     $EmpreendimentoDao = new EmpreendimentoDao();
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     $UsuarioEmpreendimentoTO->id_usuario = $ClienteTO->id;
     $EmpreendimentoDao->delAllUsuarioEmp($UsuarioEmpreendimentoTO);
     if ($result) {
         $UsuarioEmpreendimentoTO->id_usuario = $ClienteTO->id;
         foreach ($empreendimentos as $key => $value) {
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
         }
         Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('id' => $ClienteTO->id)))->send();
     } else {
         Flight::halt(500, 'Erro ao atualizar o cliente');
     }
 }
 public static function cadastroRapidoClientePedido()
 {
     $ClienteTO = new ClienteTO();
     $PessoaFisicaTO = new PessoaFisicaTO();
     $PessoaJuridicaTO = new PessoaJuridicaTO();
     $ClienteDao = new ClienteDao();
     $AutenticacaoTO = new AutenticacaoTO();
     $validator = new DataValidator();
     $ClienteTO->nome = isset($_POST["nome"]) ? $_POST["nome"] : "";
     $ClienteTO->status = isset($_POST["status"]) ? $_POST["status"] : "1";
     $ClienteTO->id_perfil = 6;
     $ClienteTO->id_empreendimento = isset($_POST["id_empreendimento"]) ? $_POST["id_empreendimento"] : NULL;
     $ClienteTO->email = isset($_POST["email"]) ? $_POST["email"] : "";
     $ClienteTO->tel_fixo = isset($_POST["tel_fixo"]) ? $_POST["tel_fixo"] : NULL;
     $ClienteTO->celular = isset($_POST["celular"]) ? $_POST["celular"] : NULL;
     $ClienteTO->indicacao = isset($_POST["indicacao"]) ? $_POST["indicacao"] : NULL;
     $ClienteTO->id_como_encontrou = isset($_POST["id_como_encontrou"]) ? $_POST["id_como_encontrou"] : NULL;
     $ClienteTO->id = isset($_POST["id"]) ? $_POST["id"] : NULL;
     $tipo_cadastro = "pf";
     $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $acao_cliente = isset($_POST['acao_cliente']) ? $_POST['acao_cliente'] : 'insert';
     if ($acao_cliente == 'update') {
         $validator->set_msg('O ID do cliente é obrigatório')->set('id', $ClienteTO->id)->is_required();
     }
     $validator->set_msg('O nome do cliente é obrigatório')->set('nome', $ClienteTO->nome)->is_required();
     $validator->set_msg('informe o status do cliente')->set('status', $ClienteTO->status)->is_num();
     $validator->set_msg('E-mail inválido')->set('email', $ClienteTO->email)->is_email();
     $validator->set_msg('O número do Tel. Fixo é obrigatório')->set('tel_fixo', $ClienteTO->tel_fixo)->is_num();
     $validator->set_msg('O codigo do empreendimento é obrigatório')->set('id_empreendimento', $ClienteTO->id_empreendimento)->is_required();
     $validator->set_msg('O perfil é obrigatório')->set('id_perfil', $ClienteTO->id_perfil)->is_required();
     if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) {
         $validator->_errors['empreendimentos'][] = 'É obrigatório informar pelo menos um empreendimento';
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     if ($acao_cliente == 'insert') {
         $last_id = $ClienteDao->saveCliente($ClienteTO);
     }
     if ($acao_cliente == 'update') {
         $last_id = $ClienteDao->updateCliente($ClienteTO);
     }
     $EmpreendimentoDao = new EmpreendimentoDao();
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     if ($last_id && $acao_cliente == "insert") {
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         $EmpreendimentoDao->delAllUsuarioEmp($UsuarioEmpreendimentoTO);
         if ($tipo_cadastro == "pf") {
             $PessoaFisicaDao = new PessoaFisicaDao();
             $PessoaFisicaTO->usuarios_id = $last_id;
             if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                 Flight::halt(500, 'Erro ao cadastrar o cliente PF');
             }
         } else {
             if ($tipo_cadastro == "pj") {
                 $PessoaJuridicaDao = new PessoaJuridicaDao();
                 $PessoaJuridicaTO->usuarios_id = $last_id;
                 if (!$PessoaJuridicaDao->savePessoaJuridica($PessoaJuridicaTO)) {
                     Flight::halt(500, 'Erro ao cadastrar o cliente PJ');
                 }
             }
         }
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         foreach ($empreendimentos as $key => $value) {
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
         }
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_cliente' => $last_id)))->send();
     } else {
         if ($last_id == false) {
             Flight::halt(500, 'Erro ao cadastrar o cliente');
         } else {
             Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('id_cliente' => $ClienteTO->id)))->send();
         }
     }
 }
 public static function save($isIndividual)
 {
     $ConfiguracaoDao = new ConfiguracaoDao();
     if ($isIndividual === "true") {
         if ($ConfiguracaoDao->existsKey($_POST['nome'], $_POST['id_empreendimento'])) {
             if (!$ConfiguracaoDao->updateKey($_POST['nome'], $_POST['valor'], $_POST['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao atualizar chave de configuração');
             }
         } else {
             if (!$ConfiguracaoDao->saveKey($_POST['nome'], $_POST['valor'], $_POST['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao cadastrar chave de configuração');
             }
         }
     } else {
         $chaves = isset($_POST['chaves']) ? $_POST['chaves'] : null;
         if ($chaves == null) {
             Flight::halt(406);
         }
         $id_empreendimento = $chaves[0]['id_empreendimento'];
         foreach ($chaves as $key => $value) {
             $nome = isset($value['nome']) ? $value['nome'] : NULL;
             $valor = isset($value['valor']) ? $value['valor'] : NULL;
             $id_empreendimento = isset($value['id_empreendimento']) ? $value['id_empreendimento'] : NULL;
             if ($nome === "id_plano_caixa") {
                 $cfg = $ConfiguracaoDao->getConfiguracoes($id_empreendimento, "id_plano_caixa");
                 if ($cfg && $cfg != null) {
                     $pgtoClienteDao = new PagamentoClienteDao();
                     $pgtoClienteDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_caixa'], $valor);
                     $pgtoFornecedorDao = new PagamentoFornecedorDao();
                     $pgtoFornecedorDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_caixa'], $valor);
                 }
             }
             if ($nome === "id_plano_fechamento_caixa") {
                 $cfg = $ConfiguracaoDao->getConfiguracoes($id_empreendimento, "id_plano_fechamento_caixa");
                 if ($cfg && $cfg != null) {
                     $pgtoClienteDao = new PagamentoClienteDao();
                     $pgtoClienteDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_fechamento_caixa'], $valor);
                     $pgtoFornecedorDao = new PagamentoFornecedorDao();
                     $pgtoFornecedorDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_fechamento_caixa'], $valor);
                 }
             }
             if ($ConfiguracaoDao->existsKey($nome, $value['id_empreendimento'])) {
                 if (!$ConfiguracaoDao->updateKey($nome, $valor, $id_empreendimento)) {
                     Flight::halt(500, 'erro ao atualizar chave de configuração');
                 }
             } else {
                 if (!$ConfiguracaoDao->saveKey($nome, $valor, $id_empreendimento)) {
                     Flight::halt(500, 'erro ao cadastrar chave de configuração');
                 }
             }
         }
         if (!$ConfiguracaoDao->existsKey('id_fornecedor_movimentacao_caixa', $value['id_empreendimento'])) {
             $FornecedorTO = new FornecedorTO();
             $FornecedorDao = new FornecedorDao();
             $FornecedorTO->nome_fornecedor = 'fornecedor de movimentação de caixa';
             $FornecedorTO->id_empreendimento = $value['id_empreendimento'];
             $id_fornecedor = $FornecedorDao->saveFornecedor($FornecedorTO);
             if ($id_fornecedor) {
                 if (!$ConfiguracaoDao->saveKey('id_fornecedor_movimentacao_caixa', $id_fornecedor, $value['id_empreendimento'])) {
                     Flight::halt(500, 'erro ao cadastrar chave de movimentação');
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir Fornecedor de movimentação');
             }
         }
         if (!$ConfiguracaoDao->existsKey('id_cliente_movimentacao_caixa', $value['id_empreendimento'])) {
             $ClienteTO = new ClienteTO();
             $ClienteDao = new ClienteDao();
             $ClienteTO->nome = 'cliente de movimentação de caixa';
             $id_cliente = $ClienteDao->saveCliente($ClienteTO);
             if (!$id_cliente) {
                 Flight::halt(500, 'erro ao inserir cliente de movimentação');
             }
             $EmpreendimentoDao = new EmpreendimentoDao();
             $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
             $UsuarioEmpreendimentoTO->id_usuario = $id_cliente;
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id_empreendimento'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
             if (!$ConfiguracaoDao->saveKey('id_cliente_movimentacao_caixa', $id_cliente, $value['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao cadastrar chave de movimentação');
             }
         }
     }
     Flight::halt(201);
 }
 public static function calculaNfe()
 {
     $id_empreendimento = $_POST['id_empreendimento'];
     $id_venda = $_POST['id_venda'];
     $cod_operacao = $_POST['cod_operacao'];
     $VendaDao = new VendaDao();
     $UsuarioDao = new UsuarioDao();
     $ItemVendaDao = new ItemVendaDao();
     $EmpreendimentoDao = new EmpreendimentoDao();
     $OperacaoDao = new OperacaoDao();
     $ProdutoDao = new ProdutoDao();
     $EstadoDao = new EstadoDao();
     $CidadeDao = new CidadeDao();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $SerieDocumentoFiscalDao = new SerieDocumentoFiscalDao();
     /**
      * Carregando dados da venda
      **/
     $venda = $VendaDao->getVenda($id_venda);
     $venda['itens'] = $ItemVendaDao->getItens($id_venda);
     $venda['cliente'] = $UsuarioDao->getUsuario($id_empreendimento, $venda['id_cliente']);
     if (isset($venda['cliente']['id_cidade']) && !empty($venda['cliente']['id_cidade'])) {
         $cidadeDestinatario = $CidadeDao->getCidade($venda['cliente']['id_cidade']);
         $estadoDestinatario = $EstadoDao->getEstado($venda['cliente']['id_estado']);
     } else {
         Flight::halt(406, json_encode(array('mensagem' => 'Estado/Cidade não informado no cadastro do cliente!')));
     }
     $venda['empreendimento'] = $EmpreendimentoDao->getEmpreendimentoByIdAndUF($id_empreendimento, $estadoDestinatario['uf']);
     $cidadeEmitente = $CidadeDao->getCidade($venda['empreendimento']['cod_cidade']);
     $estadoEmitente = $EstadoDao->getEstado($venda['empreendimento']['cod_estado']);
     $venda['operacao'] = $OperacaoDao->getOperacao($cod_operacao);
     $configuracoes = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     if (!isset($configuracoes['id_serie_padrao_nfe'])) {
         $erros = array("mensagem" => "Configuração \"Modelo Documento/Série Padrão p/ NF-e\" não encontrada");
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($erros))->send();
     }
     $SerieDocumentoFiscal = $SerieDocumentoFiscalDao->getByID($configuracoes['id_serie_padrao_nfe']);
     $dados_emissao = new stdClass();
     $dados_emissao->dsc_operacao = $venda['operacao']['dsc_operacao'];
     $dados_emissao->serie_documento_fiscal = $SerieDocumentoFiscal['serie_documento_fiscal'];
     $dados_emissao->num_documento_fiscal = $SerieDocumentoFiscal['num_ultimo_documento_fiscal']++;
     $dados_emissao->cod_venda = $id_venda;
     $dados_emissao->cod_empreendimento = $id_empreendimento;
     $dados_emissao->nme_modelo_documento = $SerieDocumentoFiscal['dsc_modelo_documento_fiscal'];
     /**
      * Configurando os dados do emitente
      **/
     $emitente = new MotorFiscal\Emitente();
     $emitente->identificador = $venda['empreendimento']['id'];
     $emitente->CNPJ = $venda['empreendimento']['num_cnpj'];
     $emitente->xNome = $venda['empreendimento']['nme_razao_social'];
     $emitente->xFant = $venda['empreendimento']['nme_fantasia'];
     $emitente->IE = $venda['empreendimento']['num_inscricao_estadual'];
     $emitente->IEST = $venda['empreendimento']['num_inscricao_estadual_st'];
     $emitente->CRT = $venda['empreendimento']['num_regime_tributario'];
     $emitente->PercCreditoSimples = $venda['empreendimento']['num_percentual_credito_simples'];
     $emitente->CEP = $venda['empreendimento']['num_cep'];
     $emitente->xLgr = $venda['empreendimento']['nme_logradouro'];
     $emitente->nro = $venda['empreendimento']['num_logradouro'];
     $emitente->xBairro = $venda['empreendimento']['nme_bairro_logradouro'];
     $emitente->cMun = $cidadeEmitente['nome'];
     $emitente->UF = $estadoEmitente['uf'];
     $emitente->id_cidade = $cidadeEmitente['id'];
     $emitente->id_estado = $estadoEmitente['id'];
     $emitente->ContribuinteIPI = $venda['empreendimento']['flg_contribuinte_ipi'];
     $emitente->num_versao_ibpt = $configuracoes['num_versao_ibpt'];
     /**
      * Configurando os dados do destinatário
      **/
     $destinatario = new MotorFiscal\Destinatario();
     $destinatario->identificador = $venda['cliente']['id'];
     $destinatario->CPF = $venda['cliente']['cpf'];
     $destinatario->idEstrangeiro = $venda['cliente']['num_registro_estrangeiro'];
     $destinatario->xNome = $venda['cliente']['nome'];
     $destinatario->email = $venda['cliente']['email'];
     $destinatario->tipo_cadastro = $venda['cliente']['tipo_cadastro'];
     $destinatario->CEP = $venda['cliente']['cep'];
     $destinatario->xLgr = $venda['cliente']['endereco'];
     $destinatario->nro = $venda['cliente']['numero'];
     $destinatario->xBairro = $venda['cliente']['bairro'];
     $destinatario->cMun = $cidadeDestinatario['nome'];
     $destinatario->UF = $estadoDestinatario['uf'];
     $destinatario->id_cidade = $cidadeDestinatario['id'];
     $destinatario->id_estado = $estadoDestinatario['id'];
     if ($venda['cliente']['tipo_cadastro'] === "pj") {
         $destinatario->CNPJ = $venda['cliente']['cnpj'];
         $destinatario->IE = $venda['cliente']['inscricao_estadual'];
         $destinatario->IEST = $venda['cliente']['inscricao_estadual_st'];
         $destinatario->IM = $venda['cliente']['num_inscricao_municipal'];
         $destinatario->xFant = $venda['cliente']['nome_fantasia'];
         if ((int) $venda['cliente']['flg_contribuinte_icms'] === 1) {
             // Se for contribuinte de ICMS
             if ((int) $venda['cliente']['flg_isento_inscricao_estadual'] === 1) {
                 // Se for contribuinte de ICMS ISENTO de incrição
                 $destinatario->indIEDest = 2;
             } else {
                 $destinatario->indIEDest = 1;
             }
             //É contribuinte mas não é ISENTO.
         } else {
             $destinatario->indIEDest = 9;
         }
         // Se não não é contribuinte do ICMS então ele é igual a nove.
     }
     /**
      * Configurando os dados da operação
      **/
     $operacao = new stdClass();
     $operacao->identificador = $venda['operacao']['cod_operacao'];
     $operacao->CFOPMercadoria = $venda['operacao']['num_cfop_mercadoria'];
     $operacao->CFOPMercadoriaST = $venda['operacao']['num_cfop_mercadoria_st'];
     $operacao->CFOPMercadoriaSTSubstituido = $venda['operacao']['num_cfop_mercadoria_st_subst'];
     $operacao->CFOPProduto = $venda['operacao']['num_cfop_produto'];
     $operacao->CFOPProdutoST = $venda['operacao']['num_cfop_produto_st'];
     $operacao->TipoOperacao = 0;
     $operacao->identificacao = 0;
     $operacao->finalidade = 0;
     $operacao->indFinal = 0;
     $operacao->indPres = 0;
     $operacao->NaturezaOperacao = '';
     /**
      * Configurando os parâmetros da NF-e
      **/
     self::$NF = new MotorFiscal\DocumentoFiscal($emitente, $destinatario, $operacao);
     self::$NF->buscaTribFunctionICMS = function ($produto, $operacao, $emitente, $destinatario) {
         return Trib::ICMS($produto, $operacao, $emitente, $destinatario);
     };
     self::$NF->buscaTribFunctionIPI = function ($produto, $operacao, $emitente, $destinatario) {
         return Trib::IPI($produto, $operacao, $emitente, $destinatario);
     };
     self::$NF->buscaTribFunctionPIS = function ($produto, $operacao, $emitente, $destinatario) {
         return Trib::PIS($produto, $operacao, $emitente, $destinatario);
     };
     self::$NF->buscaTribFunctionCOFINS = function ($produto, $operacao, $emitente, $destinatario) {
         return Trib::COFINS($produto, $operacao, $emitente, $destinatario);
     };
     self::$NF->buscaTribFunctionIBPT = function ($produto, $emitente, $detinatario) {
         return Trib::IBPT($produto, $emitente, $detinatario);
     };
     self::$NF->itens = array();
     // Configurando produtos e calculando impostos
     foreach ($venda['itens'] as $key => $item) {
         $item['data'] = $ProdutoDao->getProduto($item['id_produto'], $id_empreendimento);
         $produto = new MotorFiscal\Produto();
         $produto->identificador = $item['data']['id_produto'];
         $produto->cProd = $item['data']['id'];
         $produto->cEAN = $item['data']['codigo_barra'];
         $produto->xProd = $item['data']['nome'];
         $produto->NCM = $item['data']['cod_ncm'];
         $produto->EXTIPI = $item['data']['ex_tipi'];
         $produto->CEST = $item['data']['num_cest'];
         $produto->uCom = $item['data']['dsc_unidade_medida'];
         $produto->qCom = $item['qtd'];
         $produto->vUnCom = $item['vlr_produto'];
         $produto->cEANTrib = $item['data']['codigo_barra'];
         $produto->uTrib = $item['data']['dsc_unidade_medida'];
         $produto->qTrib = $item['qtd'];
         $produto->vUnTrib = $item['vlr_produto'];
         $produto->TipoTributacaoIPI = $item['data']['TipoTributacaoIPI'];
         $produto->FormaAquisicao = $item['data']['FormaAquisicao'];
         $produto->vProd = $item['qtd'] * $item['vlr_produto'];
         $produto->vDesc = $item['qtd'] * $item['valor_desconto_real'];
         // TODO: Dúvidas para sanar com Fischer
         $produto->NVE = 0;
         // Como preencher?
         $produto->CFOP = 0;
         // Como preencher?
         $produto->indTot = 1;
         // Como preencher?
         $produto->vFrete = 0;
         // Como preencher?
         $produto->vOutro = 0;
         // Como preencher?
         $produto->vSeg = 0;
         // Como preencher?
         $item = self::$NF->addItem($produto);
         $venda['itens'][$key] = $item;
     }
     // Consolidando e totalizando
     self::$NF->totalizarDocumento();
     $dadosNf = array('informacoes_adicionais_contribuinte' => $_POST['informacoes_adicionais_contribuinte'], 'dados_emissao' => $dados_emissao, 'emitente' => $emitente, 'destinatario' => $destinatario, 'itens' => self::$NF->itens, 'ICMSTot' => self::$NF->ICMSTot);
     Flight::json($dadosNf);
 }
 public static function getTransferencia($id_transferencia)
 {
     $TransferenciaEstoqueDao = new TransferenciaEstoqueDao();
     $ItemTransferenciaEstoqueDao = new ItemTransferenciaEstoqueDao();
     $EmpreendimentoDao = new EmpreendimentoDao();
     $transferencia = $TransferenciaEstoqueDao->getTransferencias(null, null, array('tte.id' => $id_transferencia));
     if ($transferencia) {
         $transferencia = $transferencia[0];
         $transferencia['itens'] = $ItemTransferenciaEstoqueDao->getItensTransferencia(null, null, array('tte.id' => $id_transferencia));
         $transferencia['empreendimento_transferencia'] = $EmpreendimentoDao->getEmpreendimentoById($transferencia['id_empreendimento_transferencia']);
         $transferencia['empreendimento_pedido'] = $EmpreendimentoDao->getEmpreendimentoById($transferencia['id_empreendimento_pedido']);
         Flight::json($transferencia);
     } else {
         Flight::halt(404, 'Não há resultado para a busca');
     }
 }