public static function addItemComanda() { $ItemVendaTO = new ItemVendaTO(); $MesaDao = new MesaDao(); $ItemVendaTO->__setAll($_POST); $Conexao = new Conexao(); $Conexao::getInstance(); $EstoqueDao = new EstoqueDao(); if (isset($_POST['flg_produto_composto'])) { $flg_produto_composto = (int) $_POST['flg_produto_composto'] == 1 ? true : false; } try { if (!$flg_produto_composto) { $out = array(); $qtd = (int) $_POST['qtd']; $estoque = $EstoqueDao->getQtdProduto($_POST['id_empreendimento'], $_POST['id_produto'], null, $_POST['id_deposito'], null); $estoque_real = $estoque - $qtd; if ($estoque_real < 0) { $out[] = array((double) $_POST['id_produto']); } if (count($out) > 0) { Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out)))->send(); return; } } $Conexao->beginTransaction(); if ($flg_produto_composto) { $OrdemProducaoTO = new OrdemProducaoTO(); $OrdemProducaoDao = new OrdemProducaoDao(); $OrdemProducaoTO->id_empreendimento = $_POST['id_empreendimento']; $OrdemProducaoTO->id_responsavel = $_POST['id_usuario']; $OrdemProducaoTO->id_status = 1; $OrdemProducaoTO->id_deposito = $_POST['id_deposito']; $OrdemProducaoTO->dta_create = $_POST['dta_create']; $id_ordem_producao = $OrdemProducaoDao->saveOrdemProducao($OrdemProducaoTO); if (!$id_ordem_producao) { $Conexao->rollback(); Flight::halt(500, 'Erro ao cadastrar ordem de producão'); } $ItensOrdemProducaoTO = new ItensOrdemProducaoTO(); $ItensOrdemProducaoDao = new ItensOrdemProducaoDao(); $ItensOrdemProducaoTO->id_ordem_producao = $id_ordem_producao; $ItensOrdemProducaoTO->id_produto = $_POST['id_produto']; $ItensOrdemProducaoTO->qtd = $_POST['qtd']; $ItensOrdemProducaoTO->observacoes = isset($_POST['observacoes']) && !empty($_POST['observacoes']) ? $_POST['observacoes'] : ""; if (!$ItensOrdemProducaoDao->saveItensOrdemProducao($ItensOrdemProducaoTO)) { $Conexao->rollback(); Flight::halt(500, 'Erro ao cadastrar itens da ordem de producão'); } $ItemVendaTO->id_ordem_producao = $id_ordem_producao; } $MesaDao->addItemComanda($ItemVendaTO); $mesa = $MesaDao->getResumoMesa($_POST['id_mesa']); $saida = array('ordem_producao' => null, 'mesa' => $mesa); if (isset($id_ordem_producao)) { $ordem_producao = $MesaDao->getOrdemProducao($id_ordem_producao); $saida['ordem_producao'] = $ordem_producao; } Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode($saida))->send(); } catch (Exception $e) { jsonException($e); } }
public static function changeStatus($id_ordem_producao, $id_status_change, $id_empreendimento, $id_usuario) { $OrdemProducaoDao = new OrdemProducaoDao(); $ItensOrdemProducaoDao = new ItensOrdemProducaoDao(); $EstoqueDao = new EstoqueDao(); $Dao = new Dao(); $ProdutoDao = new ProdutoDao(); $out = array(); $Dao->setTimeZone($id_empreendimento); $dta_change = date('Y-m-d H:i:s'); $itens = $ItensOrdemProducaoDao->getItensOrdemProducao(null, null, array('tiop.id_ordem_producao' => $id_ordem_producao)); $aux = array(); $insumos = array(); $OrdensProducao = $OrdemProducaoDao->getOrdemProducao(NULL, NULL, array('top->id' => $id_ordem_producao)); $OrdensProducao = $OrdensProducao[0]; $status = $OrdemProducaoDao->getStatus(array("id" => $id_status_change)); $status = $status[0]; foreach ($itens as $key => $value) { $item_aux = $value; $item_aux['qtd_produzir'] = (int) $value['qtd']; $item_aux['itens'] = $ProdutoDao->getInsumos($value['id_produto'], null); $aux[$value['id_produto']] = $item_aux; foreach ($item_aux['itens'] as $key_i => $value_i) { $qtd_produzir = $item_aux['qtd_produzir']; $qtd = $value_i['qtd']; if (isset($insumos[$value_i['id']])) { $insumos[$value_i['id']]['qtd'] += $qtd_produzir * $qtd; } else { $insumos[$value_i['id']] = array('qtd' => $qtd_produzir * $qtd); } } } if ((int) $id_status_change == 2 || (int) $id_status_change == 3) { foreach ($insumos as $key => $value) { $qtd = (int) $value['qtd']; $estoque = $EstoqueDao->getQtdProduto($id_empreendimento, $key, null, $OrdensProducao['id_deposito']); $estoque_real = $estoque - $qtd; if ($estoque_real < 0) { $out[] = array((double) $key); } } } if (count($out) > 0) { Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode(array('out_estoque' => $out, 'lista' => $aux)))->send(); return; } try { $Conexao = new Conexao(); $Conexao::$alto_commit = false; $Conexao::getInstance(); $Conexao->beginTransaction(); if ((int) $id_status_change == 3) { $EstoqueEntradaTO = new EstoqueEntradaTO(); $EstoqueEntradaDao = new EstoqueEntradaDao(); $EstoqueEntradaTO->id_empreendimento = $id_empreendimento; $EstoqueEntradaTO->id_deposito = $OrdensProducao['id_deposito']; $EstoqueEntradaTO->id_ordem_producao = $id_ordem_producao; $EstoqueEntradaTO->dta_entrada = $dta_change; $EstoqueEntradaTO->id_usuario = $id_usuario; $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO); if ($id_estoque_entrada) { $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO(); $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao(); foreach ($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'; $id_item_estoque_entrada = $ItemEstoqueEntradaDao->saveItemEstoqueEntrada($ItemEstoqueEntradaTO); if ($id_item_estoque_entrada) { $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; $dadosTrigger = new StdClass(); $dadosTrigger->qtd_entrada = $EstoqueTO->qtd_item; $dadosTrigger->acao_movimentacao = 'ENTRADA'; $dadosTrigger->id_tipo_movimentacao_estoque = 4; $dadosTrigger->id_estoque_entrada = $id_estoque_entrada; $dadosTrigger->id_item_estoque_entrada = $id_item_estoque_entrada; $dadosTrigger->id_responsavel = $id_usuario; $dadosTrigger->id_empreendimento = $id_empreendimento; $dadosTrigger->id_ordem_producao = $id_ordem_producao; if (!$EstoqueDao->atualizaEstoque($EstoqueTO, 'update', $dadosTrigger)) { $Conexao->back(); Flight::halt(500, 'erro ao atualizar estoque'); } } else { $Conexao->back(); Flight::halt(500, 'erro ao inserir itens da entrada'); } } } else { $Conexao->back(); Flight::halt(500, 'erro ao inserir entrada no estoque'); } foreach ($insumos as $key => $value) { if (!$EstoqueDao->baixaEstoqueOrdemProducao($OrdensProducao['id_empreendimento'], $OrdensProducao['id'], $key, $OrdensProducao['id_deposito'], $value['qtd'], $id_usuario)) { $Conexao->back(); Flight::halt(500, 'error ao atualizar saida estoque'); } } } if (!$OrdemProducaoDao->ChangeStatus($id_ordem_producao, $id_status_change, $dta_change)) { $Conexao->back(); Flight::halt(500, 'Erro ao cadastrar mudança de status 1'); } if (!$OrdemProducaoDao->savechangeOrdemProducao($id_ordem_producao, $id_status_change, $dta_change)) { $Conexao->back(); Flight::halt(500, 'Erro ao cadastrar mudança de status 2'); } $Conexao->commit(); Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('status' => $status)))->send(); } catch (Exception $e) { $Conexao->back(); jsonException($e); } }