using Acumatica.Auth.Api; using Acumatica.Default_20_200_001.Api; using Acumatica.Default_20_200_001.Model; using RestSharp; using RestSharp.Serializers.Json; using Newtonsoft.Json; using Acumatica.Manufacturing_21_200_001.Api; using Acumatica.Manufacturing_21_200_001.Model; using Acumatica.RESTClient.Client; using Acumatica; using uri_import.FClasses; using System; using System.Collections.Generic; using uri_import.AClasses; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using System.IO; using uri_import.EClasses; namespace uri_import.AClasses { public class AcumaticaREST { public static string PutFile(RestService service, SalesOrder so, string siteURL, string entityName, string orderNbr, string fileName, byte[] file) { using (MemoryStream memory = new MemoryStream(file)) { return service.PutFile(siteURL, "SalesOrder", string.Format("SO/{0}", so.OrderNbr), "PurchaseOrder.pdf", memory); } } public static Configuration Config(string siteURL, string username, string password, string tenant = null, string branch = null, string locale = null) { var authApi = new AuthApi(siteURL, requestInterceptor: RequestLogger.LogRequest, responseInterceptor: RequestLogger.LogResponse); return authApi.LogIn(username, password, tenant, branch, locale); } public static void APILogout(string siteURL, string username, string password, string tenant = null, string branch = null, string locale = null) { var authApi = new AuthApi(siteURL, requestInterceptor: RequestLogger.LogRequest, responseInterceptor: RequestLogger.LogResponse); if (authApi.TryLogout()) { Console.WriteLine("Logged out successfully."); } else { Console.WriteLine("An error occured during logout."); } } public static void UploadPurchaseOrder(Configuration config, SalesOrder entity, string filename, byte[] content) { try { Console.WriteLine(string.Format("Attaching Purchase Order:")); var soApi = new SalesOrderApi(config); soApi.PutFile(entity.ID.ToString(), filename, content); } catch (Exception ex) { Console.WriteLine(ex.Message); } } public static void CreateSalesOrder(ref SalesOrder entity, Configuration config, string filename, byte[] content) { try { Console.WriteLine(string.Format("Creating Sales Order from PO: {0}", entity.CustomerOrder.Value)); var soApi = new SalesOrderApi(config); SalesOrder savedSO = soApi.PutEntity(entity, null, null, "Details"); entity.OrderNbr = savedSO.OrderNbr; entity.ID = savedSO.ID; //soApi.PutFile(entity.ID.ToString(), filename, content); } catch (Exception e) { Console.WriteLine(e.Message); } } public static void CreateProductionOrder(Configuration config, ref ProductionOrder entity, string siteURL, string username, string password, string tenant = null, string branch = null, string locale = null) { try { Console.WriteLine(string.Format("Creating Production Order from Sales Order: ", entity.SOOrderNbr.Value)); var poApi = new ProductionOrderApi(config); var cpoApi = new CreateProductionOrderApi(config); CreateProductionOrder cpo = new CreateProductionOrder(); cpo.CreationOrderType = "RO"; cpo.SOOrderType = "SO"; cpo.SOOrderNbr = entity.SOOrderNbr; cpoApi.WaitActionCompletion(cpoApi.InvokeAction(new CreateProductionOrderProcessAll(cpo))); } catch (Exception e) { Console.WriteLine(e.Message); } } public static List ReleaseAndLinkProductionOrders(Configuration config, EmailAttachment entity, string siteURL, string username, string password, string tenant = null, string branch = null, string locale = null) { List list = new List(); try { Console.WriteLine(string.Format("Retreiving Production Order from Sales Order: ", entity.SalesOrder.OrderNbr.Value)); var poApi = new ProductionOrderApi(config); string filter = string.Format("SOOrderNbr eq '{0}'", entity.SalesOrder.OrderNbr.Value); list = poApi.GetList(null, filter, null, null, null, null); foreach (ProductionOrder po in list) { entity.ProductionOrders.Add(po); poApi.WaitActionCompletion(poApi.InvokeAction(new CreateLinkedProductionOrders(po))); entity.Linked = true; poApi.WaitActionCompletion(poApi.InvokeAction(new ReleaseProductionOrder(po))); entity.Released = true; } } catch (Exception e) { Console.WriteLine(e.Message); } return list; } public static void Test(Configuration config, string siteURL, string username, string password, string tenant = null, string branch = null, string locale = null) { // var authApi = new AuthApi(siteURL, // requestInterceptor: RequestLogger.LogRequest, responseInterceptor: RequestLogger.LogResponse); try { //var configuration = authApi.LogIn(username, password, tenant, branch, locale); Console.WriteLine("Reading Accounts..."); var accountApi = new AccountApi(config); var accounts = accountApi.GetList(top: 5); foreach (var account in accounts) { Console.WriteLine("Account Nbr: " + account.AccountCD.Value + ";"); } Console.WriteLine("Reading Sales Order by Keys..."); var salesOrderApi = new SalesOrderApi(config); var order = salesOrderApi.GetByKeys(new List() { "SO", "009314" }, null, null, "Details"); Console.WriteLine("Order Total: " + order.OrderTotal.Value); var shipmentApi = new ShipmentApi(config); var shipment = shipmentApi.GetByKeys(new List() { "002805" }); Console.WriteLine("ConfirmShipment"); //shipmentApi.WaitActionCompletion(shipmentApi.InvokeAction(new ConfirmShipment(shipment))); Console.WriteLine("CorrectShipment"); shipmentApi.WaitActionCompletion(shipmentApi.InvokeAction(new CorrectShipment(shipment))); } catch (Exception e) { Console.WriteLine(e.Message); } } } }