Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Impressão De Relatórios De Competências Anteriores Do Labore (Folha De Pagamento) Por Seção


Devailton N. Santana

Posts Recomendados


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

PROBLEMA:

Quem trabalha com o RM Labore provavelmente já vivenciou dificuldades para imprimir relatórios da folha de pagamento de competências anteriores por seção, pois, funcionários podem ser mudados de seção frequentemente e os resultados da Folha de Pagamento de uma competência antiga não será igual se tirada futuramente por causa dessas alterações de seções, já que a maioria dos relatórios considerará sempre a seção do funcionário no momento atual.

Isso cria uma dificuldade tremenda porque distorce os valores das seções em determinadas competências e deixa os analistas de cabeça quente porque montar o histórico fiel é bastante complicado.

Afinal, como saber de qual seção o funcionário "tal" era em determinada competência? O único recurso é dar uma olhadinha do Histórico de Seções... mas para montar relatórios ou extrair informações baseando-se no histórico de seções é muito penoso, você não concorda?

SOLUÇÃO:

Pensando a respeito, eu bolei uma forma de minimizar essa questão. Com isso, pelo menos nos relatórios gerados pelo Gerador, Gerador .net e Planilhas você conseguirá ter essa informação de forma rápida e fácil, além de conseguir criar os resumos de valores fielmente conforme a seção e a competência da época.

A minha ideia consiste em simplesmente indicar no cadastro de períodos da ficha financeira de qual seção aquele período pertence, ou seja, supondo que tenhamos o ANO 2013, MES 12, PERÍODO 5, CHAPA 005256, daí colocamos uma coluna a mais nessa tabela e dizemos que essa linha pertence a seção 01.01.01.001 por exemplo, facilitando assim identificarmos que o funcionário 005256 era da seção 01.01.01.001 em 12/2013 e além disso que todos os valores desse período deve ser lançado para essa seção.

Depois disso, eu precisa elaborar uma forma de criar essa coluna adicionou na tabela de períodos PFPERFF e também o histórico da competências de cada período e de cada funcionário! Eu consegui :yahoo: ! com a elaboração de query's para criar o campo adicional, para criar todo o histórico retroativo e uma forma de meus usuários irem alimentando essa informação nos competências futuras! Para nós isso foi bastante bom, mas não sei exatamente se é interessante para vocês, daí gostaria de saber se possuem interesse nessas query's, pois, poderei posta-las aqui...

Grande abraço,

Devailton

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  12
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  44
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  345
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

PROBLEMA:

Quem trabalha com o RM Labore provavelmente já vivenciou dificuldades para imprimir relatórios da folha de pagamento de competências anteriores por seção, pois, funcionários podem ser mudados de seção frequentemente e os resultados da Folha de Pagamento de uma competência antiga não será igual se tirada futuramente por causa dessas alterações de seções, já que a maioria dos relatórios considerará sempre a seção do funcionário no momento atual.

Isso cria uma dificuldade tremenda porque distorce os valores das seções em determinadas competências e deixa os analistas de cabeça quente porque montar o histórico fiel é bastante complicado.

Afinal, como saber de qual seção o funcionário "tal" era em determinada competência? O único recurso é dar uma olhadinha do Histórico de Seções... mas para montar relatórios ou extrair informações baseando-se no histórico de seções é muito penoso, você não concorda?

SOLUÇÃO:

Pensando a respeito, eu bolei uma forma de minimizar essa questão. Com isso, pelo menos nos relatórios gerados pelo Gerador, Gerador .net e Planilhas você conseguirá ter essa informação de forma rápida e fácil, além de conseguir criar os resumos de valores fielmente conforme a seção e a competência da época.

A minha ideia consiste em simplesmente indicar no cadastro de períodos da ficha financeira de qual seção aquele período pertence, ou seja, supondo que tenhamos o ANO 2013, MES 12, PERÍODO 5, CHAPA 005256, daí colocamos uma coluna a mais nessa tabela e dizemos que essa linha pertence a seção 01.01.01.001 por exemplo, facilitando assim identificarmos que o funcionário 005256 era da seção 01.01.01.001 em 12/2013 e além disso que todos os valores desse período deve ser lançado para essa seção.

