public ResultValidation Alterar(ItemProduto itemProduto)
        {
            ResultValidation returnValidation = new ResultValidation();

            if (repoItemProduto.Exists(i => i.Descricao.ToUpper().Trim() == itemProduto.Descricao.ToUpper().Trim() && i.Id != itemProduto.Id))
            {
                returnValidation.AddMessage("Descrição", "Descrição já cadastrada.");
            }

            if (!returnValidation.Ok)
            {
                return(returnValidation);
            }

            try
            {
                repoItemProduto.Update(itemProduto);

                context.SaveChanges();
            }
            catch (Exception err)
            {
                returnValidation.AddMessage("", err);
            }

            return(returnValidation);
        }
Esempio n. 2
0
        internal List <ItemProduto> buscarItemProdutoDoPedido(Pedido pedido)
        {
            List <ItemProduto> itemProdutos = new List <ItemProduto>();;

            SqlCommand command = new SqlCommand();

            command.Connection  = this.conexao;
            command.CommandType = CommandType.Text;
            if (tx != null)
            {
                command.Transaction = tx;
            }

            StringBuilder sql = new StringBuilder();

            sql.Append("SELECT* FROM pedido_itemproduto ");
            sql.Append("INNER JOIN pedido ON pedido.Id = pedido_itemproduto.id_pedido ");
            sql.Append("WHERE pedido_itemproduto.id_pedido = @id");
            command.Parameters.AddWithValue("@id", pedido.Id);

            command.CommandText = sql.ToString();

            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                ItemProduto itemProduto = new ItemProduto();
                itemProduto.Id         = (Int32)reader["Id"];
                itemProduto.Quantidade = (Int32)reader["quantidade"];

                itemProdutos.Add(itemProduto);
            }

            return(itemProdutos);
        }
Esempio n. 3
0
        public void AlterarItemProduto(ItemProduto itemProduto)
        {
            if (!modelState.IsValid)
            {
                return;
            }

            ResultValidation retorno = serviceItemProduto.Alterar(itemProduto);

            PreencherModelState(retorno);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            ItemProduto itemProduto = new ItemProduto();

            Console.Write("Informe a Descricao do produto: ");
            string descricao = Console.ReadLine();

            itemProduto.setDescricao(descricao);

            Console.Write("Informe a marca do produto: ");
            string marca = Console.ReadLine();

            itemProduto.setMarca(marca);

            Console.Write("Informe o Tipo do produto: ");
            string tipo = Console.ReadLine();

            itemProduto.setTipo(tipo);

            Console.Write("Informe o Preco de Custo do produto: ");
            double precoCusto = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

            itemProduto.setPrecoCusto(precoCusto);

            Console.Write("Informe o Preco de Venda do produto: ");
            double precoVenda = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
            bool   regra      = itemProduto.setprecoVenda(precoVenda);

            while (regra)
            {
                Console.Write("Informe o Preco de Venda do produto: ");
                precoVenda = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
                regra      = itemProduto.setprecoVenda(precoVenda);
            }

            Console.Write("O produto já foi vendido? [Sim/Nao] ");
            string foiVendido = Console.ReadLine();
            bool   vendido    = false;

            if (foiVendido == "Sim" || foiVendido == "SIM" || foiVendido == "sim" || foiVendido == "S" || foiVendido == "s")
            {
                vendido = true;
            }
            ;
            itemProduto.setVendido(vendido);

            itemProduto.setMargemLucro(itemProduto.calcularMargemLucro(precoCusto, precoVenda));

            Console.WriteLine("----------------------------------------");

            Console.WriteLine(itemProduto.ToString());

            Console.ReadLine();
        }
Esempio n. 5
0
        internal void salvarItemProdutoPedido(ItemProduto itemProduto)
        {
            SqlCommand command = new SqlCommand();

            command.Connection  = this.conexao;
            command.Transaction = this.tx;
            command.CommandType = CommandType.Text;
            command.CommandText = "INSERT INTO pedido_itemproduto(id_pedido, id_produto, quantidade) values(@idpedido, @idproduto, @quantidade)";
            command.Parameters.AddWithValue("@idpedido", itemProduto.Pedido.Id);
            command.Parameters.AddWithValue("@idproduto", itemProduto.Produto.Id);
            command.Parameters.AddWithValue("@quantidade", itemProduto.Quantidade);

            command.ExecuteNonQuery();
        }
        public ActionResult Index(decimal?id)
        {
            testesPSEntities db = new testesPSEntities();

            var item = new ItemProduto();

            Produto produto = db.Produtoes.Find(id);

            item.Item       = produto;
            item.Quantidade = 1;

            listaItens.Add(item);

            return(View());
        }
        private void btnAdicionarProduto_Click(object sender, EventArgs e)
        {
            Produto produtoSelecionado = (Produto)produtoBindingSource.Current;

            ItemProduto novoProduto = new ItemProduto();

            novoProduto.Produto    = produtoSelecionado;
            novoProduto.Pedido     = pedidoAtual;
            novoProduto.Quantidade = 1;
            novoProduto.Valor      = novoProduto.Quantidade * novoProduto.Produto.Valor;

            pedidoAtual.AddProduto(novoProduto);

            carrinhoProdutoBindingSource.DataSource = pedidoAtual.ItemProdutos;
            carrinhoProdutoBindingSource.ResetBindings(false);

            pedidoAtual.atualizaTotal();
            lblTotal.Text = pedidoAtual.Total.ToString();
        }
