Histórico da Página
01. DADOS GERAIS
Linha de Produto: |
---|
Microsiga Protheus® |
Segmento: |
---|
Backoffice |
Módulo: |
---|
SIGAEST - |
Estoque e |
Parâmetro(s):
País(es):
Todos
Banco(s) de Dados:
Todos
Sistema(s) Operacional(is):
Todos
Custos | |
Função: | MATA330 - Custo Médio |
---|
02. SITUAÇÃO/REQUISITO
Por meio desta rotina, o Sistema calcula o custo médio ou contábil de forma on-line a cada valorização dos estoques dos produtos com base nas novas entradas de matérias-primas somadas aos saldos existentes.
Essa rotina pode ser executada com o Sistema em uso por todos os usuários. Nesse caso, as movimentações que estão acontecendo simultaneamente ao cálculo podem influir no resultado. Para que a rotina seja executada dessa forma, o parâmetro MV_CUSTEXC deve estar com o conteúdo igual a "N".
Outra forma de execução (mais segura) é com o Sistema em modo exclusivo, sem outros usuários utilizando os arquivos necessários ao cálculo. Para que a rotina seja executada dessa forma, o parâmetro MV_CUSTEXC deve estar com o conteúdo igual a "S".
Se o usuário quiser fazer os lançamentos automáticos somente no final do mês/período, deve definir o parâmetro MV_CUSMED com "M". Consulte o manual do módulo Configurador para mais detalhes, assim, o custo médio pode ser refeito através da rotina "Recálculo do Custo Médio" de três formas diferentes:
• Sequencial: na ordem em que os movimentos aconteceram.
• Diária: pelos movimentos de cada dia. Contempla todos os dias do período selecionado pelo usuário, sendo o início do período o conteúdo do parâmetro MV_ULMES+1 e o conteúdo da pergunta “Data inicial”.
• Mensal: pelos movimentos do mês/período. Contempla todos os dias do período selecionado pelo usuário, sendo o início do período o conteúdo do parâmetro MV_ULMES+1 e o conteúdo da pergunta “Data inicial”.
No reprocessamento do custo médio são eliminados todos os lançamentos contábeis já realizados e gerados novamente.
No custo diário/mensal, o Sistema considera primeiro as entradas (compras) e depois as saídas, do período. Vale ressaltar que os movimentos internos respeitam seus níveis e processo e, por esta razão, essa regra não se aplica a esses movimentos.
03.
SOLUÇÃO
Para os cenários descritos é possível utilizar o parâmetro "MV_PERDINF" que foi implementado para atender aos casos de perda nos apontamentos de produção. Seu objetivo é identificar qual o conceito deve ser aplicado ao processo de apontamento de produção, quando for informada a quantidade de perda.
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function JOBM330()
Local lCPParte := .F. //-- Define que não será processado o custo em partes
Local lBat := .T. //-- Define que a rotina será executada em Batch
Local aListaFil := {} //-- Carrega Lista com as Filiais a serem processadas
Local cCodFil := 'D MG 01' //-- Código da Filial a ser processada
Local cNomFil := 'Filial BELO HOR' //-- Nome da Filial a ser processada
Local cCGC := '01' //-- CGC da filial a ser processada
Local aParAuto := {} //-- Carrega a lista com os 21 parâmetros
ConOut(Repl("-",80))
ConOut(PadC("Rotina Recalculo Custo Medio",80))
ConOut(PadC("Conectando Ambiente.....",80))
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" TABLES "AF9","SB1","SB2","SB3","SB8","SB9","SBD","SBF","SBJ","SBK","SC2","SC5","SC6","SD1","SD2","SD3","SD4","SD5","SD8","SDB","SDC","SF1","SF2","SF4","SF5","SG1
Exemplo:
#include "rwmake.ch"
#include "TbiConn.ch"
User Function jobm330()
Local PARAMIXB1 := .T. // - Caso a rotina seja rodada em batch(.T.), senão (.F.)
Local PARAMIXB2 := {"01"} // - Lista com as filiais a serem consideradas (Batch)
Local PARAMIXB3 := .T. // - Se considera o custo em partes do processamento
Local PARAMIXB4 := {} // - Parametros para execução da rotina
Local aEmp := {"99","01"}
PREPARE ENVIRONMENT EMPRESA aemp[1] ;FILIAL aemp[2] USER 'Administrador' PASSWORD ' ' ;
TABLES "AF9","SB2","SB9","SBD","SC2","SD1","SD3","SD8","SF4","SF5","SI1","SI2","SI3","SI5";,"SI6","SI7","SM2" ;
MODULO "EST"
PARAMIXB4 := { dDataBase ,;
2,;
2,;
1,;
0,;
2,;
" " ,;
" " ,;
1,;
3,;
1,;
3,;
2,;
2,;
1,;
1,;
1,;
1,;
2,;
2,;
2} //parâmetros SX1 definidos pelo usuário
MSExecAuto({|x,y,z,w| mata330(x,y,z,w)},PARAMIXB1,PARAMIXB2,PARAMIXB3,PARAMIXB4)RESET ENVIRONMENT
Return Nil
Sintaxe:
MATA330 - Custo Contábil ( PARAMIXB[1]PARAMIXB[2] [ PARAMIXB[3] ] [ PARAMIXB[4] ] ) --> Nil
Nil (nulo)
Nil
Esta função pode ser executada através de uma rotina automática.
No exemplo abaixo, existe a preparação do ambiente para rodar esta rotina,que é feita através do comando Prepare Environment.
// aemp[1] = Empresa (Caracter)
// aemp[2] = Filial (Caracter)
// Administrador = Através de qual usuário irá executar a rotina. (Caracter)
// senha = Senha do usuário (Caracter)
PREPARE ENVIRONMENT EMPRESA aemp[1] ;
FILIAL aemp[2] ;
USER 'Administrador' ;
PASSWORD 'senha' ;
TABLES "AF9","SB2","SB9","SBD","SC2","SD1","SD3","SD8","SF4", ;
"SF5
","SI1","SI2","SI3","SI5","SI6","SI7","SM2
" ;MODULO "EST"
","ZAX","SAH","SM0","STL"
ConOut(PadC("Ambiente Conectado com Sucesso...",80))
ConOut(Repl("-",80))
Conout("Início da execução do JOBM330")
//-- Adiciona filial a ser processada
dbSelectArea("SM0")
dbSeek(cEmpAnt)
Do While ! Eof() .And. SM0->M0_CODIGO == cEmpAnt
cCodFil := SM0->M0_CODFIL
cNomFil := SM0->M0_FILIAL
cCGC := SM0->M0_CGC
//-- Somente adiciona a Filial 01
If cCodFil == "01"
Conout("COMECOU A ADD FILIAL NA LISTA DE FILIAL")
//-- Adiciona a filial na lista de filiais a serem processadas
Aadd(aListaFil,{.T.,cCodFil,cNomFil,cCGC})
EndIf
dbSkip()
EndDo
//-- Executa a rotina de recálculo do custo médio
MATA330(lBat,aListaFil,lCPParte, aParAuto)
ConOut("Término da execução do JOBM330")
Return
04. DEMAIS INFORMAÇÕES
Parâmetros:
aParAuto :
MV_PAR01 = Data Limite Final
MV_PAR02 = Mostra lanctos. Contábeis
MV_PAR03 = Aglutina Lanctos Contábeis
MV_PAR04 = Atualizar Arq. de Movimentos
MV_PAR05 = % de aumento da MOD
MV_PAR06 = Centro de Custo
MV_PAR07 = Conta Contábil a inibir de
MV_PAR08 = Conta Contábil a inibir até
MV_PAR09 = Apagar estornos
MV_PAR010 = Gerar Lancto. Contábil
MV_PAR011 = Gerar estrutura pela Moviment
MV_PAR012 = Contabilização On-Line Por
MV_PAR013 = Calcula mão-de-Obra
MV_PAR014 = Método de apropriação
MV_PAR015 = Recalcula Nível de Estrut
MV_PAR016 = Mostra sequência de Cálculo
MV_PAR017 = Seq Processamento FIFO
MV_PAR018 = Mov Internos Valorizados
MV_PAR019 = Recálculo Custo transportes
MV_PAR020 = Cálculo de custos por
MV_PAR021 = Calcular Custo em Partes
01. DADOS GERAIS
02. DESCRIÇÃO
Por meio desta rotina, o Sistema calcula o custo médio ou contábil de forma on-line a cada valorização dos estoques dos produtos com base nas novas entradas de matérias-primas somadas aos saldos existentes.
Essa rotina pode ser executada com o Sistema em uso por todos os usuários. Nesse caso, as movimentações que estão acontecendo simultaneamente ao cálculo podem influir no resultado. Para que a rotina seja executada dessa forma, o parâmetro MV_CUSTEXC deve estar com o conteúdo igual a "N".
Outra forma de execução (mais segura) é com o Sistema em modo exclusivo, sem outros usuários utilizando os arquivos necessários ao cálculo. Para que a rotina seja executada dessa forma, o parâmetro MV_CUSTEXC deve estar com o conteúdo igual a "S".
Se o usuário quiser fazer os lançamentos automáticos somente no final do mês/período, deve definir o parâmetro MV_CUSMED com "M". Consulte o manual do módulo Configurador para mais detalhes, assim, o custo médio pode ser refeito através da rotina "Recálculo do Custo Médio" de três formas diferentes:
• Sequencial: na ordem em que os movimentos aconteceram.
• Diária: pelos movimentos de cada dia. Contempla todos os dias do período selecionado pelo usuário, sendo o início do período o conteúdo do parâmetro MV_ULMES+1 e o conteúdo da pergunta “Data inicial”.
• Mensal: pelos movimentos do mês/período. Contempla todos os dias do período selecionado pelo usuário, sendo o início do período o conteúdo do parâmetro MV_ULMES+1 e o conteúdo da pergunta “Data inicial”.
No reprocessamento do custo médio são eliminados todos os lançamentos contábeis já realizados e gerados novamente.
No custo diário/mensal, o Sistema considera primeiro as entradas (compras) e depois as saídas, do período. Vale ressaltar que os movimentos internos respeitam seus níveis e processo e, por esta razão, essa regra não se aplica a esses movimentos.
03. SOLUÇÃO
Para os cenários descritos é possível utilizar o parâmetro "MV_PERDINF" que foi implementado para atender aos casos de perda nos apontamentos de produção. Seu objetivo é identificar qual o conceito deve ser aplicado ao processo de apontamento de produção, quando for informada a quantidade de perda.
MV_PERDINF = .F.
O sistema considera que a quantidade de perda, informada nos apontamentos de produção, é apenas “informativa”. Neste caso, a baixa de empenhos é realizada proporcionalmente à quantidade
produzida, desconsiderando a quantidade perdida. Desta forma o custo será proporcional ao que foi produzido.
MV_PERDINF = .T.
O sistema considera que a quantidade de perda informada nos apontamentos de produção é considerada na composição do saldo da ordem de produção. Neste caso a baixa de empenhos é
realizada proporcionalmente à quantidade produzida mais a quantidade de perda informada. Desta forma o custo será composto pelo total, pois neste caso a perda também é considerada no apontamento da OP.
Exemplo:
Custo Unitário do produto MP: R$ 1,00
Estrutura do Produto:
Ordem de Produção solicitando a quantidade de 3 PA's:
MV_PERDINF = .F.
Quantidade
Produzida
Quantidade
Perda
Status da
Ordem de Produção
Quantidade
Requisitada de MP
Custo da
Ordem de Produção
2
1
Encerrada
6
R$6,00
MV_PERDINF = .T.
Quantidade
Produzida
Quantidade
Perda
Status da
Ordem de Produção
Quantidade
Requisitada de MP
Custo da
Ordem de Produção
2
1
Encerrada
9
R$9,00
Uma outra saída seria fazer a devolução das materias primas referente a produção perdida (vinculando a OP) e depois baixar manualmente as materias primas (sem vincular a OP).
04. DEMAIS INFORMAÇÕES
05. ASSUNTOS RELACIONADOS
- Não há.
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |