public void can_generate_850_edi_file_from_purchase_order() { PurchaseOrder order = new PurchaseOrder("10000001", new Customer("123", "John Doe", "John Doe", new Address("1001","1 Main st.", "San Francisco", "California","CA", "USA","US", "90210"), new Address("1002","1 Main st.", "San Francisco", "California","CA", "USA","US", "90210")), new List<LineItem> { new LineItem("1", "CTGTN04B", (decimal) 80.01,32, "Brother HL-2700CN; MFC-9420 - Toner Cartridge, Black"), new LineItem("2", "CTGTN04C", (decimal) 80.01,23, "Brother HL-2700CN; MFC-9420 - Toner Cartridge, Cyan"), new LineItem("3", "CTGTN04M", (decimal) 80.01, 11, "Brother HL-2700CN; MFC-9420 - Toner Cartridge, Magenta") }); string fileName=@"c:\abhi\"; PurchaseOrderGenerator generator = new PurchaseOrderGenerator(); generator.GeneratePurchaseOrderFile(order, fileName); //IEnumerable<string> lines = File.ReadLines(fileName); //byte[] bytes = File.ReadAllBytes(fileName); //Assert.IsTrue(File.Exists(fileName)); //Assert.IsTrue(bytes.Length > 0); //Assert.AreNotEqual(0, lines.Count()); //TODO:Add more asserts to verify that the file is the proper EDI format }
public void CreatePurchaseOrder850(PurchaseOrder purchaseOrder, string fileName) { DateTime purcaseOrderDate = DateTime.Now; Interchange interchange = new Interchange(purcaseOrderDate, Convert.ToInt32(purchaseOrder.Number), true) { InterchangeSenderIdQualifier = "ZZ", InterchangeSenderId = InterchangeSenderId, InterchangeReceiverIdQualifier = "ZZ", InterchangeReceiverId = InterchangeReceiverId, InterchangeDate = purcaseOrderDate, }; interchange.SetElement(14, "0"); //No Aknowlegement is 0 FunctionGroup group = interchange.AddFunctionGroup("PO", purcaseOrderDate, Convert.ToInt32(purchaseOrder.Number), "004010"); group.ApplicationSendersCode = InterchangeSenderId; group.ApplicationReceiversCode = InterchangeReceiverId; // group.Date = purcaseOrderDate; // group.ControlNumber = Convert.ToInt32(purchaseOrder.Number); Transaction transaction = group.AddTransaction("850", "0001"); Segment bhtSegment = transaction.AddSegment("BEG"); bhtSegment.SetElement(1, "00"); bhtSegment.SetElement(2, "SA"); bhtSegment.SetElement(3, purchaseOrder.Number); bhtSegment.SetElement(5, purcaseOrderDate.ToString("yyyyMMdd")); //bhtSegment = transaction.AddSegment("CUR"); //bhtSegment.SetElement(1, "BY"); //bhtSegment.SetElement(2, "USD"); //bhtSegment = transaction.AddSegment("PER"); //bhtSegment.SetElement(1, "IC"); //bhtSegment.SetElement(2, "Doe,Jane"); //bhtSegment.SetElement(8, "Doe,Jane"); //bill to section Loop loop = transaction.AddLoop("N1"); loop.SetElement(1, "BT"); loop.SetElement(2, purchaseOrder.Customer.BillingName); loop.SetElement(3, 92); loop.SetElement(4, purchaseOrder.Customer.BillingAddress.Id); Segment segment = loop.AddSegment("N3"); segment.SetElement(1, purchaseOrder.Customer.BillingAddress.Street); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.City + " " + purchaseOrder.Customer.BillingAddress.State + " " + purchaseOrder.Customer.BillingAddress.PostalCode + " " + purchaseOrder.Customer.BillingAddress.Country); segment = loop.AddSegment("N4"); segment.SetElement(1, purchaseOrder.Customer.BillingAddress.City); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.ShortState); // short state segment.SetElement(3, purchaseOrder.Customer.BillingAddress.PostalCode); segment.SetElement(4, purchaseOrder.Customer.BillingAddress.ShortCountry); //short country //ship to to section loop = transaction.AddLoop("N1"); loop.SetElement(1, "ST"); loop.SetElement(2, purchaseOrder.Customer.ShippingName); loop.SetElement(3, 92); loop.SetElement(4, purchaseOrder.Customer.ShippingAddress.Id); segment = loop.AddSegment("N3"); segment.SetElement(1, purchaseOrder.Customer.ShippingAddress.Street); segment.SetElement(2, purchaseOrder.Customer.ShippingAddress.City + " " + purchaseOrder.Customer.ShippingAddress.State + " " + purchaseOrder.Customer.ShippingAddress.PostalCode + " " + purchaseOrder.Customer.ShippingAddress.Country); segment = loop.AddSegment("N4"); segment.SetElement(1, purchaseOrder.Customer.ShippingAddress.City); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.ShortState); // short state segment.SetElement(3, purchaseOrder.Customer.BillingAddress.PostalCode); segment.SetElement(4, purchaseOrder.Customer.BillingAddress.ShortCountry); //short country int count = 1; foreach (LineItem lineItem in purchaseOrder.Items) { loop = transaction.AddLoop("PO1"); loop.SetElement(1, count++); loop.SetElement(2, lineItem.Quantity); loop.SetElement(3, "EA"); loop.SetElement(4, lineItem.Price); loop.SetElement(6, "CGT"); loop.SetElement(7, lineItem.SupplierItemNumber); } loop = transaction.AddLoop("CTT"); loop.SetElement(1, --count); var x12 = interchange.SerializeToX12(true); Console.WriteLine(x12); // Write the string to a file. fileName += purchaseOrder.Number + ".850"; System.IO.StreamWriter file = new System.IO.StreamWriter(fileName); file.WriteLine(x12); file.Close(); }
private String InterchangeReceiverId = "001903202U"; // will be provided by the supplier //TODO:Pass in sender and receiver id public void GeneratePurchaseOrderFile(PurchaseOrder purchaseOrder, string fileName) { CreatePurchaseOrder850(purchaseOrder, fileName); }
private String InterchangeSenderId = "828513080"; // need a mutually agreed up ID #endregion Fields #region Methods public void CreatePurchaseOrder850(PurchaseOrder purchaseOrder,string fileName) { DateTime purcaseOrderDate = DateTime.Now; Interchange interchange = new Interchange(purcaseOrderDate, Convert.ToInt32(purchaseOrder.Number), true) { InterchangeSenderIdQualifier = "ZZ", InterchangeSenderId = InterchangeSenderId, InterchangeReceiverIdQualifier = "ZZ", InterchangeReceiverId = InterchangeReceiverId, InterchangeDate = purcaseOrderDate, }; interchange.SetElement(14, "0"); //No Aknowlegement is 0 FunctionGroup group = interchange.AddFunctionGroup("PO", purcaseOrderDate, Convert.ToInt32(purchaseOrder.Number), "004010"); group.ApplicationSendersCode = InterchangeSenderId; group.ApplicationReceiversCode = InterchangeReceiverId; // group.Date = purcaseOrderDate; // group.ControlNumber = Convert.ToInt32(purchaseOrder.Number); Transaction transaction = group.AddTransaction("850", "0001"); Segment bhtSegment = transaction.AddSegment("BEG"); bhtSegment.SetElement(1, "00"); bhtSegment.SetElement(2, "SA"); bhtSegment.SetElement(3, purchaseOrder.Number); bhtSegment.SetElement(5, purcaseOrderDate.ToString("yyyyMMdd")); //bhtSegment = transaction.AddSegment("CUR"); //bhtSegment.SetElement(1, "BY"); //bhtSegment.SetElement(2, "USD"); //bhtSegment = transaction.AddSegment("PER"); //bhtSegment.SetElement(1, "IC"); //bhtSegment.SetElement(2, "Doe,Jane"); //bhtSegment.SetElement(8, "Doe,Jane"); //bill to section Loop loop = transaction.AddLoop("N1"); loop.SetElement(1, "BT"); loop.SetElement(2, purchaseOrder.Customer.BillingName); loop.SetElement(3,92); loop.SetElement(4,purchaseOrder.Customer.BillingAddress.Id); Segment segment = loop.AddSegment("N3"); segment.SetElement(1, purchaseOrder.Customer.BillingAddress.Street); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.City + " " + purchaseOrder.Customer.BillingAddress.State + " " + purchaseOrder.Customer.BillingAddress.PostalCode + " " + purchaseOrder.Customer.BillingAddress.Country); segment = loop.AddSegment("N4"); segment.SetElement(1, purchaseOrder.Customer.BillingAddress.City); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.ShortState); // short state segment.SetElement(3, purchaseOrder.Customer.BillingAddress.PostalCode); segment.SetElement(4, purchaseOrder.Customer.BillingAddress.ShortCountry); //short country //ship to to section loop = transaction.AddLoop("N1"); loop.SetElement(1, "ST"); loop.SetElement(2, purchaseOrder.Customer.ShippingName); loop.SetElement(3, 92); loop.SetElement(4, purchaseOrder.Customer.ShippingAddress.Id); segment = loop.AddSegment("N3"); segment.SetElement(1, purchaseOrder.Customer.ShippingAddress.Street); segment.SetElement(2, purchaseOrder.Customer.ShippingAddress.City + " " + purchaseOrder.Customer.ShippingAddress.State + " " + purchaseOrder.Customer.ShippingAddress.PostalCode + " " + purchaseOrder.Customer.ShippingAddress.Country); segment = loop.AddSegment("N4"); segment.SetElement(1, purchaseOrder.Customer.ShippingAddress.City); segment.SetElement(2, purchaseOrder.Customer.BillingAddress.ShortState); // short state segment.SetElement(3, purchaseOrder.Customer.BillingAddress.PostalCode); segment.SetElement(4, purchaseOrder.Customer.BillingAddress.ShortCountry); //short country int count = 1; foreach(LineItem lineItem in purchaseOrder.Items) { loop = transaction.AddLoop("PO1"); loop.SetElement(1, count++); loop.SetElement(2, lineItem.Quantity); loop.SetElement(3, "EA"); loop.SetElement(4, lineItem.Price); loop.SetElement(6, "CGT"); loop.SetElement(7, lineItem.SupplierItemNumber); } loop = transaction.AddLoop("CTT"); loop.SetElement(1, --count); var x12 = interchange.SerializeToX12(true); Console.WriteLine(x12); // Write the string to a file. fileName += purchaseOrder.Number + ".850"; System.IO.StreamWriter file = new System.IO.StreamWriter(fileName); file.WriteLine(x12); file.Close(); }
//TODO:Pass in sender and receiver id public void GeneratePurchaseOrderFile(PurchaseOrder purchaseOrder, string fileName) { CreatePurchaseOrder850(purchaseOrder,fileName); }