public function baixaEstoqueClinica($id_empreendimento, $produtos, $id_deposito, $id_cliente, $id_usuario, $id_profissional, $flg_saida_manual = 0) { $EstoqueSaidaTO = new EstoqueSaidaTO(); $EstoqueSaidaDao = new EstoqueSaidaDao(); $EstoqueSaidaTO->id_empreendimento = $id_empreendimento; $EstoqueSaidaTO->id_cliente = $id_cliente; $EstoqueSaidaTO->id_usuario = $id_usuario; $EstoqueSaidaTO->id_profissional = $id_profissional; $EstoqueSaidaTO->flg_saida_manual = $flg_saida_manual; $id_estoque_saida = $EstoqueSaidaDao->saveEstoqueSaida($EstoqueSaidaTO); foreach ($produtos as $key => $produto) { $estoque = parse_arr_values($this->getEstoque(null, null, array("orderby" => " etq.qtd_item DESC,dta_validade ASC ", "etq.id_deposito" => $id_deposito, "prd.id" => $produto['id'], "etq.qtd_item" => array('exp' => '>0'))), 'all'); $estoque = $estoque['produtos']; $estoque_saida = array(); $qtd_saida_restante = $produto['qtd_saida']; foreach ($estoque as $key => $value) { $qtd_item = $value['qtd_item']; if ($qtd_item >= $qtd_saida_restante) { $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => $qtd_item - $qtd_saida_restante, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_saida_restante, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']); break; } else { $qtd_saida_restante = abs($qtd_item - $qtd_saida_restante); $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => $qtd_item - $qtd_saida_restante, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_item, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']); } } $sql = ""; $ItemEstoqueSaidaTO = new ItemEstoqueSaidaTO(); $ItemEstoqueSaidaDao = new ItemEstoqueSaidaDao(); foreach ($estoque_saida as $key => $value) { $ItemEstoqueSaidaTO->id_estoque_saida = $id_estoque_saida; $ItemEstoqueSaidaTO->id_deposito = $value['id_deposito']; $ItemEstoqueSaidaTO->id_produto = $value['id_produto']; $ItemEstoqueSaidaTO->dta_validade = $value['dta_validade']; $ItemEstoqueSaidaTO->qtd_item = $value['qtd_saida']; $id_item_estoque_saida = $ItemEstoqueSaidaDao->saveItemEstoqueSaida($ItemEstoqueSaidaTO); if (!$id_item_estoque_saida) { return false; } $dadosTrigger = new StdClass(); $dadosTrigger->qtd_saida = $value['qtd_saida']; $dadosTrigger->acao_movimentacao = 'SAIDA'; $dadosTrigger->id_tipo_movimentacao_estoque = 11; $dadosTrigger->id_estoque_saida = $id_estoque_saida; $dadosTrigger->id_item_estoque_saida = $id_item_estoque_saida; $dadosTrigger->id_responsavel = $id_usuario; $dadosTrigger->id_empreendimento = $id_empreendimento; $TRGTblEstoqueAUTO = new TRGTblEstoqueAUTO(); $TRGTblEstoqueAUTO->__setAll($dadosTrigger); $varTriggerSql = ""; if (!empty($dadosTrigger)) { foreach ($TRGTblEstoqueAUTO as $keyTrigger => $valueTrigger) { if ($valueTrigger == null) { $varTriggerSql .= "SET @{$keyTrigger} = NULL;"; } else { $varTriggerSql .= "SET @{$keyTrigger} = '{$valueTrigger}';"; } } } $sql = 'UPDATE tbl_estoque SET qtd_item = ' . $value['qtd_item'] . ', dta_ultima_atualizacao = NOW() WHERE id = ' . $value['id'] . ';'; $this->rumQuery($varTriggerSql); $update = $this->conn->prepare($sql); if (!$update->execute()) { return false; } } } return true; }
public function salvarDevolucao(DevolucaoTO $DevolucaoTO, $itens_devolucao, $id_deposito) { $dta_criacao = date('Y-m-d H:i:s'); $vlr_devolucao = 0; $sql_insert_devolucao = "INSERT INTO tbl_devolucao (id_empreendimento, id_venda, obs_devolucao, dta_devolucao,id_operador) \n\t\t\t\t\t\t\t\t\t VALUES (:id_empreendimento, :id_venda, :obs_devolucao, :dta_devolucao,:id_operador);"; $sql_insert_item_devolucao = "INSERT INTO tbl_itens_devolucao (id_produto, id_devolucao, qtd, valor_real_devolucao, dta_validade) \n\t\t\t\t\t\t\t\t \t VALUES (:id_produto, :id_devolucao, :qtd, :valor_real_devolucao, :dta_validade)"; $sql_update_itens_venda = " UPDATE tbl_itens_venda SET flg_produto_devolvido = :flg_produto_devolvido, qtd_devolvida = qtd_devolvida+:qtd_devolvida\n\t\t\t\t\t\t\t\t \t WHERE id = :id"; $sql_insert_vale_troca = "INSERT INTO tbl_vale_troca (id_devolucao, dta_criacao, vlr_disponivel) \n\t\t\t\t\t\t\t\t\t VALUES (:id_devolucao, :dta_criacao, :vlr_disponivel);"; $insert_devolucao = $this->conn->prepare($sql_insert_devolucao); $insert_devolucao->bindValue(':id_empreendimento', $DevolucaoTO->id_empreendimento, PDO::PARAM_STR); $insert_devolucao->bindValue(':id_venda', $DevolucaoTO->id_venda, PDO::PARAM_STR); $insert_devolucao->bindValue(':id_operador', $DevolucaoTO->id_operador, PDO::PARAM_STR); $insert_devolucao->bindValue(':obs_devolucao', $DevolucaoTO->obs_devolucao, PDO::PARAM_STR); $insert_devolucao->bindValue(':dta_devolucao', $dta_criacao, PDO::PARAM_STR); if ($insert_devolucao->execute()) { $id_devolucao = $this->conn->lastInsertId(); $EstoqueEntradaDao = new EstoqueEntradaDao(); $EstoqueEntradaTO = new EstoqueEntradaTO(); $EstoqueEntradaTO->id_empreendimento = $DevolucaoTO->id_empreendimento; $EstoqueEntradaTO->dta_entrada = $dta_criacao; $EstoqueEntradaTO->id_devolucao = $id_devolucao; $EstoqueEntradaTO->vlr_total_imposto = 0; $EstoqueEntradaTO->vlr_frete = 0; $EstoqueEntradaTO->vlr_total_nota_fiscal = 0; $EstoqueEntradaTO->id_deposito = $id_deposito; $id_estoque_entrada = $EstoqueEntradaDao->saveEstoqueEntrada($EstoqueEntradaTO); foreach ($itens_devolucao as $key => $value) { $insert_item_devolucao = $this->conn->prepare($sql_insert_item_devolucao); $insert_item_devolucao->bindValue(':id_produto', $value['id_produto'], PDO::PARAM_STR); $insert_item_devolucao->bindValue(':id_devolucao', $id_devolucao, PDO::PARAM_STR); $insert_item_devolucao->bindValue(':qtd', $value['qtd'], PDO::PARAM_STR); $insert_item_devolucao->bindValue(':valor_real_devolucao', $value['valor_real_devolucao'], PDO::PARAM_STR); $insert_item_devolucao->bindValue(':dta_validade', $value['dta_validade'], PDO::PARAM_STR); $vlr_devolucao += (int) $value['qtd'] * (double) $value['valor_real_devolucao']; if (!$insert_item_devolucao->execute()) { $this->PDOException($insert_item_devolucao); } $ItemEstoqueEntradaTO = new ItemEstoqueEntradaTO(); $ItemEstoqueEntradaDao = new ItemEstoqueEntradaDao(); $ItemEstoqueEntradaTO->id_estoque_entrada = $id_estoque_entrada; $ItemEstoqueEntradaTO->id_produto = $value['id_produto']; $ItemEstoqueEntradaTO->qtd_item = $value['qtd']; $ItemEstoqueEntradaTO->vlr_custo = $value['vlr_custo']; $ItemEstoqueEntradaTO->perc_imposto = isset($value['perc_imposto_compra']) ? $value['perc_imposto_compra'] : 0; $ItemEstoqueEntradaTO->perc_desconto = isset($value['perc_desconto_compra']) ? $value['perc_desconto_compra'] : 0; $ItemEstoqueEntradaTO->dta_validade = $value['dta_validade']; $ItemEstoqueEntradaTO->id_deposito = $value['id_deposito']; $id_item_estoque_entrada = $ItemEstoqueEntradaDao->saveItem($ItemEstoqueEntradaTO); $update_itens_venda = $this->conn->prepare($sql_update_itens_venda); $update_itens_venda->bindValue(':flg_produto_devolvido', 1, PDO::PARAM_STR); $update_itens_venda->bindValue(':qtd_devolvida', (int) $value['qtd'], PDO::PARAM_INT); $update_itens_venda->bindValue(':id', $value['id_item_venda'], PDO::PARAM_STR); if (!$update_itens_venda->execute()) { $this->PDOException($update_itens_venda); } $EstoqueDao = new EstoqueDao(); $exist = $EstoqueDao->existProdutoEstoque($value['id_produto'], $value['id_deposito'], $value['dta_validade']); if ($exist) { $sql_atualiza_estoque = "UPDATE tbl_estoque SET qtd_item = qtd_item + :qtd_item , dta_ultima_atualizacao = NOW(),\n\t\t\t\t\t\t\t\tdta_validade = :dta_validade\n\t\t\t\t\t\t\t WHERE id_produto = :id_produto AND id_deposito = :id_deposito AND dta_validade = :dta_validade"; } else { $sql_atualiza_estoque = "INSERT INTO tbl_estoque (id_deposito ,id_produto, qtd_item,dta_ultima_atualizacao,dta_validade)\n\t\t\t\t\t\t\t\tVALUES (:id_deposito, :id_produto, :qtd_item, NOW(),:dta_validade);"; } $atualiza_estoque = $this->conn->prepare($sql_atualiza_estoque); $atualiza_estoque->bindValue(':id_deposito', $value['id_deposito'], PDO::PARAM_STR); $atualiza_estoque->bindValue(':id_produto', $value['id_produto'], PDO::PARAM_STR); $atualiza_estoque->bindValue(':qtd_item', (int) $value['qtd'], PDO::PARAM_INT); $atualiza_estoque->bindValue(':dta_validade', $value['dta_validade'], PDO::PARAM_STR); $dadosTrigger = new StdClass(); $dadosTrigger->qtd_entrada = $value['qtd']; $dadosTrigger->acao_movimentacao = 'ENTRADA'; $dadosTrigger->id_tipo_movimentacao_estoque = 6; $dadosTrigger->id_estoque_entrada = $id_estoque_entrada; $dadosTrigger->id_item_estoque_entrada = $id_item_estoque_entrada; $dadosTrigger->id_responsavel = $DevolucaoTO->id_operador; $dadosTrigger->id_empreendimento = $DevolucaoTO->id_empreendimento; $dadosTrigger->id_devolucao = $id_devolucao; $varTriggerSql = ""; $TRGTblEstoqueAUTO = new TRGTblEstoqueAUTO(); $TRGTblEstoqueAUTO->__setAll($dadosTrigger); if (!empty($dadosTrigger)) { foreach ($TRGTblEstoqueAUTO as $keyTrigger => $valueTrigger) { if ($valueTrigger == null) { $varTriggerSql .= "SET @{$keyTrigger} = NULL;"; } else { $varTriggerSql .= "SET @{$keyTrigger} = '{$valueTrigger}';"; } } } $this->rumQuery($varTriggerSql); if (!$atualiza_estoque->execute()) { $this->PDOException($atualiza_estoque); } } $insert_vale_troca = $this->conn->prepare($sql_insert_vale_troca); $insert_vale_troca->bindValue(':id_devolucao', $id_devolucao, PDO::PARAM_STR); $insert_vale_troca->bindValue(':dta_criacao', $dta_criacao, PDO::PARAM_STR); $insert_vale_troca->bindValue(':vlr_disponivel', $vlr_devolucao, PDO::PARAM_STR); if (!$insert_vale_troca->execute()) { $this->PDOException($insert_vale_troca); } return true; } else { $this->PDOException($insert_devolucao); } }
public static function baixaEstoque($id_empreendimento, $id_usuario, $produtos, $id_transferencia_estoque, $validade = false) { $EstoqueSaidaTO = new EstoqueSaidaTO(); $EstoqueSaidaDao = new EstoqueSaidaDao(); $EstoqueDao = new EstoqueDao(); $EstoqueSaidaTO->id_empreendimento = $id_empreendimento; $EstoqueSaidaTO->id_usuario = $id_usuario; $EstoqueSaidaTO->id_transferencia_estoque = $id_transferencia_estoque; $id_estoque_saida = $EstoqueSaidaDao->saveEstoqueSaida($EstoqueSaidaTO); foreach ($produtos as $key => $produto) { if ((int) $produto['qtd_transferida'] > 0) { $busca = array("orderby" => " etq.qtd_item DESC,dta_validade ASC ", "etq.id_deposito" => $produto['id_deposito_saida'], "prd.id" => $produto['id_produto'], "etq.qtd_item" => array('exp' => '>0')); if ($validade) { $busca['etq.dta_validade'] = $produto['dta_validade']; } $estoque = parse_arr_values($EstoqueDao->getEstoque(null, null, $busca), 'all'); $estoque = $estoque['produtos']; $estoque_saida = array(); $qtd_saida_restante = $produto['qtd_transferida']; foreach ($estoque as $key => $value) { $qtd_item = $value['qtd_item']; if ($qtd_item >= $qtd_saida_restante) { $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => $qtd_item - $qtd_saida_restante, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_saida_restante, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']); break; } else { $qtd_saida_restante = abs($qtd_item - $qtd_saida_restante); $estoque_saida[] = array('id' => $value['id'], 'qtd_item' => 0, 'dta_validade' => $value['dta_validade'], 'qtd_saida' => $qtd_item, 'id_deposito' => $value['id_deposito'], 'id_produto' => $value['id_produto']); } } $sql = ""; $ItemEstoqueSaidaTO = new ItemEstoqueSaidaTO(); $ItemEstoqueSaidaDao = new ItemEstoqueSaidaDao(); foreach ($estoque_saida as $key => $value) { $ItemEstoqueSaidaTO->id_estoque_saida = $id_estoque_saida; $ItemEstoqueSaidaTO->id_deposito = $value['id_deposito']; $ItemEstoqueSaidaTO->id_produto = $value['id_produto']; $ItemEstoqueSaidaTO->dta_validade = $value['dta_validade']; $ItemEstoqueSaidaTO->qtd_item = $value['qtd_saida']; $id_item_estoque_saida = $ItemEstoqueSaidaDao->saveItemEstoqueSaida($ItemEstoqueSaidaTO); if (!$id_item_estoque_saida) { return false; } $dadosTrigger = new StdClass(); $dadosTrigger->qtd_saida = $value['qtd_saida']; $dadosTrigger->acao_movimentacao = 'SAIDA'; $dadosTrigger->id_tipo_movimentacao_estoque = 5; $dadosTrigger->id_estoque_saida = $id_estoque_saida; $dadosTrigger->id_item_estoque_saida = $id_item_estoque_saida; $dadosTrigger->id_responsavel = $id_usuario; $dadosTrigger->id_empreendimento = $id_empreendimento; $dadosTrigger->id_transferencia = $id_transferencia_estoque; $varTriggerSql = ""; $TRGTblEstoqueAUTO = new TRGTblEstoqueAUTO(); $TRGTblEstoqueAUTO->__setAll($dadosTrigger); if (!empty($dadosTrigger)) { foreach ($TRGTblEstoqueAUTO as $keyTrigger => $valueTrigger) { if ($valueTrigger == null) { $varTriggerSql .= "SET @{$keyTrigger} = NULL;"; } else { $varTriggerSql .= "SET @{$keyTrigger} = '{$valueTrigger}';"; } } } $sql = 'UPDATE tbl_estoque SET qtd_item = ' . $value['qtd_item'] . ', dta_ultima_atualizacao = NOW() WHERE id = ' . $value['id'] . ';'; $EstoqueDao->rumQuery($varTriggerSql, false); $EstoqueDao->rumQuery($sql, false); } /*foreach ($estoque_saida as $key => $value) { $sql .= 'UPDATE tbl_estoque SET qtd_item = '.$value['qtd_item'].', dta_ultima_atualizacao = NOW() WHERE id = '.$value['id'].';'; } $EstoqueDao->rumQuery($sql);*/ } } return true; }