Views & Functions: mudanças entre as edições

De Wiki NBS
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=== CRMSERVICE ===
 
{| class="wikitable"
{| class="wikitable"
!Nome
!Nome
!Função
!Função
!Parametros
!Parametros
|-
|'''VW_CRMSERVICE_OS_ANDAMENTO'''
|Retorna o andamento de uma OS&Orçamento
<small>select andamento</small>
<small>from VW_CRMSERVICE_OS_ANDAMENTO</small>  <small>where cod_empresa = 40 </small><small>and numero_os = 43</small>
|
* Cod_empresa
* Numero_os
|-
|-
| rowspan="2" |'''VW_CRMSERVICE_REQUISICAO'''
| rowspan="2" |'''VW_CRMSERVICE_REQUISICAO'''
|Retorna as Requisições de uma OS  
|Retorna as Requisições de uma OS   com o preço liquido Total (* qtde) já calculado.
com o preço liquido Total (* qtde) já calculado
''Parece bobagem, mas ja viram o calculo bisonho que é pra achar o preço de uma peça ? pois é...''
|
|
* Cod_empresa
* Cod_empresa
Linha 25: Linha 15:
|-
|-
| rowspan="2" |'''VW_CRM_SERVICE_TEMPO_DISPONIVEL'''
| rowspan="2" |'''VW_CRM_SERVICE_TEMPO_DISPONIVEL'''
(Lê OS_Agenda_servicos)
|Calcula o tempo disponível em uma data, por BOX.
Por consequência, o tempo disponível do produtivo do BOX.


'''Importante: Ele considera os Eventos do produtivo, Cursos, Ferias, Feriados'''
| colspan="2" |'''Calcula por DAta/Box'''
|'''Não tem obrigatório'''
# ''<small>O tempo Total no dia/box</small>''
Posso pegar
# ''<small>O tempo OCUPADO (pelos CHIPS da Agenda)</small>''
* Cod_empresa
# ''<small>O Tempo disponível na Data/Box</small>''
* Período de Data
 
* box
<small>Importante: Ele considera os Eventos do produtivo, Cursos, Ferias, Feriados</small>
* Produtivo
|-
| colspan="2" |
{| class="wikitable"
!Empresa/Período
!Empresa/Período/Box
!Empresa/Período/Produtivo
|-
|select sum(v.tempo_total)      Tp_agenda, 
       sum(v.tempo_ocupado)    Tp_ocupado , 
 
       sum(v.tempo_disponivel) Tp_disp
 
from '''VW_crmservice_tempo_disponivel''' v
 
--
 
where cod_empresa = 34
 
and   data >= to_date('01/07/2016')
 
and   data <= to_date('30/07/2016')
|select v.prisma,
       sum(v.tempo_total)      Tp_agenda, 
 
       sum(v.tempo_ocupado)    Tp_ocupado , 
 
       sum(v.tempo_disponivel) Tp_disp
 
from '''VW_crmservice_tempo_disponivel''' v
 
--
 
where cod_empresa = 34
 
and   data >= to_date('01/07/2016')
 
and   data <= to_date('30/07/2016')
 
Group by v.prisma
|select v.cod_tecnico,
sum(v.tempo_total)      Tempo_agenda, 
 
       sum(v.tempo_ocupado)    Tempo_ocupado , 
 
       sum(v.tempo_disponivel) Tempo_disponivel
 
from '''VW_crmservice_tempo_disponivel''' v
 
--
 
where cod_empresa = 34
 
and   data >= to_date('01/07/2016')
 
and   data <= to_date('30/07/2016')
 
Group by v.cod_tecnico
|-
|-
| colspan="2" |select * from VW_CRM_SERVICE_TEMPO_DISPONIVEL[[Arquivo:Imageor1.png|esquerda|miniaturadaimagem|1021x1021px]]
|[[Arquivo:Imageor20.png|esquerda|miniaturadaimagem]]
|[[Arquivo:Imageor21.png|esquerda|miniaturadaimagem]]
|[[Arquivo:Imageor30.png|esquerda|miniaturadaimagem]]
|}
 
|-
|-
| rowspan="2" |'''VW_CRMSERVICE_TP_TRABALHADO'''
| rowspan="2" |
|Calcula o Tempo trabalhado em um SERVICO de uma OS, por um técnico.
'''F_GET_TEMPO_TRABALHADO'''
Importante: ele considera os Eventos do produtivo no Caso de ter  pulado apontamento de um dia para outro.
 
| colspan="2" |Calcular o tempo trabalhado do produtivo,
Tratando inicio em um dia e parada em outro, assim como data final nula  considerado sysdate.
 
Quando data inicial e final for diferente, vai descontar domingos e feriados e horas paradas do produtivo cadastradas na tabela servicos_tecnicos_eventos,
 
assim como pegará hora inicial e final para cálculo de tempo trabalhado de .


Tambem considera Cursos e Feriados, se lançados.
Se técnico estiver sem horário cadastrado, vai buscar do parm_sys2 => p2.agenda_hora_comeca e p2.agenda_hora_fim
|
|-
* Cod_empresa
| colspan="2" |
* Numero_os
{| class="wikitable"
!Empresa/OS
!Empresa/OS/Serviço
!Empresa/OS/Produtivo
|-
|-
| colspan="2" |'''-- tempo trabalhado, por servico'''
|<small>SELECT  sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico,    </small> <small>                     ot.data_entrada, ot.hora_entrada,      </small>
 
<small>ot.data_saida, ot.hora_saida)) tempo_trab_t</small>
 
<small>FROM os_tempos_executados ot </small>
 
<small>where ot.cod_empresa = 34</small>


<small>select V.cod_servico, sum(V.TEMPO_TRAB) tp_trab</small>  
<small>and   ot.numero_os   = 15398</small>
|<small>SELECT ot.cod_servico,</small>
<small>sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico, </small>


<small>From VW_CRMSERVICE_TP_TRABALHADO V  WHERE V.cod_empresa = 34  AND V.numero_os = 15398    Group  BY V.cod_servico</small>[[Arquivo:ImageOR3.png|miniaturadaimagem|352x352px|nenhum]]
<small>                ot.data_entrada, ot.hora_entrada,      </small>


'''-- tempo trabalhado, por servico / Tecnico <small>(lembrar que posso ter N lançaamentos de inicio e fim de tempo)</small>'''
<small>               ot.data_saida, ot.hora_saida)) tempo_trab_t</small>


