|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
EXECAUTO MATA103 |
|
Versão: |
12.1.2210 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
ELTON93
em 15/02/2024, 11:02 h
Local: SP Registro: 12/02/2024 Postagens: 10 |
Pessoal fiz um EXECAUTO na MATA103 e e está funcionando bem, exceto as informações de lote, o sistema está substituindo as informações do Lote que estão no array por informações automaticas tipo AUTO20983.
Alguém sabe me dizer pq ? |
|
|
Mensagem do
GERARDO
em 15/02/2024, 11:17 h
Local: SP Registro: 28/11/2005 Postagens: 88 |
Elton, bom dia.
Verifica se tem fórmula cadastrada no parâmetro:
MV_FORMLOT - Código da formula default utilizada para preenchimento dos lotes
At.te,
Gerardo Lobos
Athenas Solutions. |
|
|
Mensagem do
ELTON93
em 15/02/2024, 11:19 h
Local: SP Registro: 12/02/2024 Postagens: 10 |
Já olhei, esse parametro está vazio. Não tinha só que acatar o Lote do array? |
|
|
Mensagem do
GERARDO
em 15/02/2024, 11:34 h
Local: SP Registro: 28/11/2005 Postagens: 88 |
Estranho, pois o sistema só preenche o campo D1_LOTECTL, iniciando com "AUTO" quando se tem formula no parametro.
Seria interessante, você colocar o fonte para análise, pois pode ser outra coisa. |
|
|
Mensagem do
ELTON93
em 15/02/2024, 12:40 h
Local: SP Registro: 12/02/2024 Postagens: 10 |
pIOR QUE É UM PROgrama simples, não tem muito segredo.
WHILE cAlias->(!Eof()) //.and. cDoc == cAlias->D2_DOC .and. cSerie == cAlias->D2_SERIE
cCodigo := cAlias->ZY_COD
nQuant := IIF(cAlias->ZY_QTCONV > 0 ,cAlias->ZY_QTCONV, cAlias->D2_QUANT)
cLotectl := cAlias->ZY_LOTECTL
nCusto := cAlias->D2_CUSTO1
dDValidad := Stod(cAlias->D2_DTVALID)
cD2Total := cAlias->D2_TOTAL
nPrcVend := iiF(cAlias->ZY_QTCONV > 0, cD2Total/nQuant, cAlias->D2_PRCVEN)
cPC := cAlias->ZY_PC
cItemZy := StrZero(Val(cAlias->ZY_ITEM), 4)
nIPI := Posicione("SB1",1,xFilial("SB1")+cCodigo,"SB1->B1_IPI" )
If cEmpOri <> cEmpDest
IF nIPI > 0
cTE := aEntrs[4]
Else
cTE := aEntrs[5]
Endif
ElseIF cEmpOri == cEmpDest
cTE := aEntrs[3]
Endif
aadd(aLotes,{cLotectl})
nItem++
aItem := {}
aAdd(aItem,{‘D1_ITEM‘, sTRzero(nItem,4) ,NIL})
aAdd(aItem,{‘D1_COD‘, cCodigo,NIL})
aAdd(aItem,{‘D1_DESCRI‘, Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘SB1->B1_DESC‘),NIL})
aAdd(aItem,{‘D1_UM‘, Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘SB1->B1_UM‘),NIL})
aAdd(aItem,{"D1_QUANT", nQuant,Nil})
aAdd(aItem,{"D1_VUNIT", nPrcVend,Nil})
aAdd(aItem,{"D1_TOTAL", nPrcVend*nQuant,Nil})
IF Posicione(‘SB1‘,1,xFilial(‘SB1‘)+cCodigo, ‘SB1->B1_RASTRO‘) == "L"
aAdd(aItem,{"D1_LOTECTL", cLotectl,Nil})
aAdd(aItem,{"D1_DTVALID", dDValidad,Nil})
Endif
aAdd(aItem,{"D1_DOC", cDoc ,Nil})
aAdd(aItem,{"D1_SERIE", cSerie,Nil})
aAdd(aItem,{"D1_FORNECE", cFornece,Nil})
aAdd(aItem,{"D1_CUSTO", nCusto,Nil})
If lClass
aAdd(aItem,{"D1_TES", cTE,Nil})
Endif
aadd(aItens,aItem)
IF !Empty(cPC )
Aadd(aItens[Len(aItens)], {‘D1_PEDIDO ‘,cPC ,nil}) // Número do Pedido de Compras
aadd(aItens[Len(aItens)], {‘D1_ITEMPC ‘, cItemZy ,nil}) // Item do Pedido de Compras
Endif
aadd(aUpdate,{cDoc,cSerie,cFornece,cCodigo,sTRzero(nItem,4),cLotectl,dDValidad,nCusto})
cAlias->(DBSKIP())
EndDo
/// Enddo
Endif
Conout("GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"+cValTochar(lClass))
aAdd(aParamAux, {"MV_PAR01", 2}) //-- Mostra Lanc. Contabil? 1 = Sim, 2 = Não
aAdd(aParamAux, {"MV_PAR06", 2}) //-- Contabilizacao Online? 1 = Sim, 2 = Não
MSExecAuto({|x,y,z,k,a,b| MATA103(x,y,z,,,,k,a,,,b)},aCabec,aItens,nOpc,aParamAux,aItensRat,aCodRet)
|
|
|
Mensagem do
ROBERTOMEN
em 15/02/2024, 13:04 h
Local: PR Registro: 04/07/2017 Postagens: 548 |
Boa tarde:
Tente assim:
aItem := {}
aAdd(aItem,{"D1_DOC", cDoc ,Nil})
aAdd(aItem,{"D1_SERIE", cSerie,Nil})
aAdd(aItem,{"D1_FORNECE", cFornece,Nil})
aAdd(aItem,{"D1_CUSTO", nCusto,Nil})
aAdd(aItem,{'D1_ITEM', sTRzero(nItem,4) ,NIL})
aAdd(aItem,{'D1_COD', cCodigo,NIL})
aAdd(aItem,{'D1_DESCRI', Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘B1_DESC‘),NIL})
aAdd(aItem,{'D1_UM', Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘B1_UM‘),NIL})
aAdd(aItem,{"D1_QUANT", nQuant,Nil})
aAdd(aItem,{"D1_VUNIT", nPrcVend,Nil})
aAdd(aItem,{"D1_TOTAL", nPrcVend*nQuant,Nil})
If lClass
aAdd(aItem,{"D1_TES", cTE,Nil})
Endif
IF Posicione(‘SB1‘,1,xFilial(‘SB1‘)+cCodigo, ‘B1_RASTRO‘) == "L"
aAdd(aItem,{"D1_LOTECTL", cLotectl,Nil})
aAdd(aItem,{"D1_DTVALID", dDValidad,Nil})
Endif
aadd(aItens,aItem) |
|
|
Mensagem do
EMERSON.EN
em 15/02/2024, 15:43 h
Local: SP Registro: 20/08/2010 Postagens: 681 |
evite usar Posicione() várias vezes para a mesma finalidade. perda de performance.
evite fazer a soma para o conteúdo de campos caractere de conteúdo sequencial. para isto utilize a função Soma1()
para fácil entendimento, avalie cPC antes de incluir o item no array de itens do documento de entrada.
aItens := {}
cItemD1 := ‘0000‘ // criada como caractere para utilizar a função Soma1()
WHILE cAlias->(!Eof()) //.and. cDoc == cAlias->D2_DOC .and. cSerie == cAlias->D2_SERIE
cCodigo := cAlias->ZY_COD
nQuant := IIF(cAlias->ZY_QTCONV > 0, cAlias->ZY_QTCONV, cAlias->D2_QUANT)
cLotectl := cAlias->ZY_LOTECTL
nCusto := cAlias->D2_CUSTO1
dDValidad := Stod(cAlias->D2_DTVALID)
cD2Total := cAlias->D2_TOTAL
nPrcVend := iiF(cAlias->ZY_QTCONV > 0, cD2Total/nQuant, cAlias->D2_PRCVEN)
cPC := cAlias->ZY_PC
cItemZy := StrZero(Val(cAlias->ZY_ITEM), 4)
// posiciona a tabela de produtos
SB1->(dbSetOrder(1)) // B1_FILIAL, B1_COD
SB1->(dbSeek(xFilial()+cCodigo))
nIPI := SB1->B1_IPI
IF cEmpOri == cEmpDest
cTE := aEntrs[3]
Else
cTE := aEntrs[ if(nIPI > 0, 4, 5) ]
Endif
aadd(aLotes,{cLotectl})
cItemD1 := Soma1(cItemD1) // utilize a Soma1() - função padrão do Protheus
aItem := {}
aAdd(aItem,{‘D1_ITEM‘, cItemD1, Nil})
aAdd(aItem,{‘D1_COD‘, cCodigo, Nil})
aAdd(aItem,{‘D1_DESCRI‘, SB1->B1_DESC, Nil})
aAdd(aItem,{‘D1_UM‘, SB1->B1_UM, Nil})
aAdd(aItem,{"D1_QUANT", nQuant, Nil})
aAdd(aItem,{"D1_VUNIT", nPrcVend, Nil})
aAdd(aItem,{"D1_TOTAL", nPrcVend*nQuant, Nil})
IF SB1->B1_RASTRO == "L"
aAdd(aItem,{"D1_LOTECTL", cLotectl, Nil})
aAdd(aItem,{"D1_DTVALID", dDValidad, Nil})
Endif
aAdd(aItem,{"D1_DOC", cDoc, Nil})
aAdd(aItem,{"D1_SERIE", cSerie, Nil})
aAdd(aItem,{"D1_FORNECE", cFornece, Nil})
aAdd(aItem,{"D1_CUSTO", nCusto, Nil})
If lClass
aAdd(aItem,{"D1_TES", cTE, Nil})
Endif
IF !empty(cPC)
aAdd(aItem,{‘D1_PEDIDO‘, cPC, nil}) // Número do Pedido de Compras
aAdd(aItem,{‘D1_ITEMPC‘, cItemZy, nil}) // Item do Pedido de Compras
Endif
aAdd(aItens,aItem)
aAdd(aUpdate,{cDoc,cSerie,cFornece,cCodigo,sTRzero(nItem,4),cLotectl,dDValidad,nCusto})
cAlias->(DBSKIP())
ENDDO
|
|
|
Mensagem do
ELTON93
em 19/02/2024, 09:23 h
Local: SP Registro: 12/02/2024 Postagens: 10 |
Pessoal,
Muito obrigado pelas dicas, me ajudaram a resolver o problema. |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|