Problema em MVC.... Totalizador no browse

Estou com um problema em MVC, fiz uma tela usando o SF1 e preciso totalizar o F1_VALBRUT, fiz usando os exemplos que a gente acha na net, os dos musicos... e não aparece o totalizador, alguém pode me ajudar?

//Bibliotecas
#Include 'Protheus.ch'
#Include 'FwMVCDef.ch'
#INCLUDE "RWMAKE.CH"
/*/>>>-----------------------------------------------------------------------<<<
{Protheus.doc} CRMCA001
Tela para seleção de titulos para liberação de pagamento
Utilizando as tabelas SF1/SD1/SE2
@author Heraldo Conrado Hebling
@since 03/09/2016
@version 1.0
@obs Criar a coluna F1_XOK com o tamanho 2 no Configurador e deixar como não usado
/*/

User Function CRMCA001()
    Private oMark

    //Criando o MarkBrow
    oMark := FWMarkBrowse():New()
    oMark:SetAlias('SF1')

    //Setando semáforo, descrição e campo de mark
    oMark:SetSemaphore(.T.)
    oMark:SetDescription('Liberar para pagamento')
    oMark:SetFieldMark( 'F1_XOK' )

    //Setando Legenda
    oMark:AddLegend( "!Empty(&(U_CRMLEGLIB(SF1->F1_DOC,SF1->F1_PREFIXO,SF1->F1_FORNECE,SF1->F1_LOJA,SF1->F1_FILIAL,DtoS(SF1->F1_EMISSAO))))", "GREEN",    "Liberados" )
    oMark:AddLegend(  "Empty(&(U_CRMLEGLIB(SF1->F1_DOC,SF1->F1_PREFIXO,SF1->F1_FORNECE,SF1->F1_LOJA,SF1->F1_FILIAL,DtoS(SF1->F1_EMISSAO))))", "RED",    "Bloqueados" )

    oMark:SetMenuDef("CRMCA001")

    oMark:Activate()
Return NIL

/*---------------------------------------------------------------------*
 | Func:  MenuDef                                                      |
 | Autor: Heraldo Conrado Hebling                                      |
 | Data:  11/07/2018                                                   |
 | Desc:  Criação do menu MVC                                          |
 *---------------------------------------------------------------------*/
Static Function MenuDef()
    Local aRotina := {}

    //Criação das opções
    ADD OPTION aRotina TITLE 'Liberar'            ACTION 'U_CRMLIBU()'             OPERATION 2 ACCESS 0
    ADD OPTION aRotina TITLE 'Liberar Todos'      ACTION 'u_CRMLIBT(omark:obrowse:ofwfilter:afilter)'             OPERATION 2 ACCESS 0
    ADD OPTION aRotina TITLE 'Legenda'            ACTION 'U_CRM01Leg()'          OPERATION 2 ACCESS 0
Return aRotina

/*---------------------------------------------------------------------*
 | Func:  ModelDef                                                     |
 | Autor: Heraldo Conrado Hebling                                      |
 | Data:  03/09/2016                                                   |
 | Desc:  Criação do modelo de dados MVC                               |
 *---------------------------------------------------------------------*/

Static Function ModelDef()
    Local oModel        := Nil
    Local oStPai        := FWFormStruct(1, 'SF1')
    Local oStFilho         := FWFormStruct(1, 'SD1')
    Local aSD1Rel       := {}

    //Criando o modelo e os relacionamentos
    oModel := MPFormModel():New('CRMCA001M')
    oModel:AddFields('SF1MASTER',/*cOwner*/,oStPai)
    oModel:AddGrid('SD1DETAIL','SF1MASTER',oStFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/)  //cOwner é para quem pertence

    //Fazendo o relacionamento entre o Pai e Filho
    aAdd(aSD1Rel, {'D1_DOC'        ,    'F1_DOC'})
    aAdd(aSD1Rel, {'D1_SERIE'    ,    'F1_SERIE'})
    aAdd(aSD1Rel, {'D1_FORNECE'    ,    'F1_FORNECE'})
    aAdd(aSD1Rel, {'D1_LOJA'    ,    'F1_LOJA'})

    oModel:SetRelation('SD1DETAIL', aSD1Rel, SD1->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
    oModel:GetModel('SD1DETAIL'):SetUniqueLine({"D1_FILIAL","D1_DOC","D1_SERIE","D1_FORNECE","D1_LOJA"})    //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
    oModel:SetPrimaryKey({})

    //Setando as descrições
    oModel:SetDescription("Liberação de titulos")
    oModel:GetModel('SF1MASTER'):SetDescription('Modelo SF1')
    oModel:GetModel('SD1DETAIL'):SetDescription('Modelo SD1')
    //Adicionando totalizadores
    oModel:AddCalc('TOT_SALDO', 'SF1MASTER', 'SD1DETAIL', 'F1_VALBRUT', 'XX_TOTAL', 'SUM', , , "Valor Total:" )

Return FWLoadModel('oModel')

/*---------------------------------------------------------------------*
 | Func:  ViewDef                                                      |
 | Autor: Heraldo Conrado Hebling                                      |
 | Data:  11/07/2018                                                   |
 | Desc:  Criação da visão MVC                                         |
 *---------------------------------------------------------------------*/

Static Function ViewDef()
    Local oView            := Nil
    Local oModel        := FWLoadModel('CRMCA001')
    Local oStPai        := FWFormStruct(2, 'SF1')
    Local oStFilho        := FWFormStruct(2, 'SD1')

Local oStTot        := FWCalcStruct(oModel:GetModel('TOT_SALDO'))


    //Criando a View
    oView := FWFormView():New()
    oView:SetModel(oModel)

    //Adicionando os campos do cabeçalho e o grid dos filhos
    oView:AddField('VIEW_SF1',oStPai,'SF1MASTER')
    oView:AddGrid('VIEW_SD1',oStFilho,'SD1DETAIL')
oView:AddField('VIEW_TOT', oStTot,'TOT_SALDO')


    //Setando o dimensionamento de tamanho
    oView:CreateHorizontalBox('CABEC',30)
    oView:CreateHorizontalBox('GRID',30)
oView:CreateHorizontalBox('TOTAL',40)

    //Amarrando a view com as box
    oView:SetOwnerView('VIEW_SF1','CABEC')
    oView:SetOwnerView('VIEW_SD1','GRID')
oView:SetOwnerView('VIEW_TOT','TOTAL')
oView:EnableTitleView('VIEW_SD1' , 'Cabeçalho NF' ) 


oView:EnableTitleView('VIEW_SF1' , 'Cabeçalho' ) 



    //Habilitando título


Return FWLoadView('oView')

/*---------------------------------------------------------------------*
 | Func:  CRM01LEG                                                     |
 | Autor: Heraldo Conrado Hebling                                      |
 | Data:  11/07/2018                                                   |
 | Desc:  Demonstração de legendas                                     |
 *---------------------------------------------------------------------*/
User Function CRM01Leg()
    Local aLegenda := {}

    //Monta as cores
    AADD(aLegenda,{"BR_VERDE",        "Liberado"  })
    AADD(aLegenda,{"BR_VERMELHO",    "Bloqueado"})

    BrwLegenda("Liberação de titulos", "Status", aLegenda)
Return
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do SigaOAdvpl!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ou faça a sua própria pergunta.