Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Substituio de caracteres
Ol galera, algum conhece um comando en ADVPL para substituio de
caraceres, como por exemplo:
Trocar por 'E' sempre que encontrar '' ???
Vlw...
Repondido por
4. Resoluo de Tela
Ol
Algum sabe como descubro a resoluo do monitor (800x600,
1024x768, etc)?
Cesar
Repondido por
:= TkPCSize(70,80)
Desc.
Esta funcao eh responsavel por pegar as coordenadas do
Uso
*/
Static Function TkPCSize(nV, nH)
Local aSize := {}
AaDd(aSize,
AaDd(aSize,
AaDd(aSize,
AaDd(aSize,
oMainWnd:nBottom )
oMainWnd:nRight )
oMainWnd:nBottom/2 )
oMainWnd:nRight/2 )
Repondido por
Bom Dia ,achei muito boa a sua dica e fui testar ,criei o arquivo mp.htm e
configurei o ini porem quando eu entro no sistema aparece aquela tela
padro com nome microsiga intelligence,tem ideia o que pode ser?
Segue meu mp8rmt.ini abaixo
[Config]
BrowserEnabled=1
LastMainProg=sigaadv
[Drivers]
Active=TCP
Repondido por
Ol Marcelo.
At consegui fazer o protheus abrir uma pgina web dentro do remote,
s que ele sempre abre a pgina inicial configurada. Sabe se possvel
determinar uma pgina especfica???
Muito bom o recurso.
Abrao
Repondido por
Abraos
Repondido por
Boa tarde .Bindo onde deve ser configurado isso? no programa inicial ?
pq fiz isso e no deu.
Repondido por
Att
Maickon
Repondido por
Return
USER FUNCTION SIGAATF()
MostraLogo()
Return
//USER FUNCTION SIGACFG()
//MostraLogo()
//Return
USER FUNCTION SIGACOM()
MostraLogo()
Return
USER FUNCTION SIGACON()
MostraLogo()
Return
USER FUNCTION SIGAEST()
MostraLogo()
Return
USER FUNCTION SIGAFAT()
MostraLogo()
Return
USER FUNCTION SIGAFIN()
MostraLogo()
Return
USER FUNCTION SIGAFIS()
MostraLogo()
Return
USER FUNCTION SIGAGPE()
MostraLogo()
Return
USER FUNCTION SIGALOJ()
MostraLogo()
Return
USER FUNCTION SIGAPCP()
MostraLogo()
Return
nWidthBmp
:= 0
nHeightBmp:= 0
nTop
:= 0
nLeft
:= 0
If ( lFirst == NIL )
cLastEmp := ''
oMainWnd:ReadClientCoors()
principal
lFirst := F.
EndIf
If ( cLastEmp != SM0->M0_CODIGO )// + SM0->M0_CODFIL )
cLastEmp := SM0->M0_CODIGO //+ SM0->M0_CODFIL
oEspBmp:LoadBmp('LOGO')
oEspBmp:Refresh()
EndIf
Return
Paulo Bindo
Repondido por
MAs no tenho meu logo em lugar nenhum da net, ser q tem como eu
fazer isso de outro modo?
Mas muito obrigado pela resposta.
Repondido por
de email .
MailAttachments - usado para criar um anexo de email e ser adicionado
na mensagem do email.
SmtpMail - usado para enviar email para o server.
[ VB.NET ]
Sub EmbedImages()
'cria a mensagem de email
Dim mail As New MailMessage()
'seta o endereo
mail.From = New MailAddress("me@minhaempresa.com")
mail.To.Add("abcde@suaempresa.com")
'seta o conteudo
mail.Subject = "Aqui um email"
'primeiro cria o Plain Text
Dim plainView As AlternateView =
AlternateView.CreateAlternateViewFromString("Este meu conteudo
plain text, visivel por aquelw cliente q nao suportam html", Nothing,
"text/plain")
'ento cria o Html
'para embutir uma imagem, necessario usar o prefixo "cid" no valor da
<img src>
'o valor "cid" ira mapear o conteudo (Content-Id ) do Linked resource.
'dessa forma <img src='cid:companylogo'> ira mapear para um
LinkedResource com ContentId de 'companylogo'
Dim htmlView As AlternateView =
AlternateView.CreateAlternateViewFromString("Aqui vai a imagem
embutida.<img src=cid:companylogo>", Nothing, "text/html")
'Crie o LinkedResource (Imagem embutida)
Dim logo As New LinkedResource("c:\temp\logo.gif")
logo.ContentId = "companylogo"
'adicione o LinkedResource para uma view apropriada
htmlView.LinkedResources.Add(logo)
'Adiciona views
mail.AlternateViews.Add(plainView)
mail.AlternateViews.Add(htmlView)
'envia a mensagem
Dim smtp As New SmtpClient("127.0.0.1") 'especifique o endereco do
servidor de email
smtp.Send(mail)
End Sub 'imagem embutida
Sei q nao ajuda muito mais vc pode explorar mais a respeito do "CID"
existem faqs na NET,quado sobra r tempinho irei pesquisar + a fundo.
fuiii.....
Repondido por
:= cCodImg
:= ""
Begin Sequence
IF Empty( cIMGCode )
Break
EndIF
// Carrega a imagem do repositorio em variavel de memoria
cIMGSource := LoadReposit( cIMGCode )
FechaReposit() //For+o o Fechamento o Repositorio de Imangens
IF ( Len( cIMGSource ) == 0 )
Break
EndIF
IF ( Left( cIMGSource , 2 ) == "BM" )
// Identifica se BMP ou JPG pelos 2 primeiros bytes
HttpCTType( "application/xbitmap" )
Else
// Se no for BMP ... JPG !
HttpCTType( "image/jpeg" )
EndIF
// Seta tamanho da imagem para header HTTP de saida
HttpCTLen( Len( cIMGSource ) )
:= cImgFile
:= ""
Local nLenLogoSource
Begin Sequence
IF Empty( cLogoFile )
Break
EndIF
// Carrega a imagem do repositorio em variavel de memoria
cLogoSource := LoadFile( cLogoFile )
nLenLogoSource := Len( cLogoSource )
IF ( nLenLogoSource == 0 )
Break
//No Tem Imagem alguma a enviar
EndIF
IF ( Left( cLogoSource , 2 ) == "BM" )
// Identifica se BMP ou JPG pelos 2 primeiros bytes
HttpCTType( "application/xbitmap" )
Else
// Se no for BMP ... JPG !
HttpCTType( "image/jpeg" )
EndIF
// Seta tamanho da imagem para header HTTP de saida
HttpCTLen( nLenLogoSource )
// Manda a imagem via HTTPSend
:= fOpen( cLogoFile )
:= GetAllTxtFile( nHandle )
:= ""
Local nLoop
Local nLoops
nLoops := Len( aAllLogoFile )
For nLoop := 1 To nLoops
cBinaryFile += aAllLogoFile[ nLoop ]
Next nLoop
fClose( nHandle )
Return( cBinaryFile )
Obs.: O Exemplo acima funciona para programas em Web Function do
Protheus. Acredito que funcione, tambm, para envios de e-mail... Para
verificar, s testando.
[]s
Naldo
Repondido por
Caros,
Muito obrigado pelas dicas e segue abaixo uma dvida :
Eu anexo minha imagem do modo abaixo:
cMensagem +="<p align=center><b><font face=Arial
size=6> "+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
Caro Naldo,
Usei sua funo e converti ela para binrio. S que quando a coloco no
meu HTML ao invs de mandar a imagem ele manda os binrios gerados,
o modo de acoplar o arquivo BIN no HTML diferente? Pois do modo
abaixo ele sai os cdigos binrios:
cMensagem +="<p align=center><b><font face=Arial
size=6> "+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
Obrigado.
Leonardo Vasco
Repondido por
Caro Naldo,
Usei sua funo e converti ela para binrio. S que quando a coloco no
meu HTML ao invs de mandar a imagem ele manda os binrios gerados,
o modo de acoplar o arquivo BIN no HTML diferente? Pois do modo
abaixo ele sai os cdigos binrios:
cMensagem +="<p align=center><b><font face=Arial
size=6> "+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
Obrigado.
Leonardo
Repondido por
Leo,
Na realidade voc no deve passar a imagem diretamente, mas sim um
Link para uma chamada uma funo em advpl que retorne a imagem
como em:
Local cImagem := GetRpcServer() + "/u_GetImg.apw"
..
cMensagem +="<p align=center><b><font face=Arial
size=6> "+IIf(!Empty(cImagem),"<img src="+Alltrim(cImagem)
+">",SM0->M0_NOME)+"</font></b></td>"
..
Static Function GetRpcServer()
Local cRpcServer
cRpcServer := GetJobProfString( "RpcServer" , "" )
IF Empty( cRpcServer )
cRpcServer
:= GetPvProfString( "HTTP" , "RpcServer" , "" ,
GetAdv97() )
EndIF
Return( cRpcServer )
User Function GetImg()
Return(GetImgFile( "LOGO.JPG" ) ) //supondo que a imagem denomina-se
logo.jpg
[]s
Naldo
Ola, a melhor coisa a ser feita deixar mesmo maiuscula, por que se
vc fazer o inverso vc pode perder a padronizao na hora de sua
pesquisa. Mas se vc realmente quer assim, no formato do campo vc
deixa sem nda. quero dizer que vc deixa de colocar @! ..
Blz...
Repondido por
Existe a funo:
UPPER() - deixa em maiusculo
LOWER() - deica em minusculo
Capital() - somente as iniciais em maiusculo
Paulo Bindo
Para efetuar a baixa estou usando o esquema abaixo, mas posso ter
tambm o cancelamento da baixa e usando a mesma rotina mostra a
mensagem que o titulo j foi baixado.
aDados := {}
aadd(aDados,{"E1_PREFIXO"
,Substr(PREFIXO,1,3)
,Nil})
aadd(aDados,{"E1_NUM"
,SubStr(StrZero(Val(AllTrim(NUM)),6),1,6)
,Nil})
aadd(aDados,{"E1_PARCELA"
,Substr(PARCELA,1,3)
,Nil})
aadd(aDados,{"E1_TIPO"
,Substr(TIPO,1,2)
,Nil})
aadd(aDados,{"AUTBANCO" ,""
,Nil})
aadd(aDados,{"AUTAGENCIA" ,""
,Nil})
aadd(aDados,{"AUTCONTA" ,""
,Nil})
aadd(aDados,{"AUTMOTBX" ,Substr(MOT_BAIXA,1,3)
,Nil})
aadd(aDados,{"AUTDTBAIXA"
,ctod(DT_RECEB)
,Nil})
aadd(aDados,{"AUTDTCREDITO",ctod(DT_CREDITO)
,Nil})
aadd(aDados,{"AUTHIST"
,"AUTO-Valor Recebido S/
Titulo"
,Nil})
aadd(aDados,{"AUTDESCONT"
,val(DESCONTOS)
,Nil})
aadd(aDados,{"AUTDECRESC" ,val(ABATIMENTO)
,Nil})
aadd(aDados,{"AUTACRESC" ,0
aadd(aDados,{"AUTMULTA" ,val(MULTA)
aadd(aDados,{"AUTJUROS" ,val(JUROS)
aadd(aDados,{"AUTVALREC" ,(VALOR_RECEBIDO)
Nil})
Fina070(aDados)
Repondido por
Tente:
nOpc == 6
MSExecAuto({|x,y,z| FINA070(x,y,z)},aDados,,nOpc)
Paulo Bindo
,Nil})
,Nil})
,Nil})
,
oPrn:=TMSPrinter():New()
oPrn:SetLandScape()
Bom dia.
Utilize esse exemplo de filtro que segue abaixo...
Ex.:
cCondio := "SZ6_USUARIO=='"+cUsuario+"' "
bFiltraBrw := {|| FilBrowse("SZ6",@aIndSZ6,@cCondicao) }
Eval(bFiltraBrw)
caso precise entre em contato ae.
Thiago
Obrigado Bindo!
Pedro.
Repondido por
//Objetos
oFont1
oFont2
oFont3
oPrn:Preview()
oPrn:End()
Return
Repondido por
Repondido por
Ol ,
Customizar uma rotinazinha seria o ideal. (Bem simples)
Edson
Repondido por
#INCLUDE "Protheus.ch"
#DEFINE USADO CHR(0)+CHR(0)+CHR(1)
/*/
Uso
AP6 IDE
/*/
dbSelectArea("SM0")
cEmp := SM0->M0_CODIGO+"0"
//
// Monta um aRotina proprio
//
Private aRotina := { {"Pesquisar","AxPesqui",0,1} ,;
{"Visualizar","AxVisual",0,2} ,;
{"Gerar","U_FINAT3Func",0,7} }
Private cDelFunc := ".T." // Validacao para a exclusao. Pode-se utilizar ExecBlock
Private cString := "SE1"
dbSelectArea("SE1")
dbSetOrder(1)
dbSelectArea(cString)
mBrowse( 6, 1,22,75,cString,,,,,, Fa040Legenda("SE1"))
RestArea(aArea)
Return
/*
Desc.
Funcao que abre as telas
Uso
AP
*/
User Function FINAT3Func()
Local cPerg := "FIAT03"
Local nOpca := 0
Local aAlter :={} // Campos que podem ser alterados na GETDB
Local oChk1,oDlg
Local cDescri
:=""
Private aRotina := {{"","",0,4}}
Private aHeader := {}
Private cHist := SPACE(25)
Private dDataP := dDataBase
Private dDataE := dDataBase
Private nUsado := 2
Private lClose := .T.
ValidPerg(cPerg)
If Pergunte(cPerg,.T.)
//FAZ A SELECAO DE DADOS NO SE1 CONFORME PARAMETROS
AADD(_aArqC1,{"NAT" ,"C",10,0})
//NATUREZA
AADD(_aArqC1,{"CLI" ,"C",6,0})
//CODIGO DO CLIENTE
AADD(_aArqC1,{"NCLI","C",20,0})
//NOME DO CLIENTE
AADD(_aArqC1,{"VALO" ,"N",14,2})
//VALOR
AADD(_aArqC1,{"EMIS","D",8,0})
//DATA DA EMISSAO
AADD(_aArqC1,{"TIPO","C",3,0})
//TIPO DO TITULO
AADD(_aArqC1,{"CCUS","C",6,0})
//CENTRO DE CUSTO
AADD(_aArqC1,{"NCCU","C",40,0})
//NOME DO CENTRO DE CUSTO
AADD(_aArqC1,{"LOJA","C",02,0})
//LOJA DO CLIENTE
// Arquivo Auxiliar para Consultas
_cArqC1 := CriaTrab(_aArqC1,.T.)
dbUseArea(.T.,,_cArqC1,"TIT")
Index on PREF+NUM to &_cArqC1
dbSelectArea("TRB")
dbGoTop()
While !EOF()
RecLock("TIT",.T.)
If mv_par10 == 1
MARC := "X"
EndIf
PREF := TRB->E1_PREFIXO
NUM := TRB->E1_NUM
NAT := TRB->E1_NATUREZ
CLI := TRB->E1_CLIENTE
NCLI := TRB->E1_NOMCLI
VALO := TRB->E1_VALOR
EMIS := TRB->E1_EMISSAO
TIPO := TRB->E1_TIPO
CCUS := TRB->E1_CCUSTO
NCCU := TRB->E1_NOMCCUS
LOJA := TRB->E1_LOJA
MsUnlock()
dbSelectArea("TRB")
dbSkip()
End
//MARCACAO
AADD(aAlter,"MARC")
AADD(aHeader,{"Sel.","MARC","",1,0,"Pertence('X| ')",USADO,"C",""," "})
//PREFIXO
AADD(aHeader,{"Prefixo","PREF","",3,0,,USADO,"C",""," "})
//NUMERO
AADD(aHeader,{"Numero","NUM","",6,0,,USADO,"C",""," "})
//NATUREZA
AADD(aHeader,{"Natureza","NAT","",10,0,,USADO,"C","",""})
//CODIDO DO CLIENTE
AADD(aHeader,{"Cliente","CLI","",6,0,,USADO,"C",""," "})
//LOJA DO CLIENTE
AADD(aHeader,{"Loja","LOJA","",2,0,,USADO,"C",""," "})
//NOME DO CLIENTE
AADD(aHeader,{"Razao","NCLI","",20,0,,USADO,"C",""," "})
//VALOR
AADD(aAlter,"VALO")
AADD(aHeader,{"Valor","VALO","@E 999,999,999.99",14,2,,USADO,"N",""," "})
//DATA DA EMISSAO
AADD(aHeader,{"Emisao","EMIS","",8,0,,USADO,"D",""," "})
//TIPO DO TITULO
AADD(aHeader,{"Tipo","TIPO","",3,0,,USADO,"C",""," "})
//CENTRO DE CUSTO
AADD(aAlter,"CCUS")
AADD(aHeader,{"C Custo","CCUS","",6,0,,USADO,"C",""," "})
//NOME DO CENTRO DE CUSTO
AADD(aHeader,{"Nome Custo","NCCU","",40,0,,USADO,"C",""," "})
TRB->(dbCloseArea())
Else
MsgStop("No foram encontrados dados!")
TRB->(dbCloseArea())
Return
EndIf
dbSelectArea("TIT")
dbGotop()
//TELA DO PRE RECEBIMENTO
DEFINE MSDIALOG oDlg TITLE "Pr-Recebimento" From 100,0 To 445,878 OF oMainWn
@ 10,15 TO 129,135 LABEL OemToAnsi("Repetio") OF oDlg PIXEL
@ 25,20 RADIO oUsado VAR nUsado 3D SIZE 70,10 PROMPT OemToAnsi("Continuar")
OemToAnsi("Desmarcar") OF oDlg PIXEL
@ 060,020 Say OemToAnsi("Histrico") SIZE 60,10 OF oDlg PIXEL
@ 060,055 MSGET cHist SIZE 75,10 OF oDlg PIXEL
@ 090,020 Say OemToAnsi("Data Emisso") SIZE 60,10 OF oDlg PIXEL
@ 090,085 MSGET dDataE SIZE 35,10 OF oDlg PIXEL Valid VerData(1)
@ 102,020 Say OemToAnsi("Data Recebimento") SIZE 60,10 OF oDlg PIXEL
@ 102,085 MSGET dDataP SIZE 35,10 OF oDlg PIXEL Valid VerData(2)
oGetDb := MsGetDB():New(10,140,130,420,1,"Allwaystrue","Allwaystrue","",.F.,aAlter
/*
Desc.
Verifica se a data digitada e maior ou igual a database
Uso
AP
*/
Static Function VerData(n)
If n == 1
If dDataE < dDataBase
MsgStop("A data digitada menor que a database!")
lClose := F.
ElseIf dDataE <= dDataP
lClose := T.
EndIf
ElseIf n == 2
If dDataE > dDataP
MsgStop("A data de Emisso maior que a Data de Vencimento!")
lClose := F.
ElseIf dDataE >= dDataBase
lClose := T.
EndIf
EndIf
Return
/*
Desc.
Insere os titulos no SE1
Uso
AP
*/
User Function FIAT3Grava()
Local nContErro := 0
Local aTitulo
:= {}
Local nOpc
:= 3
dbSelectArea("TIT")
dbGoTop()
While !EOF()
//CASO NAO TENHA SIDO SELECIONADO
If !MARC $ "X"
dbSkip()
Loop
EndIf
cPrefixo := TIT->PREF
cNumSE1 := GetSX8Num("SE1","E1_NUM")//BUSCA NUMERACAO DO SE1
aTitulo := { {"E1_PREFIXO"
, TIT->PREF
,Nil},;
{"E1_NUM"
,cNumSE1
,Nil},;
{"E1_PARCELA"
,Space(01)
,Nil},;
{"E1_TIPO"
,TIT->TIPO
,Nil},;
{"E1_NATUREZ"
,TIT->NAT
,Nil},;
{"E1_CLIENTE"
,TIT->CLI
,Nil},;
{"E1_LOJA"
,TIT->LOJA
,Nil},;
{"E1_EMISSAO"
,dDataE
,Nil},;
{"E1_VENCTO"
,dDataP
,Nil},;
{"E1_VENCREA"
,DataValida(dDataP)
,Nil},;
{"E1_VALOR"
,TIT->VALO
,Nil},;
{"E1_REPETEM"
,AllTrim(Str(nUsado))
,Nil},;
{"E1_HIST"
,cHist
,Nil},;
{"E1_CCUSTO"
,TIT->CCUS
{"E1_NOMCCUS"
,TIT->NCCU
{"E1_NUMTITP"
,TIT->NUM
,Nil},;
,Nil},;
,Nil}}
lMsErroAuto := .F.
//GERA O TITULO NO SE1
MSExecAuto({|x,y,z| FINA040(x,y,z)},aTitulo,,nOpc)
If lMsErroAuto
nContErro ++
RollBackSX8()
Else
ConfirmSX8()
//ATUALIZA O ULTIMO TITULO DO FORNECEDOR
cQuery := " UPDATE SE1"+cEmp+" SET E1_NUMTITF = '"+cNumSE1+"'"
cQuery += " WHERE E1_NUM = '"+TIT->NUM+"' AND E1_PREFIXO = '"+TIT->PREF
cQuery += " AND E1_CLIENTE = '"+TIT->CLI+"' AND D_E_L_E_T_ <> '*'"
MemoWrit("FIAT3Grava.sql",cQuery)
TcSqlExec(cQuery)
EndIf
dbSelectArea("TIT")
dbSkip()
End
//
// Se gerou novo arquivo de erro, apaga o anterior e gera novo
//
If nContErro > 0
cNomArqErro := NomeAutoLog()
cNomNovArq := __RELDIR+"TITULOG.##R"
If MsErase(cNomNovArq)
__CopyFile(cNomArqErro,cNomNovArq)
EndIf
MsErase(cNomArqErro)
If MsgYesNo(OemToAnsi("Ocorreram problemas com" + " ( " + Ltrim(Str(nContErro,5)
OemToAnsi("Aten+"o"))
fVerLog()
EndIf
EndIf
Return
/*
Desc.
Uso
AP
*/
14. Markbrowse
Boa tarde galera, estou desenvolvendo uma rotina com MarkBrowse, essa rotina o
usurio podera marcar os registros da GRID para rodar uma rotina, ou podera
visualizar, altera ou excluir o registro. O meu problema esta no seguinte, na
minha tabela eu tenho um campo chamado Z10_TIPO, nesse campo eu informo se o
registro ja foi processado ou no, gostaria de fazer com que aparecesse somente
na GRID os registros que ainda no foram processados, no caso os registros do
tipo "T".
Alguem sabe como fazer esse filtro ???
Att.
Luciano Henrique
Repondido por
: EDSONDELUC em 26/4/2006 13:58:00
Pode me mostrar sua rotina, que lhe mostro o filtro.
Edson - Qualquer dvida: edsondeluca@hotmail.com Repondido por
26/4/2006 14:00:00
Pode me mostrar sua rotina, que lhe mostro o filtro.
: EDSONDELUC em
15. Mv_Risco
Pergunta de : SPANAZZI em 25/4/2006 13:48:00
Como funciona o parametro mv_risco()? Repondido por
: EDERCANGO em
26/4/2006 08:48:00
Risco A - significa que no existe risco para venda, ou seja, o Pedido de
Vendas no ser bloqueado, exceto se a data do vencimento do limite de crdito
estiver ultrapassada.
Risco B - esta situao depende do contedo do parmetro MV_RISCOB, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco C - esta situao depende do contedo do parmetro MV_RISCOC, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco D - esta situao depende do contedo do parmetro MV_RISCOD, que indica o
nmero de dias de atraso tolervel no pagamento de ttulos de Clientes. Alm
disso, ser considerado tambm o valor do Limite de Crdito e a data de
Vencimento do Limite de Crdito do Cliente. Veja o tpico Parmetros.
Risco E - significa que existe um grande risco na venda, ou seja, o Pedido de
Vendas sempre ser bloqueado.
Risco Z - Integrao SERASA, liberao de crdito atravs da integrao de
software de terceiros.
Neste caso, quando liberado o Pedido de Vendas para faturamento, ficar bloqueado
at que o sistema, atravs da integrao SERASA, receba a instruo para sua
liberao.
Este recurso est disponvel pela parceria entre a Microsiga e a empresa SERASA,
com o objetivo de facilitar aos clientes o acesso aos bancos de dados da SERASA,
consultando suas informaes e atualizando-as conforme contrato estabelecido.
Para a atualizao das informaes financeiras dos clientes (hbitos de
pagamentos, perfil de compras, compromissos vencidos e a vencer) na base de dados
da SERASA, deve-se executar a rotina SERASA - Relato.
Para a liberao automtica de crdito, deve-se configurar o servio de consulta
ao produto RELATO atravs da estrutura String de Dados - IP23, disponibilizado
nos ambientes do Protheus.
17. Procname
Procname(n)
n - varia de 1 a 12; v colocando valores at aparecer o nome da funo. Depois
trate com:
If procname(n) == "nome encontrado"
return
EndIf
Repondido por
: EDUARDOCSEH em 10/5/2006 10:22:00
Obrigado Marcelo
19. MArkbrowse
@ 048,347 BUTTON "Faturamento" SIZE 55,12 ACTION Close()
@ 57,03 To 165 ,343
@ 64,140 SAY "INFORMAES GERAIS"
@ 154,345 BUTTON "Sair" SIZE 55,12 ACTION Close(oEntra)
//
// Monta MarkBrowse...
//
oBrowse := IW_Browse(75,09,160,335,"_trabalho",,,acampos)
oBrowseBROWSE:BLDBLCLICK := || Detalhes()
ACTIVATE DIALOG oEntra ON INIT Eval(|| MsAguarde(), _trabalho->(DbGoTop()),
oBrowseBrowse:Refresh(), ) Centered
21. MSNewGetDados
Estou usando uma msNewGetDados e tenho a seguinte dvida:
O primeiro campo do aCols um numero de NF. Este numero no ser digitado e sim
coletado via leitos de cdigo de barras. O que preciso que assim que foi feita a leitura do
codigo de barras, o sistema crie uma nova linha abaixo e posicione o cursor na mesma sem
que seja necessrio teclar a seta para baixo. Para que possa coletar varias notas, uma em
cada linha.
Obrigado
Eduardo Repondido por : BINDO em 24/5/2006 21:37:00
Segue abaixo o exemplo que o Marcelo Colato postou:
Incio da rotina
Continua rotina
//A funo teste atribui o bloco ao evento
USER FUNCTION Teste()
oGetBrowse:bEditCol := || U_fMudaLinha()
Return(.t.)
//A funo abaixo faz a mgica...
dbSeek(xFilial("SB1")+cCodigo)
// Se Encontrou
If Found()
// Loca o Registro
If RecLock("SB1",.F.)
// Insere a imagem no Repositrio de Imagens
oImages:InsertBMP(cArquivo)
// Grava no SB1, o cdigo do Repositrio de Imagens
B1_BITMAP := cCodigo
// Libera o Registro
MsUnLock()
Endif
Endif
Next x
Endif
Return
Begin Transaction
//MsExecAuto(|x,y,z|Mata103(x,y,z),aCabNF,_aItPai,3) //3->inclusao
Mata103(aCabNF,_aItPai,3) //3->inclusao
End Transaction
----------------------------------------------Acontece que simplesmente nao grava os campos:
"F1_NUMCONH",_aCabec[02] ,Nil,; // Numero do Conhecimento
"F1_NOMEARQ" ,_aCabec[08] ,Nil; // NOME DO ARQUIVO IMPORTADO
estes eu os criei pelo configurador.
Agraceo. Repondido por : BINDO em 26/5/2006 20:46:00
No me lembro, mas acho que no vai gravar.
O que vc pode fazer depois do msexecauto colocar:
If !lmserroauto
posiciona e manda gravar
endif
Paulo Bindo
24. Logfile
Estou fazendo uma atualizaao em uma tabela e registrando todas elas em um array, depois
crio um arquivo txt para o usurio saber o que foi alterado,
gostaria de exibir estas alteraoes no final do processo, em uma janela com um botao OK
ou algo do tipo,
ja efetuei vrias pesquisas, porem nao encontrei nada,
Qualquer ajuda de grande valia,
Muito Obrigado,
Rogerio Nicolete
rogerio@clesscosmeticos.com.br Repondido por : NALDO em 18/5/2006 10:11:00
Rogerio,
Voc pode utilizar a funo em Advpl fMakeLog() para mostrar as alteraes em um Log
no formato dos relatrios do siga.
A sintaxe da funo a seguinte:
fMakeLog(aLogFile,aLogTitle,cPerg,lShowLog,cLogName,cTitulo,cTamanho,cLandPort,a
Ret,lAddOldLog)
E a Descrio dos parmetros :
aLogFile//Array que contem os Detalhes de Ocorrencia de Log
aLogTitle//Array que contem os Titulos de Acordo com as Ocorrencias
cPerg//Pergunte a Ser Listado
lShowLog//Se Havera "Display" de Tela
cLogName//Nome Alternativo do Log
cTitulo//Titulo Alternativo do Log
cTamanho//Tamanho Vertical do Relatorio de Log ("P","M","G")
cLandPort//Orientacao do Relatorio ("P" Retrato ou "L" Paisagem )
aRet//Array com a Mesma Estrutura do aReturn
lAddOldLog//Se deve Manter ( Adicionar ) no Novo Log o Log Anterior
[]s
Naldo Repondido por : NICOLETE em 18/5/2006 11:48:00
Valeu Naldo,
Ficou timo!
Programa lertxt
Autor Rodnei A. Tavares
Data 03/30/06
Desc.
LER ARQUIVO TXT DO PONTO
Uso
xxxx
*/
User Function lertxt()
//Cria estrutura do arquivo temporario
cArqTxt := CriaTrab(NIL,.F.)
cArqTxt := Alltrim(cArqTxt)+".CSV"
cEol:=CHR(13)+CHR(10)
cNomTrb:=FCreate(cArqTxt,0)
//faz a gravacao no arquivo temporario que o excel abrir
cTxt:="Matricula"+";"+"Data"+";"+"Hora"
FWrite(cNomTrb,cTxt+cEol)
/////LER O ARQUIVO TEXTO
FT_FUSE("c:\caminho\nome do arquivo.txt")
FT_FGOTOP()
While !FT_FEOF()
cIDENT := FT_FREADLN()
cTxt:=Substring(cIDENT,10,6)+";"+Substring(cIDENT,16,2)+"/"+Substring(cIDENT
,18,2)+"/"+Substring(cIDENT,20,2)+";"
cTxt+=Substring(cIDENT,22,2)+":"+Substring(cIDENT,24,2)+"
FWrite(cNomTrb,cTxt+cEol)
FT_FSKIP()
Enddo
//ATE AQUI
//Gera integrao com o Excel
cDirDocs
:= MsDocPath()
aStru
:=
cPath
:= AllTrim(GetTempPath())
oExcelApp
:= NIL
FClose(cNomTrb)
CpyS2T( cArqTxt, cPath, .F. )
If ! ApOleClient( 'MsExcel' )
MsgStop( 'MsExcel nao instalado' )
Return Nil
EndIf
oExcelApp := MsExcel():New()
oExcelApp:WorkBookspen( cPath+cArqTxt) // Abre uma planilha
oExcelApp:SetVisible(.T.)
lIntExcel := .T.
Return NIl
Repondido por
Guaranta,
O que a funo Embaralha faz reposicionar os caracteres passados como
parmetro, por exemplo:
Local cNoEmbaralha := "123456"
Local cEmbaralha
:= Embaralha( cNoEmbaralha , 1 ) //"415263" Embaralha
cNoEmbaralha := Embaralha( cEmbaralha , 0 ) //"123456" //Desembaralha
Observe o seguinte:
No embaralhamento, foram alteradas as posies dos caracteres como segue:
O Primeiro Caracter no Embaralhado foi para a Segunda Posio Quando Embaralhado
O Segundo Caracter no Embaralhado foi para a Quarta Posio quando Embaralhado
O Terceiro Caracter no Embaralhado foi para a A ltima Posio quando
Embaralhado
O Quarto Caracter no Embaralhado foi para a Primeira Posio quando Embaralhado
O Quinto Caracter no Embaralhado foi para a Terceira Posio quando Embaralhado
O Sexto Caracter no Embaralhado foi para a Quinta Posio quando Embaralhado.
Observe com 10 Caracteres:
Local cNoEmbaralha := "1234567890"
Local cEmbaralha
:= Embaralha( "1234567890" , 1 )
//"4815926037"
//"1234567890"
"123" , 1 )
"1234" , 1 )
"12345" , 1 )
"123456" , 1 )
"1234567" , 1 )
"12345678" , 1 )
"123456789" , 1 )
"1234567890" , 1 )
//"321"
//"4321"
//"32154"
//"415263"
//"3741526"
//"48372615"
//"372615948"
//"4815926037"
E Assim por Diante. Descobrindo como funciona ser facil criar a sua funo.
Observe que podemos Embaralhar tanto usando 0 quanto 1 como segundo parmetro. O
importante saber qual o parmetro que foi utilizado para o Embaralhamento ( se
0 ou se 1 ) como no Exemplo:
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
Embaralha(
"123" , 0 )
"1234" , 0 )
"12345" , 0 )
"123456" , 0 )
"1234567" , 0 )
"12345678" , 0 )
"123456789" , 0 )
"1234567890" , 0 )
//"231"
//"4321"
//"32154"
//"246135"
//"4613572"
//"75318642"
//"531864297"
//"3691470258"
Bom Divertimento.
[]s
Naldo
Repondido por
: GUARANTA em 8/6/2006 10:07:00
Grande Naldo !!!
pow amigo... valeu mesmo... jah consigo reproduzir quase que com
exatido o que acontece com a funo... na verdade a funo em si eu jah to
refazendo ....
mas .. observa o seguinte comigo ...
No cado aqui a funo eh usada com o parametro 0 ... chequei pela
comparao dos resultados
.... Ao usar Embaralha("Administrador
",0) consegui ter esse resultado - rnA
aid dsm oti r
mas ao comparar com o que eh gerado no banco - rnA aid dsmXoti>r ... nota-se uma
pequena alterao tida pela incluso dos caracteres 'X' e '>' ... dae fui testar
pela ide .. e nela tenho o mesmo retorno do Embaralha - rnA aid dsm oti r ... .
Meu velho.. vc sabe me dizer . ou sei la tem alguma ideia ??? doc que
possa me indicar ??
[]'s
Repondido por
Guaranta,
A funo Embaralha no adiciona Caractere algum no processo de Embaralhamento.
Ela simplesmente mistura o contedo passado como parmetro. o "X" que voc
verificou no DataBase foi passado juntamente com o Contedo "Administrador" para
a Embaralha, como "Administrador X" por exemplo. Necessrio Identificar qual a
rotina e qual campo gravado para ter essa certeza.
Verifique:
Embaralha( "Administrador
Embaralha( "Administrador
[]s
Naldo.
28. Aqui
29. Aqui
30. Aqui
31. Aqui
32. Aqui
33. Aqui
34. Aqui
35. Aqui
36. Aqui
37. Aqui
38. Aqui
39. Aqui
40. Aqui
41. Aqui
42. Aqui
43. Aqui
44. Aqui
45. Aqui
46. Aqui
47. Aqui
48. Aqui
49. Aqui
50. Aqui
51. Aqui
52. Aqui
53. Aqui
54. Aqui
55. Aqui
56. Aqui
57. Aqui
58. Aqui
59. Aqui
60. Aqui
61. Aqui
62. Aqui
63. Aqui
64. Aqui
65. Aqui
66. Aqui
67. Aqui
68. Aqui
69. Aqui
70. Aqui
71. Aqui
72. Aqui
73. Aqui
74. Aqui
75. Aqui
76. Aqui
77. Aqui