public static function gravarMovimentacoes()
 {
     $MovimentacaoCaixaTO = new MovimentacaoCaixaTO();
     $MovimentacaoCaixaDao = new MovimentacaoCaixaDao();
     $PagamentoClienteTO = new PagamentoClienteTO();
     $PagamentoClienteDao = new PagamentoClienteDao();
     $ControlePagamentoVendaTO = new ControlePagamentoVendaTO();
     $ControlePagamentoVendaDao = new ControlePagamentoVendaDao();
     $MaquinetaDao = new MaquinetaDao();
     $pagamentos = $_POST['pagamentos'];
     $id_venda = isset($_POST['id_venda']) ? $_POST['id_venda'] : NULL;
     $id_venda = empty($_POST['id_venda']) ? NULL : $id_venda;
     $id_cliente = $_POST['id_cliente'];
     $id_empreendimento = $_POST['id_empreendimento'];
     $flg_comanda = isset($_POST['id_mesa']) && is_numeric($_POST['id_mesa']) ? 1 : 0;
     $Dao = new Dao();
     $Dao->setTimeZone($id_empreendimento);
     $dta_entrada = date('Y-m-d H:i:s');
     $id_controle_pagamento = $ControlePagamentoVendaDao->saveControlePagamento($dta_entrada);
     if (!$id_controle_pagamento) {
         Flight::halt(500, 'erro ao inserir pagamento ao cliente');
     }
     foreach ($pagamentos as $key => $value) {
         $parcela = null;
         if ($value['id_tipo_movimentacao'] != 5 && $value['id_forma_pagamento'] != 6) {
             $PagamentoClienteTO->id_cliente = isset($value['id_cliente']) ? $value['id_cliente'] : "";
             $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
             $PagamentoClienteTO->id_forma_pagamento = isset($value['id_forma_pagamento']) ? $value['id_forma_pagamento'] : "";
             $PagamentoClienteTO->valor_pagamento = isset($value['valor']) ? $value['valor_pagamento'] : "";
             if ($value['id_forma_pagamento'] == 2) {
                 $PagamentoClienteTO->status_pagamento = 0;
             } else {
                 if ($value['id_forma_pagamento'] == 4) {
                     $PagamentoClienteTO->status_pagamento = isset($value['status_pagamento']) ? $value['status_pagamento'] : 0;
                     $PagamentoClienteTO->doc_boleto = isset($value['doc_boleto']) ? $value['doc_boleto'] : NULL;
                     $PagamentoClienteTO->num_boleto = isset($value['num_boleto']) ? $value['num_boleto'] : NULL;
                 } else {
                     $PagamentoClienteTO->status_pagamento = isset($value['status_pagamento']) && ((int) $value['status_pagamento'] == 1 || (int) $value['status_pagamento'] == 0) ? (int) $value['status_pagamento'] : 1;
                 }
             }
             $PagamentoClienteTO->data_pagamento = isset($value['data_pagamento']) ? $value['data_pagamento'] : "";
             $PagamentoClienteTO->id_empreendimento = isset($value['id_empreendimento']) ? $value['id_empreendimento'] : "";
             $PagamentoClienteTO->id_plano_conta = isset($value['id_plano_conta']) ? $value['id_plano_conta'] : "";
             $PagamentoClienteTO->id_conta_bancaria = isset($value['id_conta_bancaria']) ? $value['id_conta_bancaria'] : NULL;
             $PagamentoClienteTO->flg_caixa_fechado = 0;
             $PagamentoClienteTO->id_banco = isset($value['id_banco']) ? $value['id_banco'] : NULL;
             $PagamentoClienteTO->num_conta_corrente = isset($value['num_conta_corrente']) ? $value['num_conta_corrente'] : NULL;
             $PagamentoClienteTO->num_cheque = isset($value['num_cheque']) ? $value['num_cheque'] : NULL;
             $PagamentoClienteTO->flg_cheque_predatado = isset($value['flg_cheque_predatado']) ? $value['flg_cheque_predatado'] : NULL;
             $PagamentoClienteTO->id_vale_troca = (int) $value['id_forma_pagamento'] == 7 ? $value['id_vale_troca'] : NULL;
             $PagamentoClienteTO->agencia_transferencia = isset($value['agencia_transferencia']) ? $value['agencia_transferencia'] : NULL;
             $PagamentoClienteTO->conta_transferencia = isset($value['conta_transferencia']) ? $value['conta_transferencia'] : NULL;
             $PagamentoClienteTO->proprietario_conta_transferencia = isset($value['proprietario_conta_transferencia']) ? $value['proprietario_conta_transferencia'] : NULL;
             $PagamentoClienteTO->id_conta_transferencia_destino = isset($value['id_conta_transferencia_destino']) ? $value['id_conta_transferencia_destino'] : NULL;
             $PagamentoClienteTO->id_venda = isset($value['id_venda']) ? $value['id_venda'] : NULL;
             $PagamentoClienteTO->id_item_venda = isset($value['id_item_venda']) ? $value['id_item_venda'] : NULL;
             if ($value['id_forma_pagamento'] == 5) {
                 $maquineta = $MaquinetaDao->getMaquineta($value['id_maquineta']);
                 $txa_maquineta = $maquineta['per_margem_debito'];
                 $PagamentoClienteTO->id_maquineta = isset($value['id_maquineta']) ? $value['id_maquineta'] : NULL;
                 $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
             } else {
                 $PagamentoClienteTO->id_maquineta = NULL;
                 $PagamentoClienteTO->taxa_maquineta = NULL;
             }
             $PagamentoClienteTO->id_cliente = is_numeric($PagamentoClienteTO->id_cliente) ? $PagamentoClienteTO->id_cliente : $value['id_cliente_lancamento'];
             $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
             if (!$id_lancamento_entrada) {
                 Flight::halt(500, 'erro ao inserir pagamento ao cliente');
             }
         } else {
             if ($value['id_tipo_movimentacao'] != 5) {
                 $repeat_parcelas = 0;
                 $id_parcelamento = false;
                 $arr_parcelas = $value['parcelas'];
                 $n_parcelas = count($arr_parcelas);
                 foreach ($arr_parcelas as $key_par => $parcela) {
                     $maquineta = $MaquinetaDao->getMaquineta($parcela['id_maquineta']);
                     $txa_maquineta = $MaquinetaDao->getTaxaMaquineta($parcela['id_maquineta'], $n_parcelas);
                     $PagamentoClienteTO->id_cliente = isset($parcela['id_cliente']) ? $parcela['id_cliente'] : "";
                     $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
                     $PagamentoClienteTO->id_forma_pagamento = isset($parcela['id_forma_pagamento']) ? $parcela['id_forma_pagamento'] : "";
                     $PagamentoClienteTO->valor_pagamento = isset($parcela['valor_pagamento']) ? $parcela['valor_pagamento'] : "";
                     $PagamentoClienteTO->status_pagamento = 0;
                     $PagamentoClienteTO->data_pagamento = isset($parcela['data_pagamento']) ? $parcela['data_pagamento'] : "";
                     $PagamentoClienteTO->obs_pagamento = isset($parcela['obs_pagamento']) ? $parcela['obs_pagamento'] : "";
                     $PagamentoClienteTO->id_empreendimento = isset($parcela['id_empreendimento']) ? $parcela['id_empreendimento'] : "";
                     $PagamentoClienteTO->id_banco = isset($parcela['id_banco']) ? $parcela['id_banco'] : "";
                     $PagamentoClienteTO->num_conta_corrente = isset($parcela['num_conta_corrente']) ? $parcela['num_conta_corrente'] : "";
                     $PagamentoClienteTO->num_cheque = isset($parcela['num_cheque']) ? $parcela['num_cheque'] : "";
                     $PagamentoClienteTO->flg_cheque_predatado = isset($parcela['flg_cheque_predatado']) ? $parcela['flg_cheque_predatado'] : "";
                     $PagamentoClienteTO->id_plano_conta = isset($parcela['id_plano_conta']) ? $parcela['id_plano_conta'] : "";
                     $PagamentoClienteTO->id_conta_bancaria = isset($parcela['id_conta_bancaria']) ? $parcela['id_conta_bancaria'] : "";
                     $PagamentoClienteTO->id_maquineta = isset($parcela['id_maquineta']) ? $parcela['id_maquineta'] : NULL;
                     $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
                     $PagamentoClienteTO->id_venda = isset($parcela['id_venda']) ? $parcela['id_venda'] : NULL;
                     $PagamentoClienteTO->id_item_venda = isset($parcela['id_item_venda']) ? $parcela['id_item_venda'] : NULL;
                     $PagamentoClienteTO->id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : NULL;
                     $PagamentoClienteTO->id_cliente = is_numeric($PagamentoClienteTO->id_cliente) ? $PagamentoClienteTO->id_cliente : $parcela['id_cliente_lancamento'];
                     $PagamentoClienteTO->flg_caixa_fechado = 0;
                     if ($PagamentoClienteTO->id_forma_pagamento != 2) {
                         $PagamentoClienteTO->id_banco = NULL;
                         $PagamentoClienteTO->num_conta_corrente = NULL;
                         $PagamentoClienteTO->num_cheque = NULL;
                         $PagamentoClienteTO->flg_cheque_predatado = NULL;
                     }
                     $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
                     if (!$id_lancamento_entrada) {
                         Flight::halt(500, 'erro ao inserir pagamento ao cliente');
                     }
                     $MovimentacaoCaixaTO->id_abertura_caixa = isset($parcela['id_abertura_caixa']) ? $parcela['id_abertura_caixa'] : NULL;
                     $MovimentacaoCaixaTO->id_plano_conta = isset($parcela['id_plano_conta']) ? $parcela['id_plano_conta'] : NULL;
                     $MovimentacaoCaixaTO->id_tipo_movimentacao = isset($parcela['id_tipo_movimentacao']) ? $parcela['id_tipo_movimentacao'] : NULL;
                     $MovimentacaoCaixaTO->dsc_movimentacao = $id_venda == NULL ? 'Pagamento' : 'Venda';
                     $MovimentacaoCaixaTO->id_maquineta = isset($parcela['id_maquineta']) ? $parcela['id_maquineta'] : NULL;
                     $MovimentacaoCaixaTO->id_venda = $id_venda;
                     $MovimentacaoCaixaTO->id_lancamento_entrada = $id_lancamento_entrada;
                     $valor_pagamento = isset($parcela['valor']) ? $parcela['valor'] : NULL;
                     $MovimentacaoCaixaTO->para_receber = $parcela['id_tipo_movimentacao'] == 5 ? $parcela['valor'] : NULL;
                     $MovimentacaoCaixaTO->dta_movimentacao = $dta_entrada;
                     $MovimentacaoCaixaTO->id_item_venda = isset($parcela['id_item_venda']) ? $parcela['id_item_venda'] : NULL;
                     if (!$MovimentacaoCaixaDao->saveMovimentacao($MovimentacaoCaixaTO)) {
                         Flight::halt(500, 'erro ao inserir movimentacao');
                     }
                     $id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : $id_lancamento_entrada;
                 }
                 $id_lancamento_entrada = $id_parcelamento;
             }
         }
         if ($parcela == null) {
             $MovimentacaoCaixaTO->id_abertura_caixa = isset($value['id_abertura_caixa']) ? $value['id_abertura_caixa'] : NULL;
             $MovimentacaoCaixaTO->id_plano_conta = isset($value['id_plano_conta']) ? $value['id_plano_conta'] : NULL;
             $MovimentacaoCaixaTO->id_tipo_movimentacao = isset($value['id_tipo_movimentacao']) ? $value['id_tipo_movimentacao'] : NULL;
             $MovimentacaoCaixaTO->dsc_movimentacao = $id_venda == NULL ? 'Pagamento' : 'Venda';
             $MovimentacaoCaixaTO->id_maquineta = isset($value['id_maquineta']) ? $value['id_maquineta'] : NULL;
             $MovimentacaoCaixaTO->id_venda = $id_venda;
             $MovimentacaoCaixaTO->id_lancamento_entrada = $value['id_tipo_movimentacao'] != 5 ? $id_lancamento_entrada : NULL;
             $valor_pagamento = isset($value['valor']) ? $value['valor'] : NULL;
             $MovimentacaoCaixaTO->para_receber = $value['id_tipo_movimentacao'] == 5 ? $value['valor'] : NULL;
             $MovimentacaoCaixaTO->dta_movimentacao = $dta_entrada;
             $MovimentacaoCaixaTO->id_item_venda = isset($value['id_item_venda']) ? $value['id_item_venda'] : NULL;
             if (!$MovimentacaoCaixaDao->saveMovimentacao($MovimentacaoCaixaTO)) {
                 Flight::halt(500, 'erro ao inserir movimentacao');
             }
         }
     }
     $UsuarioDao = new UsuarioDao();
     if (is_numeric($id_cliente)) {
         $vlr_saldo_devedor = $UsuarioDao->getSaldoDevedor($id_empreendimento, $id_cliente);
         $vlr_saldo_devedor = $vlr_saldo_devedor["vlr_saldo_devedor"];
     } else {
         $vlr_saldo_devedor = 0;
     }
     $MesaDao = new MesaDao();
     $mesa = null;
     if ((int) $flg_comanda == 1) {
         $mesa = $MesaDao->getResumoMesa($_POST['id_mesa']);
     }
     Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('vlr_saldo_devedor' => $vlr_saldo_devedor, 'id_controle_pagamento' => $id_controle_pagamento, 'mesa' => $mesa)))->send();
 }
 public function fechamentoCaixa($id_abertura_caixa, $id_conta_bancaria, $dta_fechamento)
 {
     $sql = "SELECT pg_venda.*,tcpv.dta_pagamento AS dta_entrada, mov_caixa.id AS id_mov, mov_caixa.id_venda FROM `tbl_movimentacao_caixa` AS mov_caixa\n\t\t\t\tINNER JOIN tbl_pagamentos_venda AS pg_venda ON mov_caixa.id_lancamento_entrada = pg_venda.id\n\t\t\t\tINNER JOIN tbl_controle_pagamento_venda AS tcpv ON pg_venda.id_controle_pagamento = tcpv.id\n\t\t\t\tWHERE mov_caixa.id_tipo_movimentacao != 2 AND mov_caixa.id_abertura_caixa = {$id_abertura_caixa}";
     $select = $this->conn->prepare($sql);
     $select->execute();
     $AberturaCaixaDao = new AberturaCaixaDao();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $caixa = $AberturaCaixaDao->caixaAberto(array('abt.id' => $id_abertura_caixa));
     $id_empreendimento = $caixa['id_empreendimento'];
     $id_caixa = $caixa['id_caixa'];
     $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     $this->setTimeZone($id_empreendimento);
     //return $caixa;
     $id_plano_conta = $config['id_plano_fechamento_caixa'];
     $id_fornecedor = $config['id_fornecedor_movimentacao_caixa'];
     $AberturaCaixaDao = new AberturaCaixaDao();
     $valor_dinheiro = $AberturaCaixaDao->vlrEmCaixa($id_abertura_caixa, 3);
     $valor_dinheiro = (double) $valor_dinheiro['vlr_em_caixa'];
     $lancamentos_entrada = $select->fetchAll(PDO::FETCH_ASSOC);
     $dta_fechamento = $dta_fechamento == null ? date('Y-m-d H:i:s') : $dta_fechamento;
     $valor_total_baixa = $AberturaCaixaDao->vlrEmCaixa($id_abertura_caixa);
     $valor_total_baixa = $valor_total_baixa['vlr_em_caixa'];
     $MaquinetaDao = new MaquinetaDao();
     foreach ($lancamentos_entrada as $key => $value) {
         if ($value['id_forma_pagamento'] == 2 || $value['id_forma_pagamento'] == 3 || $value['id_forma_pagamento'] == 7 || $value['id_forma_pagamento'] == 4 || $value['id_forma_pagamento'] == 8 || $value['id_forma_pagamento'] == 9) {
             if ($value['id_forma_pagamento'] != 8) {
                 $lancamentos_entrada[$key]['id_conta_bancaria'] = $id_conta_bancaria;
             } else {
                 $lancamentos_entrada[$key]['id_conta_bancaria'] = $lancamentos_entrada[$key]['id_conta_transferencia_destino'];
             }
             $lancamentos_entrada[$key]['id_plano_conta'] = $id_plano_conta;
         } else {
             $maquineta = $MaquinetaDao->getMaquineta($lancamentos_entrada[$key]['id_maquineta']);
             $lancamentos_entrada[$key]['id_conta_bancaria'] = $maquineta['id_conta_bancaria'];
             $lancamentos_entrada[$key]['id_plano_conta'] = $id_plano_conta;
         }
     }
     $lancamentos_entrada_cc = array();
     foreach ($lancamentos_entrada as $key => $value) {
         if ($value['id_forma_pagamento'] == 6 && empty($value['id_parcelamento'])) {
             $lancamentos_entrada_cc[] = $value;
             unset($lancamentos_entrada[$key]);
         }
     }
     $cc_parcelas = array();
     foreach ($lancamentos_entrada_cc as $key => $value) {
         $parcelas_atuais = array('id_forma_pagamento' => $value['id_forma_pagamento'], 'id_controle_pagamento' => $value['id_controle_pagamento'], 'dta_entrada' => $value['dta_entrada'], 'parcelas' => array($value));
         foreach ($lancamentos_entrada as $i => $v) {
             if ($value['id'] == $v['id_parcelamento']) {
                 $parcelas_atuais['parcelas'][] = $v;
                 unset($lancamentos_entrada[$i]);
             }
         }
         $cc_parcelas[] = $parcelas_atuais;
     }
     foreach ($cc_parcelas as $key => $value) {
         $lancamentos_entrada[] = $value;
     }
     $ControlePagamentoVendaDao = new ControlePagamentoVendaDao();
     $lancamentos_controle = array();
     foreach ($lancamentos_entrada as $key => $value) {
         if (isset($lancamentos_controle[$value['id_controle_pagamento']])) {
             $lancamentos_controle[$value['id_controle_pagamento']][] = $value;
         } else {
             $lancamentos_controle[$value['id_controle_pagamento']] = array();
             $lancamentos_controle[$value['id_controle_pagamento']][] = $value;
             $lancamentos_controle[$value['id_controle_pagamento']]['dta_entrada'] = $value['dta_entrada'];
         }
     }
     foreach ($lancamentos_controle as $key_cp => $value_cp) {
         $id_controle_pagamento = $ControlePagamentoVendaDao->saveControlePagamento($value_cp['dta_entrada']);
         unset($value_cp['dta_entrada']);
         foreach ($value_cp as $key => $value) {
             if ($value['id_forma_pagamento'] != 6) {
                 $value['id_banco'] = is_numeric($value['id_banco']) ? "'" . $value['id_banco'] . "'" : 'NULL';
                 $value['id_maquineta'] = is_numeric($value['id_maquineta']) ? "'" . $value['id_maquineta'] . "'" : 'NULL';
                 $value['num_conta_corrente'] = !empty($value['num_conta_corrente']) ? "'" . $value['num_conta_corrente'] . "'" : 'NULL';
                 $value['num_cheque'] = !empty($value['num_cheque']) ? "'" . $value['num_cheque'] . "'" : 'NULL';
                 $value['flg_cheque_predatado'] = !empty($value['flg_cheque_predatado']) ? "'" . $value['flg_cheque_predatado'] . "'" : 'NULL';
                 $value['taxa_maquineta'] = !empty($value['taxa_maquineta']) ? "'" . $value['taxa_maquineta'] . "'" : 'NULL';
                 $value['id_vale_troca'] = !empty($value['id_vale_troca']) ? "'" . $value['id_vale_troca'] . "'" : 'NULL';
                 $value['doc_boleto'] = !empty($value['doc_boleto']) ? "'" . $value['doc_boleto'] . "'" : 'NULL';
                 $value['num_boleto'] = !empty($value['num_boleto']) ? "'" . $value['num_boleto'] . "'" : 'NULL';
                 $value['agencia_transferencia'] = !empty($value['agencia_transferencia']) ? "'" . $value['agencia_transferencia'] . "'" : 'NULL';
                 $value['conta_transferencia'] = !empty($value['conta_transferencia']) ? "'" . $value['conta_transferencia'] . "'" : 'NULL';
                 $value['proprietario_conta_transferencia'] = !empty($value['proprietario_conta_transferencia']) ? "'" . $value['proprietario_conta_transferencia'] . "'" : 'NULL';
                 $value['id_conta_transferencia_destino'] = !empty($value['id_conta_transferencia_destino']) ? "'" . $value['id_conta_transferencia_destino'] . "'" : 'NULL';
                 $value['obs_pagamento'] = "Pagamento proveniente de um fechamento de caixa";
                 $sql_update_lancamento = "UPDATE tbl_pagamentos_venda SET flg_caixa_fechado = 1 WHERE id = " . $value['id'];
                 $slq_lancamentos_entrada = " INSERT INTO tbl_pagamentos_venda ( `id_cliente`,`id_controle_pagamento`  , `id_forma_pagamento`, `data_pagamento`, `valor_pagamento`, `status_pagamento`, `id_empreendimento`,`id_banco`,`num_conta_corrente`,`num_cheque`,`flg_cheque_predatado`, `id_plano_conta`, `id_conta_bancaria`, `obs_pagamento`, `id_maquineta`, `taxa_maquineta`,`id_vale_troca`, `doc_boleto`,`num_boleto`,`agencia_transferencia`,`conta_transferencia`,`proprietario_conta_transferencia`,`id_conta_transferencia_destino`)\n\t\t\t\t\t\t\t\t\t\t\t\t VALUES  ('" . $value['id_cliente'] . "', '" . $id_controle_pagamento . "' ,'" . $value['id_forma_pagamento'] . "', '" . $value['data_pagamento'] . "', '" . $value['valor_pagamento'] . "', '" . $value['status_pagamento'] . "', '" . $value['id_empreendimento'] . "'," . $value['id_banco'] . ", " . $value['num_conta_corrente'] . " , " . $value['num_cheque'] . " , " . $value['flg_cheque_predatado'] . " ,'" . $value['id_plano_conta'] . "', '" . $value['id_conta_bancaria'] . "', '" . $value['obs_pagamento'] . "' , " . $value['id_maquineta'] . ", " . $value['taxa_maquineta'] . ", " . $value['id_vale_troca'] . ", " . $value['doc_boleto'] . ", " . $value['num_boleto'] . ", " . $value['agencia_transferencia'] . ", " . $value['conta_transferencia'] . ", " . $value['proprietario_conta_transferencia'] . ", " . $value['id_conta_transferencia_destino'] . ")";
                 $update_lancamento = $this->conn->prepare($sql_update_lancamento);
                 $insert = $this->conn->prepare($slq_lancamentos_entrada);
                 if (!$update_lancamento->execute()) {
                     return false;
                 }
                 if (!$insert->execute()) {
                     return false;
                 }
                 $id_lancamento_entrada = $this->conn->lastInsertId();
                 $value['id_venda'] = is_numeric($value['id_venda']) ? "'" . $value['id_venda'] . "'" : 'NULL';
                 $value['dsc_movimentacao'] = "Transferência do registro de movimentacão #" . $value['id_mov'];
                 $sql_movimentacao = "INSERT INTO tbl_movimentacao_caixa (`id`, `id_abertura_caixa`, `id_plano_conta`, `id_tipo_movimentacao`, `dsc_movimentacao` , `id_venda`, `id_lancamento_entrada`, `id_lancamento_saida`, `id_maquineta`, `dta_movimentacao`)\n\t\t\t\t\t\t\t\t\t\t VALUES (NULL,'" . $id_abertura_caixa . "', '" . $id_plano_conta . "', '4', '" . $value['dsc_movimentacao'] . "', " . $value['id_venda'] . ", '" . $id_lancamento_entrada . "', NULL, " . $value['id_maquineta'] . ", '" . $dta_fechamento . "');";
                 $update_lancamento = $this->conn->prepare($sql_update_lancamento);
                 $insert = $this->conn->prepare($sql_movimentacao);
                 if (!$insert->execute()) {
                     return false;
                 }
             } else {
                 if ($value['id_forma_pagamento'] == 6) {
                     $cont_parcelas = 0;
                     $id_parcelamento = NULL;
                     foreach ($value['parcelas'] as $i => $v) {
                         $v['id_banco'] = is_numeric($v['id_banco']) ? "'" . $v['id_banco'] . "'" : 'NULL';
                         $v['id_maquineta'] = is_numeric($v['id_maquineta']) ? "'" . $v['id_maquineta'] . "'" : 'NULL';
                         $v['num_conta_corrente'] = !empty($v['num_conta_corrente']) ? "'" . $v['num_conta_corrente'] . "'" : 'NULL';
                         $v['num_cheque'] = !empty($v['num_cheque']) ? "'" . $v['num_cheque'] . "'" : 'NULL';
                         $v['flg_cheque_predatado'] = !empty($v['flg_cheque_predatado']) ? "'" . $v['flg_cheque_predatado'] . "'" : 'NULL';
                         $v['taxa_maquineta'] = !empty($v['taxa_maquineta']) ? "'" . $v['taxa_maquineta'] . "'" : 'NULL';
                         $v['obs_pagamento'] = "Pagamento proveniente de um fechamento de caixa";
                         $id_parcelamento = $cont_parcelas == 0 ? 'NULL' : $id_parcelamento;
                         $sql_update_lancamento = "UPDATE tbl_pagamentos_venda SET flg_caixa_fechado = 1 WHERE id = " . $v['id'];
                         $slq_lancamentos_entrada = "INSERT INTO tbl_pagamentos_venda ( `id_cliente`,`id_controle_pagamento`, `id_parcelamento`, `id_forma_pagamento`, `data_pagamento`, `valor_pagamento`, `status_pagamento`, `id_empreendimento`,`id_banco`,`num_conta_corrente`,`num_cheque`,`flg_cheque_predatado`, `id_plano_conta`, `id_conta_bancaria`, `obs_pagamento`, `id_maquineta`, `taxa_maquineta`)\n\t\t\t\t\t\t\t\t\t\t\t\t\t VALUES  ('" . $v['id_cliente'] . "', '" . $id_controle_pagamento . "', {$id_parcelamento} ,'" . $v['id_forma_pagamento'] . "', '" . $v['data_pagamento'] . "', '" . $v['valor_pagamento'] . "', '" . $v['status_pagamento'] . "', '" . $v['id_empreendimento'] . "'," . $v['id_banco'] . ", " . $v['num_conta_corrente'] . " , " . $v['num_cheque'] . " , " . $v['flg_cheque_predatado'] . " ,'" . $v['id_plano_conta'] . "', '" . $v['id_conta_bancaria'] . "','" . $v['obs_pagamento'] . "'," . $v['id_maquineta'] . ", " . $v['taxa_maquineta'] . " )";
                         $update_lancamento = $this->conn->prepare($sql_update_lancamento);
                         $insert = $this->conn->prepare($slq_lancamentos_entrada);
                         if (!$update_lancamento->execute()) {
                             return false;
                         }
                         if (!$insert->execute()) {
                             return false;
                         }
                         $id_lancamento_entrada = $this->conn->lastInsertId();
                         $id_parcelamento = $cont_parcelas == 0 ? $id_lancamento_entrada : $id_parcelamento;
                         $v['id_venda'] = is_numeric($v['id_venda']) ? "'" . $v['id_venda'] . "'" : 'NULL';
                         $v['dsc_movimentacao'] = "Transferência do registro de movimentacão #" . $v['id_mov'];
                         $sql_movimentacao = "INSERT INTO tbl_movimentacao_caixa (`id`, `id_abertura_caixa`, `id_plano_conta`, `id_tipo_movimentacao`, `dsc_movimentacao`, `id_venda`, `id_lancamento_entrada`, `id_lancamento_saida`, `id_maquineta`, `dta_movimentacao`)\n\t\t\t\t\t\t\t\t\t\t\t VALUES (NULL,'" . $id_abertura_caixa . "', '" . $id_plano_conta . "', '4','" . $v['dsc_movimentacao'] . "', " . $v['id_venda'] . ", '" . $id_lancamento_entrada . "', NULL, " . $v['id_maquineta'] . ", '" . $dta_fechamento . "');";
                         $insert = $this->conn->prepare($sql_movimentacao);
                         if (!$insert->execute()) {
                             return false;
                         }
                         $cont_parcelas++;
                     }
                 }
             }
         }
     }
     $ControlePagamentoFornecedorDao = new ControlePagamentoFornecedorDao();
     $id_controle_pagamento = $ControlePagamentoFornecedorDao->saveControlePagamento();
     $slq_lancamentos_saida = "INSERT INTO `tbl_pagamentos_fornecedores` ( `id_controle_pagamento`,`id_fornecedor`, `id_forma_pagamento`, `data_pagamento`, `valor_pagamento`, `status_pagamento`, `id_empreendimento`,`id_plano_conta`, `id_conta_bancaria`)\n\t\t\t\t\t\t\t\t VALUES ('" . $id_controle_pagamento . "','" . $id_fornecedor . "', '3', '" . $dta_fechamento . "', '" . $valor_total_baixa . "', '1', '" . $id_empreendimento . "','" . $id_plano_conta . "', '" . $id_caixa . "');";
     $insert = $this->conn->prepare($slq_lancamentos_saida);
     if (!$insert->execute()) {
         return false;
     }
     $id_lancamento_saida = $this->conn->lastInsertId();
     $obs_pagamento_abt = "Transferência para abatimento do caixa";
     $sql_movimentacao = "INSERT INTO tbl_movimentacao_caixa (`id`, `id_abertura_caixa`, `id_plano_conta`, `id_tipo_movimentacao`, `dsc_movimentacao`, `id_venda`, `id_lancamento_entrada`, `id_lancamento_saida`, `id_maquineta`, `dta_movimentacao`)\n\t\t\t\t\t\t\t VALUES (NULL, '" . $id_abertura_caixa . "', '" . $id_plano_conta . "', '4','" . $obs_pagamento_abt . "', NULL, NULL, '" . $id_lancamento_saida . "', NULL, '" . $dta_fechamento . "');";
     $insert = $this->conn->prepare($sql_movimentacao);
     if (!$insert->execute()) {
         return false;
     }
     $sql_update_caixa = "UPDATE tbl_abertura_caixa SET dta_fechamento = '" . $dta_fechamento . "' WHERE id = {$id_abertura_caixa}";
     $insert = $this->conn->prepare($sql_update_caixa);
     if (!$insert->execute()) {
         return false;
     }
     return true;
 }
 public static function gravarMovimentacoes($pagamentos, $id_pedido_venda, $id_cliente, $id_empreendimento)
 {
     $MovimentacaoCaixaTO = new MovimentacaoCaixaTO();
     $MovimentacaoCaixaDao = new MovimentacaoCaixaDao();
     $PagamentoClienteTO = new PagamentoClienteTO();
     $PagamentoClienteDao = new PagamentoClienteDao();
     $ControlePagamentoVendaTO = new ControlePagamentoVendaTO();
     $ControlePagamentoVendaDao = new ControlePagamentoVendaDao();
     $MaquinetaDao = new MaquinetaDao();
     $pagamentos = $pagamentos;
     $id_pedido_venda = $id_pedido_venda;
     $id_cliente = $id_cliente;
     $id_empreendimento = $id_empreendimento;
     $Dao = new Dao();
     $Dao->setTimeZone($id_empreendimento);
     $dta_entrada = date('Y-m-d H:i:s');
     $id_controle_pagamento = $ControlePagamentoVendaDao->saveControlePagamento($dta_entrada);
     if (!$id_controle_pagamento) {
         Flight::halt(500, 'erro ao inserir pagamento ao cliente');
     }
     foreach ($pagamentos as $key => $value) {
         $parcela = null;
         if ($value['id_tipo_movimentacao'] != 5 && $value['id_forma_pagamento'] != 6) {
             $PagamentoClienteTO->id_cliente = isset($value['id_cliente']) ? $value['id_cliente'] : "";
             $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
             $PagamentoClienteTO->id_forma_pagamento = isset($value['id_forma_pagamento']) ? $value['id_forma_pagamento'] : "";
             $PagamentoClienteTO->valor_pagamento = isset($value['valor']) ? $value['valor_pagamento'] : "";
             if ($value['id_forma_pagamento'] == 2) {
                 $PagamentoClienteTO->status_pagamento = 0;
             } else {
                 if ($value['id_forma_pagamento'] == 4) {
                     $PagamentoClienteTO->status_pagamento = isset($value['status_pagamento']) ? $value['status_pagamento'] : 0;
                     $PagamentoClienteTO->doc_boleto = isset($value['doc_boleto']) ? $value['doc_boleto'] : NULL;
                     $PagamentoClienteTO->num_boleto = isset($value['num_boleto']) ? $value['num_boleto'] : NULL;
                 } else {
                     $PagamentoClienteTO->status_pagamento = 1;
                 }
             }
             $PagamentoClienteTO->data_pagamento = isset($value['data_pagamento']) ? $value['data_pagamento'] : "";
             $PagamentoClienteTO->id_empreendimento = isset($value['id_empreendimento']) ? $value['id_empreendimento'] : "";
             $PagamentoClienteTO->id_plano_conta = isset($value['id_plano_conta']) ? $value['id_plano_conta'] : "";
             $PagamentoClienteTO->id_conta_bancaria = isset($value['id_conta_bancaria']) ? $value['id_conta_bancaria'] : NULL;
             $PagamentoClienteTO->flg_caixa_fechado = 0;
             $PagamentoClienteTO->id_banco = isset($value['id_banco']) ? $value['id_banco'] : NULL;
             $PagamentoClienteTO->num_conta_corrente = isset($value['num_conta_corrente']) ? $value['num_conta_corrente'] : NULL;
             $PagamentoClienteTO->num_cheque = isset($value['num_cheque']) ? $value['num_cheque'] : NULL;
             $PagamentoClienteTO->flg_cheque_predatado = isset($value['flg_cheque_predatado']) ? $value['flg_cheque_predatado'] : NULL;
             $PagamentoClienteTO->id_vale_troca = (int) $value['id_forma_pagamento'] == 7 ? $value['id_vale_troca'] : NULL;
             $PagamentoClienteTO->agencia_transferencia = isset($value['agencia_transferencia']) ? $value['agencia_transferencia'] : NULL;
             $PagamentoClienteTO->conta_transferencia = isset($value['conta_transferencia']) ? $value['conta_transferencia'] : NULL;
             $PagamentoClienteTO->proprietario_conta_transferencia = isset($value['proprietario_conta_transferencia']) ? $value['proprietario_conta_transferencia'] : NULL;
             $PagamentoClienteTO->id_conta_transferencia_destino = isset($value['id_conta_transferencia_destino']) ? $value['id_conta_transferencia_destino'] : NULL;
             if ($value['id_forma_pagamento'] == 5) {
                 $maquineta = $MaquinetaDao->getMaquineta($value['id_maquineta']);
                 $txa_maquineta = $maquineta['per_margem_debito'];
                 $PagamentoClienteTO->id_maquineta = isset($value['id_maquineta']) ? $value['id_maquineta'] : NULL;
                 $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
             } else {
                 $PagamentoClienteTO->id_maquineta = NULL;
                 $PagamentoClienteTO->taxa_maquineta = NULL;
             }
             $PagamentoClienteTO->id_cliente = is_numeric($PagamentoClienteTO->id_cliente) ? $PagamentoClienteTO->id_cliente : $value['id_cliente_lancamento'];
             $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
             if (!$id_lancamento_entrada) {
                 Flight::halt(500, 'erro ao inserir pagamento ao cliente');
             }
         } else {
             if ($value['id_tipo_movimentacao'] != 5) {
                 $repeat_parcelas = 0;
                 $id_parcelamento = false;
                 $arr_parcelas = $value['parcelas'];
                 $n_parcelas = count($arr_parcelas);
                 foreach ($arr_parcelas as $key_par => $parcela) {
                     $maquineta = $MaquinetaDao->getMaquineta($parcela['id_maquineta']);
                     $txa_maquineta = $MaquinetaDao->getTaxaMaquineta($parcela['id_maquineta'], $n_parcelas);
                     $PagamentoClienteTO->id_cliente = isset($parcela['id_cliente']) ? $parcela['id_cliente'] : "";
                     $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
                     $PagamentoClienteTO->id_forma_pagamento = isset($parcela['id_forma_pagamento']) ? $parcela['id_forma_pagamento'] : "";
                     $PagamentoClienteTO->valor_pagamento = isset($parcela['valor_pagamento']) ? $parcela['valor_pagamento'] : "";
                     $PagamentoClienteTO->status_pagamento = 0;
                     $PagamentoClienteTO->data_pagamento = isset($parcela['data_pagamento']) ? $parcela['data_pagamento'] : "";
                     $PagamentoClienteTO->obs_pagamento = isset($parcela['obs_pagamento']) ? $parcela['obs_pagamento'] : "";
                     $PagamentoClienteTO->id_empreendimento = isset($parcela['id_empreendimento']) ? $parcela['id_empreendimento'] : "";
                     $PagamentoClienteTO->id_banco = isset($parcela['id_banco']) ? $parcela['id_banco'] : "";
                     $PagamentoClienteTO->num_conta_corrente = isset($parcela['num_conta_corrente']) ? $parcela['num_conta_corrente'] : "";
                     $PagamentoClienteTO->num_cheque = isset($parcela['num_cheque']) ? $parcela['num_cheque'] : "";
                     $PagamentoClienteTO->flg_cheque_predatado = isset($parcela['flg_cheque_predatado']) ? $parcela['flg_cheque_predatado'] : "";
                     $PagamentoClienteTO->id_plano_conta = isset($parcela['id_plano_conta']) ? $parcela['id_plano_conta'] : "";
                     $PagamentoClienteTO->id_conta_bancaria = isset($parcela['id_conta_bancaria']) ? $parcela['id_conta_bancaria'] : "";
                     $PagamentoClienteTO->id_maquineta = isset($parcela['id_maquineta']) ? $parcela['id_maquineta'] : NULL;
                     $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
                     $PagamentoClienteTO->id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : NULL;
                     $PagamentoClienteTO->id_cliente = is_numeric($PagamentoClienteTO->id_cliente) ? $PagamentoClienteTO->id_cliente : $parcela['id_cliente_lancamento'];
                     $PagamentoClienteTO->flg_caixa_fechado = 0;
                     if ($PagamentoClienteTO->id_forma_pagamento != 2) {
                         $PagamentoClienteTO->id_banco = NULL;
                         $PagamentoClienteTO->num_conta_corrente = NULL;
                         $PagamentoClienteTO->num_cheque = NULL;
                         $PagamentoClienteTO->flg_cheque_predatado = NULL;
                     }
                     $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
                     if (!$id_lancamento_entrada) {
                         Flight::halt(500, 'erro ao inserir pagamento ao cliente');
                     }
                     $MovimentacaoCaixaTO->id_abertura_caixa = isset($parcela['id_abertura_caixa']) ? $parcela['id_abertura_caixa'] : NULL;
                     $MovimentacaoCaixaTO->id_plano_conta = isset($parcela['id_plano_conta']) ? $parcela['id_plano_conta'] : NULL;
                     $MovimentacaoCaixaTO->id_tipo_movimentacao = isset($parcela['id_tipo_movimentacao']) ? $parcela['id_tipo_movimentacao'] : NULL;
                     $MovimentacaoCaixaTO->dsc_movimentacao = 'Pedido de Venda';
                     $MovimentacaoCaixaTO->id_maquineta = isset($parcela['id_maquineta']) ? $parcela['id_maquineta'] : NULL;
                     $MovimentacaoCaixaTO->id_pedido_venda = $id_pedido_venda;
                     $MovimentacaoCaixaTO->id_lancamento_entrada = $id_lancamento_entrada;
                     $valor_pagamento = isset($parcela['valor']) ? $parcela['valor'] : NULL;
                     $MovimentacaoCaixaTO->para_receber = $parcela['id_tipo_movimentacao'] == 5 ? $parcela['valor'] : NULL;
                     $MovimentacaoCaixaTO->dta_movimentacao = $dta_entrada;
                     if (!$MovimentacaoCaixaDao->saveMovimentacao($MovimentacaoCaixaTO)) {
                         Flight::halt(500, 'erro ao inserir movimentacao');
                     }
                     $id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : $id_lancamento_entrada;
                 }
                 $id_lancamento_entrada = $id_parcelamento;
             }
         }
         if ($parcela == null) {
             $MovimentacaoCaixaTO->id_abertura_caixa = isset($value['id_abertura_caixa']) ? $value['id_abertura_caixa'] : NULL;
             $MovimentacaoCaixaTO->id_plano_conta = isset($value['id_plano_conta']) ? $value['id_plano_conta'] : NULL;
             $MovimentacaoCaixaTO->id_tipo_movimentacao = isset($value['id_tipo_movimentacao']) ? $value['id_tipo_movimentacao'] : NULL;
             $MovimentacaoCaixaTO->dsc_movimentacao = 'Pedido de Venda';
             $MovimentacaoCaixaTO->id_maquineta = isset($value['id_maquineta']) ? $value['id_maquineta'] : NULL;
             $MovimentacaoCaixaTO->id_pedido_venda = $id_pedido_venda;
             $MovimentacaoCaixaTO->id_lancamento_entrada = $value['id_tipo_movimentacao'] != 5 ? $id_lancamento_entrada : NULL;
             $valor_pagamento = isset($value['valor']) ? $value['valor'] : NULL;
             $MovimentacaoCaixaTO->para_receber = $value['id_tipo_movimentacao'] == 5 ? $value['valor'] : NULL;
             $MovimentacaoCaixaTO->dta_movimentacao = $dta_entrada;
             if (!$MovimentacaoCaixaDao->saveMovimentacao($MovimentacaoCaixaTO)) {
                 Flight::halt(500, 'erro ao inserir movimentacao');
             }
         }
     }
     return true;
 }
 public static function gravarPagamento()
 {
     $PagamentoClienteTO = new PagamentoClienteTO();
     $PagamentoClienteDao = new PagamentoClienteDao();
     $ControlePagamentoVendaTO = new ControlePagamentoVendaTO();
     $ControlePagamentoVendaDao = new ControlePagamentoVendaDao();
     $MaquinetaDao = new MaquinetaDao();
     $pagamentos = $_POST['pagamentos'];
     $id_cliente = $_POST['id_cliente'];
     $id_empreendimento = $_POST['id_empreendimento'];
     $id_controle_pagamento = $ControlePagamentoVendaDao->saveControlePagamento();
     if (!$id_controle_pagamento) {
         Flight::halt(500, 'erro ao inserir pagamento ao cliente');
     }
     foreach ($pagamentos as $key => $value) {
         if ($value['id_forma_pagamento'] != 6) {
             $PagamentoClienteTO->id_cliente = isset($value['id_cliente']) ? $value['id_cliente'] : "";
             $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
             $PagamentoClienteTO->id_forma_pagamento = isset($value['id_forma_pagamento']) ? $value['id_forma_pagamento'] : "";
             $PagamentoClienteTO->valor_pagamento = isset($value['valor']) ? $value['valor_pagamento'] : "";
             $PagamentoClienteTO->status_pagamento = isset($value['status']) ? $value['status'] : "";
             $PagamentoClienteTO->data_pagamento = isset($value['data_pagamento']) ? $value['data_pagamento'] : "";
             $PagamentoClienteTO->id_empreendimento = isset($value['id_empreendimento']) ? $value['id_empreendimento'] : "";
             $PagamentoClienteTO->id_plano_conta = isset($value['id_plano_conta']) ? $value['id_plano_conta'] : "";
             $PagamentoClienteTO->id_conta_bancaria = isset($value['id_conta_bancaria']) ? $value['id_conta_bancaria'] : "";
             $PagamentoClienteTO->id_banco = isset($value['id_banco']) ? $value['id_banco'] : NULL;
             $PagamentoClienteTO->num_conta_corrente = isset($value['num_conta_corrente']) ? $value['num_conta_corrente'] : NULL;
             $PagamentoClienteTO->num_cheque = isset($value['num_cheque']) ? $value['num_cheque'] : NULL;
             $PagamentoClienteTO->flg_cheque_predatado = isset($value['flg_cheque_predatado']) ? $value['flg_cheque_predatado'] : NULL;
             $PagamentoClienteTO->doc_boleto = isset($value['doc_boleto']) ? $value['doc_boleto'] : NULL;
             $PagamentoClienteTO->num_boleto = isset($value['num_boleto']) ? $value['num_boleto'] : NULL;
             $PagamentoClienteTO->agencia_transferencia = isset($value['agencia_transferencia']) ? $value['agencia_transferencia'] : NULL;
             $PagamentoClienteTO->conta_transferencia = isset($value['conta_transferencia']) ? $value['conta_transferencia'] : NULL;
             $PagamentoClienteTO->proprietario_conta_transferencia = isset($value['proprietario_conta_transferencia']) ? $value['proprietario_conta_transferencia'] : NULL;
             $PagamentoClienteTO->id_conta_transferencia_destino = isset($value['id_conta_transferencia_destino']) ? $value['id_conta_transferencia_destino'] : NULL;
             $PagamentoClienteTO->obs_pagamento = isset($value['obs_pagamento']) ? $value['obs_pagamento'] : NULL;
             $PagamentoClienteTO->id_parcelamento = NULL;
             if ($value['id_forma_pagamento'] == 5) {
                 $maquineta = $MaquinetaDao->getMaquineta($value['id_maquineta']);
                 $txa_maquineta = $maquineta['per_margem_debito'];
                 $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
             } else {
                 $PagamentoClienteTO->id_maquineta = NULL;
                 $PagamentoClienteTO->taxa_maquineta = NULL;
             }
             $PagamentoClienteTO->id_cliente = is_numeric($PagamentoClienteTO->id_cliente) ? $PagamentoClienteTO->id_cliente : $value['id_cliente_lancamento'];
             $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
             if (!$id_lancamento_entrada) {
                 Flight::halt(500, 'erro ao inserir pagamento ao cliente');
             }
         } else {
             $repeat_parcelas = 0;
             $id_parcelamento = false;
             $arr_parcelas = $value['parcelas'];
             $n_parcelas = count($arr_parcelas);
             foreach ($arr_parcelas as $key_par => $parcela) {
                 $maquineta = $MaquinetaDao->getMaquineta($parcela['id_maquineta']);
                 $txa_maquineta = $MaquinetaDao->getTaxaMaquineta($parcela['id_maquineta'], $n_parcelas);
                 $PagamentoClienteTO->id_cliente = isset($parcela['id_cliente']) ? $parcela['id_cliente'] : "";
                 $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
                 $PagamentoClienteTO->id_forma_pagamento = isset($parcela['id_forma_pagamento']) ? $parcela['id_forma_pagamento'] : "";
                 $PagamentoClienteTO->valor_pagamento = isset($parcela['valor_pagamento']) ? $parcela['valor_pagamento'] : "";
                 $PagamentoClienteTO->status_pagamento = isset($parcela['status']) ? $parcela['status'] : "";
                 $PagamentoClienteTO->data_pagamento = isset($parcela['data_pagamento']) ? $parcela['data_pagamento'] : "";
                 $PagamentoClienteTO->obs_pagamento = isset($parcela['obs_pagamento']) ? $parcela['obs_pagamento'] : "";
                 $PagamentoClienteTO->id_empreendimento = isset($parcela['id_empreendimento']) ? $parcela['id_empreendimento'] : "";
                 $PagamentoClienteTO->id_banco = isset($parcela['id_banco']) ? $parcela['id_banco'] : "";
                 $PagamentoClienteTO->num_conta_corrente = isset($parcela['num_conta_corrente']) ? $parcela['num_conta_corrente'] : "";
                 $PagamentoClienteTO->num_cheque = isset($parcela['num_cheque']) ? $parcela['num_cheque'] : "";
                 $PagamentoClienteTO->flg_cheque_predatado = isset($parcela['flg_cheque_predatado']) ? $parcela['flg_cheque_predatado'] : "";
                 $PagamentoClienteTO->id_plano_conta = isset($parcela['id_plano_conta']) ? $parcela['id_plano_conta'] : "";
                 $PagamentoClienteTO->id_conta_bancaria = isset($parcela['id_conta_bancaria']) ? $parcela['id_conta_bancaria'] : "";
                 $PagamentoClienteTO->id_maquineta = isset($parcela['id_maquineta']) ? $parcela['id_maquineta'] : "";
                 $PagamentoClienteTO->taxa_maquineta = $txa_maquineta;
                 $PagamentoClienteTO->id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : NULL;
                 if ($PagamentoClienteTO->id_forma_pagamento != 2) {
                     $PagamentoClienteTO->id_banco = NULL;
                     $PagamentoClienteTO->num_conta_corrente = NULL;
                     $PagamentoClienteTO->num_cheque = NULL;
                     $PagamentoClienteTO->flg_cheque_predatado = NULL;
                 }
                 $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
                 if (!$id_lancamento_entrada) {
                     Flight::halt(500, 'erro ao inserir pagamento ao cliente');
                 }
                 $id_parcelamento = is_numeric($id_parcelamento) ? $id_parcelamento : $id_lancamento_entrada;
             }
             $id_lancamento_entrada = $id_parcelamento;
         }
     }
     $UsuarioDao = new UsuarioDao();
     $vlr_saldo_devedor = $UsuarioDao->getSaldoDevedor($id_empreendimento, $id_cliente);
     $vlr_saldo_devedor = $vlr_saldo_devedor["vlr_saldo_devedor"];
     Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('vlr_saldo_devedor' => $vlr_saldo_devedor, 'id_controle_pagamento' => $id_controle_pagamento)))->send();
 }
 public static function requestSaveVenda()
 {
     try {
         $dados = $_POST;
         $VendaDao = new VendaDao();
         $VendaTO = new VendaTO();
         $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao();
         $PrestaShopDao = new PrestaShopDao($dados['id_empreendimento']);
         $ProdutoCombinacaoDao = new ProdutoCombinacaoDao();
         $ItemVendaDao = new ItemVendaDao();
         $ItemVendaTO = new ItemVendaTO();
         $refCliente = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_usuarios', 'id_item_referencia' => $dados['customer']['id'], 'tipo' => 'usuario', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0));
         if ($refCliente) {
             $id_cliente = $refCliente['id_item'];
         } else {
             $id_cliente = NULL;
         }
         $PagamentoClienteTO = new PagamentoClienteTO();
         $PagamentoClienteDao = new PagamentoClienteDao();
         $ControlePagamentoVendaTO = new ControlePagamentoVendaTO();
         $ControlePagamentoVendaDao = new ControlePagamentoVendaDao();
         $ConfiguracaoDao = new ConfiguracaoDao();
         $config = $ConfiguracaoDao->getConfiguracoes($dados['id_empreendimento']);
         $id_controle_pagamento = $ControlePagamentoVendaDao->saveControlePagamento();
         $PagamentoClienteTO->id_usuario = $config['prestashop_id_usuario_padrao'];
         $PagamentoClienteTO->id_cliente = $id_cliente;
         $PagamentoClienteTO->id_controle_pagamento = $id_controle_pagamento;
         $PagamentoClienteTO->obs_pagamento = 'Pagamento PrestaShop';
         $PagamentoClienteTO->valor_pagamento = $dados['order']['total_products_wt'];
         $PagamentoClienteTO->status_pagamento = 0;
         $PagamentoClienteTO->id_empreendimento = $dados['id_empreendimento'];
         $PagamentoClienteTO->id_plano_conta = $config['prestashop_id_plano_conta_padrao'];
         $PagamentoClienteTO->id_conta_bancaria = $config['prestashop_id_conta_bancaria_padrao'];
         $PagamentoClienteTO->data_pagamento = date('Y-m-d H:i:s');
         if (strtolower($dados['order']['payment']) == 'cheque') {
             $PagamentoClienteTO->id_forma_pagamento = 2;
         } else {
             $PagamentoClienteTO->id_forma_pagamento = 8;
         }
         $id_lancamento_entrada = $PagamentoClienteDao->savePagamentoCliente($PagamentoClienteTO);
         $ReferenciaIntegracaoPagTO = new ReferenciaIntegracaoTO();
         $ReferenciaIntegracaoPagTO->sistema_integrado = 'PrestaShop';
         $ReferenciaIntegracaoPagTO->tabela = 'tbl_pagamentos_venda';
         $ReferenciaIntegracaoPagTO->id_item = $id_lancamento_entrada;
         $ReferenciaIntegracaoPagTO->id_item_referencia = $dados['cart']['id'];
         $ReferenciaIntegracaoPagTO->tipo = 'pagamento';
         $ReferenciaIntegracaoPagTO->id_empreendimento = $dados['id_empreendimento'];
         $ReferenciaIntegracaoDao->save($ReferenciaIntegracaoPagTO);
         $produtos = array();
         $VendaTO->id_usuario = $config['prestashop_id_usuario_padrao'];
         $VendaTO->id_cliente = $id_cliente;
         $VendaTO->venda_confirmada = 0;
         $VendaTO->id_empreendimento = $dados['id_empreendimento'];
         $VendaTO->id_status_venda = 1;
         $VendaTO->dta_venda = $dados['order']['date_add'];
         $VendaTO->vlr_saldo_anterior = NULL;
         $id_venda = $VendaDao->saveVenda($VendaTO);
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop';
         $ReferenciaIntegracaoTO->tabela = 'tbl_vendas';
         $ReferenciaIntegracaoTO->id_item = $id_venda;
         $ReferenciaIntegracaoTO->id_item_referencia = $dados['cart']['id'];
         $ReferenciaIntegracaoTO->tipo = 'venda';
         $ReferenciaIntegracaoTO->id_empreendimento = $dados['id_empreendimento'];
         $ReferenciaIntegracaoDao->save($ReferenciaIntegracaoTO);
         foreach ($dados['order']['product_list'] as $value) {
             if (isset($value['id_product_attribute'])) {
                 $refCombinacao = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_produto_combinacao', 'id_item_referencia' => $value['id_product_attribute'], 'tipo' => 'combinacao', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0));
                 if ($refCombinacao) {
                     $comb = $ProdutoCombinacaoDao->get(null, null, array('tpc.id' => $refCombinacao['id_item']));
                     if ($comb) {
                         $id_produto = $comb[0]['id_combinacao'];
                     }
                 } else {
                     $refProduto = $ReferenciaIntegracaoDao->get(array('sistema_integrado' => 'PrestaShop', 'tabela' => 'tbl_produtos', 'id_item_referencia' => $value['id_product'], 'tipo' => 'produto', 'id_empreendimento' => $dados['id_empreendimento'], 'flg_excluido' => 0));
                     if ($refProduto) {
                         $id_produto = $refProduto['id_item'];
                     }
                 }
             }
             $ex = (double) $value['price_with_reduction_without_tax'] - (double) $value['wholesale_price'];
             $perc_venda_varejo = $ex * 100 / (double) $value['wholesale_price'];
             $perc_venda_varejo = $perc_venda_varejo / 100;
             $ItemVendaTO->id_venda = $id_venda;
             $ItemVendaTO->id_produto = $id_produto;
             $ItemVendaTO->valor_real_item = $value['price'];
             $ItemVendaTO->vlr_custo = round($value['wholesale_price'], 2);
             $ItemVendaTO->perc_margem_aplicada = $perc_venda_varejo;
             $ItemVendaTO->desconto_aplicado = 0;
             $ItemVendaTO->valor_desconto = 0;
             $ItemVendaTO->qtd = $value['quantity'];
             $ItemVendaTO->perc_imposto_compra = 0;
             $ItemVendaTO->perc_desconto_compra = 0;
             $ItemVendaDao->saveItemVenda($ItemVendaTO);
         }
     } 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());
     }
 }