Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo protheus

Procurando campos nas enormes tabelas do Protheus...

Quando estamos programando, de vez em quando precisamos localizar um campo para saber seu tipo e tamanho e declararmos corretamente variáveis e outros que receberão seus valores. Com a quantidade de campos cada vez maior nas tabelas do Protheus, é necessário usar artifícios para se ter agilidade nesta busca. Segue então, um script que ajuda a localização de um, neste "mar" de campos. Por exemplo, para localizar rapidamente o campo E2_NUM e ver suas propriedades: SELECT TABELAS.NAME, COLUNAS.NAME AS COLUNA, TIPOS.NAME AS TIPO, COLUNAS.LENGTH AS TAMANHO, COLUNAS.ISNULLABLE AS EH_NULO FROM sysobjects AS TABELAS, syscolumns AS COLUNAS, systypes AS TIPOS WHERE -- JOINS TABELAS.ID = COLUNAS.ID AND COLUNAS.USERTYPE = TIPOS.USERTYPE AND TABELAS.NAME = 'SE2010' AND COLUNAS.NAME = 'E2_NUM' Obs.: Post complementar à outro feito neste blog: SQL para Listar os campos das tabelas

Mais uma de NFe - Consultando inutilização

Verifique se realmente suas notas fiscais foram inutilizadas consultando-as no link: Consultando inutilização

Path Relativo X Absoluto !

Documentando, para quando ainda houver dúvida: Em diversas funções do Protheus, como FCREATE(), temos que mencionar o path alvo. No caso de FCREATE(), o alvo será onde o arquivo será criado. Este path pode ser absoluto ou relativo. Mas qual a diferença? Quando informado um path relativo, sem a unidade de disco (exemplo: "\temp\teste"), o diretório alvo, será o servidor, abaixo do RootPath*. Para apontar para um diretório na máquina cliente (onde o SmartClient está sendo executado), é necessário informar um path absoluto, com unidade de disco (exemplo: "c:\trabalho\teste"). * RoothPath = tag no arquivo appserver.ini, que identifica o diretório raiz do Sistema (ERP), a partir do qual todos os diretórios utilizados pelo Sistema serão criados.

Barras de título ocupando espaço?

Precisando ganhar alguns centímetros de tela? Usando as propriedades WS_VISIBLE e WS_POPUP, neste caso, é possível remover a barra de títulos em janelas. Veja os exemplos: define msdialog oDialog title "Sem barra de titulo" from 0,0 to 800,100 pixel style nOR( WS_VISIBLE, WS_POPUP ) oDialog:lMaximized := .t.   // maximiza janela. * No construtor construtor MsDialog:New, use deste modo: oDialog := msdialog ():new(0,0,800, 1000, "Sem barra de titulo" ,,,,nOr(WS_VISIBLE,WS_POPUP),CLR_BLACK,CLR_WHITE,,,.t.,,,,.t.) oDialog:lMaximized := .t.   // maximiza janela. * No construtor TDialog:New, use deste modo: oDialog := tdialog():New(0,0,800,1000, "Sem barra de titulo" ,,,,nOr(WS_VISIBLE,WS_POPUP),CLR_BLACK,CLR_WHITE,,,.t.,,,,,,.f.) oDialog:lMaximized := .t.   // maximiza janela.

Zeros à esquerda automaticamente

Uma dica simples para que no momento de digitar um código (ex.:000034), você e seus usuários não fiquem contando os zeros à esquerda deste. Configurador Com o pequeno código abaixo (no campo Regra ) num gatilho*, você não terá mais este trabalho. O teste foi feito com o campo RA_REGISTR : Os campos obrigatórios (em azul) devem ser preenchidos. Confirme, saia do Configurador e teste o campo que você configurou o gatilho. Após preencher o campo e clicar TAB (ou ENTER), os zeros à esquerda completam o tamanho do campo : * Se você não sabe onde e como criar gatilhos, acesse o link:   Criando gatilhos no Protheus

Status das tabelas: SPED050 e SPED052

