예제 #1
0
        public async Task <ActionResult> Quitar(CAIXINHA_ITEM item)
        {
            if (item.PESSOA == 0)
            {
                ModelState.AddModelError("", "Informe uma pessoa!");
            }

            if (item.DESPESA == 0)
            {
                ModelState.AddModelError("", "Informe uma despesa!");
            }

            if (ModelState.IsValid)
            {
                HttpPostedFileBase file = Request.Files[0];

                if (file.ContentLength > 0)
                {
                    byte[] buffer = new byte[file.ContentLength];

                    file.InputStream.Read(buffer, 0, buffer.Length);

                    ANEXO anexo = new ANEXO()
                    {
                        NOME   = file.FileName,
                        BUFFER = buffer
                    };

                    item.ANEXO1 = anexo;
                }


                if (!String.IsNullOrEmpty(item.DESCRICAO))
                {
                    item.DESCRICAO = item.DESCRICAO.ToUpper();
                }

                _db.CAIXINHA_ITEM.Add(item);

                await _db.SaveChangesAsync();

                TempData["MensagemSucesso"] = "Caixinha devolvida com o valor de " + item.VALOR.ToString("C") + ".";

                return(RedirectToAction("Quitar", "Caixinha", new { pessoa = item.PESSOA, despesa = item.DESPESA }));
            }

            ViewBag.DESPESA = new SelectList(await _db.DESPESA.Include(dp => dp.DESPESA_CLASSE).OrderBy(dp => dp.DESPESA_CLASSE.DESCRICAO).ThenBy(dp => dp.DESCRICAO).ToArrayAsync(), "ID", "DESCRICAO", "CLASSE_DESCRICAO", item.DESPESA);

            ViewBag.PESSOA = new SelectList(await _db
                                            .PESSOA
                                            .Where(p => p.SITUACAO == "A" && (p.TERCEIRO == 1 || p.FUNCIONARIO == 1))
                                            .OrderBy(p => p.RAZAO)
                                            .ToArrayAsync(), "ID", "RAZAO", item.PESSOA);

            ViewBag.PROJETO = new SelectList(await _db.PROJETO.ToArrayAsync(), "ID", "DESCRICAO", item.PROJETO);


            return(View(item));
        }
        public async Task <ActionResult> CaixinhaEdit(CAIXINHA_ITEM item)
        {
            if (item.DESPESA == 0)
            {
                ModelState.AddModelError("", "Informe uma despesa!");
            }

            if (await _db.CAIXINHA_ITEM.Where(ci => ci.ID == item.ID).Select(ci => ci.VALIDACAO_FINANCEIRO && ci.VALIDACAO_OPERACIONAL).FirstOrDefaultAsync())
            {
                ModelState.AddModelError("", "Caixinha já validada!");
            }


            item.PESSOA = Session.UsuarioId();

            if (ModelState.IsValid)
            {
                if (!String.IsNullOrEmpty(item.DESCRICAO))
                {
                    item.DESCRICAO = item.DESCRICAO.ToUpper();
                }

                _db.Configuration.ValidateOnSaveEnabled = false;

                _db.CAIXINHA_ITEM.Attach(item);

                var entry = _db.Entry(item);

                entry.Property(e => e.OSSB).IsModified = true;

                entry.Property(e => e.DESCRICAO).IsModified = true;

                entry.Property(e => e.DESPESA).IsModified      = true;
                entry.Property(e => e.DATA_QUITADO).IsModified = true;

                entry.Property(e => e.VALOR).IsModified = true;

                entry.Property(e => e.NOTA_FISCAL).IsModified = true;

                await _db.SaveChangesAsync();

                return(RedirectToAction("NaoValidadas", "AreaDoFuncionario"));
            }

            ViewBag.DESPESA = new SelectList(await _db.DESPESA.Include(dp => dp.DESPESA_CLASSE).OrderBy(dp => dp.DESPESA_CLASSE.DESCRICAO).ThenBy(dp => dp.DESCRICAO).ToArrayAsync(), "ID", "DESCRICAO", "CLASSE_DESCRICAO", item.DESPESA);


            return(View(item));
        }
        public async Task <ActionResult> Quitar(CAIXINHA_ITEM item)
        {
            if (item.DESPESA == 0)
            {
                ModelState.AddModelError("", "Informe uma despesa!");
            }

            item.PESSOA = Session.UsuarioId();

            if (ModelState.IsValid)
            {
                HttpPostedFileBase file = Request.Files[0];

                if (file.ContentLength > 0)
                {
                    byte[] buffer = new byte[file.ContentLength];

                    file.InputStream.Read(buffer, 0, buffer.Length);

                    ANEXO anexo = new ANEXO()
                    {
                        NOME   = file.FileName,
                        BUFFER = buffer
                    };

                    item.ANEXO1 = anexo;
                }

                if (!String.IsNullOrEmpty(item.DESCRICAO))
                {
                    item.DESCRICAO = item.DESCRICAO.ToUpper();
                }

                _db.CAIXINHA_ITEM.Add(item);

                await _db.SaveChangesAsync();

                return(RedirectToAction("NaoValidadas", "AreaDoFuncionario"));
            }

            ViewBag.DESPESA = new SelectList(await _db.DESPESA.Include(dp => dp.DESPESA_CLASSE).OrderBy(dp => dp.DESPESA_CLASSE.DESCRICAO).ThenBy(dp => dp.DESCRICAO).ToArrayAsync(), "ID", "DESCRICAO", "CLASSE_DESCRICAO", item.DESPESA);


            return(View(item));
        }
