- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Dúvidas Gerais
- Anexar arquivos ao cadastrar a pre nota
Perguntas Anexar arquivos ao cadastrar a pre nota
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 4 meses atrás #24320
por davidjackpaiva
Anexar arquivos ao cadastrar a pre nota foi criado por davidjackpaiva
Ola pessoal.
O recebimento da empresa lança nfs e anexa as digitalizações dos certificados de qualidade referente aquela nf. Esse controle por enquanto é feito no Excel. Alguem tem alguma fonte para anexar os arquivos digitalizados á nf de entrada.
O recebimento da empresa lança nfs e anexa as digitalizações dos certificados de qualidade referente aquela nf. Esse controle por enquanto é feito no Excel. Alguem tem alguma fonte para anexar os arquivos digitalizados á nf de entrada.
Por favor Acessar ou Registrar para participar da conversa.
- AndersonBR
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 108
- Obrigados Recebidos: 0
10 anos 4 meses atrás #24326
por AndersonBR
Respondido por AndersonBR no tópico Anexar arquivos ao cadastrar a pre nota
David, não se te serve, mas eu tenho um processo de anexo de arquivos ao nosso módulo de chamado, não tem nada haver com NF, mas pode pegar e adaptar o fonte.
Se te interessar, segue o código:
Se te interessar, segue o código:
User Function SkChAnexo()
Local oButton1, oButton2, oDescricao, oNumero
Local oSay1, oSay2, oSay3, oSay4
Local oFont1 := TFont():New("MS Sans Serif",,020,,.T.,,,,,.F.,.F.)
Local oFont2 := TFont():New("MS Sans Serif",,016,,.T.,,,,,.F.,.F.)
Private oDlg
Private cDescricao, cNum
Private aAux := {}
//
dbSelectArea("Z01")
//
cNum := Z01->Z01_NUMERO
cDescricao := Z01->Z01_DESCRI
DEFINE MSDIALOG oDlg TITLE "Anexos" FROM 000, 000 TO 255, 500 COLORS 0, 16777215 PIXEL
@ 003, 079 SAY oSay1 PROMPT "Anexos do Chamado" SIZE 083, 008 OF oDlg FONT oFont1 COLORS 0, 16777215 PIXEL
@ 016, 004 SAY oSay2 PROMPT "Número" SIZE 025, 007 OF oDlg FONT oFont2 COLORS 0, 16777215 PIXEL
@ 024, 004 MSGET oNumero VAR cNum SIZE 044, 010 OF oDlg COLORS 0, 16777215 READONLY PIXEL
@ 016, 056 SAY oSay3 PROMPT "Descrição" SIZE 030, 007 OF oDlg FONT oFont2 COLORS 0, 16777215 PIXEL
@ 024, 056 MSGET oDescricao VAR cDescricao SIZE 188, 010 OF oDlg COLORS 0, 16777215 READONLY PIXEL
fMSGetDadosZ04()
@ 038, 004 SAY oSay4 PROMPT "Anexos" SIZE 025, 007 OF oDlg FONT oFont2 COLORS 0, 16777215 PIXEL
@ 111, 165 BUTTON oButton1 PROMPT "Anexar" SIZE 037, 012 OF oDlg ACTION LocArquivo() PIXEL
@ 111, 207 BUTTON oButton2 PROMPT "Visualizar" SIZE 037, 012 OF oDlg ACTION VisArquivo() PIXEL
ACTIVATE MSDIALOG oDlg
Return
//------------------------------------------------
Static Function fMSGetDadosZ04()
Local nX:=nUsado := 0
Local aCpoEnch :=aAlterEnch:=aCpoGDa := {}
Local cAliasE := "Z01"
Local cAliasGD := "Z04"
Local cLinhaOK:=cTudoOK:=cFieldOK:=cDelOK := "AllwaysTrue"
Local nFreeze := 000
Local nMax := 999
Local cSuperDel := ""
Local aHeader := {}
Local aCols := {}
//
Static oMSNewGetDados1
//
dbSelectArea("SX3")
dbSetOrder(1)
dbSeek(cAliasE)
While !EOF() .And. SX3->X3_ARQUIVO == cAliasE
if !(SX3->X3_CAMPO $ "Z01_FILIAL") .And. X3Uso(SX3->X3_USADO)
AAdd(aCpoEnch, SX3->X3_CAMPO)
endif
dbskip()
End
//
dbSelectArea("SX3");dbSetOrder(1);dbSeek(cAliasGD)
//
While !EOF() .And. SX3->X3_ARQUIVO == cAliasGD
if !(SX3->X3_CAMPO $ "Z04_FILIAL") .And. X3Uso(SX3->X3_USADO)
AAdd(aCpoGDa, SX3->X3_CAMPO)
endif
dbskip()
End
//
nUsado := 0
dbSelectArea("SX3")
dbSeek("Z04")
aHeader := {}
//
While !EOF() .And. (X3_ARQUIVO = "Z04")
If X3USO(X3_USADO) .And. !(AllTrim(SX3->X3_CAMPO) $ "Z04_NUMERO")
nUsado ++
AAdd(aHeader, {Trim(SX3->X3_TITULO), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "AllwaysTrue()", SX3->X3_USADO, SX3->X3_TIPO, SX3->X3_ARQUIVO, SX3->X3_CONTEXT})
EndIf
dbSkip()
End
//
aCols := {}
dbSelectArea("Z04");dbSetOrder(1);dbSeek(xFilial("Z04")+cNum)
//
While !EOF() .And. Z04_NUMERO = cNum
AAdd(aCols, Array(nUsado+1))
For nX := 1 To nUsado
aCols[Len(aCols),nX] := FieldGet(FieldPos(aHeader[nX,2]))
Next
aCols[Len(aCols), nUsado+1] := .F.
dbSkip()
End
//
aAux := aCols
//
oMSNewGetDados1 := MsNewGetDados():New( 046, 004, 106, 245, 4, cLinhaOK, cTudoOK, "", {}, nFreeze, nMax, cFieldOK, cSuperDel, cDelOK, oDlg, aHeader, aCols)
//
Return
/////////////////////////////////////
//Tela para localização e posterior//
//anexo do arquivo //
/////////////////////////////////////
Static Function LocArquivo()
Static oDlgLA
Local oButton1
Local oCaminho
Local cCaminho := Space(150)
Local oSay1
if Z01->Z01_STATUS = "4" .OR. Z01->Z01_STATUS = "5"
MsgAlert("Chamado concluído/declinado, anexo não permitido.")
Return
endif
DEFINE MSDIALOG oDlgLA TITLE "Procurar Arquivo" FROM 000, 000 TO 080, 400 COLORS 0, 16777215 PIXEL
@ 012, 004 MSGET oCaminho VAR cCaminho SIZE 192, 010 OF oDlgLA COLORS 0, 16777215 F3 'DIR' PIXEL
@ 003, 004 SAY oSay1 PROMPT "Localizar Arquivo (.zip, .rar, .jpg)" SIZE 053, 007 OF oDlgLA COLORS 0, 16777215 PIXEL
@ 026, 159 BUTTON oButton1 PROMPT "OK" SIZE 037, 012 OF oDlgLA ACTION Anexar(AllTrim(cCaminho)) PIXEL
ACTIVATE MSDIALOG oDlgLA CENTERED
Return
//Função que anexa o arquivo ao chamado//
Static Function Anexar(cArq)
Local cExt := Right(cArq, 4)
Local cNomeArq := ""
Local email := ""
//-Pega apenas o nome do arquivo
For I := 1 To Len(cArq)
cNomeArq += SubStr(cArq,I,1)
if SubStr(cArq,I,1) = "\"
cNomeArq := ""
endif
Next
//
if Len(cNomeArq) > 15
MsgAlert("Nome do arquivo muito grande, máximo de 15 caracteres.")
oDlgLA:End()
Return
endif
//
if cExt = ".zip" .or. cExt = ".rar" .or. cExt = ".jpg"
if File("\dirdoc\skch\"+Z01->Z01_NUMERO+"_"+cNomeArq)
MsgAlert("Este arquivo já está anexo ao chamado.")
else
CpyT2S( cArq , "\dirdoc\skch", .T. )
if File("\dirdoc\skch\"+cNomeArq)
FRENAME ( "\dirdoc\skch\"+cNomeArq , "\dirdoc\skch\"+Z01->Z01_NUMERO+"_"+cNomeArq )
dbSelectArea("Z04")
RecLock("Z04",.T.)
Z04->Z04_FILIAl := xFilial("Z04")
Z04->Z04_NUMERO := Z01->Z01_NUMERO
Z04->Z04_ARQ := Z01->Z01_NUMERO+"_"+cNomeArq
Z04->(msUnlock())
//
iif( select("_XX") > 0 , _XX->(dbCloseArea()),)
//
BeginSQL Alias "_XX"
select max(Z02_ITEM) As xItem from %Table:Z02% where Z02_NUMERO = %Exp:Z01->Z01_NUMERO%
EndSQL
//
Item := Val(_XX->xItem)+1 ; _XX->(dbCloseArea())
//
dbSelectArea("Z02")
//
RecLock("Z02",.T.)
Z02->Z02_FILIAL := xFilial("Z02")
Z02->Z02_NUMERO := Z01->Z01_NUMERO
Z02->Z02_ITEM := StrZero(Item,3)
Z02->Z02_DATA := dDataBase
Z02->Z02_HORA := Left(Time(),5)
Z02->Z02_ACAO := "Anexado Arquivo"
Z02->Z02_DETALH := "Foi anexado o arquivo: "+cNomeArq
Z02->Z02_USUARI := UsrFullName(__cUserID)
Z02->(msUnlock())
//-Seleção de e-mail dos envolvidos
email := U_PegMail()
//
U_SkChGeraEmail(email,cSt+cNCh, "ARQUIVO ANEXO NO CHAMADO", "Foi anexado um arquivo ao chamado, visualização está disponível apenas no chamado.<br>Chamado nº ")
//
MsgAlert("Arquivo anexado!")
oDlgLA:End()
oDlg:End()
endif
endif
else
MsgAlert("Este arquivo não pode ser anexado."+Chr(13)+"Extenções permitidas: rar, zip e jpg.")
oDlgLA:End()
endif
//
Return
////////////////////////////////////
//Função para Visualizar o Arquivo//
////////////////////////////////////
Static Function VisArquivo()
Local nLin := oMSNewGetDados1:oBrowse:nAt //Número da linha posicionada no MsNewGetDados
Local cArq := iif( Len(aAux) = 0 , "" , Alltrim(aAux[nLin,1] ))
Local cPath := (GetTempPath()) //Path da pasta temporária do usuário
//
if Len(aAux) = 0
MsgAlert("Não existem arquivos anexos ao chamado.")
Return
endif
//
dbSelectArea("Z04")
//
if file("\dirdoc\skch\"+cArq)
CpyS2T("\dirdoc\skch\"+cArq, cPath)
ShellExecute("open",cPath+cArq,"","",5)
else
MsgAlert("Arquivo não encontrado")
endif
Return
Por favor Acessar ou Registrar para participar da conversa.
- davidjackpaiva
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 153
- Obrigados Recebidos: 0
10 anos 4 meses atrás #24329
por davidjackpaiva
Respondido por davidjackpaiva no tópico Anexar arquivos ao cadastrar a pre nota
Valewwww Anderson, ja vai me poupar um trabalhao. Vou adaptar esse fonte. Arigatoooooo.
Por favor Acessar ou Registrar para participar da conversa.
- marcioibia
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 3
- Obrigados Recebidos: 0
10 anos 1 mês atrás #26213
por marcioibia
Respondido por marcioibia no tópico Anexar arquivos ao cadastrar a pre nota
Anderson esse seu fonte e somente para fazer o anexo. sou novo em advpl, mais precisa criar uns campos teria a possibilidade de mandar esse campos que tem que ser criado. estou tentando desenvolver um help aqui no protheus ja esta pronto toda a parte de chamado agora preciso do anexo.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- Instalação e Configuração Protheus
- Dúvidas Gerais
- Anexar arquivos ao cadastrar a pre nota
Tempo para a criação da página:0.117 segundos