STATUS DA TABELA SPED050: Status NFe (campo STATUS) :  1 = NFe Recebida.  2  =  NFe Assinada.  3  =  NFe com falha no schema XML.  4  =  NFe transmitida.  5  =  NFe com problemas.  6  =  NFe autorizada.  7  =  Cancelamento. Status Cancelamento/inutilização (campo STATUSCANC) :  1  =  NFe Recebida.  2  =  NFe Cancelada.  3  =  NFe com falha de cancelamento/inutilização. Status Mail (campo STATUSMAIL) :  1  =  A transmitir.  2  =  Transmitido.  3  =  Bloqueio de transmissão – cancelamento/inutilização. STATUS DO SPED052:  1  =  Lote transmitido.  2  =  Lote recebido com sucesso.  3  =  Lote com erro.

Cores usadas no Protheus

• Segue uma tabela com as cores mais usadas no Protheus: Preto CLR_BLACK Azul Claro CLR_HBLUE Azul CLR_BLUE Verde Claro CLR_HGREEN Verde CLR_GREEN Ciano CLR_HCYAN Ciano CLR_CYAN Vermelho Claro CLR_HRED Vermellho CLR_RED Magenta Claro CLR_HMAGENTA Magenta CLR_MAGENTA Amarelo CLR_YELLOW Marrom CLR_BROWN Cinza Claro CLR_HGRAY Cinza CLR_GRAY Branco CLR_WHITE • Estas podem ser usadas por exemplo,  numa grid : @ 0, 0 to 300,795 dialog oDlg01 title "Exemplo" @ 1, 1 to 110,400 browse "TABTEMP" fields aCampos object _oBrowseCor // COR DA FONTE _oBrowseCor:obrowse:acolumns[1]:BCLRFORE := {|SETVAL| fTrocaCor(1)} // COR DA LINHA _oBrowseCor:obrowse:acolumns[1]:BCLRBACK := {|SETVAL| fTrocaCor(2)} @ 125, 10 bmpbutton type 02 action close(oDlg01) act...

Carregar suas funções após o login

Precisa carregar uma função logo após o login?  Então a função AfterLogin pode ser o que você precisa. Veja o exemplo: #include "protheus.ch" user function  AfterLogin ()     local cId := ParamIXB [ 1 ] , cNome := ParamIXB [ 2 ]    msgalert ( "Hora que o usuário "  + cId + " - " + alltrim(cNome) + " efetuou login = " + time ()) return nil O exemplo usou somente um msgalert, mas você pode executar suas próprias funções executando as tarefas que deseja executar no sistema, antes de qualquer módulo ser chamado. Bom uso!

Mudar a logo do Protheus

Segue uma dica que a maioria já deve conhecer, mas fica registrado para aqueles que estão iniciando ou ainda não testaram. Para mudar a logo de identidade do cliente, você tem que criar uma imagem PNG (Portable Network Graphics), e disponibilizar no diretório STARTPATH (\system) do Sistema, com a seguinte nomenclatura: LGMID.PNG   - Para logo utilizado por todos os grupo de empresas. LGMID##.PNG - Para logo utilizado para um grupo de empresas específico. No lugar de ##, informe o código do grupo de empresas. Ex .: LGMID01.PNG . Obs.: A dimensão recomendada para a imagem de identidade do cliente é de 110x110 pixels. Detectar idioma Africâner Albanês Alemão Arabe Armênio Azerbaijano Basco Bengali Bielo-russo Birmanês Bósnio Búlgaro Catalão Cazaque Cebuano Chichewa Chinês (Simp) Chinês (Trad) Cingalês Coreano Crioulo haitiano Croata Dinamarquês Eslovaco Esloveno Espanhol Esperanto Estoniano Finlandês Francês Galego Galês Georgiano Grego Gujarat...

Criando janelas sem borda

Ás vezes, por uma questão de estética, não queremos janelas com borda. Para isso, podemos definir estilo usando a função: NOR(WS_VISIBLE,WS_POPUP). Veja o exemplo: user function fJanSemB() define msdialog ojan01 title "Janela sem borda" pixel from 180,180 to 550,700 style nor(WS_VISIBLE,WS_POPUP) cTGet := space(20) oTGet := tget():new( 1,1,{||cTGet}, oJan01, 80, 5,"@!",,0,,,.f.,,.t.,,.f.,,.f.,.f.,,.f.,.f.,,cTGet,,,,) @ 8, 5 button "Sair" action oJan01:end() activate dialog ojan01 centered return Já testamos, agora, é só usar!

