Example #1
0
        private EDIXmlTransactionSet create_transaction_set(OrderRequestReceivedMessage ackMessage)
        {
            if (ackMessage.LineCount == 0)
            {
                throw new Exception("PO contains no line items!");
            }
            var doc = new EDIXmlTransactionSet(_segmentFactory)
            {
                ISA = _repo.GetNextISA(GroupTypeConstants.POAcknowledgement, BusinessPartner.Initech.Number)
            };

            var docDef = _repo.GetNextDocument(doc.ISA, 855);

            doc.SetHeader("855", docDef.ControlNumber);

            doc.AddSegment(get_begin_segment(ackMessage));

            doc.AddSegment(_segmentFactory.GetAddressName("Austin Foam Plastics",
                                                          NameCodeConstants.Vendor, "", ""));

            var lines = new EDIXmlMixedContainer("PO1");

            ackMessage.LineItems.ForEach(l => add_line(lines, l));

            doc.AddLoop(lines);

            doc.AddSegment(_segmentFactory.GetTransactionTotal(ackMessage.LineCount));

            doc.SetFooter();

            return(doc);
        }
Example #2
0
        private EDIXmlTransactionSet create_transaction_set(OrderRequestReceivedMessage orderRequestReceivedMessage)
        {
            if (orderRequestReceivedMessage.LineCount == 0)
            {
                throw new Exception("PO contains no line items!");
            }
            var doc = new EDIXmlTransactionSet(_segmentFactory)
            {
                ISA = _repo.GetNextISA(GroupTypeConstants.PurchaseOrder, BusinessPartner.FedEx.Number)
            };

            var docDef = _repo.GetNextDocument(doc.ISA, EdiDocumentTypes.PurchaseOrder.DocumentNumber);

            doc.SetHeader(EdiDocumentTypes.PurchaseOrder.DocumentNumber.ToString(), docDef.ControlNumber);

            doc.AddSegment(get_begin_segment(orderRequestReceivedMessage));

//            doc.AddSegment(_segmentFactory.GetCurrencySegment("II", orderMessage.CurrencyCode));
//
//            doc.AddSegment(_segmentFactory.GetReferenceIDSegment(BOLQualifiers.VendorOrderNumber,
//                orderMessage.BOL));

            doc.AddLoop(get_address_loop(orderRequestReceivedMessage));

            doc.AddLoop(get_detail_loop(orderRequestReceivedMessage));

//            doc.AddSegment(_segmentFactory.GetTotalMonetaryValue(orderMessage.GetTotal()));

            doc.AddSegment(_segmentFactory.GetTransactionTotal(orderRequestReceivedMessage.LineCount));
            return(doc);
        }
Example #3
0
        public void can_create_document()
        {
            //ARRANGE
            var testMessageDocumentCreator = new Mock <ICreateEdiContentFrom <testMessage> >();
            //testMessageDocumentCreator.Setup(x => x.ReceiverId).Returns("ReceiverId");
            var transactionSet = new EDIXmlTransactionSet(_seg);

            transactionSet.ISA = new ISAEntity {
                ControlNumber = 1, GroupID = "IN"
            };
            testMessageDocumentCreator.Setup(x => x.BuildFromMessage(_message)).Returns(transactionSet);
            testMessageDocumentCreator.Setup(x => x.SegmentFactory).Returns(_seg);
            _configuration.Setup(x => x.TestMode).Returns(true);
            _resolver.Setup(r => r.GetSegmentFactoryFor(It.IsAny <BusinessPartner>())).Returns(_seg);
            //ACT
            EDIXmlInterchangeControl expectedDocument =
                _sut.CreateDocumentWith(testMessageDocumentCreator.Object, _message).GetInterchangeControl();

            //ASSERT
            testMessageDocumentCreator.VerifyAll();
            _configuration.VerifyAll();
            Assert.That(expectedDocument.EDIFunctionGroups()
                        .First().EDITransactions()
                        .First().Value
                        == transactionSet.Value);
        }
Example #4
0
        public void can_create_810()
        {
            InvoicedOrderMessage order = GetOrder();

            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(order);

            Console.WriteLine(ediStr.Value);
        }
Example #5
0
        public void can_create_855()
        {
            OrderRequestReceivedMessage orderRequestReceived = GetOrder();

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

            Console.WriteLine(ediStr);
        }
Example #6
0
        public void can_create_856()
        {
            OrderHasBeenShippedMessage order = GetOrder();

            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(order);

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

            Console.WriteLine(ediStr.Value);
        }
Example #7
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);
        }
        public void AddContent(EDIXmlTransactionSet transactionSet)
        {
            IEnumerable<XElement> ediFunctionGroups = this.EDIFunctionGroups();

            if (ediFunctionGroups == null)
                throw new ApplicationException("Function Group has not been set.");

            XElement first = ediFunctionGroups.First();

            if (first == null)
                throw new ApplicationException("No Function Group found in list.");

            first.Add(transactionSet);
        }
