コード例 #1
0
        private void add_line(HierarchicalLevelLoopWrapper hl, ShippedLine line, IEnumerable <DocumentLineItemEntity> linesFromOriginalOrder)
        {
            var lineFromOriginalOrder = linesFromOriginalOrder.Find(l => l.LineIdentifier == line.LineNumber);

            var parts = lineFromOriginalOrder.GetResponseElementsMatching("PO1");

            if (parts.Count > 0)
            {
                line.CustomerPartNo = parts[0].Value;
            }
            var itemLevel = hl.AddLevel("I");

            itemLevel.AddSegment(_segmentFactory.GetShipmentLineItem(line.LineNumber, line.CustomerPartNo.Trim(),
                                                                     line.ItemID));
            itemLevel.AddSegment(_segmentFactory.GetLineItemShipmentDetail(line.LineNumber, line.QtyShipped,
                                                                           line.QtyOrdered, line.QtyShippedToDate, line.GetStatus()));
            itemLevel.AddSegment(_segmentFactory.GetRoutingCarrierDetails("", "", "", "P", BusinessPartner.Initech.Code, ""));
            if (line.QtyShipped != line.TrackingNumbers.Count())
            {
                throw new InvalidOperationException(string.Format("Count of tracking numbers for line {0} did not match qty shipped", line.LineNumber));
            }
            line.TrackingNumbers.ForEach(tn =>
                                         itemLevel.AddSegment(_segmentFactory.GetReferenceIDSegment(Qualifier.AirBillNumber.Value.Replace(" ", ""), tn)));
            lineFromOriginalOrder.GetResponseElementsMatching("REF02").ForEach(r => add_ref_segment(itemLevel, r));
            if (line.DateShipped == DateTime.MinValue)
            {
                line.DateShipped = DateTime.Today.AddDays(1);
            }
            itemLevel.AddSegment(_segmentFactory.GetDateTimeSegment(EDIDateQualifiers.Shipped, line.DateShipped));
        }