<small>select V.cod_servico, v.cod_tecnico ,sum(V.TEMPO_TRAB) tp_trab</small>
<small>FROM os_tempos_executados ot</small>


<small>From VW_CRMSERVICE_TP_TRABALHADO V  WHERE V.cod_empresa = 34 AND V.numero_os = 15398  Group  BY V.cod_servico, v.cod_tecnico</small>[[Arquivo:Imageor4.png|nenhum|miniaturadaimagem|322x322px]]
<small>where ot.cod_empresa = 34</small>
 
<small>and   ot.numero_os   = 15398</small>  
 
<small>group by cod_servico</small>
|<small>SELECT ot.cod_servico, ot.cod_tecnico,</small>
<small>sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico, </small>
 
<small>                                ot.data_entrada, ot.hora_entrada,  </small>
 
<small> ot.data_saida, ot.hora_saida)) tempo_trab_t</small>
 
<small>FROM os_tempos_executados ot</small>
 
<small>where ot.cod_empresa = 34</small>  
 
<small>and   ot.numero_os   = 15398</small>
 
<small>group by cod_servico, ot.cod_tecnico</small>
|-
|-
|F_GET_PROD_HR_DISP
|[[Arquivo:Imageor40.png|esquerda|miniaturadaimagem]]
(função)
|[[Arquivo:Imageor6.png|nenhum|miniaturadaimagem|249x249px]]
|[[Arquivo:Imageor7.png|nenhum|miniaturadaimagem]]
|}
|-
|Calcula TMO e Valor de um Serviço
|
|
|
|
|-
|-
|
|'''F_GET_STATUS_ICONE'''
|select s.cod_tecnico, initcap(s.nome) nome F_GET_PROD_HR_DISP(s.cod_empresa, s.cod_tecnico, data_intervalo.data_a) disponivel
|'''Retorna  4 informação sobre 1 serviço'''
From servicos_tecnicos s,
# Aprovacao do cliente
# Icone que vai na frente do servico (bolinha vermelha etc)
# Descricao do icone
# Status do Servico (0- nunca fez servico  1-em andamento/Parado      2-Finalizado)
 
'''''Exemplo'''''
 
select         -- Icone do status do servico
 
         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 1),
 
         -- Descricao do icone do servico
 
         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 2),
 
         -- Status do servico : 0 Nao fez nada, 1 trbalhando, 2 Encerrado  
 
         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 3)         
 
from os_servicos s
|Parâmetros
# P_COD_EMPRESA IN INT,
# P_NUMERO_OS IN INT,
# P_COD_SERVICO IN VARCHAR2,
# P_TIPO_RESULT IN INT
|-
|'''F_GET_SERVICO_PERCENT_TRAB'''
|'''Retorna 3 Valores de 1 Serviço'''
# TMO
# Tempo Trabalhado
# %trabalhando (para o Gráfico
 
