/**
         * 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;
            }
        }
예제 #2
0
        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);
        }