Jump to content
Fivewin Brasil

edutraini

Membros
  • Posts

    1,402
  • Joined

  • Last visited

  • Days Won

    31

Everything posted by edutraini

  1. Bom dia Kapi segue o arquivo <?xml version="1.0" encoding="UTF-8"?> -<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> -<NFe xmlns="http://www.portalfiscal.inf.br/nfe"> -<infNFe versao="4.00" Id="NFe35190453532958000190550010000152201872362590"> -<ide> <cUF>35</cUF> <cNF>87236259</cNF> <natOp>VENDAS DENTRO ESTADO</natOp> <mod>55</mod> <serie>1</serie> <nNF>15220</nNF> <dhEmi>2019-04-10T09:28:52-00:00</dhEmi> <tpNF>1</tpNF> <idDest>1</idDest> <cMunFG>3518800</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>0</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <indFinal>1</indFinal> <indPres>9</indPres> <procEmi>0</procEmi> <verProc>4.00</verProc> </ide> -<emit> <CNPJ>53532958000190</CNPJ> <xNome>ATHAYDE ALVES DA SILVA EIRELI - EPP</xNome> <xFant>SABOR DA ITALIA</xFant> -<enderEmit> <xLgr>RUA DAS PALMEIRAS</xLgr> <nro>406</nro> <xBairro>GOPOUVA</xBairro> <cMun>3518800</cMun> <xMun>GUARULHOS</xMun> <UF>SP</UF> <CEP>70220000</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> <fone>1123822223</fone> </enderEmit> <IE>336174020117</IE> <CRT>3</CRT> </emit> -<dest> <CNPJ>61508537000151</CNPJ> <xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome> -<enderDest> <xLgr>RUADIAS DA SILVA</xLgr> <nro>11</nro> <xBairro>VILA MARIA</xBairro> <cMun>3550308</cMun> <xMun>SAO PAULO</xMun> <UF>SP</UF> <CEP>02114000</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> <fone>69558611</fone> </enderDest> <indIEDest>1</indIEDest> <IE>102332001119</IE> </dest> -<autXML> <CPF>08194296862</CPF> </autXML> -<det nItem="1"> -<prod> <cProd>5001750</cProd> <cEAN>SEM GTIN</cEAN> <xProd>ABRACADEIRA DE NYLON 4.8 1</xProd> <NCM>85177099</NCM> <CFOP>5102</CFOP> <uCom>UN</uCom> <qCom>10.0000</qCom> <vUnCom>0.09</vUnCom> <vProd>0.90</vProd> <cEANTrib>SEM GTIN</cEANTrib> <uTrib>UN</uTrib> <qTrib>10.0000</qTrib> <vUnTrib>0.09000000</vUnTrib> <indTot>1</indTot> </prod> -<imposto> -<ICMS> -<ICMS40> <orig>1</orig> <CST>41</CST> </ICMS40> </ICMS> -<IPI> <cEnq>999</cEnq> -<IPINT> <CST>51</CST> </IPINT> </IPI> -<PIS> -<PISAliq> <CST>02</CST> <vBC>0.00</vBC> <pPIS>0.00</pPIS> <vPIS>0.00</vPIS> </PISAliq> </PIS> -<COFINS> -<COFINSQtde> <CST>03</CST> <qBCProd>0.0000</qBCProd> <vAliqProd>0.0000</vAliqProd> <vCOFINS>0.00</vCOFINS> </COFINSQtde> </COFINS> </imposto> </det> -<total> -<ICMSTot> <vBC>0.00</vBC> <vICMS>0.00</vICMS> <vICMSDeson>0.00</vICMSDeson> <vFCP>0.00</vFCP> <vBCST>0.00</vBCST> <vST>0.00</vST> <vFCPST>0.00</vFCPST> <vFCPSTRet>0.00</vFCPSTRet> <vProd>0.90</vProd> <vFrete>0.00</vFrete> <vSeg>0.00</vSeg> <vDesc>0.00</vDesc> <vII>0.00</vII> <vIPI>0.00</vIPI> <vIPIDevol>0.00</vIPIDevol> <vPIS>0.00</vPIS> <vCOFINS>0.00</vCOFINS> <vOutro>0.00</vOutro> <vNF>0.90</vNF> </ICMSTot> </total> -<transp> <modFrete>1</modFrete> -<vol> <qVol>10</qVol> </vol> </transp> -<cobr> -<fat> <nFat>15220</nFat> <vOrig>0.90</vOrig> <vDesc>0.00</vDesc> <vLiq>0.90</vLiq> </fat> -<dup> <nDup>001</nDup> <dVenc>2019-05-10</dVenc> <vDup>0.45</vDup> </dup> -<dup> <nDup>002</nDup> <dVenc>2019-06-09</dVenc> <vDup>0.45</vDup> </dup> </cobr> -<pag> -<detPag> <indPag>1</indPag> <tPag>01</tPag> <vPag>0.45</vPag> </detPag> -<detPag> <indPag>1</indPag> <tPag>01</tPag> <vPag>0.45</vPag> </detPag> </pag> -<infAdic> <infCpl>Nro.Ped.Cliente.: ;;</infCpl> </infAdic> </infNFe> -<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> -<SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> -<Reference URI="#NFe35190453532958000190550010000152201872362590"> -<Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>H23GprajQeHl09gUTfBoUHvIXUs=</DigestValue> </Reference> </SignedInfo> <SignatureValue>TAyYZMFAX4+NOFO0QB+9OgnsHC9i2R3/0aMyNEzkNZU0BxN6T6yEw1fLi+BwjmiyMiGGYzbVEyteluEyBIEt4szfTqB54RwqkBWpdi6BlTs+qir9hiHXGZwt6l+qm1BfM8in4MvWAhR/ROVT4nbaIe4YTRR+cfpCx/GdIu/Hrc/2khzCiHkqIPetvS1gbQWOpd2SHgqeqXCi/zGnJsHuFM+xz1UenvKmN6piprNcBXKyp4276Ni4tkBLmiukMFB3mBNxySfLGgA9Tdtw2xVTJqaINjSW7yzsapmARlNjDCqFg0gJvwmCswaPjrFqiShU+RnRf0OdJLybBIpfuVJK3A==</SignatureValue> -<KeyInfo> -<X509Data> <X509Certificate>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</X509Certificate> </X509Data> </KeyInfo> </Signature> </NFe> -<protNFe versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> -<infProt> <tpAmb>2</tpAmb> <verAplic>SP_NFE_PL009_V4</verAplic> <chNFe>35190453532958000190550010000152201872362590</chNFe> <dhRecbto>2019-04-22T09:28:57-03:00</dhRecbto> <nProt>135190001854255</nProt> <digVal>H23GprajQeHl09gUTfBoUHvIXUs=</digVal> <cStat>100</cStat> <xMotivo>Autorizado o uso da NF-e</xMotivo> </infProt> </protNFe> </nfeProc> 35190453532958000190550010000152201872362590-nfe.xml
  2. Boa tarde, Pessoal Um cliente me pediu se tem como digitar o cnpj e buscar os dados em algum lugar para atualizar o cadastro de clientes do sistema Exemplo : Endereco, cep , ie, etc
  3. Kapi no meu teste eu coloco no cnpj normal do cliente com todos os dados nao se usa mais colocar 99999999000191
  4. kapi bom dia consulta aqui https://dfe-portal.svrs.rs.gov.br/BPE/CCC é online com o cadastro do sefaz
  5. eu nunca testei ja mandando os dados somente com disparo no link
  6. Kapi obrigado esses links que vc passou e somente para estado do RS Descobri que mudou para https://dfe-portal.svrs.rs.gov.br/BPE/CCC Esse link consulta todos os estados e bem interessante pois alem disso mostra todo historico de mudanças que a empresa ja passou Exemplo as vezes o cliente ia tira uma nota e a nota era rejeitada referente a Inscricao Estadual Nesse link eu consigo on line saber se a inscricao foi cancelada Ja aconteceu de nem o cliente saber que inscricao foi cancelada Ja no sintegra as vezes demora alguns dias para eles atualizarem
  7. Boa tarde, Pessoal Eu usava o link https://www.sefaz.rs.gov.br/NFE/NFE-CCC.aspx para consulta os dados cadastrais de um determinado cliente Ele trazia todos os dados atualizados junto ao Sefaz Ja faz duas semanas que saiu do ar, alguem sabe me dizer se mudou ou se tem outro link para consulta Obrigado
  8. Vc tem total razão referente aos seus comentarios, eu mesmo ja tive problemas com stress de tanto trabalho e principalmente pois é uma profissão que exige muito do intelectual, portanto estamos sujeitos a esses problemas
  9. Meus sentimentos a toda Familia ! Saudades !
  10. Desculpa mandei errado // Consulta NF-e destinadas Method distNSU(cSiglaUFDestinado,cCNPJDestinatario,cUltNSURecebido,cVerAplic,cUltNsu,cMaxNsu,nQtdeDocto,uRetorno,lRetArray) Class TVoNFeUtil2G Local nStat:=0 Local cMsgResultado:="",nIndContinuacao:=1 local cMsgDados:="", cMsgRetWS:="",cRetTxt:="",aRegistro:={},oTxt Default cSiglaUFDestinado:=::SiglaUF,cUltNSURecebido:="0",cUltNsu:="0",lRetArray:=.t. Default cVerAplic:="",cMaxNsu:="",nQtdeDocto:=1 ::Limpa() If ::CertificadoSelecionado() If ::ConsultaStatus() Try /* cRetTxt+=::oNFEUtil:distNSU("AN",::Ambiente, ::cCertificado,; "4.00", @cMsgDados, @cMsgRetWS,@nStat,; @cMsgResultado,cCNPJDestinatario,cSiglaUFDestinado,; cUltNSURecebido,@cVerAplic,@::Recebimento,@cUltNsu,; @cMaxNsu,@nQtdeDocto,; ::proxy,::usuario,::senha,::Licenca) */ cRetTxt+=::oNFEUtil:distNSU("AN",::Ambiente, ::cCertificado,; "4.00", @cMsgDados, cMsgRetWS,@nStat,; @cMsgResultado,cCNPJDestinatario,cSiglaUFDestinado,; cUltNSURecebido,cVerAplic,::Recebimento,@cUltNsu,; @cMaxNsu,@nQtdeDocto,; ::proxy,::usuario,::senha,::Licenca) Memowrit("manifest.txt", cRetTxt, .f.) Catch oError MsgStop("Erro! oNFeUtil:DistNSU."+CRLF+; "Error: " + cValToChar( oError:GenCode) + CRLF + ; "SubC: " + cValToChar( oError:SubCode ) + CRLF + ; "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ; "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + ; "Operação: " + cValToChar( oError:Operation ) + CRLF + ; "Mensagem: " + oError:Description, CAPTION_MSG) Return(.f.) End Try ::cStsNFe := Alltrim(Str(nStat)) ::cStsNFeMsg := cMsgResultado ::Protocolo := cUltNsu Else //Tratar erro para servidor fora Endif If !Empty(cRetTxt) ::lAutorizada:=.t. If lRetArray While .t. nPos:=At(CHR(13), cRetTxt) If nPos>0 AAdd(uRetorno, {Subs(cRetTxt,1,15), Subs(cRetTxt,17,35), Subs(cRetTxt,53,nPos-53)}) cRetTxt:=Subs(cRetTxt,nPos+1) Else Exit Endif Enddo Else uRetorno:=cRetTxt Endif Endif Endif Return( ::lAutorizada )
  11. boa tarde // FAZ DOWNLOAD DE ARQUIVO COM MANIFESTAÇÃO DO USUÁRIO METHOD DownloadNFWS(cChaveNfe) Class TVoNFeUtil2G LOCAL nStat:=0 LOCAL cMsgResultado:="",msgDados:="",msgRetWS:="" ::Limpa() IF ::CertificadoSelecionado() IF ::ConsultaStatus() TRY ::cXmlProtocolo:=::oNFEUtil:DownloadNFWS("AN", ::SiglaUF, ::Ambiente, ::cCertificado,; "4.00", @MsgDados, @MsgRetWS,@nStat,@cMsgResultado,::cCNPJTitular,cChaveNFe,::proxy,::usuario,::senha,::Licenca) CATCH ? "Tratar o erro" Return(.f.) END TRY ::cStsNFe := Alltrim(Str(nStat)) ::cStsNFeMsg := cMsgResultado ::lAutorizada := ( nStat == 140 ) IF ! ::lAutorizada ::GeraLog(cMsgResultado) IF ::lMensagem MsgStop( cMsgResultado+CRLF+ProcName() ,CAPTION_MSG) ENDIF ELSE IF ::lSalvaXmlAutomatico IF ! ::SalvaXml(cChaveNfe+"-rec.xml",::cXmlProtocolo,10) ::Geralog("Não foi possível salvar XML Recebido:"+cChaveNfe) MsgStop( "Não foi possível salvar XML Recebido:"+cChaveNfe+"-"+CRLF+ProcName() , CAPTION_MSG) ENDIF ENDIF ENDIF ELSE //TRATAR ERRO PARA SERVIDOR FORA ENDIF ENDIF RETURN( ::lAutorizada )
  12. Boa tarde, Pessoal Tenho uma etiqueta 1 coluna na medida largura 10,50 por 4 altura que imprimo na impressora argox Meu cliente acabou de comprar a etiqueta errada aonde ela veio em duas colunas na medida inverso largura 4,00 e altura 10,50 ou seja invertida em duas colunas Aonde eu consigo mudar na propriedade da etiqueta para mudar para 2 colunas e se tenho que desenhar novamente
  13. Boa tarde Kapi, Nao tenho certeza mas se nas propriedades do executavel no windows tiver como Executar esse programa como administrador da esse problema Abraço
  14. Pessoal essa rotina usa dll flexdocs e as coisas erradas por favor me ajudem a corrigir
  15. Pessoal estou colocando a minha rotina de manifesto Acho que vai ajudar a todos ---------------------------------------------------------------* * Empresa : FMC * * Sistema : SERRA * * Programa: PACOCLI0.PRG * * Autor : F.R.A. * * Data : 15/09/2004 * * Alterado: 16/11/2016 João Alpande * *---------------------------------------------------------------* * Objetivo * *---------------------------------------------------------------* * Este programa tem como objetivo gerar a tela p/ Cad.Clientes * *---------------------------------------------------------------* #include "FiveWin.ch" #include "xbrowse.ch" #include "mail.ch" #include "hbxml.ch" STATIC oWndManifesto,cIndice,oBrw,VN_ARQSOB,cWild,oWild,odbf,lappcli,vn_ponta,cPrompt,oFld,lCons,cTitulo STATIC oMsgBar,oMsgRecNo,oMsgTagName, oBut,oBar,oSeekCli,oKeyCli1,cKeyCli1,oBTNBMP1 STATIC oSay,oGet,mNbanco,mNometrans,mDescPgto,ocbx1,ocbx2,ocbx3,oCbx4 STATIC mTfrete ,mTSegmento , mTipoclient , mTipoConsu,mTelex,mFotocad:="",oBmp1 STATIC mNomeRep,mNomeRep1,mnomerep2,mnomerep3,mnomerep4,mnomerep5,mnomerep6 STATIC VE_KARDEX:=.T.,VE_PEDIDO:=.T.,VE_PRODUTO:=.T.,VE_ULTPRE:=.T.,VE_RESER:=.T. STATIC lSair,mTexto,oSay1 STATIC cEstadoEmitenteNfe:="SP",cTpamb:="1", cUltNSURecebido:=0 static cData1,cData2 static oSay22,oSay23,lmodal:=.t.,lspool:=.t.,oRadio1:=4 static oSplit static cText static vEmaberto,vLiquidado,vTodos,cPastaXml static cChaveManifesto:="" static oNfeutil * FUNCTION PACOMANI(oWnd,oMitem) LOCAL cClrBack, oCbx,cPesquisa//,oKeyCli1,oSeekCli LOCAL oMsgBar, oMsgDeleted LOCAL oFont := TFont():New("Arial",0,-12,.F.,.T.,0,0,0,.F. ) LOCAL aIndices := {"DT.EVENTO","NOME","CHAVE","NSU","NRO.NOTA","TIPO EVENTO"} local oBrush DEFINE BRUSH oBrush STYLE "NULL" SysWait( 0.3 ) // SET EXACT OFF * IF oSenha = .t. * ACESSO(procname(),@vp_acesso) * IF vp_acesso = .f. * msginfo("Usuario Sem Acesso ao Sistema","Tecle <Algo>") * retur * ENDIF * ENDIF SetGetColorFocus(RGB( 202, 213, 251)) IF empty(cTitulo) If !file('dmancfg0.dbf') DbCreate('dmancfg0.dbf',{{"PASTA","C",2000,0},{"VALORPAG","N",12,2}}) use dmancfg0 alias cfg new dbappend() dbclosearea() Endif If file("dentxml0.dbf") .and. !file("x0entxml1.cdx") use dentxml0 alias man new exclusive index on chave to x0entxml1 index on data to x0entxml2 index on nome to x0entxml3 index on nsu to x0entxml4 index on nro to x0entxml5 index on EVENTO to x0entxml6 dbclosearea() Endif If file("dentxml1.dbf") .and. !file("x1entxml1.cdx") use dentxml1 alias man new exclusive index on chave to x1entxml1 index on data to x1entxml2 index on nome to x1entxml3 index on nsu to x1entxml4 index on nro to x1entxml5 index on EVENTO to x1entxml6 dbclosearea() Endif If file("dentxml2.dbf") .and. !file("x2entxml1.cdx") use dentxml2 alias man new exclusive index on chave to x2entxml1 index on data to x2entxml2 index on nome to x2entxml3 index on nsu to x2entxml4 index on nro to x2entxml5 index on EVENTO to x2entxml6 dbclosearea() Endif * if vp_emp = "1" USE DENTXML0 INDEX X0ENTXML1,X0ENTXML2,X0ENTXML3,X0ENTXML4,X0ENTXML5,X0ENTXML6 ALIAS manbrw NEW Elseif vp_emp = "2" USE DENTXML1 INDEX X1ENTXML1,X1ENTXML2,X1ENTXML3,X1ENTXML4,X1ENTXML5,X1ENTXML6 ALIAS manbrw NEW Elseif vp_emp = "3" USE DENTXML2 INDEX X2ENTXML1,X2ENTXML2,X2ENTXML3,X2ENTXML4,X2ENTXML5,X2ENTXML6 ALIAS manbrw NEW Endif dbsetorder(2) USE DMANCFG0 ALIAS CFG NEW SELE MANBRW MANBRW->(DBGOBOTTOM()) * oRBar:Disable() * oRBar:Refresh() mDtusu :=ctod("") lappcli:=.f. lCons:=.F. lSair:=.F. oGet :=Array(72) oSay :=Array(10) cprompt:=procname() oMitem :Settext(cprompt) oMitem :refresh() cKeyCli1:=Space(50) cIndice := "DT.EVENTO" cData1:=ctod("") cData2:=ctod("") cTitulo := "Manifesto do Destinatario" DEFINE WINDOW oWndManifesto MDICHILD OF oWnd TITLE cTitulo COLOR CLR_WHITE,CLR_WHITE BRUSH OBrush oBar := BrwBtnBar(oWndManifesto,@oNfeutil) @ 06,960 RADIO oRadio1 OF oBar items "NFe","CTe","MDFe","Todos" on change (filtratela(oBrw,oRadio1),xsetfocus(obrw))SIZE 120,020 PIXEL @ 7, 0 XBROWSE oBrw SIZE ScreenWidth(),ScreenHeight()-280 LINES; FIELDS manbrw->EVENTO,TRANS(manbrw->NRO,"999999999"),DTOC(manbrw->DATA),TRANS(manbrw->VALOR,"999,999.99"),manbrw->CNPJ,manbrw->NOME,manbrw->HORA,manbrw->NSU,manbrw->CHAVE,manbrw->STATUS ; HEADERS "TIPO EVENTO","NRO.NOTA","DATA","VALOR","CNPJ","RAZAO","HORA","NSU","CHAVE","STATUS" ; FIELDSIZES 150,100,100,100,100,150,80,100,280,100 ; OF oWndManifesto UPDATE //FONT oFont WITH OBJECT oBrw :nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora :aJustify :={0,2,2,1,0,0,0,0,0} :nRowHeight := 20 //altura da linha :lIncrFilter := .F. :nStretchCol := STRETCHCOL_WIDEST :bChange :={|| Refresca(oBrw)} END * oBrw:aCols[1]:AddResource("B_AMARELO") oBrw:aCols[1]:AddResource("B_VERDE") oBrw:aCols[1]:AddResource("B_VERMELHO") oBrw:aCols[1]:bBmpData:= { || IF(manbrw->ARQXML=.T.,2,0 )} oBrw:aCols[1]:nDataBmpAlign := AL_CENTER oBrw:bClrRowFocus := { || { CLR_BLACK, RGB(185,220,255) } } oBrw:bClrSel:={ || { CLR_BLACK, RGB(185,220,255) } } oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW oBrw:nHeaderLines := 1.3 oBrw:nColDividerStyle := LINESTYLE_BLACK oBrw:nRowDividerStyle := LINESTYLE_BLACK oBrw:lAllowColSwapping := .T. oBrw:lAllowRowSizing := .t. * oBrw:lHScroll := .f. oBrw:lColDividerComplete := .t. oBrw:nColSel := 2 oBrw:l2007 = .T. oBrw:lFooter := .T. oBrw:nStretchCol := 6 oBrw:CreateFromCode() @ 10,760 COMBOBOX oCbx VAR cIndice ITEMS aIndices ON CHANGE SOL_ORDEM(cIndice) SIZE 110,400 PIXEL OF oBar oCbx:cTooltip:="Ordenar por" @ 40,760 GET oKeyCli1 VAR cKeyCli1 OF oBAR PIXEL SIZE 130,20 COLOR CLR_BLUE,CLR_WHITE PICTURE "@!" VALID (Busca1(@cKeycli1)) DEFINE MSGBAR oMsgBar PROMPT "CADASTRO DE MANIFESTO DO DESTINATARIO" OF oWndManifesto 2007 DEFINE MSGITEM oMsgTagName OF oMsgBar PROMPT FWString( "Ordered by" ) + ": " +cIndice SIZE 200 oWndManifesto:bKeyDown:={|nKey|KeyExecute( nKey)} ACTIVATE WINDOW oWndManifesto maximized on init (refresca(oBrw),Sol_Ordem(cIndice),xSetfocus(oBrw)) valid lSair ELSE msginfo("Janela de "+cTitulo+ " ja esta aberta !!! Verifique na parte de Baixo ...") FindWindow(,cTitulo) oWndManifesto:SetFocus() ENDIF RETURN .T. // Programação de teclas static FUNC KeyExecute( nKey) IF nKey=27 FIM() ENDIF RETURN (NIL) STATIC FUNCTION FIM() lSair:=.T. oWndManifesto:End() cTitulo:=spac(01) SELE MANBRW DBCLOSEAREA() SELE CFG DBCLOSEAREA() *---> Libero as variaveis. var_free() memory(-1) *Release All oRBar:Enable() oRBar:Refresh() RETURN NIL STAT FUNC Refresca(oBrw) oBrw:refresh() RETURN (NIL) STAT FUNC Val_nKey(nKey) DO CASE CASE nKey==VK_RETURN lCons:=.T. ENDCASE RETURN (.T.) //----------------------------------------------------------------------------// STATIC FUNCTION BrwBtnBar( oWnd,oNfeutil ) LOCAL oBar,oBtn[7],oFont1 DEFINE BUTTONBAR oBar OF oWnd 2007 SIZE 220,210 @ 05,010 BTNBMP oBtn[1] OF oBAR FILENAME vp_path+"Bitmap\Sys\Pesqp32.Png" SIZE 80, 90 PIXEL PROMPT "Consulta Eventos" ACTION (Consulta(@oNfeutil),oBrw:Refresh()) TOOLTIP "Consulta os Eventos referente a seu Destinatario" @ 05,110 BTNBMP oBtn[2] OF oBAR FILENAME vp_path+"Bitmap\Sys\exporta32.Png" SIZE 80, 90 PIXEL PROMPT "Manifesta" ACTION (Manifesta(@oNfeutil),oBrw:Refresh()) TOOLTIP "Manifesta o Recebimento da Nota fiscal/XML" @ 05,210 BTNBMP oBtn[3] OF oBAR FILENAME vp_path+"Bitmap\Sys\list532.Png" SIZE 80,90 PIXEL PROMPT "Imprime Danfe" ACTION (ImprimeXml(alltrim(manbrw->chave))) TOOLTIP "Imprime Danfe do Xml Selecionado" @ 05,310 BTNBMP oBtn[4] OF oBAR FILENAME vp_path+"Bitmap\sys\sistema32.png" SIZE 80,90 PIXEL PROMPT "Configuracao" ACTION(configuracao_manifesto(),oBrw:Setfocus()) TOOLTIP "Configuração dos Arquvios de Manifesto" @ 05,410 BTNBMP oBtn[5] OF oBAR FILENAME vp_path+"Bitmap\Sys\PORTAL32.Png" SIZE 80, 90 PIXEL PROMPT "Portal da Nfe" ACTION(Nfe_checaportal(manbrw->chave,"2"),oBrw:Setfocus()) tooltip "Consulta da Nota fiscal pelo Portal do SEFAZ" @ 05,510 BTNBMP oBtn[6] OF oBAR FILENAME vp_path+"Bitmap\sys\DigitalKey32.png" SIZE 80,90 PIXEL PROMPT "Chave Digital/Troca Certificado" ACTION(chavenfe(oWnd,oMitem,"G"),oBrw:Setfocus()) TOOLTIP "Gera Chave Digital/Troca de Certificado" @ 05,610 BTNBMP oBtn[7] OF oBAR RESOURCE "SAIR" SIZE 80, 90 PIXEL PROMPT "Sair" ACTION FIM() TOOLTIP "Sair" RETURN oBar ******************************************* Stat Func Sol_Ordem(QUAL) ******************************************* IF QUAL=="CHAVE" cKeyCli1 := SPAC(55) oKeyCli1:cPicture := "@!" manbrw->(dbsetorder(1)) ELSEIF QUAL=="DT.EVENTO" cKeyCli1 := CTOD("") oKeyCli1:cPicture := "@d" manbrw->(dbsetorder(2)) ELSEIF QUAL=="NOME" cKeyCli1 := SPAC(55) oKeyCli1:cPicture := "@!" manbrw->(dbsetorder(3)) ELSEIF QUAL=="NSU" cKeyCli1 := SPAC(10) oKeyCli1:cPicture := "@!" manbrw->(dbsetorder(4)) ELSEIF QUAL=="NRO.NOTA" cKeyCli1 := 0 oKeyCli1:cPicture := "99999999" manbrw->(dbsetorder(5)) ELSEIF QUAL=="TIPO EVENTO" cKeyCli1 := SPAC(10) oKeyCli1:cPicture := "@!" manbrw->(dbsetorder(6)) ENDIF MANBRW->(DBGOBOTTOM()) oMsgTagName:SetText( FWString( "Ordered by" ) + ": " + cIndice) oBrw:Refresh() oKeyCli1:Refresh() oKeyCli1:SetFocus() if !empty(cKeycli1) Busca1(cKeycli1) Endif RETURN(.T.) Static Function Busca1(cKeycli1) IF empty(cKeycli1) retur(.t.) Endif Sele ManBrw if cIndice= "CHAVE" SET SOFT ON SEEK ALLTRIM(cKeycli1) SET SOFT OFF elseif cIndice = "DT.EVENTO" set soft on SEEK cKeycli1 set soft off elseif cIndice = "NOME" set soft on SEEK alltrim(cKeycli1) set soft off elseif cIndice = "NSU" set soft on SEEK alltrim(cKeycli1) set soft off elseif cIndice = "NRO.NOTA" set soft on SEEK cKeycli1 set soft off Endif oBrw:Refresh() oBrw:SetFocus() retu(.t.) Static Function Consulta(oNfeutil) local vn_Nrini,vn_nrfim,oDlgrel,vn_motivo,oTransmite,oSaida,vok:=.f. local B_TPAMB:="1",cChaveManifesto:=spac(01) chavenfe("","","M",@cChaveManifesto) cEstadoEmitenteNfe:=VP_UFEMP cTPamb:=b_tpamb c_Cnpj_cpf := alltrim(vp_cnpj) && N opcional c_CNPJ_cpf := STRTRAN(c_Cnpj_cpf," ","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,"/","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,"-","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,".","",1,40) c_Cnpj_cpf := alltrim(c_Cnpj_cpf) cData1 := date() -360 cData2 := date() * sele cfg If empty(pasta) msginfo("Pasta para gravar o Xml precisa ser Configurado"+CRLF+"Entre na Opção Configuração antes de Efetuar as Consultas","Atenção") retur(.t.) Endif cPastaXml = alltrim(pasta) * DEFINE DIALOG oDlgRel FROM 5, 5 TO 20, 100 TITLE OemToAnsi("Consulta Nota Fiscal de Destino Diretorio de Gravação "+cPastaXml) STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER ) oDlgrel:lHelpIcon:=.F. if vp_emp = "1" USE DENTXML0 INDEX X0ENTXML1,X0ENTXML2,X0ENTXML3,X0ENTXML4,X0ENTXML5,X0ENTXML6 ALIAS man NEW Elseif vp_emp = "2" USE DENTXML1 INDEX X1ENTXML1,X1ENTXML2,X1ENTXML3,X1ENTXML4,X1ENTXML5,X1ENTXML6 ALIAS man NEW Elseif vp_emp = "3" USE DENTXML2 INDEX X2ENTXML1,X2ENTXML2,X2ENTXML3,X2ENTXML4,X2ENTXML5,X2ENTXML6 ALIAS man NEW Endif dbsetorder(4) man->(DbGoBottom()) if eof() cUltNSURecebido:=0 Else cUltNSURecebido:=val(man->nsu) Endif @ 05,04 SAY "Ultimo Nº NSU Recebido" PIXEL OF oDlgRel FONT oFont @ 05,73 GET oGetBusca VAR cUltNSURecebido OF oDlgRel PIXEL SIZE 50,10 COLOR CLR_BLUE,CLR_WHITE PICTURE "9999999999" RIGHT @ 25,13 BTNBMP oTransmite SIZE 50,30 prompt "Busca Notas" RESOURCE "NOVO" OF oDlgrel ; ACTION( ( MsgRun( OemToAnsi( "Tentando Consultar Notas Emitidas para o Destinatario e Gravando na Pasta "+cPastaxml ), ; OemToAnsi( "Tentando Consultar Notas Emitidas para o Destinatario e Gravando na Pasta "+cPastaXml ), ; { || ConsultaNfeDestinadas(@oNfeutil,cEstadoEmitenteNfe,cTpamb,c_Cnpj_cpf,cChaveManifesto,@cUltNSURecebido) } ) ),oDlgRel:End()) ; CANCEL @ 25,130 BTNBMP oSaida SIZE 50,30 prompt "Sair" RESOURCE "SAIR" OF oDlgRel ACTION (oDlgRel:End()) oTransmite:cToolTip := OemToAnsi( "Busca as Nota fiscais para o Manifesto" ) oSaida:cToolTip := OemToAnsi( "Saida - Exit - Cancelar " ) ACTIVATE DIALOG oDlgRel CENTERED * Sele Man dbclosearea() * manbrw->(dbgotop()) manbrw->(DbGoBottom()) return nil Static Function ConsultaNfeDestinadas(oNfeutil,cEstadoEmitenteNfe,cTpamb,c_Cnpj_cpf,cChaveManifesto,cUltNSURecebido) Local i:=1, f, cTipo, cData, cDt, cHora, cChave, cCnpj, cProtocolo, cNroNf, cNome, nValor, cIE, cTpNf, cSerie, cNsu, cXml, cRetorno:={}, cEvento:="", aCampo:={}, nPos:=0, cPathArq:="", cNomeArq:="" if empty(oNfeutil) oNfeUtil:=TVoNfeUtil2g():New(cEstadoEmitenteNFe,cTpAmb,GetPvProfString( "CONFIGURACAO", "CERTIFICADO", "", "VoNfeCertSign.Ini"),,,,cChaveManifesto) Endif cCnpjManif=c_Cnpj_cpf cmsgResultado := .f. cUltNsu := "0" cVerAplic := "" cMaxNsu := "" cQtdeDocto := 1 cEstadoEmitenteNfe := "35" aTemp:={} aRegistros:={} aSize(aRegistros,0) nNota :=0 nAutoriz := 0 nEvento:= 0 cUltNSURecebido:=STRZERO(cUltNSURecebido,12) if oNfeUtil:distNSU(cEstadoEmitenteNfe,C_cnpj_cpf,@cUltNSURecebido,"",@cUltNsu,@cMaxNsu,@cQtdeDocto,@aRegistros) If oNfeUtil:cStsNFe=="7001" .or. oNfeUtil:cStsNFe=="7003" Msginfo("Licença da dll da FlexDocs não confere, contacte o suporte.", "Atenção") cChaveDll:=" " Return .f. Endif If Len(aRegistros)==0 Msginfo("Não existe nenhum documento pendente.","Consulta") Else For i:=1 to Len(aRegistros) Memowrit("manifest.xml", aRegistros[i,3], .f.) aCampos:=CarregaXml("manifest.xml") cTipo := Upper(aRegistros[i,2]) cNsu := aRegistros[i,1] If "PROCNFE" $ Upper(aRegistros[i,2]) cDt := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/dhemi")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/dhemi"),2]) cData := Subs(cDt,9,2)+"/"+Subs(cDt,6,2)+"/"+Subs(cDt,1,4) cHora := Subs(cDt,12,8) cChave := If(PegaPosicao(aCampos,"/nfeproc/protnfe/infprot/chnfe")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/protnfe/infprot/chnfe"),2]) cCnpj := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cnpj")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/cnpj"),2]) cNroNf := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf")==0, "", Strzero(Val(aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf"),2]),9,0)) cEvento := "Nota Fiscal" cXml := aRegistros[i,3] cNome := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/xnome")==0, "", Upper(aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/xnome"),2])) nValor := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf")==0, "", Transf(Val(aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf"),2]),"@E 999,999,999.99")) cIE := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/ie")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/emit/ie"),2]) cTpNf := If(PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/tpnf")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/tpnf"),2]) cSerie := Subs(cChave,23,3) cProtocolo:= If(PegaPosicao(aCampos,"/nfeproc/protnfe/infprot/nprot")==0, "", aCampos[PegaPosicao(aCampos,"/nfeproc/protnfe/infprot/nprot"),2]) nNota := nNota+1 Elseif "RESNFE" $ Upper(aRegistros[i,2]) cDt := If(PegaPosicao(aCampos,"/resnfe/dhemi")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/dhemi"),2]) cData := Subs(cDt,9,2)+"/"+Subs(cDt,6,2)+"/"+Subs(cDt,1,4) cHora := Subs(cDt,12,8) cChave := If(PegaPosicao(aCampos,"/resnfe/chnfe")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/chnfe"),2]) cCnpj := If(PegaPosicao(aCampos,"/resnfe/cnpj")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/cnpj"),2]) cNroNf := Subs(cChave,26,9) cEvento := "Autorização de Uso de NF-e" cXml := "" cNome := If(PegaPosicao(aCampos,"/resnfe/xnome")==0, "", Upper(aCampos[PegaPosicao(aCampos,"/resnfe/xnome"),2])) nValor := If(PegaPosicao(aCampos,"/resnfe/vnf")==0, "", Transf(Val(aCampos[PegaPosicao(aCampos,"/resnfe/vnf"),2]),"@E 999,999,999.99")) cIE := If(PegaPosicao(aCampos,"/resnfe/ie")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/ie"),2]) cTpNf := If(PegaPosicao(aCampos,"/resnfe/tpnf")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/tpnf"),2]) cSerie := Subs(cChave,23,3) cProtocolo:= If(PegaPosicao(aCampos,"/resnfe/nprot")==0, "", aCampos[PegaPosicao(aCampos,"/resnfe/nprot"),2]) nAutoriz := nAutoriz+1 Elseif "PROCEVENTONFE" $ Upper(aRegistros[i,2]) cDt := If(PegaPosicao(aCampos,"/proceventonfe/evento/infevento/dhevento")==0, "", aCampos[PegaPosicao(aCampos,"/proceventonfe/evento/infevento/dhevento"),2]) cData := Subs(cDt,9,2)+"/"+Subs(cDt,6,2)+"/"+Subs(cDt,1,4) cHora := Subs(cDt,12,8) cChave := If(PegaPosicao(aCampos,"/proceventonfe/evento/infevento/chnfe")==0, "", aCampos[PegaPosicao(aCampos,"/proceventonfe/evento/infevento/chnfe"),2]) If Subs(cChave,7,14)==cCnpjManif // pq é evento de nf que eu mesmo emiti, não quero controlar. Loop Endif cCnpj := If(PegaPosicao(aCampos,"/proceventonfe/evento/infevento/cnpj")==0, "", aCampos[PegaPosicao(aCampos,"/proceventonfe/evento/infevento/cnpj"),2]) cNroNf := Subs(cChave,26,9) cEvento := If(PegaPosicao(aCampos,"/proceventonfe/retevento/infevento/xevento")==0, "", aCampos[PegaPosicao(aCampos,"/proceventonfe/retevento/infevento/xevento"),2]) If Empty(cEvento) cEvento := "Autorização de Uso de NF-e" nAutoriz:=nAutoriz+1 Else nEvento:= nEvento+1 Endif cXml := "" cNome := Upper(cEvento) nValor := "" cIE := "" cTpNf := "" cSerie := Subs(cChave,23,3) cProtocolo:= If(PegaPosicao(aCampos,"/proceventonfe/retevento/infevento/nprot")==0, "", aCampos[PegaPosicao(aCampos,"/proceventonfe/retevento/infevento/nprot"),2]) cTpEvento := "NFe" Elseif "RESEVENTO" $ Upper(aRegistros[i,2]) cDt := If(PegaPosicao(aCampos,"/resevento/dhevento")==0, "", aCampos[PegaPosicao(aCampos,"/resevento/dhevento"),2]) cData := Subs(cDt,9,2)+"/"+Subs(cDt,6,2)+"/"+Subs(cDt,1,4) cHora := Subs(cDt,12,8) cChave := If(PegaPosicao(aCampos,"/resevento/chnfe")==0, "", aCampos[PegaPosicao(aCampos,"/resevento/chnfe"),2]) cCnpj := If(PegaPosicao(aCampos,"/resevento/cnpj")==0, "", aCampos[PegaPosicao(aCampos,"/resevento/cnpj"),2]) If cCnpj==cCnpjManif // pq é evento de nf que eu mesmo emiti, não quero controlar. Loop Endif cNroNf := Subs(cChave,26,9) cEvento := If(PegaPosicao(aCampos,"/resevento/xevento")==0, "", aCampos[PegaPosicao(aCampos,"/resevento/xevento"),2]) cXml := "" cNome := If(PegaPosicao(aCampos,"/resevento/xevento")==0, "", Upper(aCampos[PegaPosicao(aCampos,"/resevento/xevento"),2])) nValor := "" cIE := "" cTpNf := "" cSerie := Subs(cChave,23,3) cProtocolo:= If(PegaPosicao(aCampos,"/resevento/nprot")==0, "", aCampos[PegaPosicao(aCampos,"/resevento/nprot"),2]) nEvento := nEvento+1 Else ?Upper(aRegistros[i,2]) Endif If cEvento = "Nota Fiscal" Sele Man dbsetorder(1) Seek cChave If eof() Man->(DbAppend()) Else rl() Endif Else Sele Man dbsetorder(1) * Seek cChave * If eof() Man->(DbAppend()) * Else * rl() * Endif Endif nValor:=StrTran(nValor,".","") nValor:=Val(StrTran(nValor,",",".")) Man->CHAVE := cChave Man->NSU := cNsu Man->DATA := Ctod(cData) Man->HORA := cHora If Alltrim(cEvento)=="Registro de Autorização de CT-e para a NF-e" Man->EVENTO := cEvento Man->TPEVENTO := "CTe" Elseif alltrim(cEvento) == "Autorização de Uso de NF-e" Man->EVENTO:= cEvento Man->TPEVENTO := "NFe" Elseif alltrim(cEvento) == "MDF-e Autorizado com CT-e" Man->EVENTO:= cEvento Man->TPEVENTO := "MDFe" Elseif alltrim(cEvento) == "Registro de Passagem Automatico MDF-e com CT-e" Man->EVENTO:= cEvento Man->TPEVENTO := "MDFe" Elseif alltrim(cEvento) == "Registro de Passagem de NFe propagado pelo MDFe/CTe " Man->EVENTO:= cEvento Man->TPEVENTO := "MDFe" Else Man->EVENTO:= cEvento Man->TPEVENTO := "NFe" Endif TIRA_ACENTO_NOME_XML(@cNome) Man->PROTOCOLO:= cProtocolo Man->NRO := VAL(cNroNf) Man->MODELO := Subs(cChave,21,2) Man->SERIE := cSerie Man->TIPO := If(cTpNf=="0","Entrada","Saída") Man->VALOR := nValor Man->CNPJ := cCnpj Man->IE := cIe Man->NOME := Upper(cNome) * Man->XML := cXml // Salvando arquivo xml If "PROCNFE" $ Upper(aRegistros[i,2]) cPathArq:=vp_path+"XML Manifestacao\"+Subs(cData,7,4)+"_"+Subs(cData,4,2) cNomeArq:=Alltrim(Subs(Upper(cNome),1,20))+"_"+cSerie+"_"+cNroNf+".xml" TIRA_ACENTO_NOME_XML(cNomeArq) cDestino:= alltrim(cPastaXml) #IFDEF __DOS__ if !isDirectory( cDestino ) #ELSE if !lIsDir( cDestino ) #ENDIF if !empty(cDestino) #IFDEF __DOS__ If MakeDir( cDestino )!=0 #ELSE if !lMkDir ( cDestino ) #ENDIF cDestino := "" Endif Endif Endif TIRA_ACENTO(cXml) ?cDestino+"\"+cNomeArq Memowrit(cDestino+cNomeArq, cXml, .f.) Man->XML := cNomeArq Endif Man->(DbCommit()) ; Man->(DbUnlock()) Next Endif * Man->(OrdSetFocus(2)) * Man->(OrdScope(0,Dtos(cData1))) * Man->(OrdScope(1,Dtos(cData2))) Man->(DbGotop()) Else ?oNfeUtil:cStsNFe+"/"+oNFeUtil:cStsNFeMsg,oNFeUtil:Protocolo,oNFeUtil:Recebimento Endif Return(Nil) static Function CarregaXml(cXmlFile) //,cChaveAcesso) Local oXmlNode,nPos,cAtributos:="",oXmlDoc Local aFieldsValue:={}, cChaveAcesso:="" // cXmlFile:=MemoRead(cXmlFile) oXmldoc:=TXmlDocument():New(cXmlFile,HBXML_STYLE_NOESCAPE ) If oXmlDoc:nError != 0 MsgInfo("Não foi possível ler o xml indicado.","Atenção") Return(aFieldsValue) Endif oxmlNode := oXmlDoc:oRoot:oChild While oXmlNode != NIL if oXmlNode:cName!=Nil If Upper(oXmlNode:cName)=="INFNFE".and.Empty(cChaveAcesso) cChaveAcesso:=ValtoPrg(oXmlNode:aAttributes) nPos:=At("NFe",cChaveAcesso) cChaveAcesso:=Substr(cChaveAcesso,nPos+3,44) Endif If !Empty(oXmlNode:cData) Aadd(aFieldsValue,{Upper(Alltrim(oxmlNode:Path())),Alltrim(oXmlNode:cData),cAtributos}) Else If Upper(oXmlNode:cName)=="DET" cAtributos:=ValtoPrg(ValtoPrg(oXmlNode:aAttributes)) ElseIf Upper(oXmlNode:cName)=="TOTAL" cAtributos:="" Endif Endif Endif oXmlNode:=oXmlNode:NextInTree() Enddo Return(aFieldsValue) static Function PegaPosicao(aCampos,cTag,nPosInicial) Local nPos:=0,nPos1,f Default nPosInicial:=1 nPosInicial:=If(nPosInicial==0,1,nPosInicial) cTag:=Upper(cTag) If Upper("/nfeproc/") $ Upper(cTag) cTag:=StrTran(cTag,"/NFEPROC","") Endif nPosInicial:=Ascan(aCampos,{|aCampos| cTag $ StrTran(aCampos[1],"/NFEPROC","") },nPosInicial) If nPosInicial!=0 For f:=nPosInicial to Len(aCampos) nPos1:= Rat("/",cTag) If Substr( StrTran(aCampos[f,1],"/NFEPROC",""),nPos1+1) $ Substr(cTag,nPos1+1) .and. cTag $ StrTran(aCampos[f,1],"/NFEPROC","") nPos:=f Exit Endif Next f Endif Return(nPos) Static Function Manifesta(oNfeutil) local vn_Nrini,vn_nrfim,oDlgrel,vn_motivo,oSay[4],oGet[4],vok:=.f. LOCAL B_TPAMB:="1",cChaveManifesto:=spac(01) local mTpevento := {"1 - Ciência da Operação","2 - Desconhecimento da Operação","3 - Registro da Operação não Realizada"} chavenfe("","","M",@cChaveManifesto) if vp_emp = "1" USE DENTXML0 INDEX X0ENTXML1,X0ENTXML2,X0ENTXML3,X0ENTXML4,X0ENTXML5,X0ENTXML6 ALIAS man NEW Elseif vp_emp = "2" USE DENTXML1 INDEX X1ENTXML1,X1ENTXML2,X1ENTXML3,X1ENTXML4,X1ENTXML5,X1ENTXML6 ALIAS man NEW Elseif vp_emp = "3" USE DENTXML2 INDEX X2ENTXML1,X2ENTXML2,X2ENTXML3,X2ENTXML4,X2ENTXML5,X2ENTXML6 ALIAS man NEW Endif dbsetorder(4) seek manbrw->nsu B_TPUF := VP_UFEMP VN_MOTIVO := " " vn_evento := "1 - Ciência da Operação" vn_Nrini := 0 vn_Nrfim := 0 vn_chave := man->chave vn_fornecedor := man->nome vn_hora := STRZERO(YEAR(DATE()),4) +"-"+ ; STRZERO(MONTH(DATE()),2)+"-"+ ; STRZERO(DAY(DATE()),2) +" "+ TIME() * DEFINE DIALOG oDlgRel FROM 5, 5 TO 20, 100 TITLE ; OemToAnsi("Manifesto do Destinatario ") ; STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER ) oDlgrel:lHelpIcon:=.F. @ 32.6, 1.5 SAY oSay[1] PROMPT "Chave Nfe : " pixel OF oDlgRel FONT oFont @ 33.6, 1.5 SAY oSay[2] PROMPT "Fornecedor : " pixel OF oDlgRel FONT oFont @ 34.6, 1.5 SAY oSay[3] PROMPT "Evento : " pixel OF oDlgRel FONT oFont @ 35.6, 1.5 SAY oSay[4] PROMPT "Motivo : " pixel OF oDlgRel FONT oFont @ 00.8, 7 GET oGet[1] VAR vn_chave SIZE 150, 10 OF oDlgRel @ 01.8, 7 GET oGet[2] VAR vn_fornecedor SIZE 250, 10 OF oDlgRel @ 02.8, 7 COMBOBOX oGet[3] VAR vn_evento ITEMS mTpEvento SIZE 200, 200 OF oDlgRel @ 04.0, 7 GET oGet[4] VAR vn_motivo PICTURE "@!" SIZE 200, 10 OF oDlgRel @ 05, 8 BUTTON "&Confirma" SIZE 40, 12 ACTION (vok:=.t.,oDlgrel:end()) @ 05,16 BUTTON "&Cancelar" SIZE 40, 12 ACTION oDlgRel:End() CANCEL ACTIVATE DIALOG oDlgRel CENTERED If vOk = .T. cEstadoEmitenteNfe:=VP_UFEMP cTPamb:=b_tpamb vn_evento = subs(vn_evento,1,1) ManifestoDestinatario(@oNfeutil,cEstadoEmitenteNfe,cTpAmb,vn_chave,vn_evento,vn_motivo,vn_hora,cChaveManifesto) Endif sele man dbclosearea() * Sele Manbrw return nil Function ManifestoDestinatario(oNfeutil,cEstadoEmitenteNfe,cTpamb,cChave,cTipo,cJustificativa,cDataHoraManifesto,cChaveManifesto) local cFileXmlAssinado:= vp_pathnfe+"remessa\assinado\"+Alltrim(cChave)+".xml" if empty(oNfeutil) oNfeUtil:=TVoNfeUtil2g():New(cEstadoEmitenteNFe,cTpAmb,GetPvProfString( "CONFIGURACAO", "CERTIFICADO", "", "VoNfeCertSign.Ini"),,,,cChaveManifesto) Endif * If oNfeUtil:EnviaManDest(Alltrim(cChave),cTipo,cJustificativa,cDataHoraManifesto) ?oNfeUtil:cStsNFe+" - "+oNFeUtil:cStsNFeMsg,oNFeUtil:Protocolo,oNFeUtil:Recebimento sele man rl() repl status with oNFeUtil:cStsNFe+" - "+oNFeUtil:cStsNFeMsg * repl Protocolo with oNFeUtil:Protocolo repl recebido with oNFeUtil:Recebimento unlock Else ?oNfeUtil:cStsNFe+"/"+oNFeUtil:cStsNFeMsg,oNFeUtil:Protocolo,oNFeUtil:Recebimento Endif Return(Nil) Static Function Baixarxml(oNfeutil) local vn_Nrini,vn_nrfim,oDlgrel,vn_motivo,oSay[4],oGet[4],vok:=.f. LOCAL B_TPAMB:="1",cChaveManifesto:=spac(01) local mTpevento := {"1 - Ciência da Operação","2 - Desconhecimento da Operação","3 - Registro da Operação não Realizada"} chavenfe("","","M",@cChaveManifesto) if vp_emp = "1" USE DENTXML0 INDEX X0ENTXML1,X0ENTXML2,X0ENTXML3,X0ENTXML4,X0ENTXML5,X0ENTXML6 ALIAS man NEW Elseif vp_emp = "2" USE DENTXML1 INDEX X1ENTXML1,X1ENTXML2,X1ENTXML3,X1ENTXML4,X1ENTXML5,X1ENTXML6 ALIAS man NEW Elseif vp_emp = "3" USE DENTXML2 INDEX X2ENTXML1,X2ENTXML2,X2ENTXML3,X2ENTXML4,X2ENTXML5,X2ENTXML6 ALIAS man NEW Endif dbsetorder(4) seek manbrw->nsu * B_TPUF := VP_UFEMP vn_chave := man->chave vn_fornecedor := man->nome * DEFINE DIALOG oDlgRel FROM 5, 5 TO 15, 100 TITLE ; OemToAnsi("Baixar XML do Destinatario ") ; STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER ) oDlgrel:lHelpIcon:=.F. @ 00.6, 0.5 SAY oSay[1] PROMPT "Chave Nfe....: " SIZE 80, 10 OF oDlgRel @ 01.6, 0.5 SAY oSay[2] PROMPT "Fornecedor...: " SIZE 80, 10 OF oDlgRel @ 00.8, 5 GET oGet[1] VAR vn_chave SIZE 150, 10 OF oDlgRel @ 01.8, 5 GET oGet[2] VAR vn_fornecedor SIZE 250, 10 OF oDlgRel @ 03, 8 BUTTON "&Confirma" SIZE 40, 12 ACTION (vok:=.t.,oDlgrel:end()) @ 03,16 BUTTON "&Cancelar" SIZE 40, 12 ACTION oDlgRel:End() CANCEL ACTIVATE DIALOG oDlgRel CENTERED If vOk = .T. cEstadoEmitenteNfe:=VP_UFEMP cTPamb:=b_tpamb DownloadNfeDestinadas(@oNfeutil,cEstadoEmitenteNfe,cTpAmb,vn_chave,cChaveManifesto) Endif sele man dbclosearea() sele manbrw return nil Function DownloadNfeDestinadas(oNfeutil,cEstadoEmitenteNfe,cTpamb,cChaveNfe,cChaveManifesto) if empty(oNfeutil) oNfeUtil:=TVoNfeUtil2g():New(cEstadoEmitenteNFe,cTpAmb,GetPvProfString( "CONFIGURACAO", "CERTIFICADO", "", "VoNfeCertSign.Ini"),,,,cChaveManifesto) Endif cVerAplic := "" c_Cnpj_cpf := alltrim(vp_cnpj) && N opcional c_CNPJ_cpf := STRTRAN(c_Cnpj_cpf," ","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,"/","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,"-","",1,40) c_Cnpj_cpf := STRTRAN(c_Cnpj_cpf,".","",1,40) c_Cnpj_cpf := alltrim(c_Cnpj_cpf) cCNpjDestinatario = c_cnpj_cpf cNSUxml = "" *man->nsu if oNfeUtil:DownloadNFWS(cChaveNfe) *If oNfeUtil:consChNfe(alltrim(cChaveNfe),cCnpjDestinatario,cVerAplic,cNSUXML) ?oNfeUtil:cStsNFe+" - "+oNFeUtil:cStsNFeMsg,oNFeUtil:Protocolo,oNFeUtil:Recebimento sele man rl() * repl arqxml with .t. unlock Else ? oNfeUtil:cStsNFe+"/"+oNFeUtil:cStsNFeMsg,oNFeUtil:Protocolo,oNFeUtil:Recebimento Endif * Return(Nil) static function ImprimeXml() local cFileXmlAssinado:= "" LOCAL cOrigDadosEmissor := "", quadroRecibo := "I", quadroFatura := "S", quadroISSQN := "S", DPEC := "", separadorItem := "T" LOCAL gravaPDF := "[RODAPE=][VISUALIZAR][QUADROPRODUTO]" LOCAL cResultado:=1, msgResultado := "" LOCAL cfilexmlAssinado2,cFilePdf LOCAL cDestino := "" LOCAL cMarcaDagua := "" if alltrim(manbrw->EVENTO) # "Nota Fiscal" msginfo("Somente o Evento Nota fiscal pode Imprimir a Danfe"+CRLF+"Faça o Manifesto dessa Nota para poder receber a Nota Fiscal ","Atenção") retur(.t.) Endif sele cfg If empty(pasta) msginfo("Pasta para gravar o Xml precisa ser Configurado"+CRLF+"Entre na Opção Configuração antes de Efetuar as Consultas","Atenção") retur(.t.) Endif cPastaXml = alltrim(pasta) cArqu = cPastaxml+alltrim(manbrw->xml) if !file(cArqu) cArqu := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir()) Endif * If Empty(cArqu) Return nil Endif cFile=cArqu * cFileXmlAssinado:= alltrim(cFile) If !file(cfileXmlassinado) msginfo("Arquivo nao Encontrado !!! ") retur(.t.) Endif oNfeUtil := CreateObject( "NFe_Util_2G.util" ) cOrigDadosEmissor:= "" quadroRecibo := "I" quadroFatura := "S" quadroISSQN := "S" DPEC := "" separadorItem := "L" cDestino := cPastaxml+"\pdf" #IFDEF __DOS__ if !isDirectory( cDestino ) #ELSE if !lIsDir( cDestino ) #ENDIF if !empty(cDestino) #IFDEF __DOS__ If MakeDir( cDestino )!=0 #ELSE if !lMkDir ( cDestino ) #ENDIF cDestino := "" Endif Endif Endif cgravaPDF := "[RODAPE=][ARQUIVO="+alltrim(manbrw->nome)+"_NFE_"+ALLTRIM(TRANS(MANBRW->NRO,"99999999999"))+".PDF"+"][PASTA="+cDestino+"][QUADROPRODUTO][MOSTRARICMSST]" cFileXmlAssinado2:=memoread(cFileXmlAssinado) cResultado := oNfeUtil:geraPdfDANFE(cFileXmlAssinado2,cOrigDadosEmissor,quadroRecibo,quadroFatura, quadroISSQN, DPEC, separadorItem,cGravaPdf , msgResultado) cCaminho = cDestino+"\"+alltrim(manbrw->nome)+"_NFE_"+ALLTRIM(TRANS(MANBRW->NRO,"99999999999"))+".PDF" ShellExecute( ,"open", cCaminho,,,1 ) Return(Nil) static function filtratela(obrw,oRadio1) SELE MANBRW DBSETFILTER() If oRadio1 = 1 //nfe DBSETFILTER({||MANBRW->TPEVENTO == "NFe"}) Elseif oRadio1 = 2 //cte DBSETFILTER({||MANBRW->TPEVENTO == "CTe"}) Elseif oRadio1 = 3 //Mdfe DBSETFILTER({||MANBRW->TPEVENTO == "MDF"}) Endif manbrw->(DbGotop()) manbrw->(DbGoBottom()) * if !empty(cKeycli1) Busca1(cKeycli1) Endif * oBrw:Refresh() retur(.t.) static function configuracao_manifesto() local oSay[4],oGet[4],vok:=.f.,oDlgRel local cPastaManifesto := spac(2000) DEFINE DIALOG oDlgRel FROM 5, 5 TO 15, 160 TITLE ; OemToAnsi("Configuração do Manifesto Destinatario ") ; STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_BORDER ) oDlgrel:lHelpIcon:=.F. sele cfg cPastaManifesto=cfg->pasta * @ 07.6, 1.5 SAY oSay[1] PROMPT "Pasta p/Salvar Xml : " pixel OF oDlgRel FONT oFont @ 07.6, 550 BTNBMP oBtnbmp1 RESOURCE "Bitmap_1" size 20,20 OF oDlgRel TOOLTIP "Busca Diretorio de Trabalho " ACTION (buscadiretorio("1",@cPastaManifesto),oGet[1]:Refresh()) @ 00.8, 8 GET oGet[1] VAR cPastaManifesto SIZE 450, 10 OF oDlgRel @ 02, 8 BUTTON "&Confirma" SIZE 40, 12 ACTION (vok:=.t.,oDlgrel:end()) @ 02,16 BUTTON "&Cancelar" SIZE 40, 12 ACTION oDlgRel:End() CANCEL ACTIVATE DIALOG oDlgRel CENTERED If vOk = .T. Sele cfg rl() Repl pasta with cPastaManifesto unlock Endif sele manbrw retur(.t.)
  16. è só usar a Dll do flexdocs para fazer controlar todas as ocorrencias ocorridas
  17. Bom dia Kapi Eu ja envei algumas notas na homologacao e todas foram aceitas aqui em SP A unica coisa que mudou que percebi e obrigacao do Cest
  18. Obrigado Valdir FIco no seu aguardo
  19. Bom dia, Pessoal Alguem poderia indicar uma consultoria aqui em Sâo Paulo especializado em Bloco K no ramo de Aço Nosso ramo esta com muitas duvidas referente as informações que preciso informar no Bloco K Pois como cortamos o aço estão surgindo varias duvidas referente a Estoque de Materia Prima e apos o Corte Estoque de Produto Acabado ou produto em processo Enfim é uma loucura
  20. Bom dia Pessoal Existe algum comando para saber se aquele objeto Get foi alterado para que caso seja alterado eu executo uma funcao Obrigado
  21. Boa tarde Valdir pelo curso que fiz na sexta feira Janeiro de 2019 o Segmento Equiparado a Industria entra todos independente do faturamento e do CNAE A obrigatoriedade e somente do Registos K200 e K280
  22. Bom dia Pessoal Alguem que trabalha com Software no ramo de Aço para que possamos conversar a respeito do Bloco K pois estive fazendo um curso sexta feira com todas as mudanças que precisa ser feito em relação ao estoque e as noticias são pessimas pois vai exigir uma mudança muito grande no controle de Estoque Exemplo Um produto 1020 redondo de 100 mm quando tiro a nota fiscal coloco 1020 redondo de 100mm x 50mm que é medida que o cliente pediu ou seja nao pode mudar a descricao do produto na nota fiscal por causa do bloco K uma vez que enviou o cadastro do produtos no sped e la estava 1020 redondo de 100 vc teria que dar saida no produto 1020 redondo de 100 criar um novo produto 1020 redondo 100mm x 50mm dar entrada nesse produto e depois tirar a nota, pois caracteriza como Industrialização . Imagina vc cortar 200 peças por dia e ter que criar um codigo para cada corte de peça A ideia e tirar da descricao do produto as medidas e colocar em separado em algum campo de observação para que nao mude a descricao do produto Lembrando que isso serve para todos, acabou o 999999 que vc joga tudo la para quem nao tem controle de estoque, ate os produos que fazem parte da industrializacao do produto tambem terao que controlar o estoque
  23. kapi boa tarde Segue a rotina de backup FUNCTION ZIPBACKUP(FBACK) LOCAL aDir, aFilez, nI, lRet local afiles := {} local afiles1 := {} fback = "c:\temp\" //pasta para gravar o arquivo zipado vp_path // caminho dos dbfs exemplo c:\serra\ * aDir := Directory( vp_path+"*.DBF" ) aFileZ := fBack+STRZERO(DAY(DATE()),2)+STRZERO( MONTH(DATE()),2)+RIGHT(STRZERO(YEAR(DATE()),4),2) + "DB.ZIP" IF EMPTY( aDir ) ? [NAO TEM DBFS MANE] ENDIF FOR nI=1 TO LEN( aDir ) lRet := HB_ZIPFILE( aFileZ, aDir[nI][1] , , , , , .T. ) NEXT nI aDir := Directory( vp_path+"*.FPT" ) aFileZ := fback+STRZERO(DAY(DATE()),2)+STRZERO(MONTH(DATE()),2)+RIGHT(STRZERO(YEAR(DATE()),4),2)+"FP.ZIP" IF EMPTY( aDir ) ? [NAO TEM FPT MANE] ENDIF FOR nI=1 TO LEN( aDir ) lRet := HB_ZIPFILE( aFileZ, aDir[nI][1] , , , , , .T. ) NEXT nI IF lRet ? [Backup Finalizado] ENDIF RETURN NIL
  24. mesmo mostrando o caminho Mesmo mostrando o caminho aonde esta o dbf ele nao pega somente se executar de dentro da pasta
  25. Bom dia, Pessoal Uma duvida para essa rotina funciona ? O executavel tem que estar na pasta aonde esta os dbfs , pois fiz um teste e se o executavel estiver em outra pasta ele nao consegue zipar os arquivos
×
×
  • Create New...