Como Criar Sistema De O.S. / Orçamentos Parte2

Na matéria anterior falamos um pouco sobre o Sistema de O.S. e demonstramos seu funcionamento em telas printadas:

Como Criar Sistema De O.S. / Orçamentos Parte1

ordem servico

Na matéria de hoje estaremos postando parte do script para que você possa posteriormente dar manutenção e até mesmo melhorar a qualidade do que foi desenvolvido.

Conhecendo Os Ficheiros

Como disse anteriormente, os ficheiros que postamos não são dificeis de serem customizados.

Abaixo falaremos um pouco sobre alguns deles. ok?

Diretório: action

config.php:

Ele tem a finalidade de efetuar o acesso à base de dados e trazer em tela as principais variáveis que descrevem a empresa (ex.: Nome da empresa, URL, Telefones, Emails).

Veja o código a seguir:


<?php

// servidor
$database = "SERVIDOR"; // Nome do Servidor
$dbname   = "BASEDEDADOS"; // Nome da Base de Dados
$usuario  = "USUARIO"; // Usuário do MySQL
$dbsenha  = "SENHA"; // Senha do Usuário MySQL

$conexao=mysql_connect ($database, $usuario, $dbsenha);

if($conexao){
      if (mysql_select_db($dbname, $conexao)){
         print "";
      }else{
           print "Não foi possível selecionar o Banco de Dados";
           }
      }else{
           print "Erro ao conectar o MySQL";
           }

$query_email_admin = "SELECT * FROM dados_empresa WHERE id_empresa = '1'";
$rs_query_email_admin = mysql_query ($query_email_admin);

$rs_row_email_admin = mysql_fetch_array($rs_query_email_admin);

$email_comercial_cliente = $rs_row_email_admin["email_comercial"];
$email_suporte_cliente   = $rs_row_email_admin["email_suporte"];
$nome_empresa            = $rs_row_email_admin['nome_empresa'];
$descricao_empresa       = $rs_row_email_admin['nome_fantasia'];
$endereco_site_cliente   = $rs_row_email_admin['url'];
$ddd_fone_empresa        = $rs_row_email_admin['ddd_fone'];
$fone_empresa            = $rs_row_email_admin['fone'];
$ddd_fone_filial_empresa = $rs_row_email_admin['ddd_fone_filial'];
$fone_filial_empresa     = $rs_row_email_admin['fone_filial'];

$cidade_empresa          = $rs_row_email_admin['cidade'];

$data=date("d/m/Y");                                // DATA HJ
$hora=date("H:i");                                  // HORA AGORA

//================================
//DEFININDO OS CABEÇALHOS DE EMAIL
//================================

    $admail  = $email_comercial_cliente;   // EMAIL DE ADMINISTRADOR
    $ass_mail= "ORDEM DE SERVIÇO"; // ASSUNTO DO EMAIL ( AO EFETUAREM CADASTRO )

    // HEADER PARA ENVIO DO EMAIL
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type:text/html; charset=iso-8859-1\r\n";
    $headers .= "From:[$nome_empresa]<$email_comercial_cliente>\r\n";

# ===============================================================
#   Função para formatar o valor do preço.
# ===============================================================

function formata($valor){
     $negativo = false;
     $preco = "";
     $valor = intval(trim($valor));
     if ($valor < 0) {
         $negativo = true;
         $valor = abs($valor);
     }
     $valor = strrev($valor);
     while (strlen($valor) < 3) {
         $valor .= "0";
     }
     for ($i = 0; $i < strlen($valor); $i++)
     {
         if ($i == 2)
         {
             $preco .= ",";
         }
         if (($i <> 2) AND (($i+1)%3 == 0))
         {
             $preco .= ".";
         }
         $preco .= substr($valor, $i , 1);
     }
     $preco = strrev($preco);
     return ($negativo ? "-" : "") . $preco;
}
?>

validar.php

A página em questão como o nome já diz, tem a finalidade de efetuar validação.

A validação dela e simples e durante o SELECT ele busca o login (email) e senha na base de dados, finalizando com a criação de sessão (conforme o código a seguir).



<?php

include("config.php");

$login = $_POST['login'];
$senha = $_POST['senha'];

$query_validar = "select * from tbl_usuarios where usuarios_email ='$login' and usuarios_password = '$senha'";
$rs_validar    = mysql_query($query_validar);
if ($rs_validar){

$campo_validar = mysql_fetch_array($rs_validar);
$usuarios_id  = $campo_validar['usuarios_id'];
$nome_usuario  = $campo_validar['nome'];
session_start();

$_SESSION[id]    = $usuarios_id;
$_SESSION[nome]  = $nome_usuario;
$_SESSION[login] = $login;
$_SESSION[cod]   = $senha;

header("location:../principal.php");

}else{

echo"<script>alert('Dados de acesso inválidos!')</script>";
echo"<script>location.href='javascript:history.back(1)'</script>";

}

