syspel Posted February 2, 2017 Report Share Posted February 2, 2017 bom dia pessoal comprei a classe do gilmer vonfe etc e nunca usei alguem tem exemplo como usar o gilmer perdeu os exemplos de como usar a sua classe obrigado ailton syspel Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 2, 2017 Report Share Posted February 2, 2017 veja se ajuada... #include "fivewin.ch" #include "image.ch" Function Main(cTipoAmb,cEstado,cComandoPrompt,cPar1,cPar2) Local oDlg,oImagemFundo Public oMenu,oBtnBar Public cTpAmb := cTipoAmb //1-Produção;2-homologação Public cPromptInforma:="" Public lExecPrompt Public cEstadoEmitenteNFe:=cEstado Default cTpAmb:= "2" Default cComandoPrompt:="" Default lExecPrompt:=.f. Default cEstadoEmitenteNFe:="SP" // setando data para impressão correta no DANFE Set Dele On Set Exclusive Off Set Date Format "dd/mm/yyyy" REQUEST DBFCDX RddSetDefault("DBFCDX") // Define o Rdd padrão If Empty(cComandoPrompt) // Abertura do Arquivos do Sistema AbreArquivos() cEstadoEmitenteNFe:=Emi->Estado Define Dialog oDlg Title "Exemplo FlexDoc + TVoNFe" Size 600,600 TRANSPARENT Define image oImagemFundo oImagemFundo:LoadBmp("nfe.jpg") oImagemFundo:SetSize(600,600,.t.) Activate Dialog oDlg center ON PAINT PalBmpDraw( hDc ,15, 0, oImagemFundo:hBitmap,oImagemFundo:hPalette,oImagemFundo:nWidth(),; oImagemFundo:nheight(),oImagemFundo:lTransparent,oImagemFundo:nClrPane) ON INIT BuildControls(oDlg) Else lExecPrompt:=.t. DO Case Case Upper(cComandoPrompt)=="TXT2XML" fErase("EnviaNFe.RET") cPromptInforma:="TXT2XML - "+cPar1+" - "+cTpAmb UtilImportTxt(cPar1) fErase("BuscaNFe.RET") cPromptInforma:="BUSCA - "+cPar1+" - "+cTpAmb Case Upper(cComandoPrompt)=="BUSCA" RetornoSefaz(cPar1,cPar2) Case Upper(cComandoPrompt)=="CONSULTA" Endcase Endif Return(nil) //----------------------------------------------------------------------------// // Função para geração do XML de Envio // Não é obrigatório a utilizaçao do mesmo seguindo o mesmo critério Function GerarNFe() local cDV := "" nTpPagto := "1" //0-pagto à vista;1-pagto a prazo;2-outros nSerie := "0" //0-Unica cTpNF := "1" //0-Entrada;1-Saida cTpImp := "1" //1-retrato;2-paisagem cTpEmis := "1" //1-Normal;2-Contigência cFinalidade := "1" //1-Normal;2-Complementar;3-Ajustes cNatureza := "VENDA MERCA ADQ/REC DE TERC EM OPER" oNfe := TVoNFe():New() oNFe:SetValue("ide" , 'cUF' , RetCodUFIBGE(Emi->Estado) ) oNFe:SetValue("ide" , 'cNF' , StrZero( val("10102"),9) ) oNFe:SetValue("ide" , 'natOp' , cNatureza) oNFe:SetValue("ide" , 'indPag' , nTpPagto ) oNFe:SetValue("ide" , 'mod' , "55" ) oNFe:SetValue("ide" , 'serie' , 0 ) oNFe:SetValue("ide" , 'nNF' , 101 ) // Numero Nota Fiscal oNFe:SetValue("ide" , 'dEmi' , Date() ) oNFe:SetValue("ide" , 'dSaiEnt' , 0 ) oNFe:SetValue("ide" , 'tpNF' , cTpNF ) oNFe:SetValue("ide" , 'cMunFG' , RetCodMunIBGE(Emi->Municipio, Emi->Estado ) ) oNFe:SetValue("ide" , 'tpImp' , cTpImp ) //TpAmbiente oNFe:SetValue("ide" , 'tpEmis' , cTpEmis ) oNFe:SetValue("ide" , 'cDV' , cDV ) //Não informar oNFe:SetValue("ide" , 'tpAmb' , cTpAmb ) oNFe:SetValue("ide" , 'finNFe' , cFinalidade ) oNFe:SetValue("ide" , 'procEmi' , "0") oNFe:SetValue("ide" , 'verProc' , "NF-eletronica.com") //Dados do Emitente oNFe:SetValue("emit" , "CNPJ" , R_CnpjLienar(Emi->CNPJ_CNPF) ) // CPF ou CNPJ oNFe:Setvalue("emit" , "xNome" , Emi->RAZAO ) // Razão Social oNFe:SetValue("emit" , "xFant" , Emi->FANTASIA ) // Nome Fantasia oNFe:SetValue("emit" , "xLgr" , Emi->ENDERECO ) // Endereço oNFe:SetValue("emit" , "nro" , Emi->NUMERO ) // Número do Endereço oNFe:SetValue("emit" , "xCpl" , Emi->COMPLEMENT ) // Complemento do Endereço oNFe:SetValue("emit" , "xBairro" , Emi->BAIRRO ) // Bairro oNFe:SetValue("emit" , "cMun" , RetCodMunIBGE(Emi->MUNICIPIO, Emi->ESTADO) ) // Codigo do IBGE do Municipio oNFe:SetValue("emit" , "xMun" , Emi->MUNICIPIO ) // Municipio oNFe:SetValue("emit" , "UF" , Emi->ESTADO ) // Estado oNFe:SetValue("emit" , "CEP" , ClearChar(Emi->CEP,{"-"}) ) // CEP oNFe:SetValue("emit" , "cPais" , RetCodPaisIBGE() ) //Default := Brasil // Código do IBGE do Pais oNFe:SetValue("emit" , "xPais" , "Brasil" ) // Pais oNFe:SetValue("emit" , "fone" , ClearChar(Emi->TELEFONE ,{"(",")","-"," "} ) )// Telefone oNFe:SetValue("emit" , "IE" , ClearChar(Emi->IE ,{".","-"}) ) // Inscrição Estadual //Dados Do destinatario oNFe:SetValue("dest" , "CNPJ" , R_CnpjLienar(Cli->CNPJ_CNPF) ) // CPF ou CNPJ oNFe:SetValue("dest" , "xNome" , Cli->RAZAO ) // Razão Social oNFe:SetValue("dest" , "xFant" , Cli->FANTASIA ) // Nome Fabtasia oNFe:SetValue("dest" , "xLgr" , Cli->ENDERECO ) // Endereço oNFe:SetValue("dest" , "nro" , Cli->NUMERO ) // Numero do Endereço oNFe:SetValue("dest" , "xCpl" , Cli->COMPLEMENT ) // Complemento do Endereço oNFe:SetValue("dest" , "xBairro" , Cli->BAIRRO ) // Bairro oNFe:SetValue("dest" , "cMun" , RetCodMunIBGE(Cli->MUNICIPIO, Cli->ESTADO) ) // Código do IBGE do Municipio oNFe:SetValue("dest" , "xMun" , Cli->MUNICIPIO ) // Municipio oNFe:SetValue("dest" , "UF" , Cli->ESTADO ) // Estado oNFe:SetValue("dest" , "CEP" , ClearChar( Cli->CEP, {"-"}) ) // CEP oNFe:SetValue("dest" , "cPais" , RetCodPaisIBGE()) //Default := Brasil // Código do IBGE do Pais oNFe:SetValue("dest" , "xPais" , "Brasil" ) // Pais oNFe:SetValue("dest" , "fone" , ClearChar(Cli->TELEFONE ,{"-","(",")"," "}) ) // Telefone oNFe:SetValue("dest" , "IE" , ClearChar(Cli->IE ,{".","-"} ) ) // Inscrição Estadual oNFe:SetValue("dest" , "ISUF" , Cli->SUFRAMA ) // Inscrição Suframa // Carrega Itens da NFe LoadItens( oNFe ) // Totais da NF oNFe:SetValue("total" , "vBC" , Dnf->BASE_ICMS ) // Base de Cálculo do ICMS oNFe:SetValue("total" , "vICMS" , Dnf->TOTAL_ICMS ) // Valor do ICMS oNFe:SetValue("total" , "vBCST" , Dnf->B_ICMS_ST ) // Base de Cálculo do ICMS Substituição oNFe:SetValue("total" , "vST" , Dnf->V_ICMS_ST ) // Valor do ICMS Substituição oNFe:SetValue("total" , "vProd" , Dnf->TOTAL_PROD ) // Valor Total dos Produtos oNFe:SetValue("total" , "vFrete" , Dnf->VLR_FRETE ) // Valor do Frete oNFe:SetValue("total" , "vSeg" , Dnf->VLR_SEGURO ) // Valor do Seguro oNFe:SetValue("total" , "vDesc" , Dnf->V_DESCONTO ) // Desconto oNFe:SetValue("total" , "vII" , Dnf->VLR_IMP_I ) // Valor Isento oNFe:SetValue("total" , "vIPI" , Dnf->TOTAL_IPI ) // Valor do IPI oNFe:SetValue("total" , "vPIS" , Dnf->VLR_PIS ) // Valor do PIS oNFe:SetValue("total" , "vCOFINS" , Dnf->VLR_COFINS ) // Valor do COFINS oNFe:SetValue("total" , "vOutro" , Dnf->OUTRA_DESP ) // Outras Despesas oNFe:SetValue("total" , "vNF" , Dnf->TOTAL_NOTA ) // Total da Nota // Totais da NF - Transportadora oNFe:SetValue("transp", 'modFrete', Dnf->TIPOFRETE ) // 0-Emitente; 1=Destinatario oNFe:SetValue("transp", 'CNPJ' , R_CnpjLienar( Tra->CNPJ_CNPF ) ) // CNPJ ou CPF da Transportadora oNFe:SetValue("transp", 'xNome' , Tra->RAZAO ) // Razão Social da Transportadora oNFe:SetValue("transp", 'IE' , alltrim(clearChar(Tra->IE,{".","-"} ) ) ) // Inscrição Estadual oNFe:SetValue("transp", 'xEnder' , Tra->ENDERECO) // Endereço oNFe:SetValue("transp", 'xMun' , Tra->MUNICIPIO) // Municipio oNFe:SetValue("veicTransp", 'UF' , Tra->ESTADO) // Estado da Transportadora oNFe:SetValue("transp", "qVol" , Tra->qvol ) // Quantidade oNFe:SetValue("transp", "esp" , Tra->esp ) // Especie oNFe:SetValue("transp", "marca", Tra->marca ) // Marca oNFe:SetValue("transp", "nVol" , Tra->nvol ) // Numeração oNFe:SetValue("transp", "pesoB", Tra->pesob ) // Peso Bruto oNFe:SetValue("transp", "pesoL", Tra->pesol ) // Peso liquido oNFe:setValue( "transp", "placa", clearChar(Tra->PLACA,{".","-"} ) ) oNFe:setValue( "transp", "UF", Tra->PLACAUF ) //Carrega Duplicatas LoadDuplicatas( oNFe ) // Rodapé - Informações Adicionais oNFe:SetValue("infAdic", 'infCpl' , Dnf->INFOR_ADIC ) // Informações Adicionais oNFe:SetValue("compra", 'xPed' , 0) //0-Emitente; 1=Destinatario if ! oNFe:ValidarStru() return( .f. ) Endif cDocXml := "" if oNFe:GerarXml( @cDocXml ) // faz validação e envio do do XML para Sefaz cXmlAssinado:="" EnviaSefaz(cDocXml,cTpAmb,,oNFe:cChvAcesso,@cXmlAssinado) oNFe:SaveXml(,cXmlAssinado, 2 ) Endif return( .t. ) //----------------------------------------------------------------------------// //Rotina usada para enviar para Sefaz a NFe Function EnviaSefaz(cDocXml,cTipoAmbiente,oNfeUtil,cChaveAcesso,cXmlAssinado) cCertificado := GetPvProfString( "CONFIGURACAO", "CERTIFICADO", "", "VoNfeCertSign.Ini") If oNfeUtil==Nil oNFeUtil := TVoNFeUtil():New(cEstadoEmitenteNFe, cTipoAmbiente, cCertificado,,,,,.t.) Endif if oNFeUtil == Nil return( .f. ) Endif If Empty(oNFEUtil:cCertificado) MsgInfo("Informe um certificado Valido!","VO Informatica informa") oNfeUtil:End() Return( .f. ) Endif WritePProString( "CONFIGURACAO", "CERTIFICADO", oNFeUtil:cCertificado, "VoNfeCertSign.Ini" ) // Faz validação para NFe if oNFeUtil:ValidaXml(cDocXml, 1) != 0 oNfeUtil:End() return( .f. ) Endif cXmlAssinado := "" cRecibo := "" if oNFeUtil:EnviaNFe( cDocXml, @cXmlAssinado, @cRecibo ) > 100 If lExecPrompt // Devolve retorno para execução em prompt MemoWrit("EnviaNFe.RET","EXEC:"+cPromptInforma+CRLF+"STATUS:Enviado"+CRLF+"CHAVE:"+cChaveAcesso+; CRLF+"RECIBO:"+cRecibo+CRLF+"DATA:"+oNFeUtil:Recebimento) Else // guarde estas informações em banco de dados ? cChaveAcesso,cRecibo,oNFeUtil:Recebimento Endif Endif oNfeUtil:End() Return( .t. ) //----------------------------------------------------------------------------// //Rotina usada para gerar os itens do XML de envio Function LoadItens( oNFe ) local cString := "" local nItem := 0 // Classe responsável pelos Calculos // Esta classe não calcula dos tipos de impostos, pode ser incluído ou modificado conforme sua necessidade oImposto := TVOImposto():new() // Monta CodeBlock para carregas as propriedade automáticamente // Todo este código pode ser modificado, lembrando que apenas o método oNFe:AddItem() que vai gerar as TAGS // O exemplo pega as informações dos Itens da Nota Fiscal, porem, isto pode ser modificado pra pegar // diretamente do Cadastro de produtos, porem, eu guardo no itens, para guardar todo calculo do passado. bLoad := {|x| x:nValor := nValor,; // Valor do Item vendido x:nIcms := Ite->ICMS,; // Percentual do ICMS x:nIpi := Ite->IPI ,; // Percentual do IPI x:nTxRdIcms := Ite->TX_RD_ICMS,; // Percentual Taxa de Redução de ICMS x:nIVA := Ite->IVA_ST,; // Percentual do IVA x:nPis := Ite->PIS,; // Percentual do PIS x:nCofins := Ite->COFINS,; // Percentual do COFINS x:lSomarIpiABaseDeIcms := Ite->B_ICMS_IPI } // Se deve somar IPI Base de ICMS oImposto:bLoad := bLoad Ite->( dbGotop() ) while( !Ite->(eof()) ) cCFiscal := ClearChar( Ite->C_FISCAL,{"."} ) // NCM - Classificação Fiscal cCFop := ClearChar(Ite->CFOP, {"."} ) //CFOP nValor := Ite->QUANTIDADE *Ite->UNITARIO //Valor total do Item // Vai calcular os impostos na classe TVoImposto oImposto:Calcular(.t.) oItem := TVoNFeProd() WITH OBJECT oItem :cProd := Ite->PRODUTO // Código do Produto :cEAN := Ite->C_EAN13 // Código de Barra EAN13 (13 caracteres) :xProd := Ite->DESCRICAO // Descrição do Produto :NCM := cCFiscal // Código da NCM :EXTIPI := Ite->EX_IPI // Código da EX da TIPI :genero := left(cCFiscal,2) // Parte do Código da NCM :CFOP := cCFOP // Código Fiscal de Operação do Item :uCom := Ite->UNIDADE // Unidade do Item :qCom := Ite->QUANTIDADE // Quantidade vendida do Item :vUnCom := Ite->UNITARIO // Valor Unitário do Item :vProd := nValor // Valor Total do Item :cEANTrib := produtos->C_EAN13 // Código de Barra EAN13 do Produto Tributado :uTrib := Ite->UNIDADE // Unidade Trubutado :qTrib := Ite->QUANTIDADE // Quantidade Tributada :vUnTrib := Ite->UNITARIO // Valor Unitário Tributado :vFrete := 0 // Valor do Frete :vSeg := 0 // Valor do Seguro :vDesc := 0 // Valor do Desconto // Especifico de Medicamentos // Caso você tenha cliente com controle de lote de medicamentos, precisa passar // estas informações /*:nLote := item_rec->LOTE_FORNC // Número do lote do medicamento :qLote := (::cDBItens)->QUANTIDADE // Quantidade de produto no lote de medicamentos :dFab := dFabricacao // Data de Fabricação :dVal := dValidade // Data da Validade :vPMC := nPMC // Preço máximo consumidor */ :orig := left(ite->SIT_TRIB,1) // Origem do produto (0 - Nacional 1 - Estrangeira Importação direta 2-Estrangeira Adquirida no Mercado interno) :cCST := right(Ite->SIT_TRIB,2) // Código da Situação Tributária :ModBC := Ite->MOD_B_ICMS // Modalidade de determinação da BC do ICMS ( 0 - Margem Valor Agregado 1-Pauta (Valor) 2 = Preço Tabelado Máx. (valor) 3 -Valor da Operação ) :pRedBC := oImposto:nTxRdIcms // Taxa de Redução de BC do ICMS :vBC := oImposto:nBIcms // Valor da da BC do ICMS :pIcms := oImposto:nIcms // Aliquota do ICMS :vIcms := oImposto:nVlrIcms // Valor do ICMS sobre o item :cST_IPI := Ite->S_T_IPI // Código da situação tributária do IPI (00 - Entrada com recuperação de crédito 49 - Outras Entradas 50-Saida tributada 99-Outras saidas :vBcIPI := oImposto:nBIpi // valor da Base de calculo do IPI :pIPI := oImposto:nIPI // Aliquota IPI :vIPI := oImposto:nVlrIPI // Valor do IPI //:cIEnq := "" // classe de enquadramento do IPI para cigarros e bebidas //:CNPJProd := "00000000000000" // CNPJ do Produtor da Mercadoria, quando diferente do emitente, somente para os casos de exportação direta ou indireta //:cSelo := "" //:qSelo := "" :cEnq := "999" :ModBCST := Ite->MOD_B_I_ST // Modalidade de determinação da BC do ICMS ST ( 0 - Preço tabelado ou máximo sugerido 1-Lista negativa(valor) 2- Lista Positiva(valor) 3-Lista Neutra(Valor), 4-Margem Valor Agregado(%) 5-Pauta(Valor)) :pMVAST := oImposto:nIva // Percentual da margem de valor :pRedBCST := 0 // Percentual da Redução de BC do ICMS ST :vBCST := oImposto:nBIcmsST // Base de Calculo do ICMS ST :pICMSST := oImposto:nIcms // Aliquota do imposto do ICMS ST :vICMSST := oImposto:nVlrIcmsST // Valor do ICMS ST :CST_Pis := Ite->S_T_PIS // Código de situação tributária do PIS ( 01 - Operação Tributavel (Base de Cálculo = Valor da operação. Aliquota normal (cumulativo/não cumulativo)) 02 - Operação tributável (base de cálculo=valor da operação(alíquota diferenciada)) :vBC_Pis := oImposto:nBPis // Valor da Base de Cálculo do PIS :pPIS := oImposto:nPis // Alíquita do PIS (percentual) :vPIS := oImposto:nVlrPis // Valor do PIS :CST_Cofins := Ite->S_T_COFINS // Código de Situação tributária do COFINS ( 99 - Outras Operações ) :vBC_Cofins := oImposto:nBCofins // Base de Cálculo da CONFINS :pCofins := oImposto:nCofins // Aliquota da CONFINS :vCofins := oImposto:nVlrCofins // Valor da COFINS END oNFe:AddItem( oItem ) Ite->( dbSkip() ) Enddo Return(nil) //----------------------------------------------------------------------------// //Rotina usada para gerar as duplicatas do XML de envio Function LoadDuplicatas( oNFe ) local cString := "" local nItem := 0 Dupl->( dbGotop() ) while( !Dupl->(eof()) ) oItem := TVoNFeDupl() WITH OBJECT oItem //Faturas :nFat := Dupl->Numero :vOrig := Dupl->Valor :vLiq := Dupl->Valor //Duplicatas :nDup := Dupl->Numero // Numero da Duplicata :dVenc := Dupl->Vencimento // Data de vencimento :vDup := Dupl->Valor // Valor Duplicata END oNFe:AddItem( oItem ) (Dupl)->( dbSkip() ) Enddo Return(nil) Quote Link to comment Share on other sites More sharing options...
syspel Posted February 6, 2017 Author Report Share Posted February 6, 2017 obrigado vou tester e depois te informo ailton Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.