Ver código fonte

PRS DESKTOP - split site requisitions screen between picked and unpicked

Nick-PRSDigital@bitbucket.org 2 anos atrás
pai
commit
f32af48d73

+ 8 - 0
prs.desktop/Panels/Requisitions/RequisitionItemGrid.cs

@@ -16,6 +16,8 @@ namespace PRSDesktop
     {
         //public int Boxes { get; set; }
 
+        public bool Picked = true;
+
         public RequisitionItemGrid()
         {
             Options.BeginUpdate()
@@ -131,6 +133,12 @@ namespace PRSDesktop
         {
             criteria.Add(
                 new Filter<RequisitionItem>(x => x.RequisitionLink.ID).IsEqualTo(Requisition != null ? Requisition.ID : CoreUtils.FullGuid));
+
+            if (Picked)
+                criteria.Add(new Filter<RequisitionItem>(x => x.Picked).IsNotEqualTo(DateTime.MinValue));
+            else
+                criteria.Add(new Filter<RequisitionItem>(x => x.Picked).IsEqualTo(DateTime.MinValue));
+
             sort = new SortOrder<RequisitionItem>(x => x.Created);
 
             base.Reload(

+ 30 - 5
prs.desktop/Panels/Requisitions/RequisitionPanel.xaml

@@ -12,6 +12,8 @@
             <ColumnDefinition Width="450" />
             <ColumnDefinition Width="Auto" />
             <ColumnDefinition Width="*" />
+            <ColumnDefinition Width="Auto" />
+            <ColumnDefinition Width="*" />
             <ColumnDefinition Width="450" />
         </Grid.ColumnDefinitions>
         <Grid.RowDefinitions>
@@ -26,20 +28,43 @@
         <syncfusion:SfGridSplitter Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Name="Splitter"
                                    VerticalAlignment="Stretch" ResizeBehavior="PreviousAndNext" Width="Auto"
                                    Background="WhiteSmoke" />
-
+       
         <Border Grid.Row="0" Grid.Column="2" Margin="0,0,0,2" BorderBrush="Gray" BorderThickness="0.75"
                 CornerRadius="5,5,0,0" Background="WhiteSmoke">
-            <Label Content="Selected Requisition Items" VerticalContentAlignment="Center"
+            <Label Content="Requested Items" VerticalContentAlignment="Center"
                    HorizontalContentAlignment="Center" />
         </Border>
-        <local:RequisitionItemGrid x:Name="Items" Grid.Row="1" Grid.Column="2" />
+        <local:RequisitionItemGrid x:Name="UnPickedItems" Grid.Row="1" Grid.Column="2" />
+
+        <Grid Grid.Row="1" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center">
+            <Grid.RowDefinitions>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="500"/>
+            </Grid.RowDefinitions>
+            <Button Grid.Row="0" Margin="2,2,2,5" Click="PickItems_Click">
+                <Image Source="pack://application:,,,/Resources/rightarrow.png"/>
+            </Button>
+            <Button Grid.Row="1" Margin="2,5,2,2" Click="UnPickItems_Click">
+                <Image Source="pack://application:,,,/Resources/leftarrow.png"/>
+            </Button>
+               
+        </Grid>
+
+        <Border Grid.Row="0" Grid.Column="4" Margin="0,0,0,2" BorderBrush="Gray" BorderThickness="0.75"
+                CornerRadius="5,5,0,0" Background="WhiteSmoke">
+            <Label Content="Picked Items" VerticalContentAlignment="Center"
+                   HorizontalContentAlignment="Center"/>
+        </Border>
+        <local:RequisitionItemGrid x:Name="Items" Grid.Row="1" Grid.Column="4" />
+
 
-        <Border Grid.Row="0" Grid.Column="3" Margin="4,0,0,2" BorderBrush="Gray" BorderThickness="0.75"
+        <Border Grid.Row="0" Grid.Column="5" Margin="4,0,0,2" BorderBrush="Gray" BorderThickness="0.75"
                 CornerRadius="5,5,0,0" Background="WhiteSmoke">
             <Label Content="Requisition Details" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" />
         </Border>
 
-        <Border BorderBrush="DarkGray" BorderThickness="1" Grid.Column="3" Grid.Row="1" Margin="4,0,0,2"
+        <Border BorderBrush="DarkGray" BorderThickness="1" Grid.Column="5" Grid.Row="1" Margin="4,0,0,2"
                 Padding="0,0,0,5">
             <Grid>
                 <Grid.RowDefinitions>

+ 51 - 0
prs.desktop/Panels/Requisitions/RequisitionPanel.xaml.cs

@@ -57,14 +57,31 @@ namespace PRSDesktop
             //Requisitions.OnRequisitionFillStateChanged += Requisitions_OnRequisitionFillStateChanged;
             //Requisitions.OnRequisitionBoxesChanged += Requisitions_OnRequisitionBoxesChanged;
 
+            UnPickedItems.Picked = false;
+            UnPickedItems.Refresh(true, true);
+
             SetupScanner();
 
+            Items.OnBeforeSave += Items_OnBeforeSave;
+            UnPickedItems.OnBeforeSave += UnPickedItems_OnBeforeSave;
+
             Requisitions.Refresh(true, false);
             Items.Refresh(true, false);
 
             UpdateLayout();
         }
 
+        private void UnPickedItems_OnBeforeSave(IDynamicEditorForm editor, BaseObject[] items)
+        {
+            foreach (var item in items)
+                (item as RequisitionItem).Picked = DateTime.MinValue;
+        }
+
+        private void Items_OnBeforeSave(IDynamicEditorForm editor, BaseObject[] items)
+        {
+            foreach (var item in items)
+                (item as RequisitionItem).Picked = DateTime.Now;
+        }
 
         public void Shutdown()
         {
@@ -332,6 +349,8 @@ namespace PRSDesktop
         {
             _requisition = e.Rows?.FirstOrDefault()?.ToObject<Requisition>();
             LoadRequisition();
+            UnPickedItems.Requisition = _requisition;
+            UnPickedItems.Refresh(false, true);
             Items.Requisition = _requisition;
             Items.Refresh(false, true);
             //lastselection = DateTime.Now;
@@ -480,5 +499,37 @@ namespace PRSDesktop
 
             Progress.Close();
         }
+
+
+        private void PickItems_Click(object sender, RoutedEventArgs e)
+        {
+            if (!UnPickedItems.SelectedRows.Any())
+                return;
+
+            ProcessItems(DateTime.Now, UnPickedItems.SelectedRows);
+        }
+
+        private void UnPickItems_Click(object sender, RoutedEventArgs e)
+        {
+            if (!Items.SelectedRows.Any())
+                return;
+
+            ProcessItems(DateTime.MinValue, Items.SelectedRows);
+        }
+
+        private void ProcessItems(DateTime picked, CoreRow[] rows)
+        {
+            List<RequisitionItem> list = new List<RequisitionItem>();
+            foreach (CoreRow row in rows)
+            {
+                var item = row.ToObject<RequisitionItem>();
+                item.Picked = picked;
+                list.Add(item);
+            }
+            new Client<RequisitionItem>().Save(list, "Picked changed to " + picked.ToString("dd MMM yy"));
+
+            UnPickedItems.Refresh(false, true);
+            Items.Refresh(false, true);
+        }
     }
 }