01. DADOS GERAIS
Produto: | TOTVS Prestadores de Serviços Terceirização |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Serviços |
Módulo: | Prestadores de Serviços |
Função: | teca850.prw - Assistente do Contrato |
Ticket: | 9368673 |
Requisito/Story/Issue (informe o requisito relacionado) : | DSERSGS-9016 |
02. SITUAÇÃO/REQUISITO
Ao gerar um contrato utilizando o Assistente de Contratos (TECA850) o sistema salva as informações do contrato no Orçamento apenas no término da operação, impedindo algumas customizações durante a geração do contrato.
03. SOLUÇÃO
As informações do contrato passam a ser salvas no orçamento antes da exibição da tela do Contrato (CNTA300)
04. DEMAIS INFORMAÇÕES
Exemplo de uso
Após aplicar esta atualização, é possível carregar informações do Orçamento na geração do contrato.
O exemplo a seguir demonstra como inserir a Descrição da Escala no contrato (apenas para orçamento desagrupado, MV_GSDSGCN = 1):
1) Crie um Ponto de Entrada com a seguinte função:
User Function RetEscal() Local cRet := "" Local cQry := GetNextAlias() Local oModel := FwModelActive() Local cContrt := "" Local cRev := "" Local cPlan := "" Local cItemCNB := "" If oModel:GetId() == 'CNTA300' .AND. oModel:GetModel("CNBDETAIL"):Length() > 0 cPlan := FwFldGet("CNA_NUMERO") cRev := FwFldGet("CN9_REVISA") cContrt := FwFldGet("CN9_NUMERO") cItemCNB := FwFldGet("CNB_ITEM") BeginSQL Alias cQry SELECT TDW.TDW_DESC FROM %Table:TDW% TDW INNER JOIN %Table:TFF% TFF ON TDW.TDW_COD = TFF.TFF_ESCALA AND TFF.TFF_FILIAL = %xFilial:TFF% AND TFF.TFF_ITCNB = %Exp:cItemCNB% AND TFF.TFF_CONTRT = %Exp:cContrt% AND TFF.TFF_CONREV = %Exp:cRev% AND TFF.%NotDel% INNER JOIN %Table:TFL% TFL ON TFL.TFL_CODIGO = TFF.TFF_CODPAI AND TFF.TFF_FILIAL = TFL.TFL_FILIAL AND TFL.%NotDel% AND TFL.TFL_PLAN = %Exp:cPlan% AND TFL.TFL_CONTRT = %Exp:cContrt% AND TFL.TFL_CONREV = %Exp:cRev% WHERE TDW.TDW_FILIAL = %xFilial:TDW% AND TDW.%NotDel% EndSQL If !EMPTY((cQry)->TDW_DESC) cRet := Alltrim((cQry)->TDW_DESC) Else cRet := "Escala não configurada" EndIf (cQry)->(DbCloseArea()) EndIf Return cRet //-------------------------- // P.E. SetActivate CNTA300 //-------------------------- User Function CN300ACT() Local aParam := PARAMIXB Local oModel Local oMdlCNB Local oMdlCNA Local aSaveLines Local nX local nY If aParam <> NIL aSaveLines := FWSaveRows() oModel := aParam[1] oMdlCNB := oModel:GetModel("CNBDETAIL") oMdlCNA := oModel:GetModel("CNADETAIL") If oMdlCNB:CanUpdateLine() .AND. !oMdlCNA:isEmpty() For nX := 1 To oMdlCNA:Length() oMdlCNA:SetLine(nX) If !oMdlCNB:isEmpty() For nY := 1 To oMdlCNB:Length() oMdlCNB:SetLine(nY) oMdlCNB:LoadValue("CNB_NOMESC", U_RetEscal()) Next nY EndIf Next nX EndIf FWRestRows(aSaveLines) EndIf Return .T.
2) Acesse o configurador e crie um novo campo Virtual na tabela dos Itens do Contrato (CNB) da seguinte maneira:
Campo | Valor |
---|---|
X3_ARQUIVO | CNB |
X3_ORDEM | 79 [Modificar se necessário] |
X3_CAMPO | CNB_NOMESC |
X3_TIPO | C (Caractere) |
X3_TAMANHO | 60 [Modificar se necessário] |
X3_DECIMAL | 0 |
X3_TITULO | Desc. Escala |
X3_DESCRIC | Descrição da Escala |
X3_PICTURE | @! |
X3_VISUAL | V (Visualizar) |
X3_CONTEXT | V (Virtual) |
X3_VALID | |
X3_RELACAO | U_RetEscal() |
Obrigatório? | Não |
Usado? | Sim |
3) Ainda no configurador, será necessário criar um novo gatilho (SX7) para o campo Código do Produto (CNB_PRODUT) na tabela dos Itens do Contrato (CNB)
Campo | Valor |
---|---|
X7_CAMPO | CNB_PRODUT |
X7_SEQUENC | 011 [Modificar se necessário] |
X7_REGRA | U_RetEscal() |
X7_CDOMIN | CNB_NOMESC |
X7_TIPO | P |
X7_SEEK | N |
4) Inclua um Orçamento e gere o contrato. Verifique que o sistema passará a informar o novo campo conforme configurado, mesmo durante a geração do contrato (rotina Assistente de Contrato - TECA850)
05. ASSUNTOS RELACIONADOS