Esempio n. 8
0
        internal Produto buscarProdutoDoPedido(ItemProduto itemProduto)
        {
            Produto produto = new Produto();;

            SqlCommand command = new SqlCommand();

            command.Connection  = this.conexao;
            command.CommandType = CommandType.Text;
            if (tx != null)
            {
                command.Transaction = tx;
            }

            StringBuilder sql = new StringBuilder();

            sql.Append("SELECT* FROM produto ");
            sql.Append("INNER JOIN pedido_itemproduto ON produto.Id = pedido_itemproduto.id_produto ");
            sql.Append("WHERE pedido_itemproduto.Id = @id");
            command.Parameters.AddWithValue("@id", itemProduto.Id);

            command.CommandText = sql.ToString();

            SqlDataReader reader = command.ExecuteReader();

            if (reader.Read())
            {
                produto.Id        = (Int32)reader["Id"];
                produto.Nome      = (String)reader["nome"];
                produto.Descricao = (String)reader["descricao"];
                produto.Valor     = (Double)reader["valor"];

                return(produto);
            }

            return(null);
        }
        public ActionResult Listar()
        {
            try
            {
                List <ItemProduto> listaItem = new List <ItemProduto>();

                var produtos = new ProdutoNegocio().Listar();

                foreach (var prodItem in produtos)
                {
                    ItemProduto item = new ItemProduto();
                    item.Item       = prodItem;
                    item.Quantidade = 0;

                    listaItem.Add(item);
                }

                return(Json(listaItem, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 10
0
        public ConsultaAdiantamentoResponse ConsultarAdiantamento(ConsultaAdiantamentoRequest request)
        {
            string debug = "001";

            Logger.LogDetail("Método ConsultarAdiantamento() - In");
            try
            {
                ConsultaAdiantamentoResponse response = new ConsultaAdiantamentoResponse();
                debug = "002";

                #region [ Validação dos filtros ]

                Logger.LogDetail(string.Format("Request: {0}", CBUtils.ToXml(request)));
                debug = "003";

                response.Excecoes = new List <string>();
                if ((request.DataInicial == null) || (request.DataInicial == DateTime.MinValue))
                {
                    response.Excecoes.Add("Data inicial é obrigatório!");
                }

                if ((request.DataFinal == null) || (request.DataFinal == DateTime.MinValue))
                {
                    response.Excecoes.Add("Data final é obrigatório!");
                }

                if ((request.DataInicial != null) && (request.DataFinal != null))
                {
                    if (request.DataInicial > request.DataFinal)
                    {
                        response.Excecoes.Add("Data inicial não pode ser maior que data final!");
                    }

                    TimeSpan ts = request.DataFinal.Subtract(request.DataInicial);
                    if (ts.Days > 180)
                    {
                        response.Excecoes.Add("Período máximo de pesquisa permitido é de 180 dias!");
                    }
                }

                Logger.LogDetail(string.Format("Exceções request: {0}", response.Excecoes.toString2()));

                #endregion [ Validação dos filtros ]
                debug = "004";

                if (response.Excecoes.Count == 0)
                {
                    Query query = new Query(@"
						DECLARE @DATAINICIO DATETIME
						SET @DATAINICIO = :PDATAINICIAL

						DECLARE @DATAFINAL DATETIME
						SET @DATAFINAL = :PDATAFINAL

						DECLARE @SITUACOES TABLE(HANDLE int, SITUACAO varchar(15))
						INSERT INTO @SITUACOES (HANDLE, SITUACAO) values (1, 'Ativo'), (2, 'Cancelado')

						DECLARE @PRODUTOS TABLE(HANDLE int, PRODUTO varchar(15), PESO int)
						INSERT INTO @PRODUTOS (HANDLE, PRODUTO, PESO) values 
							(1, 'Aéreo', 2),
							(2, 'Hotel', 3),
							(3, 'Carro', 4),
							(4, 'Miscelaneo', 1),
							(5, 'Aéreo', 2),
							(6, 'Aéreo', 2),
							(7, 'Aéreo', 2),
							(8, 'Rodoviário', 2)

						DECLARE @TIPOSEMISSAO TABLE(HANDLE varchar(1), TIPOEMISSAO varchar(15))
						INSERT INTO @TIPOSEMISSAO (HANDLE, TIPOEMISSAO) values ('A', 'Ativo'), ('E', 'Externa'), ('M', 'Manual')

						DECLARE @TIPOSVOO TABLE(HANDLE varchar(1), TIPOVOO varchar(15))
						INSERT INTO @TIPOSVOO (HANDLE, TIPOVOO) values ('D', 'Doméstico'), ('F', 'Internacional'), ('T', 'Regional')

						DECLARE @FORMASPAGAMENTO TABLE(HANDLE int, FORMAPAGAMENTO varchar(20))
						INSERT INTO @FORMASPAGAMENTO (HANDLE, FORMAPAGAMENTO) values 
							(1, 'Cartão'),
							(2, 'Invoice'),
							(3, 'Outras'),
							(4, 'GR'),
							(5, 'Múltiplos pagamentos')

						DECLARE @FORMASRECEBIMENTO TABLE(HANDLE int, FORMARECEBIMENTO varchar(30))
						INSERT INTO @FORMASRECEBIMENTO (HANDLE, FORMARECEBIMENTO) values 
							(1, 'Cash'),
							(3, 'Faturado'),
							(5, 'Cheque'),
							(6, 'Pagamento direto'),
							(7, 'Cartão'),
							(9, 'Cartão convênio'),
							(10, 'Sem adicional'),
							(11, 'Cartão AMEX'),
							(12, 'Governo'),
							(13, 'Cheque pré-datado'),
							(14, 'As financiadas por terceiros'),
							(15, 'Múltiplos recebimentos'),
							(16, 'Despesas internas'),
							(17, 'TKT'),
							(18, 'MCO')

						SELECT DISTINCT
							A.HANDLE,
							SIT.SITUACAO,
							PNR.REEMISSAO,
							CONVERT(DATE, A.DATAEMISSAO) AS DATAEMISSAO,
							A.AGENTE_EMISSAO AS EMISSOR_ID,
							AGE.NOME AS EMISSOR_NOME,
							PNR.BB_RLOC AS RLOC,
							PNR.LOCALIZADORACIA AS LOC,
							A.INFAPROVADOR AS APROVADOR,
							ISNULL(CONS.NOME, '') AS CONSOLIDADORA,
							CONVERT(VARCHAR(50), FORN.NOME) AS FORNECEDOR,
							ISNULL(A.BILHETE, '') AS BILHETE,
							ISNULL(A.CONFIRMACAO, '') AS CONFIRMACAO,
						--	ISNULL(TEMI.TIPOEMISSAO, '') AS TIPODEEMISSAO,
							CONVERT(VARCHAR(50), CLI.NOME) AS CLIENTE,
							ISNULL(TVOO.TIPOVOO, '')  AS TIPOVOO,
							ISNULL(PASS.NOME, A.PASSAGEIRONAOCAD) AS PASSAGEIRO,
							ISNULL(PASS.CPF, 'Não cadastrado') AS CPF,
							CASE A.PRODUTO WHEN 4 THEN CASE TIPMIS.HANDLE WHEN 1 THEN 'Seguro' ELSE 'Miscelanio' END ELSE PRO.PRODUTO END AS PRODUTO,
							TIPMIS.NOME AS MISCELANIO,
							ISNULL(A.TRECHOS, '') AS TRECHOS,
							CONVERT(DATETIME, ISNULL(TRE.BB_AEREO_DATA_VOO, ISNULL(A.BB_MISC_ENTRADA, ISNULL(A.BB_CARRO_RETIRADA, A.BB_HOTEL_ENTRADA))) + ' ' + ISNULL(TRE.BB_AEREO_HRSAIDA, '00:00:00')) AS DATA_ORIGEM,
							ISNULL(TRE.BB_AEREO_ORIGEM, '') AS AEREO_ORIGEM,
							ISNULL(ORI_MUN.NOME, '') AS MUNICIPIO_ORIGEM,
							ISNULL(CASE ORI_PAIS.NOME WHEN 'Brasil' THEN ORI_EST.NOME ELSE NULL END, '') AS ESTADO_ORIGEM,
							ISNULL(CASE ORI_PAIS.NOME WHEN 'Brasil' THEN ORI_REG.NOME ELSE NULL END, '') AS REGIAO_ORIGEM,
							ISNULL(ORI_PAIS.NOME, '') AS PAIS_ORIGEM,
							ISNULL(CASE ORI_PAIS.NOME WHEN 'Brasil' THEN 'América Do Sul' ELSE ORI_REG.NOME END, '') AS CONTINENTE_ORIGEM,
							CONVERT(DATETIME, ISNULL((CASE WHEN CONVERT(DATETIME, TRE.BB_AEREO_DATA_VOO + TRE.BB_AEREO_HRSAIDA) > CONVERT(DATETIME, TRE.BB_AEREO_DATA_VOO + TRE.BB_AEREO_HRCHEGADA) THEN DATEADD(DAY, 1, TRE.BB_AEREO_DATA_VOO) ELSE TRE.BB_AEREO_DATA_VOO END), ISNULL(A.BB_MISC_SAIDA, ISNULL(A.BB_CARRO_ENTREGA, A.BB_HOTEL_SAIDA))) + ' ' + ISNULL(TRE.BB_AEREO_HRSAIDA, '')) AS DATA_DESTINO,
							ISNULL(ISNULL(TRE.BB_AEREO_DESTINO, DES_MUN.SIGLA), '') AS AEREO_DESTINO,
							ISNULL(DES_MUN.NOME, '') AS MUNICIPIO_DESTINO,
							ISNULL(CASE DES_PAIS.NOME WHEN 'Brasil' THEN DES_EST.NOME ELSE NULL END, '') AS ESTADO_DESTINO,
							ISNULL(CASE DES_PAIS.NOME WHEN 'Brasil' THEN DES_REG.NOME ELSE NULL END, '') AS REGIAO_DESTINO,
							ISNULL(DES_PAIS.NOME, '') AS PAIS_DESTINO,
							ISNULL(CASE DES_PAIS.NOME WHEN 'Brasil' THEN 'América Do Sul' ELSE DES_REG.NOME END, '') AS CONTINENTE_DESTINO,
							FPAG.FORMAPAGAMENTO AS FORMADEPAGAMENTO,
							FREC.FORMARECEBIMENTO AS FORMARECEBIMENTO,
							PCCAGE.PCC AS PCC_EMISSAO,
							CC.NOME AS CC_CASABLANCA,
							CLI_CC.CENTROCUSTO AS CC_CLIENTE,
							CASE WHEN A.PRODUTO <> 4 OR TIPMIS.HANDLE = 1 THEN PRO.PESO ELSE 5 END AS PESO,
							CONVERT(DATE, ISNULL(TRE.BB_AEREO_DATA_VOO, ISNULL(A.BB_MISC_ENTRADA, ISNULL(A.BB_CARRO_RETIRADA, A.BB_HOTEL_ENTRADA))) + ' ' + ISNULL(TRE.BB_AEREO_HRSAIDA, '00:00:00')) AS DT_ORIGEM
						FROM BB_PNRACCOUNTINGS A
							INNER JOIN BB_PNRS PNR ON PNR.HANDLE = A.RLOC
							INNER JOIN GN_PESSOAS CLI ON CLI.HANDLE = A.BB_CLIENTE
							LEFT JOIN BB_CLIENTECC AS CLI_CC ON A.CENTRODECUSTO = CLI_CC.HANDLE
							LEFT OUTER JOIN GN_GRUPOSEMPRESARIAIS GP ON GP.HANDLE = CLI.GRUPOEMPRESARIAL
							LEFT OUTER JOIN GN_PESSOAS GPP ON GPP.HANDLE = GP.PESSOA
							INNER JOIN GN_PESSOAS FORN ON FORN.HANDLE = A.FORNECEDOR
							LEFT JOIN GN_PESSOAS AS CONS ON A.CONSOLIDADOR = CONS.HANDLE
							LEFT JOIN @SITUACOES AS SIT ON SIT.HANDLE = A.SITUACAO
							LEFT JOIN BB_AGENTES AS AGE ON A.AGENTE_EMISSAO = AGE.HANDLE
							LEFT JOIN @PRODUTOS AS PRO ON PRO.HANDLE = A.PRODUTO
							LEFT JOIN BB_TIPOMISCELANIO AS TIPMIS ON A.TIPOMISCELANIO = TIPMIS.HANDLE
							LEFT JOIN @TIPOSEMISSAO AS TEMI ON TEMI.HANDLE = A.TIPODEEMISSAO
							LEFT JOIN @TIPOSVOO AS TVOO ON TVOO.HANDLE = A.TIPOVOO
							LEFT JOIN (SELECT MAX(NOME) AS NOME, PESSOA, CPF FROM GN_PESSOACONTATOS GROUP BY CPF, PESSOA) PASS ON PASS.PESSOA = CLI.HANDLE AND PASS.NOME LIKE REPLACE(CASE WHEN 
								CHARINDEX('/', A.PASSAGEIRONAOCAD) = 0 
								THEN A.PASSAGEIRONAOCAD ELSE 
								RIGHT(A.PASSAGEIRONAOCAD, LEN(A.PASSAGEIRONAOCAD) - CHARINDEX('/', A.PASSAGEIRONAOCAD))
								+ ' ' + 
								LEFT(A.PASSAGEIRONAOCAD, CHARINDEX('/', A.PASSAGEIRONAOCAD) - 1)
								END, ' ', '%')
						--	LEFT JOIN BB_PNRPASSAGEIROS AS PASS ON A.PASSAGEIROCAD = PASS.HANDLE
							LEFT JOIN BB_TRECHOACCOUNTING TRE_A ON A.HANDLE = TRE_A.ACCOUNTING
							LEFT JOIN BB_PNRTRECHOS AS TRE ON TRE.HANDLE = TRE_A.TRECHO
							LEFT JOIN BB_AEROPORTOS AS DES_AERO ON DES_AERO.AEROPORTO = TRE.BB_AEREO_DESTINO
							LEFT JOIN MUNICIPIOS AS DES_MUN ON (PRO.PRODUTO = 'Aéreo' AND DES_MUN.HANDLE = DES_AERO.CIDADE) OR (PRO.PRODUTO <> 'Aéreo' AND DES_MUN.HANDLE = FORN.MUNICIPIO)
							LEFT JOIN ESTADOS DES_EST ON DES_EST.HANDLE = DES_MUN.ESTADO
							LEFT JOIN PAISES DES_PAIS ON DES_PAIS.HANDLE = DES_MUN.PAIS
							LEFT JOIN K_REGIOES DES_REG ON DES_REG.HANDLE = DES_PAIS.K_CONTINENTE OR DES_REG.HANDLE = DES_EST.K_REGIAO
							LEFT JOIN BB_AEROPORTOS AS ORI_AERO ON ORI_AERO.AEROPORTO = TRE.BB_AEREO_ORIGEM
							LEFT JOIN MUNICIPIOS AS ORI_MUN ON ORI_MUN.HANDLE = ORI_AERO.CIDADE
							LEFT JOIN ESTADOS ORI_EST ON ORI_EST.HANDLE = ORI_MUN.ESTADO
							LEFT JOIN PAISES ORI_PAIS ON ORI_PAIS.HANDLE = ORI_MUN.PAIS
							LEFT JOIN K_REGIOES ORI_REG ON ORI_REG.HANDLE = ORI_PAIS.K_CONTINENTE OR ORI_REG.HANDLE = ORI_EST.K_REGIAO
							LEFT JOIN @FORMASPAGAMENTO AS FPAG ON FPAG.HANDLE = A.FORMADEPAGAMENTO
							LEFT JOIN @FORMASRECEBIMENTO AS FREC ON FREC.HANDLE = A.FORMARECEBIMENTO
							LEFT JOIN BB_MAQUINAS AS PCCAGE ON A.PCC_EMISSAO = PCCAGE.HANDLE
							LEFT JOIN BB_CCPROJETOACC AS CCPROJ ON A.HANDLE = CCPROJ.ACCOUNTING
							LEFT JOIN CT_CC AS CC ON CCPROJ.CCSUGERIDO = CC.HANDLE
						WHERE CONVERT(DATETIME, ISNULL(TRE.BB_AEREO_DATA_VOO, ISNULL(A.BB_MISC_ENTRADA, ISNULL(A.BB_CARRO_RETIRADA, A.BB_HOTEL_ENTRADA))) + ' ' + ISNULL(TRE.BB_AEREO_HRSAIDA, '00:00:00')) <= @DATAFINAL
							AND CONVERT(DATETIME, ISNULL((CASE WHEN CONVERT(DATETIME, TRE.BB_AEREO_DATA_VOO + TRE.BB_AEREO_HRSAIDA) > CONVERT(DATETIME, TRE.BB_AEREO_DATA_VOO + TRE.BB_AEREO_HRCHEGADA) THEN DATEADD(DAY, 1, TRE.BB_AEREO_DATA_VOO) ELSE TRE.BB_AEREO_DATA_VOO END), ISNULL(A.BB_MISC_SAIDA, ISNULL(A.BB_CARRO_ENTREGA, A.BB_HOTEL_SAIDA))) + ' ' + ISNULL(TRE.BB_AEREO_HRSAIDA, '')) >= @DATAINICIO
							AND ((A.BB_CLIENTE IN (
								SELECT PES.HANDLE
								FROM GN_PESSOAS PES
								WHERE PES.GRUPOEMPRESARIAL IN (
									SELECT PESSOA
									FROM BB_USUARIOPESSOAS
									WHERE USUARIO = @USUARIO
									AND GRUPOEMPRESARIAL = 'S'))
								OR A.BB_CLIENTE IN (
									SELECT PESSOA
									FROM BB_USUARIOPESSOAS
									WHERE USUARIO = @USUARIO)))
							AND A.SITUACAO = 1
							AND PNR.REEMISSAO = 'N'
						ORDER BY CC_CLIENTE, PASSAGEIRO, DT_ORIGEM, PESO, RLOC, DATA_ORIGEM"                        );

                    query.Parameters.Add(new Parameter("PDATAINICIAL", DataType.DateTime, request.DataInicial));
                    query.Parameters.Add(new Parameter("PDATAFINAL", DataType.DateTime, request.DataFinal));

                    Logger.LogDetail(string.Format("Comando utilizado para consulta de viagens: {0}", query.CommandText));
                    Entities <EntityBase> dados = query.Execute();
                    if (dados.Count == 0)
                    {
                        response.Excecoes.Add("Nenhuma viagem encontrada com o filtro informado!");
                    }
                    else
                    {
                        debug = "Leiu os dados";

//						COMO LER OS VOOS:
//						OS TRECHOS PODEM APARECER ASSIM:
//						FLN/GRU/DFW/SFO/DFW/GRU/REC ONDE SFO É O DESTINO
//						REC/GRU/IAH/SFO/EWR/GRU/REC ONDE EWR É O DESTINO
//						REC/GIG/ATL/SFO-YYZ/JFK/GRU/REC ONDE SFO É O DESTINO
//						REC/BEL e BEL/BSB/REC ONDE BEL É O DESTINO

//						PRIMEIRA ENTRADA ABRE A VIAGEM
//						COM A VIAGEM AINDA FECHADA:
//							PRODUTO = SEGURO -> VIAGEM É A ABRANGENCIA DO SEGURO -> DURAÇÃO DA VIAGEM -> DATA INICIO -> DATA CHEGADA
//							PRODUTO = AÉREO -> CONFIRMAR SE É A PRIMEIRA VIAGEM OU A ÚLTIMA E PEGAR OS TRECHOS COMO COLEÇÃO DE STRING PARA COMPARAR -> PRIMEIRO O ULTIMO VIAGEM, PEGAR AS DATAS LIMITE DA VIAGEM E SOBREPOR AO SEGURO -> RECALCULAR AS DIARIAS
//							PRODUTO = HOTEL -> SE NÃO TEM AEREO E NEM SEGURO PEGAR AS DIARIAS E AS DATAS DE INICIO E FIM DA VIAGEM E COMPARAR COM OS TRECHOS PARA DEFINIR O PRIMEIRO DESTINO
//
//	VIAGEM ─────────────────────────────────────┐	DATA DE INICIO DA VIAGEM - Ainda não tem viagem, ou mudaram os trechos, ou foi feito o último trecho, ou apareceu outro seguro, ou apareceu um hotel fora da rota
//	│┌─ SEGURO						─┐			│	Abre viagem - Data Origem - Diarias - HaSeguro
//	││┌─ VOO IDA					 │			│	Trechos - Trecho coincide com o inicio dos trechos
//	│││  └─ TRECHOS [FOR-CGH-MIA]	 │			│	Abre viagem - Data Origem - HaAereo = PRECISSA DOS TRECHOS OU DE SEGURO OU DE HOTEL PARA SER LOCALIZADO
//	│││┌─ HOTEL [MIA]				 │ DIARIAS	│	Abre viagem - Data Origem - Data Destino - Diarias - HaHotel
//	││││  -> PASSEIOS				 │ EM MIA	│
//	││││  -> INGRESSOS				 │			│
//	││││  -> CARRO, ETC...			 │			│
//	│││└─							─┘			│
//	│││					LOOP MULTIPLES DESTINOS	│
//	││├─ DESLOCAMENTO				─┐			│	Tem um hotel na cidade do trecho ou a diferência com o voo anterior é superior a 6 horas
//	│││  └─ TRECHOS [MIA-ORL]		 │			│	Data Destino - Diarias - Fecha destino - Abre destino novo - Data Origem - HaAereo = PRECISSA DOS TRECHOS OU DE SEGURO OU DE HOTEL PARA SER LOCALIZADO
//	│││┌─ HOTEL [ORL]				 │ DIARIAS	│	Abre destino novo - Data Origem - Data Destino - Diarias - HaHotel
//	││││  -> PASSEIOS				 │ EM ORL	│
//	││││  -> INGRESSOS				 │			│
//	││││  -> CARRO, ETC...			 │			│
//	│││└─							 │			│
//	│││			FIM DO LOOP MULTIPLES DESTINOS	│
//	││└─ VOO RETORNO				 │			│	Trecho coincide com o final dos trechos
//	││   └─ TRECHOS [ORL-MEX-REC]	 │			│	Data Destino - Fecha destino - Diarias = PRECISSA DOS TRECHOS OU DE SEGURO OU DE HOTEL PARA SER LOCALIZADO
//	│└─								─┘			│
//	└───────────────────────────────────────────┘	DATA DE FIM DA VIAGEM

//	primeiro ler as vendas feitas para o cliente
//	identificar o tipo de produto
//	se o produto for aéreo, pegar as datas e horas das viagens para saber nos trechos qual foi o destino



//	INFORMAÇÕES DO CENTRO DE CUSTO:
//		- NOME
//	INFORMAÇÕES DO PAX:
//		- NOME COMPLETO
//		- NOME PAX
//		- CPF
//		- ENDERECO
//		- TELEFONE
//		- EMAIL
//	INFORMAÇÕES DA VIAGEM:
//		- DATA INICIO
//		- DATA FIM
//		- DIARIAS
//		- DESTINOS
//			- DATA CHEGADA
//			- DATA RETORNO
//			- LUGAR
//			- RESERVAS
//				- DADOS DE CADA RESERVA - VOOS APENAS OS DE IDA ATÉ O ÚLTIMO VIAGEM
//
                        // VARIAVES DE COMPARAÇÃO
//						string last_rloc = null;
//						int last_rloc_pos = 0;
//						string last_origem = null;
//						bool tem_hotel = false;

//						CONFERIR SE É HOTEL.
//						SE É, MARCAR O DESTINO CONFERIR AS RESERVAS ANTERIORES
//						ONDE ENCONTRAR O MESMO DESTINO ADICIONAR NAS RESERVAS.
//							ONDE FOR AVIÃO, PEGAR O RLOC
//								ONDE FOR AVIÃO OU COM O MESMO RLOC, ADICIONAR NAS RESERVAS
//						COLOCAR INICIO DA VIAGEM NO PRIMEIRO ORIGEM
//						COLOCAR AS DIARIAS A DIFERENCIA ENTRE O PRIMEIRO ORIGEM E O ÚLTIMO DESTINO
//						Tem que ser tempo tudo o mesmo viajante e o mesmo centro de custo
//------------------------------------------------------------------------------
                        response.CentrosCusto = new List <CentroCusto>();
                        ConsultaAdiantamentoResponse Adiantamento;
                        CentroCusto CentroCusto;
                        Viajante    Viajante;
                        Viagem      Viagem;
                        Destino     Destino;
                        Reserva     Reserva;
                        ItemProduto NovoItem;
                        ItemProduto LastItem;

                        //	INICIALIZAÇÕES
                        Adiantamento = new ConsultaAdiantamentoResponse();
                        Adiantamento.CentrosCusto = new List <DataContracts.Adiantamento.CentroCusto>();
                        CentroCusto           = new CentroCusto();
                        CentroCusto.Viajantes = new List <DataContracts.Adiantamento.Viajante>();
                        Viajante         = new Viajante();
                        Viajante.Viagens = new List <DataContracts.Adiantamento.Viagem>();
                        Viagem           = new Viagem();
                        Viagem.Destinos  = new List <DataContracts.Adiantamento.Destino>();
                        Destino          = new Destino();
                        Destino.Reservas = new List <DataContracts.Adiantamento.Reserva>();
                        Reserva          = new Reserva();
//						Reserva.Seguro = new ItemProduto();
                        Reserva.AéreoIda = new List <ItemProduto>();
//						Reserva.Hotel = new ItemProduto();
//						Reserva.Carro = new ItemProduto();
                        Reserva.Miscelanio = new List <ItemProduto>();
                        Reserva.AéreoVolta = new List <ItemProduto>();



                        //	TESTEMUNHAS
                        bool novoReserva     = true;
                        bool novoDestino     = true;
                        bool novoViagem      = true;
                        bool novoViajante    = true;
                        bool novoCentroCusto = true;
                        bool inicio          = true;
                        bool ida             = true;

                        DateTime null_data  = new System.DateTime(2000, 1, 1, 0, 0, 0);                         // Isto vai ser equivalente a datetime nula
                        DateTime first_data = null_data;                                                        // Aquí é para gerar uma variavel datetime nula
                        DateTime last_data  = null_data;                                                        // Aquí é para gerar uma variavel datetime nula

                        foreach (EntityBase item in dados)
                        {
                            debug = "LÉ O ITEM";

                            NovoItem                  = new ItemProduto();
                            NovoItem.TrOrigem         = new Endereco();
                            NovoItem.TrDestino        = new Endereco();
                            NovoItem.TipoProduto      = item["PRODUTO"].Value.toString2();
                            NovoItem.CodigoCasablanca = item["HANDLE"].Value.toString2();
                            NovoItem.Loc              = item["LOC"].Value.toString2();
                            NovoItem.Aprovador        = item["APROVADOR"].Value.toString2();
                            NovoItem.Fornecedor       = item["FORNECEDOR"].Value.toString2();
                            NovoItem.Inicio           = item["DATA_ORIGEM"].Value.toDataTime();
                            NovoItem.Final            = item["DATA_DESTINO"].Value.toDataTime();
                            NovoItem.Diarias          = NovoItem.Final.Subtract(NovoItem.Inicio).Days + 1;

                            switch (NovoItem.TipoProduto)
                            {
                            case "Seguro":
                                NovoItem.Confirmacao = item["CONFIRMACAO"].Value.toString2();

                                NovoItem.TrOrigem = null;

                                NovoItem.TrDestino            = new Endereco();
                                NovoItem.TrDestino.Municipio  = item["MUNICIPIO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Estado     = item["ESTADO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Regiao     = item["REGIAO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Pais       = item["PAIS_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Continente = item["CONTINENTE_DESTINO"].Value.toString2();
                                if (Viagem.Seguro != null)
                                {
                                    novoViagem = true;                                                                          // Seguro repetido = novo viagem
                                }
                                break;

                            case "Aéreo":
                                NovoItem.Bilhete = item["BILHETE"].Value.toString2();

                                NovoItem.TrOrigem            = new Endereco();
                                NovoItem.TrOrigem.Aeroporto  = item["AEREO_ORIGEM"].Value.toString2();
                                NovoItem.TrOrigem.Municipio  = item["MUNICIPIO_ORIGEM"].Value.toString2();
                                NovoItem.TrOrigem.Estado     = item["ESTADO_ORIGEM"].Value.toString2();
                                NovoItem.TrOrigem.Regiao     = item["REGIAO_ORIGEM"].Value.toString2();
                                NovoItem.TrOrigem.Pais       = item["PAIS_ORIGEM"].Value.toString2();
                                NovoItem.TrOrigem.Continente = item["CONTINENTE_ORIGEM"].Value.toString2();

                                NovoItem.TrDestino            = new Endereco();
                                NovoItem.TrDestino.Aeroporto  = item["AEREO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Municipio  = item["MUNICIPIO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Estado     = item["ESTADO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Regiao     = item["REGIAO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Pais       = item["PAIS_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Continente = item["CONTINENTE_DESTINO"].Value.toString2();
                                break;

                            case "Hotel":
                                NovoItem.Confirmacao = item["CONFIRMACAO"].Value.toString2();

                                NovoItem.TrOrigem = null;

                                NovoItem.TrDestino            = new Endereco();
                                NovoItem.TrDestino.Municipio  = item["MUNICIPIO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Estado     = item["ESTADO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Regiao     = item["REGIAO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Pais       = item["PAIS_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Continente = item["CONTINENTE_DESTINO"].Value.toString2();
                                break;

                                if (Reserva.Hotel != null)
                                {
                                    if (Reserva.Hotel.Final.Subtract(NovoItem.Inicio).Days > 1)
                                    {
                                        novoViagem = true;
                                    }
                                    else
                                    {
                                        novoDestino = true;
                                    }
                                }

                            case "Carro":
                                NovoItem.Confirmacao = item["CONFIRMACAO"].Value.toString2();

                                NovoItem.TrOrigem = null;

                                NovoItem.TrDestino            = new Endereco();
                                NovoItem.TrDestino.Municipio  = item["MUNICIPIO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Estado     = item["ESTADO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Regiao     = item["REGIAO_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Pais       = item["PAIS_DESTINO"].Value.toString2();
                                NovoItem.TrDestino.Continente = item["CONTINENTE_DESTINO"].Value.toString2();
                                break;

                            case "Miscelanio":
//									Reserva.Miscelanio.Add(NovoItem);
                                break;                                          // Miscelanio morre aqui.
                            }

                            debug = "DECIDE SE VAI MUDAR O DESTINO OU VIAGEM OU VIAJANTE OU CENTRO DE CUSTO";

                            //	primeira comporbação:
                            if (Viajante.CPF != item["CPF"].Value.toString2() || Viajante.Nome != item["PASSAGEIRO"].Value.toString2())
                            {
                                novoViajante = true;
                            }
                            if (CentroCusto.Nome != item["CC_CLIENTE"].Value.toString2())
                            {
                                novoCentroCusto = true;
                            }

                            debug = "FECHA E ABRE O QUE SEJA NECESSARIO";

                            if (novoReserva || novoDestino || novoViagem || novoViajante || novoCentroCusto)
                            {                                   // NOVA RESERVA
                                debug = "NOVA RESERVA";
                                if (!inicio)
                                {
                                    Destino.Reservas.Add(Reserva);
                                    Reserva = new Reserva();
//									Reserva.Seguro = new ItemProduto();
                                    Reserva.AéreoIda = new List <ItemProduto>();
//									Reserva.Hotel = new ItemProduto();
//									Reserva.Carro = new ItemProduto();
                                    Reserva.Miscelanio = new List <ItemProduto>();
                                    Reserva.AéreoVolta = new List <ItemProduto>();
                                }
                            }

                            //	DECISSÕES PARA NOVO DESTINO

                            if (novoDestino || novoViagem || novoViajante || novoCentroCusto)
                            {                                   // NOVO DESTINO
                                debug = "NOVO DESTINO";
                                if (!inicio)
                                {
                                    Viagem.Destinos.Add(Destino);
                                    Destino          = new Destino();
                                    Destino.Reservas = new List <DataContracts.Adiantamento.Reserva>();
                                    ida = true;
                                }
                            }

                            //	DECISSÕES PARA NOVA VIAGEM

                            if (novoViagem || novoViajante || novoCentroCusto)
                            {                                   // NOVO VIAGEM
                                debug = "NOVO VIAGEM";
                                if (!inicio)
                                {
                                    Viajante.Viagens.Add(Viagem);
                                    Viagem          = new Viagem();
                                    Viagem.Destinos = new List <DataContracts.Adiantamento.Destino>();
                                }
                            }

                            if (novoViajante || novoCentroCusto)
                            {                                   // NOVO VIAJANTE
                                debug = "NOVO VIAJANTE";
                                if (!inicio)
                                {
                                    CentroCusto.Viajantes.Add(Viajante);
                                    Viajante         = new Viajante();
                                    Viajante.Viagens = new List <DataContracts.Adiantamento.Viagem>();
                                }
                                Viajante.Nome = item["PASSAGEIRO"].Value.toString2();
                                Viajante.CPF  = item["CPF"].Value.toString2();
                            }

                            if (novoCentroCusto)
                            {                                   // NOVO CENTRO DE CUSTO
                                debug = "NOVO CENTRO DE CUSTO";
                                if (!inicio)
                                {
                                    response.CentrosCusto.Add(CentroCusto);
                                    CentroCusto           = new CentroCusto();
                                    CentroCusto.Viajantes = new List <DataContracts.Adiantamento.Viajante>();
                                }
                                CentroCusto.Nome    = item["CC_CLIENTE"].Value.toString2();
                                CentroCusto.Cliente = item["CLIENTE"].Value.toString2();
                            }

                            inicio          = false;
                            novoReserva     = false;
                            novoDestino     = false;
                            novoViagem      = false;
                            novoViajante    = false;
                            novoCentroCusto = false;

                            debug = "COLOCA O ITEM";
                            if (Viagem.Trechos == null)
                            {
                                Viagem.Trechos = item["TRECHOS"].Value.toString2();
                            }
                            else
                            {
                                if (Viagem.Trechos != item["TRECHOS"].Value.toString2())
                                {
                                    Viagem.Trechos += item["TRECHOS"].Value.toString2();
                                }
                            }

                            if (Destino.Diarias < NovoItem.Diarias)
                            {
                                Viagem.Diarias += NovoItem.Diarias - Destino.Diarias;
                                Destino.Diarias = NovoItem.Diarias;
                            }

                            switch (NovoItem.TipoProduto)
                            {
                            case "Seguro":
                                Viagem.Seguro = NovoItem;
                                Viagem.Inicio = NovoItem.Inicio;
                                Viagem.Final  = NovoItem.Final;
                                break;

                            case "Aéreo":                                       //Decidir se é ida ou volta
                                debug = "AEREO " + Reserva.AéreoIda.Count();
                                if (ida && Reserva.AéreoIda.Count() > 0)
                                {
                                    if (NovoItem.Inicio.Subtract(Reserva.AéreoIda.Last().Final).Days > 1 && NovoItem.TrOrigem.Municipio == Reserva.AéreoIda.Last().TrDestino.Municipio)
                                    {
                                        Destino.TrDestino = NovoItem.TrOrigem;
                                        ida = false;
                                    }
                                }
                                if (ida)                                                                //integerList[integerList.Count - 1]
                                {
                                    if (Destino.TrOrigem == null)
                                    {
                                        Destino.TrOrigem = NovoItem.TrOrigem;
                                    }
                                    Reserva.AéreoIda.Add(NovoItem);
                                }
                                else
                                {
                                    Reserva.AéreoVolta.Add(NovoItem);
                                }
                                break;

                            case "Hotel":
                                Reserva.Hotel     = NovoItem;
                                Destino.TrDestino = NovoItem.TrDestino;
                                ida = false;
                                break;

                            case "Carro":
                                Reserva.Carro = NovoItem;
                                if (Destino.TrDestino == null)
                                {
                                    Destino.TrDestino = NovoItem.TrDestino;
                                }
                                ida = false;
                                break;

                            case "Miscelanio":
                                Reserva.Miscelanio.Add(NovoItem);
                                break;
                            }

                            debug    = "LINHA 02";
                            LastItem = NovoItem;
                        }
                        Destino.Reservas.Add(Reserva);
                        Viagem.Destinos.Add(Destino);
                        Viajante.Viagens.Add(Viagem);
                        CentroCusto.Viajantes.Add(Viajante);
                        response.CentrosCusto.Add(CentroCusto);
                    }
                }
                debug = "Acabou a revissão";

                return(response);
            }
            catch (Exception ex)
            {
                Logger.LogDetail(string.Format("Erro ao consultar adiantamento. Erro: {0}", ex.Message));
                throw new Exception(string.Format("Erro ao consultar adiantamento. Erro: {0} (Linha:{1})", ex.Message, debug));
            }
            finally
            {
                Logger.LogDetail("Método ConsultarAdiantamento() - Out");
            }
        }
Esempio n. 11
0
 //[AutorizacaoDnaMais]
 public ActionResult Edit(ItemProduto itemProduto)
 {
     facade.AlterarItemProduto(itemProduto);
     return(View("Cadastro", itemProduto));
 }
        public ActionResult Checkout(int?id)
        {
            var item = new ItemProduto();

            return(View(item));
        }