PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
FWMARKBROWSE
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WANDERSONW WANDERSONW em 06/11/2020, 09:02 h
Local: SP  Registro: 01/07/2015  Postagens: 106
Bom dia Pessoal,

Fiz uma tela em FWMARKBROWSE para trazer as notas fiscais com ICMS RETIDO porem, quando ele vai fazer a inclusão dos dados na tabela temporaria, os campos valores estão sendo arredondados para cima e isso não pode acontecer tem que ser os valores exatos da nota fiscal. Estou enviando parte do Fonte para que, se alguem puder me ajudar ficarei muito grato.

#INCLUDE ‘totvs.ch‘
#INCLUDE ‘FWMVCDEF.CH‘
#Include "TOPCONN.CH"

User Function VSPFIS01()

     Private aCpoInfo    := {}
     Private aCampos        := {}
     Private aCpoData    := {}
     Private oTable        := Nil
     Private oMarkBrow    := Nil
     Private cCadastro   :=‘TESTE‘
     Private aLstGuia    :={}
     Private aRotina           := Menudef()
     FwMsgRun(,{ || fLoadData() }, cCadastro, ‘Carregando dados...‘)

     oMarkBrow := FwMarkBrowse():New()
     oMarkBrow:SetAlias(‘TRB‘)
     oMarkBrow:SetTemporary()
     oMarkBrow:SetColumns(aCampos)
     oMarkBrow:SetFieldMark(‘TMP_OK‘)
     oMarkBrow:SetMenuDef(‘FINA07MK‘)
     oMarkBrow:SetDescription(‘Geração de guia GNRE‘)
     oMarkBrow:SetAllMark( { || fInvert() } )
     oMarkBrow:Activate()

     If(Type(‘oTable‘) <> ‘U‘)

          oTable:Delete()
          oTable := Nil

     Endif

Return

Static Function MenuDef
     Local aRotina := {}

     Add Option aRotina Title ‘Gerar Guias‘ Action ‘U_FIS01ALL()‘ Operation 6 Access 0

Return(aRotina)

// Funcao para Verificar as Notas Marcadas e Gerar as Guia

User Function Fis01All()

     Local oMarkBrow := GetMarkBrow()

     dbSelectArea(‘TRB‘)
     dbGotop()

     While !TRB->(EoF())

          IF !Empty(TMP_OK)
               aAdd(aLstGuia,{TRB->TMP_FILIAL,TRB->TMP_CLIENTE,TRB->TMP_LOJA,TRB->TMP_DOC,TRB->TMP_SERIE,TRB->TMP_NOME,TRB->TMP_VLNF,TRB->TMP_VLICMR,TRB->TMP_EMIS})
          Endif

          TRB->(DbSkip())
     Enddo
     GeraGuia(TMP_DOC)

     oMark:oBrowse:Gotop()

     If MsgYesNo("Deseja Imprmir a Fita Somática")#.F.
          U_GeraSoma()

     Endif
Return


// Montagem dos Dados na Grid