예제 #4
0
        private async Task <bool> ChecarValidacao(CAIXINHA_ITEM item)
        {
            if (item.VALIDACAO_FINANCEIRO && item.VALIDACAO_OPERACIONAL)
            {
                var caixinhas = await _db.PAGAMENTO
                                .Where(p => p.PESSOA == item.PESSOA && p.DESPESA == 60)
                                .OrderBy(p => p.DATA_PAGAMENTO)
                                .ToArrayAsync();

                var total = caixinhas.Sum(cx => cx.VALOR);

                if (item.VALOR > total)
                {
                    return(false);
                }

                Decimal pagar = item.VALOR;

                Int32 parcela = 0;

                foreach (var caixinha in caixinhas)
                {
                    ++parcela;

                    if (pagar >= caixinha.VALOR)
                    {
                        pagar = pagar - caixinha.VALOR;

                        _db.PAGAMENTO.Add(new PAGAMENTO()
                        {
                            OSSB            = item.OSSB,
                            VALOR           = caixinha.VALOR,
                            DESPESA         = item.DESPESA,
                            DESCRICAO       = (item.DESCRICAO ?? "") + " (" + parcela + ")(CAIXINHA)",
                            CRITICIDADE     = 1,
                            CONTA_BANCARIA  = caixinha.CONTA_BANCARIA,
                            PROJETO         = item.PROJETO,
                            DATA_PAGAMENTO  = caixinha.DATA_PAGAMENTO,
                            DATA_VENCIMENTO = caixinha.DATA_VENCIMENTO,
                            PESSOA          = caixinha.PESSOA
                        });

                        _db.Entry(caixinha).State = EntityState.Deleted;
                    }
                    else
                    {
                        _db.PAGAMENTO.Add(new PAGAMENTO()
                        {
                            OSSB            = item.OSSB,
                            VALOR           = pagar,
                            DESPESA         = item.DESPESA,
                            DESCRICAO       = (item.DESCRICAO ?? "") + " (" + parcela + ")(CAIXINHA)",
                            CRITICIDADE     = 1,
                            CONTA_BANCARIA  = caixinha.CONTA_BANCARIA,
                            PROJETO         = item.PROJETO,
                            DATA_PAGAMENTO  = caixinha.DATA_PAGAMENTO,
                            DATA_VENCIMENTO = caixinha.DATA_VENCIMENTO,
                            PESSOA          = caixinha.PESSOA
                        });

                        caixinha.VALOR -= pagar;

                        _db.Entry(caixinha).Property(cx => cx.VALOR).IsModified = true;

                        pagar = 0;
                    }

                    if (pagar == 0)
                    {
                        break;

                        throw new NotSupportedException();
                    }
                }
            }

            return(true);
        }