segunda-feira, 18 de julho de 2016

Direito dos bancários

As regras do direito do trabalho bancário estão fixadas principalmente na CLT, nos artigos 224 a 226 e seus parágrafos e nas decisões sumuladas que o Tribunal Superior do Trabalho vem editando ao longo dos anos, com a finalidade de padronizar a jurisprudência, sobre as questões mais relevantes que envolvem a relação do trabalhador com os bancos, mormente no que se relaciona com as horas extras. O que muitos bancários não sabem é que a duração normal do trabalho bancário é de seis horas por dia e de trinta horas semanais, sendo excluído o trabalho aos sábados.
Os bancários que exercem cargos de chefia, de direção, de gerência ou equivalente, têm a sua jornada de trabalho acrescida de mais duas horas e essas horas não são pagas como extraordinárias se o empregado receber uma gratificação de função/comissão de cargo que seja, no mínimo, equivalente a 1/3 (um terço) do valor de seu salário efetivo.
Ocorre que, para que o empregado se enquadre nessa exceção, necessário que seja avaliado quais são as atividades capaz de afastar a jornada especial. Assim, necessário que se analise profundamente as reais atribuições (inteligência da súmula 102, item I do TST).
Nesse sentido, a experiência nos revela que os gerentes de contas, de relacionamento e as diversas ramificações da nomenclatura que a terminologia permite, na atualidade, são meros vendedores, cujas atribuições em síntese consiste em: atender, visitar, vender e cobrar clientes e, portanto, o correto enquadramento desses profissionais é no caput do artigo 224 da CLT.
Portanto, não basta que a função exercida tenha uma denominação pomposa, sofisticada. O rótulo efetivamente não interessa. É preciso verificar o conteúdo das atividades prestadas. Se o bancário é chefe apenas de si mesmo, se não exercer o comando de algum setor, se não possui subordinados, a jornada normal será de seis horas e as que ultrapassarem desse limite serão consideradas horas extras, ainda que receba a gratificação.
Ainda, no caso do trabalhador ser enquadrado no cargo de seis horas, será utilizado para cálculo das horas extras o divisor 150 e, para os casos de oito horas, o cálculo utilizará o divisor 200, de acordo com o disposto na Súmula 124 do TST.
Portanto, mesmo que o empregado tenha recebido todas as horas extras registradas no cartão de ponto, mesmo assim terá direito as diferenças em razão da utilização do divisor, uma vez que as Instituições bancárias não observam o disposto na referida Súmula.
Somente encontram-se excluídos do direito as horas extras além da sexta diárias, os empregados que exerçam atividades de confiança e que estejam enquadrados no artigo 62, II, da CLT, ou seja, aquelas pessoas que possuem total autonomia de atividades e horários, sem que haja a necessidade de fiscalização por um superior.

Além das horas extras, os bancários podem postular o direito a percepção da participação dos lucros proporcionais aos meses trabalhados quando forem demitidos, equiparação salarial, assédio ou dano moral, desvio de função, dentre outros requerimentos, de acordo com os direitos que lhe foram violados durante todo o período contratual.

segunda-feira, 15 de junho de 2015

rich:popupPanel com commandbutton

Após muita busca, consegui encontrar uma maneira para fazer o popupPanel do RichFaces chamar um método no Bean.
O segredo é colocar a tag domElementAttachment passando o id do formulário que está anexando:

<rich:popupPanel domElementAttachment="formId" id="popupId" modal="true" autosized="false"
                    resizeable="false" moveable="false"
                    style="z-index:9999; left:50px; right:50px; top:0px; position:absolute;">
            <f:facet name="header">
                <h:outputText value="Título" />
            </f:facet>
            <p>Mensagem</p>

            <table valign="top" border="0" cellpadding="2" cellspacing="2"
                align="center" width="30" id="buttonTable">
                <!-- TABELA DOS BOTOES -->
                <tbody>
                    <tr valign="top">
                        <td width="8"><h:commandButton id="confirmButton"
                                actionListener="#{cc.attrs.metodoAcao}"
                                action="cc.attrs.acao"
                                image="#{msg['_nls.imageDir']}/botoes/bt_sim_off.gif"
                                styleClass="blinkingButton " />
                                </td>
                        <td width="8"><h:commandButton id="cancelButton"
                                onclick="rich:component('#{cc.attrs.id}')}.hide();"
                                image="#{msg['_nls.imageDir']}/botoes/bt_nao_off.gif"
                                styleClass="blinkingButton naoLigaAmpulheta" immediate="true" />
                        </td>
                    </tr>
                </tbody>
            </table>
        </rich:popupPanel>

