- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Apos gravar dados na base de Dados MVC
Perguntas Apos gravar dados na base de Dados MVC
- Wanderson
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 39
- Obrigados Recebidos: 0
3 anos 1 mês atrás - 3 anos 1 mês atrás #33185
por Wanderson
Apos gravar dados na base de Dados MVC foi criado por Wanderson
Boa Tarde Pessoal,
Estou precisando da ajuda de voce para
1º atualizar uma tabela externa depois que o sistema gravar os dados na base de dados do protheus, a tela foi feita em MVC e não sei onde colocar esta chamada para atualizar as tabelas externas, será que alguém pode me ajudar
2º Quando selecionar a opção Alterar o grid deve sofre algumas alterações, tenho um campo VLRECUPERAC que devo abater este de cada item na grid do campo SLD ATUAL D. antes de mostrar os dados ao usuario.
Segue abaixo o Fonte.
#include "protheus.ch"
#include "fwmvcdef.ch"
#INCLUDE 'TOPCONN.CH'
#Define ALIAS_FORM0 "ZB0"
#Define ALIAS_GRID0 ALIAS_FORM0
//
/*/{Protheus.doc} VSPFI31
Tela de Analise do tester
Tipo: MVC
@author Wanderson F.Souza
@type function
@since 14/10/2021
/*/
//
User Function VSPFI31()
Local oBrowse As Object
Local cAliasForm := ALIAS_FORM0
Private aRotina := MenuDef()
Private aSED := {}
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("ZB0")
oBrowse:SetDescription("Transferencias - Quicken")
oBrowse:SetMenuDef("GSFAT097")
/*
oBrowse:AddLegend( cAliasForm+"_STATUS =='N' ", "GREEN", "Nova Rotina para Desenvolvimento" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='D' ", "BR_CANCEL", "Rotina Descontinuada" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='E' ", "BR_LARANJA", "Rotina em Desenvolvimento" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='T' ", "RIGHT", "Enviado para Tester" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='X' ", "PMSSETAESQ", "Item Liberado para Uso em Produção." )
oBrowse:AddLegend( cAliasForm+"_STATUS =='A' ", "PEDIDO", "Aprovado pelo Tester" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='L' .AND. " + cAliasForm+"_TPATIV =='L' .AND. "+ cAliasForm+"_APROVA =='Sim'", "CHECKED", "Rotina Liberado para Uso em producao" )
*/
oBrowse:Activate()
Return NIL
//
/*/{Protheus.doc} MenuDef
Definição do Menu do Programa
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function MenuDef()
Local aRotina As Array
aRotina := {}
ADD OPTION aRotina TITLE "Pesquisar" ACTION "VIEWDEF.VSPFI31" OPERATION 1 ACCESS 0
ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.VSPFI31" OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.VSPFI31" OPERATION 3 ACCESS 0
ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.VSPFI31" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Imprimir" ACTION "VIEWDEF.VSPFI31" OPERATION 8 ACCESS 0
Return (aRotina)
//
/*/{Protheus.doc} ModelDef
Definição do modelo de Dados
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function ModelDef()
Local oMasterZB0 As Object
Local oDetailZB0 As Object
Local oModel As Object
oMasterZB0 := FWFormStruct(1, "ZB0", {|cIdField| VldField(cIdField)})
oDetailZB0 := FWFormStruct(1, "ZB0", {|cIdField| !VldField(cIdField)})
oModel := MPFormModel():New("VSPFI31M", /*bPre*/, /*bPost*/, /*bCommit*/, /*bCancel*/)
oModel:SetDescription("Transferencia")
oModel:AddFields("ZB0MASTER", /*cOwner*/, oMasterZB0)
oModel:SetPrimaryKey({"ZB0_FILIAL", "ZB0_IDSEQ", "ZB0_ITEM"})
oModel:AddGrid("ZB0DETAIL", "ZB0MASTER", oDetailZB0, /*bLinePre*/, /*bLinePost*/, /*bPre*/, /*bLinePost*/, /*bLoad*/)
oModel:SetRelation("ZB0DETAIL", {{"ZB0_FILIAL", "FWxFilial('ZB0')"}, {"ZB0_IDSEQ", "ZB0_IDSEQ"}}, ZB0->(IndexKey(1)))
oModel:GetModel("ZB0DETAIL"):SetUniqueLine({"ZB0_ITEM"})
oModel:GetModel("ZB0MASTER"):SetDescription("Cabecalho")
oModel:GetModel("ZB0DETAIL"):SetDescription("Itens")
//Bloqueia o campo para Edição no Grid
oDetailZB0:SetProperty('ZB0_ITEM', MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN, '.F.')) //Modo de Edição
Return (oModel)
//
/*/{Protheus.doc} ViewDef
Definição da interface
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function ViewDef()
LOCAL oView as Object
LOCAL oModel as Object
LOCAL oMasterZB0 as Object
LOCAL oDetailZB0 as Object
oModel := FWLoadModel("VSPFI31")
oMasterZB0 := FWFormStruct(2, "ZB0", {|cIdField| VldField(cIdField)})
oDetailZB0 := FWFormStruct(2, "ZB0", {|cIdField| !VldField(cIdField)})
//Remove Field da Grid
oDetailZB0:RemoveField("ZB0_IDSEQ")
oDetailZB0:RemoveField("ZB0_FILORI")
oDetailZB0:RemoveField("ZB0_DATA")
oDetailZB0:RemoveField("ZB0_NFIORI")
oDetailZB0:RemoveField("ZB0_SLDIFO")
//Criando grupos
oMasterZB0:AddGroup( 'GRUPO01', 'Cabecalho' , '', 2 )
// Colocando alguns campos por agrupamentos'
oMasterZB0:SetProperty( 'ZB0_IDSEQ' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_DATA' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_FILORI' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_NFIORI' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_SLDIFO' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("ZB0MASTER", oMasterZB0)
oView:AddGrid("ZB0DETAIL", oDetailZB0)
oView:AddIncrementField("ZB0DETAIL", "ZB0_ITEM")
oView:CreateHorizontalBox("SUPERIOR", 30)
oView:CreateHorizontalBox("INFERIOR", 70)
oView:SetOwnerView("ZB0MASTER", "SUPERIOR")
oView:SetOwnerView("ZB0DETAIL", "INFERIOR")
&& Gatilho para encrementar o Cabeçalho
oView:SetFieldAction("ZB0_FILORI", {|oView, cIdView, cField, xValue| U_FSLDINI(oView, cIdView, cField, xValue)})
&& Gatilho para Alimentar o Grid
oView:SetFieldAction("ZB0_FILDES", {|oView, cIdView, cField, xValue| U_FAGRID(oView, cIdView, cField, xValue)})
Return (oView)
//
/*/{Protheus.doc} VldField
Define quais campos ficarão do cabeçalho
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function VldField(cIdField As Char)
Local aHeader As Array
Local lRet As Logical
aHeader := {}
AAdd(aHeader, "ZB0_IDSEQ")
AAdd(aHeader, "ZB0_DATA")
AAdd(aHeader, "ZB0_FILORI")
AAdd(aHeader, "ZB0_NFIORI")
AAdd(aHeader, "ZB0_SLDIFO")
lRet := (AScan(aHeader, {|x| (x == RTrim(cIdField))}) > 0)
Return (lRet)
// Funcao para Mostrar o Saldo Inicial da Filial Origem
User Function FSLDINI(oView, cIdView, cField, xValue)
//Variaveis para controle do Modelo
Local oModel := oView:GetModel()
Local nOperation := 0
Local cCodFilOrigem := oModel:GetValue("ZB0MASTER", "ZB0_FILORI")
Local nOperation := oModel:GetOperation()
//Variaveis para Controle de Filiais
Local cDesFil := Space(30)
Local nPos := 0
Local xFilial := {}
cQuery:=" SELECT * FROM FLUXO_SALDOINICIAL "
cQuery+=" WHERE "
cQuery+=" FILIAL='" + cCodFilOrigem + "'"
cQuery+=" AND SUBSTRING(DATA,1,6) ='" + Substr(Dtos(Date()),1,6) +"'""
TCQuery cQuery New Alias "SLDINI"
Count To nTotal
dbSelectArea("SLDINI")
dbGoTop()
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0MASTER"):SetValue("ZB0_SLDIFO" , SLDINI->VALOR) && Saldo Filial Origem
oView:Refresh()
ENDIF
SLDINI->(dbCloseArea() )
dbSelectArea("SM0")
SM0->(dbGotop())
While !Eof()
// Filiais Desativadas
If SM0->M0_CODIGO == "99" .OR. ;
SM0->M0_CODFIL == "01" .OR. ;
SM0->M0_CODFIL == "02" .OR. ;
SM0->M0_CODFIL == "05" .OR. ;
SM0->M0_CODFIL == "15" .OR. ;
SM0->M0_CODFIL == "45" .OR. ;
SM0->M0_CODFIL == "50" .OR. ;
SM0->M0_CODFIL == "80"
SM0->(dbSkip())
Loop
Endif
aADD(xFilial,{SM0->M0_CODFIL,SM0->M0_FILIAL})
dbSelectArea("SM0")
SM0->(dbSkip())
Enddo
If !Empty(cCodFilOrigem)
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
else
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
Endif
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0MASTER"):SetValue("ZB0_NFIORI" , cDesFil) && Nome da Filial
oView:Refresh()
ENDIF
Return()
// Funcao Alimentar o grid
User Function FAGRID(oView, cIdView, cField, xValue)
//Variaveis para controle do Modelo
Local oModel := oView:GetModel()
Local nOperation := 0
Local cCodFilOrigem := oModel:GetValue("ZB0DETAIL", "ZB0_FILDES")
Local nOperation := oModel:GetOperation()
Local cDesFil := Space(30)
Local nPos := 0
Local xFilial := {}
Local nValDest := 0
cQuery:=" SELECT * FROM FLUXO_SALDOINICIAL "
cQuery+=" WHERE "
cQuery+=" FILIAL='" + cCodFilOrigem + "'"
cQuery+=" AND SUBSTRING(DATA,1,6) ='" + Substr(Dtos(Date()),1,6) +"'""
TCQuery cQuery New Alias "TMPGRID"
Count To nTotal
dbSelectArea("TMPGRID")
dbGoTop()
nValDest := TMPGRID->VALOR
TMPGRID->(dbCloseArea())
dbSelectArea("SM0")
SM0->(dbGotop())
While !Eof()
// Filiais Desativadas
If SM0->M0_CODIGO == "99" .OR. ;
SM0->M0_CODFIL == "01" .OR. ;
SM0->M0_CODFIL == "02" .OR. ;
SM0->M0_CODFIL == "05" .OR. ;
SM0->M0_CODFIL == "15" .OR. ;
SM0->M0_CODFIL == "45" .OR. ;
SM0->M0_CODFIL == "50" .OR. ;
SM0->M0_CODFIL == "80"
SM0->(dbSkip())
Loop
Endif
aADD(xFilial,{SM0->M0_CODFIL,SM0->M0_FILIAL})
dbSelectArea("SM0")
SM0->(dbSkip())
Enddo
If !Empty(cCodFilOrigem)
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
else
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
Endif
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_NFILCR" , cDesFil) && Nome da Filial
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_SLDATU" , nValDest) && Saldo da Filial de Destino que recebera o Credito
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_RECVL" , nValDest) && Mantem o Saldo Origem antes da Transferencia,
&& caso seja necessário efetuar uma alteração este VALOR
&& passa a ser o Principal no campo Sld.Atual D. ZB0_SLDATU
ElseIf nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_SLDATU" , nValDest ) && Saldo da Filial de Destino que recebera o Credito
oView:Refresh()
ENDIF
Return()
// Função para Atualizar base externa
User Function fAtuBex()
Alert('Base externa atualizada')
Endif
Estou precisando da ajuda de voce para
1º atualizar uma tabela externa depois que o sistema gravar os dados na base de dados do protheus, a tela foi feita em MVC e não sei onde colocar esta chamada para atualizar as tabelas externas, será que alguém pode me ajudar
2º Quando selecionar a opção Alterar o grid deve sofre algumas alterações, tenho um campo VLRECUPERAC que devo abater este de cada item na grid do campo SLD ATUAL D. antes de mostrar os dados ao usuario.
Segue abaixo o Fonte.
#include "protheus.ch"
#include "fwmvcdef.ch"
#INCLUDE 'TOPCONN.CH'
#Define ALIAS_FORM0 "ZB0"
#Define ALIAS_GRID0 ALIAS_FORM0
//
/*/{Protheus.doc} VSPFI31
Tela de Analise do tester
Tipo: MVC
@author Wanderson F.Souza
@type function
@since 14/10/2021
/*/
//
User Function VSPFI31()
Local oBrowse As Object
Local cAliasForm := ALIAS_FORM0
Private aRotina := MenuDef()
Private aSED := {}
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("ZB0")
oBrowse:SetDescription("Transferencias - Quicken")
oBrowse:SetMenuDef("GSFAT097")
/*
oBrowse:AddLegend( cAliasForm+"_STATUS =='N' ", "GREEN", "Nova Rotina para Desenvolvimento" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='D' ", "BR_CANCEL", "Rotina Descontinuada" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='E' ", "BR_LARANJA", "Rotina em Desenvolvimento" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='T' ", "RIGHT", "Enviado para Tester" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='X' ", "PMSSETAESQ", "Item Liberado para Uso em Produção." )
oBrowse:AddLegend( cAliasForm+"_STATUS =='A' ", "PEDIDO", "Aprovado pelo Tester" )
oBrowse:AddLegend( cAliasForm+"_STATUS =='L' .AND. " + cAliasForm+"_TPATIV =='L' .AND. "+ cAliasForm+"_APROVA =='Sim'", "CHECKED", "Rotina Liberado para Uso em producao" )
*/
oBrowse:Activate()
Return NIL
//
/*/{Protheus.doc} MenuDef
Definição do Menu do Programa
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function MenuDef()
Local aRotina As Array
aRotina := {}
ADD OPTION aRotina TITLE "Pesquisar" ACTION "VIEWDEF.VSPFI31" OPERATION 1 ACCESS 0
ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.VSPFI31" OPERATION 2 ACCESS 0
ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.VSPFI31" OPERATION 3 ACCESS 0
ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.VSPFI31" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Imprimir" ACTION "VIEWDEF.VSPFI31" OPERATION 8 ACCESS 0
Return (aRotina)
//
/*/{Protheus.doc} ModelDef
Definição do modelo de Dados
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function ModelDef()
Local oMasterZB0 As Object
Local oDetailZB0 As Object
Local oModel As Object
oMasterZB0 := FWFormStruct(1, "ZB0", {|cIdField| VldField(cIdField)})
oDetailZB0 := FWFormStruct(1, "ZB0", {|cIdField| !VldField(cIdField)})
oModel := MPFormModel():New("VSPFI31M", /*bPre*/, /*bPost*/, /*bCommit*/, /*bCancel*/)
oModel:SetDescription("Transferencia")
oModel:AddFields("ZB0MASTER", /*cOwner*/, oMasterZB0)
oModel:SetPrimaryKey({"ZB0_FILIAL", "ZB0_IDSEQ", "ZB0_ITEM"})
oModel:AddGrid("ZB0DETAIL", "ZB0MASTER", oDetailZB0, /*bLinePre*/, /*bLinePost*/, /*bPre*/, /*bLinePost*/, /*bLoad*/)
oModel:SetRelation("ZB0DETAIL", {{"ZB0_FILIAL", "FWxFilial('ZB0')"}, {"ZB0_IDSEQ", "ZB0_IDSEQ"}}, ZB0->(IndexKey(1)))
oModel:GetModel("ZB0DETAIL"):SetUniqueLine({"ZB0_ITEM"})
oModel:GetModel("ZB0MASTER"):SetDescription("Cabecalho")
oModel:GetModel("ZB0DETAIL"):SetDescription("Itens")
//Bloqueia o campo para Edição no Grid
oDetailZB0:SetProperty('ZB0_ITEM', MODEL_FIELD_WHEN, FwBuildFeature(STRUCT_FEATURE_WHEN, '.F.')) //Modo de Edição
Return (oModel)
//
/*/{Protheus.doc} ViewDef
Definição da interface
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function ViewDef()
LOCAL oView as Object
LOCAL oModel as Object
LOCAL oMasterZB0 as Object
LOCAL oDetailZB0 as Object
oModel := FWLoadModel("VSPFI31")
oMasterZB0 := FWFormStruct(2, "ZB0", {|cIdField| VldField(cIdField)})
oDetailZB0 := FWFormStruct(2, "ZB0", {|cIdField| !VldField(cIdField)})
//Remove Field da Grid
oDetailZB0:RemoveField("ZB0_IDSEQ")
oDetailZB0:RemoveField("ZB0_FILORI")
oDetailZB0:RemoveField("ZB0_DATA")
oDetailZB0:RemoveField("ZB0_NFIORI")
oDetailZB0:RemoveField("ZB0_SLDIFO")
//Criando grupos
oMasterZB0:AddGroup( 'GRUPO01', 'Cabecalho' , '', 2 )
// Colocando alguns campos por agrupamentos'
oMasterZB0:SetProperty( 'ZB0_IDSEQ' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_DATA' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_FILORI' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_NFIORI' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oMasterZB0:SetProperty( 'ZB0_SLDIFO' , MVC_VIEW_GROUP_NUMBER , 'GRUPO01' )
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("ZB0MASTER", oMasterZB0)
oView:AddGrid("ZB0DETAIL", oDetailZB0)
oView:AddIncrementField("ZB0DETAIL", "ZB0_ITEM")
oView:CreateHorizontalBox("SUPERIOR", 30)
oView:CreateHorizontalBox("INFERIOR", 70)
oView:SetOwnerView("ZB0MASTER", "SUPERIOR")
oView:SetOwnerView("ZB0DETAIL", "INFERIOR")
&& Gatilho para encrementar o Cabeçalho
oView:SetFieldAction("ZB0_FILORI", {|oView, cIdView, cField, xValue| U_FSLDINI(oView, cIdView, cField, xValue)})
&& Gatilho para Alimentar o Grid
oView:SetFieldAction("ZB0_FILDES", {|oView, cIdView, cField, xValue| U_FAGRID(oView, cIdView, cField, xValue)})
Return (oView)
//
/*/{Protheus.doc} VldField
Define quais campos ficarão do cabeçalho
@author Wanderson F.Souzas
@since 28/04/2021
/*/
//
Static Function VldField(cIdField As Char)
Local aHeader As Array
Local lRet As Logical
aHeader := {}
AAdd(aHeader, "ZB0_IDSEQ")
AAdd(aHeader, "ZB0_DATA")
AAdd(aHeader, "ZB0_FILORI")
AAdd(aHeader, "ZB0_NFIORI")
AAdd(aHeader, "ZB0_SLDIFO")
lRet := (AScan(aHeader, {|x| (x == RTrim(cIdField))}) > 0)
Return (lRet)
// Funcao para Mostrar o Saldo Inicial da Filial Origem
User Function FSLDINI(oView, cIdView, cField, xValue)
//Variaveis para controle do Modelo
Local oModel := oView:GetModel()
Local nOperation := 0
Local cCodFilOrigem := oModel:GetValue("ZB0MASTER", "ZB0_FILORI")
Local nOperation := oModel:GetOperation()
//Variaveis para Controle de Filiais
Local cDesFil := Space(30)
Local nPos := 0
Local xFilial := {}
cQuery:=" SELECT * FROM FLUXO_SALDOINICIAL "
cQuery+=" WHERE "
cQuery+=" FILIAL='" + cCodFilOrigem + "'"
cQuery+=" AND SUBSTRING(DATA,1,6) ='" + Substr(Dtos(Date()),1,6) +"'""
TCQuery cQuery New Alias "SLDINI"
Count To nTotal
dbSelectArea("SLDINI")
dbGoTop()
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0MASTER"):SetValue("ZB0_SLDIFO" , SLDINI->VALOR) && Saldo Filial Origem
oView:Refresh()
ENDIF
SLDINI->(dbCloseArea() )
dbSelectArea("SM0")
SM0->(dbGotop())
While !Eof()
// Filiais Desativadas
If SM0->M0_CODIGO == "99" .OR. ;
SM0->M0_CODFIL == "01" .OR. ;
SM0->M0_CODFIL == "02" .OR. ;
SM0->M0_CODFIL == "05" .OR. ;
SM0->M0_CODFIL == "15" .OR. ;
SM0->M0_CODFIL == "45" .OR. ;
SM0->M0_CODFIL == "50" .OR. ;
SM0->M0_CODFIL == "80"
SM0->(dbSkip())
Loop
Endif
aADD(xFilial,{SM0->M0_CODFIL,SM0->M0_FILIAL})
dbSelectArea("SM0")
SM0->(dbSkip())
Enddo
If !Empty(cCodFilOrigem)
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
else
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
Endif
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0MASTER"):SetValue("ZB0_NFIORI" , cDesFil) && Nome da Filial
oView:Refresh()
ENDIF
Return()
// Funcao Alimentar o grid
User Function FAGRID(oView, cIdView, cField, xValue)
//Variaveis para controle do Modelo
Local oModel := oView:GetModel()
Local nOperation := 0
Local cCodFilOrigem := oModel:GetValue("ZB0DETAIL", "ZB0_FILDES")
Local nOperation := oModel:GetOperation()
Local cDesFil := Space(30)
Local nPos := 0
Local xFilial := {}
Local nValDest := 0
cQuery:=" SELECT * FROM FLUXO_SALDOINICIAL "
cQuery+=" WHERE "
cQuery+=" FILIAL='" + cCodFilOrigem + "'"
cQuery+=" AND SUBSTRING(DATA,1,6) ='" + Substr(Dtos(Date()),1,6) +"'""
TCQuery cQuery New Alias "TMPGRID"
Count To nTotal
dbSelectArea("TMPGRID")
dbGoTop()
nValDest := TMPGRID->VALOR
TMPGRID->(dbCloseArea())
dbSelectArea("SM0")
SM0->(dbGotop())
While !Eof()
// Filiais Desativadas
If SM0->M0_CODIGO == "99" .OR. ;
SM0->M0_CODFIL == "01" .OR. ;
SM0->M0_CODFIL == "02" .OR. ;
SM0->M0_CODFIL == "05" .OR. ;
SM0->M0_CODFIL == "15" .OR. ;
SM0->M0_CODFIL == "45" .OR. ;
SM0->M0_CODFIL == "50" .OR. ;
SM0->M0_CODFIL == "80"
SM0->(dbSkip())
Loop
Endif
aADD(xFilial,{SM0->M0_CODFIL,SM0->M0_FILIAL})
dbSelectArea("SM0")
SM0->(dbSkip())
Enddo
If !Empty(cCodFilOrigem)
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
else
nPos := aScan(xFilial,{|x| x[1]==cCodFilOrigem})
If nPos <> 0
cDesFil := xFilial[nPos][2]
EndIf
Endif
IF nOperation == MODEL_OPERATION_INSERT .Or. nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_NFILCR" , cDesFil) && Nome da Filial
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_SLDATU" , nValDest) && Saldo da Filial de Destino que recebera o Credito
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_RECVL" , nValDest) && Mantem o Saldo Origem antes da Transferencia,
&& caso seja necessário efetuar uma alteração este VALOR
&& passa a ser o Principal no campo Sld.Atual D. ZB0_SLDATU
ElseIf nOperation == MODEL_OPERATION_UPDATE
oModel:GetModel("ZB0DETAIL"):SetValue("ZB0_SLDATU" , nValDest ) && Saldo da Filial de Destino que recebera o Credito
oView:Refresh()
ENDIF
Return()
// Função para Atualizar base externa
User Function fAtuBex()
Alert('Base externa atualizada')
Endif
Ultima edição: 3 anos 1 mês atrás por Wanderson.
Por favor Acessar ou Registrar para participar da conversa.
- Wanderson
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 39
- Obrigados Recebidos: 0
3 anos 1 mês atrás #33186
por Wanderson
Respondido por Wanderson no tópico Apos gravar dados na base de Dados MVC
Complemento.
Quando Seleciono a Opção alterar, em que ponto do fonte posso colocar uma validação para atualizar campos no grid.
Quando Seleciono a Opção alterar, em que ponto do fonte posso colocar uma validação para atualizar campos no grid.
Por favor Acessar ou Registrar para participar da conversa.
- admin
- Desconectado
- Administrador
Menos
Mais
- Postagens: 297
- Obrigados Recebidos: 21
3 anos 1 mês atrás #33187
por admin
Respondido por admin no tópico Apos gravar dados na base de Dados MVC
Na criação do ModelForm vc vai colocar uma função para tratar após gravação.
oModel := MPFormModel():New('IniCuraM',,,{ |oModel| fGrava(oModel)}/*bCommit*/,/*bCancel*/)
Exemplo ai do fGrava.
Static Function fGrava(oModel)
Local aArea := GetArea()
If FWFormCommit( oModel ) // Grava os Dados e Retorna .T.
Aqui vc fara o tratamento que deseja na tabela, os dados já foram gravados ok.
Endif
RestArea(aArea)
Return .T.
oModel := MPFormModel():New('IniCuraM',,,{ |oModel| fGrava(oModel)}/*bCommit*/,/*bCancel*/)
Exemplo ai do fGrava.
Static Function fGrava(oModel)
Local aArea := GetArea()
If FWFormCommit( oModel ) // Grava os Dados e Retorna .T.
Aqui vc fara o tratamento que deseja na tabela, os dados já foram gravados ok.
Endif
RestArea(aArea)
Return .T.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Apos gravar dados na base de Dados MVC
Tempo para a criação da página:0.093 segundos