Skip to content

Instantly share code, notes, and snippets.

@douglasconstancio
Last active March 20, 2019 13:51
Show Gist options
  • Save douglasconstancio/6a4b727983a94cc30ad64a695c52070a to your computer and use it in GitHub Desktop.
Save douglasconstancio/6a4b727983a94cc30ad64a695c52070a to your computer and use it in GitHub Desktop.

Business Rules - Service order, inputs and steps

Neste documento será apresentado a regra de negócio relacionada às entidades de ordem de serviço, insumos e etapas, que devem ser aplicadas no sistema Keepfy.

O Campo de 'branch' define o registro de maneira que em todas as entidades JAMAIS deve ser alterado.


Ordem de Serviço

  • Abertura

    • Campo 'branch' é obrigatório e seu conteúdo deve existir na tabela 'saas.branch'
    • Campo 'ordem' obrigatório, devendo ser sequencial e único
    • Campo 'equipamento' é obrigatório e possui relacionamento com a tabela 'equipments' devendo existir seu códugo na mesma, ou em caso de ser um UUID deve existir da tabela correspondente com o prefixo de 'generic.'
    • Campo 'serviço' é obrigatório e deve possuir o conteúdo 'P00001' ou 'C00001' definindo o tipo da O.S. como preventiva ou corretiva. Caso seja preventiva deve gerar um registro na tabela correspondente à manutenções 'maintenances' com mesmo equipamento, serviço e sequencia informados na ordem
    • Campo 'sequencia' da ordem de serviço é obrigatório e deve possuir o conteúdo '0' se corretiva e a sequencia da manutenção criada caso seja preventiva
    • Campo 'posição do contador' é obrigatório devendo ser '0' caso o bem não possua controle por contador, ou deve buscar a posição do contador do equipamento de acordo com a data e hora atual do sistema
    • Campo 'hora do contador' se preenchido a 'posição do contador' este campo se torna obrigatório, armazenando hora atual do sistema, caso contrário, este campo deve ser vazio
    • Campo 'data de manutenção prevista início' é opcional e se preenchida deve respeitar o limite sendo a data de compra do equipamento da ordem de serviço (se preenchida)
    • Campo 'hora da manutenção prevista início' é obrigatório se o campo 'data da manutenção prevista início' estiver preenchido, caso contrário deve ser vazio
    • Campo 'data da manutenção prevista fim' é obrigatória se 'data da manutenção prevista início' estiver preenchida e deve ser calculada de acordo com os insumos pertencentes à esta ordem de serviço, se a ordem não possuir insumos, deve conter o mesmo conteúdo do campo 'data da manutenção prevista início', caso contrário deve ser vazio
    • Campo 'hora da manutenção prevista fim' é obrigatória se 'data da manutenção prevista fim' estiver preenchida e deve ser calculada de acordo com os insumos pertencentes à esta ordem de serviço, se a ordem não possuir insumos, deve conter o mesmo conteúdo do campo 'hora da manutenção prevista início', caso contrário deve ser vazio
    • Campo 'data de manutenção realizada início' deve possuir conteúdo como null por não possui insumos realizados na abertura de O.S.
    • Campo 'hora da manutenção realizada início' deve possuir conteúdo como null por não possui insumos realizados na abertura de O.S.
    • Campo 'data de manutenção realizada fim' deve possuir conteúdo como null por não possui insumos realizados na abertura de O.S.
    • Campo 'hora da manutenção realizada fim' deve possuir conteúdo como null por não possui insumos realizados na abertura de O.S.
    • Campo 'termino' é obrigatório e deve possuir conteúdo como 'N'
    • Campo 'prioridade' é obrigatório e deve possuir conteúdo como '81', '61', '41', '21' ou '0'.
    • Campo 'situação' é obrigatório e deve possuir conteúdo como 'L'
    • Campo 'observação' é obrigatório e não possui critério de validação
    • Campo 'usuário' é obrigatório e deve armazenar usuário que esta abrindo a ordem de serviço, devendo existir na tabela de users e sua branch devendo ser a mesma da ordem de serviço
    • Campo 'motivo de cancelamento' deve possuir conteúdo como null por se tratar do processo de abertura de ordem de serviço
    • Os demais campos devem ser gravados como null ou com seus respectivos default's
    • Pode-se anexar mais de uma imagem do problema a uma ordem de serviço gerando registros na tabela 'saas.order_attachment'
  • Alteração

    • Campo 'equipamento' não deve ser possível a alteração

    • Campo 'serviço' não deve ser possível a alteração

    • Campo 'observação' pode sofrer alterções sem critérios de avaliação somente sendo obrigatório

    • Campo 'data previsão manutencao inicio' pode sofrer alterações com as mesmas validações do processo de abertura

    • Campo 'prioridade' pode ser alterada sendo validada com o mesmos critérios do processo de abertura

    • Pode-se anexar mais de uma imagem do problema a uma ordem de serviço gerando registros na tabela 'saas.order_attachment'

    • Campos de data em geral são calculados de acordo com os insumos na ordem de serviço reportados, sendo validados da mesma forma que no processo de abertura de ordem de serviço

    • Obs:

      • É possível incluir insumos previstos e realizados na alteração de uma ordem de serviço
  • Finalização

    • Campo 'observação' é obrigatório preenchimento

    • Campo 'posição do contador' é possivel preenchimento caso o equipamento possua contador não sendo obrigatório

    • Campo 'data de leitura' é obrigatório preenchimento se o campo 'posição do contador' estiver preenchido, deve ser maior ou igual conteúdo do campo 'data de manutenção real início' e menor ou igual ao campo 'data de manutençao real fim'

    • Campo 'data de parada realizada inicio' pode ser preenchida, devendo estar entre o conteúdo dos campos de 'data manutenção realizada início' e 'data manutenção realizada fim'

    • Preenchimento do campo 'hora de parada realizada início' se torna obrigatório quando o campo de 'data parada realizada inicio' estiver preenchido, caso contrário o campo deve ser vazio. Seu conteúdo deve estar entre os intervalos dos campos 'data manutencao realizada início' e 'hora da manutenção realizada início' com 'data manutenção realizada fim' e 'hora manutenção realizada fim'

    • Campo 'termino' obrigatóriamente deve possuir conteúdo como 'S'

    • Os demais campos não devem ser permitidos a alteração no processo de finalização

    • Obs:

      • Para o processo de finalização da ordem de serviço ocorrer, a O.S. deve possuir ao menos um insumo como realizado
  • Cancelamento

    • Campo 'motivo de cancelamento' é obrigatório devendo existir na tabela de reasons e o registro possuindo conteúdo do campo tipo como '3'

    • Campo 'observação' é de preenchimento obrigatório sem validações em seu conteúdo

    • Os demais campos não devem ser permitidos a alteração no processo de cancelamento e deve seguir os mesmo critérios de inclusão

    • Obs:

      • É permitido que exista insumos previstos e realizados para uma O.S. que esteja sendo cancelada não sendo impeditivo para realizar a ação

      • Não é possivel cancelar uma ordem de serviço já terminada

  • Exclusão

    • Não é possível realizar a exclusão de uma ordem de serviço no sistema atualmente
  • Campos a serem removidos:

    • organization
    • tj_filial
    • tj_plano
    • tj_dtorigi
    • tj_nombem
    • tj_nomserv
    • tj_tipo
    • tj_nomtipo
    • tj_codarea
    • tj_nomarea
    • tj_ccusto
    • tj_nomcust
    • tj_custmdo
    • tj_custmat
    • tj_custmaa
    • tj_custmas
    • tj_custter
    • tj_dtultma
    • tj_coultma
    • tj_dtppini
    • tj_hoppini
    • tj_dtppfim
    • tj_hoppfim
    • tj_coultm2
    • tj_poscon2
    • tj_horaco2
    • tj_centrab
    • tj_nomtrab
    • tj_tiporet
    • tj_ordepai
    • tj_bempai
    • tj_nomepai
    • tj_filqnc
    • tj_fnc
    • tj_revqfnc
    • tj_valatf
    • tj_lubrifi
    • tj_substit
    • tj_solici
    • tj_sequenc
    • tj_irregu
    • tj_nirregu
    • tj_terceir
    • tj_stfolup
    • tj_destflu
    • tj_contini
    • tj_contfim
    • tj_usuario
    • tj_usuafim
    • tj_qtdrep
    • tj_motrepr
    • tj_custfer
    • tj_cdevent
    • tj_osorig
    • tj_intprj
    • tj_filori
    • tj_insttsk
    • tj_fatura
    • tj_apropri

