|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
FWMARKBROWSE |
|
Versão: |
12.1.25 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
WANDERSONW
em 06/11/2020, 09:02 h
Local: SP Registro: 01/07/2015 Postagens: 166 |
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
|
|
|
Mensagem do
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 |
|
|
Mensagem do
EMERSON.EN
em 06/11/2020, 11:09 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
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‘
|
|
|
Mensagem do
WANDERSONW
em 06/11/2020, 12:30 h
Local: SP Registro: 01/07/2015 Postagens: 166 |
Boa tarde Emerson,
Deu certo muito obrigado. |
|
|
Mensagem do
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
|
|