Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
(Obrigatório)
Informações Gerais
Especificação | |||
Produto | PIMSCANA | Módulo | PAGFORN |
Segmento Executor | Agroindústria |
|
|
Projeto1 | AGRO PIMS | IRM1 | AGRPIMS01-140 |
Requisito1 | AGRPIMS01-141 | Subtarefa1 | AGRPIMS01-366 |
País | ( x) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador( ) USA ( ) Colombia ( ) Outro |
|
|
Outros | <Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
|
|
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
(Obrigatório)
Objetivo
ID 64:
Ter possibilidade de a partir do contrato informar se o fornecedor tem uma liminar para que não desconte o imposto FUNRURAL.
ID 74:
Ter possibilidade de configurar o valor do sobrpreço, a validade da configuração do sobrepreço, a titularidade (quem entregou a cana) e o favorecido do sobrepreço.
Ter processo para calcular o valor da nota fiscal de sobrepreço.
Ter relatório para exibir o cálculo do sobrepreço.
ID 78:
Tela para configuração da simulação do ajuste de preço, onde será informado o ATR, o valor do kg de ATR e o fornecedor (ou fornecedores) que será(ão) simulado(s) o ajuste de preço. Ter possibilidade de calcular quanto falta para completar a entrega de cana e considerar essa cana faltante na simulação do ajuste de preço, solicitando uma confirmação se considera ou não as canas faltantes na simulação do ajuste de preço. Deve considerar e descontar os adiantamentos de ajustes de safra. Deve ter um relatório para demonstrar a simulação do ajuste de preço.
Desenvolvimento de uma tela de argumentos para emissão da consulta dos dados gerados na Simulação de Acerto, que realiza a simulação do ajuste de preço, onde será informado o ATR, o valor do kg de ATR e o fornecedor (ou fornecedores) que será(ão) simulado(s) o ajuste de preço. Na tela de argumentos deve conter o período para emissão, o fornecedor, fundo agrícola e tipo de simulçao (se para fornecedores, parceria ou ambos).
Ter um processo genérico de recuperação de canas a entregar na safra a partir das estimativas.
(Obrigatório)
Definição da Regra de Negócio
ID 64:
Objeto: dlgRotGerNFContr da APL PGFOCOSA.dlgRotGerNFontr.APL
Ao executar o processo de geração de notas fiscais (CONTRATO), recuperar na tabela CONTRATO_CANA a nova coluna FG_LIMINAR_INSS.
Ao executar a rotina de calculo de taxas, verificar se a nova coluna FG_LININAR_INSS está marcada com "S". Se estiver, o valor resultante do calculo da taxa INSS (parâmetro recuperado no subitem 3.1) não deve ser somando no acumumulador de taxas (NF_HE.AC_TXCONTRIB) e não deve ser deduzido do valor bruto.
Ao gravar a taxa de INSS na tabela HIST_TX, gravar a nova coluna FG_LIMINAR_INSS com o mesmo valor da coluna FG_LIMINAR_INSS da tabela CONTRATO_CANA.
Aplicar os procedimentos acima também nos processos de geração de folha de pagamento do aplicativo COCTAGR.
Objetos:
dlgRotGerRec, dlgRotGerRecAjTopogr, dlgRotGerRecCompl e dlgRotGerRecCtr.
Aplicar os procedimentos acima também nos processos de geração de folha de pagamento do aplicativo PGFOCOSA.
Objetos:
dlgRotGerRecFdo, dlgRotGerRecACoiF e dlgRotGerRecAcCoiF.
ID 74:
O processo para cálculo do sobrepreço e geração da nota fiscal de sobrepreços será no aplicativo PGFOCOSA.EXE na nova opção: "Processos" ? "Notas Fiscais" ? "Geração Notas Fiscais de Sobrepreço". A respectiva reversão será na nova opção: "Processos" ? "Notas Fiscais" ? "Reversão Notas Fiscais de Sobrepreço"
Obs.: Essas duas opções deverão estar após a opção "Processos" ? "Notas Fiscais" ? "Reversão Notas Fiscais de Complemento de Preço - PPB" e após um separador.
Tabela de Configuração de Sobrepreço
Criar um botão no contrato de fornecedores ( "Sobrepreço" ) para exibir a tabela de configuração do sobrepreços.
As colunas INSTANCIA, CD_EMPRESA e NO_CONTRATO não serão exibidas e devem ser gravadas com a respectiva instância, código da empresa e numero do contrato do respectivo contrato.
A data de validade inicial e final deve estar compreendida dentro do período de validade do contrato.
A coluna CD_UPNIVEL1_TIT deve ser inicializada com o Fundo Agrícola de origem do contrato e não deve aceitar alteração.
A coluna CD_UPNIVEL1_FAV deve ser validada conforme abaixo:
- Se a tabela "PercSafra" foi preenchida, deve ser um dos Fundos Agrícola de destino da tabela PercSafra.
- Se a tabela "PercSafra" não foi preenchida, deve ser o Fundo de Agríocola de destino do contrato.
Processo de Geração de Notas Fiscais de Sobrepreço
Inícializações:
- Incializar o Mês/Ano de Referência com o Mês/Ano corrente.
- Inicializar a Data de Emissão da Nota Fiscal com a data corrente.
- Alem dos campos visíveis acima, criar um campo para o filtro múltiplo de CD_UNID_IND e deixa-lo invisivel. Inicializar com o (s) valor (es) parâmetro com deção "RCMP_PGTCP" e entrada "CD_UNID_ZERO". Esse parametro pode ter valores separados por ; (ponto e vírgula) por isso a necessidade de ser um filtro múltiplo
Validações:
- Ao informar o Mês/Ano de Refencia:
- Verificar se é o mês atual ou o mês imediatamente anterior. Se não for um dos dois meses, deve retornar mensagem "Mês/Ano de Referencia dever o mês/Ano atual ou mês/ano anterior ao atual" e parar o processo.
- Ao informar a Fazenda:
- Ler tabela UPNIVEL1 e verificar se a fazeda está cadastrada na tabela Upnivel1. Se não estiver, retornar mensage "Fazenda não cadastrada" e parar processo.
- Ler a tabela UP1TPPROPR e recuperar tipo de propriedade. Se a fazenda não estiver cadastrado na tabela UP1TPPROPR, retornar mensagem "Fazenda não relacionada a tipo de propriedade" e parar o processo.
- Ler a tabela TPPROPRFORN com o tipo de propriedade recuperado no item acima. Se o tipo de propriedade não estiver cadastrado na tabela TPPROPFORN deve retornar mensagem "Fazenda não relacionada a tipo de propriedade Fornecedor" e parar o processo.
- Recuperar o contrato COCGTAGR para a fazenda informada. Se não encontrar contrato, retornar mensagem "Fazenda sem contrato" e parar o processo.
- A partir do contrato encontrado e com o fazenda informada, ler a tabela CONTRCANA_SOBREPREÇO e recupearar a coluna CD_UPNIVEL1_TIT, onde:
- INSTANCIA = Instância do contrato,
- CD_EMPRESA = Empresa do contrato,
- NO_CONTRATO = Número do contrato,
- CD_UPNIVEL1_FAV = Fazenda informada
- DT_VAL_IN <= Mês/Ano informado,
- DT_VAL_FIN>= Mês/Ano informado
Se não encontrar, retornar mandagem "Fazenda não contem configuração de sobrepreço" e parar o processo
Obs.: o título do atributo "Fazenda" deve ser configurado conforme descrição do atrinuto UpNilve1.
- Ao informar o Período de Fornecimento:
- Verificar se há registro para o período informado. Ler a tabela HISTUPNV1 onde:
- CD_UNID_IND conforme configuração abaixo,
- CD_UPNIVEL1 = CD_UPNIVEL1_TIT recuperado acima na leitura da tabela CONTRCANA_SOREPREÇO,
- DT_REF between o Período de Fornecimento,
- CD_REG_UP1 = 'D
- Se naão encontrar o registo, retornar mensagem "Não há fornecimento de cana no período informado para configuração de sobrepreço" e parar o processo.
- Configuração da unidade industrial na clausula Where:
- Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "N"
- Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
- Se Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "S"
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
- Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" != 1
- Configurar com "and CD_UNID_IND = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
- Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "N"
- Verificar se há registro para o período informado. Ler a tabela HISTUPNV1 onde:
- Ao informar a Série da Nota Fiscal:
- Recuperar o maior número de notas fiscais existente na tabela de outras notas fiscais. Ler a tabela NF_HE_OUT e recuperar a coluna "NO_NF" em ordem descendente onde:
- INSTANCIA = instancia logada,
- CD_SERIE_NF = Série da Nota Fiscal informada,
- CD_UNID_IND = = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"
- Se não encontrar registro, inicializar o Número da Nota Fiscal com 1
- Se encontrar registro, inicializar o Número da Nota Fiscal com a coluna NO_NF da tabela NF_HE_OUT + 1
- Recuperar o maior número de notas fiscais existente na tabela de outras notas fiscais. Ler a tabela NF_HE_OUT e recuperar a coluna "NO_NF" em ordem descendente onde:
- Ao informar o Número da Nota Fiscal:
- Validar se a nota fiscal e a série da nota fiscal já existe. Ler a tabela NF_HE_OUT onde:
- INSTANCIA = instancia logada,
- NO_NF = Número da Nota Fiscal informada
- CD_SERIE_NF = Série da Nota Fiscal informada,
- CD_UNID_IND = = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND".
- Se encontrar registro, retornar mensagem "Já existe nota fiscal com a série e o número informado" e parar o processo.
- Validar se a nota fiscal e a série da nota fiscal já existe. Ler a tabela NF_HE_OUT onde:
- Ao informar a Data de Emissão da Nota Fiscal: Validar se a Data de Emissão da Nota Fiscal pertence ao mês atual ou ao mês imediatamente anterior. Se não pertencer, deve retornar mensagem "Data de Emissão da Nota Fiscal deve pertencer ao mês/ano autal ou ao mês anterior ao atual" e parar o processo.
Processo
Recuperar o contrato COCGTAGR para a fazenda informada.
A partir do contrato encontrado e com o fazenda informada, ler a tabela CONTRCANA_SOBREPREÇO e recupearar a coluna CD_UPNIVEL1_TIT e VL_UNIT_SOBREPRECO, onde:
INSTANCIA = Instância do contrato,
CD_EMPRESA = Empresa do contrato,
NO_CONTRATO = Número do contrato,
CD_UPNIVEL1_FAV = Fazenda informada
DT_VAL_IN <= Mês/Ano informado,
DT_VAL_FIN >= Mês/Ano informado
Ler a tabela a tabela HISTUPNV1 contendo JOIN com as tabela UPNIVEL1 pela coluna CD_UPNIVEL1 (constante nas tabelas HISTUPNV1 e UPNIVEL2), FORNECS pela coluna CD_FORNEC (constante nas tabelas UPNIVEL1 e FORNECS) e UP1TPPROPR pela coluna CD_UPNIVEL1 (constante nas tabelas UP1TPPROPR e HISTUPNV1, recuperando as colunas:
UPNIVEL1.CD_FORNEC,
FORNECS. DE_FORNEC,
UPNIVEL1. DE_ENDERECO,
UPNIVEL1. NO_CEP,
UPNIVEL1. NO_TELEFONE,
UPNIVEL1. NO_CGC_CPF,
UP1TPPROPR. CD_TP_PROPR e
SUM( HISTUPNV1.QT_CANA_ENT )
onde:
CD_UNID_IND conforme configuração abaixo,
CD_UPNIVEL1 = CD_UPNIVEL1_TIT recuperado acima na leitura da tabela CONTRCANA_SOREPREÇO,
DT_REF between o Período de Fornecimento,
CD_REG_UP1 = 'D
Configuração da unidade industrial na clausula Where:
- Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "N"
- Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
- Se Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "S"
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
- Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" != 1
- Configurar com "and CD_UNID_IND = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"
- Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
Gravar a tabela NF_DE_OUT com as valores abaixo:
INSTANCIA = Instância logada
NO_NF = Número da nota fiscal da tela de argumentos
CD_SERIE_NF= Série da nota fiscal da tela de argumentos
DD_INICIAL= 1
DD_FIM = Último dia do Mês/Ano da tela de argumentos
CD_UNID_IND= Valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"
FG_TP_NOTA= 'S' (sobrepreço)
QT_CANA_ENT= SUM( HISTUPNV1.QT_CANA_ENT )
VL_TON_CANA = CONTRCANA_SOBREPRECO.VL_UNIT_SOBREPRECO
VL_TOTAL= ( SUM( HISTUPNV1.QT_CANA_ENT ) / 1000) * CONTRCANA_SOBREPRECO.VL_UNIT_SOBREPRECO (arredondado em duas decimais)
Executar o processo de taxas, exatamente ao processo de taxas (fProcesso_TAXAS), porém sem a opção de "UPDATE"
Gravar a tabela NF_HE_OUT com as valores abaixo:
INSTANCIA = Instância logada
CD_TP_PROPR = HISTUPNV1.CD_TP_PROPR
NO_NF = Número da nota fiscal da tela de argumentos
CD_SERIE_NF = Série da nota fiscal da tela de argumentos
CD_UNID_IND = Valor do parâmetro com seção "RCMP_CAR" e entrada
"CD_UNID_IND"
FG_TP_NOTA = 'S' (sobrepreço)
CD_UPNIVEL1 = Fazenda da tela de argumentos
CD_FORNEC = UPNIVEL1.CD_FORNEC
CD_SAFRA = Safra do Mês/Ano de referencia da tela de argumentos
AM_FORNEC = Mês/Ano de referência da tela de argumentos
DT_EMIS_NF = Data de emissão da nota fiscal da tela de argumentos
DE_MUNIC = MUNICÍPIOS. DE_MUNIC
DE_NAT_OPER = FISCOP.DE_FISC_OP
DE_END = UPNIVEL1. DE_ENDERECO
NO_CEP = UPNIVEL1. NO_CEP
CD_UF = MUNICIPIOS. CD_UF
NO_FONE = UPNIVEL1. NO_TELEFONE
NO_CGC_CPF = UPNIVEL1. NO_CGC_CPF
FG_SITUACAO = 'N'
AC_PESO = SUM( HISTUPNV1.QT_CANA_ENT )
VL_TOT_NF = ( SUM( HISTUPNV1.QT_CANA_ENT ) / 1000) * CONTRCANA_SOBREPRECO.VL_UNIT_SOBREPRECO (arredondado em duas decimais)
AC_TX_CONTRIB= Reultdo do acúmulo do calculo de taxas
VL_LIQ_NF = VL_TOT_NF - AC_TX_CONTRIB
FG_COMPL_PRECO= 'N'
CD_REG_UP1 = 'Q'
DE_FISC_OP = FISCOP.DE_FISC_OP
VL_TOT_PRODUTO= VL_TOT_NF – ICMS (quando estiver configurado taxa de ICMS)
FG_ACERTO_ANUAL= 'N'
NO_CONTR_CANA= Número do contrato da Fazenda informada
CD_EMPRESA = Empresa do contrato da Fazenda informada
INST_CONTR = Instância do contrato da Fazenda informada
ID 78:
Executar o procedimento de fechamento da safra (PGFOCOSA \ Processos \ Fechamento \ Fechamento de Safra) para recuperar a data da quinzena final de safra que será usada na simulação do acerto.
Realizar leitura na tabela HISTUPNV1 recuperando os atributos CD_FORNEC, CD_UPNIVEL1, QT_CANA_ENT, quando CD_REG_UP1 = 'T', DT_REF = data final de safra da tela de argumentos e recuperar o CD_UNID_IND de acordo com as condições abaixo.
- Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_UNID_ACERTO for 1 então considerar o valor do atributo CD_UNID_IND do parâmetro – seção: RCMP_CAR, entrada: CD_UNID_IND.
- Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_UNID_ACERTO for diferente de 1 considerar o valor do atributo CD_UNID_IND do parâmetro – seção: RCMP_PGTCP, entrada: CD_UNID_AGREG.
Quando for informada a data na tela de argumentos recuperar, pela função fBuscaSafra, a safra em que pertence a data digitada.
Na tela de argumentos, se o flag "Considera Cana a Entregar" estiver marcado recuperar os dados da tabela HISTPREPRO, onde a safra é a recuperada na função fBuscaSafra, o CD_UPNIVEL1 que foi lido da tabela HISTUPNV1 e CD_HIST IN (1,2.3,4,5).
SELECT H1.CD_UPNIVEL1, H1.CD_UPNIVEL2, H1.CD_UPNIVEL3, SUM( H1.QT_CANA_ENTR )
FROM HISTPREPRO H1
WHERE H1.CD_SAFRA = 21112
AND H1.CD_UPNIVEL1 = '9875'
AND H1.CD_HIST != 'S'
AND H1.DT_HISTORICO = ( SELECT MAX( H2.DT_HISTORICO )
FROM HISTPREPRO H2
WHERE H2.CD_SAFRA = 21112
AND H2.CD_UPNIVEL1 = H1.CD_UPNIVEL1
AND H2.CD_UPNIVEL2 = H1.CD_UPNIVEL2
AND H2.CD_UPNIVEL3 = H1.CD_UPNIVEL3
AND H2.CD_HIST != 'S' )
GROUP BY H1.CD_UPNIVEL1, H1.CD_UPNIVEL2, H1.CD_UPNIVEL3;
Obs.: Fazer a leitura na HISTPREPRO e acumular os dados.
Para encontrar o valor da Cana a Entregar (gravar o valor encontrado no atributo QT_CANA_A_ENT da tabela SIMULACAO_ACERTO):
Utiliza o resultado do SELECT acima (QT_CANA_ENTR da HISPREPRO) MENOS QT_CANA_ENT da HISTUPNV1
Então: QT_CANA_A_ENT = QT_CANA_ENTR da HISPREPRO MENOS QT_CANA_ENT da HISTUPNV1
Obs.: Se retornar valor NEGATIVO gravar ZERO.
Tabela SIMULACAO_ACERTO:
QT_ATR = informado na tela de argumentos
VL_KG_ATR = informado na tela de argumentos
VL_TON = QT_ATR * VL_KG_ATR
VL_TOTAL_CANA_ENT = VL_TON * QT_CANA_ENT
VL_TOTAL_CANA_A_ENT = VL_TON * QT_CANA_A_ENT
VL_BRUTO = VL_TOTAL_CANA_ENT + VL_TOTAL_CANA_A_ENT
Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_PGT_FORN_UP1 for F então deve garvar o valor '999999' no CD_UPNIVEL1 da tabela SIMULAÇÂO_ACERTO.
Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_PGT_FORN_UP1 for U então deve garvar o código do fundo no atributo CD_UPNIVEL1 da tabela SIMULAÇÂO_ACERTO.
Para recuperar o Valor Pago (Atributo VL_PAGO da tabela SIMULACAO_ACERTO):
Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_PGT_FORN_UP1 for F então recupera o VL_PAGO da tabela RECIBOFOR onde:
Intancia = instancia logada
CD_FORNEC = fornecedor do loop anterior
CD_SAFRA = recuperada (função fBuscaSafra)
SUM(VL_CANA_BRUTO
Se o valor do parâmetro – seção: RCMP_PGTCP e entrada: FG_PGT_FORN_UP1 for U então recupera o VL_PAGO da tabela RECIBOGTM onde:
Intancia = instancia logada
CD_FORNEC = fornecedor do loop anterior
CD_UPNIVEL1 = fundo do loop anterior
CD_SAFRA = recuperada (função fBuscaSafra)
SUM(VL_CANA_BRUTO
Gravar valor líquido (atributo VL_LIQUIDO da tabela SIMULACAO_ACERTO)
VL_LIQUIDO = VL_BRUTO – VL_PAGO
Após executar o procedimento de Simulação de Acerto, pode ser emitida a consulta.
O usuário vai informar como campo obrigatório: "Mês/Ano Simul.Acerto". A data digitada deve estar na tabela SIMULACAO_ACERTO, no atributo:
Mês/Ano Simul.Acerto = AM_REF
Os campos "Fornecedor" e "Fundo" podem aceitar um ou mais fornecedores/fundos, separados por ponto e vírgula ( ou então um intervalo de fornecedores/fundos, separados por hifem
O campo "Tipo de Simulação" pode ser o tipo de simulação por Fornecedor, por Parceria ou Ambos. Quando for "Tipo de Simulação = Fornecedor", o sistema fará leitura na tabela SIMULACAO_ACERTO no atrbitudo FG_TP_SIMULACAO = 'F'. Quando for "Tipo de Simulação = Parceria", o sistema fará leitura na tabela SIMULACAO_ACERTO no atrbitudo .FG_TP_SIMULACAO = 'P'. E quando for "AMBOS" o sistema vai recuperar o atribtuo FG_TP_SIMULACAO IN ( 'F','P').
Se a flag "Considerar Cana a Entregar" estiver MARCADA, ao emitir a consulta fazer leitura na tabela SIMULACAO_ACERTO, no atributo QT_CANA_A_ENT.
Se a flag "Considerar Cana a Entregar" estiver DESMARCADA, ao emitir a consulta fazer leitura na tabela SIMULACAO_ACERTO, no atributo QT_CANA_ENT apenas.
A Instancia deve ser a logada.
Ordenar por AM_REF, CD_FORNEC, CD_UPNIVEL1.
Se o parâmetro Fornecedor estiver preenchido e o parametro UpNivel1 estiver nulo, deve executar um select para recuperar todas as UpNiveis1 pertencentes ao fornecedor do parametro e processar todas as UpNiveis1 pertencentes ao fornecedor do parâmetro
Se o parâmetro UpNivel1 estiver preenchido, ignora o parâmetro Fornecedor e o processo será somente para a UpNivel1 do parametro.
Para cada UpNivel1 pertencente ao fornecedor ou recuperada do parametro, ler sequencialmente (LOOP ou WHILE) a tabela HISPREPRO, executaando o comando abaixo:
SELECT H1.CD_UPNIVEL1, H1.CD_UPNIVEL2, H1.CD_UPNIVEL3, SUM( H1.QT_CANA_ENTR )
FROM HISTPREPRO H1
WHERE H1.CD_SAFRA = Safra do parâmetro
AND H1.CD_UPNIVEL1 = do parametro ou pertencentes ao fornecedor
AND H1.CD_HIST != 'S'
AND H1.DT_HISTORICO = ( SELECT MAX( H2.DT_HISTORICO )
FROM HISTPREPRO H2
WHERE H2.CD_SAFRA = 21112
AND H2.CD_UPNIVEL1 = H1.CD_UPNIVEL1
AND H2.CD_UPNIVEL2 = H1.CD_UPNIVEL2
AND H2.CD_UPNIVEL3 = H1.CD_UPNIVEL3
AND H2.CD_HIST != 'S' )
GROUP BY H1.CD_UPNIVEL1, H1.CD_UPNIVEL2, H1.CD_UPNIVEL3;Encontrou registro na tabela HISTPREPRO
Se encontrou registro, executa LOOP ou WHILE
Dentro do LOOP ou WHILE:
Para cada registro lido:
Lê a tabela HISTPRODUC recupara somantorio da coluna QT_CANA_ENT ( Sum(QT_CANA_ENT )), onde:
HISTPRODUC.CD_SAFRA = Safra do parâmetro,
HISTPRODUC.CD_UPNIEL1 = HISTPREPRO.CD_UPNIVEL1,
HISTPRODUC.CD_UPNIEL2 = HISTPREPRO.CD_UPNIVEL2,
HISTPRODUC.CD_UPNIEL3 = HISTPREPRO.CD_UPNIVEL3,
HISTPRODUC.CD_UNID_MED = parametro com seção "RCMP_CAR" e entrada "CD_UNID_MED"
Cálculo 1: Apura a quantidade de cana a entregar antes do rateio = SUM( HISTPREPRO.QT_CANA_ENTR) - SUM( HISPRODUC.QT_CANA_ENT )
Recupera o contrato de rateio valido para o talhão conforme abaixo:
Ler sequencialmente as tabelas header e detalhe de contatos de rateio executando o comando abaixo, passando na clausula "where" a UpNivel1, 2 e 3
select HE.NO_CONTRATO, HE.FG_TP_RATEIO, HE.DT_INI_VAL, HE.NO_SEQ_PROC,
DE.CD_UPNIVEL1_PARA, DE.PE_RATEIO, DE.FG_TP_CONS, DE.FG_SIT_TON,
DE.QT_TON_PREV, DE.QT_TON_PAG, DE.FG_UPN1_SLIM,
DE.NO_CONTR_RELAC, HE.INSTANCIA
from CONTR_RAT_CANA_DE DE, CONTR_RAT_CANA_HE HE, UPNIVEL1 UP1
where HE.INSTANCIA = 'Instancia Logada'
and ( HE.INSTANCIA = DE.INSTANCIA )
and ( HE.DT_INI_VAL <= 'Data de referência do parâmetro' and HE.DT_FIM_VAL >= 'Data de referência do parâmetro' )
and ( HE.FG_SITUACAO ='A')
and ( HE.NO_CONTRATO = DE.NO_CONTRATO)
and HE.FG_TP_RATEIO != 'X'
and ( DE.CD_UPNIVEL1_DE = HISTPREPRO.CD_UPNIVEL1
and DE.CD_UPNIVEL2_DE = HISTPREPRO.CD_UPNIVEL2
and DE.CD_UPNIVEL3_DE = HISTPREPRO.CD_UPNIVEL3 )
and ( DE.FG_SITUACAO = 'A')
and DE.CD_UPNIVEL1_PARA != HISTPREPRO.CD_UPNIVEL1
Order by HE.NO_SEQ_PROC, HE.DT_INI_VAL, HE.NO_CONTRATO, DE.NO_SEQUENCIA_EXEC, DE.CD_UPNIVEL1_PARA;
Se nao encontrar registro informando UpNivel1, 2 e 3, ler sequencialmente as tabelas header e detalhe de contatos de rateio executando o comando abaixo, passando na clausula "where" a UpNivel1 e 2.
select HE.NO_CONTRATO, HE.FG_TP_RATEIO, HE.DT_INI_VAL, HE.NO_SEQ_PROC,
DE.CD_UPNIVEL1_PARA, DE.PE_RATEIO, DE.FG_TP_CONS, DE.FG_SIT_TON,
DE.QT_TON_PREV, DE.QT_TON_PAG, DE.FG_UPN1_SLIM,
DE.NO_CONTR_RELAC, HE.INSTANCIA
from CONTR_RAT_CANA_DE DE, CONTR_RAT_CANA_HE HE, UPNIVEL1 UP1
where HE.INSTANCIA = 'Instancia Logada'
and ( HE.INSTANCIA = DE.INSTANCIA )
and ( HE.DT_INI_VAL <= 'Data de referência do parâmetro' and HE.DT_FIM_VAL >= 'Data de referência do parâmetro' )
and ( HE.FG_SITUACAO ='A')
and ( HE.NO_CONTRATO = DE.NO_CONTRATO)
and HE.FG_TP_RATEIO != 'X'
and ( DE.CD_UPNIVEL1_DE = HISTPREPRO.CD_UPNIVEL1
and DE.CD_UPNIVEL2_DE = HISTPREPRO.CD_UPNIVEL2 )
and ( DE.FG_SITUACAO = 'A')
and DE.CD_UPNIVEL1_PARA != HISTPREPRO.CD_UPNIVEL1
Order by HE.NO_SEQ_PROC, HE.DT_INI_VAL, HE.NO_CONTRATO, DE.NO_SEQUENCIA_EXEC, DE.CD_UPNIVEL1_PARA;
Se nao encontrar registro informando UpNivel1 e 2, Ler sequencialmente as tabelas header e detalhe de contatos de rateio executando o comando abaixo, passando na clausula "where" a UpNivel1.
select HE.NO_CONTRATO, HE.FG_TP_RATEIO, HE.DT_INI_VAL, HE.NO_SEQ_PROC,
DE.CD_UPNIVEL1_PARA, DE.PE_RATEIO, DE.FG_TP_CONS, DE.FG_SIT_TON,
DE.QT_TON_PREV, DE.QT_TON_PAG, DE.FG_UPN1_SLIM,
DE.NO_CONTR_RELAC, HE.INSTANCIA
from CONTR_RAT_CANA_DE DE, CONTR_RAT_CANA_HE HE, UPNIVEL1 UP1
where HE.INSTANCIA = 'Instancia Logada'
and ( HE.INSTANCIA = DE.INSTANCIA )
and ( HE.DT_INI_VAL <= 'Data de referência do parâmetro' and HE.DT_FIM_VAL >= 'Data de referência do parâmetro' )
and ( HE.FG_SITUACAO ='A')
and ( HE.NO_CONTRATO = DE.NO_CONTRATO)
and HE.FG_TP_RATEIO != 'X'
and ( DE.CD_UPNIVEL1_DE = HISTPREPRO.CD_UPNIVEL1 )
and ( DE.FG_SITUACAO = 'A')
and DE.CD_UPNIVEL1_PARA != HISTPREPRO.CD_UPNIVEL1
Order by HE.NO_SEQ_PROC, HE.DT_INI_VAL, HE.NO_CONTRATO, DE.NO_SEQUENCIA_EXEC, DE.CD_UPNIVEL1_PARA;
Se nao encontrar registro informando somente UpNivel1, para acumular no "Calculo2" o "Calculo 1" como está
Para qualquer um dos comandos acima encontrar registro, executar Loop ou While
Dentro do Loop ou While:
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'X'
Refaz o "Cálculo1" = Calculo1 * (100 – CONTR_RAT_CANA_ DE.PE_RATEIO) /100
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'L'
Refaz o "Cálculo1" = Calculo1 - (CONTR_RAT_CANA_DE.QT_TON_PREV - CONTR_RAT_CANA_ DE.QT_TON_PAG)
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'T'
Refaz o "Cálculo1" = Calculo1 - (CONTR_RAT_CANA_DE.QT_TON_PREV - CONTR_RAT_CANA_ DE.QT_TON_PAG)
Após o Loop ou While:
Se "Cálculo1" < 0
Seta "Cálculo1" = 0
Calculo2: Acumula resultado do "Calculo1": Calculo2 = Calculo2 + Calculo1Não ncontrou registro na tabela HISTPREPRO
Se não encontrou registo na tabela HISTPRPRO, executa leitura squencialo (LOOP ou WHILE) nas tabelas CONTR_RAT_CANA_DE e CONTR_RAT_CANA_HE.
select DE.CD_UPNIVEL1_DE, DE.CD_UPNIVEL2_DE,DE.CD_UPNIVEL3_DE,
HE.NO_CONTRATO, HE.FG_TP_RATEIO,HE.DT_INI_VAL, HE.NO_SEQ_PROC,
DE.PE_RATEIO, DE.FG_TP_CONS, DE.FG_SIT_TON,
DE.QT_TON_PREV, DE.QT_TON_PAG, DE.FG_UPN1_SLIM,
DE.NO_CONTR_RELAC, HE.INSTANCIA
from CONTR_RAT_CANA_DE DE, CONTR_RAT_CANA_HE HE, UPNIVEL1 UP1
where HE.INSTANCIA = 'Instancia Logada'
and ( HE.INSTANCIA = DE.INSTANCIA )
and ( HE.DT_INI_VAL <= 'Data de referência do parâmetro' and HE.DT_FIM_VAL >= 'Data de referência do parâmetro' )
and ( HE.FG_SITUACAO ='A')
and ( HE.NO_CONTRATO = DE.NO_CONTRATO)
and HE.FG_TP_RATEIO != 'X'
and (DE.CD_UPNIVEL1_PARA = do parametro ou pertencentes ao fornecedor )
and ( DE.FG_SITUACAO = 'A')
Order by DE.CD_UPNIVEL1_DE, DE.CD_UPNIVEL2_DE,DE.CD_UPNIVEL3_DE;
Dentro do Loop ou While:
Executa leitura na tabela HISTPREPRO para recuperar a estimativa da UpNivel3, UpNivel 2 e UpNivel1.
Se CONTR_RAT_CANA_DE.CD_UPNIVEL3_DE é diferente de nulo.
SELECT SUM( H1.QT_CANA_ENTR )
FROM HISTPREPRO H1
WHERE H1.CD_SAFRA = Safra do parâmetro
AND H1.CD_UPNIVEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE
AND H1.CD_UPNIVEL2 = CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE
AND H1.CD_UPNIVEL3 = CONTR_RAT_CANA_DE.CD_UPNIVEL3_DE
AND H1.CD_HIST != 'S'
AND H1.DT_HISTORICO = ( SELECT MAX( H2.DT_HISTORICO )
FROM HISTPREPRO H2
WHERE H2.CD_SAFRA = Safra do parâmetro
AND H2.CD_UPNIVEL1 = H1.CD_UPNIVEL1
AND H2.CD_UPNIVEL2 = H1.CD_UPNIVEL2
AND H2.CD_UPNIVEL3 = H1.CD_UPNIVEL3
AND H2.CD_HIST != 'S' )
Lê a tabela HISTPRODUC recupara somantorio da coluna QT_CANA_ENT ( Sum(QT_CANA_ENT )), onde:
HISTPRODUC.CD_SAFRA = Safra do parâmetro,
HISTPRODUC.CD_UPNIEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE,
HISTPRODUC.CD_UPNIEL2 = CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE,
HISTPRODUC.CD_UPNIEL3 = CONTR_RAT_CANA_DE.CD_UPNIVEL3_DE,
HISTPRODUC.CD_UNID_MED = parametro com seção "RCMP_CAR" e entrada "CD_UNID_MED"
Cálculo 1: Apura a quantidade de cana a entregar antes do rateio = SUM( HISTPREPRO.QT_CANA_ENTR) - SUM( HISPRODUC.QT_CANA_ENT )
Se CONTR_RAT_CANA_DE.CD_UPNIVEL3_DE é nulo AND
CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE é diferente de nulo.
SELECT SUM( H1.QT_CANA_ENTR )
FROM HISTPREPRO H1
WHERE H1.CD_SAFRA = Safra do parâmetro
AND H1.CD_UPNIVEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE
AND H1.CD_UPNIVEL2 = CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE
AND H1.CD_HIST != 'S'
AND H1.DT_HISTORICO = ( SELECT MAX( H2.DT_HISTORICO )
FROM HISTPREPRO H2
WHERE H2.CD_SAFRA = Safra do parâmetro
AND H2.CD_UPNIVEL1 = H1.CD_UPNIVEL1
AND H2.CD_UPNIVEL2 = H1.CD_UPNIVEL2
AND H2.CD_UPNIVEL3 = H1.CD_UPNIVEL3
AND H2.CD_HIST != 'S' )
Lê a tabela HISTPRODUC recupara somantorio da coluna QT_CANA_ENT ( Sum(QT_CANA_ENT )), onde:
HISTPRODUC.CD_SAFRA = Safra do parâmetro,
HISTPRODUC.CD_UPNIEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE,
HISTPRODUC.CD_UPNIEL2 = CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE,
HISTPRODUC.CD_UNID_MED = parametro com seção "RCMP_CAR" e entrada "CD_UNID_MED"
Cálculo 1: Apura a quantidade de cana a entregar antes do rateio = SUM( HISTPREPRO.QT_CANA_ENTR) - SUM( HISPRODUC.QT_CANA_ENT )
Se CONTR_RAT_CANA_DE.CD_UPNIVEL3_DE é nulo AND
CONTR_RAT_CANA_DE.CD_UPNIVEL2_DE é nulo.
SELECT SUM( H1.QT_CANA_ENTR )
FROM HISTPREPRO H1
WHERE H1.CD_SAFRA = Safra do parâmetro
AND H1.CD_UPNIVEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE
AND H1.CD_HIST != 'S'
AND H1.DT_HISTORICO = ( SELECT MAX( H2.DT_HISTORICO )
FROM HISTPREPRO H2
WHERE H2.CD_SAFRA = Safra do parâmetro
AND H2.CD_UPNIVEL1 = H1.CD_UPNIVEL1
AND H2.CD_UPNIVEL2 = H1.CD_UPNIVEL2
AND H2.CD_UPNIVEL3 = H1.CD_UPNIVEL3
AND H2.CD_HIST != 'S' )
Lê a tabela HISTPRODUC recupara somantorio da coluna QT_CANA_ENT ( Sum(QT_CANA_ENT )), onde:
HISTPRODUC.CD_SAFRA = Safra do parâmetro,
HISTPRODUC.CD_UPNIEL1 = CONTR_RAT_CANA_DE.CD_UPNIVEL1_DE,
HISTPRODUC.CD_UNID_MED = parametro com seção "RCMP_CAR" e entrada "CD_UNID_MED"
Cálculo 1: Apura a quantidade de cana a entregar antes do rateio = SUM( HISTPREPRO.QT_CANA_ENTR) - SUM( HISPRODUC.QT_CANA_ENT )
Se "Cálculo1" < 0
Seta "Cálculo1" = 0
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'X'
Refaz o "Cálculo1" = Calculo1 * (100 – CONTR_RAT_CANA_ DE.PE_RATEIO) /100
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'L'
Refaz o "Cálculo1" = Calculo1 - (CONTR_RAT_CANA_DE.QT_TON_PREV - CONTR_RAT_CANA_ DE.QT_TON_PAG)
Se CONTR_RAT_CANA_ HE.FG_TP_RATEIO = 'T'
Refaz o "Cálculo1" = Calculo1 - (CONTR_RAT_CANA_DE.QT_TON_PREV - CONTR_RAT_CANA_ DE.QT_TON_PAG)
Calculo2: Acumula resultado do "Calculo1": Calculo2 = Calculo2 + Calculo1
(Obrigatório)
<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.Rotinas Envolvidas
Rotina
Tipo de Operação
Opção de Menu
Regras de Negócio
PGFO_REL
Alterar
Notas Fiscais de Cana - Registro de Entrada de Cana PGCS_017
PGFO_REL
Alterar
Resumo Notas Fiscais de Cana por Tipo Propriedade PGCS_018
PGFO_REL
Alterar
Demonstrativo de Taxas e Contribuições PGCS_027
PGFO_REL
Alterar
Posição das Taxas dos Fornecedores - N.F. PGCS_058
PGFO_REL
Alterar
Demonstrativo de Funrural p/ Fundo PGCS_070
PGFO_REL
Alterar
Registros das Aquisições de Cana - Livro Fiscal PGCS_072
PGFO_REL
Alterar
Demonstrativo de Funrural p/ Fundo PGCS_086
PGFO_REL
Alterar
Registros Aquisições Cana-L. Fiscal PGCS_086
PGFO_REL
Alterar
Registros Aquisições Cana-L. Fiscal PGCS_090
PGFO_REL
Alterar
Demonstrativo de Taxas/Contribuições PGCS_092
PGFO_REL
Alterar
Registros Aquisições Cana-L. Fiscal PGCS_096
PGFO_REL
Alterar
ICMS a Recolher PGCS_098
PGFO_REL
Alterar
Demonstrativo de Funrural p/ Fundo PGCS_114
PGFO_REL
Alterar
Posição das Taxas de Fornecedores(Isentos)-NF PGCS_117
PGFO_REL
Alterar
Registros das Aquisições de Cana - L. Fiscal PGCS_134
PGFO_REL
Alterar
Demonstrativo de Funrural p/ Fundo PGCS_135
PGFO_REL
Alterar
Taxas/Provisão dos Fornecedores – Anual PGCS_137
PGFO_REL
Alterar
Demonstrativo de Pagamento Fundo/Fornecedor PGCS_158
PGFO_REL
Alterar
Demonstrativo de Notas com CPR PGCS_180
PGFO_REL
Alterar
Notas Fiscais - Outros Estados PGCS_209
PGFO_REL
Alterar
N.Fiscais de Cana - Reg. de Entrada de Cana PGTM_017
PGFO_REL
Alterar
Rel. Posição das Taxas de Fornecedores - N.F. PGTM_058
COCTAGR
Alterar
Emissão de Recibo de Pagamento COCT_006
COCTAGR
Alterar
Folha de Pagamento COCT_007
COCTAGR
Alterar
Demonstrativo de Taxas COCT_008
COCTAGR
Alterar
Demon&strativo Acerto Annual COCT_017
COCTAGR
Alterar
Emissão de Recibo de Pagamento COCT_031
PGFOCOSA
Incluir
PGFOCOSA \ Processos \ Fechamento \ Simualação de Acerto.
PGFO_REL
Incluir
Simualação de Acerto.
(Opcional)
Diagrama de Entidade e Relacionamento
(Opcional)
Dicionário de Dados
Incluir nas tabelas CONTRATO_CANA, MANUT_CONTRATOCANA, LOG_CONTRATOCANA, HIST_TX e HIST_TX_CTACANA a coluna FG_LIMINAR_ICMS (Flag controlador de liminar para suspensçao da cobrança do imposto NSS)
Nova tabela para configuração de sobrepreço (Oficial, Manut e LOG) CONTRCANA_SOBREPREÇO, MANUT_CONTRCANA_SOBREPREÇO e LOG_CONTRCANA_SOBREPRECO
Criada a tabela SIMULAÇÃO_ACERTO para armazenamento da simulação do acerto.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|