Imprimi Página | Fechar janela |
EXECAUTO MATA103 Impresso de: Helpfacil - Portal do conhecimento Nome do Forum: ADVPL Descrição do Forum: Dúvidas sobre a programação em ADVPL URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=44445 Data da Impressão: sábado, 14 de dezembro de 2024 at 16:16 Topico: EXECAUTO MATA103 Postado por: ELTON93 Assunto: EXECAUTO MATA103 Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 11:02 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 ? Respostas: Postado Por: GERARDO Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 11:17 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. Postado Por: ELTON93 Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 11:19 Já olhei, esse parametro está vazio. Não tinha só que acatar o Lote do array? Postado Por: GERARDO Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 11:34 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. Postado Por: ELTON93 Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 12:40 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) Postado Por: ROBERTOMEN Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 13:04 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) Postado Por: EMERSON.EN Data Postagem: quinta-feira, 15 de fevereiro de 2024 at 15:43 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 Postado Por: ELTON93 Data Postagem: segunda-feira, 19 de fevereiro de 2024 at 09:23 Pessoal, Muito obrigado pelas dicas, me ajudaram a resolver o problema. |
Imprimir Página | Fechar Janela |