CAT001 (Não Conformidade) - Equipe de MANUTENÇÃO
01Erros / bugs em geral.
02Erros no tratamento de uma legislação no produto: a legislação cita uma coisa e o produto faz outra.
03O produto se propõe a fazer algo e faz diferente do que se propõe.
04Erros inseridos em projetos de inovação, que não sejam falhas grandes na concepção do projeto.
05Correção de erro que requer de alteração de dicionário.
06Problemas de Performance.
07Alteração de documentações de programas, bo’s e help on-line.
08Correções e melhorias de mensagens que podem gerar inconsistência na base de dados ou entendimento duvidoso.
09Acerto de base quando tem a simulação do problema gerado pelo produto padrão.
CAT014 (Sugestão de Melhoria) - Equipe de INOVAÇÃO
30Melhorias do produto que não impedem a utilização do produto e não geram problemas na base de dados do cliente.
31Solicitação de implementação de algo que já existe no produto, porém o cliente deseja que seja de outra forma.
32GAPs de desenvolvimento. Ex: o projeto tratou as notas de saída, mas não tratou as devoluções dessas notas. Não  considerou alguma integração, ou alteração em um programa similar.
33Situações que não faziam parte do escopo (ex: uma integração, uma importação, etc. ) e o cliente solicita que deve ser considerado.
34Automatização de  algum processo.
35Mudança de conceito de produto.
36Criação de documentações de programas e bo’s e help on-line.
37Cliente Piloto
38

Solicitação de fontes não liberados (quando o cliente solicitar um fonte que não está liberado, o chamado deve ser encaminhado para Inovação avaliar em conjunto com a manutenção)

CAT017 (Solicitação de Legislação) - Equipe de MANUTENÇÃO
50Desenvolvimento de novas Legislações.
51Alterações em legislações vigentes.
52

Implementação de regras de negócio  que são oriundas de legislações, exemplo:

  • Tratamento de Impostos;
  • Obrigação fiscal / arquivo a entregar ao governo/fisco;
  • Um processo do produto que possui regra de legislação e esta regra foi alterada por meio de legislação, emenda constitucional, ato cotepe.
53Melhorias em desenvolvimentos de CAT017, utilizando o mesmo processo de CAT014. 
CAT039 / CAT093 / CAT101 – Equipe de ATENDIMENTO
80O atendimento deve deixar claro para o cliente que as melhorias e legislações serão feitas somente no último pacote. Versões/produtos descontinuados/expirados não serão considerados. (pode entrar em conflito com o discurso do atendimento onde é informado que alguns desenvolvimentos são liberados duas releases anteriores.)
81Quando o produto atende uma solicitação do cliente de uma outra forma, o suporte deve enfatizar que o produto já trata a solicitação. Caso o cliente insista, categorizar como CAT014.
82

Cliente parado . O suporte, se necessário, buscará apoio na manutenção ou inovação para  restabelecer a operação do cliente. Posteriormente o chamado deverá ser categorizado  para que seja dada a solução definitiva.

83

O atendimento deve evidenciar a não conformidade do cliente, simulando o reportado internamente. Ou quando não for possivel evidenciar a FNC, a mesma deve encaminhada para a manutenção com o check-list de item não simulado preenchido e com os anexos necessários para analises.




TRANSFERÊNCIA PARA MANUTENÇÃO
Informe o código do item escolhido do check list:01




Informações Base
Versão Cliente:P12.1.17Banco:MSSQL
Versão Interna:P12.1.17.
Simulado em RPO D-1?

Data:


Parâmetros SX1 e SX6:






Origem da situação

 



Situação

Ao incluir uma Solicitação de Compra é apresentado o error.log abaixo:

THREAD ERROR ([14512], gledson.goncalves, BHN050102474) 10/10/2017 12:25:35
Work area not in use on MSRUNLOCK(APLIB060.PRW) 05/10/2017 18:39:40 line : 1068

[TOTVS build: 7.00.131227A-20170904 NG]
Called from MSRUNLOCK(APLIB060.PRW) 05/10/2017 18:39:40 line : 1068
Called from MSUNLOCK(APLIB060.PRW) 05/10/2017 18:39:40 line : 784
Called from GRAVAB2PRE(SIGACUSB.PRX) 26/09/2017 15:47:02 line : 9563
Called from MAAVALSC(COMXFUN.PRX) 29/09/2017 09:04:33 line : 173
Called from A110GRAVA(MATA110.PRX) 30/08/2017 11:10:54 line : 3877
Called from A110INCLUI(MATA110.PRX) 30/08/2017 11:10:54 line : 1176
Called from FWMBROWSE:EXECUTE(FWFORMBROWSE.PRW) 05/10/2017 18:39:41 line : 1064
Called from { || OSELF:EXECUTE("A110INCLUI", 3, 113,"INCLUIR", 3,"","INCLUIR","", 3) }(FWFORMBROWSE.PRW) 05/10/2017 18:39:41 line : 1064
Called from ::MSDIALOG:ACTIVATE line : 1064
Called from FWMBROWSE:ACTIVATE(FWMBROWSE.PRW) 05/10/2017 18:39:41 line : 674
Called from FWMBROWSE(MSLIB.PRW) 05/10/2017 18:39:41 line : 12677
Called from MBROWSE(MSLIB.PRW) 05/10/2017 18:39:41 line : 170
Called from MATA110(MATA110.PRX) 30/08/2017 11:10:54 line : 281
Called from __EXECUTE(APLIB090.PRW) 05/10/2017 18:39:40 line : 602
Called from MDIEXECUTE(APLIB260.PRW) 05/10/2017 18:39:40 line : 829
Called from STATICCALL(APLIB260.PRW) 05/10/2017 18:39:40 line : 829