Static Function fLoadData
     Local nI        := 0
     Local _cAlias    := GetNextAlias()

     If(Type(‘oTable‘) <> ‘U‘)

          oTable:Delete()
          oTable := Nil

     Endif

     oTable     := FwTemporaryTable():New(‘TRB‘)

     aCampos     := {}
     aCpoInfo := {}
     aCpoData := {}

     aadd(aCpoInfo, {‘Marcar‘        , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Filial‘        , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Cliente‘       , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Loja‘          , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Nota‘          , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Serie‘        , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Nome‘          , ‘@!‘               , 1})
     aadd(aCpoInfo, {‘Valor N.Fiscal‘, ‘@E 999,999,999.99‘, 1})
     aadd(aCpoInfo, {‘Valor ICMS RETIDO‘, ‘@E 999,999,999.99‘, 1})
     aadd(aCpoInfo, {‘Emissao N.Fiscal‘, ‘@!‘, 1})

     aadd(aCpoData, {‘TMP_OK‘       , ‘C‘                      , 2                        , 0})
     aadd(aCpoData, {‘TMP_FILIAL‘   , TamSx3( ‘F2_FILIAL‘ )[3] , TamSx3( ‘F2_FILIAL‘ )[1] , 0})
     aadd(aCpoData, {‘TMP_CLIENT‘   , TamSx3( ‘F2_CLIENTE‘ )[3], TamSx3( ‘F2_CLIENTE‘ )[1], 0})
     aadd(aCpoData, {‘TMP_LOJA‘     , TamSx3( ‘F2_LOJA‘ )[3]   , TamSx3( ‘F2_LOJA‘ )[1]   , 0})
     aadd(aCpoData, {‘TMP_DOC‘      , TamSx3( ‘F2_DOC‘ )[3]    , TamSx3( ‘F2_DOC‘ )[1]    , 0})
     aadd(aCpoData, {‘TMP_SERIE‘    , TamSx3( ‘F2_SERIE‘ )[3] , TamSx3( ‘F2_SERIE‘ )[1] , 0})
     aadd(aCpoData, {‘TMP_NOME‘     , TamSx3( ‘A1_NOME‘ )[3]   , TamSx3( ‘A1_NOME‘ )[1]   , 0})
     aadd(aCpoData, {‘TMP_VLNF‘     , TamSx3( ‘F2_VALBRUT‘ )[3], TamSx3( ‘F2_VALBRUT‘ )[1], 0})
     aadd(aCpoData, {‘TMP_VLICMR‘   , TamSx3( ‘F2_ICMSRET‘ )[3], TamSx3( ‘F2_ICMSRET‘ )[1], 0})
     aadd(aCpoData, {‘TMP_EMIS‘     , TamSx3( ‘F2_EMISSAO‘ )[3], TamSx3( ‘F2_EMISSAO‘ )[1], 0})

     For nI := 1 To Len(aCpoData)

          If(aCpoData[nI][1] <> ‘TMP_OK‘ .and. aCpoData[nI][1] <> ‘TMP_RECNO‘)

               aAdd(aCampos, FwBrwColumn():New())

               aCampos[Len(aCampos)]:SetData( &(‘{||‘ + aCpoData[nI,1] + ‘}‘) )
               aCampos[Len(aCampos)]:SetTitle(aCpoInfo[nI,1])
               aCampos[Len(aCampos)]:SetPicture(aCpoInfo[nI,2])
               aCampos[Len(aCampos)]:SetSize(aCpoData[nI,3])
               aCampos[Len(aCampos)]:SetDecimal(aCpoData[nI,4])
               aCampos[Len(aCampos)]:SetAlign(aCpoInfo[nI,3])

          EndIf

     Next nI

     oTable:SetFields(aCpoData)

     oTable:Create()

     BeginSql Alias _cAlias

       SELECT
     SF2.F2_CHVNFE   AS NFEHCHAVE,
     SF2.F2_FILIAL   AS NFEHFILIAL,
     SF2.F2_DOC      AS NFEHNOTAFISCAL,
     SF2.F2_SERIE    AS NFESERIE,
     SF2.F2_EMISSAO AS NFEEMISSAO,
     SF2.F2_CLIENTE AS NFEHCODCLI,
     SF2.F2_LOJA     AS NFEHCODLOJ,
     SF2.F2_VALBRUT AS NFEHVLTOTALNF,
     SF2.F2_ICMSRET AS NFEICMSRET,
     SA1.A1_NOME     AS NFEHNOMECLI,
     SF2.F2_ZZOK     AS NFEOK

     FROM
     %table:SF2% SF2,%table:SA1% SA1
     WHERE
     1=1
     AND F2_FILIAL IN (‘51‘)
     AND SF2.F2_SERIE = ‘1‘
     AND SF2.D_E_L_E_T_ = ‘‘
     AND SF2.F2_EMISSAO BETWEEN ‘20201026‘ AND ‘20201026‘
     AND SA1.A1_COD    = SF2.F2_CLIENTE
     AND SA1.A1_LOJA   = SF2.F2_LOJA
     AND SA1.D_E_L_E_T_=‘‘
     AND SF2.F2_DOC in(‘000414873‘)

     ENDSQL

     (_cAlias)->(DbGoTop())

     DbSelectArea(‘TRB‘)

     While(!(_cAlias)->(EoF()))

          RecLock(‘TRB‘, .T.)

          TRB->TMP_FILIAL    := (_cAlias)->NFEHFILIAL
          TRB->TMP_CLIENT    := (_cAlias)->NFEHCODCLI
          TRB->TMP_LOJA      := (_cAlias)->NFEHCODLOJ
          TRB->TMP_DOC       := (_cAlias)->NFEHNOTAFISCAL
          TRB->TMP_SERIE     := (_cAlias)->NFESERIE
          TRB->TMP_NOME      := (_cAlias)->NFEHNOMECLI
          TRB->TMP_VLNF      := (_cAlias)->NFEHVLTOTALNF
          TRB->TMP_VLICMR    := (_cAlias)->NFEICMSRET
          TRB->TMP_EMIS   := STOD((_cAlias)->NFEEMISSAO)
          TRB->(MsUnlock())

          (_cAlias)->(DbSkip())

     EndDo

     TRB->(DbGoTop())

     (_cAlias)->(DbCloseArea())

