Situação: No momento de criar o contrato do tipo 1 (Compra), ao selecionar/marcar o item da solicitação de compras (SC1), a rotina importa todos os itens dessa solicitação. Com esse ponto de entrada podemos customizar impedindo que a rotina selecione automaticamente todos os itens, carregando apenas um item da solicitação. Nesse exemplo, selecionarei uma solicitação com mais de 1 item e importarei sempre o ultimo item.
#INCLUDE "PROTHEUS.CH" /*/{Protheus.doc} CN200SPC Permite customizar as marcacoes no momento de importar os itens da Solicitacao de Compras ou Pedido de Compras @type function @version @since 06/03/2024 @return Array com as marcacoes customizadas /*/ User Function CN200SPC() Local aArea := GetArea() Local aRetorno := {} Local cMarca := paramixb[1] Local cValida := paramixb[3] Local cQuery := "" Local cAlias := GetNextAlias() //QUERY PARA SELECIONAR O ULTIMO ITEM DA SOLICITACAO SELECIONADA NA IMPORTACAO cQuery := " SELECT SC1.C1_FILIAL, SC1.C1_NUM, SC1.C1_ITEM, SC1.R_E_C_N_O_ " cQuery += " FROM " + rETsQLnAMERetSqlName("SC1") + " SC1 " cQuery += " WHERE SC1.C1_FILIAL = '" + xFilial("SC1") + "' " cQuery += " AND SC1.C1_NUM = '" + SC1->C1_NUM + "' " cQuery += " AND SC1.C1_ITEM = ( " cQuery += " SELECT MAX(C1_ITEM) " cQuery += " FROM " + rETsQLnAMERetSqlName("SC1") + " " cQuery += " WHERE C1_FILIAL = '" + xFilial("SC1") + "' " cQuery += " AND C1_NUM = '" + SC1->C1_NUM + "' " cQuery += " AND D_E_L_E_T_ = '' " cQuery += " ) " cQuery += " AND SC1.D_E_L_E_T_ = ' ' " cQuery := ChangeQuery(cQuery) dbUseArea(.T., 'TOPCONN', TCGENQRY(,,cQuery),cAlias, .F., .T.) dbSelectArea(cAlias) If (cAlias)->(!EOF()) SC1->(DbGoTo((cAlias)->R_E_C_N_O_)) RecLock("SC1",.F.) &(cValida) := cMarca SC1->(MsUnlock()) aAdd(aRetorno,(cAlias)->R_E_C_N_O_) EndIf (cAlias)->(DbCloseArea()) RestArea(aArea) Return(aRetorno)
|