private void btnFecharReabrir_Click(object sender, EventArgs e) { // Verifica se vai fechar if (!faturamentos[index].fechado) { // Vai fechar if (MessageBox.Show("Tem certeza que quer fechar o faturamento?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Faturamento faturamentoAtualizado = faturamentos[index]; String mensagemRetorno = ""; // Verifica se fechou com sucesso if (FaturamentoServicos.fechaFaturamento(ref faturamentoAtualizado, ref mensagemRetorno)) { faturamentos[index] = faturamentoAtualizado; fillFields(); if (MessageBox.Show("Gostaria de imprimir o recibo?", "Recibo de Faturamento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { btnImprimirRecibo_Click(null, null); } } else { MessageBox.Show(String.Format("Não foi possível fechar o faturamento.\n\n{0}", mensagemRetorno), "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } } } else { // Vai reabrir if (MessageBox.Show("Tem certeza que quer reabrir o faturamento?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Faturamento faturamentoAtualizado = faturamentos[index]; String mensagemRetorno = ""; // Verifica se reabriu com sucesso if (FaturamentoServicos.reabreFaturamento(ref faturamentoAtualizado, ref mensagemRetorno)) { faturamentos[index] = faturamentoAtualizado; fillFields(); } else { MessageBox.Show(String.Format("Não foi possível reabrir o faturamento.\n\n{0}", mensagemRetorno), "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } } } }
private void btnPesquisar_Click(object sender, EventArgs e) { Faturamento_OrcamentoFiltroRelatorio faturamentoFiltroRelatorio; if (rdbtOrcamento.Checked) { faturamentoFiltroRelatorio = new Faturamento_OrcamentoFiltroRelatorio(Faturamento_OrcamentoFiltroRelatorio.TipoRelatorio.Orcamento); } else { faturamentoFiltroRelatorio = new Faturamento_OrcamentoFiltroRelatorio(Faturamento_OrcamentoFiltroRelatorio.TipoRelatorio.Faturamento); } faturamentoFiltroRelatorio.apenasFechados = chkApenasFechado.Checked; if (chkFormasPagamento.Checked) { faturamentoFiltroRelatorio.formasPagamentoSelecionadas = chkLstFormasPagamento.CheckedItems.OfType <FormaPagamento>().ToList(); } if (chkServicos.Checked) { faturamentoFiltroRelatorio.servicosSelecionados = chkLstServicos.CheckedItems.OfType <Servico>().ToList(); } if (chkCustosAdicionais.Checked) { faturamentoFiltroRelatorio.custosAdicionaisSelecionados = chkLstCustosAdicionais.CheckedItems.OfType <Servico>().ToList(); } if (chkCliente.Checked) { faturamentoFiltroRelatorio.clientesSelecionados = chkLstClientes.CheckedItems.OfType <Cliente>().ToList(); } if (chkDataCriacao.Checked) { DateTime _dtCriacaoInicio, _dtCriacaoFim; DateTime.TryParse(txtDtCriacaoInicio.Text.ToString(), out _dtCriacaoInicio); DateTime.TryParse(txtDtCriacaoFim.Text.ToString(), out _dtCriacaoFim); faturamentoFiltroRelatorio.dtCriacaoInicio = _dtCriacaoInicio; faturamentoFiltroRelatorio.dtCriacaoFim = _dtCriacaoFim; } if (chkDataFechamento.Checked) { DateTime _dtEncerramentoInicio, _dtEncerramentoFim; DateTime.TryParse(txtDtCriacaoInicio.Text.ToString(), out _dtEncerramentoInicio); DateTime.TryParse(txtDtCriacaoFim.Text.ToString(), out _dtEncerramentoFim); faturamentoFiltroRelatorio.dtEncerramentoInicio = _dtEncerramentoInicio; faturamentoFiltroRelatorio.dtEncerramentoFim = _dtEncerramentoFim; } if (faturamentoFiltroRelatorio.tpRelatorio == Faturamento_OrcamentoFiltroRelatorio.TipoRelatorio.Orcamento) { refreshDataGridView(faturamentoFiltroRelatorio.tpRelatorio, OrcamentoServicos.reportOrcamento(faturamentoFiltroRelatorio)); } else { refreshDataGridView(faturamentoFiltroRelatorio.tpRelatorio, FaturamentoServicos.reportFaturamento(faturamentoFiltroRelatorio)); } }
private void txtOrcamento_MouseDoubleClick(object sender, MouseEventArgs e) { if (index > -1) { int numOrcamento = faturamentos[index].numOrcamento; int numFaturamento = faturamentos[index].id; String cliente = faturamentos[index].cliente.nome; if (numOrcamento > 0) { // Cria o menu de contexto ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); ToolStripMenuItem toolStripMenuItem; toolStripMenuItem = new ToolStripMenuItem(String.Format("Desvicular orçamento {0} do faturamento {1}", numOrcamento, numFaturamento)); toolStripMenuItem.Click += (_sender, _e) => { // desviculaOrcamentoDoFaturamento faturamentos[index].numOrcamento = 0; FaturamentoServicos.update(faturamentos[index]); btnAtualizar_Click(null, null); }; contextMenuStrip.Items.Add(toolStripMenuItem); // Exibe o menu de contexto contextMenuStrip.Show(this, this.PointToClient(MousePosition)); } else { // Cria o menu de contexto ContextMenuStrip contextMenuStrip = new ContextMenuStrip(); ToolStripMenuItem toolStripMenuItem; toolStripMenuItem = new ToolStripMenuItem(String.Format("Vincular faturamento {0} com orçamento do cliente {1}", numFaturamento, cliente)); toolStripMenuItem.Click += (_sender, _e) => { // vincularOrcamentoAoFaturamento consultaOrcamentoForm = new ConsultaOrcamento(Util.TipoConsulta.Selecao, true, faturamentos[index].cliente.id); consultaOrcamentoForm.FormClosing += (__sender, __e) => { Orcamento orcamentoSelecionado = consultaOrcamentoForm.orcamentoSelecionado; if (orcamentoSelecionado != null) { faturamentos[index].numOrcamento = orcamentoSelecionado.id; FaturamentoServicos.update(faturamentos[index]); btnAtualizar_Click(null, null); } }; consultaOrcamentoForm.Show(); }; contextMenuStrip.Items.Add(toolStripMenuItem); // Exibe o menu de contexto contextMenuStrip.Show(this, this.PointToClient(MousePosition)); } } }
private void gravarServico_Custo(Servico servico, Servico.TipoServico tpServico) { if (tpServico == Servico.TipoServico.Servico) { FaturamentoServicos.updateServicosInFaturamento(servico, Servico.TipoServico.Servico); } else if (tpServico == Servico.TipoServico.CustoAdicional) { FaturamentoServicos.updateServicosInFaturamento(servico, Servico.TipoServico.CustoAdicional); } }
// Exclui o cliente private void btnExcluir_Click(object sender, EventArgs e) { if (MessageBox.Show("Confirma a deleção do registro ?" + Environment.NewLine + Environment.NewLine + faturamentos[index].ToString(), "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { FaturamentoServicos.delete(faturamentos[index]); index = -1; getFromRepositorio(); clearFields(); } }
private void criarServico_Custo(Servico servico, Servico.TipoServico tpServico) { if (tpServico == Servico.TipoServico.Servico) { FaturamentoServicos.createServicosInFaturamento(faturamentos[index], ref servico, Servico.TipoServico.Servico); faturamentos[index].servicos[faturamentos[index].servicos.Count - 1] = servico; } else if (tpServico == Servico.TipoServico.CustoAdicional) { FaturamentoServicos.createServicosInFaturamento(faturamentos[index], ref servico, Servico.TipoServico.CustoAdicional); faturamentos[index].custosAdicionais[faturamentos[index].custosAdicionais.Count - 1] = servico; } }
private void ConsultaOrcamentoForm_FormClosing(object sender, FormClosingEventArgs e) { Orcamento orcamentoSelecionado = consultaOrcamentoForm.orcamentoSelecionado; if (orcamentoSelecionado != null) { Faturamento newFaturamento = FaturamentoServicos.criaFaturamentoComBaseEmOrcamento(orcamentoSelecionado); FaturamentoServicos.create(ref newFaturamento); getFromRepositorio(); btnUltimo_Click(null, null); } }
private void getFromRepositorio() { faturamentos = FaturamentoServicos.read(); formasPagamento = FormaPagamentoServicos.Instance.read(); cboFormasPagamento.Items.Clear(); cboFormasPagamento.Items.AddRange(formasPagamento.ToArray()); if (index > -1 && faturamentos[index].formaPagamento != null) { cboFormasPagamento.SelectedIndex = formasPagamento.FindIndex(find => find.id == faturamentos[index].formaPagamento.id); } else { cboFormasPagamento.SelectedIndex = -1; } }
// Salva as alterações do orçamento private void btnGravar_Click(object sender, EventArgs e) { // Cria um novo orçamento Faturamento newFaturamento; // Cria os dados básicos do orçamento int idCliente = -1; int.TryParse(txtCdCliente.Text, out idCliente); if (txtCdCliente.Text.Trim().Length == 0) { MessageBox.Show("Não foi possível salvar o faturamento.\n\nDeve ser selecionado um cliente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } else { Cliente cliente = ClienteServicos.Instance.read(idCliente); Veiculo veiculo = (Veiculo)cboVeiculo.SelectedItem; newFaturamento = new Faturamento(cliente, veiculo); FormaPagamento formaPagamento = null; if (cboFormasPagamento.SelectedIndex > -1) { formaPagamento = (FormaPagamento)cboFormasPagamento.SelectedItem; } newFaturamento.formaPagamento = formaPagamento; newFaturamento._idFormaPagamento = formaPagamento != null ? formaPagamento.id : 0; // Verifica se vai inserir um novo registro ou então salvá-lo if (windowMode == Util.WindowMode.ModoDeInsercao) { // Cria novo orçameto if (FaturamentoServicos.create(ref newFaturamento)) { getFromRepositorio(); btnUltimo_Click(null, null); } else { clearFields(); } } else if (windowMode == Util.WindowMode.ModoDeEdicao) { // Grava orçamento já existente newFaturamento.id = faturamentos[index].id; newFaturamento.servicos = faturamentos[index].servicos; newFaturamento.custosAdicionais = faturamentos[index].custosAdicionais; newFaturamento.dataCriacao = faturamentos[index].dataCriacao; newFaturamento.numOrcamento = faturamentos[index].numOrcamento; if (cliente != null) { newFaturamento._idCliente = cliente.id; } if (veiculo != null) { newFaturamento._idVeiculo = veiculo.id; } if (FaturamentoServicos.update(newFaturamento)) { getFromRepositorio(); } fillFields(); } windowMode = Util.WindowMode.ModoNormal; windowModeChanged(); } }
public IActionResult Create(Faturamento faturamento) { string mes = faturamento.DataApuracao.Value.Month.ToString().PadLeft(2, '0'); string ano = faturamento.DataApuracao.Value.Year.ToString(); //string referencia = mes + "/" + ano; string referencia = faturamento.Referencia; Faturamento objFaturamento = new Faturamento(); int FaturaId = 0; //Verifica se já existe faturamento para o proprietário para o mês de referência //int FaturaId = RetornaFatura(faturamento.ProprietarioId, referencia); /* * if (FaturaId == null) * { * //Cria o registro de faturamento * * objFaturamento.ProprietarioId = faturamento.ProprietarioId; * objFaturamento.Valor = "0,00"; * objFaturamento.Situacao = FaturamentoSituacao.PENDENTE; * objFaturamento.Data = DateTime.Now; * objFaturamento.Referencia = faturamento.Referencia; * * _context.Faturamentos.Add(objFaturamento); * _context.SaveChanges(); * * FaturaId = objFaturamento.Id; * }*/ List <AnimaisServicos> listServicoProprietario = new List <AnimaisServicos>(); #region Identifica os serviços realizados para animais vinculados em Proprietários para o período. if (faturamento.ProprietarioId != 0) { listServicoProprietario = (from p in _context.Proprietarios join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId join a in _context.Animais on ap.AnimaisId equals a.Id join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId where aass.Data.ToString("MM/yyyy") == referencia && p.Id == faturamento.ProprietarioId && aass.Data <= faturamento.DataApuracao && p.Situacao == Situacao.ATIVO && ap.DataAquisicao <= faturamento.DataApuracao && ap.DataValidade > faturamento.DataApuracao && aass.Faturamento == "N" && aass.ServicoSituacao == ServicoSituacao.REALIZADO select new AnimaisServicos { Id = aass.Id } ).Distinct().ToList(); } else { listServicoProprietario = (from p in _context.Proprietarios join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId join a in _context.Animais on ap.AnimaisId equals a.Id join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId where aass.Data.ToString("MM/yyyy") == referencia && aass.Data <= faturamento.DataApuracao && p.Situacao == Situacao.ATIVO && ap.DataAquisicao <= faturamento.DataApuracao && ap.DataValidade > faturamento.DataApuracao && aass.Faturamento == "N" && aass.ServicoSituacao == ServicoSituacao.REALIZADO select new AnimaisServicos { Id = aass.Id } ).Distinct().ToList(); } #endregion //Inicia o processo apenas se existirem serviços lançados em animais que possuem proprietário if (listServicoProprietario.Count > 0) { foreach (var item in listServicoProprietario) { AnimaisServicos ObjAnimaisServicos = _context.AnimaisServicos.FirstOrDefault(s => s.Id == item.Id); if (listServicoProprietario.Count > 0) { //Verifica se o animal possui proprietário apto para cobrança de acordo com a data de realização do serviço. List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios join p in _context.Proprietarios on ap.ProprietarioId equals p.Id join a in _context.Animais on ap.AnimaisId equals a.Id join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId where aass.Id == item.Id && ap.AnimaisId == ObjAnimaisServicos.AnimaisId && p.Situacao == Situacao.ATIVO && ap.DataAquisicao <= ObjAnimaisServicos.Data && ap.DataValidade > ObjAnimaisServicos.Data && aass.Faturamento == "N" && aass.ServicoSituacao == ServicoSituacao.REALIZADO select p).ToList(); int totalProprietario = LstProprietario.Count(); //Quando o animal do serviço realizado possui mais de um proprietário realiza loop para rateio do serviço que será faturado. if (totalProprietario >= 2) { for (int i = 0; i < LstProprietario.Count(); i++) { //Verifica se existe fatura o Proprietário para referência informada FaturaId = RetornaFatura(LstProprietario[i].Id, referencia); FaturamentoServicos faturamentoServicos = new FaturamentoServicos(); faturamentoServicos.ProprietarioId = LstProprietario[i].Id; faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id; faturamentoServicos.AnimaisId = ObjAnimaisServicos.AnimaisId; faturamentoServicos.ServicoId = ObjAnimaisServicos.ServicoId; decimal valor = ((Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100) / totalProprietario); //faturamentoServicos.Valor = Decimal.Round((valor), 2).ToString(); faturamentoServicos.Valor = Convert.ToDecimal(valor).ToString(); faturamentoServicos.DataFaturamento = DateTime.Now; //DateTime dataReferenciaFormatada = Convert.ToDateTime(faturamento.Referencia); faturamentoServicos.Referencia = referencia; faturamentoServicos.FaturamentoId = FaturaId; faturamentoServicos.DoadoraId = ObjAnimaisServicos.DoadoraId; faturamentoServicos.GaranhaoId = ObjAnimaisServicos.GaranhaoId; faturamentoServicos.ReceptoraId = ObjAnimaisServicos.ReceptoraId; faturamentoServicos.SemenId = ObjAnimaisServicos.SemenId; //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário. _context.FaturamentoServicos.Add(faturamentoServicos); _context.SaveChanges(); } } else { //Verifica se existe fatura o Proprietário para referência informada FaturaId = RetornaFatura(LstProprietario[0].Id, referencia); FaturamentoServicos faturamentoServicos = new FaturamentoServicos(); faturamentoServicos.ProprietarioId = LstProprietario[0].Id; faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id; faturamentoServicos.AnimaisId = ObjAnimaisServicos.AnimaisId; faturamentoServicos.ServicoId = ObjAnimaisServicos.ServicoId; faturamentoServicos.Valor = (Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100).ToString(); faturamentoServicos.DataFaturamento = DateTime.Now; //DateTime dataReferenciaFormatada = Convert.ToDateTime(faturamento.Referencia); faturamentoServicos.Referencia = referencia; faturamentoServicos.FaturamentoId = FaturaId; faturamentoServicos.DoadoraId = ObjAnimaisServicos.DoadoraId; faturamentoServicos.GaranhaoId = ObjAnimaisServicos.GaranhaoId; faturamentoServicos.ReceptoraId = ObjAnimaisServicos.ReceptoraId; faturamentoServicos.SemenId = ObjAnimaisServicos.SemenId; _context.FaturamentoServicos.Add(faturamentoServicos); _context.SaveChanges(); } } //Atualiza o serviço realizado no animal para item incluído no processo de faturamento. ObjAnimaisServicos.Faturamento = "S"; _context.AnimaisServicos.Update(ObjAnimaisServicos); _context.SaveChanges(); } } //Após o processo de validação e rateio dos serviços do proprietário devem ser criadas as informações na tabela Faturamento //e atualizar os vinculos com a tabela faturamentoservicos. List <Faturamento> LstFaturamento = (from fs in _context.FaturamentoServicos join p in _context.Proprietarios on fs.ProprietarioId equals p.Id //where fs.Referencia.ToString("MM/yyyy") == faturamento.Referencia where fs.Referencia == referencia group fs by fs.Proprietario into g select new Faturamento { Proprietario = g.Key, Valor = g.Sum(s => Convert.ToDecimal(s.Valor) / 100).ToString(), Situacao = FaturamentoSituacao.PENDENTE, Referencia = g.First().Referencia } ).ToList(); //////////////////////////Processo de Faturamento das Diárias/////////////////////////////////////////////// /// List <AnimaisEntrada> listEntradasProprietario = new List <AnimaisEntrada>(); #region Identifica as entradas para animais vinculados em Proprietários para o período. if (faturamento.ProprietarioId != 0) { listEntradasProprietario = (from p in _context.Proprietarios join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId join a in _context.Animais on ap.AnimaisId equals a.Id join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId where p.Id == faturamento.ProprietarioId && p.Situacao == Situacao.ATIVO && aa.DiariaSituacao != DiariaSituacao.CANCELADA && ap.DataAquisicao < faturamento.DataApuracao && ap.DataValidade >= faturamento.DataApuracao && aa.DataUltimaApuracao < faturamento.DataApuracao group aa by aa.Id into agroup select new AnimaisEntrada { Id = agroup.First().Id }).ToList(); } else { listEntradasProprietario = (from p in _context.Proprietarios join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId join a in _context.Animais on ap.AnimaisId equals a.Id join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId where p.Situacao == Situacao.ATIVO && ap.DataAquisicao < faturamento.DataApuracao && ap.DataValidade >= faturamento.DataApuracao && aa.DiariaSituacao != DiariaSituacao.CANCELADA && aa.DataUltimaApuracao < faturamento.DataApuracao group aa by aa.Id into agroup select new AnimaisEntrada { Id = agroup.First().Id }).ToList(); } #endregion //Inicia o processo se encontrar lançamentos de diárias para animais que possuem proprietário if (listEntradasProprietario.Count > 0) { foreach (var item in listEntradasProprietario) { //Verifica as informações de datas que devem ser cobradas para cada proprietário do animal. var dadosFat = (from ap in _context.AnimaisProprietarios join a in _context.Animais on ap.AnimaisId equals a.Id join ae in _context.AnimaisEntradas on a.Id equals ae.AnimaisId where ae.Id == item.Id && Convert.ToDateTime(ap.DataValidade.ToString("MM/yyyy")) > Convert.ToDateTime(referencia) select ap ).ToList(); List <DadosProprietarioEntrada> objDados = new List <DadosProprietarioEntrada>(); foreach (var iFat in dadosFat) { DateTime PrimeiroDiadoMes = DateTime.Parse("01/" + referencia); DadosProprietarioEntrada objDadosProprietario = new DadosProprietarioEntrada(); objDadosProprietario.DataAquisicao = iFat.DataAquisicao; objDadosProprietario.DataUltimaApuracao = (DateTime)iFat.DataUltimaApuracao; objDadosProprietario.ProprietarioId = (int)iFat.ProprietarioId; if (PrimeiroDiadoMes > iFat.DataUltimaApuracao) { objDadosProprietario.Dias = faturamento.DataApuracao.Value.Subtract(PrimeiroDiadoMes).Days; } else { objDadosProprietario.Dias = faturamento.DataApuracao.Value.Subtract((DateTime)iFat.DataUltimaApuracao).Days; } objDados.Add(objDadosProprietario); } //Processo para definir o fator de divisão para o proprietário. AnimaisEntrada ObjAnimaisEntradas = _context.AnimaisEntradas.FirstOrDefault(s => s.Id == item.Id); //Procura os proprietárioas associados ao animal que estão ativos no periodo de faturamento //Periodo de faturamento igual à data ultimo faturamento ou data de aquisição menos data faturamento List <AnimaisProprietario> LstProprietarioTeste = (from ap in _context.AnimaisProprietarios join a in _context.Animais on ap.AnimaisId equals a.Id where a.Id == ObjAnimaisEntradas.AnimaisId && Convert.ToDateTime(ap.DataValidade.ToString("MM/yyyy")) > Convert.ToDateTime(referencia) select ap ).ToList(); //Verifica se o animal possui proprietário apto para cobrança de acordo com a data de realização do serviço. List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios join p in _context.Proprietarios on ap.ProprietarioId equals p.Id join a in _context.Animais on ap.AnimaisId equals a.Id join aa in _context.AnimaisEntradas on a.Id equals aa.AnimaisId where aa.Id == item.Id && ap.AnimaisId == ObjAnimaisEntradas.AnimaisId && p.Situacao == Situacao.ATIVO && ap.DataAquisicao < faturamento.DataApuracao && ap.DataValidade >= faturamento.DataApuracao select p).ToList(); int totalProprietario = LstProprietario.Count(); if (totalProprietario > 0) { //Quando o animal do serviço realizado possui mais de um proprietário realiza loop para rateio do serviço que será faturado. if (totalProprietario >= 2) { for (int i = 0; i < LstProprietario.Count(); i++) { //Verifica se existe fatura o Proprietário para referência informada FaturaId = RetornaFatura(LstProprietario[i].Id, referencia); FaturamentoEntradas faturamentoEntradas = new FaturamentoEntradas(); faturamentoEntradas.ProprietarioId = LstProprietario[i].Id; faturamentoEntradas.AnimaisEntradasId = ObjAnimaisEntradas.Id; faturamentoEntradas.AnimaisId = ObjAnimaisEntradas.AnimaisId; faturamentoEntradas.ServicoId = ObjAnimaisEntradas.ServicoId; decimal diaria = ((Convert.ToDecimal(ObjAnimaisEntradas.Valor) / 100) / totalProprietario); faturamentoEntradas.Diaria = diaria; //Verificar a data de aquisição do animal pelo proprietário //Calcular a quantidade de dias do mes ainda não apurados de acordo com a data de apuração informada. //Dias => data apuração informada - data ultima apuração DateTime?data1 = ObjAnimaisEntradas.DataUltimaApuracao; DateTime?data2 = faturamento.DataApuracao; TimeSpan?totalDias = data2 - data1; int dias = totalDias.Value.Days; faturamentoEntradas.Dias = dias; faturamentoEntradas.Valor = (diaria * dias).ToString(); faturamentoEntradas.DataFaturamento = DateTime.Now; faturamentoEntradas.Referencia = referencia; faturamentoEntradas.FaturamentoId = FaturaId; //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário. _context.FaturamentoEntradas.Add(faturamentoEntradas); AnimaisProprietario ObjAnimaisProprietarios = (from ap in _context.AnimaisProprietarios where ap.ProprietarioId == LstProprietario[i].Id select ap).FirstOrDefault(); ObjAnimaisProprietarios.DataUltimaApuracao = faturamento.DataApuracao; _context.AnimaisProprietarios.Update(ObjAnimaisProprietarios); _context.SaveChanges(); } } else if (totalProprietario == 1) { //Verifica se existe fatura o Proprietário para referência informada FaturaId = RetornaFatura(LstProprietario[0].Id, referencia); FaturamentoEntradas faturamentoEntradas = new FaturamentoEntradas(); faturamentoEntradas.ProprietarioId = listEntradasProprietario[0].Id; faturamentoEntradas.AnimaisEntradasId = ObjAnimaisEntradas.Id; faturamentoEntradas.AnimaisId = ObjAnimaisEntradas.AnimaisId; faturamentoEntradas.ServicoId = ObjAnimaisEntradas.ServicoId; decimal diaria = (Convert.ToDecimal(ObjAnimaisEntradas.Valor) / 100); faturamentoEntradas.Diaria = diaria; //Calcular a quantidade de dias do mes ainda não apurados de acordo com a data de apuração informada. //Dias => data apuração informada - data ultima apuração DateTime?data1 = ObjAnimaisEntradas.DataUltimaApuracao; DateTime?data2 = faturamento.DataApuracao; TimeSpan?totalDias = data2 - data1; int dias = totalDias.Value.Days; faturamentoEntradas.Dias = dias; faturamentoEntradas.Valor = (diaria * dias).ToString(); faturamentoEntradas.DataFaturamento = DateTime.Now; faturamentoEntradas.Referencia = referencia; faturamentoEntradas.FaturamentoId = FaturaId; //Adiciona o serviço que passou pelo rateio na lista de serviços do proprietário. _context.FaturamentoEntradas.Add(faturamentoEntradas); AnimaisProprietario ObjAnimaisProprietarios = (from ap in _context.AnimaisProprietarios where ap.ProprietarioId == LstProprietario[0].Id select ap).FirstOrDefault(); ObjAnimaisProprietarios.DataUltimaApuracao = faturamento.DataApuracao; _context.AnimaisProprietarios.Update(ObjAnimaisProprietarios); _context.SaveChanges(); } //Atualiza o serviço realizado no animal para item incluído no processo de faturamento. ObjAnimaisEntradas.DataUltimaApuracao = faturamento.DataApuracao; _context.AnimaisEntradas.Update(ObjAnimaisEntradas); _context.SaveChanges(); } } } //Atualiza o faturamento apenas se existerem registros de entradas ou serviços if (listServicoProprietario.Count > 0 || listEntradasProprietario.Count > 0) { AtualizaFaturamento(FaturaId); } return(RedirectToAction("Index")); }
public void FaturaProprietario(int idAnimalServico) { List <AnimaisServicos> listServicoProprietario = (from p in _context.Proprietarios join ap in _context.AnimaisProprietarios on p.Id equals ap.ProprietarioId join a in _context.Animais on ap.AnimaisId equals a.Id join aass in _context.AnimaisServicos on a.Id equals aass.AnimaisId select ( aass )).ToList(); foreach (var item in listServicoProprietario) { AnimaisServicos ObjAnimaisServicos = _context.AnimaisServicos.FirstOrDefault(s => s.Id == item.Id); //Verifica se o animal precisa ter proprietário List <Proprietario> LstProprietario = (from ap in _context.AnimaisProprietarios join p in _context.Proprietarios on ap.ProprietarioId equals p.Id join a in _context.Animais on ap.AnimaisId equals a.Id where ap.AnimaisId == ObjAnimaisServicos.AnimaisId && p.Situacao == Situacao.ATIVO && ap.DataAquisicao <= ObjAnimaisServicos.Data && ap.DataDesassociacao >= ObjAnimaisServicos.Data select p).ToList(); int totalProprietario = LstProprietario.Count(); //Realiza o loop de proprietários e realiza o rateio. if (totalProprietario >= 2) { LstProprietario.Count(); for (int i = 0; i < LstProprietario.Count(); i++) { FaturamentoServicos faturamentoServicos = new FaturamentoServicos(); faturamentoServicos.ProprietarioId = LstProprietario[i].Id; faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id; faturamentoServicos.AnimaisId = ObjAnimaisServicos.AnimaisId; faturamentoServicos.ServicoId = ObjAnimaisServicos.ServicoId; decimal valor = ((Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100) / totalProprietario); faturamentoServicos.Valor = Decimal.Round(valor, 2).ToString(); faturamentoServicos.DataFaturamento = DateTime.Now; //faturamentoServicos.Referencia = DateTime.Now; _context.FaturamentoServicos.Add(faturamentoServicos); _context.SaveChanges(); } } else { FaturamentoServicos faturamentoServicos = new FaturamentoServicos(); faturamentoServicos.ProprietarioId = LstProprietario[0].Id; faturamentoServicos.AnimaisServicosId = ObjAnimaisServicos.Id; faturamentoServicos.AnimaisId = ObjAnimaisServicos.AnimaisId; faturamentoServicos.ServicoId = ObjAnimaisServicos.ServicoId; faturamentoServicos.Valor = (Convert.ToDecimal(ObjAnimaisServicos.ValorTotal) / 100).ToString(); faturamentoServicos.DataFaturamento = DateTime.Now; //faturamentoServicos.Referencia = DateTime.Now; _context.FaturamentoServicos.Add(faturamentoServicos); _context.SaveChanges(); } } }