瀏覽代碼

PRS DESKTOP - updates to Job requisitions screen

Nick-PRSDigital@bitbucket.org 2 年之前
父節點
當前提交
330e741173

+ 18 - 10
prs.desktop/JobRequisitionStockSelectionPage.xaml

@@ -22,6 +22,7 @@
 
         <Grid Grid.Row="1">
             <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="0.4*"/>
                 <ColumnDefinition Width="0.4*"/>
                 <ColumnDefinition Width="*"/>
                 <ColumnDefinition Width="0.1*"/>
@@ -31,11 +32,12 @@
                 <ColumnDefinition Width="60"/>
                 <ColumnDefinition Width="8"/>
             </Grid.ColumnDefinitions>
-            <TextBlock Grid.Column="0" Text="Location" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14"/>
-            <TextBlock Grid.Column="1" Text="Style" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14"/>
-            <TextBlock Grid.Column="2" x:Name="availableUnitsLbl" Text="Available Units" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"
+            <TextBlock Grid.Column="0" Text="Area" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14"/>
+            <TextBlock Grid.Column="1" Text="Location" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14"/>
+            <TextBlock Grid.Column="2" Text="Style" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14"/>
+            <TextBlock Grid.Column="3" x:Name="availableUnitsLbl" Text="Available Units" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"
                        FontWeight="DemiBold" FontSize="14" Margin="0,0,0,0"/>
-            <TextBlock Grid.Column="3" Grid.ColumnSpan="3" Text="Amount to Requisition" HorizontalAlignment="Center" TextAlignment="Center"
+            <TextBlock Grid.Column="4" Grid.ColumnSpan="3" Text="Amount to Requisition" HorizontalAlignment="Center" TextAlignment="Center"
                        VerticalAlignment="Center" FontWeight="DemiBold" FontSize="14" TextWrapping="Wrap"/>
         </Grid>
 
@@ -44,6 +46,7 @@
                 <DataTemplate>
                     <Grid>
                         <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="0.4*"/>
                             <ColumnDefinition Width="0.4*"/>
                             <ColumnDefinition Width="*"/>
                             <ColumnDefinition Width="0.1*"/>
@@ -53,24 +56,29 @@
                             <ColumnDefinition Width="60"/>
                         </Grid.ColumnDefinitions>
                         <Border Grid.Column="0" BorderThickness="0.75" BorderBrush="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
-                            <TextBlock Grid.Column="0" Text="{Binding Location}" HorizontalAlignment="Center" TextAlignment="Center"
+                            <TextBlock Grid.Column="0" Text="{Binding Area}" HorizontalAlignment="Center" TextAlignment="Center"
                                            VerticalAlignment="Center" TextWrapping="Wrap"/>
                         </Border>
+                        
                         <Border Grid.Column="1" BorderThickness="0.75" BorderBrush="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
-                            <TextBlock Grid.Column="1" Text="{Binding Style}" HorizontalAlignment="Center" TextAlignment="Center"
+                            <TextBlock Grid.Column="0" Text="{Binding Location}" HorizontalAlignment="Center" TextAlignment="Center"
                                            VerticalAlignment="Center" TextWrapping="Wrap"/>
                         </Border>
                         <Border Grid.Column="2" BorderThickness="0.75" BorderBrush="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+                            <TextBlock Grid.Column="1" Text="{Binding Style}" HorizontalAlignment="Center" TextAlignment="Center"
+                                           VerticalAlignment="Center" TextWrapping="Wrap"/>
+                        </Border>
+                        <Border Grid.Column="3" BorderThickness="0.75" BorderBrush="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                             <TextBlock  Text="{Binding Units}" HorizontalAlignment="Center" TextAlignment="Center"
                                            VerticalAlignment="Center" TextWrapping="Wrap"/>
                         </Border>
 
 
-                        <Button Grid.Column="3" Content="-" Width="60"  Height="25" Click="Minus_Click" FontWeight="Bold"/>
-                        <TextBox Grid.Column="4" Width="60"  Height="25" TextChanged="TextBox_TextChanged" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
+                        <Button Grid.Column="4" Content="-" Width="60"  Height="25" Click="Minus_Click" FontWeight="Bold"/>
+                        <TextBox Grid.Column="5" Width="60"  Height="25" TextChanged="TextBox_TextChanged" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
                                  HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ChosenUnits}"/>
-                        <Button Grid.Column="5" Content="+"  Width="60"  Height="25" Click="Plus_Click" FontWeight="Bold"/>
-                        <Button Grid.Column="6" Content="All" Width="60"  Height="25" Click="All_Clicked"/>
+                        <Button Grid.Column="6" Content="+"  Width="60"  Height="25" Click="Plus_Click" FontWeight="Bold"/>
+                        <Button Grid.Column="7" Content="All" Width="60"  Height="25" Click="All_Clicked"/>
 
                     </Grid>
                 </DataTemplate>

+ 6 - 3
prs.desktop/JobRequisitionStockSelectionPage.xaml.cs

@@ -31,16 +31,17 @@ namespace PRSDesktop
 
             Item = item;
             IssuingJobID = issuingJob.ID;