Example #9
0
        public void can_create_810()
        {
            //Arrange
            InvoicedOrderMessage order = GetOrder();

            //Act
            _sut = _resolver.ResolveFrom(order);
            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(order);
            var arr = ediStr.Value.Split("\n".ToCharArray());

            //Assert
            arr[1].ShouldEqual("BIG~20110610~461191~20110601~4110213145~~~DI");
            arr[2].ShouldEqual("REF~IA~25097");
            arr[arr.Length - 3].ShouldEqual("CTT~2");
        }
Example #10
0
        public EDITransmissionPackage CreateDocumentWith(ICreateEdiContentFrom <T> creator, T message)
        {
            var ediXmlInterchangeControl = new EDIXmlInterchangeControl(creator.SegmentFactory);

            EDIXmlTransactionSet ediTransactionSet = creator.BuildFromMessage(message);

            var isaControlNumber = ediTransactionSet.ISA.ControlNumber;
            var functionalID     = ediTransactionSet.ISA.GroupID;

            ediXmlInterchangeControl.SetHeader(isaControlNumber, functionalID, _configuration.TestMode);

            ediXmlInterchangeControl.AddContent(ediTransactionSet);

            ediXmlInterchangeControl.SetFooter(isaControlNumber, 1);

            return(new EDITransmissionPackage(ediXmlInterchangeControl, creator.GetBusinessPartner()));
        }
Example #11
0
        public void can_create_856()
        {
            //Arrange
            OrderHasBeenShippedMessage order = GetOrder();

            //Act
            _sut = _resolver.ResolveFrom(order);
            EDIXmlTransactionSet ediStr = _sut.BuildFromMessage(order);

            var arr = ediStr.Value.Split("\n".ToCharArray());

            //Assert
            arr[1].Substring(0, 17).ShouldEqual("BSN~00~0005456~20");


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

            Console.WriteLine(ediStr.Value);
        }
Example #12
0
        public IEDIXmlTransactionSet BuildFromMessage(CreateOrderMessage orderMessage)
        {
            if (orderMessage.LineItems == null)
            {
                throw new ApplicationException("PO contains no line items!");
            }
            Console.WriteLine("Order control number: " + orderMessage.ControlNumber);
            orderMessage.LineItems.ForEach(display_line);
            Console.WriteLine("Customer ID: " + orderMessage.CustomerID);
            Console.WriteLine("Customer PO: " + orderMessage.CustomerPO);
            Console.WriteLine("Ship-to-address: " + orderMessage.GetShipToAddress().ToString());
            Console.WriteLine("Request date: " + orderMessage.RequestDate);
            var ts = new EDIXmlTransactionSet(_segmentFactory).SetHeader("850", 23430);

            ts.ISA = new ISAEntity()
            {
                ControlNumber = 1, GroupID = "PO"
            };
            return(ts);
        }
        public void can_create_document()
        {
            //ARRANGE
            var testMessageDocumentCreator = new Mock<ICreateEdiContentFrom<testMessage>>();
            //testMessageDocumentCreator.Setup(x => x.ReceiverId).Returns("ReceiverId");
            var transactionSet = new EDIXmlTransactionSet(_seg);
            transactionSet.ISA = new ISAEntity {ControlNumber = 1, GroupID = "IN"};
            testMessageDocumentCreator.Setup(x => x.BuildFromMessage(_message)).Returns(transactionSet);
            testMessageDocumentCreator.Setup(x => x.SegmentFactory).Returns(_seg);
            _configuration.Setup(x => x.TestMode).Returns(true);
            _resolver.Setup(r => r.GetSegmentFactoryFor(It.IsAny<BusinessPartner>())).Returns(_seg);
            //ACT
            EDIXmlInterchangeControl expectedDocument =
                _sut.CreateDocumentWith(testMessageDocumentCreator.Object, _message).GetInterchangeControl();

            //ASSERT
            testMessageDocumentCreator.VerifyAll();
            _configuration.VerifyAll();
            Assert.That(expectedDocument.EDIFunctionGroups()
                            .First().EDITransactions()
                            .First().Value
                        == transactionSet.Value);
        }
 public void AddTransactionSet(EDIXmlTransactionSet ts)
 {
     if (Label != SegmentLabel.GroupLabel.Text)
         throw new Exception("Cannot add a transaction set to this object!");
     base.Add(ts);
 }
Example #15
0
        protected EDIXmlTransactionSet CreateTransactionSet(OrderShippingInfo message)
        {
            if (message.Lines.Count() == 0)
            {
                throw new Exception("Shipped order contains no line items!");
            }

            var originalDoc = _docsRepo.GetByDocumentControlNumberAndPartnerID(message.ControlNumber.CastToInt(), BusinessPartner.Initech.Number);

            if (originalDoc == null)
            {
                throw new Exception(string.Format("Control number {0} not found for business partner {1}.",
                                                  message.ControlNumber, message.BusinessPartnerNumber));
            }
            var orderTypeElement = originalDoc.ResponseElements.Find(e => e.ElementName == "REF02" && (e.Qualifier == Qualifier.MutuallyAssignedCode.Value));
            var priorityElement  = originalDoc.ResponseElements.Find(e => e.ElementName == "REF02" && (e.Qualifier == Qualifier.ServiceLevelNumber.Value));

            var doc = new EDIXmlTransactionSet(_segmentFactory)
            {
                ISA = _repo.GetNextISA(GroupTypeConstants.AdvanceShipNotice, BusinessPartner.Initech.Number)
            };


            var docDef = _repo.GetNextDocument(doc.ISA, 856);

            doc.SetHeader("856", docDef.ControlNumber);

            docDef.ERPID = message.BOL;
            _repo.Save(docDef.ISAEntity);

            doc.AddSegment(get_begin_segment(message));

            if (message.MaxDateShipped() > DateTime.MinValue)
            {
                doc.AddSegment(_segmentFactory.GetDateTimeSegment(EDIDateQualifiers.Shipped, message.MaxDateShipped()));
            }

            var hl = HierarchicalLevelLoopWrapper.BuildWrapper("O", _segmentFactory, true);

            hl.AddSegment(_segmentFactory.GetPurchaseOrderReference(message.CustomerPO.Trim()));

            if (orderTypeElement != null)
            {
                hl.AddSegment(_segmentFactory.GetReferenceIDSegment(orderTypeElement.Qualifier, orderTypeElement.Value));
            }

            if (priorityElement != null)
            {
                hl.AddSegment(_segmentFactory.GetReferenceIDSegment(priorityElement.Qualifier, priorityElement.Value));
            }


            var addrs = new AddressLoop(_segmentFactory);

            if (message.ShipToAddress.AddressName.IsNullOrEmpty())
            {
                message.ShipToAddress.AddressName = "FEDERAL EXPRESS";
            }

            addrs.AddAddress(message.ShipToAddress, Qualifier.EmptyQualifier);

            addrs.AddAddress(message.ShipFromAddress, Qualifier.EmptyQualifier);

            hl.AddLoop(addrs);

            message.Lines.ForEach(l => add_line(hl, l, originalDoc.LineItems));

            hl.AddTo(doc);

            doc.AddSegment(_segmentFactory.GetTransactionTotal(message.Lines.Count()));

            doc.SetFooter();


            return(doc);
        }
Example #16
0
        private EDIXmlTransactionSet create_transaction_set(InvoicedOrderMessage orderMessage)
        {
            if (orderMessage.Customer == null)
            {
                throw new ApplicationException("There is no customer associated with invoiced order message "
                                               + orderMessage.ControlNumber + ".  Cannot build 810.");
            }


            var orderDoc = _docsRepo.GetByDocumentControlNumberAndPartnerID(orderMessage.ControlNumber.CastToInt(), BusinessPartner.Initech.Number);

            if (orderDoc == null)
            {
                throw new Exception(string.Format("Control number {0} not found for business partner {1}.",
                                                  orderMessage.ControlNumber, orderMessage.BusinessPartnerNumber));
            }
            var responseElements = orderDoc.ResponseElements.Where(e => e.ElementName == "REF02");

            var isa = _repo.GetNextISA(GroupTypeConstants.Invoice, BusinessPartner.Initech.Number);

            if (orderMessage.LineCount() == 0)
            {
                throw new Exception("Invoiced order contains no line items!");
            }

            var doc = new EDIXmlTransactionSet(_segmentFactory)
            {
                ISA = isa
            };

            var docDef = _repo.GetNextDocument(isa, 810);

            doc.SetHeader("810", docDef.ControlNumber);

            docDef.ERPID = orderMessage.BOL;

            _repo.Save(docDef.ISAEntity);

            doc.AddSegment(get_begin_segment(orderMessage));

            //doc.AddSegment(_segmentFactory.GetCurrencySegment("II",orderMessage.CurrencyCode));

            if (responseElements != null)
            {
                responseElements.ForEach(r => doc.AddSegment(_segmentFactory.GetReferenceIDSegment(r.Qualifier,
                                                                                                   r.Value)));
            }

            doc.AddLoop(get_address_loop(orderMessage));

            // doc.AddSegment(get_terms(orderMessage));

            doc.AddLoop(get_detail_loop(orderMessage, orderDoc.LineItems));

            doc.AddSegment(_segmentFactory.GetTotalMonetaryValue(orderMessage.GetTotal()));

            doc.AddSegment(_segmentFactory.GetTaxInformationSegment("SU", orderMessage.SalesTax));

            doc.AddSegment(_segmentFactory.GetCarrierDetail("P", "Initech"));

            doc.AddSegment(_segmentFactory.GetTransactionTotal(orderMessage.LineCount()));


            doc.SetFooter();

            return(doc);
        }