Espero ter ajudado!

abraços

quinta-feira, 23 de abril de 2015

Selecionando item dentro de um select

Neste post, mostraremos como selecionar, capturar o valor de um item do selectbox ou todos os itens selecionados ou não.

HTML:
<select id="sel" multiple="multiple" onchange="seleciona()">
  <option>0</option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    <option>11</option>
    <option>12</option>
</select>

Agora a função javascript que percorre os itens do selectbox:

function seleciona(){
        var x = document.getElementById('sel').selectedIndex;
        var index = document.getElementsByTagName("option")[x].value;
        if(index == 0){
       
        selectAll(document.getElementById('sel'), true);
        }
        alert(document.getElementsByTagName("option")[x].value);
        }

Função que seleciona os itens:
function selectAll(selectBox,selectAll) {
    //o id do select passado
    if (typeof selectBox == "string") {
        selectBox = document.getElementById(selectBox);
    }
    // é um selectbox múltiplo
    if (selectBox.type == "select-multiple") {
        for (var i = 0; i < selectBox.options.length; i++) {
             selectBox.options[i].selected = selectAll;
        }
    }
}


quarta-feira, 25 de março de 2015

Query no Oracle com data, utilizando a função to_date e to_timestamp

Neste post, utilizaremos a função to_date() do Oracle para passarmos uma data como parâmetro na consulta:
select * from chamada
where chbd_dt_execucao >= to_date('11/09/2012 15:06:06', 'dd/mm/yyyy HH24:MI:ss');

Saída:






Utilizando a função TO_TIMESTAMP:

SELECT TO_TIMESTAMP('01/11/2010 18:00:00:325463',
                     'DD/MM/RRRR HH24:MI:SS:FF') FROM DUAL;
 
 Saída:





Outras formas de consulta:

to_date('10-12-06','MM-DD-YY')
to_date('jan 2007','MON YYYY')
to_date('2007/05/31','YYYY/MM/DD')
to_date('12-31-2007 12:15','MM-DD-YYYY HH:MI')
to_date('2006,091,00:00:00' , 'YYYY,DDD,HH24:MI:SS')
to_date('15-may-2006 06:00:01','dd-mon-yyyy hh24:mi:ss')
to_date('022002','mmyyyy')
to_date('12319999','MMDDYYYY')
to_date(substr( collection_started,1,12),'DD-MON-YY HH24')
to_date('2004/10/14 21', 'yyyy/mm/dd hh24')
TO_DATE(First_Load_Time, 'yyyy-mm-dd/hh24:mi:ss'))*24*60)

quarta-feira, 4 de dezembro de 2013

Configurando datasource no tomcat

Adicionar o seguinte trecho de código no arquivo context.xml.
Ele pode estar contido em: META-INF/context.xml no projeto;
conf/context.xml dentro do servidor;
e nas configurações de servidores do eclipse

<Resource name="jdbc/teste" auth="Container" type="javax.sql.DataSource"
             maxActive="150" maxIdle="75" maxWait="10000" minIdle="50"
        timeBetweenEvictionRunsMillis="30000" minEvictableIdleTimeMillis="60000"
        removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
              username="mm" password="123456" driverClassName="oracle.jdbc.OracleDriver"
     url="jdbc:oracle:thin:@mmdigitaltst:1522:xe"/>


Na sua classe para conexão:

import javax.naming.Context;
import javax.naming.InitialContext;
ou utilizar o injectioin: 
import javax.annotation.Resource;
@Resource(name="jdbc/teste")
DataSource ds;
Context initContext;
  try {
   initContext = new InitialContext();
//   NO TOMCAT
//    Context envContext  = (Context)initContext.lookup("java:/comp/env");
//      DataSource ds = (DataSource)envContext.lookup("jdbc/teste");
//   NO JBOSS
   Context envContext  = new InitialContext();
   DataSource ds = (DataSource)envContext.lookup("java:jdbc/teste");
//   
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select * from ami_cliente");
   int x = 0;
   PrintWriter pw = response.getWriter();
   while(rs.next()){
    pw.println(x);
    System.out.println(x);
    x++;
   }
   pw.flush();
   pw.close();
  } catch (NamingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }catch (SQLException e) {
   // TODO: handle exception
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 vamos informar ao Hibernate que ele vai usar uma conexão JNDI, para o Hibernate o que importa é o path. Se amanhã você mudar a senha de conexão, vai precisar alterar apenas o arquivo context.xml que está na pasta Server dentro do Eclipse, lembrando que isso é em ambiente de teste. Abaixo, veja como ficou meu arquivo hibernate.cfg.xml:
<hibernate-configuration>
<session-factory name="hibernate/SessionFactory">
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/lpjava</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.jdbc.batch_size">0</property>
<mapping class="br.com.camilolopes.bean.TUsuario"/>
</session-factory>
</hibernate-configuration>
Mais informações: http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
http://jbossdivers.wordpress.com/2011/08/31/configurando-data-source-no-jboss-as-6-1/
http://www.mastertheboss.com/jboss-datasource/jboss-datasource-configuration

segunda-feira, 18 de novembro de 2013

Criando scheduler com Quartz

import org.apache.log4j.Logger;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;

import br.com.gmm.scheduler.tasks.MMOnlineSchedulerTask;

public class SchedulerAgent extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 4867136433906642551L;
private static final Logger LOGGER = Logger.getLogger(SchedulerAgent.class.getName());
public static Scheduler scheduler;


@Override
public void init(ServletConfig config) throws ServletException {
LOGGER.info("iniciando servletAgente de scheduler");


try {
Scheduler scheduler = new StdSchedulerFactory().getDefaultScheduler();
       scheduler.start();
      JobDetail jobDetail = new JobDetail("MyJob", scheduler.DEFAULT_GROUP, MMOnlineSchedulerTask.class); //Define qual a classe que contém o metodo Job a ser executado
      CronTrigger trigger = new CronTrigger("MyTrigger", scheduler.DEFAULT_GROUP, "0 0 8 * * ? *");// determina o horário de cada execução: todos os dias às 8:00 horas
      scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException  e) {
LOGGER.warn(e);
} catch (ParseException e) {
LOGGER.warn(e);
}


}
}

package br.com.gmm.scheduler.tasks;

import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import br.com.gmm.scheduler.entity.mmonline.ViewMMOnline;
import br.com.gmm.scheduler.facade.FacadeFactory;
import br.com.gmm.scheduler.facade.MmonlineFacade;

public class MMOnlineSchedulerTask implements ISchedulerTask, Job{
private static Logger logger = Logger.getLogger(MMOnlineSchedulerTask.class);
public void run(){

//esse método é executado!!!
StatusNewsScheduleTask newsScheduleTask = new StatusNewsScheduleTask();
newsScheduleTask.run();
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
run();

}
}



Ler html a partir uma URL

Como ler o html de uma pagina na web através da url com java:

import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class UrlTask{
   public static void main(String[] args){
      URL url;
try {
url = new URL("http://youtu.be/VKZ6Tmu9NWw?t=4m");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
       String linha = "";
       while ((linha = reader.readLine()) != null)
           System.out.println(linha);
       reader.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   }

}

quarta-feira, 6 de novembro de 2013

Preencher zeros à esquerda com função Oracle

Preencher zeros à esquerda com função Oracle 

No Oracle assim no como no Postgres a função LPAD preenche caracteres no lado esquerdo de uma string.
Sintaxe:
LPAD (strlenghtpad)
Legenda:
stré a seqüência de caracteres preencher o lado esquerdo.
Length: posições (qtde) à preencher.
pad: é o valor que irá completar as posições.
Exemplos de uso:
lpad('tech', 7); retorna '   tech'
lpad('tech', 2); retorna 'te'
lpad('tech', 8, '0'); retorna '0000tech'
lpad('tech on the net', 16, 'z'); retorna 'ztech on the net'
lpad('tech on the net', 15, 'z'); retorna 'tech on the net'



Para preencher zeros a esquerda:
select LPAD(string,3,0) from tabela –- dada a string “A” com tamanho 3, e pad “0”, irá resultar em “00A”

--update geral na coluna para completar com zero a esquerda o valores com tamanho inferior a 6 digitos
update aluno set matricula = lpad(matricula, 6, '0'); --valor 123 vai para 000123, valor 2 vai para 000003, etc...

Veja a função RPAD caso queira fazer o prenchimento à direita.