Mudanças entre as edições de "Custo Médio"
Linha 76: | Linha 76: | ||
Se Tipo=3 -> Custo Médio do Produto | Se Tipo=3 -> Custo Médio do Produto | ||
Se não for passada uma data calcula até a data atual. | Se não for passada uma data calcula até a data atual. | ||
+ | |||
+ | ---------------------------------------------------------------------- | ||
+ | |||
+ | O Totall BackOffice possui em sua base funções para cálculo e apresentação de custo médio que são utilizadas pelos módulos do sistema para exibir o mesmo. | ||
+ | Estas funções são utilizadas por exemplo nos forms de Inventário, Sintegra e Histórico de Produtos. | ||
+ | Este documento descreve de forma resumida como estas informações estão guardadas no banco de dados, bem como as operações matemáticas para o cálculo do custo médio. | ||
+ | |||
+ | 1. Cálculo do Custo Médio: | ||
+ | O cálculo do custo médio é baseado nas vendas(TT_VEN) e compras (TT_COM) de um determinado produto. | ||
+ | Não leva em conta lançamentos avulsos do produto(TT_LAN). | ||
+ | A formula utilizada é a seguinte: | ||
+ | ÿ feito um select com todas as vendas e compras, ordenadas por data, de um determinado produto. | ||
+ | Para cada linha se calcula: | ||
+ | |||
+ | Qtd em Estoque = Qtd em Estoque Anterior + Qtd Movimentada | ||
+ | Se for uma compra | ||
+ | Valor do Estoque = Valor do Estoque Anterior + Valor Movimentado; | ||
+ | Custo Médio := Valor Estoque / Qtd Estoque | ||
+ | Se for uma venda | ||
+ | Valor do Estoque = Valor do Estoque Anterior + (Qtd Movimentada pela venda * Custo Médio) | ||
+ | |||
+ | Observações: | ||
+ | a) A cada nova linha são utilizados para o cálculo a Quantidade e Valor de Estoque da linha anterior. | ||
+ | b) O Custo Médio nunca pode ficar negativo visto que não é possível se ter um estoque negativo, caso em qualquer momento isto aconteça, o calculo das linhas subseqüente ficará inconsistente. | ||
+ | c) Note pela fórmula que o valor de venda do produto em nada interfere no custo médio. | ||
+ | |||
+ | Exemplo de cálculo: | ||
+ | Ver planilha Custo Médio.xls | ||
+ | |||
+ | 2. Representação física no banco | ||
+ | TT_ICO | ||
+ | QTD_CM - Guarda a quantidade movimentada a ser utilizada no cálculo | ||
+ | VLR_CM - Guarda o valor movimentado a ser utilizada no cálculo | ||
+ | ORD_CM - Ordenação utilizada no cálculo do custo médio (somente para garantir que ao se verificar os itens em um mesmo dia sempre fiquem na mesma ordem) | ||
+ | |||
+ | TT_IVE | ||
+ | QTD_CM - Idem ao TT_ICO | ||
+ | VLR_CM - Idem ao TT_ICO | ||
+ | ORD_CM - Idem ao TT_ICO | ||
+ | |||
+ | TR_MOV | ||
+ | SAL_CM ? Guarda o saldo (Qtd) de estoque após a última movimentação do dia | ||
+ | VLR_CM ? Guarda o valor de estoque após a última movimentação do dia | ||
+ | Obs.: Não é guardado o custo médio, mas para obtê-lo basta dividir o valor pela quantidade | ||
+ | |||
+ | TT_SAL | ||
+ | CAL_CM - Data até a qual já foi calculado o custo médio, utilizado para continuar o cálculo sem necessitar recalcular tudo novamente (Lembrando que o custo médio não é calculado logo após uma compra ou uma venda pois isto iria tornar este processo demorado) | ||
+ | INI_CM ? Data inicial para se calcular o custo médio | ||
+ | VLR_CM ? Valor em estoque na data de início do custo médio | ||
+ | QTD_CM ? Quantidade em estoque na data de início do custo médio | ||
+ | Obs.: Os 3 últimos campos são para registrar um custo médio inicial para clientes que não tem como resgatar o seu estoque desde o inicio de suas atividades. | ||
+ | Neste caso o sistema começará o cálculo a partir desta data e levando em conta estes valores iniciais. | ||
+ | |||
+ | Funções de Banco Envolvidas: | ||
+ | CalculaCustoMedio(pCODFIL,pFILMAT,pCODMAT,pCODCOR,pCODTAM) | ||
+ | Calcula o custo médio de um determinado produto. | ||
+ | O custo médio é calculado a partir da maior date entre CAL_CM (Data até a qual já foi calculado) ou INI_CM (Data inicial para calcular o Custo Médio). | ||
+ | Para cada lançamento grava a ordem que o mesmo foi processado(ORD_CM), para reordenação posterior. | ||
+ | A cada dia é gravado na TR_MOV o VLR_CM e QTD_CM para futuras consultas do custo médio. | ||
+ | No final do processo é gravado em CAL_CM a data da ultima movimentação calculada. | ||
+ | |||
+ | CalculaCustoMedioFilial(pCODFIL) | ||
+ | Calcula o custo médio de toda uma filial. | ||
+ | Utiliza os mesmos processos da CalculaCustoMedio | ||
+ | |||
+ | CustoMedio (p_CodFil, p_FilMat, p_CodMat , p_CodCor, p_CodTam, p_Tipo, p_DatRef) | ||
+ | Retorna informaçoes de custo médio de um produto em determinada data e acordo com o tipo passado: | ||
+ | Se Tipo=1 -> Retorna Quantidade em estoque | ||
+ | Se Tipo=2 -> Valor Total do Estoque (Padrão) | ||
+ | Se Tipo=3 -> Custo Médio do Produto | ||
+ | Se não for passada uma data calcula até a data atual. | ||
+ | |||
+ | '''JOB_Recalcula_Custo_Medio''' | ||
+ | |||
+ | CREATE OR REPLACE PROCEDURE ProcCalculaCustoMedio IS | ||
+ | |||
+ | vCODFIL TD_FIL.CODFIL%TYPE; | ||
+ | cTemp VARCHAR(20); | ||
+ | |||
+ | CURSOR Filiais IS | ||
+ | SELECT vCODFIL | ||
+ | from TD_FIL; | ||
+ | |||
+ | BEGIN | ||
+ | |||
+ | OPEN Filiais; | ||
+ | LOOP | ||
+ | FETCH Filiais INTO vCODFIL; | ||
+ | EXIT WHEN Filiais%NOTFOUND; | ||
+ | cTemp:=CalculaCustoMedioFilial(vCODFIL); | ||
+ | END LOOP; | ||
+ | |||
+ | CLOSE Filiais; | ||
+ | |||
+ | end ProcCalculaCustoMedio; | ||
+ | / | ||
+ | |||
+ | VARIABLE JOBNO NUMBER; | ||
+ | BEGIN | ||
+ | DBMS_JOB.SUBMIT(:JOBNO | ||
+ | ,'ProcCalculaCustoMedio;' | ||
+ | ,SYSDATE | ||
+ | ,'trunc(SYSDATE) + 23/24' | ||
+ | ); | ||
+ | END; | ||
+ | / | ||
+ | |||
+ | |||
+ | '''Recalcula_Custo_Medio''' | ||
+ | |||
+ | DECLARE | ||
+ | |||
+ | vCODFIL TD_FIL.CODFIL%TYPE; | ||
+ | cTemp VARCHAR(20); | ||
+ | |||
+ | CURSOR Filiais IS | ||
+ | SELECT vCODFIL | ||
+ | from TD_FIL; | ||
+ | |||
+ | BEGIN | ||
+ | |||
+ | OPEN Filiais; | ||
+ | LOOP | ||
+ | FETCH Filiais INTO vCODFIL; | ||
+ | EXIT WHEN Filiais%NOTFOUND; | ||
+ | cTemp:=CalculaCustoMedioFilial(vCODFIL); | ||
+ | END LOOP; | ||
+ | |||
+ | CLOSE Filiais; | ||
+ | |||
+ | end; | ||
+ | / | ||
[[Categoria: Totall Backoffice]] | [[Categoria: Totall Backoffice]] | ||
[[Categoria: Funcionalidades]] | [[Categoria: Funcionalidades]] |
Edição das 14h50min de 3 de abril de 2009
O Totall BackOffice possui em sua base funções para cálculo e apresentação de custo médio que são utilizadas pelos módulos do sistema para exibir o mesmo. Estas funções são utilizadas por exemplo nos forms de Inventário, Sintegra e Histórico de Produtos. Este documento descreve de forma resumida como estas informações estão guardadas no banco de dados, bem como as operações matemáticas para o cálculo do custo médio.
1. Cálculo do Custo Médio: O cálculo do custo médio é baseado nas vendas(TT_VEN) e compras (TT_COM) de um determinado produto.
Não leva em conta lançamentos avulsos do produto(TT_LAN). A formula utilizada é a seguinte: ÿ feito um select com todas as vendas e compras, ordenadas por data, de um determinado produto. Para cada linha se calcula:
Qtd em Estoque = Qtd em Estoque Anterior + Qtd Movimentada Se for uma compra Valor do Estoque = Valor do Estoque Anterior + Valor Movimentado; Custo Médio := Valor Estoque / Qtd Estoque Se for uma venda Valor do Estoque = Valor do Estoque Anterior + (Qtd Movimentada pela venda * Custo Médio)
Observações:
a) A cada nova linha são utilizados para o cálculo a Quantidade e Valor de Estoque da linha anterior. b) O Custo Médio nunca pode ficar negativo visto que não é possível se ter um estoque negativo, caso em qualquer momento isto aconteça, o calculo das linhas subseqüente ficará inconsistente. c) Note pela fórmula que o valor de venda do produto em nada interfere no custo médio.
Exemplo de cálculo: Ver planilha Custo Médio.xls
2. Representação física no banco TT_ICO QTD_CM - Guarda a quantidade movimentada a ser utilizada no cálculo VLR_CM - Guarda o valor movimentado a ser utilizada no cálculo ORD_CM - Ordenação utilizada no cálculo do custo médio (somente para garantir que ao se verificar os itens em um mesmo dia sempre fiquem na mesma ordem)
TT_IVE QTD_CM - Idem ao TT_ICO VLR_CM - Idem ao TT_ICO ORD_CM - Idem ao TT_ICO
TR_MOV SAL_CM ? Guarda o saldo (Qtd) de estoque após a última movimentação do dia VLR_CM ? Guarda o valor de estoque após a última movimentação do dia Obs.: Não é guardado o custo médio, mas para obtê-lo basta dividir o valor pela quantidade
TT_SAL CAL_CM - Data até a qual já foi calculado o custo médio, utilizado para continuar o cálculo sem necessitar recalcular tudo novamente (Lembrando que o custo médio não é calculado logo após uma compra ou uma venda pois isto iria tornar este processo demorado) INI_CM ? Data inicial para se calcular o custo médio VLR_CM ? Valor em estoque na data de início do custo médio QTD_CM ? Quantidade em estoque na data de início do custo médio
Obs.: Os 3 últimos campos são para registrar um custo médio inicial para clientes que não tem como resgatar o seu estoque desde o inicio de suas atividades. Neste caso o sistema começará o cálculo a partir desta data e levando em conta estes valores iniciais.
Funções de Banco Envolvidas:
CalculaCustoMedio(pCODFIL,pFILMAT,pCODMAT,pCODCOR,pCODTAM) Calcula o custo médio de um determinado produto. O custo médio é calculado a partir da maior date entre CAL_CM (Data até a qual já foi calculado) ou INI_CM (Data inicial para calcular o Custo Médio). Para cada lançamento grava a ordem que o mesmo foi processado(ORD_CM), para reordenação posterior. A cada dia é gravado na TR_MOV o VLR_CM e QTD_CM para futuras consultas do custo médio. No final do processo é gravado em CAL_CM a data da ultima movimentação calculada.
CalculaCustoMedioFilial(pCODFIL) Calcula o custo médio de toda uma filial. Utiliza os mesmos processos da CalculaCustoMedio
CustoMedio (p_CodFil, p_FilMat, p_CodMat , p_CodCor, p_CodTam, p_Tipo, p_DatRef) Retorna informaçoes de custo médio de um produto em determinada data e acordo com o tipo passado: Se Tipo=1 -> Retorna Quantidade em estoque Se Tipo=2 -> Valor Total do Estoque (Padrão) Se Tipo=3 -> Custo Médio do Produto Se não for passada uma data calcula até a data atual.
O Totall BackOffice possui em sua base funções para cálculo e apresentação de custo médio que são utilizadas pelos módulos do sistema para exibir o mesmo. Estas funções são utilizadas por exemplo nos forms de Inventário, Sintegra e Histórico de Produtos. Este documento descreve de forma resumida como estas informações estão guardadas no banco de dados, bem como as operações matemáticas para o cálculo do custo médio.
1. Cálculo do Custo Médio: O cálculo do custo médio é baseado nas vendas(TT_VEN) e compras (TT_COM) de um determinado produto. Não leva em conta lançamentos avulsos do produto(TT_LAN). A formula utilizada é a seguinte: ÿ feito um select com todas as vendas e compras, ordenadas por data, de um determinado produto. Para cada linha se calcula:
Qtd em Estoque = Qtd em Estoque Anterior + Qtd Movimentada Se for uma compra Valor do Estoque = Valor do Estoque Anterior + Valor Movimentado; Custo Médio := Valor Estoque / Qtd Estoque Se for uma venda Valor do Estoque = Valor do Estoque Anterior + (Qtd Movimentada pela venda * Custo Médio)
Observações: a) A cada nova linha são utilizados para o cálculo a Quantidade e Valor de Estoque da linha anterior. b) O Custo Médio nunca pode ficar negativo visto que não é possível se ter um estoque negativo, caso em qualquer momento isto aconteça, o calculo das linhas subseqüente ficará inconsistente. c) Note pela fórmula que o valor de venda do produto em nada interfere no custo médio.
Exemplo de cálculo: Ver planilha Custo Médio.xls
2. Representação física no banco TT_ICO QTD_CM - Guarda a quantidade movimentada a ser utilizada no cálculo VLR_CM - Guarda o valor movimentado a ser utilizada no cálculo ORD_CM - Ordenação utilizada no cálculo do custo médio (somente para garantir que ao se verificar os itens em um mesmo dia sempre fiquem na mesma ordem)
TT_IVE QTD_CM - Idem ao TT_ICO VLR_CM - Idem ao TT_ICO ORD_CM - Idem ao TT_ICO
TR_MOV SAL_CM ? Guarda o saldo (Qtd) de estoque após a última movimentação do dia VLR_CM ? Guarda o valor de estoque após a última movimentação do dia Obs.: Não é guardado o custo médio, mas para obtê-lo basta dividir o valor pela quantidade
TT_SAL CAL_CM - Data até a qual já foi calculado o custo médio, utilizado para continuar o cálculo sem necessitar recalcular tudo novamente (Lembrando que o custo médio não é calculado logo após uma compra ou uma venda pois isto iria tornar este processo demorado) INI_CM ? Data inicial para se calcular o custo médio VLR_CM ? Valor em estoque na data de início do custo médio QTD_CM ? Quantidade em estoque na data de início do custo médio Obs.: Os 3 últimos campos são para registrar um custo médio inicial para clientes que não tem como resgatar o seu estoque desde o inicio de suas atividades. Neste caso o sistema começará o cálculo a partir desta data e levando em conta estes valores iniciais.
Funções de Banco Envolvidas: CalculaCustoMedio(pCODFIL,pFILMAT,pCODMAT,pCODCOR,pCODTAM) Calcula o custo médio de um determinado produto. O custo médio é calculado a partir da maior date entre CAL_CM (Data até a qual já foi calculado) ou INI_CM (Data inicial para calcular o Custo Médio). Para cada lançamento grava a ordem que o mesmo foi processado(ORD_CM), para reordenação posterior. A cada dia é gravado na TR_MOV o VLR_CM e QTD_CM para futuras consultas do custo médio. No final do processo é gravado em CAL_CM a data da ultima movimentação calculada.
CalculaCustoMedioFilial(pCODFIL) Calcula o custo médio de toda uma filial. Utiliza os mesmos processos da CalculaCustoMedio
CustoMedio (p_CodFil, p_FilMat, p_CodMat , p_CodCor, p_CodTam, p_Tipo, p_DatRef) Retorna informaçoes de custo médio de um produto em determinada data e acordo com o tipo passado: Se Tipo=1 -> Retorna Quantidade em estoque Se Tipo=2 -> Valor Total do Estoque (Padrão) Se Tipo=3 -> Custo Médio do Produto Se não for passada uma data calcula até a data atual.
JOB_Recalcula_Custo_Medio
CREATE OR REPLACE PROCEDURE ProcCalculaCustoMedio IS
vCODFIL TD_FIL.CODFIL%TYPE; cTemp VARCHAR(20);
CURSOR Filiais IS SELECT vCODFIL
from TD_FIL;
BEGIN
OPEN Filiais; LOOP FETCH Filiais INTO vCODFIL; EXIT WHEN Filiais%NOTFOUND; cTemp:=CalculaCustoMedioFilial(vCODFIL); END LOOP; CLOSE Filiais;
end ProcCalculaCustoMedio; /
VARIABLE JOBNO NUMBER; BEGIN
DBMS_JOB.SUBMIT(:JOBNO ,'ProcCalculaCustoMedio;' ,SYSDATE ,'trunc(SYSDATE) + 23/24' );
END; /
Recalcula_Custo_Medio
DECLARE
vCODFIL TD_FIL.CODFIL%TYPE; cTemp VARCHAR(20);
CURSOR Filiais IS SELECT vCODFIL
from TD_FIL;
BEGIN
OPEN Filiais; LOOP FETCH Filiais INTO vCODFIL; EXIT WHEN Filiais%NOTFOUND; cTemp:=CalculaCustoMedioFilial(vCODFIL); END LOOP; CLOSE Filiais;
end; /