Olá pessoal, estou com um problema na rotina automática do ExecAuto MATA140, onde no documento de entrada o item da nota apresenta somente o ultimo item inserido.
Ao executar o MATA140, utilizo um array com os itens que quero lançar. porém como na imagem ele lança somente o ultimo item do array.
a baixo meu fonte.
Agradeço desde já!
User Function PreNotaAuto(oNfeEntity,aQuebraItem)
local nOpc := 3 //Inclusão
local aCab := {}
local nX := 1
local lRet := .T.
local aLinha := {}
local nVlrUnit := 0
local nQtdProd := 0
local nValorTotal := 0
Private lMsErroAuto := .F.
Private oItemNF := Nil
Private oPedido := NFLPurchaseOrderEntity():New()
Private oLote := NFLNFLotesEntity():New()
//CAMPOS CABEÇALHO - GERAR PRÉ-NOTA NFLEGAL
aCab := {{"F1_DOC" , oNfeEntity:getNumDoc() , NIL},;
{"F1_SERIE" , oNfeEntity:getSerie() , NIL},;
{"F1_FORNECE" , oNfeEntity:getFornecedor() , NIL},;
{"F1_LOJA" , oNfeEntity:getLoja() , NIL},;
{"F1_EMISSAO" , oNfeEntity:getXMLDtEmissao() , NIL},;
{"F1_EST" , "SP" , NIL},;
{"F1_TIPO" , "N" , NIL},;
{"F1_DTDIGIT" , dDataBase , NIL},;
{"F1_ESPECIE" , "SPED" , NIL},;
{"F1_CHVNFE" , oNfeEntity:getChave() , ".T."},;
{"F1_FRETE" , 0 , Nil},;
{"F1_RECBMTO" , dDataBase , Nil}}
aItens := {}
//CAMPOS GRID - GERAR PRÉ-NOTA
For nX := 1 to Len(aQuebraItem)
dbSelectArea("SD1")
SD1->(dbSetOrder(1))
oItemNF := aQuebraItem[nX]
nVlrUnit := oItemNF:getXMLVlrUnit()
nQtdProd := oItemNF:getXMLQuant()
nValorTotal := 0
nValorTotal := nVlrUnit * nQtdProd
// Pedido de Compra
oPedido := oItemNF:getPedidos() // Array com os Pedidos
oLote := oItemNF:getLotes() // Array Quebra de Lote
aAdd(aItens,{"D1_ITEM" ,oItemNF:getXMLItem() ,NIL})
aAdd(aItens,{"D1_COD" ,oItemNF:getERPProd() ,NIL})
aAdd(aItens,{"D1_UM" ,oItemNF:getERPUnMed() ,Nil}) //oItemNF:getXMLUnMed()
aAdd(aItens,{"D1_QUANT" ,oItemNF:getXMLQuant() ,Nil})
aAdd(aItens,{"D1_VUNIT" ,oItemNF:getXMLVlrUnit() ,Nil})
//aAdd(aItens,{"D1_TOTAL" ,oItemNF:getXMLVlrTotal() ,Nil})
aAdd(aItens,{"D1_TOTAL" ,nValorTotal ,Nil})
aAdd(aItens,{"D1_VALDESC",0 ,".T."})
aAdd(aItens,{"D1_VALFRE",0 ,".T."})
aAdd(aItens,{"D1_RATEIO" ,"2" ,Nil}) //Rateio: 1=Sim ;2=Nao.
aAdd(aItens,{"D1_FCICOD",oItemNF:getXMLFci() ,Nil})
aAdd(aItens,{"D1_CC" ,"" ,".T."})
aAdd(aItens,{"D1_CONTA" ,"" ,".T."})
aAdd(aItens,{"D1_ITEMCTA","" ,".T."})
aAdd(aItens,{"D1_CLVL" ,"" ,".T."})
aAdd(aItens,{"D1_LOCAL" ,"01" ,".T."})
aAdd(aItens,{"D1_NFORI" ,"" ,".T."})
aAdd(aItens,{"D1_SERIORI","" ,".T."})
aAdd(aItens,{"D1_ITEMORI","" ,".T."})
if oPedido <> Nil
aAdd(aItens,{"D1_PEDIDO" ,oPedido:getPedido() ,Nil})
aAdd(aItens,{"D1_ITEMPC" ,oPedido:getItem() ,Nil})
EndIf
if oLote <> Nil
//aAdd(aItens,{"D1_LOTEFOR",oLote:getLote_Fornecedor() ,Nil}) // Quebra de Lote
aAdd(aItens,{"D1_LOTECTL",oLote:getLote_Interno() ,Nil}) // Quebra de Lote
aAdd(aItens,{"D1_DTVALID",oLote:getData_Validade() ,Nil}) // Quebra de Lote
EndIf
aAdd(aLinha,aItens)
Next nX
FwMsgRun(,{||MSExecAuto({|x,y,z| MATA140(x,y,z)} , aCab , aLinha , nOpc) }, "Processando", "Aguarde, Pré-Nota de Entrada (MATA140) ")
If lMsErroAuto
mostraerro()
lRet := .F.
Else
FWAlertSuccess("Executado com sucesso!", "Pré-Nota de Entrada lançada: " + oNfeEntity:getNumDoc())
EndIf
Return(lRet)