RequisitionItemEditor.xaml 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. <Window x:Class="PRSDesktop.Panels.Requisitions.RequisitionItemEditor"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:PRSDesktop.Panels.Requisitions"
  7. xmlns:dg="clr-namespace:InABox.DynamicGrid;assembly=InABox.Wpf"
  8. xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
  9. xmlns:prsDesktop="clr-namespace:PRSDesktop"
  10. mc:Ignorable="d"
  11. Title="Select Stock Holding" Height="800" Width="1200"
  12. x:Name="Window" WindowStartupLocation="CenterScreen">
  13. <Grid DataContext="{Binding ElementName=Window}">
  14. <Grid.RowDefinitions>
  15. <RowDefinition Height="*"/>
  16. <RowDefinition Height="Auto"/>
  17. </Grid.RowDefinitions>
  18. <dg:DynamicTabControl
  19. x:Name="TabControl"
  20. Grid.Row="0"
  21. SelectionChanged="TabChanged"
  22. Margin="5,5,5,0"
  23. SeparatorMargin="4">
  24. <dg:DynamicTabControl.Items>
  25. <dg:DynamicTabItem x:Name="AllocationsPage" Header="Allocations">
  26. <Grid>
  27. <Grid.RowDefinitions>
  28. <RowDefinition Height="40"/>
  29. <RowDefinition Height="*"/>
  30. </Grid.RowDefinitions>
  31. <Border Grid.Row="0" BorderBrush="Gray" BorderThickness="0.75" Background="WhiteSmoke" Padding="5,0,0,0">
  32. <Grid>
  33. <Grid.ColumnDefinitions>
  34. <ColumnDefinition Width="*"/>
  35. <ColumnDefinition Width="60"/>
  36. <ColumnDefinition Width="60"/>
  37. <ColumnDefinition Width="30"/>
  38. <ColumnDefinition Width="60"/>
  39. <ColumnDefinition Width="30"/>
  40. <ColumnDefinition Width="60"/>
  41. <ColumnDefinition Width="10"/>
  42. </Grid.ColumnDefinitions>
  43. <TextBlock
  44. Grid.Column="0"
  45. Grid.ColumnSpan="4"
  46. Text="Required Quantity:"
  47. FontWeight="Bold"
  48. VerticalAlignment="Center"
  49. Margin="5,0,0,0"/>
  50. <syncfusion:DoubleTextBox
  51. Grid.Column="4"
  52. x:Name="RequiredEditor2"
  53. Value="{Binding RequiredQuantity}"
  54. HorizontalContentAlignment="Center"
  55. VerticalAlignment="Stretch"
  56. VerticalContentAlignment="Center"
  57. Margin="0,5,5,5"
  58. Background="LightYellow"/>
  59. </Grid>
  60. </Border>
  61. <prsDesktop:StockSelectionGrid
  62. x:Name="Allocations"
  63. Grid.Row="1"
  64. PropertyChanged="Allocations_OnPropertyChanged"
  65. AfterRefresh="Allocations_OnAfterRefresh"/>
  66. </Grid>
  67. </dg:DynamicTabItem>
  68. <dg:DynamicTabItem x:Name="HoldingsPage" Header="Stock Holdings">
  69. <dg:DynamicSplitPanel View="Combined" AllowableViews="Combined" Anchor="Master" AnchorWidth="600">
  70. <dg:DynamicSplitPanel.Header>
  71. <Border BorderBrush="Gray"
  72. BorderThickness="0.75"
  73. Background="WhiteSmoke">
  74. <Label Content="Products"
  75. VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
  76. </Border>
  77. </dg:DynamicSplitPanel.Header>
  78. <dg:DynamicSplitPanel.Master>
  79. <local:RequisitionItemProductSelectionGrid x:Name="StockHoldingProducts" OnSelectItem="StockHoldingProducts_OnSelectItem"/>
  80. </dg:DynamicSplitPanel.Master>
  81. <dg:DynamicSplitPanel.Detail>
  82. <Grid>
  83. <Grid.RowDefinitions>
  84. <RowDefinition Height="Auto"/>
  85. <RowDefinition Height="*"/>
  86. <RowDefinition Height="Auto"/>
  87. </Grid.RowDefinitions>
  88. <Border BorderBrush="Gray"
  89. BorderThickness="0.75"
  90. Background="WhiteSmoke"
  91. Grid.Row="0">
  92. <Label Content="Stock Holdings"
  93. VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
  94. </Border>
  95. <local:RequisitionItemStockHoldingSelectionGrid
  96. x:Name="StockHoldings"
  97. OnSelectItem="StockHoldings_OnSelectItem"
  98. AfterRefresh="StockHoldings_OnAfterRefresh"
  99. Grid.Row="1"
  100. Margin="0,4,0,0"/>
  101. <Grid Grid.Row="2" x:Name="JRIList" Margin="0,4,0,0">
  102. <Grid.RowDefinitions>
  103. <RowDefinition Height="40"/>
  104. <RowDefinition Height="0" x:Name="JRIRow"/>
  105. <RowDefinition Height="0" x:Name="TotalRow"/>
  106. </Grid.RowDefinitions>
  107. <Border Grid.Row="0" BorderBrush="Gray" BorderThickness="0.75" Background="WhiteSmoke" Padding="5,0,0,0">
  108. <Grid>
  109. <Grid.ColumnDefinitions>
  110. <ColumnDefinition Width="*"/>
  111. <ColumnDefinition Width="60"/>
  112. <ColumnDefinition Width="60"/>
  113. <ColumnDefinition Width="30"/>
  114. <ColumnDefinition Width="60"/>
  115. <ColumnDefinition Width="30"/>
  116. <ColumnDefinition Width="60"/>
  117. </Grid.ColumnDefinitions>
  118. <TextBlock
  119. Grid.Column="0"
  120. Grid.ColumnSpan="4"
  121. Text="Required Quantity:"
  122. FontWeight="Bold"
  123. VerticalAlignment="Center"
  124. Margin="5,0,0,0"/>
  125. <syncfusion:DoubleTextBox
  126. Grid.Column="6"
  127. x:Name="RequiredEditor"
  128. Value="{Binding RequiredQuantity}"
  129. HorizontalContentAlignment="Center"
  130. VerticalAlignment="Stretch"
  131. VerticalContentAlignment="Center"
  132. Margin="0,5,5,5"
  133. Background="LightYellow"/>
  134. </Grid>
  135. </Border>
  136. <ItemsControl x:Name="JobRequisitionItems" Grid.Row="1"
  137. ItemsSource="{Binding JRIItems}" BorderBrush="Gray" BorderThickness="0.75,0,0.75,0">
  138. <ItemsControl.ItemTemplate>
  139. <DataTemplate DataType="local:RequisitionItemStockHoldingItem">
  140. <Border BorderBrush="Gray"
  141. BorderThickness="0,0,0,0.75"
  142. Background="White"
  143. Padding="5">
  144. <Grid>
  145. <Grid.ColumnDefinitions>
  146. <ColumnDefinition Width="*"/>
  147. <ColumnDefinition Width="60"/>
  148. <ColumnDefinition Width="60"/>
  149. <ColumnDefinition Width="30"/>
  150. <ColumnDefinition Width="60"/>
  151. <ColumnDefinition Width="30"/>
  152. <ColumnDefinition Width="60"/>
  153. </Grid.ColumnDefinitions>
  154. <Grid.RowDefinitions>
  155. <RowDefinition Height="30" />
  156. </Grid.RowDefinitions>
  157. <TextBlock
  158. Grid.Column="0"
  159. VerticalAlignment="Center"
  160. Text="{Binding Text}"
  161. TextWrapping="NoWrap"
  162. TextTrimming="CharacterEllipsis"
  163. Margin="5,0,0,0"/>
  164. <syncfusion:DoubleTextBox
  165. Grid.Column="1"
  166. Value="{Binding Quantity}"
  167. IsReadOnly="True"
  168. HorizontalContentAlignment="Center"
  169. VerticalAlignment="Stretch"
  170. VerticalContentAlignment="Center"
  171. Margin="5,0,0,0"
  172. Background="WhiteSmoke"/>
  173. <Button
  174. Grid.Column="2"
  175. Content="None"
  176. Tag="{Binding}"
  177. Click="None_Click"
  178. Margin="5,0,0,0"/>
  179. <Button
  180. Grid.Column="3"
  181. Content="-"
  182. Tag="{Binding}"
  183. Click="Minus_Click"
  184. Margin="5,0,0,0"/>
  185. <syncfusion:DoubleTextBox
  186. Grid.Column="4"
  187. Value="{Binding Taken}"
  188. MinValue="0"
  189. MaxValue="{Binding Quantity}"
  190. HorizontalContentAlignment="Center"
  191. VerticalAlignment="Stretch"
  192. VerticalContentAlignment="Center"
  193. Margin="5,0,0,0"
  194. Background="LightYellow"/>
  195. <Button
  196. Grid.Column="5"
  197. Content="+"
  198. Tag="{Binding}"
  199. Click="Plus_Click"
  200. Margin="5,0,0,0"/>
  201. <Button
  202. Grid.Column="6"
  203. Content="All"
  204. Tag="{Binding}"
  205. Click="All_Click"
  206. Margin="5,0,0,0"/>
  207. </Grid>
  208. </Border>
  209. </DataTemplate>
  210. </ItemsControl.ItemTemplate>
  211. <ItemsControl.ItemsPanel>
  212. <ItemsPanelTemplate>
  213. <StackPanel/>
  214. </ItemsPanelTemplate>
  215. </ItemsControl.ItemsPanel>
  216. </ItemsControl>
  217. <Border Grid.Row="2" BorderBrush="Gray" BorderThickness="0.75,0,0.75,0.75" Background="WhiteSmoke" Padding="5,0,0,0">
  218. <Grid>
  219. <Grid.ColumnDefinitions>
  220. <ColumnDefinition Width="*"/>
  221. <ColumnDefinition Width="60"/>
  222. <ColumnDefinition Width="60"/>
  223. <ColumnDefinition Width="30"/>
  224. <ColumnDefinition Width="60"/>
  225. <ColumnDefinition Width="30"/>
  226. <ColumnDefinition Width="60"/>
  227. </Grid.ColumnDefinitions>
  228. <TextBlock
  229. Grid.Column="0"
  230. Grid.ColumnSpan="4"
  231. Text="Total:"
  232. FontWeight="Bold"
  233. VerticalAlignment="Center"
  234. Margin="5,0,0,0"/>
  235. <syncfusion:DoubleTextBox
  236. Grid.Column="4"
  237. Value="{Binding TotalTaken}"
  238. IsReadOnly="True"
  239. HorizontalContentAlignment="Center"
  240. VerticalAlignment="Stretch"
  241. VerticalContentAlignment="Center"
  242. Margin="0,5,5,5">
  243. <syncfusion:DoubleTextBox.Style>
  244. <Style TargetType="syncfusion:DoubleTextBox">
  245. <Setter Property="Background" Value="LightGreen"/>
  246. <Style.Triggers>
  247. <DataTrigger Binding="{Binding TotalTaken}" Value="0">
  248. <Setter Property="Background" Value="Orange"/>
  249. </DataTrigger>
  250. </Style.Triggers>
  251. </Style>
  252. </syncfusion:DoubleTextBox.Style>
  253. </syncfusion:DoubleTextBox>
  254. </Grid>
  255. </Border>
  256. </Grid>
  257. </Grid>
  258. </dg:DynamicSplitPanel.Detail>
  259. </dg:DynamicSplitPanel>
  260. </dg:DynamicTabItem>
  261. <dg:DynamicTabItem
  262. x:Name="BOMPage"
  263. Header="Bill Of Materials">
  264. <local:RequisitionItemBillOfMaterialsPage x:Name="BOMItems" OnChanged="BOMItems_OnOnChanged" />
  265. </dg:DynamicTabItem>
  266. <dg:DynamicTabItem
  267. x:Name="RequisitionPage"
  268. Header="Requisitions">
  269. <local:RequisitionItemJobRequitionPage x:Name="JobRequisitionItemsGrid" OnChanged="JobRequisitionItems_OnOnChanged" />
  270. </dg:DynamicTabItem>
  271. <dg:DynamicTabItem x:Name="InstancesPage" Header="Catalogue">
  272. <dg:DynamicSplitPanel View="Combined" AllowableViews="Combined" Anchor="Master" AnchorWidth="600">
  273. <dg:DynamicSplitPanel.Header>
  274. <Border BorderBrush="Gray"
  275. BorderThickness="0.75"
  276. Background="WhiteSmoke">
  277. <Label Content="Products"
  278. VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
  279. </Border>
  280. </dg:DynamicSplitPanel.Header>
  281. <dg:DynamicSplitPanel.Master>
  282. <local:RequisitionItemProductSelectionGrid x:Name="ProductInstancesProducts" OnSelectItem="ProductInstancesProducts_OnSelectItem"/>
  283. </dg:DynamicSplitPanel.Master>
  284. <dg:DynamicSplitPanel.DetailHeader>
  285. <Border BorderBrush="Gray"
  286. BorderThickness="0.75"
  287. Background="WhiteSmoke">
  288. <Label Content="Product Instances"
  289. VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
  290. </Border>
  291. </dg:DynamicSplitPanel.DetailHeader>
  292. <dg:DynamicSplitPanel.Detail>
  293. <Grid>
  294. <Grid.RowDefinitions>
  295. <RowDefinition Height="*"/>
  296. <RowDefinition Height="Auto"/>
  297. </Grid.RowDefinitions>
  298. <Grid.ColumnDefinitions>
  299. <ColumnDefinition Width="*"/>
  300. </Grid.ColumnDefinitions>
  301. <local:RequisitionItemProductInstanceGrid
  302. x:Name="ProductInstances"
  303. OnSelectItem="ProductInstances_OnSelectItem"
  304. Grid.Row="0" />
  305. <Border Grid.Row="1" BorderBrush="Gray" BorderThickness="0.75" Background="WhiteSmoke" Padding="5,0,0,0" Margin="0,4,0,0" Height="40">
  306. <Grid>
  307. <Grid.ColumnDefinitions>
  308. <ColumnDefinition Width="*"/>
  309. <ColumnDefinition Width="60"/>
  310. </Grid.ColumnDefinitions>
  311. <TextBlock
  312. Grid.Column="0"
  313. Text="Required Quantity:"
  314. FontWeight="Bold"
  315. VerticalAlignment="Center"
  316. Margin="5,0,0,0"/>
  317. <syncfusion:DoubleTextBox
  318. Grid.Column="1"
  319. Value="{Binding RequiredQuantity}"
  320. HorizontalContentAlignment="Center"
  321. VerticalAlignment="Stretch"
  322. VerticalContentAlignment="Center"
  323. Margin="0,5,5,5"
  324. Background="LightYellow"/>
  325. </Grid>
  326. </Border>
  327. </Grid>
  328. </dg:DynamicSplitPanel.Detail>
  329. </dg:DynamicSplitPanel>
  330. </dg:DynamicTabItem>
  331. <dg:DynamicTabItem x:Name="CustomPage" Header="Custom">
  332. <dg:EmbeddedDynamicEditorForm
  333. x:Name="CustomEditorGrid"
  334. HideButtons="True"
  335. TabsVisible="False"
  336. ButtonsVisible="False"
  337. OnFormCustomiseEditor="CustomEditorGrid_OnFormCustomiseEditor"/>
  338. </dg:DynamicTabItem>
  339. </dg:DynamicTabControl.Items>
  340. </dg:DynamicTabControl>
  341. <DockPanel Grid.Row="1" LastChildFill="False" x:Name="Buttons">
  342. <Button x:Name="CancelButton" Click="CancelButton_Click"
  343. Content="Cancel"
  344. Margin="5" Padding="5" MinWidth="60"
  345. DockPanel.Dock="Right"/>
  346. <Button x:Name="OKButton" Click="OKButton_Click"
  347. Content="OK"
  348. Margin="5,5,0,5" Padding="5" MinWidth="60"
  349. DockPanel.Dock="Right"
  350. IsEnabled="{Binding CanSave}"/>
  351. </DockPanel>
  352. </Grid>
  353. </Window>