Insumos

Previstos

  • Inclusão

    • Campo 'branch' obrigatório e seu conteúdo deve existir na tabela 'saas.branch'
    • Campo 'ordem' é obrigatório possuindo relacionamento com a tabela service_order existindo seu código na mesma
    • Campo 'sequencia de realização' é obrgatório possuindo conteúdo como '0'
    • Campo 'tarefa' é obrigatório possuindo relacionamento com a tabela task existindo seu código na mesma
    • Campo 'tipo do registro' deve estar preenchido como 'F', 'P', 'M', 'E'
    • Campo 'codigo' é um campo que possui relacionamento com uma tabela sendo condicionalmente de acordo com o conteúdo do campo 'tipo' informado
      • Tipo como 'E' código deve existir na tabela specialties ou caso seja um UUID deve existir na tabela correspondente com o prefixo de 'generic.'
      • Tipo como 'F' código deve existir na tabela tools ou caso seja um UUID deve existir na tabela correspondente com o prefixo de 'generic.'
      • Tipo como 'M' código deve existir na tabela employees
      • Tipo como 'P' código deve existir na tabela products ou caso seja um UUID deve existir na tabela correspondente com o prefixo de 'generic.'
    • Campo 'quantidade' deve ser obrigatório e positivo
    • Campo 'unidade' é validado condicionalmente de acordo com o conteúdo do campo 'tipo', caso seja 'E', 'M' ou 'F' o conteúdo do campo deve ser o código referente a descrição de 'Hora' no sistema, caso não encontrado, ele busca na base padrão, efetua a gravação na base do cliente e o código é armazenado neste campo, caso o tipo seja 'P' é armazenado o conteúdo do campo de unidade de medida do produto
    • Campo 'custo' é obrigatório podendo ser zero ou positivo sendo resultado do custo proveniente de registro por tabela de acordo com o tipo e código informado, sendo o produto do cálculo de quantidade x valor unitário
    • Campo 'quantidade de recurso' é de preenchimento obrigatório, devendo ser positivo somente quando o conteúdo do campo 'tipo'* for 'F' ou 'E', caso contrário deve ser possui conteúdo '0'
    • Campo 'data início' obrigatória
    • Campo 'hora início' obrigatório
    • Campo 'data fim' obrigatório, e quando o registro for 'tipo' como 'E', 'F', 'M' o conteúdo deve ser o resultado da soma da 'quantidade' com a data e hora início, verificando a data, caso seja 'tipo' 'P' deve replicar o conteúdo do campo 'data início'
    • Campo 'hora fim' obrigatório, e quando o registro for 'tipo' como 'E', 'F', 'M' o conteúdo deve ser o resultado da soma da 'quantidade' com a data e hora início, verificando a hora, caso seja 'tipo' 'P' deve replicar o conteúdo do campo 'hora início'
    • Código do insumo não deve ser repetido para a mesma área
    • Campo 'nivel' deve seguir as seguintes regras:
      • Essa informação é obrigatória
      • Deve ser preenchido com um sequencial maior que '000'
      • Não pode ser igual a nenhum 'nivel da tarefa' da árvore
      • Deve ser unica por 'ordem'
    • Campo 'nivel superior' deve seguir as seguintes regras:
      • Essa informação é obrigatória
      • Caso o 'tipo do registro seja 'M' ou 'E':
        • O valor do campo deve ser igual ao valor do 'nivel da tarefa'
      • Caso o 'tipo do registro seja 'P' ou 'F':
        • O valor do campo deve ser diferente do 'nivel'. E deve existir para a chave 'ordem' e 'nivel' na árvore
    • Campo 'nivel da tarefa' é obrigatório
  • Alteração

    • Campo 'codigo' não é alterável
    • Campo 'tipo' não é alterável
    • Campo 'sequencia de realização não é alterável
    • Demais campos possuem as mesmas validações de inclusão
  • Retorno

    • Somente é possível retornar insumos de uma ordem de serviço que possua situação liberada e não terminada
    • É possível somente retornar insumos na alteração de uma ordem de serviço
    • Um insumo realizado pode prover de um insumo previsto ou não
    • A divergencia do insumo sendo realizado é o conteúdo do campo 'sequencia de realização' devendo ser maior que zero
  • Exclusão

    • Um insumo independente do tipo, somente pode ser excluído se a ordem de serviço não estiver com situação como 'Cancelada' ou 'Terminada'

