Versão atual:

Problema ExecAuto Sobrepondo item - MATA140

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)

Versão (1):

Ver a versão formatada

Problema ExecAuto Sobrepondo item - MATA140

Comentário

new question