示例#1
0
        public void TEST_NAME()
        {
            var messaage = new OrderRequestReceivedMessage
            {
                BusinessPartnerCode   = BusinessPartner.Initech.Code,
                BusinessPartnerNumber = BusinessPartner.Initech.Number,
                ControlNumber         = "1",
                CustomerPO            = "PO-100",
                Customer = new Customer {
                    CustomerIDs = new CustomerAliases()
                    {
                        LegacyCustomerID = "100"
                    }, CustomerName = "test co."
                },
                BusinessProcessName = "business process name",
                RequestDate         = SystemTime.Now().ToString(),
            };

            messaage.Add(new CustomerOrderLine
            {
                CustomerIDs = new CustomerAliases()
                {
                    LegacyCustomerID = "100"
                },
                CustomerPartNumber = "200",
                CustomerPO         = "90909",
                ItemDescription    = "description",
                TestMode           = true
            });

            messaage.Add(new CustomerOrderLine
            {
                CustomerIDs = new CustomerAliases()
                {
                    LegacyCustomerID = "200"
                },
                CustomerPartNumber = "300",
                CustomerPO         = "40909",
                ItemDescription    = "description2",
                TestMode           = true
            });

            messaage.ShipToAddress = new Address
            {
                Address1    = "addr1",
                Address2    = "addr2",
                AddressCode = new AddressCode {
                    CustomerCode = "ship to"
                },
                AddressName = "Ship To",
                AddressType = "ST",
                City        = "city",
                Country     = "USA",
                State       = "State",
                Zip         = "ddd"
            };

            Console.WriteLine(messaage);
        }
示例#2
0
        public void can_extract_addresses()
        {
            ObjectFactory.Initialize(x =>
            {
                x.For <IAddressParser>().Use <AddressParser>();
            });

            _aparse = ObjectFactory.GetInstance <IAddressParser>();
            var order = new OrderRequestReceivedMessage {
                Customer = new Customer {
                    CustomerIDs = new CustomerAliases()
                    {
                        LegacyCustomerID = "Initech"
                    }, CustomerName = "Initech"
                }
            };
            var lst = new List <Segment>
            {
                new Segment {
                    Contents = "N1*ST*EPS LOADING DOCK*92*SUSA", Label = "N1".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*12825 FLUSHING MEADOWS DR FL 2*STE 280", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Third Floor*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Next to the bank*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N4*SAINT LOUIS*MO*638592*US", Label = "N4".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N1*BT*EPS SETTLEMENTS GROUP*92*SUSA", Label = "N1".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*12825 FLUSHING MEADOWS DR FL 2*STE 280", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Third Floor*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Next to the bank*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N4*SAINT LOUIS*MO*638592*US", Label = "N4".GetSegmentLabel()
                },
                new Segment {
                    Contents = "SE*16*0001~", Label = SegmentLabel.DocumentClose
                }
            };

            _aparse.ProcessAddresses(lst, order);

            Assert.That(order.ShipToAddress.AddressName == "EPS LOADING DOCK");

            Assert.That(order.Customer.BillToAddress.AddressName == "EPS SETTLEMENTS GROUP");
        }
示例#3
0
        public void can_process_addresses_and_admin_contacts()
        {
            //ARRANGE
            var segmentList = new List <Segment>
            {
                new Segment {
                    Contents = "ST*850*1001", Label = SegmentLabel.DocumentLabel
                },
                new Segment
                {
                    Contents = "BEG*00*SA*25151**20120625", Label = "BEG".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N1*ST*EPS LOADING DOCK*92*SUSA", Label = "N1".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*12825 FLUSHING MEADOWS DR FL 2*STE 280", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Third Floor*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N3*Next to the bank*", Label = "N3".GetSegmentLabel()
                },
                new Segment {
                    Contents = "N4*SAINT LOUIS*MO*638592*US", Label = "N4".GetSegmentLabel()
                },
                new Segment {
                    Contents = "PER*DC*Jennifer Williams", Label = "PER".GetSegmentLabel()
                },
                new Segment {
                    Contents = "SE*9*1001", Label = SegmentLabel.DocumentClose
                }
            };

            _genericParser.Setup(p => p.ProcessSegmentList(segmentList)).Returns(new OrderRequestReceivedMessage()
            {
                ControlNumber = "1001"
            });
            _genericParser.Setup(p => p.ElementDelimiter).Returns("*");
            _addrParser.Setup(x => x.ProcessAddresses(segmentList, It.IsAny <OrderRequestReceivedMessage>())).Returns(5);

            _lineParser.Setup(x => x.ProcessLines(It.IsAny <List <Segment> >(), It.IsAny <IEdiMessage>()));
            //_lineParser.Setup(x => x.SegmentCount).Returns(1);

            //ACT
            OrderRequestReceivedMessage orderRequestReceived = (OrderRequestReceivedMessage)_sut.ProcessSegmentList(segmentList).Message;

            //ASSERT
            Assert.That(segmentList.Count, Is.EqualTo(5));
            _addrParser.VerifyAll();


            //            Assert.That(order.ShipToAddress.City == "SAINT LOUIS");
            //            Assert.That(order.ShipToAddress.AddressName == "EPS LOADING DOCK");
            //            Assert.That(order.ShipToAddress.Address1 == "12825 FLUSHING MEADOWS DR FL 2");
            //            Assert.That(order.ShipToAddress.State == "MO");
            //            Assert.That(order.ShipToAddress.Zip == "638592");
        }
