Versão atual:

Erro no excauto do Pedido de Venda

Ola! Estou tentando executar uma rotina automática do pedido de venda (mata410) e está apresentando um comportamento muito estranho. a forma como eu estou fazendo é a seguinte: coloquei um botão dentro da alteração do pedido de venda; ao clicar no botão eu pego os dados do pedido aberto e recrio ele em outra filial, com os mesmos itens e cabeçalho. Em pedidos que eu tenho somente 1 item, ele funciona normalmente mas em pedidos que tem mais de 1 item, apresenta um erro no campo cliente, erro de type mismatch mas não é pois até ja testei colocando o cliente direto no fonte no modo caracter. Em anexo, está o print do erro em um pedido com 2 itens.

segue o fonte:

Static Function TESTEX()

local cC5num := SC5->C5_NUM local cC5cli := SC5->C5_CLIENTE local aLin := {} local aArea := GetArea() local cQuery := "" //Local nOpr := 3 // NÚMERO DA OPERAÇÃO (INCLUSÃO) Local aCabc := {} // INFORMAÇÕES DO CABEÇALHO Local aLine := {} // INFORMAÇÕES DA LINHA Local aItems := {} // CONJUNTO DE LINHAS local nXi := 1

Private lMsErroAuto := .F. Private lMsHelpAuto := .T.

cQuery += " SELECT C6_ITEM,C6_PRODUTO,C6_QTDVEN,C6_PRUNIT,C6_PRCVEN,C6_UM,C6_VALOR,C6_OPER,C6_TES,C6_LOCAL FROM "+RetSQLName("SC6")+" " cQuery += " WHERE C6_NUM = '"+cC5num+"' AND C6_CLI = '"+cC5cli+"' "

TCQUERY cQuery NEW ALIAS "QRY" dbSelectArea("QRY") while !QRY->(EoF())

aadd(aLin, {C6_ITEM,C6_PRODUTO,C6_QTDVEN, C6_PRUNIT, C6_PRCVEN,C6_UM, C6_VALOR, C6_OPER ,C6_TES,C6_LOCAL }) QRY->(DbSkip())

enddo QRY->(DbCloseArea())

alert("novo pedido sera incluido na filial 12 com:"+cValToChar(len(aLin))+" itens")

RPCSetEnv("01", "12", NIL, NIL, "FAT", NIL, {"SC5", "SC6"}) // ABERTURA DE AMBIENTE (REMOVER SE EXECUTADO VIA SMARTCLIENT) aArea := GetArea()

// cNum := GetSXENum("SC5", "C5_NUM") // REMOVER PARA GERAÇÃO DE NUMERAÇÃO AUTOMÁTICA PELA ROTINA

// DADOS DO CABEÇALHO // AAdd(aHeader, {"C5_NUM", cNum, NIL}) // REMOVER PARA GERAÇÃO DE NUMERAÇÃO AUTOMÁTICA PELA ROTINA AAdd(aCabc, {"C5_TIPO" , SC5->C5_TIPO , NIL}) AAdd(aCabc, {"C5_CLIENTE", "033439", NIL}) //AAdd(aCabc, {"C5_LOJACLI", SC5->C5_LOJACLI, NIL}) //AAdd(aCabc, {"C5_LOJAENT", SC5->C5_LOJAENT, NIL}) AAdd(aCabc, {"C5_LOJAENT", SC5->C5_LOJAENT, NIL}) AAdd(aCabc, {"C5_CONDPAG", SC5->C5_CONDPAG, NIL}) AAdd(aCabc, {"C5_VEND1" , SC5->C5_VEND1 , NIL}) AAdd(aCabc, {"C5_TRANSP" , SC5->C5_TRANSP , NIL}) //AAdd(aCabc, {"C5_TPFRETE", SC5->C5_TPFRETE, NIL}) AAdd(aCabc, {"C5_MENNOTA", SC5->C5_MENNOTA, NIL}) //AAdd(aCabc, {"C5_CGCINT" , SC5->C5_CGCINT , NIL})

// DADOS DOS ITENS For nXi := 1 to len(aLin) aLine := {} AAdd(aLine, {"C6_ITEM" , aLin[nXi][1], NIL}) AAdd(aLine, {"C6_PRODUTO", aLin[nXi][2], NIL}) AAdd(aLine, {"C6_QTDVEN" , aLin[nXi][3], NIL}) AAdd(aLine, {"C6_PRUNIT" , aLin[nXi][4], NIL}) AAdd(aLine, {"C6_PRCVEN" , aLin[nXi][5], NIL}) AAdd(aLine, {"C6_UM" , aLin[nXi][6], NIL}) AAdd(aLine, {"C6_VALOR" , aLin[nXi][7], NIL}) AAdd(aLine, {"C6_OPER" , "03" , NIL}) AAdd(aLine, {"C6_TES" , "531" , NIL}) AAdd(aLine, {"C6_LOCAL" , "13" , NIL})

AAdd(aItems, aLine)

next nXi

MsExecAuto({|x, y, z| MATA410(x, y, z)}, aCabc, aItems, 3)

// VALIDAÇÃO DE ERRO If (lMsErroAuto) MostraErro() // RollbackSX8() // REMOVER PARA GERAÇÃO DE NUMERAÇÃO AUTOMÁTICA PELA ROTINA

ConOut(Repl("-", 80)) ConOut(PadC("MATA410 automatic routine ended with error", 80)) ConOut(PadC("Ended at: " + Time(), 80)) ConOut(Repl("-", 80)) Else // ConfirmSX8() // REMOVER PARA GERAÇÃO DE NUMERAÇÃO AUTOMÁTICA PELA ROTINA

ConOut(Repl("-", 80)) ConOut(PadC("MATA410 automatic routine successfully ended", 80)) ConOut(PadC("Ended at: " + Time(), 80)) ConOut(Repl("-", 80)) alert("incluído com sucesso")

EndIf

RestArea(aArea) // RESTAURAÇÃO DA ÁREA ANTERIOR //RPCClearEnv() // FECHAMENTO DE AMBIENTE (REMOVER SE EXECUTADO VIA SMARTCLIENT) Return

Versão (1):

Ver a versão formatada

Erro no excauto do Pedido de Venda

Comentário

new question