Árvore de páginas

 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:

  1. Se a tabela "PercSafra" foi preenchida, deve ser um dos Fundos Agrícola de destino da tabela PercSafra.
  2. 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:

  1. Incializar o Mês/Ano de Referência com o Mês/Ano corrente.
  2. Inicializar a Data de Emissão da Nota Fiscal com a data corrente.
  3. 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:

  1. Ao informar o Mês/Ano de Refencia:
    1. 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.

 

  1. Ao informar a Fazenda:
    1. 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.
    2. 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.
    3. 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.
    4. Recuperar o contrato COCGTAGR para a fazenda informada. Se não encontrar contrato, retornar mensagem "Fazenda sem contrato" e parar o processo.
    5. A partir do contrato encontrado e com o fazenda informada, ler a tabela CONTRCANA_SOBREPREÇO e recupearar a coluna CD_UPNIVEL1_TIT, onde:
      1. INSTANCIA = Instância do contrato,
      2. CD_EMPRESA = Empresa do contrato,
      3. NO_CONTRATO = Número do contrato,
      4. CD_UPNIVEL1_FAV = Fazenda informada
      5. DT_VAL_IN <= Mês/Ano informado,
      6. 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.

  1. Ao informar o Período de Fornecimento:
    1. Verificar se há registro para o período informado. Ler a tabela HISTUPNV1 onde:
      1. CD_UNID_IND conforme configuração abaixo,
      2. CD_UPNIVEL1 = CD_UPNIVEL1_TIT recuperado acima na leitura da tabela CONTRCANA_SOREPREÇO,
      3. DT_REF between o Período de Fornecimento,
      4. CD_REG_UP1 = 'D
    2. 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.
    3. Configuração da unidade industrial na clausula Where:
      1. Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "N"
        1. Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
      2. Se Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "S"
        1. Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
          1. Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
        2. Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" != 1
          1. Configurar com "and CD_UNID_IND = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"

 

  1. Ao informar a Série da Nota Fiscal:
    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:
      1. INSTANCIA = instancia logada,
      2. CD_SERIE_NF = Série da Nota Fiscal informada,
      3. CD_UNID_IND = = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"
    2. Se não encontrar registro, inicializar o Número da Nota Fiscal com 1
    3. Se encontrar registro, inicializar o Número da Nota Fiscal com a coluna NO_NF da tabela NF_HE_OUT + 1

 

  1. Ao informar o Número da Nota Fiscal:
    1. Validar se a nota fiscal e a série da nota fiscal já existe. Ler a tabela NF_HE_OUT onde:
      1. INSTANCIA = instancia logada,
      2. NO_NF = Número da Nota Fiscal informada
      3. CD_SERIE_NF = Série da Nota Fiscal informada,
      4. CD_UNID_IND = = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND".
    2. Se encontrar registro, retornar mensagem "Já existe nota fiscal com a série e o número informado" e parar o processo.

 

  1. 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:

  1. Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "N"
    1. Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
  2. Se Se o parâmetro com seção "'RCMP_PGT e entrada "FG_MULT_PLANTA" = "S"
    1. Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" = 1
      1. Configurar com "and CD_UNID_IND = resultado do função fMakeFilter()
    2. Se o parâmetro com seção "RCMP_PGT e entrada "FG_MED_QUI_MP" != 1
      1. Configurar com "and CD_UNID_IND = valor do parâmetro com seção "RCMP_CAR" e entrada "CD_UNID_IND"


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 ((piscar o olho) ou então um intervalo de fornecedores/fundos, separados por hifem (menos)
    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 + Calculo1

    Nã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.