Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Ordem_Servico\Repositorio;
  4.  
  5. use Repositorio\AbstractRepositorio;
  6. use Repositorio\Exception\RepositorioException;
  7.  
  8. /**
  9. * Created by PhpStorm.
  10. * User: itallo
  11. * Date: 07/05/17
  12. * Time: 21:48
  13. */
  14. class ProdutoRepositorio extends AbstractRepositorio {
  15.  
  16. protected function getTabela() {
  17. return "t_os_produtos";
  18. }
  19.  
  20. protected function getChavePrimaria() {
  21. return "OSP_Codigo";
  22. }
  23.  
  24. /**
  25. * Busca produtos vinculados a vários serviços
  26. * @param array $servicos lista com os códigos dos produtos (ProdFil_Codigo)
  27. * @return array
  28. */
  29. public function buscarProdutoPorServicos(array $servicos) {
  30.  
  31. if (empty($servicos)) {
  32. return array();
  33. }
  34.  
  35. $sql = "SELECT
  36. os_produto.*,
  37. produto.Prod_Codigo,
  38. produto.ProdFil_Descricao,
  39. produto.ProdFil_Referencia,
  40. fabricante.Fab_Descricao
  41. FROM t_os_produtos os_produto
  42. JOIN t_estq_produtos_fil produto ON produto.ProdFil_Codigo = os_produto.ProdFil_Codigo
  43. LEFT JOIN t_fabricantes fabricante ON fabricante.Fab_Codigo = produto.Fab_Codigo
  44. WHERE os_produto.OSSer_Codigo in (" . implode(",", $servicos) . ")
  45. ";
  46.  
  47. $this->varcon->executa($sql);
  48. $servicos = array();
  49. for ($this->varcon->row = 0; $this->varcon->row < $this->varcon->nrw; $this->varcon->row++) {
  50. $this->varcon->dados(true);
  51. $servicos[$this->varcon->data['OSSer_Codigo']][] = $this->varcon->data;
  52. }
  53. return $servicos;
  54. }
  55.  
  56.  
  57. public function buscarProdutosPorOS($OS_Numero, $retornarProdutosInativos = false, array $filtros = array()) {
  58. $sql = "SELECT
  59. peca.*,
  60. SUM(peca.OSP_Quantidade) AS OSP_Quantidade,
  61. produto.Prod_Codigo,
  62. produto.ProdFil_Descricao,
  63. produto.ProdFil_Referencia,
  64. boxes.Box_Descricao
  65. FROM t_os_produtos peca
  66. JOIN t_estq_produtos_fil produto ON produto.ProdFil_Codigo = peca.ProdFil_Codigo
  67. LEFT JOIN t_estq_boxes boxes ON boxes.Box_Codigo = produto.Box_Codigo
  68. JOIN t_os_servicos servico ON servico.OSSer_Codigo = peca.OSSer_Codigo
  69. JOIN t_os_equipamentos equipamentos ON equipamentos.OSE_Codigo = servico.OSE_Codigo
  70. WHERE equipamentos.OS_Numero = '{$OS_Numero}'
  71. ";
  72.  
  73. $filtros = $this->retirarCamposInexistentesDadosEnviados($filtros);
  74.  
  75. foreach ($filtros as $campo => $filtro) {
  76. $sql .= " AND servico.{$campo} = '{$filtro}' ";
  77. }
  78.  
  79. $sql .= " GROUP BY peca.ProdFil_Codigo ";
  80.  
  81. return $this->executarConsultaMultiplosResultados($sql);
  82. }
  83.  
  84. public function inserirProduto($dados) {
  85.  
  86. try {
  87. return parent::inserir($dados);
  88. } catch (RepositorioException $ex) {
  89. throw new RepositorioException("Erro ao salvar produto", $ex->getErro(), $this);
  90. }
  91. }
  92.  
  93. public function excluirProdutosPorServico($OSSerCodigo) {
  94. $this->varcon->manipula("DELETE FROM " . $this->getTabela() . " WHERE OSSer_Codigo = '" . $OSSerCodigo . "' ");
  95. if ($this->varcon->erro) {
  96. throw new RepositorioException(
  97. "Não foi possível realizar exclusão dos produtos vinculados ao produto",
  98. $this->varcon->erro,
  99. $this
  100. );
  101. }
  102. }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement