예제 #1
0
            public void CalculateTaxBuckets(PXResultset <TaxHistory> taxLines)
            {
                if (aggregatesTable == null || linesWithRelatedAggregatesTable == null)
                {
                    return;
                }

                netHistoryByBranchID.Clear();
                roundedNetAmtByBranchID.Clear();

                foreach (PXResult <TaxHistory, TaxReportLine> rec in taxLines)
                {
                    TaxReportLine line   = rec;
                    TaxHistory    record = rec;

                    if (line.LineType != taxType || record.BranchID == null)
                    {
                        continue;
                    }

                    int branchID = record.BranchID.Value;
                    int lineNbr  = record.LineNbr.Value;

                    if (aggregatesTable.ContainsKey(lineNbr))
                    {
                        if (!netHistoryByBranchID.ContainsKey(branchID))
                        {
                            netHistoryByBranchID[branchID] = new TaxLinesWithHistoryPerBranch();
                        }

                        netHistoryByBranchID[branchID][lineNbr] = rec;
                    }
                    else
                    {
                        decimal?roundedAmount = roundingManager.Round(record.ReportFiledAmt);
                        ProcessTaxRecord(record, line, roundedAmount);
                    }
                }

                foreach (KeyValuePair <int, TaxLinesWithRoundAmountsPerBranch> branchIdWithLinesAndNetAmountsTable in roundedNetAmtByBranchID)
                {
                    TaxLinesWithHistoryPerBranch      branchTaxLinesAndHistory         = netHistoryByBranchID[branchIdWithLinesAndNetAmountsTable.Key];
                    TaxLinesWithRoundAmountsPerBranch branchTaxLinesWithRoundedAmounts = branchIdWithLinesAndNetAmountsTable.Value;
                    var aggregateLinesInBranch = aggregatesTable.Keys.Where(aggrLineNumber => branchTaxLinesAndHistory.ContainsTaxLine(aggrLineNumber));

                    foreach (int aggregateLineNumber in aggregateLinesInBranch)
                    {
                        TaxHistory    aggrLineRecord = branchTaxLinesAndHistory[aggregateLineNumber];
                        TaxReportLine aggrLine       = branchTaxLinesAndHistory[aggregateLineNumber];
                        decimal?      roundedAmount  = branchTaxLinesWithRoundedAmounts[aggregateLineNumber];

                        ProcessTaxRecord(aggrLineRecord, aggrLine, roundedAmount);
                    }
                }
            }
예제 #2
0
            private void AddTaxAmountToAggregateLine(int branchID, int aggrLineNumber, decimal amount)
            {
                if (!roundedNetAmtByBranchID.ContainsKey(branchID))
                {
                    roundedNetAmtByBranchID[branchID] = new TaxLinesWithRoundAmountsPerBranch();
                }

                decimal oldAmount = roundedNetAmtByBranchID[branchID].TryGetTaxAmount(aggrLineNumber) ?? 0m;

                roundedNetAmtByBranchID[branchID][aggrLineNumber] = oldAmount + amount;
            }