Perguntas Pedido Compras Automático

Mais
2 anos 10 meses atrás #33236 por advpl_os
Pessoal, estou com um erro no array do meu fonte onde não finaliza a criação do pedido automático.

O fonte faz 2 consultas no sql onde a primeira trás quantidade de VT por centro de custos e a segunda quantidade total de matrícula para ser dividido a taxa, onde todos os registros tem que ser importados pra SC7.

Segue código.

Static Function GeraPed

oDlg:End()

cArea := GetArea()
nValPed := 0
nValRepa := 0
cFornece := ""
cProduto := ""
cProduto2 := ""
cProdRepa := ""
nItem := 1
nItem2 := 1
nNota := MV_PAR08
nVlrTx := MV_PAR09
nDesc := 0.00
nValor := 0
nQtFun := 0
nVlrFu := 0

aItens := {}
lVT := .F.
lVTQ := .F.


If MV_PAR07 == 1 //Mensal
lVT := .T.

ElseIf MV_PAR07 == 2 //Quinzenal
lVTQ := .T.

EndIf

/*cQuery:= " SELECT RA_CC AS CUSTO,COUNT (RA_CC) AS FUNCI,ZT_PEDMES,ZT_PEDQUIN,SUM(ZT_REPASS) AS REPASSE,SUM(ZT_SALDOM) AS SALDO_MENSAL,SUM(ZT_SALDOQ) AS SALDO_QUIN,SUM(ZT_VLPRM) AS VTRM, SUM(ZT_VLPRQ) AS VTRQ,ZT_TAXA AS TAXA, SRA010.R_E_C_N_O_ AS SRAREC "
cQuery+= " FROM SZT010 INNER JOIN SRA010 ON ZT_MAT = RA_MAT AND SRA010.D_E_L_E_T_='' "
cQuery+= " WHERE ZT_COMP= '"+MV_PAR05+"' AND RA_CC ='100201601' AND SZT010.D_E_L_E_T_ ='' AND RA_CC BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"' GROUP BY RA_CC,ZT_TAXA,ZT_PEDMES,ZT_PEDQUIN,SRA010.R_E_C_N_O_ ORDER BY RA_CC "
TCQUERY cQuery New Alias "VTR"*/

cQuery := "SELECT ZT_CUSTO AS CUSTO,COUNT(DISTINCT ZT_MAT) AS QUANT_MAT,SUM(ZT_REPASS) AS REPASSE,SUM(ZT_SALDOM) AS SALDO_MENSAL,SUM(ZT_SALDOQ) AS SALDO_QUIN,SUM(ZT_VLPRM) AS VTRM, SUM(ZT_VLPRQ) AS VTRQ "
cQuery += "FROM SZT010 "
cQuery += "WHERE ZT_COMP= '"+MV_PAR05+"' AND ZT_CUSTO BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"' AND ZT_MAT BETWEEN '"+MV_PAR03+"' AND '"+MV_PAR04+"' AND SZT010.D_E_L_E_T_ ='' GROUP BY ZT_CUSTO "
TCQUERY cQuery New Alias "VTR"

_cQuery:= "SELECT COUNT (DISTINCT ZT_MAT) AS QTD_MAT FROM SZT010 "
_cQuery+= "WHERE ZT_COMP= '"+MV_PAR05+"' AND ZT_CUSTO BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"' AND ZT_MAT BETWEEN '"+MV_PAR03+"' AND '"+MV_PAR04+"' AND SZT010.D_E_L_E_T_ ='' "
TCQUERY _cQuery New Alias "VTR2"

If MV_PAR07 == 1 //Mensal
nValor += VTR->VTRM
nQtFun += VTR2->QTD_MAT
ElseIf MV_PAR07 == 2 //Quinzenal
nValor += VTR->VTRQ
nQtFun += VTR2->QTD_MAT
EndIf

While !VTR->(EOF())

/*iF Len(aFiltro) > 0 .And. aFiltro[1]
DbSelectArea("SRA")
DbGoTo(VTR->SRAREC)

If !&(aFiltro[2])
DbSelectArea("VTR")
DbSkip()
Loop
EndIf

EndIf*/

cFornece := "" // "029593" // GetMv("MV_BFRNVT") // FORNECEDOR
cProduto := "" // "420000" //GetMv("MV_BPRDVT") // PRODUTO
cProduto2 := "" // "606897" //GetMv("MV_BPRDVT") // PRODUTO

cCusto := VTR->CUSTO
cRecs := ""
cTes := ""


IF (cCusto >= '100000000' .and. cCusto <= '299999999')
cTes := '230'
else
cTes := '015'
endif

////////////////////////////////////////////////////////////////////////////////////////////////////////
If lVT

//nValRepa += VTR->ZB_VLREPAS + VTR->ZB_VLSERVI + VTR->ZB_VLTXENT
nValPed += VTR->VTRM
cFornece := "478669"
cProduto := "420000"
cProduto2 := "606897"

////////////////////////////////////////////////////////////////////////////////////////////////////////
ElseIf lVTQ

nValPed += VTR->VTRQ
cFornece := "478669"
cProduto := "420000"
cProduto2 := "606897"


