Perguntas ExecAuto mata650

Mais
8 anos 4 semanas atrás #31268 por rhmarques
ExecAuto mata650 foi criado por rhmarques
Bom dia,

Pessoal estou necessitando implementar um execauto para encerrar uma ordem de produção, essa ordem de produção não vai ter produção apenas um requisição de baixa e depois encerrar a mesma.
Alguém já utilizou o mata650 - MSExecAuto({|x,y| mata650(x,y)},aMata650[1],?).

Como devo preencher o array e qual numero passo no msexecauto.


Desde já agradeço atenção.

Abraço
Rildo

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 semanas atrás #31276 por lalberto
Respondido por lalberto no tópico ExecAuto mata650
	
	IncProc("Criando ordem de produção")
	// Cria OP
	lMsErroAuto := .F.
	
	_aVetor := {	{"C2_NUM"    , GetNumSC2()		, Nil},; 
					{"C2_ITEM"   , "01"				, Nil},;
					{"C2_SEQUEN" , "001"			, Nil},;
					{"C2_PRODUTO", SC6->C6_PRODUTO	, Nil},;
					{"C2_QUANT"  , nGetQtd			, Nil},;
					{"C2_CC"     , SZH->ZH_CC		, Nil},;
					{"C2_LOCAL"  , SC6->C6_LOCAL	, Nil},;
					{"C2_DATPRI" , dDataBase		, Nil},;
					{"C2_DATPRF" , dDataBase		, Nil},;
					{"C2_EMISSAO", dDataBase		, Nil},;
					{"AUTEXPLODE", "S"				, Nil}  }
	MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 3)	// Inclusao
	
	If lMsErroAuto
		MostraErro()
		DisarmTransaction()
		Return
	Endif

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 semanas atrás #31282 por rhmarques
Respondido por rhmarques no tópico ExecAuto mata650
Bom dia,

Luiz

Esse array é para inclusão da Ordem de produção.

MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 3) // Inclusao
MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 4) // Alteração
MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 5) // Exclusão

Eu tentei

MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 6) // Eu acredito ser extorno
MSExecAuto({|x, y| mata650(x, y)}, _aVetor, 7) // Inclusao

Não sei o que devo passar no array, pois na rotina padrão do sistema ele inseri informação na tabela SC2 e SD3.


Atenciosamente
Rildo

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 semanas atrás #31285 por lalberto
Respondido por lalberto no tópico ExecAuto mata650
Rildo desculpe não me atentei que era para encerrar a ordem de produção:

Segue um exemplo:

Nesta função que utilizei há um tempo, eu envio o apontamento de uma ordem de produção, e mando nos parâmetros a opção de encerra-la também, espero que ajude.

Static Function ApontOP(cOP,cProd,cOperac,dDtIni,cHrIni,dDtFim,cHrFim,nQtde,cChave,cOperador,lEncerra,lUltima,nOpcao)
Local aLinha := {}
Local dDtValid := CTOD("  /  /  ")
Private nRegSH6 := 0

SC2->(dbSetOrder(1), dbSeek(xFilial("SC2")+cChave))
SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+cProd))
SH6->(dbSetOrder(1), dbSeek(xFilial("SH6")+cChave))

nRegSH6 := SH6->(Recno())

dDtValid := dDatabase + SB1->B1_PRVALID

aLinha := {	{"H6_OP",cChave,NIL},;
	{"H6_PRODUTO",cProd,NIL},;
	{"H6_OPERAC",cOperac,NIL},;
	{"H6_DATAINI",dDtIni,NIL},;
	{"H6_HORAINI",cHrIni,NIL},;
	{"H6_DATAFIN",dDtFim,NIL},;
	{"H6_HORAFIN",cHrFim,NIL},;
	{"H6_QTDPROD",nQtde,NIL},;
	{"H6_OPERADO",cOperador,NIL},;
	{"H6_LOCAL"  ,SB1->B1_LOCPAD,NIL},;
	{"H6_DTVALID",dDtValid,NIL},;
	{"H6_DTAPONT",Date(),NIL} }

lMsErroAuto := .f.

MSExecAuto({|x,y| Mata681(x,y)},aLinha,nOpcao)

If lMsErroAuto
	MostraErro()
	Return .f.
Endif      

If lEncerra .And. lUltima .And. (nOpcao==3)		// Apontamento Parcial Porém Encerra OP
	nOpc := 7 // Encerra ordem de produção
	aMata680 := {}
	aadd(aMata680,{"H6_OP" , SH6->H6_OP ,NIL})
	aadd(aMata680,{"H6_PRODUTO" , SH6->H6_PRODUTO ,NIL})
	aadd(aMata680,{"H6_SEQ" , SH6->H6_SEQ ,NIL})

	lMsErroAuto := .f.
	MsExecAuto({|x,Y|MATA680(aMata680,nOpc)})
	If lMsErroAuto
		MostraErro()
		Return .f.
	Endif      
Endif
Return .t.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 semanas atrás #31288 por rhmarques
Respondido por rhmarques no tópico ExecAuto mata650
Bom dia,

Luiz,

Primeiramente agradeço sua atenção.

Meu apontamento é apenas na SD3, essa ordem de produção é aberta e depois ela será requisitada através de uma entrada de notas gera o seguinte lançamento no SD3.

D3_TM = 999 / CF = RE5

se eu utilizar a rotina padrão do sistema para encerrar ele gera o seguinte registro na SD3.

D3_TM = 200 / CF = PR0

No meu ponto de entrada tentei montar o array no SC2 e depois SD3 porem não tive sucesso ainda, segue como preenchi o array e msexecauto.


SD3
aMata650 := { {'D3_FILIAL',xFilial("SD3") ,NIL},;
{'D3_OP' ,AllTrim(cOP) ,NIL},;
{'D3_COD' ,AllTrim(cPro) ,NIL},;
{'D3_LOCAL' ,AllTrim(cLoc) ,NIL}}


nModuloOld := nModulo
nModulo := 4
msExecAuto({|x,Y| Mata650(x,Y)},aMata650,7)
xModulo := nModuloOld
SC2
aMata650 := { {'C2_FILIAL' ,xFilial("SC2") ,NIL},;
{'C2_PRODUTO' ,AllTrim(cProd) ,NIL},;
{'C2_NUM' ,Substr(AllTrim(cOP),1,6),NIL},;
{'C2_ITEM' ,Substr(AllTrim(cOP),7,2),NIL},;
{'C2_SEQUEN' ,Substr(AllTrim(cOP),9,3),NIL}}

nModuloOld := nModulo
nModulo := 4
msExecAuto({|x,Y| Mata650(x,Y)},aMata650,7)
xModulo := nModuloOld


Atenciosamente
Rildo

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 4 semanas atrás #31291 por lalberto
Respondido por lalberto no tópico ExecAuto mata650
Rildo boa tarde, cara infelizmente não consegui encontrar nada que pudesse lhe ajudar, além do que já enviei.

Se conseguir encontrar uma solução, avisa a gente ok. Para que os próximos usuários tenham uma solução.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.099 segundos
Joomla templates by a4joomla