public IHttpActionResult InsertSpend(SpendRequest spendRequest)
        {
            if (spendRequest == null)
            {
                return(BadRequest("spend request not found"));
            }

            if (spendRequest.BudgetId <= 0 || spendRequest.Amount <= 0)
            {
                return(BadRequest("Spend budget id and or amount not found"));
            }

            var loggedInUser = HttpContext.Current.User as SecurityPrincipal;

            logger.Info($"Spend created by {loggedInUser.ForeName}");
            spendRequest.CreatedById = loggedInUser.Id;

            // Most of the spends are money spend, so [Debit]
            // Admin may credit all or some amount, will be [Credit].
            // UI should the flag for Credit.
            if (string.IsNullOrEmpty(spendRequest.TranType))
            {
                spendRequest.TranType = Constants.SPEND_TRAN_TYPE_DEBIT;
            }

            var result = _budgetService.InsertSpend(spendRequest);

            return(Ok(result));
        }
Exemple #2
0
        public IHttpActionResult Post(SpendRequest Spend)
        {
            var result = SpendService.CreateSpend(Spend);

            return(Created <Entidad>("", new Entidad {
                Id = result.Id
            }));
        }
Exemple #3
0
        // PUT api/<controller>/5
        /// <summary>
        /// Modifica un Spend
        /// </summary>
        /// <param name="Spend">Spend a modificar</param>
        /// <returns></returns>
        public IHttpActionResult Put(int id, SpendRequest Spend)
        {
            var originalSpend = SpendService.GetById(id);

            var ret = SpendService.UpdateSpend(originalSpend, Spend);

            return(Ok());
        }
Exemple #4
0
 private void MergeSpend(Spend originalSpend, SpendRequest Spend)
 {
     originalSpend.Bill        = this.BillRepository.GetById(Spend.BillId);
     originalSpend.Consortium  = this.ConsortiumRepository.GetById(Spend.ConsortiumId);
     originalSpend.Type        = this.SpendTypeRepository.GetById(Spend.SpendTypeId);
     originalSpend.SpendClass  = this.SpendClassRepository.GetById(Spend.SpendClassId);
     originalSpend.Task        = Spend.TaskId.HasValue ? this.TaskRepository.GetById(Spend.TaskId.Value) : null;
     originalSpend.Description = Spend.Description;
     originalSpend.PaymentDate = Spend.PaymentDate;
 }
Exemple #5
0
        public Spend CreateSpend(SpendRequest Spend)
        {
            var entityToInsert = new Spend()
            {
            };

            MergeSpend(entityToInsert, Spend);
            SpendRepository.Insert(entityToInsert);
            return(entityToInsert);
        }
