Migration from ATP to STP

1

Does anyone have an example to register a process and an intervention in the technical services module?

I'm trying to migrate a project from technical assists but I can not see

Sub Regista()
    Dim teste As AtpBEProcesso
    Dim objPedido As AtpBEProcesso
    Dim objinterv As AtpBEIntervencao
    Dim objlinha As AtpBELInhaIntervencao
    Dim intLinha As Integer
    Dim Numproc As Long

    On Error GoTo Erro

    If (MsgBox("Os registos vão ser feitos no tecnico: " & Sheet1.Cells(1, 2), vbOKCancel)) = vbCancel Then
           Exit Sub
    End If
    AbreEmpresa
    intLinha = 5
    While Len(Trim(Sheet1.Cells(intLinha, 1))) > 0
        If Sheet1.Cells(intLinha, 1) = "Sim" Then
            Set objPedido = New AtpBEProcesso
              With objPedido
                    .Cliente = Sheet1.Cells(intLinha, 3)
                    .DataAbertura = Sheet1.Cells(intLinha, 2)
                    .DescricaoProblema = Sheet1.Cells(intLinha, 5)
                    .Origem = "1"
                    .ProximoTecnico = Sheet1.Cells(1, 2)
                    .Marca = "PRIMAVERA"
                    .Modelo = "EXECUTIVE 8"
                    .NumSerie = "LP 8 002"
                    .TipoProblema = "A00"
                    .Prioridade = "P02"
                    .DataFimPrevisto = Sheet1.Cells(intLinha, 2)
                    .Filial = "000"
                    .Produto = "2"
                    .NumProcesso = BSO.AssistenciasTecnicas.processos.NumeraProcesso("000")
                    .Estado = Left(Sheet1.Cells(intLinha, 8), 1)
                    .Seccao = "DTI-P"
                    .CamposUtil("CDU_Tec_ACL") = Sheet1.Cells(intLinha, 11)
                    .CamposUtil("CDU_fact") = Sheet1.Cells(intLinha, 12)
                     .CamposUtil("CDU_data_grava") = Date
                    .CamposUtil("CDU_empresa") = Sheet1.Cells(intLinha, 13)
                    If Sheet1.Cells(intLinha, 10) = "Não" Then .CamposUtil("CDU_imp") = True

                End With
            'Grava Pedido
            BSO.AssistenciasTecnicas.processos.Actualiza objPedido
            'Preenche no excel os campos que faltam
            Sheet1.Cells(intLinha, 9) = objPedido.NumProcesso
            Numproc = objPedido.NumProcesso

        If Len(Trim(Cells(intLinha, 6))) > 0 Then
            Set objinterv = New AtpBEIntervencao
              With objinterv
                    .NumIntervencao = BSO.AssistenciasTecnicas.Intervencao.NumeraIntervencao(Numproc, "000")
                    .Processo = Numproc
                    .DescricaoResposta = Sheet1.Cells(intLinha, 6)
                    .DataInicio = Sheet1.Cells(intLinha, 2)
                    .DataFim = Sheet1.Cells(intLinha, 2)
                    .Duracao = Sheet1.Cells(intLinha, 7)
                    .DuracaoReal = Sheet1.Cells(intLinha, 7)
                    .Estado = Left(Sheet1.Cells(intLinha, 8), 1)
                    .Tecnico = Sheet1.Cells(1, 2)
                    .TipoIntervencao = "015"
                    .Filial = "000"
                    .Seccao = "DTI-P"
                End With
                Set objlinha = New AtpBELInhaIntervencao
                    With objlinha
                        .NumIntervencao = 1
                        .NumLinha = 1
                        .NumProcesso = Numproc
                        .Acessorio = "F0002"
                        .TipoLinha = "20"
                        .TipoServico = "1"
                        .Quantidade = Sheet1.Cells(intLinha, 7) / 60
                        .Filial = "000"

                    End With

                 'Grava Intervenção
                 BSO.AssistenciasTecnicas.Intervencao.Actualiza objinterv
                 'Set BSO.AssistenciasTecnicas.LinhaIntervencao = objlinha
                 Sheet1.Cells(intLinha, 1) = "Não"
            End If
         End If

          'Incrementar o número da linha
         '   intLinha = intLinha + 1

 '       Strbcc = ""
 '       strSubject = "Processo Nº" & Numproc
   '     strMessage = "Exmo(a). Senhor(a).. " & vbNewLine & _
      '               "" & vbNewLine & _
      '               "O Processo " & Numproc & " encontrasse no estado " & Sheet1.Cells(intLinha, 8) & vbNewLine & _
       '              "" & vbNewLine & _
        '             "Cliente: " & Sheet1.Cells(intLinha, 4) & _
         '            "" & vbNewLine & _
        '             "Descrição:" & vbNewLine & _
         '            " " & objPedido.DescricaoProblema

     '  PlataformaPRIMAVERA.Mail.EnviaMail Perfil:="Outlook", ParaQuem:=strTo, CC:=Strbcc, Assunto:=strSubject, Mensagem:=strMessage, MostraJanela:=False, useSMTP:=False
        intLinha = intLinha + 1
    Wend


    Set objPedido = Nothing
    Set objlinha = Nothing
    FechaEmpresa

