Tutoriais:Contribuição sindical na RAIS

De Tek-System Wiki
Ir para navegação Ir para pesquisar
  • Após gerar os dados da rais, executar o script abaixo.

OBS.: Não deve excluir e gerar novamente. Apenas filtrar o que foi incluído na RAIS.

execute block
as
declare variable AUTOINC bigint;
declare variable CNPJ_SINDICATO varchar(18);
declare variable INDICE integer;
declare variable CARACTER char;
declare variable VALOR_CT_SINDICAL_ numeric(18,2);
declare variable VALOR_CT_ASSISTENCIAL_ numeric(18,2);
declare variable VALOR_CT_CONFEDERATIVA_ numeric(18,2);
begin
 for select DP_DADOS_RAIS.AUTOINC_DDR,
            DP_DADOS_RAIS.VALOR_CT_SINDICAL_DDR,
            DP_DADOS_RAIS.VALOR_CT_ASSISTENCIAL_DDR,
            DP_DADOS_RAIS.VALOR_CT_CONFEDERATIVA_DDR,
            DP_SINDICATO.CNPJ_SINDICATO
       from DP_DADOS_RAIS
       left join DP_SETOR_FUNCAO_REGISTRO on (DP_SETOR_FUNCAO_REGISTRO.REGISTRO_SFREG = DP_DADOS_RAIS.REGISTRO_DDR and
                                              DP_SETOR_FUNCAO_REGISTRO.DATA_SFREG = (select max(DP_SETOR_FUNCAO_REGISTRO_B.DATA_SFREG)
                                                                                       from DP_SETOR_FUNCAO_REGISTRO DP_SETOR_FUNCAO_REGISTRO_B
                                                                                      where DP_SETOR_FUNCAO_REGISTRO_B.REGISTRO_SFREG = DP_SETOR_FUNCAO_REGISTRO.REGISTRO_SFREG
                                                                                        and extract(year from DP_SETOR_FUNCAO_REGISTRO_B.DATA_SFREG) <= dp_dados_rais.ANO_DDR))
       left join DP_SINDICATO on (DP_SINDICATO.CODIGO_SINDICATO = DP_SETOR_FUNCAO_REGISTRO.SINDICATO_SFREG)
      where ((DP_DADOS_RAIS.VALOR_CT_SINDICAL_DDR != 0) and (coalesce(DP_DADOS_RAIS.SINDICATO_CT_SINDICAL_DDR,) = ))
         or ((DP_DADOS_RAIS.VALOR_CT_ASSISTENCIAL_DDR != 0) and (coalesce(DP_DADOS_RAIS.SINDICATO_CT_ASSISTENCIAL_DDR,) = ))
         or ((DP_DADOS_RAIS.VALOR_CT_CONFEDERATIVA_DDR != 0) and (coalesce(DP_DADOS_RAIS.SINDICATO_CT_CONFEDERATIVA_DDR,) = ))
       into :AUTOINC, :VALOR_CT_SINDICAL_, :VALOR_CT_ASSISTENCIAL_, :VALOR_CT_CONFEDERATIVA_, :CNPJ_SINDICATO
 do
 begin
   INDICE = char_length(:CNPJ_SINDICATO);
   while (:INDICE > 0) do
   begin
     CARACTER = cast(substring(:CNPJ_SINDICATO from :INDICE for 1) as char(1));
     if (not(:CARACTER between '0' and '9')) then
       CNPJ_SINDICATO = substring(:CNPJ_SINDICATO from 1 for (:INDICE - 1)) || substring(:CNPJ_SINDICATO from (:INDICE + 1) for (char_length(:CNPJ_SINDICATO) - :INDICE));
     INDICE = :INDICE - 1;
   end
   if (:VALOR_CT_SINDICAL_ != 0) then
   begin
       update DP_DADOS_RAIS
          set SINDICATO_CT_SINDICAL_DDR = :CNPJ_SINDICATO
        where AUTOINC_DDR = :AUTOINC
          and coalesce(SINDICATO_CT_SINDICAL_DDR, ) = ;
   end
   if (:VALOR_CT_ASSISTENCIAL_ != 0) then
   begin
       update DP_DADOS_RAIS
          set SINDICATO_CT_ASSISTENCIAL_DDR = :CNPJ_SINDICATO
        where AUTOINC_DDR = :AUTOINC
          and coalesce(SINDICATO_CT_ASSISTENCIAL_DDR, ) = ;
   end
   if (:VALOR_CT_CONFEDERATIVA_ != 0) then
   begin
       update DP_DADOS_RAIS
          set SINDICATO_CT_CONFEDERATIVA_DDR = :CNPJ_SINDICATO
        where AUTOINC_DDR = :AUTOINC
          and coalesce(SINDICATO_CT_CONFEDERATIVA_DDR, ) = ;
   end
 end
 update DP_DADOS_RAIS
    set DP_DADOS_RAIS.VALOR_CT_SINDICAL_DDR = (DP_DADOS_RAIS.VALOR_CT_SINDICAL_DDR * -1)
  where DP_DADOS_RAIS.VALOR_CT_SINDICAL_DDR < 0;
 update DP_DADOS_RAIS
    set DP_DADOS_RAIS.VALOR_CT_ASSISTENCIAL_DDR = (DP_DADOS_RAIS.VALOR_CT_ASSISTENCIAL_DDR * -1)
  where DP_DADOS_RAIS.VALOR_CT_ASSISTENCIAL_DDR < 0;
 update DP_DADOS_RAIS
    set DP_DADOS_RAIS.VALOR_CT_CONFEDERATIVA_DDR = (DP_DADOS_RAIS.VALOR_CT_CONFEDERATIVA_DDR * -1)
  where DP_DADOS_RAIS.VALOR_CT_CONFEDERATIVA_DDR < 0;
end


Esse irá preencher o campo cnpj do sindicato que será exportado para a rais.

Exportação para RAIS