Realizados

  • Inclusão

    • Campo 'branch' obrigatório e seu conteúdo deve existir na tabela 'saas.branch'
    • Caso seja 'tipo' como 'M', deve-se verificar se não existe sobreposição de mão de obra onde um insumo já utilizou o tempo dentro do período informado
    • Não deve ser possível incluir um insumo realizado do 'tipo'
  • Alteração

    • Um insumo independente do tipo, somente pode ser alteração se a ordem de serviço não estiver com situação como 'Cancelada' ou 'Terminada'
    • As regras seguem as mesma de inclusão
  • Exclusão

    • Um insumo independente do tipo, somente pode ser excluído se a ordem de serviço não estiver com situação como 'Cancelada' ou 'Terminada'
  • Campos a serem retirados:

    • organization
    • tl_filial
    • tl_plano
    • tl_nomseq
    • tl_nomtar
    • tl_nomtreg
    • tl_nomcodi
    • tl_usacale
    • tl_destino
    • tl_repfim
    • tl_pcthrex
    • tl_numseq
    • tl_local
    • tl_lotectl
    • tl_numlote
    • tl_dtvalid
    • tl_localiz
    • tl_numseri
    • tl_etapa
    • tl_nometap
    • tl_garanti
    • tl_locapli
    • tl_nomloca
    • tl_numsc
    • tl_intemsc
    • tl_numop
    • tl_intemop
    • tl_sequeop
    • tl_observa
    • tl_codbem
    • tl_servico
    • tl_seqman
    • tl_poscont
    • tl_poscon2
    • tl_tipohor
    • tl_sequenc
    • tl_seqrman
    • tl_notfis
    • tl_serie
    • tl_fornec
    • tl_loja
    • tl_numsa
    • tl_itemsa
    • tl_seqtare
    • tl_doc
    • tl_item
    • tl_orignfe
    • tl_hrextra
    • tl_permdoe
    • tl_sdoc
    • tl_codaen

