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;
}
}
}
}