SupplierBillLineGrid.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Controls;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using InABox.WPF;
  9. namespace PRSDesktop
  10. {
  11. public class SupplierBillLineGrid : DynamicOneToManyGrid<Bill, BillLine>
  12. {
  13. public SupplierBillLineGrid()
  14. {
  15. Options
  16. .BeginUpdate()
  17. .Clear()
  18. .Add(DynamicGridOption.AddRows)
  19. .Add(DynamicGridOption.DeleteRows)
  20. .Add(DynamicGridOption.SelectColumns)
  21. .Add(DynamicGridOption.DirectEdit)
  22. .EndUpdate();
  23. AddButton("Import", PRSDesktop.Resources.purchase.AsBitmapImage(), ImportPOLines);
  24. HiddenColumns.Add(x => x.TaxCode.ID);
  25. HiddenColumns.Add(x => x.TaxCode.Code);
  26. HiddenColumns.Add(x => x.TaxCode.Description);
  27. HiddenColumns.Add(x => x.TaxCode.Rate);
  28. HiddenColumns.Add(x => x.TaxRate);
  29. HiddenColumns.Add(x => x.ExTax);
  30. HiddenColumns.Add(x => x.Tax);
  31. HiddenColumns.Add(x => x.IncTax);
  32. HiddenColumns.Add(x => x.Description);
  33. }
  34. private bool ImportPOLines(Button arg1, CoreRow[] arg2)
  35. {
  36. MultiSelectDialog<PurchaseOrderItem> dlg = new MultiSelectDialog<PurchaseOrderItem>(
  37. new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.SupplierLink.ID).IsEqualTo(Item.SupplierLink.ID).And(x => x.PurchaseOrderLink.ClosedDate).IsEqualTo(DateTime.MinValue),
  38. new Columns<PurchaseOrderItem>
  39. (
  40. x => x.ID,
  41. x => x.Description,
  42. x => x.Product.Code,
  43. x => x.ReceivedDate,
  44. x => x.Consignment.Number,
  45. x => x.PurchaseOrderLink.PONumber
  46. ));
  47. if (dlg.ShowDialog() == true)
  48. {
  49. var items = new Client<PurchaseOrderItem>().Query(
  50. new Filter<PurchaseOrderItem>(x => x.ID).InList(dlg.IDs()),
  51. new Columns<PurchaseOrderItem>(x => x.ID)
  52. .Add(x => x.Description)
  53. .Add(x => x.TaxCode.ID)
  54. .Add(x => x.TaxCode.Code)
  55. .Add(x => x.TaxCode.Description)
  56. .Add(x => x.TaxCode.Rate)
  57. .Add(x => x.TaxRate)
  58. .Add(x => x.ExTax)
  59. .Add(x => x.Tax)
  60. .Add(x => x.IncTax)
  61. .Add(x => x.Created)
  62. .Add(x => x.PurchaseOrderLink.ID)
  63. .Add(x => x.PurchaseOrderLink.PONumber)
  64. .Add(x => x.Product.ID)
  65. .Add(x => x.Product.Code)
  66. .Add(x => x.Product.Name)
  67. );
  68. foreach (var row in items.Rows)
  69. {
  70. var line = new BillLine();
  71. line.OrderItem.ID = row.Get<PurchaseOrderItem, Guid>(x => x.ID);
  72. line.OrderItem.PurchaseOrderLink.ID = row.Get<PurchaseOrderItem, Guid>(x => x.PurchaseOrderLink.ID);
  73. line.OrderItem.PurchaseOrderLink.PONumber = row.Get<PurchaseOrderItem, String>(x => x.PurchaseOrderLink.PONumber);
  74. var description = new List<string>();
  75. if (row.Get<PurchaseOrderItem, Guid>(x => x.Product.ID) != Guid.Empty)
  76. description.Add(string.Format("{0} : {1}", row.Get<PurchaseOrderItem, string>(x => x.Product.Code),
  77. row.Get<PurchaseOrderItem, string>(x => x.Product.Name)));
  78. var Description = row.Get<PurchaseOrderItem, string>(x => x.Description);
  79. if (!string.IsNullOrEmpty(Description))
  80. description.Add(Description);
  81. line.Description = string.Join("\n", description);
  82. line.ExTax = row.Get<PurchaseOrderItem, double>(x => x.ExTax);
  83. line.TaxCode.ID = row.Get<PurchaseOrderItem, Guid>(x => x.TaxCode.ID);
  84. line.TaxCode.Code = row.Get<PurchaseOrderItem, string>(x => x.TaxCode.Code);
  85. line.TaxCode.Description = row.Get<PurchaseOrderItem, string>(x => x.TaxCode.Description);
  86. line.TaxCode.Rate = row.Get<PurchaseOrderItem, double>(x => x.TaxCode.Rate);
  87. //line.TaxRate = row.Get<PurchaseOrderItem, double>(x => x.TaxRate);
  88. //line.Tax = row.Get<PurchaseOrderItem, double>(x => x.Tax);
  89. //line.IncTax = row.Get<PurchaseOrderItem, double>(x => x.IncTax);
  90. line.OrderItem.Product.ID = row.Get<PurchaseOrderItem, Guid>(x => x.Product.ID);
  91. line.OrderItem.Product.Code = row.Get<PurchaseOrderItem, string>(x => x.Product.Code);
  92. line.OrderItem.Product.Name = row.Get<PurchaseOrderItem, string>(x => x.Product.Name);
  93. Items.Add(line);
  94. }
  95. return true;
  96. }
  97. return false;
  98. }
  99. }
  100. }