?>

Diretório: session

logout.php

Como o nome já diz, este ficheiro tem a finalidade de efetuar o logout (saída) do sistema após destruir a sessão do Usuário conectado (conforme código a seguir).


<?php session_start();

unset($_SESSION[login]);
unset($_SESSION[cod]);

session_unregister("login");
session_unregister("cod");

session_destroy();

header("location:../index.php");

?>

prot.php

O código disponível nesta página deve ser inserido em cada página interna do sistema, de forma que nenhum usuário sem acesso possa acessá-la (conforme código a seguir).


<?php  session_start();
if (!(isset($_SESSION[login]) AND (isset($_SESSION[cod])))){
header("location:index.php");
}

?>

Diretório: tpls

os.php

O diretório “tpls” tem a finalidade de gravar os templates, ou seja: arquivos em html que serão usados como padrão em nossas atividades.

O ficheiro os.php tem a finalidade de ser usado durante o envio da ordem de serviço através de email (sendo disparado através da página “os_listar.php”).

ass.html

Este ficheiro tem por finalidade confirmar o recebimento do orçamento e início das atividades.

OBS.: Como estes arquivos são padrão, porém, podem ser alterados conforme sua necessidade.

Agradecimentos

Quero agradecer ao Sr André Sam que há anos atrás disponibilizou gratuitamente na internet um sistema de Ordem de Serviços que me ajudou bastante.

Através dele aprendi a criar tal aplicação e hoje tenho condições de criar soluções infinitamente maiores.

Bem… ficamos por aqui com esta matéria. Espero que esta solução lhe seja útil.

Em caso de dúvidas ou sugestões para novas matérias, entre em contato conosco e teremos prazer em lhes ajudar.

O código da base de dados está no ficheiro script-sql.txt. O login é comandosusa@gmail.com. A password é admin. Para alterar a password, abra o ficheiro script-sql.txt e procure:


INSERT INTO `tbl_usuarios` VALUES (3,'ADMINISTRADOR','admin','admin','comandosusa@gmail.com'

Altere esse email e os restantes para o seu email.

Download dos arquivos usados neste tutorial: Como Criar Sistema De O.S. / Orçamentos

Be Sociable, Share!

48 Comentários

  1. Paulo Kampus

    Muito bom, muito bom mesmo, gostaria que fosse postado um tutorial passo a passo de como fazer um sistema de contracheque online…

    • Olá Paulo,

      Agradeço o comentário. Fico feliz que este sistema esteja sendo útil!

      Bem… nosso trabalho é atender suas necessidades… Sua sugestão já está em nossa lista de atividades e deverá ser publicada até o fim do mês de Setembro.

      Continue acompanhando nossas matérias, tirando suas dúvidas e indicando a seus amigos programadores…

      Estamos a disposição para postar o melhor conteúdo com qualidade e gerar um maior conhecimento.

      Abraço,

      Quemuel Aquino

      • Paulo

        Ok…Quemuel…agora que vi sua resposta…mas agradeço…tenho chance de um passo a passo com um sistema de contracheque online?

  2. Rodrigo

    Cara vocês são demais adoro esse site é meu favorito.

  3. Luis Felipe

    Estou testando o sistema, mas quando vou cadastrar o serviço, clico em confirmar, parece que os dados foram enviados mas nao cadastram no banco nem aparece a msg de dados enviados com sucesso, o que pode ser ??

  4. Olá,

    Já coloquei o sistema pra funcionar, porém está dando alguns erros, quando vou cadasrtrar uma OS na hora de cadastrar vai para uma página toda em branco. Não consigo cadastrar também novos administradores dá a seguinte mesagem: "Erro ao alterar os dados do Administrador". Nos dados pessoais também dá erro. O sistema parece ser muito bom, me seria muito útil, se vocês ou alguém poder me ajudar ficaria muito grato.

    Abs,

  5. gustavo santanna

    Estava eu na net a procurar um sistema de OS, e vi o seu.
    Bom comecei a testa-lo, mas estou com problema:
    1: mesmo colocando o codigo do prot.php nas paginas continuo com acesso no sistema sem colocar usuário e senha.
    2. Ao enviar a OS, pagina em branco e sem erros ou mensagens, e o cadastro não vai, ou seja perde o que foi digitado e nao grava na base de dados.
    dei umas olhadas e infelizmente não achei nada, como a cabeça já não é tão boa. preciso de sua ajuda ok
    abraços e obrigado

    • José Augusto

      Olá Gustavo! Gostaria de saber se conseguiu resolver esse problema, pois o meu também apresenta o mesmo problema do item 2, ou seja: Ao enviar a OS, pagina em branco e sem erros ou mensagens, e o cadastro não vai, ou seja perde o que foi digitado e nao grava na base de dados

      Desde Já obrigado.

    • bruno

      Amigos, consegui resolver o problema!!! É bem simples…

      Basta iniciar a variável "set" com valor "1":
      case cadastrar:

      ———————–Trecho da pag "script_os.php"—————-
      $cliente=$_POST['cliente'];
      $email=$_POST['email'];
      $servico=$_POST['servico'];
      $detalhes=$_POST['detalhes'];
      $custo=str_replace(".","",$_POST['custo']);
      $forma=$_POST['forma'];
      $metodo=$_POST['metodo'];
      $venc=$_POST['venc'];
      $garantia=$_POST['garantia'];
      $prazo=$_POST['prazo'];
      $set=$_POST['set'];
      $id=$_POST['id'];

      $idg=$_GET['id'];
      $ac=$_GET['SET'];

      $set=1; <———————-Inicie a variável com valo "1"

      ————————————

      Ai arruma o código! Abraços

  6. Paulo Giovani

    Fora os dugs acima falta a Library/menu3.lbi Favor responda nossas duvidas e se possivel up o sistema com correção fora isso muito obrigado o O.S está excelente parabens.

  7. Olá Sera que pode me ajudar, o script está dando erro

    "Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:Arquivos de programasVertrigoServwwwOSactionconfig.php on line 42"

    o que será que é ?

    estou usando o phpmyadmin versão 3.3.9.2

    Obrigado

  8. Olá, excelente este sistema, gostaria de um tutorial sobre o sistema de painel de controle para sites, adicionar máteiras, noticias e muito mais.
    Obrigado
    parabéns Web MAsters.pt perfect este site!

  9. alessandro

    Bom dia Excelente material muito bom mesmo … Gostaria de sua ajuda para aprender a desenvolver um portal de contabilidade todo administrado pelo contador , cadastrado de clientes completo e quando o cliente estive fazendo aniversário destacar na pagina home , download e upload , o próprio postar os seus links com as informações que ele acha interessante …

    Se poder me ajudar fico muito agradecido 

    maicrotec@hotmail.com

  10. rodrigo

    Quemuel Aquino boa noite gostei muito desse programa de voces mas tou com um pequeno problema o data base nao ta reconhecendo as tabelas tipo listar o dreamweaver mas ainda assim concigo conectar o sistema….
    o que devo fazer

  11. Fabricio

    O que pode ser esse erro? Notice: Use of undefined constant login – assumed 'login' in C:wampwwwOSsessionprot.php on line 2.

  12. Gostei mas está dando erro para cadastrar OS com página em branco, já conseguiram resolver esse problema?

  13. Ederson costa

    Não foi possível selecionar o Banco de Dados
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:Program FilesEasyPHP-5.3.8.0wwwactionconfig.php on line 26

  14. Marcelo

    Olá, o meu sistema esta dando a seguinte mensagem: 
    Notice: Use of undefined constant login – assumed 'login' in sessionprot.php on line 2
    Notice: Use of undefined constant cod – assumed 'cod' in sessionprot.php on line 2
    O que poderia ser ???

    Obrigado e parabéns.

  15. amaro gomes

    Muito obrigado meu amigo, faz um tempo que estava procurando isto, abração.

  16. Alex

    Ola, não estou conseguindo fazer com que o sistema grave novas OS

  17. Alessandro

    Olá a todos nao consegui lançar nada na os ela não grava nada se possivel me ajude

  18. Inacio

    ola, tem como vc postar o fonte deste sistema de orçamento…

  19.  O PROBLEMA É GERAL…  O SISTEMA NÃO GRAVA AS O.S.   TELA EM BRANCOO

  20. DjNeg0

    MUITO BACANA A IDEIA POREM VI UNS BUGS NELE QUE VOU TRABALHAR EM CIMA PARA ARRUMAR
    POREM COMO NOSSO AMIGO FALOU ELE PEGOU ENTAO NAO E AUTORIA DELE MAIS MESMO ASSIM
    PARABENS POIS MUITO BACANA DESSA IDEIA DA PRA FAZER MUITAS COISAS.

    OBS: O BUG E SEGUINTE SE VC NAO POR NEM UM LOGIN E SENHA E MANDAR LOGAR ELE LOGA NORMALMENTE MAIS ISSO E SIMPLES PARA ARRUMAR A SESSIONS.

  21. Paulo da PCr

    perfeito, bonito, mas não funciona, tela em branco quando tenta gravar OS

  22. germano alves

    Ele nao esta funcionando o cadastro de OS ¬¬

  23. Joao carlos

    Nao mesmo nao cadastra O.S!

  24. Junior

    Boa tarde pessoal. Para resolver o problema de cadastrar OS é so ir no codigo "script_os.php", e editar logo no início do código, deixando dessa forma: include("action/config.php");
    include("session/prot.php");

    • Falta o menu
      PÁGINA PRINCIPAL | DADOS DA EMPRESA | CADASTRO ADMINISTRADOR | CADASTRO DE O.S. |
      O código já está assim
      include("action/config.php"); 
      include("session/prot.php");
      mesmo assim não grava nada no banco.
      e também pode ser acessado com qualquer login.
      É bonito, mas não funciona nada.
      Alguem já fez as alterações necessárias para o sistema funcionar?

  25. gustavo

    Boa tarde, sou novo nisso tudo, mais baixei o seu programa, mais nao consigo passar da tela de login, fica dados de acesso invalidos, e nao entra, aguardo resposta

  26. marco

    como instalo esse zip?

  27. fernando

    Notice: Use of undefined constant login – assumed 'login' in C:xampphtdocsossessionprot.php on line 2
    Notice: Use of undefined constant cod – assumed 'cod' in C:xampphtdocsossessionprot.php on line 2

    como corrijo este problema? nao consigo gravar nada e ainda o que abre aparece com valores errados.
    Notice:  Undefined variable: cliente in C:xampphtdocsosos_alterar.php on line 524

  28. anonimo

    sistema pode ser bom mas a seguranca falha nao gostei desta parte pois o sistema nao e seguro

  29. Rodrigo Souza

    Onde vejo a opção de alterar a senha para acessar o sistema???

  30. Daniele

    Olá otimo artigo, mas está realmente com alguns bugs, meus problemas são os mesmos relatados logo acima, alguém conseguiu achar uma solução? Não esta gravando nada no banco

  31. Erickson

    Notice: Undefined variable: row in C:wampwwwOrcamentoos_listar.php on line 304

  32. Fernando

    Segue a solução para a pagina em branco quando for cadastrar.

    Script_os.php

    case cadastrar:

    $cliente=$_POST['cliente'];

    $email=$_POST['email'];

    $servico=$_POST['servico'];

    $detalhes=$_POST['detalhes'];

    $custo=str_replace(“.”,”",$_POST['custo']);

    $forma=$_POST['forma'];

    $metodo=$_POST['metodo'];

    $venc=$_POST['venc'];

    $garantia=$_POST['garantia'];

    $prazo=$_POST['prazo'];

    $set=$_POST['set'];

    $id=$_POST['id'];

    $idg=$_GET['id'];

    $ac=$_GET['SET'];

    $set=1; <<< Este é o valor que foi adicionado

  33. Copo posso corrigir este erro

    Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-2.0/DST' instead in C:xampphtdocsOSactionconfig.php on line 42

    Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-2.0/DST' instead in C:xampphtdocsOSactionconfig.php on line 43

    Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:xampphtdocsOSactionconfig.php:42) in C:xampphtdocsOSactionvalidar.php on line 15

    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:xampphtdocsOSactionconfig.php:42) in C:xampphtdocsOSactionvalidar.php on line 15

    Warning: Cannot modify header information – headers already sent by (output started at C:xampphtdocsOSactionconfig.php:42) in C:xampphtdocsOSactionvalidar.php on line 22

  34. Jonas Oliveira

    Cadastrar a OS resolvi assim:

    $query = "insert into tbl_os(
    cliente,email,servico,detalhes,custo,forma,metodo,venc,prazo,garantia,data) values (
    '$cliente','$email','$servico','$detalhes','$custo','$forma','$metodo','$venc','$prazo','$garantia',curdate())";

    $resultado = mysql_query($query);

    if ($resultado){
    ?>

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Orçamento enviado com sucesso")</SCRIPT>
    <SCRIPT language="JavaScript">window.location.href="os_listar.php";</SCRIPT>

    <?
    }

    else
    {
    ?>

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Erro ao enviar o Orçamento")</SCRIPT>
    <SCRIPT language="JavaScript">window.location.href="os_listar.php";</SCRIPT>

    <?
    }

Participa! Comenta...