Project files for the Acumatica Import for United Rentals
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
4.8 KiB

  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using uri_import.EClasses;
  5. using uri_import.FClasses;
  6. using uri_import.AClasses;
  7. using uri_import.PClasses;
  8. using Acumatica.Default_20_200_001.Model;
  9. using Acumatica.Manufacturing_21_200_001.Model;
  10. using Acumatica.RESTClient.Model;
  11. namespace uri_import
  12. {
  13. class Program
  14. {
  15. static void Main(string[] args)
  16. {
  17. FileActions.MakeDirectories();
  18. Ex365 exch = new Ex365("mcarman@prelub.com", "Gr@nt@cc3$$", "https://outlook.office365.com/ews/Exchange.asmx", Independentsoft.Exchange.StandardFolder.Inbox);
  19. List<EmailAttachment> pos = exch.GetPOs("United Rentals, Inc:");
  20. List<SalesOrder> sos = new List<SalesOrder>();
  21. WritePOsToDirectory(pos);
  22. try
  23. {
  24. var config = AcumaticaREST.Config("https://rpmindustries.acumatica.com", "bryckman", "Washington1", "RPM SANDBOX", null, null);
  25. foreach (EmailAttachment ea in pos)
  26. {
  27. try
  28. {
  29. List<string> lines = PDFHelper.PDFLinesToText(ea.FilePath);
  30. }
  31. catch (Exception lex)
  32. {
  33. ea.Errors.Add(string.Format("{0} {1} {2}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), lex.Message));
  34. }
  35. ea.SalesOrder = PDFHelper.PDFBuildSalesOrder(PDFHelper.PDFLinesToText(ea.FilePath));
  36. SalesOrder order = ea.SalesOrder;
  37. foreach (SalesOrderDetail detail in order.Details)
  38. {
  39. Dictionary<string, CustomField> inner = new Dictionary<string, CustomField>();
  40. CustomBooleanField b = new CustomBooleanField(true, "CustomBooleanField");
  41. inner.Add("AMProdCreate", b);
  42. detail.Custom = new Dictionary<string, Dictionary<string, CustomField>>();
  43. detail.Custom.Add("Transactions", inner);
  44. }
  45. AcumaticaREST.CreateSalesOrder(ref order, config, ea.FileName, ea.Content);
  46. ea.SalesOrder.OrderNbr = order.OrderNbr;
  47. ea.SalesOrder.ID = order.ID;
  48. //AcumaticaREST.UploadPurchaseOrder(config, ea.SalesOrder, "PurchaseOrder.pdf", ea.Content);
  49. int ln = 1;
  50. foreach (SalesOrderDetail detail in ea.SalesOrder.Details)
  51. {
  52. ProductionOrder prod = new ProductionOrder();
  53. prod.OrderType = "RO";
  54. prod.QtytoProduce = detail.OrderQty;
  55. prod.InventoryID = detail.InventoryID;
  56. prod.SOOrderNbr = order.OrderNbr;
  57. prod.SOOrderType = "SO";
  58. prod.SOLineNbr = detail.LineNbr;
  59. ln = ln + 1;
  60. AcumaticaREST.CreateProductionOrder(config, ref prod, "https://rpmindustries.acumatica.com", "bryckman", "Washington1", "RPM SANDBOX", null, null);
  61. ea.ProductionOrders.Add(prod);
  62. }
  63. }
  64. foreach (EmailAttachment ea in pos)
  65. {
  66. AcumaticaREST.ReleaseAndLinkProductionOrders(config, ea, "https://rpmindustries.acumatica.com", "bryckman", "Washington1", "RPM SANDBOX", null, null);
  67. }
  68. }
  69. catch (Exception exception)
  70. {
  71. Console.WriteLine(exception.Message);
  72. }
  73. finally
  74. {
  75. AcumaticaREST.APILogout("https://rpmindustries.acumatica.com", "bryckman", "Washington1", "RPM SANDBOX", null, null);
  76. }
  77. using (RestService service = new RestService("https://rpmindustries.acumatica.com", "bryckman", "Washington1", "RPM SANDBOX", "en_US"))
  78. {
  79. foreach (EmailAttachment ea in pos)
  80. {
  81. try
  82. {
  83. AcumaticaREST.PutFile(service, ea.SalesOrder, "https://rpmindustries.acumatica.com", "SO", ea.SalesOrder.OrderNbr.Value.ToString(), ea.FileName, ea.Content);
  84. }
  85. catch { }
  86. }
  87. }
  88. }
  89. static void WritePOsToDirectory(List<EmailAttachment> pos)
  90. {
  91. foreach (EmailAttachment obj in pos)
  92. {
  93. string path = Path.Combine(FileActions.Attachments, obj.FileName);
  94. if (!File.Exists(path))
  95. File.WriteAllBytes(path, obj.Content);
  96. Console.WriteLine(obj.FilePath);
  97. }
  98. }
  99. }
  100. }