25 de jan. de 2011

Relatório por e-mail

Segue abaixo parametos básicos que devem ser configurados para envio de relatório por e-mail


MV_RELACNT - E-mail/Conta que será utilizado para enviar o relatorio.
Exemplo: conta@seudominio.com.br

MV_RELPSW - Senha do e-mail/conta que será utilizada para envio dos relatórios.
Exemplo: suasenha

MV_RELSERV - Endereço do servidor smtp utilizado para enviar os relatórios.
Exemplo: smtp.seudominio.com.br

MV_MAILADT - Conta de e-mail que irá receber automaticamente uma cópia dos relatórios enviados.
Exemplo: conta.auditoria@seudominio.com.br

20 de dez. de 2010

SXE e SXF

Função para manutenção nos arquivos SXE e SXF.

APCFG110()

10 de dez. de 2010

Desfazer virada de saldos do estoque

Olá pessoal, não é recomentado a execução desse procedimento, mais caso seja necessario, segue abaixo os passos.

Obs.: É conveniente guardar uma cópia de segurança antes de iniciar este processo.

Caso haja a necessidade de incluir alguma nota em um mês já fechado, devem ser tomados os seguintes procedimentos:

1. Alterar o Parâmetro MV_ULMES, para a data do fechamento anterior
Ex:
Data do último fechamento     -     30/11/95
Data do Fechamento anterior     -     31/10/95
Data para o parâmetro          -     31/10/95

2. Eliminar do arquivo SB9, todos os registros cuja data esteja preenchida com a data do último fechamento (Campo B9_DATA), através de um utilitário como APSDU.

3. Fazer os lançamentos necessarios e executar os procedimentos de virada de saldo.

OBSERVAÇÕES:Existe na tabela SC2 (Ordens de Produção) alguns campos (C2_VINI1...C2_VINI5) que são atualizados no processo de virada de saldos.
Os mesmos contém o total apropriado na OP até fechamento (famoso Saldo em Processo).
Quando é feito este processo todo que foi sugerido, e um novo recalculo do custo médio é executado, o sistema parte de um Saldo Inicial errado e consequentemente os valores das produções também.
Porem esse problema não ocorre quando você faz virada do mês sem OP´s em aberto (em outras palavras, as OP´s não passam de um mês para outro) não tem problema nenhum você seguir os procedimentos acima. O problema só ocorre quando passa com OP´s em aberto para o mês seguinte e com materiais requisitados nestas (materiais em processo).

Procedimentos para realização da virada de saldos estoque

Olá pessoal mais uma dica para ajudar os amigos na realização da virada de saldo do estoque.

1.     Verificar o Parâmetro MV_ULMES, data do ultimo fechamento do estoque.

2.     Executar a rotina "Custo das Entradas", disponível no Menu Miscelânea.

3.     Digita o Inventário (Guardar a data de digitação que será utilizada nas rotinas de acerto de Inventário e Calculo do custo Médio) na opção Inventário no Menu Atualizar.

4.     Executar a rotina de "Acerto de Inventário" (Opção no Menu Miscelânea), onde a data solicitada no parâmetro "Data para seleção?" {Deve ser a mesma do inventário}.

5.     Executar a rotina de acerto do "Saldo Atual", disponível no Menu Miscelânea.

6.     Executar a rotina de calculo do "Custo Médio" do Menu Miscelânea, onde a "Data Limite Final" solicitada pelo parâmetro deve ser a mesma data da digitação do inventário ou a data utilizada no parâmetro da rotina de "acerto de Inventário". Na tela de tipo de opções para recalculo selecionar a opção Mensal, visto que esta irá valorizar primeiro o custo das Entradas, e depois as movimentações de saída.

7.     Emitir relatórios para conferencia (Posição de Estoque, Kardex por dia, etc.)

8.     Executar a rotina de "Virada dos Saldos"(Miscelânea), cuja rotina realiza a gravação de registros no arquivo SB9, com o saldo final obtido na rotina de Recalculo do Custo Médio, como o saldo inicial do próximo período(Mês). A data base para o fechamento solicitado no parâmetro deve ser a mesma do Inventário e do Custo Médio, que será gravado no parâmetro MV_ULMES.

21 de out. de 2010

Filtrando Somente os Deletados APSDU

Tive a necessidade de filtrar somente os registros deletados do apsdu para fazer uma exportação e depois de algum tempo de pesquisa encontrei a seguinte opção:

Vá em Filtro e em seguida escolha a opção expressão regular e digite: DELETED()

É só adicionar, confirma e está pronto seu filtro somente com os deletados.

20 de out. de 2010

Enviado E-Mail com SSL


Pessoal segue abaixo um exemplo do TDN de como enviar e-mail utilizando SSL.

Testei e funcionou corretamente.

user function sendMail()

local oServer  := Nil
local oMessage := Nil
local nErr     := 0


local cPopAddr  := "pop.example.com"      // Endereco do servidor POP3
local cSMTPAddr := "smtp.example.com"     // Endereco do servidor SMTP
local cPOPPort  := 110                    // Porta do servidor POP
local cSMTPPort := 465                    // Porta do servidor SMTP
local cUser     := "user@example.com"     // Usuario que ira realizar a autenticacao
local cPass     := "password"             // Senha do usuario
local nSMTPTime := 60                     // Timeout SMTP
            
// Instancia um novo TMailManager
oServer := tMailManager():New()   

// Usa SSL na conexao
oServer:setUseSSL(.T.)

// Inicializa
oServer:init(cPopAddr, cSMTPAddr, cUser, cPass, cPOPPort, cSMTPPort)

// Define o Timeout SMTP
if oServer:SetSMTPTimeout(nSMTPTime) != 0
  conout("[ERROR]Falha ao definir timeout")
  return .F.
endif

// Conecta ao servidor
nErr := oServer:smtpConnect()
if nErr <> 0
  conOut("[ERROR]Falha ao conectar: " + oServer:getErrorString(nErr))
  oServer:smtpDisconnect()
  return .F.
endif
                     
// Realiza autenticacao no servidor
nErr := oServer:smtpAuth(cUser, cPass)
if nErr <> 0
  conOut("[ERROR]Falha ao autenticar: " + oServer:getErrorString(nErr))
  oServer:smtpDisconnect()
  return .F.
endif

// Cria uma nova mensagem (TMailMessage)
oMessage := tMailMessage():new()
oMessage:clear()
oMessage:cFrom    := "sender@example.com"
oMessage:cTo      := "receiver@example.com"
oMessage:cCC      := "cc@example.com"
oMessage:cBCC     := "bcc@example.com"
oMessage:cSubject := "Assunto"
oMessage:cBody    := "Corpo do e-mail"
                                       
// Envia a mensagem
nErr := oMessage:send(oServer)
if nErr <> 0
  conout("[ERROR]Falha ao enviar: " + oServer:getErrorString(nErr))
  oServer:smtpDisconnect()
  return .F.
endif

// Disconecta do Servidor
oServer:smtpDisconnect()

return .T.

Video Aula

Olá amigos,

Estou preparando um material sobre diversos assuntos como, Criação de Campos, Criação de Gatilhos, Atualização de SP, e ainda sobre rotinas padrões do Financeiro, Compras e Gestão de Pessoal.