Massaal veranderen documenttype voor projectbeveiliging op Exact Online Projecten

Bij het uitrollen van de Exact Online projectenmodule kan het nodig zijn om eerder vastgelegde documenten te verplaatsen naar een ander documenttype zodat niet alle medewerkers daartoe toegang hebben.

Het is momenteel niet mogelijk om Share te veranderen tussen “Prive” en “Administratie”.

De volgende code voor een Invantive Cloud applicatiemodule verplaatst alle documenten (projectgebonden en niet-projectgebonden) met het type “Bijlage” naar het type “Kopie van papieren bankafschrift”.

Voer hiervoor de volgende wijzigingen door:

  • Maak hiervoor een applicatie aan of voeg de PSQL-module toe aan een bestaande applicatie.
  • Pas de divisiecode van de administratie aan achter use en voor @eol.
  • Pas eventueel het aantal documenten per keer aan van 100 naar het gewenste aantal. Normaliter kunnen maximaal 5.000 documenten per dag per administratie bijgewerkt worden.

Resultaat na het plakken van de ondersteunde PSQL-statements is:

declare
  l_error_cnt pls_integer;
  --
  -- Stop after 10 errors.
  --
  c_error_max_cnt pls_integer := 10;
begin
  cloud_http.set_use_template(true);
  cloud_http.set_template_step_name('Move project documents - ' || to_char(sysdateutc) || '.');
  --
  -- Change division code.
  --
  use 123456@eol;
  --
  l_error_cnt := 0;
  for r
  in 
  ( select dct.id
    ,      dct.subject
    from   DocumentsIncremental@eol dct
    where  dct.type=183
    --and    dct.project is not null
    limit  100
  )
  loop
    begin
      update ExactOnlineREST..Documents@eol
      set    type = 42 /* Bank statement file. */
      where  type = 183 /* Attachment. */
      and    id = r.Id
      ;
      cloud_http.append_line_to_response_body_text
      ( '<p>Moved document ID ' 
        || to_char(r.Id)
        || ' from attachment to bank statement file ('
        || r.subject
        || ')</p>'
      );
    exception
      when others
      then
        l_error_cnt := l_error_cnt + 1;
        if l_error_cnt > c_error_max_cnt
        then
          raise;
        end if;
        cloud_http.append_line_to_response_body_text
        ( '<p>Moved document ID ' 
          || to_char(r.Id)
          || ' from attachment to bank statement file ('
          || r.subject
          || ') with error: '
          || sqlerrm
          || '</p>'
        );
    end;
  end loop;
end;