Protheus integrado ao Active Directory (Single SignOn)

Usando a integração do usuário do Protheus com o Active Directory (AD): 1) O ambiente deve estar atualizado (RPO, Update, LIB e Binário). 2) Entre no Configurador / Usuários / Senhas / Política. 3) Na primeira aba, em Parâmetros, defina no como "Habilitar single sign-on" se a integração será obrigatória ou opcional. 4) No combo "Modalidade de Single Sign-on", defina como "Active Directory". Clique em Confirmar. 5) Agora vá ao cadastro do usuário (Usuário / Senhas / Usuários), clique sobre o usuário e clique em Alterar. Na primeira aba (Usuário), selecione a aba Active Directory. 6) Clique duas vezes sobre o campo abaixo de "Domínio", e preencha o domínio da rede.  Clique duas vezes sobre o campo abaixo de "Usuário", e preencha o nome de usuário da rede que ficará vinculado a este usuário do Protheus. Clique em Confirmar. Ao entrar no Protheus, já irá aparecer por padrão o dom...

Teclas de Atalhos TOTVS Developer Studio (Eclipse)

Seguem os atalhos para o TOTVS Developer Studio  (Eclipse)  : CTRL+H Localizar vários locais CTRL+F Localizar / substituir CTRL+K Localizar proximo resultado abaixo CTRL+SHIFT+K Localizar proximo resultado acima F11 Depurar F5 Percorre linha F6 Pula linha CTRL+F8 Trocar perspectiva CTRL+F7 Mudar visualização CTRL+F6 Navegar entre os fontes abertos CTRL+M Maximiza / miniminiza fonte CTRL+N Novo (wizard) CTRL+L Ir para linha CTRL+D Deleta toda linha CTRL+ALT+DOWN Duplica linha para baixo CTRL+ALT+UP Duplica linha para cima CTRL+SHIFT+L Apresenta lista de atalhos ALT+UP Move linha para cima ALT+DOWN Move linha para baixo CTRL+SHIFT+I Indenta o fonte CTRL+F9 Compilar CTRL+ESPAÇO...

Datas por extenso

Já precisou escrever datas por extenso? A pequena função  fDatExt(),  abaixo pode resolver o problema. O resultado pode ser visto nas imagens abaixo: No fonte abaixo, substitua dDatabase , por sua variável (do tipo data): #include "protheus.ch" user function fDataExt() msgalert(u_fDatExt( dDataBase , .t.)) msgalert(u_fDatExt( dDataBase , .f.)) return user function fDatExt (dParDat, lParAbr) local cRetDat := "" if lParAbr cRetDat += cValToChar(day(dParDat)) cRetDat += " de " cRetDat += mesextenso(dParDat) cRetDat += " de " cRetDat += cValToChar(year(dParDat)) else cRetDat += capital(extenso(day(dParDat), .t.)) cRetDat += " de " cRetDat += mesextenso(dParDat) cRetDat += " de " cRetDat += capital(extenso(year(dParDat), .t.)) endif return cRetDat Veja também: Extenso  e Funções de Data

Implantar lei 12.741 no Protheus

Conhecida como lei da transparência, que trata que todos os impostos devem vir descriminados no cupom fiscal. Para implantar, atualize o Protheus para última versão disponível no Portal da Totvs, em seguida execute as atualizações U_UPDLO112 e U_UMTFOFV9. Crie no menu a opção com o programa LJIMPNCM, com o nome de "Carrega Alíquota Imposto", que deverá importar o arquivo "IBPTax.0.0.2.csv", que está disponível no link  de olho no Imposto Estes impostos são ligados através do campo B1_POSIPI(SB1 - Produtos), YD_TEC e YD_ALIQIMP(SYD - Nomeclatura Merco Sul). Se tudo correr bem, será mostrada no cupom fiscal a mensagem "Valor aprox dos tributos R$ 14,36 (31.436%) Fonte:IBPT" por exemplo.

Substituindo Emulador Bematech pelo Sweda no Protheus

