private static void ProcessPurchaseOrder(ISA isa, GS gs, TS850 purchaseOrder) { // Do something with the purchase order }
static string Export(TS850 po) { var result = new StringBuilder(); result.AppendLine("LINE_NUMBER,UPC_NUMBER,QUANTITY,PRICE,UOM,PO_NUMBER,PO_DATE,CUSTOMER_NAME,CUSTOMER_NUMBER,ADDRESS,CITY,STATE,POSTAL_CODE"); string customer = ""; string customerNr = ""; string address = ""; string city = ""; string state = ""; string postCode = ""; var n1Loop = po.N1Loop.Where(n1 => n1.N1.EntityIdentifierCode_01 == "ST").FirstOrDefault(); if (n1Loop != null) { customer = n1Loop.N1.Name_02; customerNr = n1Loop.N1.IdentificationCode_04; var n3 = n1Loop.N3.FirstOrDefault(); if (n3 != null) { address = n3.AddressInformation_01; } var n4 = n1Loop.N4.FirstOrDefault(); if (n4 != null) { city = n4.CityName_01; state = n4.StateorProvinceCode_02; postCode = n4.PostalCode_03; } } foreach (var po1Loop in po.PO1Loop) { // Add line number var line = po1Loop.PO1.AssignedIdentification_01 + ","; // Add upc number line += po1Loop.PO1.ProductServiceID_07 + ","; // Add quantity line += po1Loop.PO1.QuantityOrdered_02 + ","; // Add price line += po1Loop.PO1.UnitPrice_04 + ","; // Add uom line += po1Loop.PO1.UnitorBasisforMeasurementCode_03 + ","; // Add po number line += po.BEG.PurchaseOrderNumber_03 + ","; // Add po date line += po.BEG.Date_05 + ","; // Add customer name line += customer + ","; // Add customer number line += customerNr + ","; // Add address line 1 line += address + ","; // Add city line += city + ","; // Add state line += state + ","; // Add postal code line += postCode + ","; result.AppendLine(line.TrimEnd(new[] { ',' })); } return(result.ToString()); }
/// <summary> /// Build purchase order. /// Original example from http://www.x12.org/examples/004010X357/tax-exempt-purchase-order/ /// </summary> public static TS850 BuildPurchaseOrder(string controlNumber) { var result = new TS850(); // Indicates the start of a purchase order transaction set and assigns a control number. result.ST = new ST(); result.ST.TransactionSetIdentifierCode_01 = "850"; result.ST.TransactionSetControlNumber_02 = controlNumber.PadLeft(9, '0'); // Indicates that this is original purchase order number XX-1234, dated March 1, 2017, and that no acknowledgment is necessary. result.BEG = new BEG(); result.BEG.TransactionSetPurposeCode_01 = "00"; result.BEG.PurchaseOrderTypeCode_02 = "SA"; result.BEG.PurchaseOrderNumber_03 = "XX-1234"; result.BEG.Date_05 = "20170301"; result.BEG.AcknowledgmentType_07 = "NA"; // Repeating PER result.PER = new List <PER>(); // Indicates that the name of the Buyer is Ed Smith, and his telephone number is (800) 123-4567. var per = new PER(); per.ContactFunctionCode_01 = "BD"; per.Name_02 = "ED SMITH"; per.CommunicationNumberQualifier_03 = "TE"; per.CommunicationNumber_04 = "8001234567"; result.PER.Add(per); // Repeating TAX result.TAX = new List <TAX>(); // Provides state tax exempt ID 53247765. var tax = new TAX(); tax.TaxIdentificationNumber_01 = "53247765"; tax.LocationQualifier_02 = "SP"; tax.LocationIdentifier_03 = "CA"; tax.TaxExemptCode_12 = "9"; result.TAX.Add(tax); // Repeating N1 Loops result.N1Loop = new List <Loop_N1_850>(); // Begin N1 Loop var n1Loop = new Loop_N1_850(); // Indicates that the buyer is ABC Aerospace. ABC's D-U-N-S+4 number is 123456789-0101. n1Loop.N1 = new N1(); n1Loop.N1.EntityIdentifierCode_01 = "BY"; n1Loop.N1.Name_02 = "ABC AEROSPACE"; n1Loop.N1.IdentificationCodeQualifier_03 = "9"; n1Loop.N1.IdentificationCode_04 = "1234567890101"; // Repeating N2 n1Loop.N2 = new List <N2>(); // Provides additional name content for the buyer. var n2 = new N2(); n2.Name_01 = "AIRCRAFT DIVISION"; n1Loop.N2.Add(n2); // Repeating N3 n1Loop.N3 = new List <N3>(); // The buyer’s street address is 2000 Jet Blvd. var n3 = new N3(); n3.AddressInformation_01 = "2000 JET BLVD"; n1Loop.N3.Add(n3); // Repeating N4 n1Loop.N4 = new List <N4>(); // The buyer’s city, state, and ZIP is Fighter Town, CA 98898. var n4 = new N4(); n4.CityName_01 = "FIGHTER TOWN"; n4.StateorProvinceCode_02 = "CA"; n4.PostalCode_03 = "98898"; n1Loop.N4.Add(n4); // End N1 Loop result.N1Loop.Add(n1Loop); // Repeating PO1 Loops result.PO1Loop = new List <Loop_PO1_850>(); // Begin PO1 Loop var pO1Loop = new Loop_PO1_850(); // Indicates Baseline item 1 is a request to purchase 25 units, with a price of $36.00 each, of manufacturer's part number XYZ-1234. pO1Loop.PO1 = new PO1(); pO1Loop.PO1.AssignedIdentification_01 = "1"; pO1Loop.PO1.QuantityOrdered_02 = "25"; pO1Loop.PO1.UnitorBasisforMeasurementCode_03 = "EA"; pO1Loop.PO1.UnitPrice_04 = "36"; pO1Loop.PO1.BasisofUnitPriceCode_05 = "PE"; pO1Loop.PO1.ProductServiceIDQualifier_06 = "MG"; pO1Loop.PO1.ProductServiceID_07 = "XYZ-1234"; // Repeating MEA pO1Loop.MEA = new List <MEA>(); // Indicates that each unit in the order weighs 10 ounces. var mea = new MEA(); mea.MeasurementReferenceIDCode_01 = "WT"; mea.MeasurementQualifier_02 = "WT"; mea.MeasurementValue_03 = "10"; mea.CompositeUnitofMeasure_04 = new C001(); mea.CompositeUnitofMeasure_04.UnitorBasisforMeasurementCode_01 = "OZ"; pO1Loop.MEA.Add(mea); // Indicates that no product substitution is allowed. pO1Loop.IT8 = new IT8(); pO1Loop.IT8.ProductServiceSubstitutionCode_07 = "B0"; // Repeating SCH Loops pO1Loop.SCHLoop = new List <Loop_SCH_850>(); // Begin SCH Loop var schLoop = new Loop_SCH_850(); // Indicates that the 25 units are required to arrive by June 15, 2017. schLoop.SCH = new SCH(); schLoop.SCH.Quantity_01 = "25"; schLoop.SCH.UnitorBasisforMeasurementCode_02 = "EA"; schLoop.SCH.DateTimeQualifier_05 = "106"; schLoop.SCH.Date_06 = "20170615"; // End SCH Loop pO1Loop.SCHLoop.Add(schLoop); // End PO1 Loop result.PO1Loop.Add(pO1Loop); // Begin CTT Loop result.CTTLoop = new Loop_CTT_850(); // Indicates that the purchase order contains 1 line item. result.CTTLoop.CTT = new CTT(); result.CTTLoop.CTT.NumberofLineItems_01 = "1"; // Indicates that the total amount of the purchase order is $900. result.CTTLoop.AMT = new AMT(); result.CTTLoop.AMT.AmountQualifierCode_01 = "TT"; result.CTTLoop.AMT.MonetaryAmount_02 = "900"; // End CTT Loop return(result); }
private static TS850 Import(string[] lines) { var result = new TS850(); if (lines.Length < 2) { throw new Exception("Insufficient number of lines"); } // line[0] is the header var firstLine = lines[1]; // ST result.ST = new Core.Model.Edi.X12.ST(); result.ST.TransactionSetIdentifierCode_01 = "850"; result.ST.TransactionSetControlNumber_02 = "000000001"; var firstLineItems = firstLine.Split(new[] { ',' }); if (firstLineItems.Count() < 13) { throw new Exception("Insufficient number of columns"); } // BEG result.BEG = new BEG(); result.BEG.TransactionSetPurposeCode_01 = "01"; result.BEG.PurchaseOrderTypeCode_02 = "02"; result.BEG.PurchaseOrderNumber_03 = firstLineItems[5]; result.BEG.Date_05 = firstLineItems[6]; // Repeating N1 Loops result.N1Loop = new List <Loop_N1_850>(); // Begin N1 Loop var n1Loop = new Loop_N1_850(); // N1 n1Loop.N1 = new N1(); n1Loop.N1.EntityIdentifierCode_01 = "ST"; n1Loop.N1.Name_02 = firstLineItems[7]; n1Loop.N1.IdentificationCodeQualifier_03 = "ZZ"; n1Loop.N1.IdentificationCode_04 = firstLineItems[8]; // Repeating N3 n1Loop.N3 = new List <N3>(); // N3 var n3 = new N3(); n3.AddressInformation_01 = firstLineItems[9]; n1Loop.N3.Add(n3); // Repeating N4 n1Loop.N4 = new List <N4>(); // N4 var n4 = new N4(); n4.CityName_01 = firstLineItems[10]; n4.StateorProvinceCode_02 = firstLineItems[11]; n4.PostalCode_03 = firstLineItems[12]; n1Loop.N4.Add(n4); // End N1 Loop result.N1Loop.Add(n1Loop); // Repeating PO1 Loops result.PO1Loop = new List <Loop_PO1_850>(); foreach (var line in lines.Skip(1)) { var lineItems = line.Split(new[] { ',' }); if (lineItems.Count() < 13) { throw new Exception("Insufficient number of columns"); } // Begin PO1 Loop var po1Loop = new Loop_PO1_850(); // PO1 po1Loop.PO1 = new PO1(); po1Loop.PO1.AssignedIdentification_01 = lineItems[0]; po1Loop.PO1.QuantityOrdered_02 = lineItems[2]; po1Loop.PO1.UnitorBasisforMeasurementCode_03 = lineItems[4]; po1Loop.PO1.UnitPrice_04 = lineItems[3]; po1Loop.PO1.ProductServiceIDQualifier_06 = "UP"; po1Loop.PO1.ProductServiceID_07 = lineItems[1]; // End PO1 Loop result.PO1Loop.Add(po1Loop); } return(result); }