PUBLICIDADE
Este código tem nota
8

Autor

zeca

José Carlos Barreto

membro deste novembro de 2006

Tags

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Você gostou das mudanças no layout aqui do site?

Verificação de Inscrição Estadual


fornecido por Amauri Leme da Silva.

Verificação de Inscrição Estadual
FUNCTION ZILLO_CALCULO_INSC_ESTADUAL.
*"----------------------------------------------------------------------
*"*"Interface local:
*"       IMPORTING
*"             VALUE(NUMBER_PART) TYPE  SY-REPID
*"             VALUE(ESTADO) TYPE  SY-REPID
*"             VALUE(VERIFICA) TYPE  C DEFAULT 'S'
*"       EXPORTING
*"             VALUE(CHECK_DIGIT) TYPE  SY-REPID
*"             VALUE(MSG) TYPE  SY-MSGV1
*"             VALUE(SAIDA) TYPE  SY-REPID
*"       EXCEPTIONS
*"              NAO_NUMERICO
*"----------------------------------------------------------------------
  PERFORM LE_ZILLO_CALC_DIG CHANGING ESTADO
                                     CHECK_DIGIT
                                     REC.
  CHECK NOT REC IS INITIAL.            " nao achou estado
  CLEAR : CHECK_DIGIT_AUX .
*** tira os digitos , trata estados
  WORK_STRING = NUMBER_PART.
  PERFORM ACERTA_ENTRADA CHANGING  WORK_STRING MSG VERIFICA .
****
  ENTRADA = WORK_STRING . " torna NUM , USADO EM COMPARACOES DE >  <
*  number_part = work_string.
***
  IF REC-ESTADO NE 'MG'.               " Minas eh diferente
    PERFORM LOOP_01.
  ENDIF.
***
  CASE REC-ESTADO.
    WHEN 'PE' OR 'RO'.
      PERFORM CALC_PE.
    WHEN 'PI' OR 'RS' OR 'RJ' OR 'SC' OR 'SE' OR 'TO' OR 'PB' OR 'ES'
              OR 'MA' OR 'MT' OR 'MS' OR 'PA' OR 'CE' OR 'AM'.
      PERFORM CALC_PI.
    WHEN 'RN' OR 'AL'.
      PERFORM CALC_RN USING ESTADO.
    WHEN 'RR'.
      PERFORM CALC_RR.
    WHEN 'GO'.
      PERFORM CALC_GO.
    WHEN 'AP'.
      PERFORM CALC_AP.
    WHEN 'DF' OR 'PR' OR 'AC'.              " DOIS DIGITOS
      PERFORM CALC_PI.
      MODU_AUX = MODU.
      CHECK_DIGIT_AUX = MODU_AUX.
      CONCATENATE WORK_STRING MODU_AUX INTO WORK_STRING.
      PERFORM LOOP_01.
      PERFORM CALC_PI.
    WHEN 'BA'.                         " DOIS DIGITOS
      CASE WORK_STRING(1).
        WHEN '6' OR '7' OR '9'.
          PERFORM CALC_PI.
          MODU_AUX = MODU.
          CHECK_DIGIT_AUX = MODU_AUX.
          CONCATENATE WORK_STRING MODU_AUX INTO WORK_STRING.
          PERFORM LOOP_01.
          PERFORM CALC_PI.
        WHEN OTHERS.
          PERFORM CALC_BA.
          MODU_AUX = MODU.
          CHECK_DIGIT_AUX = MODU_AUX.
          CONCATENATE WORK_STRING MODU_AUX INTO WORK_STRING.
          PERFORM LOOP_01.
          PERFORM CALC_BA.
      ENDCASE.
    WHEN 'MG'.
      PERFORM CALC_MG. " CALCULATE_CHECK_DIGIT_MOD10 , 1° digito
      CONCATENATE WORK_STRING CHECK_DIGIT_AUX INTO WORK_STRING.
      ESTADO = 'XM'.                   " Pesos Extra para Minas
      PERFORM LE_ZILLO_CALC_DIG CHANGING ESTADO CHECK_DIGIT REC.
      CHECK NOT REC IS INITIAL.
      PERFORM LOOP_01.
      PERFORM CALC_PI.                 " 2° digito
    WHEN 'SP'.
      PERFORM CALC_RN USING ESTADO.
      IF NUMBER_PART(1) NE 'P'.        " NOT RURAL
        MODU_AUX = MODU.
        CHECK_DIGIT_AUX = MODU_AUX.
        CONCATENATE NUMBER_PART(8) MODU_AUX  NUMBER_PART+9(2)
                                             INTO WORK_STRING.
        ESTADO = 'XS'.                 " Pesos Extra para SP
        PERFORM LE_ZILLO_CALC_DIG CHANGING ESTADO CHECK_DIGIT REC.
        CHECK NOT REC IS INITIAL.
        PERFORM LOOP_01.
        PERFORM CALC_RN USING ESTADO.
      ENDIF.
  ENDCASE.
  MODU_AUX = MODU.
  CHECK_DIGIT = MODU_AUX.
  IF   REC-ESTADO EQ 'RO'.             " 3 primeiros digitos
    CONCATENATE NUMBER_PART(3) WORK_STRING INTO WORK_STRING.
  ENDIF.
  CONCATENATE WORK_STRING CHECK_DIGIT INTO SAIDA.
  IF NUMBER_PART(1) = 'P'.  " produtor rural sp
    CONCATENATE NUMBER_PART(1) SAIDA NUMBER_PART+10 INTO  SAIDA.
  ENDIF.
  CASE  REC-ESTADO .
    WHEN 'BA'.                         " dois digitos
      CONCATENATE CHECK_DIGIT CHECK_DIGIT_AUX INTO CHECK_DIGIT.
      WORK_STRING = WORK_STRING(REC-CONTROLE).
      CONCATENATE WORK_STRING CHECK_DIGIT INTO SAIDA.
    WHEN 'MG'.                         " dois digitos , invertido
      CONCATENATE CHECK_DIGIT_AUX  CHECK_DIGIT INTO CHECK_DIGIT.
    WHEN OTHERS.                       " soh um digito
      CONCATENATE CHECK_DIGIT_AUX CHECK_DIGIT INTO CHECK_DIGIT.
  ENDCASE.

ENDFUNCTION.

Sim   Não   Este código foi útil para você?
NotaComentário
8
fmaynards comentou em 10/8/2009

FORMS?

Olá amigo, muito bom o código, mas por acaso você não teria os FORMs que realizam os cálculos?

Obrigado.
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.