public static function saveVendaLoja()
 {
     $EstoqueDao = new EstoqueDao();
     $ConfiguracaoDao = new ConfiguracaoDao();
     $out = array();
     $produtos = $_POST['produtos'];
     $venda = $_POST['venda'];
     $id_empreendimento = $venda['id_empreendimento'];
     $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
     foreach ($produtos as $key => $value) {
         $qtd = (int) $value['qtd'];
         $estoque = $EstoqueDao->getQtdProduto($id_empreendimento, $value['id_produto']);
         $estoque_real = $estoque - $qtd;
         if ($estoque_real < 0) {
             $out[] = array($value['id_produto']);
         }
     }
     if (count($out) > 0) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($out))->send();
         return;
     }
     $VendaDao = new VendaDao();
     $VendaTO = new VendaTO();
     $VendaTO->id_usuario = $config['id_usuario_venda_vitrine'];
     $VendaTO->id_cliente = isset($venda['id_cliente']) ? $venda['id_cliente'] : '';
     $VendaTO->venda_confirmada = isset($venda['venda_confirmada']) ? $venda['venda_confirmada'] : 0;
     $VendaTO->id_empreendimento = isset($venda['id_empreendimento']) ? $venda['id_empreendimento'] : '';
     $id_venda = $VendaDao->saveVenda($VendaTO);
     if (!$id_venda) {
         Flight::halt(500, 'erro ao inserir venda');
     }
     $ItemVendaDao = new ItemVendaDao();
     $ItemVendaTO = new ItemVendaTO();
     foreach ($produtos as $key => $value) {
         $ItemVendaTO->id_venda = $id_venda;
         $ItemVendaTO->id_produto = $value['id_produto'];
         $ItemVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0;
         $ItemVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0;
         $ItemVendaTO->qtd = $value['qtd'];
         $ItemVendaTO->valor_real_item = $value['valor_produto'];
         if (!$ItemVendaDao->saveItemVenda($ItemVendaTO)) {
             Flight::halt(500, 'erro ao inserir os itens da venda');
         }
     }
     Flight::halt(201);
 }
 public function finalizarPedido($id_pedido_venda, $caixa)
 {
     $ItemPedidoVendaDao = new ItemPedidoVendaDao();
     $pedido_venda = $this->getPedidoVenda($id_pedido_venda);
     $pedido_venda['itens'] = $ItemPedidoVendaDao->getItens($id_pedido_venda, null, null);
     $pedido_gerado = $this->getPedidoMaster($pedido_venda['id']);
     $pedido_gerado['itens'] = $ItemPedidoVendaDao->getItens($pedido_gerado['id'], null, null);
     $id_empreendimento = $pedido_venda['id_empreendimento'];
     $produtos_venda = array();
     $Dao = new Dao();
     $out = array();
     $Dao->setTimeZone($id_empreendimento);
     $dta = date('Y-m-d H:i:s');
     $EstoqueDao = new EstoqueDao();
     $EstoqueTO = new EstoqueTO();
     $VendaTO = new VendaTO();
     $VendaDao = new VendaDao();
     $ItemVendaTO = new ItemVendaTO();
     $ItemVendaDao = new ItemVendaDao();
     $EstoqueEntradaTO = new EstoqueEntradaTO();
     $EstoqueEntradaDao = new EstoqueEntradaDao();
     $EstoqueEntradaTO->id_empreendimento = $id_empreendimento;
     $EstoqueEntradaTO->id_deposito = $caixa['id_deposito'];
     $EstoqueEntradaTO->id_pedido_venda = $id_pedido_venda;
     $EstoqueEntradaTO->dta_entrada = $dta;
     $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO);
     if ($id_estoque_entrada) {
         $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO();
         $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao();
         foreach ($pedido_gerado['itens'] as $key => $value) {
             $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada;
             $ItemEstoqueEntradaTO->id_produto = $value['id_produto'];
             $ItemEstoqueEntradaTO->qtd_item = $value['qtd'];
             $ItemEstoqueEntradaTO->vlr_custo = NULL;
             $ItemEstoqueEntradaTO->perc_imposto = NULL;
             $ItemEstoqueEntradaTO->perc_desconto = NULL;
             $ItemEstoqueEntradaTO->dta_validade = '2099-12-31';
             if ($ItemEstoqueEntradaDao->saveItemEstoqueEntrada($ItemEstoqueEntradaTO)) {
                 $EstoqueTO = new EstoqueTO();
                 $EstoqueDao = new EstoqueDao();
                 $PrecoProdutoTO = new PrecoProdutoTO();
                 $PrecoProdutoDao = new PrecoProdutoDao();
                 $EstoqueTO->id_deposito = $EstoqueEntradaTO->id_deposito;
                 $EstoqueTO->id_produto = $ItemEstoqueEntradaTO->id_produto;
                 $EstoqueTO->qtd_item = $ItemEstoqueEntradaTO->qtd_item;
                 $EstoqueTO->dta_validade = $ItemEstoqueEntradaTO->dta_validade;
                 if (!$EstoqueDao->atualizaEstoque($EstoqueTO)) {
                     Flight::halt(500, 'erro ao atualizar estoque');
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir itens da entrada');
             }
         }
     } else {
         Flight::halt(500, 'erro ao inserir entrada no estoque');
     }
     $VendaTO->id_usuario = $pedido_venda['id_usuario'];
     $VendaTO->id_cliente = $pedido_venda['id_cliente'];
     $VendaTO->venda_confirmada = 1;
     $VendaTO->id_empreendimento = $pedido_venda['id_empreendimento'];
     $VendaTO->id_status_venda = 2;
     $VendaTO->id_pedido_venda = $pedido_venda['id'];
     $id_venda = $VendaDao->saveVenda($VendaTO);
     if (!$id_venda) {
         Flight::halt(500, 'erro ao inserir venda');
     }
     foreach ($pedido_gerado['itens'] as $key => $value) {
         $ItemVendaTO->id_venda = $id_venda;
         $ItemVendaTO->id_produto = $value['id_produto'];
         $ItemVendaTO->desconto_aplicado = $value['desconto_aplicado'];
         $ItemVendaTO->valor_desconto = $value['valor_desconto'];
         $ItemVendaTO->qtd = $value['qtd'];
         $ItemVendaTO->valor_real_item = $value['valor_real_item'];
         $ItemVendaTO->vlr_custo = $value['vlr_custo'];
         $ItemVendaTO->perc_imposto_compra = $value['perc_imposto_compra'];
         $ItemVendaTO->perc_desconto_compra = $value['perc_desconto_compra'];
         $ItemVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada'];
         if (!$ItemVendaDao->saveItemVenda($ItemVendaTO)) {
             Flight::halt(500, 'erro ao inserir os itens da venda');
         }
         if (!$EstoqueDao->baixaEstoquePDV($id_empreendimento, $id_venda, $value['id_produto'], $caixa['id_deposito'], $value['qtd'])) {
             Flight::halt(500, 'error ao atualizar estoque');
         }
     }
     $this->changeStatusPedido($id_pedido_venda, 3);
     Flight::halt(201);
 }
 public static function gravarVenda()
 {
     $venda = $_POST['venda'];
     $VendaDao = new VendaDao();
     $VendaTO = new VendaTO();
     $VendaTO->id_usuario = isset($venda['id_usuario']) ? $venda['id_usuario'] : NULL;
     $VendaTO->id_cliente = is_numeric($venda['id_cliente']) ? $venda['id_cliente'] : NULL;
     $VendaTO->venda_confirmada = isset($venda['venda_confirmada']) ? $venda['venda_confirmada'] : NULL;
     $VendaTO->id_empreendimento = isset($venda['id_empreendimento']) ? $venda['id_empreendimento'] : NULL;
     $VendaTO->id_status_venda = isset($venda['id_status_venda']) ? $venda['id_status_venda'] : 4;
     $VendaTO->dta_venda = isset($venda['dta_venda']) ? $venda['dta_venda'] : NULL;
     $id_atendimento = isset($venda['id_atendimento']) ? $venda['id_atendimento'] : NULL;
     $id_venda = $VendaDao->saveVenda($VendaTO);
     if (!$id_venda) {
         Flight::halt(500, 'erro ao inserir venda');
     } else {
         $AtendimentoDao = new AtendimentoDao();
         if (is_numeric($id_atendimento)) {
             $AtendimentoDao->gravarAtendimentoVenda($id_atendimento, $id_venda, null);
         }
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_venda' => $id_venda)))->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());
     }
 }
 public static function save()
 {
     $osTO = new OrdemServicoTO();
     $osTO->__setAll($_POST);
     $validator = new DataValidator();
     $validator->set_msg('O campo Cliente é obrigatório')->set('id_cliente', $osTO->cliente)->is_required();
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     $cliTO = new UsuarioTO();
     $cliTO->__setAll($osTO->cliente);
     $osTO->cliente = $cliTO;
     $crtTO = new UsuarioTO();
     $crtTO->__setAll($osTO->criador);
     $osTO->criador = $crtTO;
     if (count($osTO->servicos) > 0) {
         foreach ($osTO->servicos as $key => $servico) {
             $newObjTO = new ServicoTO();
             $newObjTO->__setAll($servico);
             $osTO->servicos[$key] = $newObjTO;
         }
     }
     if (count($osTO->produtos) > 0) {
         foreach ($osTO->produtos as $key => $produto) {
             $newObjTO = new ProdutoOSTO();
             $newObjTO->__setAll($produto);
             $osTO->produtos[$key] = $newObjTO;
         }
     }
     if (!$osTO->id) {
         // Grava a venda
         $venTO = new VendaTO();
         $venTO->id_usuario = $osTO->criador->id;
         $venTO->id_cliente = $osTO->cliente->id;
         $venTO->venda_confirmada = $osTO->cod_status_servico == "4" ? 0 : 1;
         $venTO->id_empreendimento = $osTO->id_empreendimento;
         $venTO->id_status_venda = $osTO->cod_status_servico == "4" ? 5 : 6;
         $venDao = new VendaDao();
         $venTO->id = $venDao->saveVenda($venTO);
         if (!$venTO->id) {
             Flight::halt(500, 'Erro ao salvar as informações da venda');
         } else {
             $osTO->id_venda = $venTO->id;
             // Grava os servicos na venda
             if (count($osTO->servicos) > 0) {
                 foreach ($osTO->servicos as $key => $servico) {
                     $itvTO = new ItemVendaTO();
                     $itvTO->id_venda = $venTO->id;
                     $itvTO->id_produto = NULL;
                     $itvTO->desconto_aplicado = 0;
                     $itvTO->valor_desconto = 0;
                     $itvTO->qtd = 1;
                     $itvTO->valor_real_item = $servico->vlr_procedimento;
                     $itvTO->vlr_custo = 0;
                     $itvTO->perc_imposto_compra = 0;
                     $itvTO->perc_desconto_compra = 0;
                     $itvTO->perc_margem_aplicada = 0;
                     $itvTO->id_procedimento = $servico->id;
                     $itvTO->id_status_procedimento = $servico->cod_status_servico;
                     $itvDao = new ItemVendaDao();
                     $osTO->servicos[$key]->id = $itvDao->saveItemVenda($itvTO);
                     if (!$osTO->servicos[$key]->id) {
                         Flight::halt(500, 'Erro ao associar o serviço [' . $servico->dsc_procedimento . '] na venda');
                     }
                 }
             }
             // Grava os produtos na venda
             if (count($osTO->produtos) > 0) {
                 foreach ($osTO->produtos as $key => $produto) {
                     $itvTO = new ItemVendaTO();
                     $itvTO->id_venda = $venTO->id;
                     $itvTO->id_produto = $produto->id_produto;
                     $itvTO->desconto_aplicado = 0;
                     $itvTO->valor_desconto = 0;
                     $itvTO->qtd = $produto->qtd_pedido;
                     $itvTO->valor_real_item = $produto->vlr_venda_varejo;
                     $itvTO->vlr_custo = $produto->vlr_custo;
                     $itvTO->perc_imposto_compra = 0;
                     $itvTO->perc_desconto_compra = 0;
                     $itvTO->perc_margem_aplicada = $produto->margem_varejo;
                     $itvDao = new ItemVendaDao();
                     $osTO->produtos[$key]->id = $itvDao->saveItemVenda($itvTO);
                     if (!$osTO->produtos[$key]->id) {
                         Flight::halt(500, 'Erro ao associar o produto [' . $produto->nome . '] na venda');
                     }
                 }
             }
             // Grava a Ordem de Serviço
             $atdTO = new AtendimentoTO();
             $atdTO->id_empreendimento = $osTO->id_empreendimento;
             $atdTO->id_paciente = $osTO->cliente->id;
             $atdTO->dta_entrada = $osTO->dta_ordem_servico;
             $atdTO->id_usuario_entrada = $osTO->criador->id;
             $atdTO->id_status = $osTO->cod_status_servico;
             $atdDao = new AtendimentoDao();
             $atdTO->id = $atdDao->saveAtendimento($atdTO);
             if (!$atdTO->id) {
                 Flight::halt(500, 'Erro ao salvar as informações do serviço');
             } else {
                 // Associa a Ordem de Serviço a Venda
                 if (count($osTO->servicos) > 0) {
                     foreach ($osTO->servicos as $key => $servico) {
                         if (!$atdDao->gravarAtendimentoVenda($atdTO->id, $venTO->id, $servico->id)) {
                             Flight::halt(500, 'Erro ao associar o serviço a venda');
                         }
                     }
                 }
                 if (count($osTO->produtos) > 0) {
                     foreach ($osTO->produtos as $key => $produto) {
                         if (!$atdDao->gravarAtendimentoVenda($atdTO->id, $venTO->id, $produto->id)) {
                             Flight::halt(500, 'Erro ao associar o produto a venda');
                         }
                     }
                 }
             }
             $status_code = 201;
         }
     } else {
         $venda_confirmada = $osTO->cod_status_servico == "4" ? 0 : 1;
         $id_status_venda = $osTO->cod_status_servico == "4" ? 5 : 6;
         $flg_excluido = $osTO->cod_status_servico == "5" ? 1 : 0;
         // Atualiza os dados da venda
         $venDao = new VendaDao();
         if ($venDao->updateVendaData($osTO->cliente->id, $venda_confirmada, $id_status_venda, $flg_excluido, $osTO->id_venda)) {
             // Remove todos os servicos e produtos da venda
             $itvDao = new ItemVendaDao();
             if ($itvDao->deleteItemsByIdVenda($osTO->id_venda)) {
                 // Grava os servicos na venda
                 if (count($osTO->servicos) > 0) {
                     foreach ($osTO->servicos as $key => $servico) {
                         $itvTO = new ItemVendaTO();
                         $itvTO->id_venda = $osTO->id_venda;
                         $itvTO->id_produto = NULL;
                         $itvTO->desconto_aplicado = 0;
                         $itvTO->valor_desconto = 0;
                         $itvTO->qtd = 1;
                         $itvTO->valor_real_item = $servico->vlr_procedimento;
                         $itvTO->vlr_custo = 0;
                         $itvTO->perc_imposto_compra = 0;
                         $itvTO->perc_desconto_compra = 0;
                         $itvTO->perc_margem_aplicada = 0;
                         $itvTO->id_procedimento = $servico->id;
                         $itvTO->id_status_procedimento = $servico->cod_status_servico;
                         $osTO->servicos[$key]->id = $itvDao->saveItemVenda($itvTO);
                         if (!$osTO->servicos[$key]->id) {
                             Flight::halt(500, 'Erro ao associar o serviço [' . $servico->dsc_procedimento . '] na venda');
                         }
                     }
                 }
                 // Grava os produtos na venda
                 if (count($osTO->produtos) > 0) {
                     foreach ($osTO->produtos as $key => $produto) {
                         $itvTO = new ItemVendaTO();
                         $itvTO->id_venda = $osTO->id_venda;
                         $itvTO->id_produto = $produto->id_produto;
                         $itvTO->desconto_aplicado = 0;
                         $itvTO->valor_desconto = 0;
                         $itvTO->qtd = $produto->qtd_pedido;
                         $itvTO->valor_real_item = $produto->vlr_venda_varejo;
                         $itvTO->vlr_custo = $produto->vlr_custo;
                         $itvTO->perc_imposto_compra = 0;
                         $itvTO->perc_desconto_compra = 0;
                         $itvTO->perc_margem_aplicada = $produto->margem_varejo;
                         $osTO->produtos[$key]->id = $itvDao->saveItemVenda($itvTO);
                         if (!$osTO->produtos[$key]->id) {
                             Flight::halt(500, 'Erro ao associar o produto [' . $produto->nome . '] na venda');
                         }
                     }
                 }
                 // Atualiza os dados da Ordem de Serviço
                 $atdTO = new StdClass();
                 $atdTO->id_paciente = $osTO->cliente->id;
                 $atdTO->id_status = $osTO->cod_status_servico;
                 $atdDao = new AtendimentoDao();
                 if ($atdDao->updateAtendimento($atdTO, 'id=' . $osTO->id)) {
                     // Remove todos os servicos e produtos da ordem de serviço
                     $atdDao->deleteItemsByIdAtendimento($osTO->id);
                     // Associa a Ordem de Serviço a Venda
                     if (count($osTO->servicos) > 0) {
                         foreach ($osTO->servicos as $key => $servico) {
                             if (!$atdDao->gravarAtendimentoVenda($osTO->id, $osTO->id_venda, $servico->id)) {
                                 Flight::halt(500, 'Erro ao associar o serviço a venda');
                             }
                         }
                     }
                     if (count($osTO->produtos) > 0) {
                         foreach ($osTO->produtos as $key => $produto) {
                             if (!$atdDao->gravarAtendimentoVenda($osTO->id, $osTO->id_venda, $produto->id)) {
                                 Flight::halt(500, 'Erro ao associar o produto a venda');
                             }
                         }
                     }
                     $status_code = 200;
                 } else {
                     Flight::halt(500, 'Erro ao atualizar os dados da ordem de serviço');
                 }
             } else {
                 Flight::halt(500, 'Erro ao remover os servicos e produtos da venda');
             }
         } else {
             Flight::halt(500, 'Erro ao atualizar os dados da venda');
         }
     }
     // Grava a movimentação de caixa
     if ($osTO->cod_status_servico == "6") {
         $movCxaTO = new MovimentacaoCaixaTO();
         $movCxaTO->id_abertura_caixa = $osTO->id_abertura_caixa;
         $movCxaTO->id_plano_conta = $osTO->id_plano_conta;
         $movCxaTO->id_tipo_movimentacao = 5;
         $movCxaTO->dsc_movimentacao = 'Venda';
         $movCxaTO->id_venda = $osTO->id_venda;
         $movCxaTO->para_receber = $osTO->vlr_total_os;
         $movCxaTO->dta_movimentacao = $osTO->dta_ordem_servico;
         $movCxaDao = new MovimentacaoCaixaDao();
         if (!$movCxaDao->saveMovimentacao($movCxaTO)) {
             Flight::halt(500, 'erro ao inserir movimentacao');
         }
     }
     Flight::halt($status_code, 'Operação realizada com sucesso!');
 }