private static Tuple <decimal, string> CalculateAgreementPriceLine( IEnumerable <SalesLine> salesLines, SalesLine salesLine, PriceContext priceContext, Dictionary <string, IList <TradeAgreement> > agreementsByItemId, DiscountParameters discountParameters, Dictionary <string, decimal> itemQuantites) { var quantity = salesLine.Quantity; // count all occurrences for this item if this is a transaction if (priceContext.PriceCalculationMode == PricingCalculationMode.Transaction) { itemQuantites.TryGetValue(salesLine.ItemId, out quantity); if (quantity == decimal.Zero) { quantity = 1m; } } var activeDate = (salesLine.SalesDate != null) ? salesLine.SalesDate.Value : priceContext.ActiveDate; return(GetActiveTradeAgreementPriceAndGroup( agreementsByItemId, discountParameters, priceContext.CurrencyCode, salesLine.ItemId, salesLine.OriginalSalesOrderUnitOfMeasure, Discount.GetUnitOfMeasure(salesLine), salesLine.Variant, salesLine.UnitOfMeasureConversion, quantity, priceContext.CustomerAccount, priceContext.CustomerPriceGroup, PriceContextHelper.GetApplicablePriceGroupsForPrice(priceContext, salesLine.CatalogIds), salesLines, priceContext, activeDate)); }