Erro:
    Sheet1.Cells(intLinha, 9) = Err.Description

End Sub
    
asked by anonymous 19.09.2018 / 13:34

1 answer

4

The way to create processes and interventions is very similar in both modules. Here is an example for the Technical Services module:

Public Sub CriarProcessoIntervencao()
Dim objCliente      As GcpBECliente
Dim objObjecto      As StpBEObjecto
Dim objProcesso     As StpBEProcesso
Dim objIntervencao  As StpBEIntervencao
Dim objArtigoInterv As StpBEArtigoIntervencao
Dim objLinhaFact    As GcpBELinhaFacturacao

    Set objObjecto = BSO.ServicosTecnicos.Objectos.Edita("TESTE")
    Set objCliente = BSO.Comercial.Clientes.Edita("SOFRIO")

    Set objProcesso = New StpBEProcesso
    objProcesso.Filial = BSO.Comercial.Filiais.CodigoFilial
    objProcesso.ID = PlataformaPRIMAVERA.FuncoesGlobais.CriaGuid(True)
    objProcesso.TipoDoc = "PRC"
    objProcesso.Serie = BSO.ServicosTecnicos.Series.DaSerieDefeito("R", objProcesso.TipoDoc)
    objProcesso.Cliente = objCliente.Cliente
    objProcesso.TipoProcesso = BSO.ServicosTecnicos.Params.ProblemaPorDefeito
    objProcesso.Origem = BSO.ServicosTecnicos.Params.OrigemPorDefeito
    objProcesso.Prioridade = BSO.ServicosTecnicos.Params.PrioridadePorDefeito
    objProcesso.Estado = BSO.ServicosTecnicos.Params.EstadoPorDefeito
    objProcesso.Tecnico = "T01" 'Técnico.

    objProcesso.DataHoraAbertura = Now
    objProcesso.DataHoraFimPrevista = BSO.ServicosTecnicos.Regras.TempoPrevisto(objProcesso.Cliente, objProcesso.Origem, objObjecto.Marca, objObjecto.Modelo, objObjecto.NumSerie, objProcesso.TipoProcesso, objProcesso.Prioridade, "C", objCliente.Zona, objProcesso.DataHoraAbertura)

    If objProcesso.DataHoraAbertura > objProcesso.DataHoraFimPrevista Then
        objProcesso.DataHoraFimPrevista = objProcesso.DataHoraAbertura
    End If

    objProcesso.ObjectoID = objObjecto.ID
    objProcesso.DescricaoProblema = "Problema de teste"
    objProcesso.DescricaoObjecto = objObjecto.Descricao

    BSO.ServicosTecnicos.Processos.Actualiza objProcesso

    Set objIntervencao = New StpBEIntervencao

    objIntervencao.ID = PlataformaPRIMAVERA.FuncoesGlobais.CriaGuid(True)
    objIntervencao.ProcessoID = objProcesso.ID
    objIntervencao.Tecnico = objProcesso.Tecnico
    objIntervencao.DataHoraInicio = DateAdd("h", 1, objProcesso.DataHoraAbertura)
    objIntervencao.DataHoraFim = DateAdd("h", 2, objIntervencao.DataHoraInicio)
    objIntervencao.Duracao = 2 * 60
    objIntervencao.DuracaoReal = 2 * 60

    objIntervencao.EstadoAnt = objProcesso.Estado
    objIntervencao.Estado = objProcesso.Estado
    objIntervencao.Moeda = BSO.Contexto.MoedaBase
    objIntervencao.MoedaDaUEM = True
    objIntervencao.Cambio = 1
    objIntervencao.TipoIntervencao = "I01"
    objIntervencao.NumIntervencao = 1

    If BSO.ServicosTecnicos.Intervencoes.SugereLinhaIntervencao(objArtigoInterv, objIntervencao, objProcesso, "A0001", vbNullString, 1, vbNullString) Then
        objIntervencao.ArtigosIntervencao.Insere objArtigoInterv
    End If

    BSO.ServicosTecnicos.Intervencoes.Actualiza objIntervencao

End Sub
    
19.09.2018 / 15:34