'''Exemplo'''
 
select   -- tempo trabalhado
 
         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 1),
 
         -- TMO
 
         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 2),
 
         -- % trabalhado, pronto para o gráfico
 
         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 3)
 
from os_servicos s
|  (P_COD_EMPRESA IN INT, 
   P_NUMERO_OS IN INT, 
 
   P_COD_SERVICO IN VARCHAR2,
 
   P_TIPO_RESULT IN INT) RETURN NUMBER IS 
|-
|'''F_GET_OS_ANDAMENTO'''
|'''Retorna o andamento de uma OS  {nao serve para orçamento}'''
Função para substitui a view VW_CRM_SERVICE_OS_ANDAMENTO
 
SELECT F_GET_OS_ANDAMENTO(OS.COD_EMPRESA, OS.NUMERO_OS, 1) AS ANDAMENTO
 
FROM OS
 
WHERE OS.ORCAMENTO = 'N'
|P_COD_EMPRESA IN INT, 
P_NUMERO_OS IN INT, 
|-
|F_GET_STATUS_PRODUTIVO
|Retorna o status do produtivo  '''Considerando'''
* Curso
* Ferias
* Paradas de almoço e lanche
* Feriado
* Horário estabelecido nos eventos (incio e fim a cada dia da semana)
 
'''A função NAO considera'''
* Ativos e fictícios
* Se esta trabalhando
 
'''Exemplo'''


     (SELECT ROWNUM x, (TO_DATE('&DataInicial', 'DD/MM/YYYY') + (ROWNUM-1)) data_a
SELECT -- grid


        FROM DUAL CONNECT BY LEVEL <= ((TO_DATE('&DataFinal', 'DD/MM/YYYY')-TO_DATE('&DataInicial', 'DD/MM/YYYY'))+1)) data_intervalo
 initcap(a.nome) nome,


where s.ficticio = 'N'
substr(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate),6,length(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate))) Motivo,


and nvl(s.eh_consultor,'N') = 'N'
a.cod_tecnico,substr(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate),1,2) ST


and s.cod_tecnico = &Cod_Tecnico
from servicos_tecnicos a[[Arquivo:Imageorprod.png|esquerda|miniaturadaimagem]]
|P_COD_EMPRESA IN INT, 
P_COD_TECNICO AND IN


and s.cod_empresa = &Cod_Empresa
p_DATA  dATA QUE DESEJA TER O STATUS
|
|}
|}

Edição atual tal como às 12h46min de 15 de julho de 2020

Nome Função Parametros
VW_CRMSERVICE_REQUISICAO Retorna as Requisições de uma OS com o preço liquido Total (* qtde) já calculado.

Parece bobagem, mas ja viram o calculo bisonho que é pra achar o preço de uma peça ? pois é...

  • Cod_empresa
  • Numero_os
select * from VW_CRMSERVICE_REQUISICAO where cod_empresa = 40 and numero_os = 43
Imageor2.png
VW_CRM_SERVICE_TEMPO_DISPONIVEL Calcula por DAta/Box
  1. O tempo Total no dia/box
  2. O tempo OCUPADO (pelos CHIPS da Agenda)
  3. O Tempo disponível na Data/Box

Importante: Ele considera os Eventos do produtivo, Cursos, Ferias, Feriados

Empresa/Período Empresa/Período/Box Empresa/Período/Produtivo
select sum(v.tempo_total)      Tp_agenda, 

       sum(v.tempo_ocupado)    Tp_ocupado , 

       sum(v.tempo_disponivel) Tp_disp

from VW_crmservice_tempo_disponivel v

--

where cod_empresa = 34

and   data >= to_date('01/07/2016')

and   data <= to_date('30/07/2016')

select v.prisma,

       sum(v.tempo_total)      Tp_agenda, 

       sum(v.tempo_ocupado)    Tp_ocupado , 

       sum(v.tempo_disponivel) Tp_disp

from VW_crmservice_tempo_disponivel v

--

where cod_empresa = 34

and   data >= to_date('01/07/2016')

and   data <= to_date('30/07/2016')

Group by v.prisma

select v.cod_tecnico,

sum(v.tempo_total)      Tempo_agenda, 

       sum(v.tempo_ocupado)    Tempo_ocupado , 

       sum(v.tempo_disponivel) Tempo_disponivel

from VW_crmservice_tempo_disponivel v

--

where cod_empresa = 34

and   data >= to_date('01/07/2016')

and   data <= to_date('30/07/2016')

Group by v.cod_tecnico

Imageor20.png
Imageor21.png
Imageor30.png

F_GET_TEMPO_TRABALHADO