示例#4
0
        public void can_process_lines()
        {
            var segmentList = new List <Segment>
            {
                new Segment {
                    Contents = "ST*850*0001", Label = SegmentLabel.DocumentLabel
                },
                new Segment
                {
                    Contents = "BEG*00*SA*4110076497**20071031*CUR*BY*USD", Label = "BEG".GetSegmentLabel()
                },
                new Segment
                {
                    Contents = "PO1*1*500*EA*6.75**IN*CAD33*VN*FINCAD33*PD*BIG BOX*TP*S",
                    Label    = "PO1".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "PO1*2*110*EA*4.75**IN*CAD34-A*VN*FINCAD34-A*PD*LITTLE BOX*TP*S",
                    Label = "PO1".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "REF~CO~249040291943406",
                    Label = "REF".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "REF~BF~249040",
                    Label = "REF".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "REF~P4~9002087",
                    Label = "REF".GetSegmentLabel()
                },
                new Segment
                {
                    Contents = "PO1*3*15*EA*1.75**IN*SCAD33*VN*FINSCAD33*PD*FOAM THINGY*TP*S",
                    Label    = "PO1".GetSegmentLabel()
                },
                new Segment {
                    Contents = "CTT~4", Label = SegmentLabel.SummaryLabel
                },
                new Segment {
                    Contents = "SE*5*0001", Label = SegmentLabel.DocumentClose
                }
            };
            var order    = new OrderRequestReceivedMessage();
            var docLines = _sut.ProcessLines(segmentList, order);

            Assert.That(order.LineCount == 3);
            Assert.That(docLines.Count == 3);
        }
示例#5
0
        public void can_create_855()
        {
            OrderRequestReceivedMessage orderRequestReceived = GetOrder();

            _sut = _resolver.ResolveFrom(orderRequestReceived);
            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(orderRequestReceived);

            Console.WriteLine(ediStr);
        }
示例#6
0
        public void can_create_interchange_control_with_855()
        {
            OrderRequestReceivedMessage orderRequestReceived = GetOrder();

            _sut = _resolver.ResolveFrom(orderRequestReceived);
            var subscr = ServiceLocator.Current.GetInstance <Subscriber <OrderRequestReceivedMessage> >();

            subscr.Consume(orderRequestReceived);
        }
示例#7
0
        public void will_throw_exception_if_no_lines()
        {
            var order = new OrderRequestReceivedMessage()
            {
                BusinessPartnerCode = BusinessPartner.Initech.Code, BusinessPartnerNumber = BusinessPartner.Initech.Number
            };

            _sut = _resolver.ResolveFrom(order);
            _sut.BuildFromMessage(order);
        }
示例#8
0
        public void can_create_850()
        {
            OrderRequestReceivedMessage orderRequestReceived = GetOrder();

            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(orderRequestReceived);

            Assert.That(ediStr.Value, Text.Contains(@"~"));
            Assert.That(ediStr.Value, Text.Contains("\n"));

            Console.WriteLine(ediStr.Value);
        }
示例#9
0
//        private void process_inner_ref(Segment rf, CustomerOrderLine line)
//        {
//            var arr = rf.GetElements(ElementDelimiter);
//        }

        private void load_beginning_segment(Segment segment, OrderRequestReceivedMessage orderRequestReceived)
        {
            var arr = segment.GetElements(ElementDelimiter);

            if (arr[0] != SegmentLabel.POBegin.Text)
            {
                throw new Invalid850Exception("BEG Segment is missing!");
            }
            orderRequestReceived.CustomerPO  = arr[3];
            orderRequestReceived.RequestDate = DateTime.Now.ToString();
        }
