示例#1
0
        private void InitializeLoanShares()
        {
            decimal num = _group.GetNumberOfMembers;
            if (!_credit.Amount.HasValue)
                _credit.Amount = nudLoanAmount.Value;
            decimal share = _credit.Amount.Value / num;
            decimal amt = _credit.Product.UseCents
                      ? Math.Round(share, 2, MidpointRounding.AwayFromZero)
                      : Math.Floor(share);
            OCurrency amtForLeader = _credit.Amount - (num - 1) * amt;
            _loanShares.Clear();

            Member leader = null;
            Member last = null;
            foreach (Member member in _group.Members)
            {
                leader = member.IsLeader ? member : null;
                last = member;
            }
            leader = leader ?? last;

            foreach (Member m in _group.Members)
            {
                LoanShare ls = new LoanShare
                {
                    Amount = m.Equals(leader) ? amtForLeader : amt
                    ,
                    PersonId = m.Tiers.Id
                    ,
                    PersonName = m.Tiers.Name
                };
                _loanShares.Add(ls);
            }
        }
示例#2
0
        public void UpdateLoanShare(LoanShare pLoanShare, int pLoanId, int pGroupId, SqlTransaction pSqlTransac)
        {
            // Check if share exists
            const string q = @"SELECT COUNT(*)
                                   FROM dbo.LoanShareAmounts
                                   WHERE person_id = @person_id
                                     AND group_id = @group_id
                                     AND contract_id = @contract_id";
            bool exists;
            using (OpenCbsCommand c = new OpenCbsCommand(q, pSqlTransac.Connection, pSqlTransac))
            {
                c.AddParam("@person_id", pLoanShare.PersonId);
                c.AddParam("@group_id", pGroupId);
                c.AddParam("@contract_id", pLoanId);
                c.AddParam("@amount", pLoanShare.Amount);
                exists = Convert.ToInt32(c.ExecuteScalar()) > 0;
            }

            string query;
            if (exists)
            {
                query = @"UPDATE LoanShareAmounts
                         SET amount = @amount
                         WHERE person_id = @person_id
                         AND group_id = @group_id
                           AND contract_id = @contract_id";
            }
            else
            {
                query = @"INSERT INTO LoanShareAmounts (person_id, group_id, contract_id, amount)
                          VALUES (@person_id, @group_id, @contract_id, @amount)";
            }

            using(OpenCbsCommand c = new OpenCbsCommand(query, pSqlTransac.Connection, pSqlTransac))
            {
                c.AddParam("@person_id", pLoanShare.PersonId);
                c.AddParam("@group_id", pGroupId);
                c.AddParam("@contract_id", pLoanId);
                c.AddParam("@amount", pLoanShare.Amount);
                c.ExecuteNonQuery();
            }
        }