Etapas (Checklist)

Previstas

  • Inclusão

    • Campo 'branch' obrigatório e seu conteúdo deve existir na tabela 'saas.branch'
    • Campo 'ordem' é obrigatório possuindo relacionamento com a tabela service_order existindo seu código na mesma
    • Campo 'tarefa' é obrigatório possuindo relacionamento com a tabela task existindo seu código na mesma
    • Campo 'etapa' é obrigatório e deve ser único
    • Campo 'ok' deve ser vazio por se tratar de uma etapa prevista
    • Campo 'nivel' deve seguir as seguintes regras:
      • Essa informação é obrigatória
      • Deve ser preenchido com um sequencial maior que '000'
      • Não pode ser igual a nenhum 'nivel da tarefa' da árvore
      • Deve ser unica por 'ordem'
    • Campo 'nivel superior' deve seguir as seguintes regras:
      • Essa informação é obrigatória
      • O valor do campo deve ser diferente do 'nivel'. E deve existir para a chave 'ordem' e 'nivel' na árvore
    • Campo 'nivel da tarefa' é obrigatório
  • Alteração

    • Campo 'branch' não é alterável
    • Campo 'ordem' não é alterável
    • Campo 'etapa' não é alterável
    • Campo 'ok' deve ser vazio
    • Campos de níveis são alteráveis e são validados da mesma maneira que inclusão
  • Retorno

    • No processo de realizar uma etapa, é preenchido o campo 'ok' com 'XX'
  • Exclusão

    • Uma etapa somente pode ser excluída se a ordem de serviço não estiver com situação como 'Cancelada' ou 'Terminada'

Realizadas

  • Inclusão

    • Segue as mesmas regras de inclusão de uma etapa prevista com exceção do campo 'ok' que é obrigatório e deve possuir conteúdo como 'XX'
  • Alteração

    • Somente é possível alterar uma etapa prevista caso a ordem de serviço não esteja terminada ou cancelada
  • Exclusão

    • Uma etapa somente pode ser excluída se a ordem de serviço não estiver com situação como 'Cancelada' ou 'Terminada'
  • Campos a serem retirados:

    • organization
    • tq_filial
    • tq_plano
    • tq_nomtare
    • tq_nomsitu
    • tq_nometap
    • tq_codfunc
    • tq_opcoes
    • tq_seqeta
    • tq_seqtare
    • tq_observa

Ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment