Versão atual:

Erro ao incluir Ordem de Produção. MATA650

Estou criando uma rotina que deve gerar Ordens de Produção com base em um Pedido de Venda. Para isso, estou utilizando a execauto MATA650 de acordo com a documentação. Documentação TOTVS.

Na nossa realidade aqui, será necessário gerar 1 OP para cada item do PV, sendo assim, espera-se que sejam geradas varias OPs com o mesmo numero, porem com itens diferentes. Entretanto é retornado uma erro na execauto dizendo que esse registro já existe.

Segue abaixo trecho do código que realiza as inclusões e anexo contendo o erro.

Obs.: tentei mudar o terceiro conteúdo do array da execauto pois supostamente iria sobrescrever a validação padrão.

    if lOK

        begin transaction

        if select("TSC6A") > 0
            TSC6A->(DbCloseArea())
        endif

        BEGINSQL ALIAS "TSC6A"
            SELECT * FROM %TABLE:SC6%
            WHERE %NOTDEL%
            AND C6_FILIAL = %XFILIAL:SC6%
            AND C6_NUM = %EXP:cPedido%
            ORDER BY C6_ITEM ASC
        ENDSQL

        while ! TSC6A->(EoF())

            aCabc  := { {'C2_FILIAL'    , xFilial("SC2")        ,NIL},;         
                        {'C2_NUM'       , TSC6A->(C6_NUM)       ,.T.},;          
                        {'C2_ITEM'      , TSC6A->(C6_ITEM)      ,.T.},;     
                        {'C2_SEQUEN'    , "001"                 ,.T.},;  
                        {'C2_PRODUTO'   , alltrim(TSC6A->(C6_PRODUTO))   ,NIL},;     
                        {'C2_PEDIDO'    , TSC6A->(C6_NUM)       ,NIL},;
                        {"C2_ITEMPV"    , TSC6A->(C6_ITEM)      ,NIL},;  
                        {"C2_QUANT"     , TSC6A->(C6_QTDVEN)    ,NIL},;  
                        {"C2_STATUS"    , 'N'                   ,NIL},;  
                        {"C2_LOCAL"     , '04'                  ,NIL},;  
                        {"C2_CC"        , '430010017'           ,NIL},;  
                        {"C2_PRIOR"     , '500'                 ,NIL},;  
                        {"C2_DATPRI"    , DDATABASE             ,NIL},;  
                        {"C2_DATPRF"    , DDATABASE + 10        ,NIL},;  
                        {'AUTEXPLODE'   , "S"                   ,NIL}}       

            msExecAuto({|x,Y| Mata650(x,Y)},aCabc,3)

            if lMsErroAuto
                montaErro(mostraerro("/logs","ordemproducao" + strtran(time(),':') + ".log"),400,21)
                DisarmTransaction()
                Break
            else
                oReturn["resultado"] := "OK"
                oReturn["mensagem"] += ' | Tempo gasto: ' + Tgasto()

                AADD(oReturn["listaOPs"], JsonObject():New())
                nQtd := len(oReturn["listaOPs"])
                oReturn["listaOPs"][nQtd]["item"] := TSC6A->(C6_ITEM)
                oReturn["listaOPs"][nQtd]["opGerada"] := TSC6A->(C6_NUM)
            endif

            TSC6A->(DbSkip())
        end

        end transaction
    endif

Versão (1):

Ver a versão formatada

Erro ao incluir Ordem de Produção. MATA650

Comentário

new question