EndIf


DbSelectArea("VTR")
DbSkip()

if (VTR->(EOF()) .OR. cCusto <> VTR->CUSTO)

If nValPed > 0
aAdd(aItens,{{ "C7_ITEM" , StrZero( nItem, 4 ) , Nil},;
{ "C7_PRODUTO" , cProduto , Nil},;
{ "C7_QUANT" , 1 , Nil},;
{ "C7_PRECO" , nValPed , Nil},;
{ "C7_TOTAL" , nValPed , Nil},;
{ "C7_DESC" , nDesc , Nil},;
{ "C7_CC" , cCusto , Nil},;
{ "C7_OBS" , "PEDIDO GERADO VIA INTEGRAÇÃO NF: "+ nNota +" " , Nil},;
{ "C7_TES" , cTes , Nil} } )
nItem ++

aAdd(aItens,{{ "C7_ITEM" , StrZero( nItem2, 4 ) , Nil},;
{ "C7_PRODUTO" , cProduto2 , Nil},;
{ "C7_QUANT" , 1 , Nil},;
{ "C7_PRECO" , (MV_PAR09 / nQtFun) * VTR->QUANT_MAT , Nil},;
{ "C7_TOTAL" , (MV_PAR09 / nQtFun) * VTR->QUANT_MAT , Nil},;
{ "C7_DESC" , nDesc , Nil},;
{ "C7_CC" , cCusto , Nil},;
{ "C7_OBS" , "TAXA GERADO VIA INTEGRAÇÃO NF: "+ nNota +" " , Nil},;
{ "C7_TES" , cTes , Nil} } )
nItem2 ++

EndIf


If !VTR->(Eof())
cCusto := VTR->CUSTO
EndIf

nValPed := 0
nValRepa := 0

EndIf

DbSelectArea("VTR")

EndDo

if len(aItens) > 0 // CASO EXISTA ITENS, GERA PEDIDO


cNumPed := CriaVar("C7_NUM",.T.)

aCabec := { { "C7_FORNECE" , cFornece , Nil},;
{ "C7_LOJA" , "01" , Nil},;
{ "C7_COND" , "001" , Nil},;
{ "C7_CONTATO" , " " , Nil},;
{ "C7_FILENT" , xFilial("SC7") , Nil},;
{ "C7_EMISSAO" , dDataBase , Nil},;
{ "C7_NUM" , cNumPed , Nil}}

lMsErroAuto := .F.
MatA120(1,aCabec,aItens)

If lMSErroAuto

If (__lSX8)
RollBackSx8()
EndIf
Alert( "Erro" )
mostraerro()

Else

If ( __lSx8 )
ConfirmSX8()
EndIf

MsgInfo("Pedido "+ cNumPed +" gerado com sucesso!")

EndIf

Else
Alert("Não encontrado dados para os parametros selecionados!")
EndIf

DbSelectArea("VTR")
DbCloseArea()

DbSelectArea("VTR2")
DbCloseArea()

RestArea(cArea)

Return NIL
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 10 meses atrás #33238 por admin
Respondido por admin no tópico Pedido Compras Automático
Blz cara em qual lugar está dando erro ? qual linha ? ou é no execauto ? qual o erro apresentado ?

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 10 meses atrás #33239 por advpl_os
Respondido por advpl_os no tópico Pedido Compras Automático
Ele entra no IF do Alert( "Erro" ) e da rollback no protheus ele gera um arquivo .log

dizendo que a Inconsistência está na linha de itens.

AJUDA:A12006

Tabela SC7 14/01/2022 14:42:24
Fornecedor - C7_FORNECE := 478669
Loja - C7_LOJA := 01
Cond. Pagto - C7_COND := 001
Contato - C7_CONTATO :=
Filial Entr. - C7_FILENT := 01
DT Emissao - C7_EMISSAO := 14/01/2022
Numero PC - C7_NUM := 672890
Tabela SC7 14/01/2022 14:42:24
Erro no Item 4
Item - C7_ITEM := 0002
Produto - C7_PRODUTO := 606897
Quantidade - C7_QUANT := 1
Prc Unitario - C7_PRECO := 0
Vlr.Total - C7_TOTAL := 0
% Desc.Item - C7_DESC := 0
Centro Custo - C7_CC := 100201602
Observacoes - C7_OBS := TAXA GERADO VIA INTEGRAÇÃO NF: 0000542120
Tipo Entrada - C7_TES := 230
Rateio - C7_RATEIO := 2
Erro --> Inconsistencia na Linha de Itens

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 10 meses atrás #33240 por advpl_os
Respondido por advpl_os no tópico Pedido Compras Automático
Ele entra no IF do Alert( "Erro" ) e da rollback no protheus ele gera um arquivo .log

dizendo que a Inconsistência está na linha de itens.

AJUDA:A12006