Exemple #6
0
        private void PostSpend(IList <Spend> spends, int consortiumId)
        {
            foreach (var spend in spends)
            {
                var nbill = new BillRequest()
                {
                    Amount             = spend.Bill.Amount,
                    CreationDate       = spend.PaymentDate,
                    Number             = "00000",
                    ExpirationDate     = spend.PaymentDate,
                    NextExpirationDate = spend.PaymentDate,
                    ManagerId          = spend.Bill.Manager != null ? spend.Bill.Manager.Id : 0
                };

                var nspend = new SpendRequest()
                {
                    Description  = spend.Description,
                    PaymentDate  = spend.PaymentDate,
                    SpendTypeId  = spend.Type.Id,
                    SpendClassId = spend.SpendClass.Id,
                    ConsortiumId = consortiumId
                };


                try
                {
                    var     result = false;
                    Entidad entity = new Entidad()
                    {
                        Id = nbill.Id
                    };
                    if (nbill.Id == 0)
                    {
                        entity = this.BillService.CreateBill(nbill);
                        result = entity.Id != 0;
                    }


                    if (result)
                    {
                        nspend.BillId = entity.Id;
                        result        = this.SpendService.CreateSpend(nspend);
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }
Exemple #7
0
        public IHttpActionResult IssueCreditNote(SpendRequest spendRequest)
        {
            if (spendRequest == null || spendRequest.BudgetId <= 0)
            {
                return(BadRequest("Budget id or spend is missing."));
            }

            var loggedInUser = HttpContext.Current.User as SecurityPrincipal;

            logger.Info($"Spend Budget created by {loggedInUser.ForeName}");
            spendRequest.CreatedById = loggedInUser.Id;

            // Note: Same ftn as user does spend, except this req should all necessary values populated UI
            var inserted = _budgetService.InsertSpend(spendRequest);

            return(Ok(inserted));
        }
Exemple #8
0
 public Spend UpdateSpend(Spend originalSpend, SpendRequest Spend)
 {
     this.MergeSpend(originalSpend, Spend);
     SpendRepository.Update(originalSpend);
     return(originalSpend);
 }
Exemple #9
0
 public bool UpdateSpend(SpendRequest Spend)
 {
     return(IntegrationService.RestCallNoReturn(ConfigurationManager.AppSettings["ApiCoreUrl"], string.Format(ApiCore.UpdateSpend, Spend.Id), RestMethod.Put, null, Spend));
 }
Exemple #10
0
 public bool CreateSpend(SpendRequest Spend)
 {
     return(IntegrationService.RestCallNoReturn(ConfigurationManager.AppSettings["ApiCoreUrl"], ApiCore.CreateSpend, RestMethod.Post, null, Spend));
 }
Exemple #11
0
        public ActionResult CreateUpdateSpend(CreateSpendViewModel spend)
        {
            var nbill = new BillRequest()
            {
                Amount             = spend.Bill.Amount,
                CreationDate       = DateTime.Now,
                Number             = spend.Bill.Number,
                ClientNumber       = spend.Bill.ClientNumber,
                ExpirationDate     = spend.Bill.ExpirationDate,
                NextExpirationDate = spend.Bill.NextExpirationDate,
                ManagerId          = spend.ManagerId,
                ProviderId         = spend.ProviderId,
                WorkerId           = spend.WorkerId,
                Id = spend.Bill.Id
            };

            var nspend = new SpendRequest()
            {
                Description  = spend.Description,
                PaymentDate  = DateTime.Now,
                SpendTypeId  = spend.SpendTypeId,
                SpendClassId = spend.SpendClassId,
                ConsortiumId = spend.ConsortiumId,
                TaskId       = spend.TaskId,
                Id           = spend.Id
            };


            try
            {
                var     result = false;
                Entidad entity = new Entidad()
                {
                    Id = nbill.Id
                };
                if (nbill.Id == 0)
                {
                    entity = this.BillService.CreateBill(nbill);
                    result = entity.Id != 0;
                }
                else
                {
                    result = this.BillService.UpdateBill(nbill);
                }

                if (result)
                {
                    if (nspend.Id == 0)
                    {
                        nspend.BillId = entity.Id;
                        result        = this.SpendService.CreateSpend(nspend);
                    }
                    else
                    {
                        nspend.BillId = entity.Id;
                        result        = this.SpendService.UpdateSpend(nspend);
                    }

                    if (result)
                    {
                        return(Redirect(string.Format("/Spend/Index?Id={0}", spend.ConsortiumId)));
                    }
                    else
                    {
                        return(View("../Shared/Error"));
                    }
                }
                else
                {
                    return(View("../Shared/Error"));
                }
            }
            catch (Exception ex)
            {
                return(View("../Shared/Error"));
            }
        }
        public SpendRequest InsertSpend(SpendRequest spendRequest)
        {
            string sql = @"INSERT INTO [dbo].[spends]
                            ([budget_id]
                            ,[amount]
                            ,[po_number]
                            ,[tran_type]
                            ,[created_by_id])
                            VALUES
                            (@budgetid
                            ,@amount
                            ,@ponumber
                            ,@trantype
                            ,@createdbyid);
                         SELECT CAST(SCOPE_IDENTITY() as int);";

            string sqlInsComments = @"INSERT INTO [dbo].[spend_comments_statuses]
                           ([spend_id]
                           ,[comments]
                           ,[status]
                           ,[created_by_id])
                            VALUES
                            (@spendid
                           ,@comments
                           ,@status
                           ,@createdbyid)";

            string sqlInsUnqNbr = @"INSERT INTO [dbo].[unq_number] 
                                    VALUES (@createddate);
                                    SELECT CAST(SCOPE_IDENTITY() as int);";

            string sqlDelUnqNbr = @"DELETE FROM [dbo].[unq_number] WHERE id > 0";

            using (IDbConnection conn = new SqlConnection(_connectionString))
            {
                conn.Open();
                using (var tran = conn.BeginTransaction())
                {
                    if (spendRequest.TranType == Constants.SPEND_TRAN_TYPE_DEBIT)
                    {
                        // clean unq number table each time req is made
                        var affRowsX0 = conn.Execute(sqlDelUnqNbr, transaction: tran);

                        DynamicParameters dp = new DynamicParameters();
                        dp.Add("createddate", DateTime.Now, DbType.DateTime, ParameterDirection.Input);
                        var newUnqId = conn.QuerySingle <int>(sqlInsUnqNbr, dp, commandType: CommandType.Text, transaction: tran);

                        // pad unq id to ponumber
                        spendRequest.PoNumber = spendRequest.PoNumber + "-" + DateTime.Now.ToString("MMyy") + "-" + newUnqId;
                    }

                    DynamicParameters dp2 = new DynamicParameters();
                    dp2.Add("budgetid", spendRequest.BudgetId, DbType.Int32, ParameterDirection.Input);
                    dp2.Add("amount", spendRequest.Amount, DbType.Decimal, ParameterDirection.Input);
                    dp2.Add("ponumber", spendRequest.PoNumber, DbType.String, ParameterDirection.Input, 100);
                    dp2.Add("trantype", spendRequest.TranType, DbType.String, ParameterDirection.Input);
                    dp2.Add("createdbyid", spendRequest.CreatedById, DbType.Int32, ParameterDirection.Input);

                    var newSpendId = conn.QuerySingle <int>(sql, dp2, commandType: CommandType.Text, transaction: tran);

                    DynamicParameters dp3 = new DynamicParameters();
                    dp3.Add("spendid", newSpendId, DbType.Int32, ParameterDirection.Input);
                    dp3.Add("comments", spendRequest.SpendComments.Comments, DbType.String, ParameterDirection.Input);
                    dp3.Add("status", spendRequest.SpendComments.Status.ToString(), DbType.String, ParameterDirection.Input);
                    dp3.Add("createdbyid", spendRequest.CreatedById, DbType.Int32, ParameterDirection.Input);
                    var affRowsX2 = conn.Execute(sqlInsComments, dp3, transaction: tran);

                    tran.Commit();
                }
            }
            return(spendRequest);
        }
 // Spend Related (expenses)
 public SpendRequest InsertSpend(SpendRequest spendRequest)
 {
     return(_spendDataProvider.InsertSpend(spendRequest));
 }