⭐ Gostou do tema? Salve este artigo para consultar depois
Olá, tudo bem?
Muitas vezes, quando trabalhamos com tabelas de preço no Protheus, uma gama de clientes, de um determinado vendedor, possui a mesma tabela.
Exemplo:
- Vendedor de código 000001, que possui uma base de 100 clientes.
- Todos os clientes deste vendedor vão utilizar a tabela de preço 002. Antes era a 001.
Então você vai no MPSDU e altera todos os clientes? Não. Você utiliza a rotina abaixo que deixa você alterar todos os clientes de uma única vez, filtrando por vendedor.
Abrindo a rotina, é só informar:
Depois, você verá, na tabela de clientes deste mesmo vendedor:
Segue o código ADVPL abaixo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
//Bibliotecas #Include "Protheus.ch" #Include "TopConn.ch" //Constantes #Define STR_PULA Chr(13)+Chr(10) /*/{Protheus.doc} FBFATM01 //TODO Atualiza tabelas de preço por vendedor. @author fbsolutions.com.br @since 01/01/2017 @version undefined @type function /*/ User Function FBFATM01() Local aArea := GetArea() Private cPerg := "" //Definições da pergunta cPerg := "FBFATM01 " ValidPerg() If !Pergunte(cPerg, .T.) Return .F. EndIf //Se a pergunta não existir, zera a variável DbSelectArea("SX1") SX1->(DbSetOrder(1)) //X1_GRUPO + X1_ORDEM If ! SX1->(DbSeek(cPerg)) cPerg := Nil EndIf Processa({|| fUpdTab()}, "Processando...") RestArea(aArea) Return Static Function fUpdTab() Local cQuery := "" If MsgYesNo("O sistema atualizará para tabela " + MV_PAR03 + " todos os clientes, do vendedor " + MV_PAR01 + " até " + MV_PAR01 + ". Deseja confirmar?", "Confirma alteração?") cQuery := " UPDATE " + RetSQLName("SA1") + " SET A1_TABELA = '" + MV_PAR03 + "' WHERE A1_VEND BETWEEN '" + MV_PAR01 + "' AND '" + MV_PAR02 + "' AND A1_MSBLQL <> '1' " TCSQLEXEC(cQuery) MsgInfo("Cadastros atualizados.") EndIf Return Static Function ValidPerg() Local _sAlias, i, j _sAlias := Alias() dbSelectArea("SX1") dbSetOrder(1) aRegs:={} cPerg := if(upper(substr(cVersao,1,3)) == 'MP8',padr(cPerg,6),padr(cPerg,10)) AADD(aRegs,{cPerg,"01","Vend De?" ,"Espanhol","Ingles","mv_ch1","C",6,0,0,"G","","mv_par01","","","","","","","","","","","","","","","","","","","","","","","","","SA3",""}) AADD(aRegs,{cPerg,"02","Vend Até?" ,"Espanhol","Ingles","mv_ch2","C",6,0,0,"G","","mv_par02","","","","","","","","","","","","","","","","","","","","","","","","","SA3",""}) AADD(aRegs,{cPerg,"03","Para Tabela" ,"Espanhol","Ingles","mv_ch3","C",3,0,0,"G","","mv_par03","","","","","","","","","","","","","","","","","","","","","","","","","DA0",""}) For i := 1 to Len(aRegs) If !dbSeek(cPerg+aRegs[i,2]) RecLock("SX1",.T.) For j := 1 to FCount() If j <= Len(aRegs[i]) FieldPut(j,aRegs[i,j]) Endif Next j MsUnlock() dbCommit() EndIf Next i dbSelectArea(_sAlias) Return /*/{Protheus.doc} FBFATM01 //TODO Ponto de entrada que adiciona menu no Outras Ações, na tela de cadastro de vendedor. @author fbsolutions.com.br @since 01/01/2017 @version undefined */ User Function MTA040MNU() aAdd(aRotina, {'Atualiza Tabelas','U_FBFATM01' , 0 , 3,0,NIL}) Return |
Espero ter ajudado!
Fernando Bueno
Consultor em FBSOLUTIONS
Sou consultor na área de implantação de sistemas ERP, com experiência na análise e implantação de projetos de sistemas, configurando a estrutura do software, capacitando usuários-chaves, ministrando treinamentos e workshops.
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In