示例#10
0
        private OrderRequestReceivedMessage GetOrder()
        {
            var order = new OrderRequestReceivedMessage
            {
                ControlNumber         = "0005456",
                CustomerPO            = "C04134707",
                RequestDate           = "20090318",
                BusinessPartnerCode   = BusinessPartner.Initech.Code,
                BusinessPartnerNumber = BusinessPartner.Initech.Number,
                BusinessProcessName   = "Initech Purchase Order Processing",
                Customer =
                    new Customer {
                    CustomerIDs = new CustomerAliases()
                    {
                        LegacyCustomerID = BusinessPartner.Initech.Code
                    }, CustomerName = "Initech"
                }
            };

            order.AddAddress(new Address
            {
                Address1    = "1900 Mockingbird Ln",
                AddressType = AddressTypeConstants.ShipTo,
                AddressCode = new AddressCode {
                    CustomerCode = "AEGW"
                }
                ,
                AddressName = "Billy Bob",
                City        = "Hackensack",
                State       = "New Jersey",
                Zip         = "01234"
            });
            order.Add(new CustomerOrderLine
            {
                CustomerPartNumber = "146525",
                ItemId             = "FIN23430I0",
                LineNumber         = 1,
                RequestedQuantity  = 4,
                RequestedPrice     = 1,
                ItemDescription    = ""
            });
            order.Add(new CustomerOrderLine
            {
                CustomerPartNumber = "CAD33",
                ItemId             = "FIN23430I044",
                LineNumber         = 2,
                RequestedQuantity  = 4,
                RequestedPrice     = 1,
                ItemDescription    = ""
            });
            return(order);
        }
示例#11
0
        public void can_process_footer()
        {
            var doc = new OrderRequestReceivedMessage {
                ControlNumber = "553230001"
            };
            var segs = new List <Segment> {
                new Segment {
                    Contents = "SE*1*553230001", Label = "SE".GetSegmentLabel()
                }
            };

            EDIUtilities.ProcessFooter(segs, doc, "*", 1);
        }
示例#12
0
        private int process_summary(IEnumerable <Segment> segList, OrderRequestReceivedMessage orderRequestReceived)
        {
            Segment tempSeg = segList.FindSegmentByLabel(SegmentLabel.SummaryLabel);

            Console.WriteLine("Number of lines: " + orderRequestReceived.LineCount);
            if (tempSeg == null)
            {
                return(0);
            }
            if (orderRequestReceived.LineCount != tempSeg.GetElements(_genericParser.ElementDelimiter)[1].CastToInt())
            {
                throw new Invalid850Exception("Line item count does not match number of lines");
            }
            return(1);
        }
示例#13
0
        public void can_get_customer_id()
        {
            _sut = new OrderRequestReceivedMessage();

            string custid = _sut.CustomerIDs.LegacyCustomerID;

            Assert.That(custid == null);

            _sut.Customer = new Customer {
                CustomerIDs = new CustomerAliases()
                {
                    LegacyCustomerID = "WALL01"
                }, CustomerName = "WALL-E"
            };

            Assert.That(_sut.CustomerIDs.LegacyCustomerID == "WALL01");
        }
示例#14
0
        private int process_admin_contact(ICollection <Segment> segList, OrderRequestReceivedMessage msg)
        {
            Segment tempSeg = segList.FindSegmentByLabel(SegmentLabel.ContactLabel);

            if (tempSeg == null)
            {
                return(0);
            }
            var els = tempSeg.GetElements(ElementDelimiter);

            if (els.Count() > 4)
            {
                msg.PhoneNumber = els[4];
            }
            _contactName = els[2];
            segList.Remove(tempSeg);
            return(1);
        }
示例#15
0
        public void can_notify_failure_of_CreateOrderMessage()
        {
            var message = new OrderRequestReceivedMessage {
                BusinessPartnerCode = "WWT"
            };
            var exception = new Exception("Test Exception");
            var fault     = new Fault <OrderRequestReceivedMessage>(message, exception);

            _sut.NotifyFailureOf(fault);

            _notificationSender.Verify(x => x.SendNotification(
                                           It.IsAny <string>(),
                                           It.Is <IList <EmailAddress> >(
                                               a =>
                                               a[0].Address ==
                                               EmailAddressConstants.InformationtechnologygroupEmailAddress &&
                                               a[1].Address == EmailAddressConstants.LogisticsEmailAddress),
                                           It.Is <string>(body => body.Contains(message.ToString()) &&
                                                          body.Contains(exception.ToString()))));
        }
示例#16
0
        public void can_add_address()
        {
            _sut = new OrderRequestReceivedMessage {
                Customer = new Customer {
                    CustomerIDs = new CustomerAliases()
                    {
                        LegacyCustomerID = "BLORG"
                    }
                }
            };
            _sut.AddAddress(new Address
            {
                AddressType = AddressTypeConstants.ShipTo,
                AddressName = "Yop"
            });

            Address shipTo = _sut.ShipToAddress;

            Assert.That(shipTo.AddressName == "Yop");
        }