Calcular o tempo trabalhado do produtivo,

Tratando inicio em um dia e parada em outro, assim como data final nula  considerado sysdate.

Quando data inicial e final for diferente, vai descontar domingos e feriados e horas paradas do produtivo cadastradas na tabela servicos_tecnicos_eventos,

assim como pegará hora inicial e final para cálculo de tempo trabalhado de lá.

Se técnico estiver sem horário cadastrado, vai buscar do parm_sys2 => p2.agenda_hora_comeca e p2.agenda_hora_fim

Empresa/OS Empresa/OS/Serviço Empresa/OS/Produtivo
SELECT  sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico,             ot.data_entrada, ot.hora_entrada,      

ot.data_saida, ot.hora_saida)) tempo_trab_t

FROM os_tempos_executados ot 

where ot.cod_empresa = 34

and   ot.numero_os   = 15398

SELECT ot.cod_servico,

sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico, 

                ot.data_entrada, ot.hora_entrada,      

  ot.data_saida, ot.hora_saida)) tempo_trab_t

FROM os_tempos_executados ot

where ot.cod_empresa = 34

and   ot.numero_os   = 15398

group by cod_servico

SELECT ot.cod_servico, ot.cod_tecnico,

sum(f_get_tempo_trabalhado(ot.cod_empresa, ot.cod_tecnico, 

                                ot.data_entrada, ot.hora_entrada,  

 ot.data_saida, ot.hora_saida)) tempo_trab_t

FROM os_tempos_executados ot

where ot.cod_empresa = 34

and   ot.numero_os   = 15398

group by cod_servico, ot.cod_tecnico

Imageor40.png
Imageor6.png
Imageor7.png
Calcula TMO e Valor de um Serviço
F_GET_STATUS_ICONE Retorna 4 informação sobre 1 serviço
  1. Aprovacao do cliente
  2. Icone que vai na frente do servico (bolinha vermelha etc)
  3. Descricao do icone
  4. Status do Servico (0- nunca fez servico 1-em andamento/Parado 2-Finalizado)

Exemplo

select         -- Icone do status do servico

         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 1),

         -- Descricao do icone do servico

         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 2),

         -- Status do servico : 0 Nao fez nada, 1 trbalhando, 2 Encerrado  

         F_GET_STATUS_ICONE_SERVICO(s.cod_empresa, s.numero_os, s.cod_servico, 3)         

from os_servicos s

Parâmetros
  1. P_COD_EMPRESA IN INT,
  2. P_NUMERO_OS IN INT,
  3. P_COD_SERVICO IN VARCHAR2,
  4. P_TIPO_RESULT IN INT
F_GET_SERVICO_PERCENT_TRAB Retorna 3 Valores de 1 Serviço
  1. TMO
  2. Tempo Trabalhado
  3. %trabalhando (para o Gráfico

Exemplo

select   -- tempo trabalhado

         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 1),

         -- TMO

         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 2),

         -- % trabalhado, pronto para o gráfico

         F_GET_SERVICO_PERCENT_TRAB(s.cod_empresa, s.numero_os, s.cod_servico, 3)

from os_servicos s

  (P_COD_EMPRESA IN INT, 

   P_NUMERO_OS IN INT, 

   P_COD_SERVICO IN VARCHAR2,

   P_TIPO_RESULT IN INT) RETURN NUMBER IS 

F_GET_OS_ANDAMENTO Retorna o andamento de uma OS {nao serve para orçamento}

Função para substitui a view VW_CRM_SERVICE_OS_ANDAMENTO

SELECT F_GET_OS_ANDAMENTO(OS.COD_EMPRESA, OS.NUMERO_OS, 1) AS ANDAMENTO

FROM OS

WHERE OS.ORCAMENTO = 'N'

P_COD_EMPRESA IN INT, 

P_NUMERO_OS IN INT, 

F_GET_STATUS_PRODUTIVO Retorna o status do produtivo Considerando
  • Curso
  • Ferias
  • Paradas de almoço e lanche
  • Feriado
  • Horário estabelecido nos eventos (incio e fim a cada dia da semana)

A função NAO considera

  • Ativos e fictícios
  • Se esta trabalhando

Exemplo

SELECT -- grid

 initcap(a.nome) nome,

substr(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate),6,length(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate))) Motivo,

a.cod_tecnico,substr(F_get_status_produtivo(a.cod_empresa, a.cod_tecnico, sysdate),1,2) ST

from servicos_tecnicos a
Imageorprod.png
P_COD_EMPRESA IN INT, 

P_COD_TECNICO AND IN

p_DATA dATA QUE DESEJA TER O STATUS