1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- //Bibliotecas
- #Include "Protheus.ch"
-
- /*/{Protheus.doc} zSpedXML
- Função que gera o arquivo xml da nota (normal ou cancelada) através do documento e da série disponibilizados
- @author Atilio
- @since 25/07/2017
- @version 1.0
- @param cDocumento, characters, Código do documento (F2_DOC)
- @param cSerie, characters, Série do documento (F2_SERIE)
- @param cArqXML, characters, Caminho do arquivo que será gerado (por exemplo, C:\TOTVS\arquivo.xml)
- @param lMostra, logical, Se será mostrado mensagens com os dados (erros ou a mensagem com o xml na tela)
- @type function
- @example Segue exemplo abaixo
- u_zSpedXML("000000001", "1", "C:\TOTVS\arquivo1.xml", .F.) //Não mostra mensagem com o XML
-
- u_zSpedXML("000000001", "1", "C:\TOTVS\arquivo2.xml", .T.) //Mostra mensagem com o XML
- /*/
-
- User Function zSpedXML(cDocumento, cSerie, cArqXML, lMostra)
- Local aArea := GetArea()
- Local cURLTss := PadR(GetNewPar("MV_SPEDURL","http://"),250)
- Local oWebServ
- Local cIdEnt := &("StaticCall(SPEDNFE, GetIdEnt)")
- Local cTextoXML := ""
- Default cDocumento := ""
- Default cSerie := ""
- Default cArqXML := GetTempPath()+"arquivo_"+cSerie+cDocumento+".xml"
- Default lMostra := .F.
-
- //Se tiver documento
- If !Empty(cDocumento)
- cDocumento := PadR(cDocumento, TamSX3('F2_DOC')[1])
- cSerie := PadR(cSerie, TamSX3('F2_SERIE')[1])
-
- //Instancia a conexão com o WebService do TSS
- oWebServ:= WSNFeSBRA():New()
- oWebServ:cUSERTOKEN := "TOTVS"
- oWebServ:cID_ENT := cIdEnt
- oWebServ:oWSNFEID := NFESBRA_NFES2():New()
- oWebServ:oWSNFEID:oWSNotas := NFESBRA_ARRAYOFNFESID2():New()
- aAdd(oWebServ:oWSNFEID:oWSNotas:oWSNFESID2,NFESBRA_NFESID2():New())
- aTail(oWebServ:oWSNFEID:oWSNotas:oWSNFESID2):cID := (cSerie+cDocumento)
- oWebServ:nDIASPARAEXCLUSAO := 0
- oWebServ:_URL := AllTrim(cURLTss)+"/NFeSBRA.apw"
-
- //Se tiver notas
- If oWebServ:RetornaNotas()
-
- //Se tiver dados
- If Len(oWebServ:oWsRetornaNotasResult:OWSNOTAS:oWSNFES3) > 0
-
- //Se tiver sido cancelada
- If oWebServ:oWsRetornaNotasResult:OWSNOTAS:oWSNFES3[1]:oWSNFECANCELADA != Nil
- cTextoXML := oWebServ:oWsRetornaNotasResult:OWSNOTAS:oWSNFES3[1]:oWSNFECANCELADA:cXML
-
- //Senão, pega o xml normal
- Else
- cTextoXML := oWebServ:oWsRetornaNotasResult:OWSNOTAS:oWSNFES3[1]:oWSNFE:cXML
- EndIf
-
- //Gera o arquivo
- MemoWrite(cArqXML, cTextoXML)
-
- //Se for para mostrar, será mostrado um aviso com o conteúdo
- If lMostra
- Aviso("zSpedXML", cTextoXML, {"Ok"}, 3)
- EndIf
-
- //Caso não encontre as notas, mostra mensagem
- Else
- ConOut("zSpedXML > Verificar parâmetros, documento e série não encontrados ("+cDocumento+"/"+cSerie+")...")
-
- If lMostra
- Aviso("zSpedXML", "Verificar parâmetros, documento e série não encontrados ("+cDocumento+"/"+cSerie+")...", {"Ok"}, 3)
- EndIf
- EndIf
-
- //Senão, houve erros na classe
- Else
- ConOut("zSpedXML > "+IIf(Empty(GetWscError(3)), GetWscError(1), GetWscError(3))+"...")
-
- If lMostra
- Aviso("zSpedXML", IIf(Empty(GetWscError(3)), GetWscError(1), GetWscError(3)), {"Ok"}, 3)
- EndIf
- EndIf
- EndIf
- RestArea(aArea)
- Return
|