Solução
Proteger a integridade da tabela SB2 na função PMS_SB2
Medida Paliativa?NÃO




Simulação
Cod ProgramaAção














Informações para Situações não Simulada



Informações Adicionais

Foi feito o seguinte ajuste na função PMS_SB2, após o ajuste o erro não ocorreu:


Function PMS_SB2(nOper)
Local cQuery := ""
Local nERPConn := 0
Local nSolumConn := -1
Local nX := 1
Local nCustoUnit := 0
Local nCustoTot := 0
Local aTamSB2 := TamSX3("B2_CM1")
Local aColig := {GetNewPar("MV_RMCOLIG",0)}
Local lMsgUnica := IsIntegTop()
Local cCusFil := SuperGetMV("MV_CUSFIL",.F.,"A")
Local aAreaSB2 := SB2->(Getarea())


If !lMsgUnica
nCustoUnit := PmsxVatu1(SB2->B2_COD)
nCustoTot := PmsxVatu1(SB2->B2_COD,.F.)
nERPConn := AdvConnection() //-- Pega a conexao do ByYouDBAccess corrente do Protheus

//-- Carrega as coligadas por PE
If ExistBlock("PMRMCOLIG")
aColig := ExecBlock("PMRMCOLIG",.F.,.F.,{"SB2",aColig})
TCSetConn(nERPConn) //-- Retorna a conexao do ByYouDBAccess corrente do Protheus
EndIf

nSolumConn := CnnSolum() //-- Pega a conexao do ByYouDBAccess corrente do TOP

//-- Se houver conexao do ByYouDBAccess com o TOP
If nSolumConn > 0
// efetua a conexao ByYouDBAccess com o banco de dados TOP
TCSetConn(nSolumConn)
TCInternal(8,STR0022) //"Sincronizacao Microsiga Protheus x TOP"

If TCSPExist("SP_CUSTO_FILIAL")
For nX := 1 To Len(aColig)
If Upper(TCGetDB()) == "ORACLE"
cQuery := "BEGIN SP_CUSTO_FILIAL("
If ValType(aColig[1]) == "N"
cQuery += "'" +AllTrim(Str(aColig[nX])) +"',"
cQuery += "'" +PadR(cFilAnt,Len(SM0->M0_CODFIL)) +"',"
Elseif ValType(aColig[1]) == "A"
cQuery += "'" +AllTrim(Str(aColig[nX,1])) +"',"
If Empty(aColig[nX,2])
cQuery += "'" +PadR(cFilAnt,Len(SM0->M0_CODFIL)) +"',"
Else
cQuery += "'" +PadR(aColig[nX,2],Len(SM0->M0_CODFIL)) +"',"
Endif
Endif
cQuery += "'" +AllTrim(SB2->B2_COD) +"',"
If cCusFil == "A" //-- Enviara zero pois a integracao nao admite esta modalidade
cQuery += "0,"
cQuery += "0); END;"
Else
cQuery += AllTrim(Str(nCustoTot,aTamSB2[1],aTamSB2[2])) +", "
cQuery += AllTrim(Str(nCustoUnit,aTamSB2[1],aTamSB2[2])) +"); END;"
EndIf
Else
cQuery := "SP_CUSTO_FILIAL "
If ValType(aColig[1]) == "N"
cQuery += "@CodColigada = '" +AllTrim(Str(aColig[nX])) +"', "
cQuery += "@CodFilial = '" +PadR(cFilAnt,Len(SM0->M0_CODFIL)) +"', "
Elseif ValType(aColig[1]) == "A"
cQuery += "@CodColigada = '" +AllTrim(Str(aColig[nX,1])) +"', "
If Empty(aColig[nX,2])
cQuery += "@CodFilial = '" +PadR(cFilAnt,Len(SM0->M0_CODFIL)) +"', "
Else
cQuery += "@CodFilial = '" +PadR(aColig[nX,2],Len(SM0->M0_CODFIL)) +"', "
Endif
Endif
cQuery += "@CodigoPrd = '" +AllTrim(SB2->B2_COD) +"', "
If cCusFil == "A" //-- Enviara zero pois a integracao nao admite esta modalidade
cQuery += "@CustoMedio = 0, "
cQuery += "@CustoUnitario = 0 "
Else
cQuery += "@CustoMedio = " +AllTrim(Str(nCustoTot,aTamSB2[1],aTamSB2[2])) +", "
cQuery += "@CustoUnitario = " +AllTrim(Str(nCustoUnit,aTamSB2[1],aTamSB2[2]))
EndIf
Endif
Next nX
EndIf

PMSExecSOLUM(cQuery)

//-- Se a conexao ByYouDBAccess for maior que zero, deve desconectar
If nSolumConn > 0
TCUnLink(nSolumConn)
EndIf

TCSetConn(nERPConn) //-- Volta pra conexao ByYouDBAccess padrao
EndIf
EndIf

Restarea(aAreaSB2)
Return .T.




Observações Manutenção
Espaço destinado para a manutenção adicionar complementos ao chamado.



Evidência da Manutenção

ANTES da alteração


DEPOIS da alteração


Log do White-Box


Diretório com o pacote compilado (apenas para o legado)

 

Log Compilação (apenas para o legado)