public static function getItens($id_venda, $offset, $limit) { $ItemVendaDao = new ItemVendaDao(); if (is_numeric($id_venda)) { $Fornecedor = $ItemVendaDao->getItens($id_venda, $offset, $limit, $_GET); if ($Fornecedor) { Flight::json($Fornecedor); } else { Flight::halt(404, 'Não à resultado para a busca'); } } else { Flight::halt(406, 'parametro recusado'); } }
public static function getComanda($id_comanda) { $VendaDao = new VendaDao(); $ItemVendaDao = new ItemVendaDao(); $UsuarioDao = new UsuarioDao(); $comanda = $VendaDao->getVenda($id_comanda, array("tv.venda_confirmada" => 0)); $cliente = $UsuarioDao->getUsuario($comanda['id_empreendimento'], $comanda['id_cliente']); $itens = $ItemVendaDao->getItensOrcamento($id_comanda, 'new'); if ($comanda && $cliente) { $comanda['itens'] = is_array($itens) ? $itens : array(); Flight::json(array("comanda" => $comanda, "cliente" => $cliente)); } else { Flight::halt(404, 'Comanda não encontrada'); } }
<?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 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 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 gravarItensVenda() { $ItemVendaDao = new ItemVendaDao(); $ItemVendaTO = new ItemVendaTO(); $EstoqueDao = new EstoqueDao(); $produtos = $_POST['produtos']; $id_empreendimento = $_POST['id_empreendimento']; $id_venda = $_POST['id_venda']; //var_dump($_POST);die ; foreach ($produtos as $key => $value) { $ItemVendaTO->id_venda = $id_venda; $ItemVendaTO->id_produto = NULL; $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_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']; $ItemVendaTO->id_procedimento = isset($value['id_procedimento']) ? $value['id_procedimento'] : NULL; $ItemVendaTO->id_dente = isset($value['id_dente']) ? $value['id_dente'] : NULL; $ItemVendaTO->id_regiao = isset($value['id_regiao']) ? $value['id_regiao'] : NULL; $ItemVendaTO->id_status_procedimento = isset($value['id_status_procedimento']) ? $value['id_status_procedimento'] : NULL; $ItemVendaTO->id_procedimento_principal = isset($value['id_procedimento_principal']) ? $value['id_procedimento_principal'] : NULL; $id_item_venda = $ItemVendaDao->saveItemVenda($ItemVendaTO); if (!$id_item_venda) { Flight::halt(500, 'erro ao inserir os itens da venda'); } } Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_item_venda' => $id_item_venda)))->send(); }
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!'); }
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); }