Perguntas Anexar arquivos ao cadastrar a pre nota

Mais
10 anos 4 meses atrás #24320 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.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #24326 por AndersonBR
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:
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.

Mais
10 anos 4 meses atrás #24329 por davidjackpaiva
:woohoo: :woohoo: :woohoo: :woohoo: Valewwww Anderson, ja vai me poupar um trabalhao. Vou adaptar esse fonte. Arigatoooooo.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás #26213 por marcioibia
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.

Tempo para a criação da página:0.117 segundos
Joomla templates by a4joomla