Tempo aproximado para leitura: 00:00:30 min
Dúvida
Como realizar o sincronismo de local de produção em Aptos Atividades Recursos - MBCS_ATRC?
Ambiente
TOTVS Agro – TOTVS Agro – Bioenergia –Aptos Atividades Recursos - MBCS_ATRC– Versão 12
Solução
Para solucionar essa dúvida, realize os seguintes passos:
1. Execute o comando abaixo, no banco de dados do PIMS CS - PIMS Cana, para criação da função FDECRSAFRA;
create or replace function fDecrSafra( pInstancia varchar2, pSafra number) return number is
tpSafra varchar2(50);
seqMaxSafra varchar2(50);
strSafra varchar2(10);
strSafraAnt varchar2(10);
strDireita varchar2(10);
strMeio varchar2(10);
begin
select valor into tpSafra from parametros where secao = 'NIVEIS' and entrada = 'TP_SAFRA' AND instancia = pInstancia;
select valor into seqMaxSafra from parametros where secao = 'NIVEIS' and entrada = 'SEQMAX_SAFRA' AND instancia = pInstancia;
if tpSafra = 'S' then
Begin
Return pSafra - 1;
end;
elsif tpSafra = 'G' then
Begin
strSafra := to_char(pSafra);
strDireita := substr(strSafra,length(strSafra),1) - 1;
if to_number( strDireita ) < 1 then
strSafraAnt := to_char(to_number(Substr(strSafra,0,4))-1) || seqMaxSafra;
else
strSafraAnt := Substr(strSafra,0,4) || strDireita;
end if;
Return to_number(strSafraAnt);
end;
elsif tpSafra = 'C' then
Begin
strSafra := lpad(to_char(pSafra),5,'0');
strMeio := substr(strSafra,2,2);
if (to_number(strMeio)-1) < 0 then
strSafraAnt := substr(to_char(to_number(strMeio) - 1 + 100),length(to_char(to_number(strMeio) - 1 + 100))-2,2) || strMeio;
else
strSafraAnt := substr(to_char(to_number(strMeio) - 1 ),length(to_char(to_number(strMeio) - 1 ))-2,2) || strMeio;
end if;
if ((substr(lpad(strSafraAnt,4,'0'),0,1) = '0') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '1') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '2') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '3') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '4') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '5') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '6') or
(substr(lpad(strSafraAnt,4,'0'),0,1) = '7')) then
strSafraAnt := '2' || lpad(strSafraAnt,4,'0');
end if;
return to_number(strSafraAnt);
End;
end if;
end;
create or replace function fRetornarApenasNumeros(sValor in VARCHAR2) return varchar2 is
Result VARCHAR2(2048);
begin
SELECT REGEXP_REPLACE(sValor, '[^[:digit:]$]') AS NUMEROS INTO Result FROM DUAL;
return(Result);
end fRetornarApenasNumeros;
0 Comentários