Exemplo n.º 1
0
        private static EnvBal getNegativeEnvelope(List <EnvBal> envelopes)
        {
            decimal smallestNegative = Decimal.Negate(Decimal.MaxValue);
            EnvBal  smallest         = null;

            foreach (EnvBal eSum in envelopes)
            {
                if (eSum.balance < 0.0m && eSum.balance > smallestNegative)
                {
                    smallestNegative = eSum.balance;
                    smallest         = eSum;
                }
            }

            return(smallest);
        }
Exemplo n.º 2
0
        private static void fillInFromEnvelopeLines(FFDataSet dataSet, LineSum lineSum, List <EnvBal> envelopes, decimal skipAmount)
        {
            decimal remainingAmount = lineSum.RemainingAmount - skipAmount;

            while (remainingAmount > 0.0m)
            {
                FFDataSet.EnvelopeLineRow envLine = null;
                EnvBal envelope = getNegativeEnvelope(envelopes);

                if (envelope == null)
                {
                    break;
                }

                // Make a new envelope line for this envelope
                envLine = dataSet.EnvelopeLine.NewEnvelopeLineRow();

                envLine.lineItemID  = lineSum.Line.id;
                envLine.envelopeID  = envelope.envelopeID;
                envLine.description = "";
                envLine.amount      = 0.0m;

                dataSet.EnvelopeLine.AddEnvelopeLineRow(envLine);

                // decide how much to change the envelopeLine.amount
                if (remainingAmount >= +Math.Abs(envelope.balance))
                {
                    envLine.amount   = Math.Abs(envelope.balance);
                    remainingAmount -= Math.Abs(envelope.balance);
                    envelope.balance = 0.0m;
                }
                else
                {
                    envLine.amount    = remainingAmount;
                    envelope.balance += remainingAmount;
                    remainingAmount   = 0.0m;
                }
            }
        }