Depois disso, eu precisa elaborar uma forma de criar essa coluna adicionou na tabela de períodos PFPERFF e também o histórico da competências de cada período e de cada funcionário! Eu consegui :yahoo: ! com a elaboração de query's para criar o campo adicional, para criar todo o histórico retroativo e uma forma de meus usuários irem alimentando essa informação nos competências futuras! Para nós isso foi bastante bom, mas não sei exatamente se é interessante para vocês, daí gostaria de saber se possuem interesse nessas query's, pois, poderei posta-las aqui...

Grande abraço,

Devailton

Boa Tarde, Tenho muito interesse seu relatorio parece bastante interessante.

Poderia disponibilizar?

Obrigada

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Boa Tarde, Tenho muito interesse seu relatorio parece bastante interessante.

Poderia disponibilizar?

Obrigada

Bom dia Bruna,
Siga as seguintes etapas.
Etapa 01 - Criar coluna adicional na tabela PFPERFF - Essa coluna armazenará o código da seção que o funcionário estava lotado no mês, ano e perído:
USE [CORPORERM]
GO

ALTER TABLE [dbo].[PFPERFF] ADD [CODSECAO] [varchar](35) NULL

ALTER TABLE [dbo].[PFPERFF] WITH CHECK ADD  CONSTRAINT [FKPFPERFF_PSECAO] FOREIGN KEY([CODCOLIGADA], [CODSECAO])
REFERENCES [dbo].[PSECAO] ([CODCOLIGADA], [CODIGO])
GO
Etapa 02 - A query abaixo serve para montar um UPDATE que após ser executado colocará o código da seção do funcionário no período corretamente (ANO, MÊS, NUMERO DO PERÍODO) - Executando a query, você verá o update montado, depois vc deve copiar esse update para nova query e executá-lo também:
SELECT 'UPDATE PFPERFF SET CODSECAO='''+
ISNULL(CASE
WHEN
(select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
=NULL THEN (SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA)
ELSE (select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
END,(SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA))
+''' FROM PFPERFF'+' WHERE PFPERFF.ANOCOMP='''+(CAST(ANOCOMP AS VARCHAR(4)))
+''' and PFPERFF.MESCOMP='''+(CAST(MESCOMP AS VARCHAR(4)))
+''' and PFPERFF.NROPERIODO='''+(CAST(NROPERIODO AS VARCHAR(4)))
+''' and PFPERFF.CHAPA='''+(CAST(CHAPA AS VARCHAR(10)))
+''' and PFPERFF.CODCOLIGADA='''+(CAST(CODCOLIGADA AS VARCHAR(10)))+''''
FROM PFPERFF
ORDER BY CODCOLIGADA,ANOCOMP,MESCOMP,CHAPA,NROPERIODO
A partir desse momento você já saberá de qual seção um determinado funcionário era em determinado momento apenas fazendo um select na tabela PFPERFF. Todo o histórico foi criado, agora você já poderá se beneficiar dessa informação.
Os funcionários e os períodos existentes até a competência aberta nesse momento já possuem essa informação, mas existirá a necessidade de ir alimentando essa informação nas competências futuras. Para isso você tem duas alternativa, ou você executa o update acima a qualquer momento, ou no momento que for fechar a competência da folha, antes de fechar rodar o update abaixo:
UPDATE PFPERFF SET PFPERFF.CODSECAO=PFUNC.CODSECAO 
FROM PFPERFF,PFUNC WHERE PFPERFF.CODCOLIGADA=PFUNC.CODCOLIGADA AND PFPERFF.CHAPA=PFUNC.CHAPA
AND PFPERFF.ANOCOMP=(SELECT PPARAM.ANOCOMP FROM PPARAM) AND PFPERFF.MESCOMP=(SELECT PPARAM.MESCOMP FROM PPARAM)
Grande abraço,
Devailton
  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  123
  • Conteúdo/Dia:  0.02
  • Reputação:   3
  • Pontos/Conquistas:  852
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  66

Bom dia Bruna,
Siga as seguintes etapas.
Etapa 01 - Criar coluna adicional na tabela PFPERFF - Essa coluna armazenará o código da seção que o funcionário estava lotado no mês, ano e perído:
USE [CORPORERM]
GO

ALTER TABLE [dbo].[PFPERFF] ADD [CODSECAO] [varchar](35) NULL

ALTER TABLE [dbo].[PFPERFF] WITH CHECK ADD  CONSTRAINT [FKPFPERFF_PSECAO] FOREIGN KEY([CODCOLIGADA], [CODSECAO])
REFERENCES [dbo].[PSECAO] ([CODCOLIGADA], [CODIGO])
GO
Etapa 02 - A query abaixo serve para montar um UPDATE que após ser executado colocará o código da seção do funcionário no período corretamente (ANO, MÊS, NUMERO DO PERÍODO) - Executando a query, você verá o update montado, depois vc deve copiar esse update para nova query e executá-lo também:
SELECT 'UPDATE PFPERFF SET CODSECAO='''+
ISNULL(CASE
WHEN
(select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
=NULL THEN (SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA)
ELSE (select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
END,(SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA))
+''' FROM PFPERFF'+' WHERE PFPERFF.ANOCOMP='''+(CAST(ANOCOMP AS VARCHAR(4)))
+''' and PFPERFF.MESCOMP='''+(CAST(MESCOMP AS VARCHAR(4)))
+''' and PFPERFF.NROPERIODO='''+(CAST(NROPERIODO AS VARCHAR(4)))
+''' and PFPERFF.CHAPA='''+(CAST(CHAPA AS VARCHAR(10)))
+''' and PFPERFF.CODCOLIGADA='''+(CAST(CODCOLIGADA AS VARCHAR(10)))+''''
FROM PFPERFF
ORDER BY CODCOLIGADA,ANOCOMP,MESCOMP,CHAPA,NROPERIODO
A partir desse momento você já saberá de qual seção um determinado funcionário era em determinado momento apenas fazendo um select na tabela PFPERFF. Todo o histórico foi criado, agora você já poderá se beneficiar dessa informação.
Os funcionários e os períodos existentes até a competência aberta nesse momento já possuem essa informação, mas existirá a necessidade de ir alimentando essa informação nas competências futuras. Para isso você tem duas alternativa, ou você executa o update acima a qualquer momento, ou no momento que for fechar a competência da folha, antes de fechar rodar o update abaixo:
UPDATE PFPERFF SET PFPERFF.CODSECAO=PFUNC.CODSECAO 
FROM PFPERFF,PFUNC WHERE PFPERFF.CODCOLIGADA=PFUNC.CODCOLIGADA AND PFPERFF.CHAPA=PFUNC.CHAPA
AND PFPERFF.ANOCOMP=(SELECT PPARAM.ANOCOMP FROM PPARAM) AND PFPERFF.MESCOMP=(SELECT PPARAM.MESCOMP FROM PPARAM)
Grande abraço,
Devailton

Boa tarde, Devailton!

Primeiramente que deixar meus parabéns pela sua iniciativa em compartilhar esse conhecimento! Segundo tenho duas perguntas: podemos adaptar esses updates para utilizar com o Rateio Fixo? E a cada vez que fizermos uma conversão da base teremos que rodar novamente o update?

Obrigado.

Maurício

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Boa tarde, Devailton!

Primeiramente que deixar meus parabéns pela sua iniciativa em compartilhar esse conhecimento! Segundo tenho duas perguntas: podemos adaptar esses updates para utilizar com o Rateio Fixo? E a cada vez que fizermos uma conversão da base teremos que rodar novamente o update?

Obrigado.

Maurício

Boa tarde Maurício, é sempre um prazer compartilhar conhecimentos e experiências, sempre tem alguém para acrescentar e te ajudar em algo... e assim vamos aprendendo mais e mais.

Sobre os rateios fixos não precisamos "criar" o histórico porque o sistema já faz isso, ou seja, ele grava a movimentação por centro de custo mensalmente na tabela PFMOVCC, indicando em todas as competências e períodos que aquela movimentação é de determinado centro de custo. O ruim aqui é que na PFMOVCC não conseguimos base de cálculo de inss, de fgts e etc em campos calculados como na PFPERFF... na PFMOVCC são só os valores dos eventos rateados pelos centros de custos. Se você quer valores dos tributos por centro de custo poderá utilizar as informações da PFENCCC, lá tem PROVISÃO, RAT, FPAS (TERCEIROS), INSS EMPRESA e etc e por centro de custo, é um caminho legal.

Sobre rodar o UPDATE, é o seguinte, como é uma informação adicional e que o sistema não foi preparado pela Totvs para salva-la você terá que rodar o update menor no momento que for liberar a competência da folha de pagamento (antes de liberar a competência, mas já com a folha totalmente fechada), assim, ele preencherá o campo CODSECAO da PFPERFF com a seção atual do funcionário, desse modo manterá o histórico sempre atualizado, mas supondo que alguma competência você esqueça de fazer isso, dái você poderá executar o update maior que ele irá atualizar todos anos e competências novamente. Mas isso não tem nenhuma relação com conversão ou atualização de versão e sim com as competências da folha. O campo adicional na tabela de períodos se manterá mesmo com as atualizações de versão do sistema não tendo e nem sendo nenhum problema.

Ats.,

Devailton

  • Like 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  123
  • Conteúdo/Dia:  0.02
  • Reputação:   3
  • Pontos/Conquistas:  852
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  66

Boa tarde Maurício, é sempre um prazer compartilhar conhecimentos e experiências, sempre tem alguém para acrescentar e te ajudar em algo... e assim vamos aprendendo mais e mais.

Sobre os rateios fixos não precisamos "criar" o histórico porque o sistema já faz isso, ou seja, ele grava a movimentação por centro de custo mensalmente na tabela PFMOVCC, indicando em todas as competências e períodos que aquela movimentação é de determinado centro de custo. O ruim aqui é que na PFMOVCC não conseguimos base de cálculo de inss, de fgts e etc em campos calculados como na PFPERFF... na PFMOVCC são só os valores dos eventos rateados pelos centros de custos. Se você quer valores dos tributos por centro de custo poderá utilizar as informações da PFENCCC, lá tem PROVISÃO, RAT, FPAS (TERCEIROS), INSS EMPRESA e etc e por centro de custo, é um caminho legal.

Sobre rodar o UPDATE, é o seguinte, como é uma informação adicional e que o sistema não foi preparado pela Totvs para salva-la você terá que rodar o update menor no momento que for liberar a competência da folha de pagamento (antes de liberar a competência, mas já com a folha totalmente fechada), assim, ele preencherá o campo CODSECAO da PFPERFF com a seção atual do funcionário, desse modo manterá o histórico sempre atualizado, mas supondo que alguma competência você esqueça de fazer isso, dái você poderá executar o update maior que ele irá atualizar todos anos e competências novamente. Mas isso não tem nenhuma relação com conversão ou atualização de versão e sim com as competências da folha. O campo adicional na tabela de períodos se manterá mesmo com as atualizações de versão do sistema não tendo e nem sendo nenhum problema.

Ats.,

Devailton

Bom dia, Devailton!

Muito obrigado pelos esclarecimentos.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  110
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  1.391
  • Conteúdo/Dia:  0.21
  • Reputação:   17
  • Pontos/Conquistas:  8.047
  • Conteúdo Resolvido:  0
  • Dias Ganho:  9
  • Status:  Offline
  • Idade:  47
  • Dispositivo:  Windows

Cara, muito bom. Já "penei" muito pra conseguir essa informação. Vou adaptar o script para Oracle e testar.

:EmoticonosMsN (85):

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  16
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  77
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  545
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  33

Faço meus relatórios utilizando o histórico das seções.

Dificil é contabilizar retroativamente, na seção onde o funcionario estava lotado

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Faço meus relatórios utilizando o histórico das seções.

Dificil é contabilizar retroativamente, na seção onde o funcionario estava lotado

Ainda bem que minha contabilização é por centro de custo. rsrs

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  236
  • Tópicos/Dia:  0.04
  • Meu Conteúdo:  798
  • Conteúdo/Dia:  0.13
  • Reputação:   3
  • Pontos/Conquistas:  6.333
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline
  • Idade:  44

Muito boa dica!!

Acho incrível como o Labore não possui histórico de centro de custos...e nem sombra de uma solução para isso!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  885
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.802
  • Conteúdo/Dia:  1.34
  • Reputação:   291
  • Pontos/Conquistas:  106.268
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

Gente, uma atualização de versão que contemple mudanças em tabelas pode sumir com isso heim !! Cuidado !! :)

Eu sinceramente acho que o melhor seria a leitura nas tabelas de históricos, pois, o sistema guarda isso, e tem que estar certo, pois, é usado para anuais inclusive.

E parabéns por compartilhar Devailton !

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Bom dia Rodrigo Burgos, realmente não existe um histórico para o centro de custo nos moldes dos históricos de seção, de afastamento e etc., provavelmente porque muitas empresas fazem rateio dos custos de mão-de-obra por diversos centros de custos e isso pode mudar a todo momento, não tendo a mesma ideia de seção que serve para alocar pessoa em locais ou departamentos por exemplo, que muda, mas não muda tanto e também não tem rateio. Se existisse o histórico de centro de custo, uma pessoa que é rateada por diversos centros de custos em determinada competência teria que ter o histórico desses tantos centros de custo nessa competência, fazendo que você tivesse uma tabela de históricos monstruosa.

Você conseguirá montar um histórico de centro de custo utilizando as informações da tabela PFMOVCC, nela você terá CHAPA, ANO, MÊS, E CENTRO DE CUSTO, essas são informações suficiente para agrupar e fazer suas amarrações via sql por exemplo.

O minha ideia com o CÓDIGO DA SEÇÃO nos períodos da ficha financeira (PFPERFF) é muito parecida com o que acontece com a PFMOVCC, pois, nela agente sabe exatamente que aquele lançamento para determinado funcionário em determinada competência é de determinado centro de custo... e a minha ideia era determinar que determinado período da ficha financeira é de determinada seção... com isso faço todas as amarrações e agrupamentos muito, mais muito mais fácil que utilizar o histórico de seções.

Ats.,

Devailton

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Olá Jair, as atualizações de versão via Conversor não exclui essa coluna nova, tão pouco essa coluna nova causa algum problema para o conversor... tudo tranquilo. Já passei por duas atualizações e tudo correu bem. Imagino que nas conversões futuras isso também não seja empecilho.

Jair e Paula Moreira, sobre utilizar os históricos das seções seria ótimo, daí não precisaríamos criar essa soluções "paliativas", mas eu sempre tive dificuldades com isso, vocês poderiam compartilhar exemplos de relatórios, planilhas e ect que utilizam histórico de seções conosco? preciso de novas visões, rsrs...

Obrigado,

Devailton

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  12
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  44
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  345
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia Bruna,
Siga as seguintes etapas.
Etapa 01 - Criar coluna adicional na tabela PFPERFF - Essa coluna armazenará o código da seção que o funcionário estava lotado no mês, ano e perído:
USE [CORPORERM]
GO

ALTER TABLE [dbo].[PFPERFF] ADD [CODSECAO] [varchar](35) NULL

ALTER TABLE [dbo].[PFPERFF] WITH CHECK ADD  CONSTRAINT [FKPFPERFF_PSECAO] FOREIGN KEY([CODCOLIGADA], [CODSECAO])
REFERENCES [dbo].[PSECAO] ([CODCOLIGADA], [CODIGO])
GO
Etapa 02 - A query abaixo serve para montar um UPDATE que após ser executado colocará o código da seção do funcionário no período corretamente (ANO, MÊS, NUMERO DO PERÍODO) - Executando a query, você verá o update montado, depois vc deve copiar esse update para nova query e executá-lo também:
SELECT 'UPDATE PFPERFF SET CODSECAO='''+
ISNULL(CASE
WHEN
(select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
=NULL THEN (SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA)
ELSE (select CODSECAO from pfhstsec where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DTMUDANCA = (select max(pfhstsec.DTMUDANCA) from pfhstsec where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(pfhstsec.DTMUDANCA)=max(pfhstsec.DTMUDANCA)) 
group by codsecao having max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112))=max(CONVERT(VARCHAR(6),pfhstsec.DTMUDANCA,112)))
END,(SELECT CODSECAO FROM PFUNC WHERE CODCOLIGADA=PFPERFF.CODCOLIGADA AND CHAPA=PFPERFF.CHAPA))
+''' FROM PFPERFF'+' WHERE PFPERFF.ANOCOMP='''+(CAST(ANOCOMP AS VARCHAR(4)))
+''' and PFPERFF.MESCOMP='''+(CAST(MESCOMP AS VARCHAR(4)))
+''' and PFPERFF.NROPERIODO='''+(CAST(NROPERIODO AS VARCHAR(4)))
+''' and PFPERFF.CHAPA='''+(CAST(CHAPA AS VARCHAR(10)))
+''' and PFPERFF.CODCOLIGADA='''+(CAST(CODCOLIGADA AS VARCHAR(10)))+''''
FROM PFPERFF
ORDER BY CODCOLIGADA,ANOCOMP,MESCOMP,CHAPA,NROPERIODO
A partir desse momento você já saberá de qual seção um determinado funcionário era em determinado momento apenas fazendo um select na tabela PFPERFF. Todo o histórico foi criado, agora você já poderá se beneficiar dessa informação.
Os funcionários e os períodos existentes até a competência aberta nesse momento já possuem essa informação, mas existirá a necessidade de ir alimentando essa informação nas competências futuras. Para isso você tem duas alternativa, ou você executa o update acima a qualquer momento, ou no momento que for fechar a competência da folha, antes de fechar rodar o update abaixo:
UPDATE PFPERFF SET PFPERFF.CODSECAO=PFUNC.CODSECAO 
FROM PFPERFF,PFUNC WHERE PFPERFF.CODCOLIGADA=PFUNC.CODCOLIGADA AND PFPERFF.CHAPA=PFUNC.CHAPA
AND PFPERFF.ANOCOMP=(SELECT PPARAM.ANOCOMP FROM PPARAM) AND PFPERFF.MESCOMP=(SELECT PPARAM.MESCOMP FROM PPARAM)
Grande abraço,
Devailton

]Muito obrigada irá me ajudar demais.

Abraços

Link para comentar
Compartilhar em outros sites

  • 2 meses depois...

  • Tópicos Que Criei:  30
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  225
  • Conteúdo/Dia:  0.04
  • Reputação:   18
  • Pontos/Conquistas:  1.434
  • Conteúdo Resolvido:  0
  • Dias Ganho:  11
  • Status:  Offline
  • Idade:  42

Olá,

Para quem testou, implementou e continua utilizando a minha sugestão de incluir o CÓDIGO DA SEÇÃO nos PERÍODOS da Ficha Financeira e tiver interesse em ter um HISTOGRAMA DE MÃO-DE-OBRA, no qual é possível saber exatamente quantos funcionários ATIVOS, DEMITIDOS, AFASTADOS, ETC. de determinada FUNÇÃO em determinada COMPETÊNCIA poderá utilizar a QUERY SQL SERVER abaixo. No cadastro de SEÇÕES na aba DADOS CONTÁBEIS se estiver preenchido o NÚMERO DO CENTRO DE CUSTO (código) essa QUERY irá levar esse CENTRO DE CUSTO ao lado da SEÇÃO, isso serve para termos um quantitativo também por centro de custo (se for o caso).

O resultado dessa QUERY no Microsoft Excel utilizando a tabela dinâmica dá para ter uma porção de visões referente a quantitativo de mão-de-obra.

Espero que sirva para alguém....

SELECT [COMPETÊNCIA],(select CODSECAO+' - '+DESCRICAO from PSECAO WHERE PSECAO.CODCOLIGADA=CODCOLIGADA AND PSECAO.CODIGO=CODSECAO) AS 'SEÇÃO',
(SELECT GCCUSTO.CODCCUSTO+' - '+GCCUSTO.NOME  FROM GCCUSTO WHERE GCCUSTO.CODCCUSTO=(select NROCENCUSTOCONT from PSECAO WHERE PSECAO.CODCOLIGADA=CODCOLIGADA AND PSECAO.CODIGO=CODSECAO) AND GCCUSTO.CODCOLIGADA=CODCOLIGADA) AS 'CENTRO DE CUSTO DA SEÇÃO'
,(SELECT PCODSITUACAO.DESCRICAO FROM PCODSITUACAO WHERE CODINTERNO=CODSITUACAO) AS 'SITUAÇÃO',COUNT(CHAPA) AS 'QUANTIDADE'
,(SELECT CODIGO+' - '+NOME FROM PFUNCAO WHERE PFUNCAO.CODCOLIGADA=CODCOLIGADA AND PFUNCAO.CODIGO=CODFUNCAO) AS 'FUNÇÃO'
FROM
(SELECT DISTINCT(CHAPA),
ISNULL(CASE
WHEN
(select NOVASITUACAO from PFHSTSIT where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DATAMUDANCA = (select max(PFHSTSIT.DATAMUDANCA) from PFHSTSIT where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(PFHSTSIT.DATAMUDANCA)=max(PFHSTSIT.DATAMUDANCA)) 
group by NOVASITUACAO having max(CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112))=max(CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)))
=NULL THEN 'A'
ELSE (select NOVASITUACAO from PFHSTSIT where CHAPA=PFPERFF.CHAPA 
and CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AND DATAMUDANCA = (select max(PFHSTSIT.DATAMUDANCA) from PFHSTSIT where CHAPA=PFPERFF.CHAPA
and CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)<=(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) 
having max(PFHSTSIT.DATAMUDANCA)=max(PFHSTSIT.DATAMUDANCA)) 
group by NOVASITUACAO having max(CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112))=max(CONVERT(VARCHAR(6),PFHSTSIT.DATAMUDANCA,112)))
END,'A') AS CODSITUACAO,
(CAST(ANOCOMP AS VARCHAR(4))+CAST(CASE 
WHEN MESCOMP='1' THEN '01'
WHEN MESCOMP='2' THEN '02'
WHEN MESCOMP='3' THEN '03'
WHEN MESCOMP='4' THEN '04'
WHEN MESCOMP='5' THEN '05'
WHEN MESCOMP='6' THEN '06'
WHEN MESCOMP='7' THEN '07'
WHEN MESCOMP='8' THEN '08'
WHEN MESCOMP='9' THEN '09'
WHEN MESCOMP='10' THEN '10'
WHEN MESCOMP='11' THEN '11'
WHEN MESCOMP='12' THEN '12'
ELSE '0'
END AS VARCHAR (2))) AS 'COMPETÊNCIA'
,CODSECAO,(SELECT CODFUNCAO FROM PFUNC WHERE PFUNC.CODCOLIGADA=PFPERFF.CODCOLIGADA AND PFUNC.CHAPA=PFPERFF.CHAPA) AS 'CODFUNCAO',CODCOLIGADA
FROM PFPERFF
) AS HISTOGRAMADEMAODEOBRA
GROUP BY [COMPETENCIA],CODSECAO,CODSITUACAO,CODFUNCAO
order by [COMPETENCIA],CODSECAO,CODSITUACAO,CODFUNCAO
Grande abraço,
Devailton
  • Like 1
Link para comentar
Compartilhar em outros sites

  • 5 meses depois...

  • Tópicos Que Criei:  0
  • Tópicos/Dia:  0
  • Meu Conteúdo:  1
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  5
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Devailton

Muito obrigada, por compartilhar seu conhecimento, já estava quase pirando aqui, quando encontrei esse tópico.

Já executei o primeiro update para inclusão da coluna, mas o segundo, está com erro de sintaxe.

Será que você poderia me ajudar??

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  885
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.802
  • Conteúdo/Dia:  1.34
  • Reputação:   291
  • Pontos/Conquistas:  106.268
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

Olá Jair, as atualizações de versão via Conversor não exclui essa coluna nova, tão pouco essa coluna nova causa algum problema para o conversor... tudo tranquilo. Já passei por duas atualizações e tudo correu bem. Imagino que nas conversões futuras isso também não seja empecilho.

Jair e Paula Moreira, sobre utilizar os históricos das seções seria ótimo, daí não precisaríamos criar essa soluções "paliativas", mas eu sempre tive dificuldades com isso, vocês poderiam compartilhar exemplos de relatórios, planilhas e ect que utilizam histórico de seções conosco? preciso de novas visões, rsrs...

Obrigado,

Devailton

Devailton,

bom dia. Este post ficou pra trás e acabei não te respondendo a respeito. Sobre relatórios e modelos de querys, não tenho aqui agora, até porque fiquei um pouco afastado da parte de suporte, e atendimento em geral nos sistemas, mas precisando de ajuda, de repente posso tentar dar uma força.

Você comentou acima também que não há qualquer problema nas conversões etc. Isso está correto em partes. Normalmente o sistema não mexe no que você alterou, mas eventualmente poderá ser remontada essa tabela ( já vi casos em outras ) e o sistema recria outra, e copia os dados pra lá, e existindo campos extras estes não são tratados, ficando no final, uma nova tabela sem seu campo. :) Mas isso é bem incomum, então para acontecer não é facil. Caso ocorra, nada que um backup não possa ajudar pra repor.

Devailton

Muito obrigada, por compartilhar seu conhecimento, já estava quase pirando aqui, quando encontrei esse tópico.

Já executei o primeiro update para inclusão da coluna, mas o segundo, está com erro de sintaxe.

Será que você poderia me ajudar??

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

UPDATE PFPERFF SET PFPERFF.CODSECAO=PFUNC.CODSECAO

FROM PFPERFF,PFUNC WHERE PFPERFF.CODCOLIGADA=PFUNC.CODCOLIGADA AND PFPERFF.CHAPA=PFUNC.CHAPA

AND PFPERFF.ANOCOMP=(SELECT PPARAM.ANOCOMP FROM PPARAM) AND PFPERFF.MESCOMP=(SELECT PPARAM.MESCOMP FROM PPARAM)

Corrija este update para a query abaixo, pois, existindo mais de uma coligada poderá dar problema mesmo:

UPDATE PFPERFF SET PFPERFF.CODSECAO=PFUNC.CODSECAO

FROM PFPERFF,PFUNC,PPARAM

WHERE PFPERFF.CODCOLIGADA=PFUNC.CODCOLIGADA AND PFPERFF.CHAPA=PFUNC.CHAPA

AND PPARAM.CODCOLIGADA=PFUNC.CODCOLIGADA

AND PFPERFF.ANOCOMP=PPARAM.ANOCOMP AND PFPERFF.MESCOMP=PPARAM.MESCOMP

Tente novamente, pois, agora deve corrigir o problema que citou acima.

Não testei aqui agora, pois, estou sem o query para poder validar, mas creio que seja isso mesmo. :)

Corrija este update para a query abaixo, pois, existindo mais de uma coligada poderá dar problema mesmo:

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  94
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  400
  • Conteúdo/Dia:  0.10
  • Reputação:   0
  • Pontos/Conquistas:  2.951
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  5

Pode utilizar esse filtro na consulta.

Onde ao executar o relatorio é só colocar o mes posterior na opção MES_N que trará a opção do mês que deseja.

Ou seja quero informação do mês de janeiro, logo no filtro MES_N colocarei o mes de fevereiro.

C = PFUNC

AND C.CODCOLIGADA = PFHSTSEC1.CODCOLIGADA
AND C.CHAPA = PFHSTSEC1.CHAPA
AND PFHSTSEC1.DTMUDANCA = (SELECT MAX(PFHSTSEC2.DTMUDANCA)
FROM PFHSTSEC PFHSTSEC2
WHERE

PFHSTSEC2.CODCOLIGADA = C.CODCOLIGADA
AND PFHSTSEC2.CHAPA = C.CHAPA
AND C.CODCOLIGADA = PSECAO.CODCOLIGADA
AND PFHSTSEC1.CODSECAO= PSECAO.CODIGO
AND PFHSTSEC2.DTMUDANCA < TO_DATE('01/'|| :MES_N ||'/'|| :ANO_N,'DD/MM/RRRR'))

Editado por João Lemos
Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.