public ActionResult Create(ContaReceber contaReceber)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    contaReceber.EmpresaID = Convert.ToInt32(User.FindFirst(ClaimTypes.GroupSid).Value);

                    ContaReceberService service = new ContaReceberService();
                    service.PreencherCampos(contaReceber);

                    if (contaReceber.Recorrente == true)
                    {
                        int numParcela = 0;
                        for (int i = 1; i <= 12; i++)
                        {
                            numParcela++;
                            ContaReceber parcela = new ContaReceber();
                            parcela.CategoriaID     = contaReceber.CategoriaID;
                            parcela.SubCategoriaID  = contaReceber.SubCategoriaID;
                            parcela.CentroDeCustoID = contaReceber.CentroDeCustoID;
                            parcela.ContaContabilID = contaReceber.ContaContabilID;
                            parcela.DataCadastro    = contaReceber.DataCadastro;
                            parcela.DataExclusao    = contaReceber.DataExclusao;
                            parcela.DataPagamento   = contaReceber.DataPagamento;

                            if (numParcela > 1)
                            {
                                parcela.DataVencimento = contaReceber.DataVencimento.AddMonths(numParcela - 1);
                                parcela.Competencia    = contaReceber.Competencia.AddMonths(numParcela - 1);
                            }
                            else
                            {
                                parcela.DataVencimento = contaReceber.DataVencimento;
                                parcela.Competencia    = contaReceber.Competencia;
                            }

                            parcela.Status          = StatusContaReceber.Aberto;
                            parcela.Desconto        = contaReceber.Desconto;
                            parcela.Descricao       = contaReceber.Descricao;
                            parcela.EmpresaID       = contaReceber.EmpresaID;
                            parcela.FlagAtivo       = contaReceber.FlagAtivo;
                            parcela.FormaPagamento  = contaReceber.FormaPagamento;
                            parcela.ClienteID       = contaReceber.ClienteID;
                            parcela.Desconto        = contaReceber.Desconto ?? 0;
                            parcela.Juros           = contaReceber.Juros ?? 0;
                            parcela.Multa           = contaReceber.Multa ?? 0;
                            parcela.Recorrente      = contaReceber.Recorrente;
                            parcela.NumeroDocumento = contaReceber.NumeroDocumento + numParcela;
                            parcela.TipoDocumento   = contaReceber.TipoDocumento;
                            parcela.Valor           = contaReceber.Valor;
                            parcela.ValorRecebido   = contaReceber.ValorRecebido;
                            parcela.Observacoes     = "Gerado automaticamente através de cadastro de conta recorrente. Parcela: " + numParcela + "/12";

                            _contas.Inserir(parcela);
                        }
                        return(RedirectToAction(nameof(Index)));
                    }
                    else
                    {
                        _contas.Inserir(contaReceber);
                        return(RedirectToAction(nameof(Index)));
                    }
                }

                CarregarClientes();
                CarregarCategorias();
                CarregarSubCategorias(0);
                CarregarCentroDeCusto();
                return(View(contaReceber));
            }
            catch (Exception ex)
            {
                Mensagem = ex.Message.ToString();
                ModelState.AddModelError(String.Empty, Mensagem);
                CarregarClientes();
                CarregarCategorias();
                CarregarSubCategorias(0);
                CarregarCentroDeCusto();
                return(View(contaReceber));
            }
        }
Example #2
0
        public ActionResult FaturarOrcamento(int id, Orcamento orcamento)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var           orcamentoAux  = _orcamento.ObterPorId(id);
                    TratarValores tratarValores = new TratarValores();

                    OrcamentoService service = new OrcamentoService();
                    service.FaturarOrcamento(orcamento);
                    _orcamento.Atualizar(orcamento);

                    #region GERANDO O CONTAS A RECEBER DO ORÇAMENTO
                    ContaReceber contaReceber = new ContaReceber();
                    contaReceber.EmpresaID       = Convert.ToInt32(User.FindFirst(ClaimTypes.GroupSid).Value);
                    contaReceber.DataCadastro    = DateTime.Now;
                    contaReceber.Competencia     = DateTime.Now;
                    contaReceber.DataExclusao    = null;
                    contaReceber.DataPagamento   = null;
                    contaReceber.DataVencimento  = DateTime.Now.AddMonths(1);
                    contaReceber.FlagAtivo       = true;
                    contaReceber.ClienteID       = orcamentoAux.ClienteID;
                    contaReceber.CategoriaID     = null;
                    contaReceber.SubCategoriaID  = null;
                    contaReceber.CentroDeCustoID = null;
                    contaReceber.ContaContabilID = null;
                    contaReceber.OrcamentoID     = orcamentoAux.OrcamentoID;
                    contaReceber.Valor           = orcamentoAux.TotalOrcamento;
                    contaReceber.Recorrente      = false;
                    contaReceber.TipoDocumento   = TipoDocumento.NotaFiscal;
                    contaReceber.NumeroDocumento = Convert.ToInt32(orcamentoAux.OrcamentoID.ToString() + tratarValores.TransformarHoraEmNumero(orcamentoAux.DataCadastro));
                    contaReceber.Descricao       = orcamentoAux.Titulo;
                    contaReceber.FormaPagamento  = FormaPagamento.Boleto;
                    contaReceber.Status          = StatusContaReceber.Aberto;
                    contaReceber.Desconto        = 0;
                    contaReceber.Juros           = 0;
                    contaReceber.Multa           = 0;
                    contaReceber.Observacoes     = "Gerado automaticamente através do orçamento " + orcamentoAux.OrcamentoID + " - " + orcamentoAux.Cliente.RazaoSocial + " - " + orcamentoAux.Titulo;

                    _contaReceber.Inserir(contaReceber);
                    #endregion

                    #region GERANDO O CONTAS A PAGAR DOS FORNECEDORES ENVOLVIDOS
                    if (orcamento.GerarPagamentos == true)
                    {
                        var listaFornecedor = _orcamentoFornecedor.ObterFornecedores(orcamento.OrcamentoID);

                        if (listaFornecedor != null)
                        {
                            foreach (var item in listaFornecedor)
                            {
                                ContaPagar contaPagar = new ContaPagar();
                                contaPagar.EmpresaID       = Convert.ToInt32(User.FindFirst(ClaimTypes.GroupSid).Value);
                                contaPagar.DataCadastro    = DateTime.Now;
                                contaPagar.Competencia     = DateTime.Now;
                                contaPagar.DataExclusao    = null;
                                contaPagar.DataPagamento   = null;
                                contaPagar.DataVencimento  = DateTime.Now.AddMonths(1);
                                contaPagar.FlagAtivo       = true;
                                contaPagar.FornecedorID    = item.FornecedorID;
                                contaPagar.CategoriaID     = null;
                                contaPagar.SubCategoriaID  = null;
                                contaPagar.CentroDeCustoID = null;
                                contaPagar.ContaContabilID = null;
                                contaPagar.OrcamentoID     = orcamento.OrcamentoID;
                                contaPagar.Valor           = item.ValorTotal;
                                contaPagar.Recorrente      = false;
                                contaPagar.TipoDocumento   = TipoDocumento.NotaFiscal;
                                contaPagar.NumeroDocumento = Convert.ToInt32(orcamento.OrcamentoID.ToString() + tratarValores.TransformarHoraEmNumero(orcamento.DataCadastro));
                                contaPagar.Descricao       = item.Descricao;
                                contaPagar.FormaPagamento  = FormaPagamento.Boleto;
                                contaPagar.Status          = StatusContaPagar.Aberto;
                                contaPagar.Desconto        = 0;
                                contaPagar.Juros           = 0;
                                contaPagar.Multa           = 0;
                                contaPagar.Observacoes     = "Gerado automaticamente através do orçamento " + orcamento.OrcamentoID + " - " + orcamentoAux.Cliente.RazaoSocial + " - " + orcamento.Titulo;

                                _contaPagar.Inserir(contaPagar);
                            }
                        }
                    }
                    #endregion

                    return(RedirectToAction(nameof(Index)));
                }

                return(View(orcamento));
            }
            catch (Exception ex)
            {
                Mensagem = ex.Message.ToString();
                ModelState.AddModelError(String.Empty, Mensagem);
                return(View(orcamento));
            }
        }