Jump to content
Fivewin Brasil

trufelli

Membros
  • Posts

    34
  • Joined

  • Last visited

  • Days Won

    2

trufelli last won the day on September 20 2015

trufelli had the most liked content!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

trufelli's Achievements

  1. Bom dia a todos, Retificando : a impressora é Argox 214 plus. Alguém usa esse tipo de impressora ou a linguagem PPLA ? Obrigado Antenor
  2. Bom dia pessoal Retomando esse assunto, preciso imprimir uma imagem em impressora de etiquetas Argox 204 Plus, alguém poderia me ajudar, com algum exemplo ? Estou usando PPLA e nos exemplos acima não tem como inserir imagem. Já tentei usando os comandos informados no manual do PPLA mas não imprime de jeito nenhum. Obrigado
  3. Eu fiz isso, mas não deu certo, porque o AIns não tem esse terceiro parâmetro, mas graças a essa dica consegui "enxergar" o problema. Existe o HB_AIns, esse sim tem 4 parâmetros e um deles é justamente o .T. para incrementar um novo vetor hb_AIns( <aArray>, [<nPos>], [<xValue>], [<lAutoSize>] ) → aArray Obrigado
  4. O problema era no AINS, porque ao usar essa função o último vetor é eliminado, portanto, precisa ser utilizado o ASIZE ou AADD para incluir um novo vetor no final do array. Exemplo : aArray := { 1, 2, 3 } // Resulta: aArray { 1, 2, 3 } AINS(aArray, 2) // Resulta: aArray { 1, NIL, 2 } Alterei o Metodo AddItem METHOD AddItem( oItem ) CLASS TVoNFe2G local cID, axArray := {},nPos If oItem:Classname=="TVONFEPROD" cID := 'nItem="'+alltrim(str(len(::axItems)+1) ) +'"' aadd(::axItems, {cId,{} } ) aadd(::axItems[len(::axItems),2], {"prod" , ::StruProduto(oItem), 1 } ) aadd(::axItems[len(::axItems),2], {"imposto" , ::StruImpostos(oItem), 1 } ) aadd(::axItems[len(::axItems),2], {"infAdProd", TVoNFeItem():New("C", 0, 1,500,,,oItem:infAdProd )} ) ElseIf oItem:ClassName=="TVONFEREFNF" nPos:=ascan(::axNodes, {|x| x[1]=="ide" } ) if nPos!=0 Do Case Case ::nTipoRef==1 AAdd(::axNodes[nPos,2],{"NFref" , ::SetRefNfe(oItem) }) Case ::nTipoRef==2 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNF(oItem) }) Case ::nTipoRef==3 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefECF(oItem) }) Case ::nTipoRef==4 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNFP(oItem) }) EndCase Endif ElseIf oItem:ClassName=="TVONFECOBR" //if ::cModeloDoc == "55" nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos==0 nPos:=ascan(::axNodes, {|x| x[1]=="transp" } ) ASize(::axNodes, Len( ::axNodes ) + 1 ) Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={"cobr" , {},0 } nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos!=0 aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) Endif Endif if nPos!=0 //aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) aadd(::axNodes[nPos,2], {"dup" , ::StruDuplicata(oItem) } ) Endif ElseIf oItem:ClassName=="TVONFEPAG" // pag nPos:=ascan(::axNodes, {|x| x[1]=="pag" } ) if nPos==0 nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos==0 nPos:=ascan(::axNodes, {|x| x[1]=="transp" } ) Endif ASize(::axNodes, Len( ::axNodes ) + 1 ) Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={ "pag", {}, 0 } nPos:=ascan(::axNodes, {|x| x[1]=="pag" } ) Endif if nPos!=0 aadd(::axNodes[nPos,2], {"detPag" , ::StruDetPag(oItem) } ) aadd(::axNodes[nPos,2], {"vTroco", TVoNFeItem():new("N", 0, 1,15, 02,,oItem:vTroco ) } ) Endif Endif Return( Nil ) Obrigado a todos.
  5. Oi Boa Tarde GIlmer, coloquei como voce sugeriu, mas continua não gerando as tags corretamente. O estranho é que se colocar antes "exporta" e depois "infCpl" o XML gera com a tag "exporta" sem a tag "infCpl" // para exportacao If NfSaida->desUF == "EX" oNFe:SetValue("exporta", 'UFSaidaPais' , NfSaida->UFEmbarq ) // Estado de embarque oNFe:SetValue("exporta", 'xLocExporta' , NfSaida->LocEmbarq ) // Local de embarque oNFe:SetValue("exporta", 'xLocDespacho', NfSaida->LocDespach ) // Local de despacho (Informação do Recinto Alfandegado) Endif // Rodapé - Informações Adicionais oNFe:SetValue("infAdic", 'infCpl' , cInfCpl ) // Informações Adicionais XML : <cobr> <fat> <nFat>125837</nFat> <vOrig>57051.60</vOrig> <vDesc>0.00</vDesc> <vLiq>57051.60</vLiq> </fat> <dup> <nDup>001</nDup> <dVenc>2018-08-13</dVenc> <vDup>57051.60</vDup> </dup> </cobr> <pag> <detPag> <indPag>0</indPag> <tPag>99</tPag> <vPag>57051.60</vPag> </detPag> </pag> <infAdic> <infCpl>INCOTERM EX-WORKS (EXW);PEDIDO : 036708, 037112</infCpl> </infAdic> </infNFe> </NFe> Mas se coloca antes "infCpl" depois "exporta" o XML gera com a tag ""infCpl"" sem a tag "exporta" // para exportacao If NfSaida->desUF == "EX" oNFe:SetValue("exporta", 'UFSaidaPais' , NfSaida->UFEmbarq ) // Estado de embarque oNFe:SetValue("exporta", 'xLocExporta' , NfSaida->LocEmbarq ) // Local de embarque oNFe:SetValue("exporta", 'xLocDespacho', NfSaida->LocDespach ) // Local de despacho (Informação do Recinto Alfandegado) Endif // Rodapé - Informações Adicionais oNFe:SetValue("infAdic", 'infCpl' , cInfCpl ) // Informações Adicionais XML -<cobr> -<fat> <nFat>125837</nFat> <vOrig>57051.60</vOrig> <vDesc>0.00</vDesc> <vLiq>57051.60</vLiq> </fat> -<dup> <nDup>001</nDup> <dVenc>2018-08-13</dVenc> <vDup>57051.60</vDup> </dup> </cobr> -<pag> -<detPag> <indPag>0</indPag> <tPag>99</tPag> <vPag>57051.60</vPag> </detPag> </pag> -<exporta> <UFSaidaPais>SP</UFSaidaPais> <xLocExporta>Sao Paulo - Brasil</xLocExporta> </exporta> </infNFe> </NFe> Valdir Quanto aos breaks eu já havia feito isso, está passando normal e com os dados corretos. Realmente está muito estranho Obrigado às respostas,
  6. Só para complementar, segue abaixo novamente os métodos e as funcoes utilizadas, o que pode estar faltando ? //VoNFe2G_V4.Prg /***************************************************************************/ /* Método Construtor */ /* Programador: Gilmer Tavares */ /* Data: 11-11-2010 */ /***************************************************************************/ METHOD New(cPathNFe,nTipoRef,cModeloDoc) CLASS TVoNFe2G Local nPos #IFDEF __DOS__ DEFAULT cPathNFe:=CurDir(CurDrive()) #ELSE DEFAULT cPathNFe:=curdrive()+":\"+GetCurDir() #ENDIF Default nTipoRef:=1,cModeloDoc:="55" ::cModeloDoc := cModeloDoc ::axItems := {} ::axNodes := {} ::cPathNFe:=cPathNFe ::nTipoRef:=nTipoRef //Identificação da Nota Fiscal Eletronica(NFe) aadd(::axNodes, {"ide" , {} } );nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"cUF" , TVoNFeItem():New("C",1, 2, ) } ) aadd(::axNodes[ nPos ][2], {"cNF" , TVoNFeItem():New("N",1, 9, ) } ) aadd(::axNodes[ nPos ][2], {"natOp" , TVoNFeItem():New("C",1, 1, 60) } ) aadd(::axNodes[ nPos ][2], {"indPag" , TVoNFeItem():New("N",1, 1, ) } ) aadd(::axNodes[ nPos ][2], {"mod" , TVoNFeItem():New("C",1, 2, ) } ) aadd(::axNodes[ nPos ][2], {"serie" , TVoNFeItem():New("N",1, 1,3 ) } ) aadd(::axNodes[ nPos ][2], {"nNF" , TVoNFeItem():New("N",1, 1,9 ) } ) aadd(::axNodes[ nPos ][2], {"dhEmi" , TVoNFeItem():New("C",1, 23 ) } ) aadd(::axNodes[ nPos ][2], {"dhSaiEnt",TVoNFeItem():New("C",0, 23 ) } ) aadd(::axNodes[ nPos ][2], {"tpNF" , TVoNFeItem():New("N",1, 1 ) } ) aadd(::axNodes[ nPos ][2], {"idDest" , TVoNFeItem():New("N",1, 1 ) } ) aadd(::axNodes[ nPos ][2], {"cMunFG" , TVoNFeItem():New("N",1, 7 ) } ) aadd(::axNodes[ nPos ][2], {"tpImp" , TVoNFeItem():New("N",1, 1 ) } ) aadd(::axNodes[ nPos ][2], {"tpEmis" , TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"cDV" , TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"tpAmb" , TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"finNFe" , TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"indFinal", TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"indPres" , TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"procEmi", TVoNFeItem():New("N",1,1 ) } ) aadd(::axNodes[ nPos ][2], {"verProc", TVoNFeItem():New("C",1,1,20 ) } ) aadd(::axNodes[ nPos ][2], {"dhCont" , TVoNfeItem():New("C",0,1,19 ) } ) aadd(::axNodes[ nPos ][2], {"xJust" , TVoNfeItem():New("C",0,1,256 ) } ) //Identificação do Emitente aadd(::axNodes, {"emit" , {} } );nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"CNPJ" , TVoNFeItem():New("C", 1, 14,,,{|| empty(::GetValueII("emit","CPF","") ) } ) } ) aadd(::axNodes[ nPos ][2], {"CPF" , TVoNFeItem():New("C", 1, 11,,,{|| empty(::GetValueII("emit","CNPJ","") ) } ) } ) aadd(::axNodes[ nPos ][2], {"xNome" , TVoNFeItem():New("C", 1, 1,60 ) } ) aadd(::axNodes[ nPos ][2], {"xFant" , TVoNFeItem():New("C", 0, 1,60 ) } ) aadd(::axNodes[ nPos ][2], {"enderEmit", ::StruEndereco() , 1 } ) aadd(::axNodes[ nPos ][2], {"IE" , TVoNFeItem():New("C", 1, 0,14 ) } ) aadd(::axNodes[ nPos ][2], {"IEST" , TVoNFeItem():New("C", 0, 2,14 ) } ) aadd(::axNodes[ nPos ][2], {"IM" , TVoNFeItem():New("C", 0, 1,15 ) } ) aadd(::axNodes[ nPos ][2], {"CNAE" , TVoNFeItem():New("C", 0, 7,07 ) } ) aadd(::axNodes[ nPos ][2], {"CRT" , TVoNfeItem():New("1", 1, 1 ) } ) //Identificação do Destinatario aadd(::axNodes, {"dest" , {} } );nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"CNPJ" , TVoNFeItem():New("C", 1, 14,,,{|| empty(::GetValueII("dest","CPF","") ) } ) } ) aadd(::axNodes[ nPos ][2], {"CPF" , TVoNFeItem():New("C", 1, 11,,,{|| empty(::GetValueII("dest","CNPJ","") ) } ) } ) aadd(::axNodes[ nPos ][2], {"idEstrangeiro", TVoNFeItem():New("C", 0, 0,20 ) } ) aadd(::axNodes[ nPos ][2], {"xNome" , TVoNFeItem():New("C", 1, 1,60 ) } ) aadd(::axNodes[ nPos ][2], {"enderDest", ::StruEndereco(), 1 } ) aadd(::axNodes[ nPos ][2], {"indIEDest", TVoNFeItem():New("C", 1, 1 ) } ) aadd(::axNodes[ nPos ][2], {"IE" , TVoNFeItem():New("C", 0, 0,14,, ) } ) aadd(::axNodes[ nPos ][2], {"ISUF" , TVoNFeItem():New("C", 0, 1,09 ) } ) aadd(::axNodes[ nPos ][2], {"email" , TVoNFeItem():New("C", 0, 1,60 ) } ) // Autorização aadd(::axNodes, {"autXML" , ::StruAutXML(), 0 } ) //Endereço de Retirada aadd(::axNodes, {"retirada" , ::StruEnd(), 0 } ) //Endereço de Entrega aadd(::axNodes, {"entrega" , ::StruEnd(), 0 } ) //Detalhamento de Produtos da NFe aadd(::axNodes, {"det" , {}, 999 } ); nPos := len(::axNodes) //Totais aadd(::axNodes, {"total" , {} } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"ICMSTot" , ::StruTotIcms() } ) aadd(::axNodes[ nPos ][2], {"ISSQNtot", ::StruISS() } ) aadd(::axNodes[ nPos ][2], {"retTrib" , ::StruRetencoes() } ) aadd(::axNodes, {"transp" , {} } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"modFrete" , TVoNFeItem():New("N", 1, 1,1, ) } ) aadd(::axNodes[ nPos ][2], {"transporta", ::StruTransport() , 0 } ) aadd(::axNodes[ nPos ][2], {"retTransp" , ::StruRetTransp() , 0 } ) aadd(::axNodes[ nPos ][2], {"veicTransp", ::StruveicTransp(), 0 } ) aadd(::axNodes[ nPos ][2], {"reboque" , ::StruVeicTransp(), 0 } ) aadd(::axNodes[ nPos ][2], {"vol" , ::StruVolume() , 0 } ) // If ::cModeloDoc=="55" // aadd(::axNodes, {"cobr" , {},0 } ); nPos := len(::axNodes) //aadd(::axNodes[ nPos ][2], {"fat" , ::StruFatura() } ) //aadd(::axNodes[ nPos ][2], {"dup" , ::StruDuplicata() } ) // aadd(::axNodes[ nPos ][2], {"fat" , {} } ) // aadd(::axNodes[ nPos ][2], {"dup" , {} } ) //Else // aadd( ::axNodes, { "pag", {}, 0 } ); nPos := len( ::axNodes ) //Endif //Dados Adcionais aadd(::axNodes, {"infAdic", {}, 0 } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"infAdFisco" , TVoNFeItem():New("C", 0, 1, 2000 ) } ) aadd(::axNodes[ nPos ][2], {"infCpl" , TVoNFeItem():New("C", 0, 1, 5000 ) } ) //Comercio Exterior aadd(::axNodes, {"exporta", {}, 0 } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"UFSaidaPais" , TVoNFeItem():New("C", 1, 2,2 ) } ) aadd(::axNodes[ nPos ][2], {"xLocExporta", TVoNFeItem():New("C", 1, 1,60 ) } ) aadd(::axNodes[ nPos ][2], {"xLocDespacho", TVoNFeItem():New("C", 0, 1,60 ) } ) //Informaçóes de compras aadd(::axNodes, {"compra", {}, 0 } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"xNEmp", TVoNFeItem():New("C", 0, 1, 17, ) } ) aadd(::axNodes[ nPos ][2], {"xPed" , TVoNFeItem():New("C", 0, 1, 60, ) } ) aadd(::axNodes[ nPos ][2], {"xCont", TVoNFeItem():New("C", 0, 1, 60, ) } ) RETURN( Self ) METHOD AddItem( oItem ) CLASS TVoNFe2G local cID, axArray := {},nPos If oItem:Classname=="TVONFEPROD" cID := 'nItem="' + alltrim(str(len(::axItems)+1) ) + '"' aadd(::axItems, {cId,{} } ) aadd(::axItems[len(::axItems),2], {"prod" , ::StruProduto(oItem) , 1 } ) aadd(::axItems[len(::axItems),2], {"imposto" , ::StruImpostos(oItem), 1 } ) aadd(::axItems[len(::axItems),2], {"infAdProd", TVoNFeItem():New("C", 0, 1,500,,,oItem:infAdProd )} ) ElseIf oItem:ClassName=="TVONFEREFNF" nPos:=ascan(::axNodes, {|x| x[1]=="ide" } ) if nPos!=0 Do Case Case ::nTipoRef==1 AAdd(::axNodes[nPos,2],{"NFref" , ::SetRefNfe(oItem) }) Case ::nTipoRef==2 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNF(oItem) }) Case ::nTipoRef==3 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefECF(oItem) }) Case ::nTipoRef==4 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNFP(oItem) }) EndCase Endif ElseIf oItem:ClassName=="TVONFECOBR" //if ::cModeloDoc == "55" nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos==0 nPos:=ascan(::axNodes, {|x| x[1]=="transp" } ) Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={"cobr" , {},0 } nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos!=0 aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) Endif Endif if nPos!=0 //aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) aadd(::axNodes[nPos,2], {"dup" , ::StruDuplicata(oItem) } ) Endif ElseIf oItem:ClassName=="TVONFEPAG" // pag nPos := ascan(::axNodes, {|x| x[1] == "pag" } ) if nPos == 0 nPos := ascan(::axNodes, {|x| x[1] == "cobr" } ) if nPos==0 nPos := ascan(::axNodes, {|x| x[1] == "transp" } ) Endif Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={"pag", {}, 0 } nPos := ascan(::axNodes, {|x| x[1] == "pag" } ) Endif if nPos != 0 aadd(::axNodes[nPos,2], {"detPag", ::StruDetPag(oItem) } ) aadd(::axNodes[nPos,2], {"vTroco", TVoNFeItem():new("N", 0, 1,15, 02,,oItem:vTroco ) } ) Endif Endif Return( Nil ) // Meu prg /********************************************************* * Função : CriacaoDoXml() - **********************************************************/ Static Function CriacaoDoXml(cDirPadrao,nTipoRefe,cModeloDoc,cNossaNota,lDuplicat) Local lPodeTentarMandar := .T. //Criação do XML oNFe := TVoNFe2G():New(cDirPadrao,nTipoRefe,cModeloDoc) //cabeçalho da Nota oNFe:SetValue("ide", 'cUF' , cIdecUF) // 2 Digitos ... // Totais da NF - Transportadora oNFe:SetValue("transp", 'modFrete' , NfSaida->tramodFret ) // 0-Emitente; 1=Destinatario If Val(NfSaida->TraCnpj) != 0 oNFe:SetValue("transp", Iif(Len(AllTrim(SoNumeros(NfSaida->traCNPJ)))<=11,"CPF","CNPJ"), SoNumeros(NfSaida->traCNPJ) ) // CNPJ ou CPF da Transportadora oNFe:SetValue("transp", 'xNome' , NfSaida->traxNome ) // Razão Social da Transportadora oNFe:SetValue("transp", 'IE' , Iif(Len(AllTrim(SoNumeros(NfSaida->traCNPJ)))<=11,"ISENTO",ClearChar(NfSaida->traIE,{".","-"," ","/"} ))) // Inscrição Estadual oNFe:SetValue("transp", 'xEnder' , NfSaida->traxEnder) // Endereço oNFe:SetValue("transp", 'xMun' , NfSaida->traxMun) // Municipio oNFe:setValue("transp", "UF" , NfSaida->TraUF ) Endif If NfSaida->TraqVol != 0 oNFe:SetValue("transp", "qVol" , NfSaida->traqVol ) // Quantidade oNFe:SetValue("transp", "esp" , NfSaida->traesp ) // Especie oNFe:SetValue("transp", "marca" , NfSaida->tramarca ) // Marca oNFe:SetValue("transp", "nVol" , NfSaida->tranVol ) // Numeração Endif oNFe:SetValue("transp", "pesoB" , NfSaida->trapesoB ) // Peso Bruto oNFe:SetValue("transp", "pesoL" , NfSaida->trapesoL ) // Peso liquido If !Empty(ClearChar(NfSaida->traplaca,{".","-"} )) oNFe:setValue("transp", "placa" , ClearChar(NfSaida->traplaca,{".","-"} ) ) oNFe:SetValue("veicTransp", 'UF' , NfSaida->VeiUF) // Estado da Transportadora Endif // para exportacao If NfSaida->desUF == "EX" oNFe:SetValue("exporta", 'UFSaidaPais' , NfSaida->UFEmbarq ) // Estado de embarque oNFe:SetValue("exporta", 'xLocExporta' , NfSaida->LocEmbarq ) // Local de embarque oNFe:SetValue("exporta", 'xLocDespacho', NfSaida->LocDespach ) // Local de despacho (Informação do Recinto Alfandegado) Endif // Rodapé - Informações Adicionais oNFe:SetValue("infAdic", 'infCpl' , cInfCpl ) // Informações Adicionais // compras oNFe:SetValue("compra", 'xNEmp', Space(17)) //Identificação da Nota de Empenho, quando se tratar de compras públicas oNFe:SetValue("compra", 'xPed' , Space(60)) //Informar o pedido. oNFe:SetValue("compra", 'xCont', Space(60)) //Informar o contrato de compra // informações de pagamento para a versao 4.00 // (por enquanto está somente como pagamento 99-outros) LoadPagamentos(oNfe) //Carrega Duplicatas If lTemDuplicata LoadDuplicatas(oNFe) Endif Return (oNFe) /********************************************************* * Função : LoadPagamentos() - Carrega os pagamentos **********************************************************/ Static Function LoadPagamentos(oNFe) oItem := TVoNFePag() WITH OBJECT oItem // pagamentos :indPag := NfSaida->pagindPag // indicador da forma de pagamento :tPag := NfSaida->pagtPag // meio de pagamento :vPag := NfSaida->pagvPag // Valor do pagamento // para uso com cartao de credito :tpIntegra := NfSaida->pagTpInteg // 1-integrado com sistema, 2-nao integrado com sistema // essas 3 colunas ou informa todas ou nao informa nenhuma :CNPJ_Opc := NfSaida->pagCnpj // CNPJ da credenciadora :tBand_Opc := NfSaida->pagtBand // tipo de bandeira :cAut_Opc := NfSaida->pagcAut // numero da autorizacao :vTroco := NfSaida->pagvTroco // valor do troco END oNFe:AddItem( oItem ) Return (Nil) /********************************************************* * Função : LoadDuplicatas() - Carrega as Duplicatas da nota no XML **********************************************************/ Static Func LoadDuplicatas(oNFe) Local oItem Local nFatu := 0 Local nDupl := 0 Duplicatas->( DbGotop() ) Do Whil( !Duplicatas->(eof()) ) oItem := TVoNfeCobr() WITH OBJECT oItem //Faturas If nFatu == 0 :nFat := Duplicatas->FatNumero :vOrig := Duplicatas->FatValor :vDesc := 0.00 :vLiq := Duplicatas->FatValor nFatu++ Endif //Duplicatas nDupl++ :nDup := StrZero(nDupl,3) //Duplicatas->DupNumero // Numero da Duplicata :dVenc := Duplicatas->DupVencim // Data de vencimento :vDup := Duplicatas->DupValor // Valor Duplicata END oNFe:AddItem( oItem ) // LoadDuplicatas() Duplicatas->( DbSkip() ) Enddo Return (Nil)
  7. Gilmer, poderia nos auxiliar Tem algo a mais ou a menos na classe que nao está deixando gerar as tags corretamente. Obrigado
  8. é verdade, estava diferente mesmo, porém testei e o resultado foi o mesmo, nao gerou todas as tags
  9. Estou usando uma do dia 16/07 segue anexo vonfeutil2g_v4_3.zip
  10. pois é, ja fiz de tudo, tenta colocar nessa sequencia que nao vai dar o erro que voce comentou, justamente colocando antes da o erro.
  11. Só quis mostrar como é a sequencia que utilizo. Por exemplo : se eu comentar somente a chamada da funcao LoadDuplicatas(), o XML é gerado com as tags "infAdic", "pag" (obtida pela LoadPagamentos) e "exporta" se eu comentar somente a chamada da funcao LoadPagamentos(), o XML é gerado com as tags "infAdic", "cobr" (obtida pela LoadDuplicatas) e "exporta" se eu deixo do jeito que mostrei a sequencia sem comentar nada, o XML é gerado com as tags "infAdic", "cobr" (obtida pela LoadDuplicatas) e "pag" (obtida pela LoadPagamentos) e não gera a tag "exporta"
  12. continuando, a sequencia que eu uso é : ... oNFe:SetValue("infAdic", 'infCpl' , cInfCpl ) // Informações Adicionais // para exportacao If (cDetalhes)->desUF == "EX" oNFe:SetValue("exporta", 'UFSaidaPais' , (cDetalhes)->UFEmbarq ) // Estado de embarque oNFe:SetValue("exporta", 'xLocExporta' , (cDetalhes)->LocEmbarq ) // Local de embarque oNFe:SetValue("exporta", 'xLocDespacho', (cDetalhes)->LocDespach ) // Local de despacho (Informação do Recinto Alfandegado) Endif // informações de pagamento para a versao 4.00 LoadPagamentos(oNfe) //Carrega Duplicatas If lTemDuplicata LoadDuplicatas(oNFe) Endif Return (oNFe Static Func LoadPagamentos(oNFe) oItem := TVoNFePag() WITH OBJECT oItem // pagamentos :indPag := NfSaida->pagindPag // indicador da forma de pagamento :tPag := NfSaida->pagtPag // meio de pagamento :vPag := NfSaida->pagvPag // Valor do pagamento // para uso com cartao de credito :tpIntegra := NfSaida->pagTpInteg // 1-integrado com sistema, 2-nao integrado com sistema // essas 3 colunas ou informa todas ou nao informa nenhuma :CNPJ_Opc := NfSaida->pagCnpj // CNPJ da credenciadora :tBand_Opc := NfSaida->pagtBand // tipo de bandeira :cAut_Opc := NfSaida->pagcAut // numero da autorizacao :vTroco := NfSaida->pagvTroco // valor do troco END oNFe:AddItem( oItem ) Return (Nil) Static Function LoadDuplicatas(oNFe) Local oItem Local nFatu := 0 nDup := 0 Duplicata->( DbGotop() ) Do Whil( !Duplicata->(eof()) ) oItem := TVoNfeCobr() WITH OBJECT oItem //Faturas If nFatu == 0 :nFat := Duplicata->FatNumero :vOrig := Duplicata->FatValor :vDesc := 0.00 :vLiq := Duplicata->FatValor nFatu++ / Endif //Duplicatas nDup++ :nDup := StrZero(nDup,3) :dVenc := Duplicata->DupVencim // Data de vencimento :vDup := Duplicata->DupValor // Valor Duplicata END oNFe:AddItem( oItem ) Duplicata->( DbSkip() ) Enddo Return (Nil)
  13. eu acho que o erro está aqui, mas não sei dizer o que (???) Se chamar a AddItem enviando a duas classname TVONFECOBR e TVONFEPAG ele nao gera no XML a tag exporta se envia apenas uma delas ai é gerada a tag exporta METHOD AddItem( oItem ) CLASS TVoNFe2G local cID, axArray := {},nPos If oItem:Classname=="TVONFEPROD" cID := 'nItem="' + alltrim(str(len(::axItems)+1) ) + '"' aadd(::axItems, {cId,{} } ) aadd(::axItems[len(::axItems),2], {"prod" , ::StruProduto(oItem) , 1 } ) aadd(::axItems[len(::axItems),2], {"imposto" , ::StruImpostos(oItem), 1 } ) aadd(::axItems[len(::axItems),2], {"infAdProd", TVoNFeItem():New("C", 0, 1,500,,,oItem:infAdProd )} ) ElseIf oItem:ClassName=="TVONFEREFNF" nPos:=ascan(::axNodes, {|x| x[1]=="ide" } ) if nPos!=0 Do Case Case ::nTipoRef==1 AAdd(::axNodes[nPos,2],{"NFref" , ::SetRefNfe(oItem) }) Case ::nTipoRef==2 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNF(oItem) }) Case ::nTipoRef==3 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefECF(oItem) }) Case ::nTipoRef==4 AAdd(::axNodes[nPos,2],{"NFref" , ::SetrefNFP(oItem) }) EndCase Endif ElseIf oItem:ClassName=="TVONFECOBR" //if ::cModeloDoc == "55" nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos==0 nPos:=ascan(::axNodes, {|x| x[1]=="transp" } ) Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={"cobr" , {},0 } nPos:=ascan(::axNodes, {|x| x[1]=="cobr" } ) if nPos!=0 aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) Endif Endif if nPos!=0 //aadd(::axNodes[nPos,2], {"fat" , ::StruFatura(oItem) } ) aadd(::axNodes[nPos,2], {"dup" , ::StruDuplicata(oItem) } ) Endif ElseIf oItem:ClassName=="TVONFEPAG" // pag nPos := ascan(::axNodes, {|x| x[1] == "pag" } ) if nPos == 0 nPos := ascan(::axNodes, {|x| x[1] == "transp" } ) Ains(::axNodes,nPos+1) ::axNodes[nPos+1]:={"pag", {}, 0 } nPos := ascan(::axNodes, {|x| x[1] == "pag" } ) Endif if nPos != 0 aadd(::axNodes[nPos,2], {"detPag", ::StruDetPag(oItem) } ) Endif Endif Return( Nil )
  14. Voce conseguiu resolver Marcelo ?
  15. Enquanto o prg estava igual a versao 3.10 nao criava as tags no XML Ai resolvi trocar a posicao de algumas coisas, ai comecou a dar o erro similar ao seu // para exportacao oNFe:SetValue("exporta", 'UFSaidaPais' , "SP" ) // Estado de embarque oNFe:SetValue("exporta", 'xLocExporta' , "Sao Paulo") // Local de embarque oNFe:SetValue("infAdic", 'infCpl' , cInfCpl ) // Informações Adicionais //Comercio Exterior aadd(::axNodes, {"exporta", {}, 0 } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"UFSaidaPais" , TVoNFeItem():New("C", 1, 2, 2 ) } ) aadd(::axNodes[ nPos ][2], {"xLocExporta" , TVoNFeItem():New("C", 1, 1, 60 ) } ) aadd(::axNodes[ nPos ][2], {"xLocDespacho", TVoNFeItem():New("C", 0, 1, 60 ) } ) //Dados Adicionais aadd(::axNodes, {"infAdic", {}, 0 } ); nPos := len(::axNodes) aadd(::axNodes[ nPos ][2], {"infAdFisco" , TVoNFeItem():New("C", 0, 1, 2000 ) } ) aadd(::axNodes[ nPos ][2], {"infCpl" , TVoNFeItem():New("C", 0, 1, 5000 ) } )
×
×
  • Create New...