using System; using System.Collections.Generic; using System.Web; using MySQL; using System.Data; using System.Web.Configuration; using System.Web.UI.WebControls; namespace Intranet { /// /// Tratamento de Facturação /// public class Facturacao { public class Listagem { /// /// Listagem de pedidos de facturação /// /// Número da página a mostrar /// Departamento que solicita a listagem /// Nível de perminssão do colaborador que solicita a informação /// /// Retorna todos os pedidos de facturação mediante o nível de mermissão do colaborador que solicita a listagem /// public static DataTable Pedidos(int Pagina, int Departamento, int NivelPermissao) { DataTable dtInfo = new DataTable(); int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.preco*s.quantidade) AS total " + "FROM colaborador c, departamento d, facturacao_servico s, " + " facturacao f LEFT OUTER JOIN empresa e ON f.clienteid=e.id " + " LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND s.facturacaoid=f.id "; if (NivelPermissao > Intranet.Sistema.Permissoes.Total) { sqlInfo.Query = sqlInfo.Query + " AND f.createdep=" + Departamento + " "; } sqlInfo.Query = sqlInfo.Query + "GROUP BY f.id " + "ORDER BY f.createdata DESC, f.pedido DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Retorna todos os pedidos de facturação num detarminado mês. /// /// Ano da actividade /// Mês da actividade /// Departamento que solicita a listagem /// Nível de perminssão do colaborador que solicita a informação /// /// Retorna todos os pedidos de facturação num detarminado mês. /// public static DataTable Pedidos(int Ano, int Mes, int Departamento, int NivelPermissao) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.preco*s.quantidade) AS total " + "FROM colaborador c, departamento d, facturacao_servico s, " + " facturacao f LEFT OUTER JOIN empresa e ON f.clienteid=e.id " + " LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND DATE_FORMAT(f.createdata, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') " + " AND f.activo=1 " + " AND s.facturacaoid=f.id "; if (NivelPermissao > Intranet.Sistema.Permissoes.Total) { sqlInfo.Query = sqlInfo.Query + " AND f.createdep=" + Departamento + " "; } sqlInfo.Query = sqlInfo.Query + "GROUP BY f.id " + "ORDER BY f.createdata DESC, f.pedido DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Retorna todos os pedidos de facturação num detarminado dia. /// /// ID do pedido /// Ano da actividade /// Mês da actividade /// Dia da actividade /// Departamento que solicita a listagem /// Nível de perminssão do colaborador que solicita a informação /// /// Retorna todos os pedidos de facturação num detarminado dia. /// public static DataTable Pedidos(int Ano, int Mes, int Dia, int Departamento, int NivelPermissao) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.preco*s.quantidade) AS total " + "FROM colaborador c, departamento d, facturacao_servico s, " + " facturacao f LEFT OUTER JOIN empresa e ON f.clienteid=e.id " + " LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND DATE_FORMAT(f.createdata, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') " + " AND f.activo=1 " + " AND s.facturacaoid=f.id "; if (NivelPermissao > Intranet.Sistema.Permissoes.Total) { sqlInfo.Query = sqlInfo.Query + " AND f.createdep=" + Departamento + " "; } sqlInfo.Query = sqlInfo.Query + "GROUP BY f.id " + "ORDER BY f.createdata DESC, f.pedido DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Retorna todos os pedidos de facturação de uma determinada empresa. /// /// ID da empresa /// /// Retorna todos os pedidos de facturação de uma detarminada empresa. /// public static DataTable Pedidos(int Empresa) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, e.nome AS cliente, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.preco*s.quantidade) AS total " + "FROM colaborador c, departamento d, facturacao_servico s, " + " empresa e, " + " facturacao f LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE f.clienteid=e.id " + " AND e.id=" + Empresa + " " + " AND c.id=f.createuser " + " AND d.id=f.createdep " + " AND f.activo=1 " + " AND s.facturacaoid=f.id " + "GROUP BY f.id " + "ORDER BY f.createdata DESC, f.pedido DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Serviços de um determinado pedido de facturação /// /// ID do pedido de facturação /// DataTable public static DataTable Servicos(int Pedido) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT *, " + " (preco*quantidade) AS total, " + " (preco*quantidade*(iva/100)) AS total_iva " + "FROM facturacao_servico " + "WHERE facturacaoid=" + Pedido; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Total já facturado /// /// Valor total da facturação public static decimal Total() { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT IF(SUM(s.preco*s.quantidade)>=0, SUM(s.preco*s.quantidade), 0) AS total " + "FROM facturacao f, facturacao_servico s " + "WHERE f.activo=1 " + " AND s.activo=1 " + " AND s.facturacaoid=f.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } /// /// Total facturado num determinado ano /// /// Ano de facturação /// Valor total da facturação public static decimal Total(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT IF(SUM(s.preco*s.quantidade)>=0,SUM(s.preco*s.quantidade),0) AS total " + "FROM facturacao f, facturacao_servico s " + "WHERE DATE_FORMAT(f.createdata, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + " AND f.activo=1 " + " AND s.activo=1 " + " AND s.facturacaoid=f.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } /// /// Total facturado num determinado mês de um determinado ano /// /// Ano de facturação /// Mês de facturação /// Valor total da facturação public static decimal Total(int Ano, int Mes) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT IF(SUM(s.preco*s.quantidade)>=0,SUM(s.preco*s.quantidade),0) AS total " + "FROM facturacao f, facturacao_servico s " + "WHERE DATE_FORMAT(f.createdata, '%Y.%c')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%c') " + " AND f.activo=1 " + " AND s.activo=1 " + " AND s.facturacaoid=f.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } /// /// Total facturado num determinado dia /// /// Ano de facturação /// Mês de facturação /// Dia de facturação /// Valor total da facturação public static decimal Total(int Ano, int Mes, int Dia) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT IF(SUM(s.preco*s.quantidade)>=0,SUM(s.preco*s.quantidade),0) AS total " + "FROM facturacao f, facturacao_servico s " + "WHERE DATE_FORMAT(f.createdata, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') " + " AND f.activo=1 " + " AND s.activo=1 " + " AND s.facturacaoid=f.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } /// /// Listaem de todos os projectos /// /// DataTable public static DataTable Projectos() { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT * " + "FROM projecto " + "ORDER BY nome"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listaem de todos os projectos /// /// DataTable public static DataTable Projectos(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT * " + "FROM projecto " + "WHERE ano=" + Ano + " " + "ORDER BY nome"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } } /// /// Pesquisa de pedidos de facturação /// /// Valor da pesquisa /// Departamento que solicita a listagem /// Nível de perminssão do colaborador que solicita a informação /// /// Retorna todos os pedidos de facturação mediante o nível de mermissão do colaborador que solicita a listagem /// public static DataTable Pesquisa(string Pesquisa, int Departamento, int NivelPermissao) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.preco*s.quantidade) AS total, " + " c.*, d.*, e.*, f.*, s.* " + "FROM colaborador c, departamento d, facturacao_servico s, " + " facturacao f LEFT OUTER JOIN empresa e ON f.clienteid=e.id " + " LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND s.facturacaoid=f.id "; if (NivelPermissao > Intranet.Sistema.Permissoes.Total) { sqlInfo.Query = sqlInfo.Query + " AND f.createdep=" + Departamento + " "; } sqlInfo.Query = sqlInfo.Query + "GROUP BY f.id " + "ORDER BY f.createdata DESC, f.pedido DESC"; /* + " AND (f.pedido LIKE '%" + Pesquisa + "%' " + " OR f.numero LIKE '%" + Pesquisa + "%' " + " OR f.data LIKE '%" + Pesquisa + "%' " + " OR DATE_FORMAT(f.data, '%Y.%m.%d') LIKE '%" + Pesquisa + "%' " + " OR f.nota LIKE '%" + Pesquisa + "%' " + " OR s.quantidade LIKE '%" + Pesquisa + "%' " + " OR s.descricao LIKE '%" + Pesquisa + "%' " + " OR s.preco LIKE '%" + Pesquisa + "%' " + " OR s.iva LIKE '%" + Pesquisa + "%' " + " OR e.nome LIKE '%" + Pesquisa + "%' " + " OR e.morada_1 LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.morada_2 LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.codigopostal LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.localidade LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.concelho LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.distrito LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.pais LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.latitude LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.longitude LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.telefone LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.telemovel LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.fax LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.email LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.url LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.responsavel LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.responsavel_titulo LIKE '%" + Pesquisa + "%' " + " OR e.responsavel_telefone LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.responsavel_telemovel LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.responsavel_email LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.actividade LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.cae LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.cae_secundario LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.nif LIKE '%" + Intranet.Criptografia.Encriptar(Pesquisa) + "%' " + " OR e.trabalhadores LIKE '%" + Pesquisa + "%' " + " OR c.nome LIKE '%" + Pesquisa + "%' " + " OR c.nomecompleto LIKE '%" + Pesquisa + "%' " + " OR c.abreviatura LIKE '%" + Pesquisa + "%' " + " OR c.foto LIKE '%" + Pesquisa + "%' " + " OR c.numero LIKE '%" + Pesquisa + "%' " + " OR c.identificacao LIKE '%" + Pesquisa + "%' " + " OR c.contribuinte LIKE '%" + Pesquisa + "%' " + " OR c.niss LIKE '%" + Pesquisa + "%' " + " OR c.nib LIKE '%" + Pesquisa + "%' " + " OR c.banco LIKE '%" + Pesquisa + "%' " + " OR c.morada1 LIKE '%" + Pesquisa + "%' " + " OR c.morada2 LIKE '%" + Pesquisa + "%' " + " OR c.codigopostal LIKE '%" + Pesquisa + "%' " + " OR c.localidade LIKE '%" + Pesquisa + "%' " + " OR c.telefone LIKE '%" + Pesquisa + "%' " + " OR c.telemovel LIKE '%" + Pesquisa + "%' " + " OR c.estadocivil LIKE '%" + Pesquisa + "%' " + " OR c.ndependentes LIKE '%" + Pesquisa + "%' " + " OR c.habilitacoes LIKE '%" + Pesquisa + "%' " + " OR c.funcao LIKE '%" + Pesquisa + "%' " + " OR c.data_admissao LIKE '%" + Pesquisa + "%' " + " OR DATE_FORMAT(c.data_admissao, '%Y.%m.%d') LIKE '%" + Pesquisa + "%' " + " OR c.observacao LIKE '%" + Pesquisa + "%' " + " OR c.login LIKE '%" + Pesquisa + "%' " + " OR c.perfil LIKE '%" + Pesquisa + "%' " + " OR c.email LIKE '%" + Pesquisa + "%' " + " OR c.data_nascimento LIKE '%" + Pesquisa + "%' " + " OR DATE_FORMAT(c.data_nascimento, '%Y.%m.%d') LIKE '%" + Pesquisa + "%' " + " OR c.ip LIKE '%" + Pesquisa + "%' " + " OR c.extensao LIKE '%" + Pesquisa + "%' " + " OR c.sessiontime LIKE '%" + Pesquisa + "%' " + " OR d.nome LIKE '%" + Pesquisa + "%' " + " OR d.abreviatura LIKE '%" + Pesquisa + "%' " + " OR d.email LIKE '%" + Pesquisa + "%') " */ dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } public class Detalhes { /// /// Mostra o detalhe de um pedido de facturação /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Pedidos(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, " + " DATE_FORMAT(f.createdata, '%Y.%m.%d') AS createdata, " + " f.edituser, f.editdep, " + " DATE_FORMAT(f.editdata, '%Y.%m.%d') AS editdata, " + " f.activo, " + " f.clienteid, " + " f.pedido, f.numero, " + " DATE_FORMAT(f.data, '%Y.%m.%d') AS data, " + " f.nota, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " e.nome AS cliente, " + " p.id AS projectoid, p.nome AS projecto, p.orcamento " + "FROM colaborador c, departamento d, " + " facturacao f LEFT OUTER JOIN empresa e ON f.clienteid=e.id " + " LEFT OUTER JOIN projecto p ON f.projectoid=p.id " + "WHERE f.id=" + Id + " " + " AND c.id=f.createuser " + " AND d.id=f.createdep"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } } public class Gravar { /// /// Novo pedido de facturação /// /// ID do cliente /// ID do projecto /// Observação /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Pedido(int Cliente, int Projecto, string Nota, int Activo, int CreateUser, int CreateDep) { bool gravado = false; int pedido = 0; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // Verificar qual o último pedido de facturação sqlInfo.Query = "SELECT MAX(pedido) " + "FROM facturacao " + "WHERE DATE_FORMAT(createdata, '%Y')='" + DateTime.Now.Year + "'"; DataTable dtMaxPedido = sqlInfo.Read(); if (dtMaxPedido.Rows[0].ItemArray[0].ToString() == "") { pedido = 1; } else { pedido = Convert.ToInt16(dtMaxPedido.Rows[0].ItemArray[0].ToString()) + 1; } sqlInfo.Query = "INSERT INTO facturacao(clienteid, projectoid, pedido, nota, activo, createuser, createdep, createdata) " + "VALUES (" + Cliente + "," + " " + Projecto + " ," + " " + pedido + " ," + " '" + Nota + "' ," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Adiciona serviços a um determinado pedido de facturação /// /// ID do pedido de facturação /// Quantidade do serviço /// Descrição do serviço /// Valor unitário do serviço /// IVA do serviço /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// Retorna uma string com os campos do serviços adicionado [id, quantidade, descricao, preco, iva, total] public static string Servico(int Facturacao, decimal Quantidade, string Descricao, decimal ValorUnitario, int IVA, int CreateUser, int CreateDep) { string _servico; DataTable _servico_adicionada; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO facturacao_servico(facturacaoid, quantidade, descricao, preco, iva, activo, createuser, createdep, createdata) " + "VALUES ( " + Facturacao + "," + " '" + Quantidade.ToString().Replace(",", ".") + "'," + " '" + Descricao + "'," + " '" + ValorUnitario.ToString().Replace(",", ".") + "'," + " " + IVA + "," + " 1," + " " + CreateUser + "," + " " + CreateDep + "," + " now())"; sqlInfo.Write(); // Verificar dados inseridos sqlInfo.Query = "SELECT id, quantidade, descricao, preco, iva, " + " (preco*quantidade + preco*quantidade*(iva/100)) AS total " + "FROM facturacao_servico " + "WHERE facturacaoid=" + Facturacao + " " + "ORDER BY id DESC"; _servico_adicionada = sqlInfo.Read(); if (_servico_adicionada.Rows.Count > 0) { _servico = _servico_adicionada.Rows[0].ItemArray[0].ToString() + "\\s" + _servico_adicionada.Rows[0].ItemArray[1].ToString() + "\\s" + _servico_adicionada.Rows[0].ItemArray[2].ToString() + "\\s" + _servico_adicionada.Rows[0].ItemArray[3].ToString() + "\\s" + _servico_adicionada.Rows[0].ItemArray[4].ToString() + "\\s" + _servico_adicionada.Rows[0].ItemArray[5].ToString(); } else { _servico = ""; } return _servico; } } /// /// Edição da facturação /// public class Editar { /// /// Editar pedido de facturação /// /// ID do conteúdo a editar /// ID do cliente /// ID do projecto /// Observação /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Pedido(int Id, int Cliente, int Projecto, string Nota, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE facturacao " + "SET clienteid='" + Cliente + "'," + " projectoid=" + Projecto + "," + " nota='" + Nota + "'," + " activo=" + Activo + "," + " edituser=" + EditUser + "," + " editdep=" + EditDep + "," + " editdata=now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } /// /// Editar número da factura para um determinado pedido de facturação. Caso o pedido de facturação esteja desactivado, a inserção do número activa este pedido. /// /// ID do pedido de facturação /// Número da factura /// Data de emissão /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Pedido(int Id, string Factura, string Data, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE facturacao " + "SET numero='" + Factura + "'," + " data='" + Data + "'," + " activo=1," + " edituser=" + EditUser + "," + " editdep=" + EditDep + "," + " editdata=now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } } /// /// Estatísticas da facturação /// public class Estatisticas { /// /// Estatísticas para os projectos /// /// Ano da facturação /// DataTable public static DataTable Projectos(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT p.id AS projectoid, p.nome AS projecto, p.orcamento, " + " SUM(s.quantidade * s.preco) AS facturacao " + "FROM facturacao f, " + " facturacao_servico s, " + " projecto p " + "WHERE s.facturacaoid=f.id " + " AND f.projectoid=p.id " + " AND f.activo=1 " + " AND s.activo=1 " + " AND p.activo=1 " + " AND p.ano=" + Ano + " " + "GROUP BY p.nome " + "ORDER BY p.nome"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } } } }