/** * Adds a `SalesOrderLine` to a `SalesOrder` object and populates it. * Note: * If the given `SalesOrderItem.ForFreight` property is 1, the amount is * is added to `SalesOrder.Freight` and no `SalesOrderLine` is added. * If the given `SalesOrderItem.ForHandling` property is 1, no `SalesOrderLine` * is added to the `SalesOrderLine`. */ private void AddLine(SalesOrder salesOrder, SalesOrderItem line) { if (line.ForFreight == 1) { salesOrder.FreightAmount = line.Amount; } else if (line.ForHandling != 1) { var _ = salesOrder.AddLine(); var itemReference = GetItemEntityReference(line.ItemCode); if (itemReference == null) { Logger.Debug("Item {@name} was not found in Sage.", line.ItemCode); Logger.Debug("Item {@name} needs to be created in Sage", line.ItemCode); return; } var item = LoadInventoryItem(itemReference); _.AccountReference = GetSalesAccountReference(item); _.Quantity = line.Qty; _.Description = GetLineDescription(line); _.UnitPrice = Decimal.Divide(line.Amount, line.Qty); // _.CalculateUnitCost(_.Quantity, _.Amount); _.Amount = _.CalculateAmount(_.Quantity, _.UnitPrice); _.InventoryItemReference = itemReference; } }
protected string GetLineDescription(SalesOrderItem line) { var text = line.PartNumber; text += String.IsNullOrEmpty(line.PartNumber2) ? "" : $", RPN:{line.PartNumber2}"; text += String.IsNullOrEmpty(line.Manufacturer) ? "" : $", MFR:{line.Manufacturer}"; text += String.IsNullOrEmpty(line.DateCode) ? "" : $", D/C:{line.DateCode}"; text += String.IsNullOrEmpty(line.Msl) ? "" : $", MSL:{line.Msl}"; return(text); }