SelecionaDadosDIPI

Monta os dados utilizados numa DIPI. Como a regra é muito limitado para fazer, gorub by, sum e outras funções.

Sintaxe: SelecionaDadosDIPI(Alfa OQue, Numero CodEmp, Numero CodFil, Numero DatIni, Numero DatFim, Numero Quanto, Numero AgrupaClf)

Parâmetros:

Nome Tipo Descrição
OQue Alfa Variável que pode receber 4 parâmetros:
"FORNECEDORES" ou "CLIENTES" ou "DADOSENTRADAS" ou "DADOSSAIDAS".
Se for "FORNECEDORES" irá fazer uma seleção dos dados de Notas De Compra, agrupados por fonecedor.
Se for "CLIENTES", irá fazer uma seleção das NF de Vendas agrupadas por Cliente.
Se For "DADOSENTRADAS" irá fazer a seleção dos itens de NF de Compras, agrupados por Classificação Fiscal".
Se For "DADOSSAIDAS" , fará uma seleção dos itens de NF de Vendas agrupados por classificação Fiscal.
CodEmp Numero Variável que recebe a empresa ativa.
CodFil Numero Variável que recebe a filial ativa.
DatIni Numero Variável que recebe a data de início da DIPI.
DatFim Numero Variável que recebe a data final da DIPI.
Quanto Numero Variável que recebe quantos fornecedores, clientes ou Classificações Fiscais guardar(geralmente são só os 20 primeiros, ou seja, os 20 com maior movimentação).
AgrupaClf Numero Variável que recebe "1" ou "0". "1" para Sim e "0" para Não. Será utilizado quando a variável OQue for igual a "DADOSENTRADAS1" ou "DADOSSAIDAS1", alterando o agrupamento dos dados para os campos E022CLF.CLAFIS e E022CLF.CODEXC.

Exemplo:

Definir data VDatini;

Definir Data VDatFim;

Definir alfa AuxNomFor;

VCodEmp = ECodEmp;

VCodFil = ECodFil;

/****A funcao abaixo seleciona os 20 maiores fornecedores do período

/**Por ordem decrescente de valor **//

SelecionaDadosDIPI("Fornecedores",VCodEmp,VCodFil,VDatIni,VDatFim,20);

FimMemList = 0;

Pos = 0;

Enquanto (FimMemList = 0)

        inicio

        LeMemListDIPIForCli(Pos,FimMemList,FCgcCpf,AuxNomFor,FVlrFor);

        Se (FimMemList = 0)

            Inicio

            AlteraControle("DNomFor","Descrição",AuxNomFor);

            ListaSecao("Adicional_dados08");

            Pos = Pos + 1;

            Fim;

        Fim;

Utilização da Função (dependentes): LeMemListDIPIForCLi e LeMemListClaFis.

Observações: Select Com GroupBy e orderBy por campos distintos, para selecionar dados para DIPI - Fica inviável no relatório pois deve ser agrupado por um campo, ordenado por outro e mantido os 20 maiores resgistros. Na regra, teria que agrupar primeiramente, depois ordenar  por outro campo(usando método da bolha, por exemplo) mantendo isso armazenado numa estrutura(tabela) e ordenando continuamente. Pode ser feito hoje através de View, também,mas isto implica em alterações de TBS.

Este artigo ajudou você?