Tabela SC7 14/01/2022 14:42:24
Fornecedor - C7_FORNECE := 478669
Loja - C7_LOJA := 01
Cond. Pagto - C7_COND := 001
Contato - C7_CONTATO :=
Filial Entr. - C7_FILENT := 01
DT Emissao - C7_EMISSAO := 14/01/2022
Numero PC - C7_NUM := 672890
Tabela SC7 14/01/2022 14:42:24
Erro no Item 4
Item - C7_ITEM := 0002
Produto - C7_PRODUTO := 606897
Quantidade - C7_QUANT := 1
Prc Unitario - C7_PRECO := 0
Vlr.Total - C7_TOTAL := 0
% Desc.Item - C7_DESC := 0
Centro Custo - C7_CC := 100201602
Observacoes - C7_OBS := TAXA GERADO VIA INTEGRAÇÃO NF: 0000542120
Tipo Entrada - C7_TES := 230
Rateio - C7_RATEIO := 2
Erro --> Inconsistencia na Linha de Itens

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 9 meses atrás #33252 por admin
Respondido por admin no tópico Pedido Compras Automático
[09:23, 31/01/2022] Luiz Alberto - 3L Systems: MatA120(1,aCabec,aItens,aItens2)
[09:23, 31/01/2022] Luiz Alberto - 3L Systems: cara não entendi aqui
[09:23, 31/01/2022] Luiz Alberto - 3L Systems: vc ta mandando itens em vetores separados ?[
[09:24, 31/01/2022] Luiz Alberto - 3L Systems: outra coisa vc não esta somando a variavel nitem e nitem2 dentro do loop
[09:24, 31/01/2022] Luiz Alberto - 3L Systems: provavelmente ela vai estar sempre como 1 as duas

Por favor Acessar ou Registrar para participar da conversa.

Mais
2 anos 9 meses atrás #33253 por admin
Respondido por admin no tópico Pedido Compras Automático
Segue um exemplo, o c7_item senão me engano na inclusão vc não precisa mandar este campo ok.
nItens := 1
	aCabec := {}
	aItens := {}
	
	DbSelectarea("LS1")
	Dbgotop()
	While !Eof()
		aLinha := {}
		SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+LS1->PRODUTO))
		
		If Empty(cAlmoPed)
			_cAlmoxPed:=Posicione("SB1",1,xFilial("SB1")+LS1->PRODUTO,"B1_LOCPAD")
		Else
			_cAlmoxPed:=cAlmoPed
		Endif
		//Rodolfo
		cContato := Posicione("SA2",1,xFilial("SA2")+LS3->FORNEC+LS3->LOJA,"A2_CONTATO")
		If Empty(cContato)
			cContato:= "Automatico"
		Endif
		If !SC7->(DbSeek(xfilial("SC7")+cNumPed))
			nOpc := 3
		Else
			nOpc := 4
		Endif
		//Cabeçalho do pedido
		aadd(aCabec,{"C7_NUM"     ,cNumPed})
		aadd(aCabec,{"C7_EMISSAO" ,dDataBase})
		aadd(aCabec,{"C7_FORNECE" ,LS3->FORNEC})
		aadd(aCabec,{"C7_LOJA"    ,LS3->LOJA})
		aadd(aCabec,{"C7_COND"    ,_cCond})
		aadd(aCabec,{"C7_CONTATO" ,cContato})
		aadd(aCabec,{"C7_FILENT"  ,xFilial("SC7")})
		//Itens do pedido
		If nOpc = 4
			aadd(aLinha,{"C7_ITEM",StrZero(nX,Len(SC7->C7_ITEM)+1),Nil})
		Endif
		aadd(aLinha,{"C7_PRODUTO" ,LS1->PRODUTO,Nil})
		aadd(aLinha,{"C7_QUANT"   ,LS1->QUANTIDADE,Nil})
		aadd(aLinha,{"C7_PRECO"   ,LS1->PRECO ,Nil})
		aadd(aLinha,{"C7_TOTAL"   ,(LS1->QUANTIDADE*LS1->PRECO),Nil})
		aadd(aLinha,{"C7_TES"     ,SB1->B1_TE,Nil})
		aadd(aLinha,{"C7_OBS","INCLUIDO NF-ELETRONICA",Nil})
		aadd(aLinha,{"C7_PRODFAB" ,LS1->PRODFOR,Nil})
		aadd(aLinha,{"C7_LOCAL"  ,_cAlmoxPed,Nil})
		aadd(aItens,aLinha)
		
		cAlmox:=SC7->C7_LOCAL
		
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		//³ Atualizado SB2 saldo de pedidos										³
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
		DbSelectarea("SB2")
		DbSetorder(2)
		Dbgotop()
		Dbseek(xFilial("SB2")+cAlmox+LS1->PRODUTO)
		If Found()
			Reclock("SB2",.F.)
			SB2->B2_SALPEDI:=(SB2->B2_SALPEDI+LS1->QUANTIDADE)
			MsUnlock()
		Endif
		
		_nItens:=_nItens+1
		DbSelectarea("LS1")
		Dbskip()
	End
	MATA120(1,aCabec,aItens,3)
	
	If !lMsErroAuto
		ConOut("Incluido com sucesso! ")
		Msgbox("Pedido "+cNumped+" Gerado com sucesso!","Atenção...","INFO")
	Else
		MostraErro()
	Endif

Por favor Acessar ou Registrar para participar da conversa.

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