Você está na página 1de 12

RECEBIMENTO DE

BONIFICAÇÃO
MERCADORIA AGREGANDO VALOR AO ESTOQUE

Resumo
Este cenário é utilizado quando o fornecedor envia uma nota fiscal separada com a bonificação
(CFOPs 5910 e 6910). Este caso configura uma receita para a empresa, logo o valor das
mercadorias deve ser lançado no estoque e os impostos creditados normalmente (com a exceção
de PIS e COFINS)
1. Criar tipos de movimento (OMJJ)

 501 para Y13


 502 para Y14

Habilitar os campos Montante base, código de imposto, fornecedor e montante externo em MI

Modificar os textos breves dos movimentos

Na modificação de contas, alterar o parâmetro ZOB para BON

Alterar os tipos de documentos de estorno


2. Configurações fiscais (J1BTAX)

a. Criar tipo de condição


Preparação da condição  Tipos de condição  Tipos de condições MM
Copiar o tipo de condição ICM1 para BON1

b. Criar tipo de imposto


Preparação da condição  Tipos de imposto
Copiar a linha ICM1 para BON1

c. Inserir a condição na TAXBRA


Preparação da condição  Procedimento de cálculo  Procedimento de cálculo MM

Copiar a linha do ICM1 para uma linha abaixo dela. No nível, inserir o nível da ICM1. A chave de contas pode ser
mantida a mesma da ICM1 caso não haja a necessidade de se contabilizar o ICMS em conta diferente.
d. Configurar derivação de nota fiscal
Nota fiscal  Administração de estoques  Derivação de categoria NF

e. Configurar cadeia de contabilização


Nota fiscal  Administração de estoques  Cadeia de contabilização AI

Copiar a linha do WE04 ICM1 para WE01 BON1


3. Enhancement para valor do estorno

a. Função J_1B_IM_TX_CALCULATE_TAX_NEW
Criar 3 enhancements na função J_1B_IM_TX_CALCULATE_TAX_NEW.

O primeiro deve ser criado no início da função para exportar o tipo de movimento.
O segundo deverá estar dentro do loop na XKOMV:
O terceiro deve ser inserido no outro loop da xkomv que existe.
Obs: A classe singleton é utilizada apenas para substituir a utilização de EXPORT e IMPORT. Com ela é possível
evitar erros que podem ocorrer por seções paralelas.

b. Include LJ1BNF05
ATENÇÃO: A CODIFICAÇÃO ABAIXO FOI FEITA PARA O TIPO DE MOVIMENTO Y14 E A CONDIÇÃO BON1. CASO
UTILIZE TIPO DE MOVIMENTO (ESTORNO – CÓPIA DO 502) DIFERENTE OU CONDITION (PASSO 2.b) DIFERENTE O
CÓDIGO DEVERÁ SER MODIFICADO TAMBÉM PARA ATENDER AOS NOVOS VALORES.

Dentro do include LJ1BNF05, no form adopt_bestd_prdif inserir o seguinte código:


    DATA: cl_singleton TYPE REF TO zcl_singleton_extension.
    DATA: lv_bwart TYPE mseg-bwart,
          lv_kschl TYPE komv-kschl.

    cl_singleton = zcl_singleton_extension=>read_instance( ).

    CALL METHOD cl_singleton->read_value
    EXPORTING
      i_name  = 'BWART'
    CHANGING
      c_value = lv_bwart.

    CALL METHOD cl_singleton->read_value
    EXPORTING
      i_name  = 'KSCHL'
    CHANGING
      c_value = lv_kschl.

    IF lv_bwart  EQ 'Y14' AND
    lv_kschl EQ 'BON1'.

      IF ( p_vprsv = 'S' )  AND       "1553273 "955843
      ( ( p_xstor = '2' OR          "812974  "967965
      p_action = 'A02' OR                          "1087065
      p_action = 'A03' ) AND "967965               "1087065
      p_shkzg = 'H' ).    "and            "812974    "1087065

      ELSE.

        IF p_xstor = '2' OR                        "916275
        p_action = 'A02' OR             "967965 "1021036
        p_action = 'A03'.                     "1021036

          CASE p_invoice.                        "1021036
          WHEN space.                          "1021036
            IF p_action = 'A03'  "cancel       "1021036
            OR p_action = 'A02'.               "1174517
              IF ( ( p_bustw = 'WE01' OR                   "1977720
              p_bustw = 'WA01' ) AND p_buzid = 'T' ).   "1977720
*              p_bestd = p_bestd - p_amount.        "916275
                EXIT.
              ENDIF.                                 "916275
            ENDIF.                             "1021036
          WHEN 'P'.                            "1021036
            IF ( p_bustw = 'WE01'                    "916275
            AND p_buzid = 'T' ).                     "916275
              p_bestd = p_bestd - p_amount.          "916275
            ENDIF.                                   "916275
          WHEN 'F' OR 'N'.                     "1021036
            IF p_buzid = 'M'.                  "1021036
*            Handle PIS/COFINS posting at MIGO            "1697517
              IF p_pis_cofins_included = true AND          "1697517
              ( p_condition_type = lc_pis OR            "1697517
              p_condition_type = lc_cofins  ) AND     "1697517
              p_amount < 0.                             "1697517
                p_prdif = p_prdif + p_amount.              "1697517
              ELSE.                                        "1697517
*               Normal Posting                            "1697517
                p_bestd = p_bestd + p_amount.             "1697517
              ENDIF.                                       "1697517
            ENDIF.                             "1021036
          ENDCASE.                               "1021036

*->   do nothing                               "916275
        ELSE.                                      "916275
*  add to inventory                            "916275
*     Handle PIS/COFINS posting at MIGO                   "1697517
          IF p_pis_cofins_included = true AND                 "1697517
          ( p_condition_type = lc_pis OR                   "1697517
          p_condition_type = lc_cofins  ) AND            "1697517
          p_amount < 0.                                    "1697517
            p_prdif = p_prdif + p_amount.                     "1697517
          ELSE.                                               "1697517
*       Normal Posting                                    "1697517
            p_bestd = p_bestd + p_amount.                     "1697517
          ENDIF.                                              "1697517
        ENDIF.

      ENDIF.

    ENDIF.

Você também pode gostar