Return


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUCASLOTT LUCASLOTT em 06/11/2020, 10:49 h
Local: SP  Registro: 21/05/2020  Postagens: 49
Bom dia Wanderson, tudo certo?

Na máscara do campo você está trazendo ela dessa forma @E 999,999,999.99, em uma análise prévia do fonte, acredito que possa ser isso, pois ele sempre vai respeitar a máscara, no caso iria arredondar para 2 casas decimais, teste esse ajuste.

Lucas Lott

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 06/11/2020, 11:09 h
Local: SP  Registro: 20/08/2010  Postagens: 606
voce está criando os campos sem casas decimais.
altere a criação da tabela temporária:

     aadd(aCpoData, {'TMP_FILIAL'   , TamSx3( 'F2_FILIAL' )[3] , TamSx3( 'F2_FILIAL' )[1] , TamSx3( 'F2_FILIAL' )[2] })
     aadd(aCpoData, {'TMP_CLIENT'   , TamSx3( 'F2_CLIENTE' )[3], TamSx3( 'F2_CLIENTE' )[1], TamSx3( 'F2_CLIENTE' )[2]})
     aadd(aCpoData, {'TMP_LOJA'     , TamSx3( 'F2_LOJA' )[3]   , TamSx3( 'F2_LOJA' )[1]   , TamSx3( 'F2_LOJA' )[2]   })
     aadd(aCpoData, {'TMP_DOC'      , TamSx3( 'F2_DOC' )[3]    , TamSx3( 'F2_DOC' )[1]    , TamSx3( 'F2_DOC' )[2]    })
     aadd(aCpoData, {'TMP_SERIE'    , TamSx3( 'F2_SERIE' )[3] , TamSx3( 'F2_SERIE' )[1] , TamSx3( 'F2_SERIE' )[2] })
     aadd(aCpoData, {'TMP_NOME'     , TamSx3( 'A1_NOME' )[3]   , TamSx3( 'A1_NOME' )[1]   , TamSx3( 'A1_NOME' )[2]   })
     aadd(aCpoData, {'TMP_VLNF'     , TamSx3( 'F2_VALBRUT' )[3], TamSx3( 'F2_VALBRUT' )[1], TamSx3( 'F2_VALBRUT' )[2]})
     aadd(aCpoData, {'TMP_VLICMR'   , TamSx3( 'F2_ICMSRET' )[3], TamSx3( 'F2_ICMSRET' )[1], TamSx3( 'F2_ICMSRET' )[2]})
     aadd(aCpoData, {'TMP_EMIS'     , TamSx3( 'F2_EMISSAO' )[3], TamSx3( 'F2_EMISSAO' )[1], TamSx3( 'F2_EMISSAO' )[2]})

desta forma os campos serão criados com a mesmo tamanho do campo ‘original‘


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário WANDERSONW WANDERSONW em 06/11/2020, 12:30 h
Local: SP  Registro: 01/07/2015  Postagens: 106
Boa tarde Emerson,

Deu certo muito obrigado.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário MULLER2008 MULLER2008 em 23/08/2021, 13:35 h
Local: RJ  Registro: 02/02/2008  Postagens: 19
Prezado Emerson.
Estou fazendo um programa muito parecido com o seu, porém é na tabela SE2.
Você teria como enviar as funções GeraGuia e Finverte para verificar a sua lógica.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal