conn = $conn; $this->nometabelas = array(); $this->nometabelas = $tablenames; $this->relacionamentos = $relations; //die($this->odbc_conn); $this->tabelas = array(); foreach ($this->nometabelas as $nome){ $this->tabelas[$nome] = array(); } } //formata a data do pt_br para ingles function formataDataEn($dt=''){ if($dt == '') return ''; list($dia,$mes,$ano)=split("/", $dt,3); $retorno = "".$ano."-".$mes."-".$dia; return $retorno; } // formata a data do odbc pro formato brasileiro function formataDataPt($dt=''){ if($dt == '') return ''; list($ano,$mes,$dia)=split("-", $dt,3); $retorno = "".$dia."/".$mes."/".$ano; return $retorno; } function set($tabela, $campo, $val){ if($this->checkcampo($tabela, $campo)){ $this->tabelas[$tabela][$campo] = $val; return true; } else return false; } function checkcampo($tabela, $campo){ $this->query="SP_COLUMNS ".$tabela; $id = $this->execute($this->conn, $this->query); while ($linha = odbc_fetch_array($id)){ if($campo == $linha['COLUMN_NAME']){ odbc_free_result($id); return true; } } odbc_free_result($id); return false; } function get($tabela, $campo){ if(isset($this->tabelas[$tabela][$campo])) return $this->tabelas[$tabela][$campo]; else return null; } function insert($tipo_func){ die("
  • Inserção Desabilitada"); } function update(){ die("
  • Update Desabilitado!"); } function delete($tabelas, $sql){ if($this->TestDelete()){ $this->query = "DELETE * FROM $tabelas WHERE $sql"; return $this->execute($this->conn, $this->query); } //die("
  • Deleção desabilitada!"); } function TestDelete(){ return true; } function TestInsert(){ return true; } function TestUpdate(){ return true; } function reset(){ unset($this->tabelas); // EXECUTAR ESSE CÓDIGO PARA CADA TABELA /*if(sizeof($this->tabela)){ foreach($this->tabela as $campo => $valor){ unset($this->tabela[$campo]); } }*/ } function listar($campos = "*", $usatabelas = null, $orderby = null){ $this->query = ""; $first = true; $usada = array(); foreach($this->nometabelas as $index => $nome){ $usada[$nome] = false; } $usada[$this->nometabelas[0]] = true; if($usatabelas != null) foreach ($usatabelas as $indtab => $nometab) $usada[$nometab] = true; //while(list($key,$val) = each($table)) // echo "\n$key=>$val"; //die("querie".$this->query); $tables = array(); foreach ($usada as $nometab => $val){ if($usada[$nometab]) $tables[sizeof($tables)] = $nometab; } if(sizeof($this->tabelas)){ foreach ($this->tabelas as $nome => $tabela) { foreach ($tabela as $campo => $valor){ if(!is_null($this->tabelas[$nome][$campo])){ if(!empty($this->tabelas[$nome][$campo])){ if($nome != $this->nometabelas[0]){ if(!$usada[$nome]){ $usada[$nome] = true; $tables[sizeof($tables)] = $nome; } } if($first){ $first = false; $this->query .= " WHERE $nome.$campo = '".$valor."'"; } else $this->query .= " AND $nome.$campo = '".$valor."'"; } } } } } for ($i=0; $inometabelas);$i++){ for ($j=$i+1; $jnometabelas);$j++){ if($usada[$this->nometabelas[$i]] && $usada[$this->nometabelas[$j]] && $this->relacionamentos[$this->nometabelas[$i]][$this->nometabelas[$j]] != null){ $this->query .= " AND ".$this->nometabelas[$i].".".$this->relacionamentos[$this->nometabelas[$j]][$this->nometabelas[$i]]." = ".$this->nometabelas[$j].".".$this->relacionamentos[$this->nometabelas[$i]][$this->nometabelas[$j]]; } } } if(!is_null($orderby)) $this->query .= " ORDER BY ".$orderby; //echo sizeof($tables).";;"; return $this->vt_recordset($campos, $tables, $this->query); } /** * retorna o contracheque do mês num vetor com a estrutura * $vt_retorno['cadastro'][..dados..] --dados fixos * $vt_retorno['ficha'][..contas..][..dados..] -dados que variam mensalmente (a maior parte são contas) * * @param string $cpf * @param date $competencia * @return array[][][] (3D) */ function gera_declaracao_rendimentos($cpf = null, $ano = null){ if(is_null($cpf) || is_null($ano)) return null; $campos = array('PESSOAL."AREA" AS "PESSOAL.AREA"', 'PESSOAL."CCUSTO" AS "PESSOAL.CCUSTO"', 'PESSOAL."CHAPA" AS "PESSOAL.CHAPA"', 'PESSOAL."CPF" AS "PESSOAL.CPF"', 'PESSOAL."DEMISSAO" AS "PESSOAL.DEMISSAO"', 'PESSOAL."EMPRESA" AS "PESSOAL.EMPRESA"', 'PESSOAL."ID" AS "PESSOAL.ID"', 'PESSOAL."LOCAL" AS "PESSOAL.LOCAL"', 'PESSOAL."NOME" AS "PESSOAL.NOME"', 'PESSOAL."RES_BAIRRO" AS "PESSOAL.RES_BAIRRO"', 'PESSOAL."RES_CEP" AS "PESSOAL.RES_CEP"', 'PESSOAL."RES_ENDEREC" AS "PESSOAL.RES_ENDEREC"', 'EMPRESAS."DESCRICAO" AS "EMPRESAS.DESCRICAO"', 'EMPRESAS."CGC" AS "EMPRESAS.CGC"', 'EMPRESAS."ENDERECO" AS "EMPRESAS.ENDERECO"', 'EMPRESAS."END_NUMERO" AS "EMPRESAS.END_NUMERO"', 'EMPRESAS."END_COMPL" AS "EMRPESAS.END_COMPL"', 'EMPRESAS."END_BAIRRO" AS "EMPRESAS.END_BAIRRO"', 'EMPRESAS."END_CIDADE" AS "EMPRESAS.END_CIDADE"', 'EMPRESAS."END_UF" AS "EMPRESAS.END_UF"', 'EMPRESAS."NOMEPESSOA" AS "EMPRESAS.NOMEPESSOA"', 'FICHA."CONTA" AS "FICHA.CONTA"', 'FICHA."VALOR" AS "FICHA.VALOR"', 'FICHA."COMPETENCIA" AS "FICHA.COMPETENCIA"', 'CCUSTO."DESCRICAO" AS "CCUSTO.DESCRICAO"', 'CIDADES."DESCRICAO" AS "CIDADES.DESCRICAO"', 'CIDADES."ESTADO" AS "CIDADES.ESTADO"'); $tabelas = array( 'pessoal', 'ficha', 'ccusto', 'cidades', 'empresas'); $this->query = "where PESSOAL.ID = FICHA.ID and PESSOAL.CCUSTO = CCUSTO.CODIGO and PESSOAL.RES_CIDADE = CIDADES.CODIGO and PESSOAL.EMPRESA = EMPRESAS.CODIGO and ficha.conta like 'DIRF%' and YEAR(ficha.competencia) = '$ano' and pessoal.cpf = '$cpf'"; $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; } //MODIFICADO - COLOCANDO DECLARAÇÃO DE RENDIMENTOS DE TODOS OS ANOS - ABRE function gera_tempo_trabalho($cpf = null){ if(is_null($cpf)) return null; $campos = array('FICHA."COMPETENCIA" AS "FICHA.COMPETENCIA"'); $tabelas = array( 'pessoal', 'ficha', 'ccusto', 'cidades', 'empresas'); $this->query = "where PESSOAL.ID = FICHA.ID and PESSOAL.CCUSTO = CCUSTO.CODIGO and PESSOAL.RES_CIDADE = CIDADES.CODIGO and PESSOAL.EMPRESA = EMPRESAS.CODIGO and ficha.conta like 'DIRF%' and pessoal.cpf = '$cpf' order by FICHA.COMPETENCIA"; $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; } //MODIFICADO - COLOCANDO DECLARAÇÃO DE RENDIMENTOS DE TODOS OS ANOS - FECHA //MODIFICADO - GERANDO O ABONO PECUNIÁRIO DE FÉRIAS - ABRE function gera_abono_pecuniario_ferias($id = null, $ano = null){ if(is_null($id) || is_null($ano)) return null; $campos = array("VALOR"); $tabelas = array("FICHA"); $datahoje = getdate(); if($ano == $datahoje['year']-1){ $this->query = "WHERE ID = $id AND CONTA = 'DIRF_ABONOFER'"; } else { $this->query = "WHERE ID = $id AND CONTA LIKE '%ABONOCA%' AND COMPETENCIA LIKE '%".$ano."%'"; } $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; } function gera_abono_pecuniario_ferias3($id = null, $ano = null){ if(is_null($id) || is_null($ano)) return null; $campos = array("VALOR"); $tabelas = array("FICHA"); $datahoje = getdate(); if($ano != $datahoje['year']-1){ $this->query = "WHERE ID = $id AND CONTA LIKE '%ABONO3CA%' AND COMPETENCIA LIKE '%".$ano."%'"; } $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; } //MODIFICADO - GERANDO O ABONO PECUNIÁRIO DE FÉRIAS - FECHA //MODIFICADO - GERANDO O ABONO PECUNIÁRIO DE FÉRIAS - ABRE /*function gera_abono_pecuniario_ferias($id = null){ if(is_null($id)) return null; $campos = array("VALOR"); $tabelas = array("FICHA"); $this->query = "WHERE ID = $id AND CONTA = 'DIRF_ABONOFER'"; $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; }*/ //MODIFICADO - GERANDO O ABONO PECUNIÁRIO DE FÉRIAS - FECHA function gera_pensionistas($id = null){ if(is_null($id)) return null; $campos = array("NOME", "CPF"); $tabelas = array("PENSIONISTAS"); $this->query = "WHERE ID = $id"; $vt_result = $this->vt_recordset($campos, $tabelas, $this->query); return $vt_result; } function gera_contracheque($cpf = null, $ano = null, $mes = null){ if(is_null($cpf) || is_null($ano) || is_null($mes)) return null; $is_13sal = false; if ($mes == "13a") $mes = "6"; if ($mes == "13b") $mes = "12"; $competencia = $ano."-".str_pad($mes, 2, '0', STR_PAD_LEFT)."-01"; $vt_retorno = array(); $vt_retorno['cadastro'] = array(); $vt_retorno['ficha'] = array(); //recuperando os dados do funcionário $campos = array("PESSOAL.ID" , "HORARIO.HORASMES" , "CARGOS.DESCRICAO AS 'CARGO'" , "FUNCAOGRAT.DESCRICAO AS 'FUNCAO'" , "PESSOAL.CHAPA AS 'MATRICULA'" , "ESTR_EMPR.DESCRICAO AS 'AREA'" , "PESSOAL.NOME" , "PESSOAL.PAG_BANCO" , "PESSOAL.PAG_AGENCIA" , "PESSOAL.PAG_CONTA" , "PESSOAL.RG" , "PESSOAL.RG_ORGAO" , "PESSOAL.ADMISSAO" , "PESSOAL.PIS" , "PESSOAL.CTPS" , "PESSOAL.CTPS_DATA" , "PESSOAL.CTPS_SERIE" , "PESSOAL.EMPRESA AS 'CODIGO_EMPRESA'" , "EMPRESAS.DESCRICAO AS 'EMPRESA'"); $tables = array("HORARIO" , "CARGOS" , "FUNCAOGRAT" , "ESTR_EMPR" , "EMPRESAS" , "PESSOAL"); $this->query = " WHERE PESSOAL.FUNCAO = FUNCAOGRAT.CODIGO AND HORARIO.CODIGO = PESSOAL.HORARIO AND PESSOAL.CARGO = CARGOS.CODIGO AND ESTR_EMPR.CODIGO = PESSOAL.AREA AND EMPRESAS.CODIGO = PESSOAL.EMPRESA AND EMPRESAS.DESCRICAO NOT LIKE '%INSS%' AND PESSOAL.DEMISSAO IS NULL AND PESSOAL.CPF = '$cpf'"; $vt_cadastro = $this->vt_recordset($campos, $tables, $this->query); //print_r($vt_cadastro); //die(); for($i=0; $i $val){ $vt_retorno['cadastro'][$i][$field] = $val; } } unset($tables, $campos); //recuperando as contas da ficha para o mês de competência $campos = array("PESSOAL.ID", "FICHA.*", "CONTAS.*", "TIPO_CONTAS.DESCRICAO AS 'TIPO_CONTAS_DESCRICAO'", "PESSOAL.EMPRESA AS 'CODIGO_EMPRESA'"); $tables = array("FICHA", "CONTAS", "PESSOAL", "TIPO_CONTAS", "EMPRESAS"); $this->query = " WHERE "; $this->query .=" CONTAS.DESCRICAO NOT LIKE '% CA' AND FICHA.VALOR <> 0 AND CONTAS.DESCRICAO NOT LIKE '% (CA)' AND TIPO_CONTAS.CODIGO = CONTAS.TIPO AND CONTAS.INATIVA = 0 AND FICHA.CONTA = CONTAS.CONTA AND FICHA.ID = PESSOAL.ID AND PESSOAL.EMPRESA = EMPRESAS.CODIGO AND EMPRESAS.DESCRICAO NOT LIKE '%INSS%' AND PESSOAL.DEMISSAO IS NULL AND PESSOAL.CPF = '$cpf' AND DATEDIFF(DD, FICHA.COMPETENCIA, '$competencia') = 0 ORDER BY PESSOAL.EMPRESA, TIPO_CONTAS_DESCRICAO";//MODIFICADO --> AND FICHA.CONTA = 'DIRF_ABONOFER' $vt_ficha = array(); $vt_ficha = $this->vt_recordset($campos, $tables, $this->query); //--tratar o vt_ficha antes de jogar no $vt_retorno $cod_empresa = $vt_ficha[0]['CODIGO_EMPRESA']; $vt_retorno['ficha'][0] = array(); $i = 0; foreach ($vt_ficha as $row){ if($row['CODIGO_EMPRESA'] != $cod_empresa){ $i++; $vt_retorno['ficha'][$i] = array(); $cod_empresa = $row['CODIGO_EMPRESA']; } $vt_retorno['ficha'][$i][$row['CONTA']] = array(); $vt_retorno['ficha'][$i][$row['CONTA']] = $row; } //print_r($vt_ficha); unset($vt_ficha, $vt_cadastro, $campos, $tables); return $vt_retorno; } function consultar() { $this->query = ""; $first = true; $usada = array(); foreach($this->nometabelas as $index => $nome){ $usada[$nome] = false; } //while(list($key,$val) = each($table)) // echo "\n$key=>$val"; //die("querie".$this->query); $tables = array(); //$tables[0] = $this->nometabelas[0]; //$usada[$this->nometabelas[0]] = true; if(sizeof($this->tabelas)){ foreach ($this->tabelas as $nome => $tabela) { foreach ($tabela as $campo => $valor){ if(!is_null($this->tabelas[$nome][$campo])){ if(!empty($this->tabelas[$nome][$campo])){ if(!$usada[$nome]){ $usada[$nome] = true; $tables[sizeof($tables)] = $nome; } if($first){ $first = false; $this->query .= " WHERE $nome.$campo = '".$valor."'"; } else $this->query .= " AND $nome.$campo = '".$valor."'"; } } } } } for ($i=0; $inometabelas);$i++){ for ($j=$i+1; $jnometabelas);$j++){ if($usada[$this->nometabelas[$i]] && $usada[$this->nometabelas[$j]]){ $this->query .= " AND ".$this->nometabelas[$i].".".$this->relacionamentos[$this->nometabelas[$j]][$this->nometabelas[$i]]." = ".$this->nometabelas[$j].".".$this->relacionamentos[$this->nometabelas[$i]][$this->nometabelas[$j]]; } } } $qry = $this->query; $qry2 = ""; foreach($this->nometabelas as $index => $nome){ if($usada[$nome]){ $this->query = "SP_COLUMNS $nome"; $rs = $this->execute(); while($row=odbc_fetch_array($rs)){ if($qry2 == "") $qry2 = "$nome.".$row['COLUMN_NAME']." AS '$nome::".$row['COLUMN_NAME']."'"; else $qry2 .= ", $nome.".$row['COLUMN_NAME']." AS '$nome::".$row['COLUMN_NAME']."'"; } } } $this->query = "SELECT $qry2 FROM "; for($i=0; $i< sizeof($tables); $i++){ $this->query .= $tables[$i]; if($i < sizeof($tables)-1) $this->query .= ","; } $this->query .= $qry; //die($this->query); $rs = $this->execute($showerror=true, $debug=true); if($row_rs = odbc_fetch_array($rs)) $total_linhas = 1; else $total_linhas = 0; $indexnomes = array_flip($this->nometabelas); if ($total_linhas>0){ foreach ($row_rs as $campo => $valor){ $nomes = split("::", $campo); $this->tabelas[$this->nometabelas[$indexnomes[$nomes[0]]]][$nomes[1]] = $valor; } $bl_aux = true; }else $bl_aux = false; odbc_free_result($rs); return $bl_aux; //die("
  • função de consulta desabilitada."); } function show($tabela, $campo){ if(isset($this->tabelas[$tabela][$campo])) return true; else return false; } } ?>