예제 #1
0
 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);
     }
 }