Jump to content
Fivewin Brasil

miragerr

Membros
  • Posts

    716
  • Joined

  • Last visited

  • Days Won

    12

Everything posted by miragerr

  1. Ola Herberson Tudo joia meu jovem, É quase isso, o que quero é comprar as horas entre uma NFCe e uma NFe que foi tirada a partir de uma NFCe. pois estou tendo alguns problemas quando o meu cliente emite uma NFCe depois de alguns dias a pessoa volta pedindo uam NFe, até ai tudo bem pode ser tirada, mais as veses o cara tira a NFe e volta depois para cancelar a NFe por algum motivo, e nisso tenho que cancelar em CASCATA, 1o a NFCe depois a NFe, e nem sempre é possivel. Fico no aguardo.
  2. Ola amigos, Boa noite. Alguem tem uma formula para validar telefones, isso é para a NFe/NFCe. Vi que tem para email. Fico no aguardo.
  3. Ola amigos boa noite, Existe alguma função em que possa informar uma data, por exemplo: 2015-02-17T20:03:42-04:00 --> esta hora é de retorno da NFe O que quero na realidade é saber quantas horas tem entre a data e hora de emissão de uma NFe com a data e hora do sistema atual. Fico no aguardo.
  4. Ola amigo Oscar, realmente comigo aconteceu também eles não queriam abrir para mais clientes meus, mais EU mostrei pra eles que EU ja tinha clientes em produção na cidade em questão, e eles me pediram um CNPJ no qual estava liberado, e ai eles liberaram pra mim, mais com resalva, se desse qualquer problema com o provedor ou mudança na na prefeitura, eles não poderiam me ajudar. Neste caso questione com eles, caso você tenha cliente(s) neste município, mostre a eles. Espero ter ajudado. Obs. Estou na eminencia de fazer uma classe usando como base o projeto HB_NFe... ou até mesmo usar o ACBRMonitor até ter algo mais pratico de uso, mais convenhamos, essas prefeituras só inventam modas, é só uma forma de roubar mais dinheiro, pois as mesma poderiam usar a própria NFe pra isso.
  5. Ola amigos Oscar, acho que você esta equivocado, o pessoal da FLEXDOCS só não esta mais fazendo adição de novas prefeituras na DLL, até concordo com eles, haja visto que cada prefeitura quer fazer um padrão para a NFSe e estão sempre trocando de LAYOUT e provedores de acesso, isso realmente é irritante, só não entendo porque as prefeituras não utilizam a NFe para isso, pois o projeto também comporta serviços. Isso é só pra criar confusões e mais sonegações. Espero ter ajudado.
  6. Ola amigo Da uma olhada neste link http://www.spedbrasil.net/forum/topics/suframa-1 Tem um anexo com um arquivo em EXCEL no qual vai te ajudar. Achei interessante. Fico a disposição.
  7. Ola, Boa noite amigo Eu desenvolvi uma classe baseada na classe do Gilmer para a FLEXDOCs, a vantagem que vi em não usar algo especifico como DARUMA x BOSTAMATECH é que se tornou muito mais pratico o uso da DLL da FLESDOCs, a minha ja esta em operação desde OUT/2014. Se precisar de ajuda, estamos a disposição.
  8. Ola amigos Isso seria muito interessante esta funcionalidade em nossos sistemas, ainda mais com o advento da NFCe. +1 perguntando, alguem ja fez funcionar.
  9. Ola Boa noite Crisvam eu USO a FLEXDOCS com a CLASSE do GILMER... o que VOCE esta usando para gerar os teus XML. Fico no aguardo.
  10. Ola Boa tarde Crisvam o que voce realmente esta precisando, um XML, o que voce usa para gerar a NFe. Fico no aguardo
  11. Ola bom dia Crivam não entendi seu questionamento.
  12. Ola amigos Para funcionar a DLL da FLEXDOCS no XP, você tem que instalar o NetFrameWork 3.5 Espero ter ajudado.
  13. Ola amigos As funções do inicio do tópico pegam o COO e não o CCF. embora eu desconheça a função da EPSON mais a da ELGIN esta pegando CCF. Espero ter ajudado.
  14. Ola amigos Montei uma classe para usar a DLL da FLEXDOCS é muito mais pratico... a propria DLL monta o XML tanto para NFe como para a NFCe, voce apenas coloca os paramentros. muito pratico mesmo. O Custo atualmente é de R$ 100,00 por CNPJ. Function ProcessaNFe3g( cTipoEnvio, aProd, cChaveEnvio, nModeloNfe, aDados, nTipoNFCe ) //************************************************************************** // // aDados = 1 -> NR DO BOLETO/DAV // 2 -> Descrição da Venda CFOP local cDV := "" local nRet Local cCmd Local cSQL Local aDuplicatas, k Private aSQL DEFAULT nModeloNfe := 55 //VERSÃO 2.0 cSQL := "SELECT crt, csosn FROM afirma" aSQL := Array_Sql(cSQL,,,.f.,.f.,.f.) IF !Empty( aSQL ) cCRT := AllTrimStr(aSQL[1][1]) cCSOSN := AllTrimStr(aSQL[1][2]) IF Empty( aSQL[1][1] ) MsgStop("Esta faltando configurar CRT","Atenção...") RETU ENDIF Else MsgStop("Esta faltando configurar CRT e CSOSN","Atenção...") RETU ENDIF IF Empty( USERINFO_FIRMA ) cCmd := "Select * From afirma" IF !TemporarioSQL( cCmd, "Buscando Dados da Empresa", "SYSTEM" ) RETU ENDIF aGeralIni[001] := Pad( IIF( Empty(SYSTEM->ARFIRMA ),Space(Len(SYSTEM->ARFIRMA)), DeCrypt( SYSTEM->ARFIRMA ,"jackson" ) ), Len(SYSTEM->ARFIRMA) ) aGeralIni[114] := IIF( Empty(SYSTEM->ARFANTASIA ),"", DeCrypt( SYSTEM->ARFANTASIA,"jackson" ) ) aGeralIni[002] := IIF( Empty(SYSTEM->ARENDFIRMA ),"", DeCrypt( SYSTEM->ARENDFIRMA,"jackson" ) ) aGeralIni[003] := IIF( Empty(SYSTEM->ARBAIFIRMA ),"", DeCrypt( SYSTEM->ARBAIFIRMA,"jackson" ) ) aGeralIni[005] := IIF( Empty(SYSTEM->ARCIDFIRMA ),"", DeCrypt( SYSTEM->ARCIDFIRMA,"jackson" ) ) aGeralIni[006] := IIF( Empty(SYSTEM->ARUFDFIRMA ),"", DeCrypt( SYSTEM->ARUFDFIRMA,"jackson" ) ) aGeralIni[004] := IIF( Empty(SYSTEM->ARCEPFIRMA ),"", DeCrypt( SYSTEM->ARCEPFIRMA,"jackson" ) ) aGeralIni[007] := IIF( Empty(SYSTEM->ARFO1FIRMA ),"", DeCrypt( SYSTEM->ARFO1FIRMA,"jackson" ) ) aGeralIni[008] := IIF( Empty(SYSTEM->ARFAXFIRMA ),"", DeCrypt( SYSTEM->ARFAXFIRMA,"jackson" ) ) aGeralIni[019] := IIF( Empty(SYSTEM->ARCGCFIRMA ),"", DeCrypt( SYSTEM->ARCGCFIRMA,"jackson" ) ) aGeralIni[020] := IIF( Empty(SYSTEM->ARINSFIRMA ),"", DeCrypt( SYSTEM->ARINSFIRMA,"jackson" ) ) aGeralIni[160] := IIF( Empty(SYSTEM->ARI_MFIRMA ),"", DeCrypt( SYSTEM->ARI_MFIRMA,"jackson" ) ) aGeralIni[144] := Right( aGeralIni[002], 10 ) aGeralIni[002] := Left( aGeralIni[002], 60 ) ENDIF IF Valtype( oDlg_Nfe ) == "O" oDlg_Nfe:aControls[1]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[1]:Refresh() ENDIF SysRefresh() nTotalDesGrao := 0 nValorICMSDispensado := 0 //0-pagto à vista;1-pagto a prazo;2-outros nTpPagto := IIF( lTemCupom, 2, IIF( cTipoEnvio $ "01|03|05","0",IIF( cTipoEnvio == "02" ,1,2)) ) nSerie := nNumeroSerieNfe //0-Unica nTpNF := IIF( cTipoEnvio $ ENTRADA_PRODUTO,0,1) //0-Entrada ;1-Saida nTpImp := 1 //1-retrato ;2-paisagem nTpEmis := 1 //1-Normal ;2-Contigência // nFinalidade := IIF( NATOPERA->arfinalidade_cfop, 4, 1 ) //1-Normal ;2-Complementar;3-Ajustes;4 - Devolução/Retorno nTpAmb := IIF( Alltrim(cNomeUsuario) == "Master", 2, 1 ) //1-Produção 2-Homologação cNatureza := Subs( Pc_StrTransform( aDados[2] ), 1, 60 ) cLicenca := aGeralIni[188] oNfe := MyNFe_NFCe():New( USERINFO_UF , AllTrimStr( nTpAmb ), cCertificado,,,,cLicenca,.t.,,LocalDBF+"\SAC" ) oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() //Identificação da NFe WITH OBJECT oNfe :cNf := val( aDados[1] ) //Informar o código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e para evitar acessos indevidos da NF-e. :nMod := nModeloNfe //Modelo 55 ou 65 :nSerie := nSerie //Serie da NFe If :nMod == 55 :nNFe := val(VMNFISCA_NOTA) //Numero da NFe Else MsgGet( , "Numero da NFe/NFCe", @nNumeroNFe, , '@9' ) :nNFe := nNumeroNFe EndIf :nTpNf := nTpNF :nTpEmis := nTpEmis //informar o código da forma de emissão: //1 - Emissão normal (não em contingência); //2 - Contingência FS-IA, com impressão do DANFE em formulário de segurança; //3 - Contingência SCAN (Sistema de Contingência do Ambiente Nacional) Desativação prevista para 30/06/2014; //4 - Contingência DPEC (Declaração Prévia da Emissão em Contingência); //5 - Contingência FS-DA, com impressão do DANFE em formulário de segurança; //6 - Contingência SVC-AN (SEFAZ Virtual de Contingência do AN); //7 - Contingência SVC-RS (SEFAZ Virtual de Contingência do RS); //9 - Contingência off-line da NFC-e (as demais opções de contingência são válidas também para a NFC-e); //Nota 1: Para a NFC-e somente estão disponíveis e são válidas as opções de contingência 5 e 9. //Nota 2: SVC-AN e SVC-RS substituem o SCAN - NT 2013/007. //Geração da Chave pelo Sistema :CriaChaveAcesso_Nfe() If :Consulta_NFe() If !File( :aRetornoXml['arquivo'] ) .AND. MsgYesNo( "Esta NFe já foi enviada mais o XML não foi encontrado"+CRLF+"Gostaria de Baixar o XML ?","Atenção..." ) If !:DownLoadXml_NFe( :aRetornoXml['chave'] ) MsgStop( "Impossivel Baixar XML da "+IIF( :nMod == 55, 'NFe', 'NFCe' ),"Atenção..." ) Retu Endif Endif GerarDanfeFast( :aRetornoXml['chave'], :aRetornoXml['protocolo'], :aRetornoXml['recibo'], :aRetornoXml['arquivo'] ) Retu Endif :cNatOp := cNatureza :cMunFG := RetCodMunIBGE( Pc_StrTransform(USERINFO_CIDADE), USERINFO_UF ) :cNFref := '' :nIndPag := nTpPagto //informar o indicador da forma de pagamento: //0 - pagamento à vista; //1 - pagamento à prazo; //2 - outros. IF !lExporta .AND. !lImporta :nIdDest := IIF( USERINFO_UF == VM_UFCLI_CLIE, 1, 2 ) //Informar o identificador de local de destino da operação: Else //1 - Operação interna; :nIdDest := 3 //2 - Operação interestadual; Endif //3 - Operação com exterior. :nTpImp := IIF( :nMod == 55, 1, 4 ) //informar o formato de impressão do DANFE: //0 - Sem geração de DANFE; //1 - DANFE normal, Retrato; //2 - DANFE normal, Paisagem; //3 - DANFE Simplificado; //4 - DANFE NFC-e; //5 - DANFE NFC-e em mensagem eletrônica (o envio de mensagem eletrônica pode ser // feita de forma simultânea com a impressão do DANFE; // usar o tpImp - 5 quando esta for a única forma de disponibilização do DANFE :nTpAmb := nTpAmb //informar o código de identificação do Ambiente: //1 - Produção; //2 - Homologação //NFCe deve ser somente 1 :nFinNFe := nFinalidade //infformar o código da finalidade de emissão da NF-e: //1 - NF-e normal; //2 - NF-e complementar; //3 - NF-e de ajuste; //4 - Devolução/Retorno. //NFCe deve ser somente 1 If :nMod == 65 :nIndFinal := 1 //informar o indicador de operação com Consumidor final: Else //0 - Não; :nIndFinal := 1 //1 - Consumidor final (sempre para NFCe) EndIF //NFCe deve ser somente 1 ou 4 //Sendo que quando for 4 deve informar o TRANSPORTADOR :nIndPres := 1 //Informar o indicador de presença do comprador no estabelecimento comercial no momento da operação: //0 - Não se aplica (por exemplo, Nota Fiscal complementar ou de ajuste); //1 - Operação presencial; //2 - Operação não presencial, pela Internet; //3 - Operação não presencial, Teleatendimento; //4 - NFC-e em operação com entrega a domicílio; //9 - Operação não presencial, outros :nProcEmi := 0 //informar o código de identificação do processo de emissão da NF-e: Identificador do processo de emissão da NF-e: //0 - emissão de NF-e com aplicativo do contribuinte :cVerProc := "Ontop 4.0" If :nMod == 65 :cDhSai := NIL Endif //Tenho que adcionar IF VMNFE_ECOMPLEM // oNFe:SetValue("ide" , 'refNFe', VMNFE_COMPLEME ) ENDIF :Identifica_NFe() ***: ******** Dados do Emitente ****************************************************************** ***: :CNPJ_Emi := R_CnpjLienar(USERINFO_CNPJ) :xNome_Emi := ClearChar(USERINFO_FIRMA, { '&' } ) :xFant_Emi := ClearChar(USERINFO_FANTASIA, { '&' } ) :xLgr_Emi := ClearChar(USERINFO_ENDERECO, { '&' } ) :nro_Emi := USERINFO_NR_END :xBairro_Emi := USERINFO_BAIRRO :cMun_Emi := RetCodMunIBGE( Pc_StrTransform(USERINFO_CIDADE), USERINFO_UF ) :xMun_Emi := USERINFO_CIDADE :CEP_Emi := ClearChar(USERINFO_CEP,{"-","."}) :fone_Emi := ClearChar(USERINFO_TELEFONE ,{"(",")","-"," "} ) :IE_Emi := ClearChar(USERINFO_INSCEST ,{".","-"}) :CRT_Emi := oSystema:CRT :Emitente_NFe() ***: ******** Dados do Destinatário ****************************************************************** ***: IF !lExporta .AND. !lImporta IF Len( Alltrim(cnpj_cpf_CLIE) ) > 11 //:CNPJ_Dest := IIF( :nTpAmb == 2, '99999999000191', R_CnpjLienar(cnpj_cpf_CLIE) ) // CPF ou CNPJ :CNPJ_Dest := R_CnpjLienar(cnpj_cpf_CLIE) // CNPJ Else :CPF_Dest := R_CPFLienar(cnpj_cpf_CLIE) // CPF Endif IF RetCodMunIBGE( VMCIDCLI_CLIE , VM_UFCLI_CLIE ) == "" .AND. :nMod == 55 MsgInfo("O Municipio do Destinatário não foi encontrado","Atenção") RETU .F. Endif Else :CNPJ_Dest := '' // CPF ou CNPJ :idEstrangeiro_Dest := ClearChar( VM_CICLI_CLIE, { " " } ) //DOCUMENTO DO ESTRANGEIRO EndIF :xNome_Dest := IIF( nTpAmb == 2, 'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL', Pc_StrTransform( VMNOMCLI_CLIE)+"("+cCodigo+") " ) // Razão Social :xLgr_Dest := Pc_StrTransform( VMENDCLI_CLIE ) :nro_Dest := IIF( Empty(VMNUMEND_CLIE), "S/N", Alltrim(VMNUMEND_CLIE) ) // Numero do Endereço :xBairro_Dest := VMBAICLI_CLIE // Bairro :cMun_Dest := IIF( lExporta .OR. lImporta, "9999999", RetCodMunIBGE( VMCIDCLI_CLIE , VM_UFCLI_CLIE ) ) // Código do IBGE do Municipio :xMun_Dest := Alltrim( IIF( lExporta .OR. lImporta, "EXTERIOR", VMCIDCLI_CLIE ) ) // Municipio :UF_Dest := IIF( lExporta .OR. lImporta, "EX", VM_UFCLI_CLIE ) // Estado IF lExporta .OR. lImporta :CEP_Dest := '' Else :CEP_Dest := IIF( Empty( VMCEPCLI_CLIE ), '69306000', ClearChar( VMCEPCLI_CLIE, {"-","."}) ) // CEP EndIF :cPais_Dest := IIF( lExporta .OR. lImporta, VMCDPAIS_NOTA, RetCodPaisIBGE()) //Default := Brasil // Código do IBGE do Pais :xPais_Dest := IIF( lExporta .OR. lImporta, VMNMPAIS_NOTA, "Brasil" ) // Pais :fone_Dest := ClearChar( VMTELCLI_CLIE ,{"-","(",")"," "}) // Telefone :IE_Dest := '' IF !lExporta IF :nMod == 65 // Indicador da IE do Destinatário, informar: :indIEDest_Dest := '9' //1 - Contribuinte ICMS (informar a IE do destinatário); Else //2 - Contribuinte isento de Inscrição no cadastro de Contribuintes do ICMS; If !lExporta .AND. !lImporta .AND. VMTIPCLI_CLIE == 'J' //9 - Não Contribuinte, que pode ou não possuir Inscrição Estadual no Cadastro de Contribuintes do ICMS. If Upper( Alltrim( VMINSCLI_CLIE ) ) == 'ISENTO' //Nota 1: No caso de NFC-e informar indIEDest=9 e não informar a tag IE do destinatário; :indIEDest_Dest := '9' //Nota 2: No caso de operação com o Exterior informar indIEDest=9 e não informar a tag IE do destinatário; Else //Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2), não informar a tag IE do destinatário. :indIEDest_Dest := '1' :IE_Dest := ClearChar( VMINSCLI_CLIE ,{".","-"} ) Endif Else :indIEDest_Dest := '9' Endif Endif Else :indIEDest_Dest := '9' Endif :IESUF_Dest := '' :IM_Dest := '' :eMail_Dest := ClearChar( VMEMAILL_CLIE ,{"-","(",")"," "} ) //email do cliente :Destinatario_NFe() IF lExporta :UFSaidaPais_export := USERINFO_UF // UF do local de embarque :xLocEmbarq_export := VMLOC_EMBARQUE // Local de embarque :Exporta_NFe() ENDIF ***: ******** Dados do Transporte ****************************************************************** ***: If :nMod == 55 //NFe If !Empty( VMCGCTRA_NOTA ) VMCGCTRA_NOTA := ClearChar( VMCGCTRA_NOTA, { '.','-','/' } ) IF Len( Alltrim(VMCGCTRA_NOTA) ) > 11 :tadora_CNPJ := R_CnpjLienar( VMCGCTRA_NOTA ) :tadora_IE := alltrim(clearChar(VMINSTRA_NOTA,{".","-"} ) ) Else :tadora_CPF := R_CnpjLienar( VMCGCTRA_NOTA ) Endif :tadora_xNome := Pc_StrTransform( VMNOMTRA_NOTA ) :tadora_xEnder := Pc_StrTransform( VMENDTRA_NOTA ) :tadora_xMun := Pc_StrTransform( VMCIDTRA_NOTA ) :tadora_UF := VMUFPTRA_NOTA :TransPortadora_Nfe() :veic_placa := clearChar(VMPLAC_TRATOR,{".","-"} ) :veic_UF := VMUF_TRATOR :veic_RNTC := VMRNTC_TRATOR :VeiculoTransporte_Nfe() :reboq_placa := clearChar( VMPLAC_DOLLY ,{".","-"} ) :reboq_UF := VMUF_DOLLY :reboq_RNTC := VMRNTC_DOLLY :ReboqueTransporte_Nfe() cLacres := Alltrim( VMLACRES_DOLLY ) :LacresTransporte_Nfe( cLacres ) :vol_qVol := VMQTDTRA_NOTA :vol_esp := VMESPTRA_NOTA :vol_marca := VMMARTRA_NOTA :vol_nVol := VMNUMTRA_NOTA :vol_pesoL := VMPBRTRA_NOTA :vol_pesoB := VMPLQTRA_NOTA :VolumesTransporte_Nfe() Endif :modFrete_transp := VMTIPFRE_NOTA :TransPortador_Nfe() IF VMNFE_EGOVERNO :xNEmp_comp := VMEMPE_GOVERNO :xCont_comp := VMCONT_GOVERNO :xPed_comp := VMPEDI_GOVERNO :Compra_Nfe() ENDIF ElseIf :nMod == 65 //NFCe :modFrete_transp := 9 If :nIndPres == 4 // :tadora_CNPJ := '00000000000191' :tadora_CPF := '19972407268' :tadora_xNome := 'Transportadora Rapida Ltda' // :tadora_IE := '240030836' :tadora_xEnder := 'Av. Dr Altino Arantes, 131 - Centro' :tadora_xMun := 'Ourinhos' :tadora_UF := 'RR' :TransPortadora_Nfe() Endif :TransPortador_Nfe() Endif END WITH /* // Carrega Itens da NFe nTotalDaNFe := 0 nTotalDescNFe := 0 nTotalDesGrao := 0 nBaseICMSNFe := 0 nValorICMSNFe := 0 nValorICMSDispensado := 0 nValorBaseICMSDispensado := 0 nValorIsentosNFe := 0 nBaseSubs := 0 nValoBaseST := 0 nValorPis := 0 nValorCoffins := 0 nTotalDoFrete := 0 nTotalDoSeguro := 0 nTotalDoOutros := 0 nTotal_II := 0 nTotal_Impostos := 0 aSoma_Liquidos := {} */ lRodapePercenIcmsSimplesNacional := .T. lRodapeIcmsIsento := .T. lRodapePisCofinsLei := .T. nTotalProdutosNFe_Simples_Nacional := 0 oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() MsgRun( "Processando itens da NFe/NFCe","Aguarde...", { || LoadItens3g( oNFe, aProd, cTipoEnvio ) } ) oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() WITH OBJECT oNFe //Carrega Duplicatas IF _FATURA_AUTOMATICA_NOTA_FISCAL .AND. BOLETOS->artpvend == '02' GeraFaturaAutoMatica( BOLETOS->arnrdoct, :vST_tIcms + :vProd_tIcms , , 0, :vST_tIcms ) Endif cCmd := "Select CONCAT( arsequen, arcontro,'-',arparcel ) AS nr_fatura, ardtvenc AS data_venc, arvrdupl AS valor, CONCAT( arsequen, arcontro ) FROM re04 WHERE CONCAT( arsequen, arcontro ) = '"+BOLETOS->arfatura+"' AND arcodcli = '"+BOLETOS->arcodcli+"'" aDuplicatas := Array_Sql( cCmd ) If !Empty( aDuplicatas ) nVal_Dup := 0 FOR k=1 TO Len( aDuplicatas ) :nDup_dup := aDuplicatas[ k, 1 ] :dVenc_dup := aDuplicatas[ k, 2 ] :vDup_dup := aDuplicatas[ k, 3 ] nVal_Dup += :vDup_dup :Duplicata_NFe() Next :nFat_cob := aDuplicatas[ 1, 4 ] :vOrig_cob := nVal_Dup :Cobranca_NFe() Endif If :nMod == 65 //Formas de Pagamentos somente para NFCe em PRODUÇÃO /* 01=Dinheiro 02=Cheque 03=Cartão de Crédito 04=Cartão de Débito 05=Crédito Loja 10=Vale Alimentação 11=Vale Refeição 12=Vale Presente 13=Vale Combustível 99=Outros. */ cCmd := "Select artpvend, arvrvend FROM esto_53 WHERE arnrdoct = ?" aPagamentos := Array_SQL( cCmd,,{ BOLETOS->arnrdoct }) IF Empty( aPagamentos ) aPagamentos :={{ BOLETOS->artpvend, BOLETOS->arvrvend }} EndIf FOR k=1 TO Len( aPagamentos ) If aPagamentos[k,1] == '01' :tPag := '01' ElseIf aPagamentos[k,1] == '05' :tPag := '02' ElseIf aPagamentos[k,1] $ '03|25' :tPag := '03' ElseIf aPagamentos[k,1] == '02' :tPag := '05' Else :tPag := '99' Endif :vPag := aPagamentos[k,2] :Pagamento_Nfe() Next Endif END WITH // Rodapé - Informações Adicionais cDadosAdcionais := Alltrim(Pc_StrTransform( StrTran( StrTran( VMINFO_ADCIONAL, Chr(13), ';' ), Chr(10), "" ) )) IF !Empty( nTotalDesGrao ) // Desconto concedido Conforme Lei 215/98 cDadosAdcionais += ";Desconto concedido Conforme Lei 215/98;Total desconto "+cCooperativa+" R$ "+Alltrim( Trans( nTotalDesGrao,"@E 99,999,999.99" ) ) ENDIF IF cCRT == '1' .AND. oSystema:PercenIcmsSimplesNacional > 0 .AND. lRodapePercenIcmsSimplesNacional nPercenIcmsSimplesNacional := 0 IF oSystema:lPercenIcmsSimplesNacional_TotalNota nPercenIcmsSimplesNacional := Round( VMTTNFIS_NOTA * ( oSystema:PercenIcmsSimplesNacional / 100 ), 2 ) Else nPercenIcmsSimplesNacional := Round( nTotalProdutosNFe_Simples_Nacional * ( oSystema:PercenIcmsSimplesNacional / 100 ), 2 ) EndIF cDadosAdcionais += ';NFe Emitida por Empresa optante do SIMPLES NACIONAL permitindo aproveitamento de credito de;ICMS Valor R$ '+; Alltrim( Trans( nPercenIcmsSimplesNacional, "@E 99,999,999.99" ) )+" Correpondente a aliquota de "+AllTrimStr( oSystema:PercenIcmsSimplesNacional )+" %, nos termos do Art. 23 da LC 123/2006" EndIf IF !Empty( nValorICMSDispensado ) .AND. lRodapeIcmsIsento cDadosAdcionais += ';ICMS DISPENSADO DO VALOR DA NOTA FISCAL R$ '+Trans( nValorBaseICMSDispensado, "@E 99,999,999.99" )+' X 17% = ( '+Trans( nValorICMSDispensado, "@E 99,999,999.99" )+') Correspondente ao Valor do ICMS) ' EndIf cDadosAdcionais := StrTran( cDadosAdcionais, ';;',';' ) cDadosAdcionais := StrTran( cDadosAdcionais, ';;',';' ) /* a fazer For k=1 To Len( aSoma_Liquidos ) cDadosAdcionais += ";"+Pad( aSoma_Liquidos[k,1], 50 ) +" Qtd.:"+Trans( aSoma_Liquidos[k,2], "@E 999,999,999.999" )+" R$.:"+Trans( aSoma_Liquidos[k,3], "@E 999,999,999.99" ) Next */ IF oSystema:lLeiDaTransparencia .AND. !VMIMPORTACAO nPercenImposto := " ("+AlltrimStr( Round( ( oNFe:vTotTrib_ticms / ( Round( oNFe:vNF_tIcms, 2 ) ) ) * 100 , 2 ) )+"%)" // cDadosAdcionais += "Valor aprox. de Tributos R$"+AlltrimStr( oNFe:vTotTrib_ticms )+nPercenImposto EndIf oNFe:infCpl_infAdi := cDadosAdcionais oNFe:Inf_Adicionais_NFe() oNFe:ConsolidaXml_Nfe() IF Valtype( oDlg_Nfe ) == "O" oDlg_Nfe:aControls[2]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[2]:Refresh() oDlg_Nfe:aControls[3]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[3]:Refresh() ENDIF SysRefresh() oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() nRet := 0 cMenssagem := '' MemoWrit( 'Consolida_ident.xml', oNFe:oMyNfe:IdentaXML( oNFe:aRetornoXml['consolida'], @nRet, @cMenssagem ), .F. ) If oNFe:ValidaXml_Nfe() IF Valtype( oDlg_Nfe ) == "O" oDlg_Nfe:aControls[4]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[4]:Refresh() oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() ENDIF SysRefresh() nRet := 0 cMenssagem := '' MemoWrit( 'Sem_assinado_ident.xml', oNFe:oMyNfe:IdentaXML( oNFe:aRetornoXml['consolida'], @nRet, @cMenssagem ), .F. ) MemoWrit( 'assinado_ident.xml', oNFe:oMyNfe:IdentaXML( oNFe:aRetornoXml['assinado'], @nRet, @cMenssagem ), .F. ) MemoWrit( 'assinado.xml', oNFe:aRetornoXml['assinado'], .F. ) IF oNFe:Envia_NFe() MemoWrit( 'Autorizada_ident_'+AllTrimStr( oNFe:nNFe )+'.xml', oNFe:oMyNfe:IdentaXML( oNFe:aRetornoXml['autorizada'], @nRet, @cMenssagem ), .F. ) If oNFe:nMod == 65 If Alltrim(cNomeUsuario) == "Master" oSystema:End_Qrcode_Nfce := 'http://200.174.88.103:8080/nfce/servlet/qrcode' Endif oNFe:url_idToken := oSystema:Id_Csc_Nfce oNFe:url_Token := oSystema:Csc_Cli_Nfce oNfe:url_ws := oSystema:End_Qrcode_Nfce oNFe:GeraUrl_NFCe() /* ? ProcName(), oNfe:url_ws oCode := TCodeBars():New(305,305,3,3,14, oNFe:aRetornoXml['url'], 0 ) oCode:Build() oCode:SaveToBmp( 'QrCode.JPG', 2 ) oCode:End() */ cCmd := "UPDATE nota_nfce SET arcodopr = ?, arcodcli = ?, archanfe = ?, arrecnfe = ?, ardtrnfe = ?, ar_xml = ?, ar_url_qrcode = ? WHERE sr_recno = ?" Array_SQL( cCmd,,{ NATOPERA->arcodopr, BOLETOS->arcodcli, oNFe:aRetornoXml['chave'], oNFe:aRetornoXml['protocolo'], oNFe:aRetornoXml['recibo'], oNFe:aRetornoXml['autorizada'], oNfe:url_ws, oNFe:nNFe }) EndIf IF Valtype( oDlg_Nfe ) == "O" oDlg_Nfe:aControls[5]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[5]:Refresh() oDlg_Nfe:aControls[10]:Varput( Elaptime( cTime_NFe, Time() ) ) oDlg_Nfe:aControls[10]:Refresh() ENDIF SysRefresh() GerarDanfeFast( oNFe:aRetornoXml['chave'], oNFe:aRetornoXml['protocolo'], oNFe:aRetornoXml['recibo'], oNFe:aRetornoXml['arquivo'] , , , cTipoEnvio, , ,nModeloNfe, nTipoNFCe, oNFe:aRetornoXml['url'] ) ? "Autorizada com Sucesso", oNFe:aRetornoXml['recibo'], oNFe:aRetornoXml['protocolo'] Endif Else ? "Nfe não validada corretamente" Endif /* //Exportacao IF lExporta oNFe:SetValue("exporta" , "UFEmbarq" , USERINFO_UF ) // UF do local de embarque oNFe:SetValue("exporta" , "xLocEmbarq" , VMLOC_EMBARQUE ) // Local de embarque ENDIF // nTotalDeconto := IIF( _aIcms[10]+nTotalDesGrao > 0, ((nTotalDaNFe - _aIcms[10])+IIF( lTemCupom, 0, nTotalDesGrao ) ), 0 ) nTotalDeconto := nTotalDesGrao + nTotalDescNFe nTotalProdutosNFe := ( nTotalDaNFe-nTotalDeconto ) nDescontoBaseIcms := Round( nTotalProdutosNFe / (nTotalDaNFe-nTotalDeconto), 16 ) nBaseICMSNFe *= IIF( !Empty( nDescontoBaseIcms ), nDescontoBaseIcms, 1 ) nValorICMSNFe *= IIF( !Empty( nDescontoBaseIcms ), nDescontoBaseIcms, 1 ) // Totais da NF oNFe:SetValue("total" , "vBC" , nBaseICMSNFe ) // Base de Cálculo do ICMS oNFe:SetValue("total" , "vICMS" , nValorICMSNFe ) // Valor do ICMS oNFe:SetValue("total" , "vBCST" , nBaseSubs ) // Base de Cálculo do ICMS Substituição oNFe:SetValue("total" , "vST" , nValoBaseST ) // Valor do ICMS Substituição oNFe:SetValue("total" , "vProd" , nTotalDaNFe ) // Valor Total dos Produtos oNFe:SetValue("total" , "vFrete" , nTotalDoFrete ) // Valor do Frete oNFe:SetValue("total" , "vSeg" , nTotalDoSeguro ) // Valor do Seguro oNFe:SetValue("total" , "vDesc" , nTotalDeconto ) // Desconto oNFe:SetValue("total" , "vII" , nTotal_II ) // Valor Isento oNFe:SetValue("total" , "vIPI" , 0 ) // Valor do IPI oNFe:SetValue("total" , "vPIS" , nValorPis ) // Valor do PIS oNFe:SetValue("total" , "vCOFINS" , nValorCoffins ) // Valor do COFINS oNFe:SetValue("total" , "vOutro" , nTotalDoOutros ) // Outras Despesas oNFe:SetValue("total" , "vNF" , nTotalProdutosNFe+nValoBaseST+nTotalDoFrete+nTotalDoSeguro+nTotalDoOutros+IIF( oSystema:Importadora .AND. VMIMPORTACAO, (nValorPis+nValorCoffins)-nValoBaseST, 0 ) ) // Total da Nota IF oSystema:lLeiDaTransparencia oNFe:SetValue("total" , "vTotTrib" , nTotal_Impostos ) // Lei da Transparencia ENDIF VMVRICMS_NOTA := nValorICMSNFe VMTTICMS_NOTA := nBaseICMSNFe VMVRBASESUB_NOTA := nBaseSubs VMVRICMSSUB_NOTA := nValoBaseST VMVRISENTOS_NOTA := nValorIsentosNFe VMVRPIS_NOTA := nValorPis VMVRCOFINS_NOTA := nValorCoffins VMTTNFIS_NOTA := nTotalProdutosNFe+nValoBaseST+nTotalDoFrete+nTotalDoSeguro+nTotalDoOutros VMDESCONT_NF_NOTA := nTotalDeconto VMPRODUTO_NF_NOTA := nTotalDaNFe oNotaDbf:Save() BOLETOS->( SR_dBRefresh() ) BOLETOS->( dBLockRec() ) SR_BeginTransaction() REPLA BOLETOS->arvsubst_tri WITH nValoBaseST,; BOLETOS->aremisnf WITH Date() BOLETOS->( dBCommit() ) BOLETOS->( GravaMD5() ) dBCommitAll() ; SR_CommitTransaction() ; SR_EndTransaction() ; SR_dBRefresh() //Carrega Duplicatas IF _FATURA_AUTOMATICA_NOTA_FISCAL .AND. BOLETOS->artpvend == '02' GeraFaturaAutoMatica( BOLETOS->arnrdoct, nTotalProdutosNFe+nValoBaseST, , 0, nValoBaseST ) ENDIF LoadDuplicatas( oNFe ) // Rodapé - Informações Adicionais cDadosAdcionais := Alltrim(Pc_StrTransform( StrTran( StrTran( VMINFO_ADCIONAL, Chr(13), ';' ), Chr(10), "" ) )) IF !Empty( nTotalDesGrao ) // Desconto concedido Conforme Lei 215/98 cDadosAdcionais += ";Desconto concedido Conforme Lei 215/98;Total desconto "+cCooperativa+" R$ "+Alltrim( Trans( nTotalDesGrao,"@E 99,999,999.99" ) ) ENDIF IF cCRT == '1' .AND. oSystema:PercenIcmsSimplesNacional > 0 .AND. lRodapePercenIcmsSimplesNacional nPercenIcmsSimplesNacional := 0 IF oSystema:lPercenIcmsSimplesNacional_TotalNota nPercenIcmsSimplesNacional := Round( VMTTNFIS_NOTA * ( oSystema:PercenIcmsSimplesNacional / 100 ), 2 ) Else nPercenIcmsSimplesNacional := Round( nTotalProdutosNFe_Simples_Nacional * ( oSystema:PercenIcmsSimplesNacional / 100 ), 2 ) EndIF cDadosAdcionais += ';NFe Emitida por Empresa optante do SIMPLES NACIONAL permitindo aproveitamento de credito de;ICMS Valor R$ '+; Alltrim( Trans( nPercenIcmsSimplesNacional, "@E 99,999,999.99" ) )+" Correpondente a aliquota de "+AllTrimStr( oSystema:PercenIcmsSimplesNacional )+" %, nos termos do Art. 23 da LC 123/2006" EndIf IF !Empty( nValorICMSDispensado ) .AND. lRodapeIcmsIsento cDadosAdcionais += ';ICMS DISPENSADO DO VALOR DA NOTA FISCAL R$ '+Trans( nValorBaseICMSDispensado, "@E 99,999,999.99" )+' X 17% = ( '+Trans( nValorICMSDispensado, "@E 99,999,999.99" )+') Correspondente ao Valor do ICMS) ' EndIf cDadosAdcionais := StrTran( cDadosAdcionais, ';;',';' ) cDadosAdcionais := StrTran( cDadosAdcionais, ';;',';' ) For k=1 To Len( aSoma_Liquidos ) cDadosAdcionais += ";"+Pad( aSoma_Liquidos[k,1], 50 ) +" Qtd.:"+Trans( aSoma_Liquidos[k,2], "@E 999,999,999.999" )+" R$.:"+Trans( aSoma_Liquidos[k,3], "@E 999,999,999.99" ) Next IF oSystema:lLeiDaTransparencia nPercenImposto := " ("+AlltrimStr( Round( ( nTotal_Impostos / ( Round( nTotalProdutosNFe+nValoBaseST, 2 ) ) ) * 100 , 2 ) )+"%)" cDadosAdcionais += "Valor aprox. de Tributos R$"+AlltrimStr( nTotal_Impostos )+nPercenImposto EndIf oNFe:SetValue("infAdic","infCpl" , cDadosAdcionais ) // Informações Adicionais oNFe:SetValue("compra", "xPed" , BOLETOS->arnrdoct ) // 0-Emitente; 1=Destinatario cDocXml := "" IF oNFe:GerarXml( @cDocXml ) IF lMatricial RETU oNfe ENDIF IF Valtype( oDlg_Nfe ) == "O" oDlg_Nfe:aControls[2]:LoadImage( , [&LocalDBF\sac\bmp\icon_checked.bmp] ) oDlg_Nfe:aControls[2]:Refresh() Sysrefresh() ENDIF // faz validação e envio do XML para Sefaz cXmlAssinado := "" cRecibo := "" cRecebimento := "" nRet := 0 cFileXmlNFe := "" IF GetKeyState( VK_CONTROL ) IF !MsgYesNo("Continua a Emissão Desta Nota","OK" ) retu .f. ENDIF ENDIF IF EnviaSefaz2g( cDocXml, cTpAmb, Nil, oNFe:cChvAcesso, @cXmlAssinado, @cFileXmlNFe ) VMXML_NFE := cXmlAssinado oNotaDbf:Save() cChaveEnvio := oNFe:cChvAcesso GerarDanfeFast( oNFe:cChvAcesso, cRecibo, cRecebimento, cFileXmlNFe, , , cTipoEnvio ) ENDIF ENDIF */ return( .t. )
  15. Ola Oscar As DLLs estão no mesmo diretorio da aplicação. Fico no aguardo.
  16. Ola amigo Oscar Voce fez uma boa escolha quanto ao SGDB, no caso da versão da SQLRDD ai não sei lhe dizer, mais voce pode testar instalando a ultima versção do Postgres, creio que ira funcionar sim. espero ter ajudado.
  17. Ola amigo Como você esta fazendo para buscar o XML ? Fico no aguardo.
  18. Caros amigos É com grande pesar que comunico a vocês que um grande amigo nosso o Sergio Personal faleceu vitima de um AVC. Estou aqui prestando meus pesames aos seus familiares.
  19. Ola Eroni como voce esta fazendo, tambem tive o mesmo problema...mais fiz da seguinte forma e funcionou oTimerSenha := TTimer():New( 3000, { || Ver_Inicio_Tempo() }, <oBj_Window> ) oTimerSenha:Activate() Veja o paramentro <oBj_Window> é só colocar e pronto Espero ter ajudado
  20. Ola Ariston Tenho uma rotina que é exatamente o que você esta precisando, veja se te atende. Static Function GravaRegistrosFiliais( cBanco, cCampo, oProgress, cWhere ) **************************************************************************************************************************** *** *** Local k, n, j Local cCmd, aRet, aRetFilds, lRet Local cFieldsEstoq := "" Local aField := { "ARTABMES","ARLCACAO","ARQTDEST","ARQTDENT","ARUSAIDA","ARMOVMES","ARSALINI","ARCHAMD5","SR_RECNO","SR_DELETED", "ARQTDEPO",'ARTOTFAT' } Local aFieldEstFilial Local oSql Default cWhere := "" aFieldEstFilial := Array_SQL("Show Fields FROM "+cBanco ,,,.F.,.F. ) For j=1 To Len( aField ) IF ( n := ASCAN( aFieldEstFilial , { |x,y,z| x[1] = Lower( aField[j] ) } ) ) > 0 aFieldEstFilial := ATrueDel( aFieldEstFilial, n ) Endif Next cFieldsEstoq := "" cFieldsEstoqSave := "" cFieldsEstoqUpda := "" For j=1 TO Len( aFieldEstFilial ) cFieldsEstoq += Alltrim( aFieldEstFilial[j,1] )+',' cFieldsEstoqSave += Alltrim( aFieldEstFilial[j,1] )+' = ?,' cFieldsEstoqUpda += PadC( "?", Len( Alltrim( aFieldEstFilial[j,1] ) ) )+"," Next cFieldsEstoq := Subs( cFieldsEstoq, 1, Len( cFieldsEstoq ) - 1 ) cFieldsEstoqSave := Subs( cFieldsEstoqSave, 1, Len( cFieldsEstoqSave ) - 1 ) cFieldsEstoqUpda := Subs( cFieldsEstoqUpda, 1, Len( cFieldsEstoqUpda ) - 1 ) sr_setactiveconnection( nConectMysql ) aRet := Array_Sql("Select Count("+cCampo+") FROM "+cBanco+cWhere,,,.f.,.f., .t. ) If !Empty(aRet) nLen := aRet[1] x := 0 oProgress:nTotal := nLen oProgress:bSetGet := bSETGET( x ) FOR x=0 TO nLen STEP 100 oProgress:Set( x ) cTim := ElapTime( nTime, Time() ) oTim:Refresh() sr_setactiveconnection( nConectMysql ) cCmd := "Select "+cFieldsEstoq+" FROM "+cBanco+cWhere+" LIMIT "+; AllTrimStr(x)+','+AllTrimStr(100) aRet := Array_SQL(cCmd,,,.f.,.F.) If !Empty( aRet ) nLen_2 := Len( aRet ) sr_setactiveconnection( nLocalCnn ) Array_SQL("SET SESSION AUTOCOMMIT=0",,,.f.,.f.) FOR j=1 TO nLen_2 cSay := "Transferindo "+cBanco+' => '+AlltrimStr( x+j )+" / "+AlltrimStr( nLen ) oSay:Refresh() cCmd := "Select sr_recno FROM "+cBanco+" WHERE "+cCampo+" = '"+AllTrim( aRet[j,1] )+"'" aRet2 := Array_SQL( cCmd ,"_ITENS", ,.f. ,.T. , , .T. ) IF !Empty( aRet2 ) cCmd := "UPDATE "+cBanco+" SET "+cFieldsEstoqSave+" WHERE sr_recno = '"+AllTrimStr( aRet2[1,1] )+"'" lRet := Array_SQL(cCmd,"_GRAVANDO", aRet[j], .t., .t. ) If ValType( lRet ) == 'L' Exit EndIf Else cCmd := "INSERT INTO "+cBanco+" ("+cFieldsEstoq+") VALUES( "+cFieldsEstoqUpda+" )" lRet := Array_SQL(cCmd,"_INSERINDO", aRet[j], .t., .t. ) If ValType( lRet ) == 'L' Exit EndIf Endif Next If ValType( lRet ) == 'L' Exit EndIf Endif Next oProgress:Set( x ) IF !EH_POSTGRES .AND. cBanco == 'estoque' Array_SQL( "UPDATE estoque SET ardesativa_produ = 0 WHERE ardesativa_produ IS NULL",,,.F. ) Array_SQL( "UPDATE estoque SET arlataca = 0 WHERE arlataca IS NULL",,,.F. ) EndIf Array_SQL("SET AUTOCOMMIT=1",,,.f.,.f.) SysRefresh() Endif If ValType( lRet ) == 'L' MsgStop("Provavelmente a tabela >>"+cBanco+"<< não esta atualizada na Filial >>"+cSay+"<<","Atenção...") EndIf Return
  21. Ola Ariston Você pode usar ADO para isso, muito bom, rápido, simples de usar e o xBrowse esta preparado para fazer as movimentações dos ponteiros da tabela sem você precisar fazer nenhum controle. Eu também uso a SQLRDD, somente para LOCAL, mais para acesso remoto, melhor mesmo o ADO. Espero ter ajudado.
  22. Ola amigo Você está usando o quê para se conectar com o DB. Fico no aguardo.
  23. Ola amigos Meu skype estava errado no meu perfil agora ajustei. skype: jackson_rr
  24. Ola kapi Faz assim Method BuscaNFeDestinadas( ) Class TVoNFeUtil2G ********************************************************************************************************************** ** Local msgDados := '' Local msgRetWS := '' Local cStat := 0 Local msgResultado := '' Local indNFe := 0 Local indEmi := 0 Local ultNSU := '0' Local dhResp := '' Local indCont := 0 Local ultNSUConsultado := '0' Local cResult Local aResul := {} Local aNFes := {} Local oDlg, nNotas := Space(50) Local cTime := Time() DEFINE DIALOG oDlg TITLE "Aguarde..." @ 2, 11 SAY "Buscando Nfe Destinadas" @ 3, 11 SAY oSay VAR nNotas ACTIVATE DIALOG oDlg CENTERED ; ON INIT PlaceGif( oDlg ) NOWAIT Do While .t. //indCont == 0 cResult := ::oNFEUtil:ConsultaNFDest( 'AN', USERINFO_UF, 1, ::cCertificado, '1.01', @msgDados, @msgRetWS, @cStat, @msgResultado, USERINFO_CNPJ, indNFe, indEmi, ultNSU, @dhResp, @indCont, @ultNSUConsultado,::proxy, ::usuario, ::senha, ::Licenca) ultNSU := ultNSUConsultado SysRefresh() IF cStat == 138 aResul := HB_ATOKENS( cResult, CHR(13) ) FOR k=1 TO Len( aResul ) IF !Empty( aResul[k] ) aResul2 := HB_ATOKENS( aResul[k], '|' ) IF aResul2[ 1 ] == '[resNFe]' .AND. aResul2[ 9 ] == '1' AADD( aNFes, aResul2 ) Endif EndIf Next nNotas := "Qtd.:"+AlltrimStr( Len( aNFes ) )+" Tempo..:"+Elaptime( cTime, Time() ) oSay:Refresh() EndIf IF indCont == 0 exit EndIF EndDo //XBrowse( aNFes ) oDlg:End() Return aNFes ai pra chamar o metodo faz assim //----------------------------------------------------------------------------------------------------------------------// // Buscar NFe destinadas ao CNPJ //----------------------------------------------------------------------------------------------------------------------// #include "FiveWin.ch" #include "xBrowse.ch" #include "Dbfs.ch" #include "Opcoes.ch" #include "hbxml.ch" #include "DTPICKER.CH" Function WEstAt48() *********************************************************************************************************** *** *** Local oNFeUtil := TVoNFeUtil2g():New( USERINFO_UF , 1, Alltrim(aGeralIni[187]),,,,aGeralIni[188],.t.,,LocalDBF+"\SAC") Local aRet := oNFeUtil:BuscaNFeDestinadas() Local aFont[2], oDlg, aBmp[2] Local oBrowse, cCmd, aRet2 Local oNfe := GetGerNfe() Local cChave := Space(44) FOR k=1 TO Len( aRet ) aRet[ k, 1 ] := .F. aRet[ k, 8 ] := StoD( StrTran( aRet[k,8], '-','' ) ) aRet[ k, 10] := Val( aRet[k,10] ) aRet[ k, 14] := .F. cCmd := "Select arnomfor FROM pg02 WHERE arcgcfor = '"+Alltrim( aRet[k,4] )+"' LIMIT 1" aRet2 := Array_Sql( cCmd,,,.f. ) IF !Empty( aRet2 ) aRet[ k, 6 ] := aRet2[1,1] cCmd := "Select sr_recno FROM ent1nota WHERE arnr_nfe = '"+Alltrim( aRet[k,3] )+"' LIMIT 1" aRet2 := Array_Sql( cCmd,,,.f. ) IF !Empty( aRet2 ) aRet[ k, 14 ] := .T. EndIf EndIf Next DEFINE FONT aFont[1] NAME "Times New Roman" SIZE NIL,-12 DEFINE FONT aFont[2] NAME "Times New Roman" SIZE NIL,-26 BOLD ITALIC DEFINE DIALOG oDlg RESOURCE "BUSCA_NFE_DESTINADA" FONT aFont[1] oTT := TitleEx():Redefine( 4020, , "BUSCA NFe DESTINADAS",CLR_WHITE, aFont[2], oDlg, 1 ) REDEFINE XBROWSE oBrowse ARRAY aRet AUTOSORT; OF oDlg; ID 5000 ADD COLUMN oCol0 TO oBrowse BITMAP BMPDATA { || IIF( aRet[ oBrowse:nArrayAt,14], 2, 1 ) } IN "CHEKON","CHEKOFF"; HEADER " "; SIZE 20 oCol0:nFooterType := AGGR_COUNT oCol0:bLDClickData := {|| MsgRun("Conectando com o Portal da NFe","Aguarde...", ; {|| oNfe:Consulta( aRet[ oBrowse:nArrayAt,03] ) } ), ; IIf( File( oNfe:cFileNameNfe ),; ( lLimpaDir := .T., MsgInfo("Consulta Executada com sucesso, arquivo salvo em:"+CRLF+oNfe:GetFileName()+" !","TGerNfe") ),; MsgStop("Falha na consulta !","TGerNfe") ) } ADD COLUMN TO oBrowse DATA ARRAY ELM 3 ; HEADER "Chave NFe" ; SIZE 270 ; ON EDIT { |o,x,n| x := n }; ALIGN LEFT ADD COLUMN TO oBrowse DATA ARRAY ELM 8 ; HEADER "Emissão" ; SIZE 80 ; ALIGN CENTER ADD COLUMN TO oBrowse DATA ARRAY ELM 6 ; HEADER "Fornecedor" ; SIZE 300 ; ALIGN LEFT ADD COLUMN TO oBrowse DATA ARRAY ELM 10 ; HEADER "Valor R$" ; SIZE 100 ; PICTURE "@E 999,999.99"; ALIGN RIGHT oBrowse:MakeTotals() CorListBox( oBrowse ) oBrowse:lFooter := .t. oBrowse:nStretchCol := STRETCHCOL_LAST REDEFINE BTNBMP aBmp[1] LEFT RESOURCE "IMPRESS" 2007 ID 4001 OF oDlg ACTION ( lSai := .F., aBmp[1]:Disable(), oDlg:Update(), aBmp[2]:bAction := {|| lSai := .T. },; Imprime_Destinadas( aRet ), oDlg:SetFocus(), aBmp[1]:Enable(), aBmp[2]:bAction := {|| dBCloseAll(), oDlg:End() } ) Update REDEFINE BTNBMP aBmp[2] LEFT RESOURCE "BITMAP_3" 2007 ID 4002 OF oDlg ACTION ( oDlg:End() ) Update aBmp[2]:bClrGrad := GRAD_BTNSAI oDlg:lHelpIcon := .F. ACTIVATE DIALOG oDlg CENTERED RELEASE BTNBMP aBmp[1], aBmp[2] RELEASE FONT aFont[1], aFont[2] Return Static Function Imprime_Destinadas( aDados ) ************************************************************************************************************ *** *** Local aRet := {} Local k For k=1 TO Len( aDados ) // 1 -> Fornecedor // 2 -> Dt. Emissão // 3 -> Valor da Nota // 4 -> Se dado entrada // 5 -> Chave NFe AADD( aRet, { aDados[k, 6], aDados[k, 8], aDados[k, 10], aDados[k, 14], aDados[k, 1] } ) Next Impress_FastReport( "NotasDestinadas", "Notas Destinadas" ,,,, { "NOTAS_DESTI","FORNECEDOR;EMISSAO;VALOR;FOI_ENTRADA;CHAVE_NFE", aRet } ) //xBrowse( aDados ) Return mole-mole Espero ter ajudado.
  25. Ola amigos Sim, posso comercializa-la, para melhores detalhes me chame no Skype.
×
×
  • Create New...