示例#17
0
        public void can_extract_item_ids()
        {
            var segmentList = new List <Segment>
            {
                new Segment {
                    Contents = "ST*850*0001", Label = SegmentLabel.DocumentLabel
                },
                new Segment
                {
                    Contents = "BEG*00*SA*4110076497**20071031*CUR*BY*USD", Label = "BEG".GetSegmentLabel()
                },
                new Segment
                {
                    Contents = "PO1*1*500*EA*6.75**IN*CAD33*VN*FINCAD33*PD*BIG BOX*TP*S",
                    Label    = "PO1".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "REF~CO~249040291943406",
                    Label = "REF".GetSegmentLabel()
                },
                new Segment
                {
                    Contents =
                        "REF~BF~249040",
                    Label = "REF".GetSegmentLabel()
                },
                new Segment {
                    Contents = "CTT~4", Label = SegmentLabel.SummaryLabel
                },
                new Segment {
                    Contents = "SE*7*0001", Label = SegmentLabel.DocumentClose
                }
            };
            var order = new OrderRequestReceivedMessage();

            _sut.ProcessLines(segmentList, order);
        }
示例#18
0
        public void can_add_line()
        {
            _sut = new OrderRequestReceivedMessage();
            _sut.Add(new CustomerOrderLine
            {
                CustomerPartNumber = "A0897-A00",
                Notes             = "Hello",
                RequestedQuantity = 15,
                RequestedPrice    = 5.66m,
                LineNumber        = 1
            });
            _sut.Add(new CustomerOrderLine
            {
                CustomerPartNumber = "B0897-A00",
                Notes             = "Hello",
                RequestedQuantity = 15,
                RequestedPrice    = 5.96m,
                LineNumber        = 2
            });

            Assert.That(_sut.LineCount == 2);
            Assert.That(_sut.LineCount == _sut.LineItems.Count);
        }
示例#19
0
        public void will_throw_exception_if_no_lines()
        {
            var order = new OrderRequestReceivedMessage();

            _sut.BuildFromMessage(order);
        }
示例#20
0
        public void publish_CreateOrderMessage()
        {
            var messaage = new OrderRequestReceivedMessage
            {
                BusinessPartnerCode   = BusinessPartner.Initech.Code,
                BusinessPartnerNumber = BusinessPartner.Initech.Number,
                ControlNumber         = "1",
                CustomerPO            = "PO-100",
                Customer = new Customer {
                    CustomerIDs = new CustomerAliases()
                    {
                        LegacyCustomerID = "100"
                    }, CustomerName = "test co."
                },
                BusinessProcessName = "business process name",
                RequestDate         = SystemTime.Now().ToString()
            };

            messaage.AddAddress(new Address
            {
                Address1    = "test addr1",
                Address2    = "addr2",
                AddressCode = new AddressCode()
                {
                    CustomerCode = "TEST"
                },
                AddressName = "office",
                AddressType = AddressTypeConstants.ShipTo,
                City        = "austin",
                State       = "TX",
                Zip         = "88888"
            });

            messaage.Add(new CustomerOrderLine
            {
                CustomerIDs = new CustomerAliases()
                {
                    LegacyCustomerID = "100"
                },
                CustomerPartNumber = "222",
                CustomerPO         = "333",
                ItemDescription    = "desc",
                ItemId             = "444",
                LineNumber         = 1,
                Notes             = "note",
                OrderMultiple     = 1,
                OrderNumber       = "555",
                RequestedPrice    = 6.0m,
                RequestedQuantity = 2,
                RequestNumber     = "1",
                TestMode          = true
            });
            messaage.LineItems.Add(new CustomerOrderLine
            {
                CustomerIDs = new CustomerAliases()
                {
                    LegacyCustomerID = "100"
                },
                CustomerPartNumber = "222b",
                CustomerPO         = "333b",
                ItemDescription    = "descb",
                ItemId             = "444b",
                LineNumber         = 2,
                Notes             = "noteb",
                OrderMultiple     = 2,
                OrderNumber       = "555b",
                RequestedPrice    = 7.0m,
                RequestedQuantity = 3,
                RequestNumber     = "1b",
                TestMode          = true
            });

            Thread.Sleep(4000);

            Bus.Instance().Publish(messaage);
        }
示例#21
0
 private void publish(OrderRequestReceivedMessage message)
 { 
     Bus.Instance().Publish(message);
 }