Resolvi substituir o emulador depois de vários problemas com a geração de títulos repetidos no emulador Bematech. Quando fiz a substituição, o problema acabou. Esse Emulador Sweda é muito estável, assim podemos testar melhor nossas customizações. Para começar acesse o site  Sweda  e faça os seguintes downloads: Connect/C : Windows - Biblioteca compatível com as DLLs de Alto Nível do Mercado. Connect/Sim :  Emulador da Impressora Sweda IF ST120.  Entre em outro link  lacrador Sweda  e faça o seguinte download: Instalar_Lacrador02.10.00 Agora acesse o site  Eterlogic  e faça o seguinte download: Virtual Serial Ports Emulator :  Emulador de serial. Configurando o Emulador de Serial Instale " Virtual Serial Ports Emulator ", depois abra-o, vá em "device", "create", na opção "Device Pair" escolha "Pair", em "avançar". Em "Virtual Serial Port 1" coloque "COM3" e na "Virtual Seria...

Converter PDF para JPG no Protheus

Você pode converter PDF para JPG no Protheus, usando ADVPL, com a ajuda de dois utilitários (free) externos: ImageMagick e Ghostscript . Baixe-os e instale-os. IMPORTANTE: se você instalar em seu servidor, todos seus usuários do Protheus na rede poderão usar seu programa ADVPL.   Segue o programa ADVPL: static function fConvPDFJPG(cNomPDF, cNomJPG)    local lRet := .f.,;          cPathImgMgk := "C:\PROGRA~1\IMAGEM~1.9-Q\" ,;          cPathProth := "C:\PROTHEUS\PROTHE~1\TEMP\"    // ATENCAO: OS COMANDOS ABAIXO DEVEM FICAR EM MINUSCULO.    // OS PATHs DEVEM TER 8 DIGITOS (USE DIR /X NO CMD PARA VER O PATH REDUZIDO)    if waitrunsrv( cPathImgMgk + "convert -density 300 " + cPathProth + cNomPDF + " -quality 80 " + cPathProth + cNomJPG, .t., cPathImgMgk )       lRet := .t.    endif return lRet Observações: 1 - O programa ADVPL usa a fu...

Protheus: Alterando a tela de login

Muitos analistas e usuários, não gostam da tela de login "BY YOU more business... " do Protheus. Que tal mudar tudo, colocando sua logomarca, slogan e outros elementos, deixando esta tela inicial, com a cara de sua empresa? Bom, para isto funcionar, siga EXATAMENTE os passos abaixo: 1) Baixe os arquivos, no link abaixo, e edite-os da maneira que achar melhor, trocando as imagens da Coca Cola , pelas imagens de sua empresa (não altere o tamanho, nem o tipo do arquivo): • LINK PARA BAIXAR OS ARQUIVOS 2) Abra o Windows Explorer e crie uma pasta com o nome telalogin ,  dentro de sua pasta RDMAKE. C opie para dentro desta pasta telalogin , os arquivos de imagem baixados e editados conforme o passo 1. 3) Abra o IDE e compile para autenticar (logar). 4) No seu projeto, crie uma pasta com o mesmo nome da pasta criada no passo 2, ou seja: telalogin . 5) Ainda no IDE, clique com o botão direito na pasta telalogin (para selecioná-la). Agora clique com o botão ...

Modo de edição

Desde a versão 8.11, ao clicar com o botão direito do mouse sobre o título de uma coluna do aCols, pode-se escolher editar os dados por linha ou por célula , ou seja, em formato de planilha ou formulário. O problema é que, os usuários, fazem esta alteração sem querer! Para parar com esta confusão, desative esta opção de escolha do modo de edição, configurando o parâmetro MV_GETDADL para .F. . • Veja também: Parâmetro MV_ENCHOLD

Retirando acentos

Às vezes, por exemplo quando vamos gravar contas de e-mail, não queremos que o usuário digite acentos. Para "estes momentos", use a função  FwNoAccent( ) . Veja o exemplo abaixo: user function fTiraAcent ()    cString := "Você não pôde tomar café hoje."    cString := FwNoAccent ( cString )    alert ( cString ) return •  Veja também: Função SplitPath()