-            jobLbl.Text = "Taking stock from Job: " +  issuingJob.Name + " (" + issuingJob.JobNumber + ")";
+            jobLbl.Text = "Taking stock from Job: " + issuingJob.Name + " (" + issuingJob.JobNumber + ")";
             foreach (var holding in holdings)
             {
                 ViewModels.Add(new JobRequistionStockSelectionViewModel
                 {
                     Location = holding.Location.Description,
+                    Area = holding.Location.Area.Description,
                     Units = holding.Units,
                     Style = holding.Style.Description,
                     Holding = holding,
-                });
+                }) ;
             }
             listView.ItemsSource = ViewModels;
 
@@ -49,7 +50,7 @@ namespace PRSDesktop
                 EmpID = new Client<Employee>().Query(new Filter<Employee>(x => x.UserLink.ID).IsEqualTo(ClientFactory.UserGuid), new Columns<Employee>(x => x.ID)).Rows.FirstOrDefault().Get<Employee, Guid>(x => x.ID);
             });
 
-            if(requisitioned) 
+            if (requisitioned)
             {
                 availableUnitsLbl.Text = "Requisitioned";
                 listView.IsEnabled = false;
@@ -156,6 +157,7 @@ namespace PRSDesktop
     {
         public event PropertyChangedEventHandler? PropertyChanged;
         public string Location { get; set; }
+        public string Area { get; set; }
         public string Style { get; set; }
         public double Units { get; set; }
 
@@ -174,6 +176,7 @@ namespace PRSDesktop
         public JobRequistionStockSelectionViewModel()
         {
             Location = "";
+            Area = "";
             Style = "";
             Units = 0;
             ChosenUnits = 0;

+ 2 - 0
prs.desktop/Panels/Products/Job Requisitions/JobRequisitionHoldingsReview.xaml.cs

@@ -115,6 +115,7 @@ namespace PRSDesktop
                     x => x.Location.ID,
                     x => x.Location.Code,
                     x => x.Location.Description,
+                    x => x.Location.Area.Description,
                     x => x.Job.ID,
                     x => x.Job.JobNumber,
                     x => x.JobRequisitionItem.ID,
@@ -249,6 +250,7 @@ namespace PRSDesktop
                     var holding = new StockHolding();
                     holding.Location.ID = mvt.Location.ID;
                     holding.Location.Description = mvt.Location.Description;
+                    holding.Location.Area.Description = mvt.Location.Area.Description;
                     holding.Style.ID = mvt.Style.ID;
                     holding.Style.Description = mvt.Style.Description;
                     holding.Style.Code = mvt.Style.Code;

+ 21 - 8
prs.stores/JobRequisitionItemStore.cs

@@ -16,11 +16,12 @@ namespace PRSStores
         }
 
         private CoreTable DoQuery(JobRequisitionItem item)
-        { 
+        {
             return Provider.Query<StockMovement>(
                new Filter<StockMovement>(x => x.JobRequisitionItem.ID).IsEqualTo(item.ID),
                new Columns<StockMovement>(
-                   x => x.Received
+                   x => x.Received,
+                    x => x.Style.ID
                    ));
         }
 
@@ -33,30 +34,42 @@ namespace PRSStores
             else if (item.Ordered != DateTime.MinValue && item.PurchaseOrderItem.ReceivedDate == DateTime.MinValue)
                 item.Status = JobRequisitionItemStatus.OnOrder;
             else if (item.PurchaseOrderItem.ReceivedDate != DateTime.MinValue)
+            {
                 item.Status = JobRequisitionItemStatus.Received;
+                item = CheckReservedOrTreatmentRequired(item, table);
+            }
             else if (item.Status == JobRequisitionItemStatus.OrderRequired)
                 return item;
             else
-                item = CheckReserved(item, table);          
+                item = CheckReservedOrTreatmentRequired(item, table);
 
             return item;
         }
 
-        private static JobRequisitionItem CheckReserved(JobRequisitionItem item, CoreTable table)
-        {         
+        private static JobRequisitionItem CheckReservedOrTreatmentRequired(JobRequisitionItem item, CoreTable table)
+        {
             if (!table.Rows.Any())
                 return item;
 
+            bool treatmentRequired = false;
             double total = 0;
-            foreach (var row in table.Rows) 
+            foreach (var row in table.Rows)
+            {
                 total = total + row.Get<StockMovement, double>(x => x.Received);
+                if (row.Get<StockMovement, Guid>(x => x.Style.ID) != item.Style.ID)
+                    treatmentRequired = true;
+            }
 
             if (total >= item.Qty)
+            {
                 item.Status = JobRequisitionItemStatus.Reserved;
-            else
+                if (treatmentRequired)
+                    item.Status = JobRequisitionItemStatus.TreatmentRequired;
+            }             
+            else           
                 item.Status = JobRequisitionItemStatus.NotChecked;
 
             return item;
         }
-    }    
+    }
 }

+ 2 - 1
prs.stores/StockMovementStore.cs

@@ -38,7 +38,8 @@ namespace PRSStores
             return Provider.Query<StockMovement>(
                new Filter<StockMovement>(x => x.JobRequisitionItem.ID).IsEqualTo(item.ID),
                new Columns<StockMovement>(
-                   x => x.Received
+                   x => x.Received, 
+                   x => x.Style.ID
                    ));
         }
     }