Skip to content

Tag-icone-mini.png Análise

Análise
Projeto 1221
Data da Análise: 28/04/2014

Projeto ​

Requisitos ​

Essa análise é referente ao requisito 47 do projeto de aderência da Casa Carneiro.

Para mais detalhes acesse o sistema de projetos.

47-Venda por dia útil por produto - VDU Tabela diária com a venda por dia útil de todos os produtos, separado por: ¿ Venda normal. ¿ Venda no período de promoção. Só entram no cálculo, os dias em que tenha estoque do produto. Tabela de dias úteis, ou de dias não trabalhados.     Venda por dia útil por produto - VDU   Materializar uma tabela com a venda por dia útil de todos os produtos, separado por:   - Venda normal.   - Venda no período de promoção.   Só entram no cálculo, os dias em que tenha estoque do produto. Tabela de dias úteis, ou de dias não trabalhados.

Detalhamento ​

Os dados de vendas por dia já são materializados atualmente na tabela de resumo de movimento diário [TR_MOV]. Apenas faremos algumas customizações para facilitar a extração dos dados necessários dessa tabela. Serão pequenos ajustes nas rotinas de gravação de feriado e expediente. Também teremos uma tabela de dias úteis (que na verdade são dias com a loja aberta) similar a tabela de datas [TT_DAT]. Com isso, poderemos criar ou ajustar funções auxiliares para contagem desses dias em um intervalo de datas.

Escopo ​

Essa análise não contempla tudo que será necessário para implementar todos os requisitos que precisam de VDU. Apenas cria uma estrutura básica e comum que será compartilhada entre os requisitos que usam VDU.

Cenário ​

Esse projeto está sendo desenvolvido para atender a todos os segmentos sem distinção.

Configurar Expediente ​

No Backoffice, em menu >>>> Tabelas >>> Horários >>> Expediente, é necessário informar o expediente da empresa.

Exemplo: de segunda a sábado.

Ver mais em Horários.

Configurar Feriados ​

No Backoffice, em menu >>>> Tabelas >>> Horários >>> Feriados, é necessário informar os feriados da empresa.

Nova Coluna para Indicar se a Loja Abre no Feriado ​

Especificação para tarefa(s): 93764

Criar na TT_FER:

ColunaPrecisãoNullDefaultDescrição
LOJABRVARCHAR(1)NOT NULL"F"Loja Abre?

Check-constraints:

ColunaRegra
LOJABRPermitir "T" ou "F"

Permitir Indicar se a Loja Abre no Feriado ​

Especificação para tarefa(s): 93765

Implementar para poder informar também se a loja abre no feriado.
O padrão deve ser "não abre".

Tabela de Dias Úteis por Filial ​

Sistema terá uma tabela com todos os dias úteis da filial semelhante a TT_DAT. Ela ajudará as funções a descobrirem mais rapidamente o número de dias úteis em um intervalo de datas.

A medida que os feriados, expediente e filiais forem atualizados, sistema precisará atualizar também essa tabela.

Criar Tabela de Dias Úteis por Filial ​

Especificação para tarefa(s): 93767

Criar TT_UTL para armazenar os dias úteis por filial.

ColunaPrecisãoNullDefaultDescrição
DATOPEDATENOT NULL-X-Data
CODFILCHAR(3)NOT NULL-X-Filial
FERABEVARCHAR(1)NOT NULL"F"Feriado com Loja Aberta? (Feriado Loja Aberta?)

Os feriados com loja aberta são carregados como dias úteis. Porém, para algumas rotinas (por exemplo de cálculos financeiros) pode ser que tenhamos que desconsiderar esses dias de feriado, mesmo que a loja abriu.

Primary-key: DATOPE e CODFIL

Foreign-keys:

Coluna(s) OrigemTabela DestinoColuna(s) Destino
CODFILTD_FILCODFIL

Check-constraints:

ColunaRegra
FERABEPermitir "T" ou "F"

Atualização da TT_UTL ​

Especificação para tarefa(s): 93768

Nas triggers da TD_FIL, TT_FER e TT_EXP tratar para manter os dados da TT_UTL atualizados.

  • Na TD_FIL tratar inclusão.
  • Na TT_FER tratar inclusão, alteração e exclusão.
  • Na TT_EXP tratar inclusão (form apaga e incluí).

Fazer passo de migração incluindo na TT_UTL o resultado de um CROSS JOIN de todos os registros da TT_DAT com todos os da TD_FIL. Nesse select, filtrar para que traga somente os dias do expediente [TT_EXP]. Se o expediente não estiver configurado, considerar de segunda a sexta.

Função de Dias Úteis ​

A função DiasUteis atual será ajustada para utilizar a tabela de datas materializada. Ela terá um parâmetro opcional para considerar também feriados com loja aberta como dias úteis. Com isso, ela servirá tanto para o processo financeiro (somente dias úteis mesmo) quanto para o processo de vendas (considerando feriados em que a loja abriu).

Modificar Função DiasUteis para Considerar Feriados com Loja Aberta ​

Especificação para tarefa(s): 93769

Criar na função DiasUteis um parâmetro extra [pFERABE] para indicar se deve considerar Feriados com Loja Aberta como dia útil. Esse parâmetro não deve ser obrigatório e o default deve ser "F" - não considerar.

Função poderá ser chamada:

  • DiasUteis(Filial, Data, Data) ou
  • DiasUteis(Filial, Data, Data, "T")

Função deve fazer um COUNT(*) dos registros da TT_UTL. É necessário filtrar a filial também. O select abaixo mostra a ideia mas utilizando a TT_DAT, ao invés da TT_UTL.

select (select count(*) from tt_dat where datope between TO_DATE('01/01/2014','DD/MM/YYYY') and TO_DATE('15/01/2014','DD/MM/YYYY') ) as count_dat
from dual

Para trazer todos os dias úteis, excluindo qualquer tipo de feriado, deve-se filtrar TT_UTL.FERABE = "F". Se o parâmetro pFERABE = "T", então não deve se fazer nenhum filtro de feriado na TT_UTL, porque nela só serão gravados feriados que tiveram loja aberta.

Referenciado por: Análise para Giro de Estoque por Dia Útil | Horários |