Browse Source

wpf: Split Accounts receivable and accounts payable

Kenric Nugteren 2 months ago
parent
commit
582e320765
2 changed files with 89 additions and 50 deletions
  1. 46 11
      prs.desktop/MainWindow.xaml
  2. 43 39
      prs.desktop/MainWindow.xaml.cs

+ 46 - 11
prs.desktop/MainWindow.xaml

@@ -516,9 +516,9 @@
                 
             </fluent:RibbonTabItem>
 
-            <fluent:RibbonTabItem x:Name="AccountsTab" Header="Accounts" IsSelected="False" Visibility="Collapsed">
+            <fluent:RibbonTabItem x:Name="AccountsReceivableTab" Header="Accounts Receivable" IsSelected="False" Visibility="Collapsed">
 
-                <fluent:RibbonGroupBox x:Name="AccountsActions" Header="Actions">
+                <fluent:RibbonGroupBox x:Name="AccountsReceivableActions" Header="Actions">
                     
                     <fluent:Button Header="Refresh"
                                    LargeIcon="pack://application:,,,/Resources/refresh.png"
@@ -526,26 +526,26 @@
                     
                     <syncfusion:RibbonSeparator />
                     
-                    <fluent:Button x:Name="AccountsDashboardButton" Header="Dashboards"
+                    <fluent:Button x:Name="AccountsReceivableDashboardButton" Header="Dashboards"
                                    LargeIcon="{svgc:SvgImage Source=/Resources/kpi.svg}" />
                     
-                    <fluent:Button x:Name="AccountsMessagesButton"
+                    <fluent:Button x:Name="AccountsReceivableMessagesButton"
                                    Header="Notification Centre"
                                    LargeIcon="pack://application:,,,/Resources/email.png" />
                     
-                    <fluent:Button x:Name="AccountsTaskButton" Header="Task List"
+                    <fluent:Button x:Name="AccountsReceivableTaskButton" Header="Task List"
                                    LargeIcon="{svgc:SvgImage Source=/Resources/kanban.svg}" />
                     
-                    <fluent:Button x:Name="AccountsAttendanceButton" Header="In/Out Board"
+                    <fluent:Button x:Name="AccountsReceivableAttendanceButton" Header="In/Out Board"
                                    LargeIcon="pack://application:,,,/Resources/attendance.png" />
                     
-                    <fluent:Button x:Name="AccountsMapButton" Header="Live Maps"
+                    <fluent:Button x:Name="AccountsReceivableMapButton" Header="Live Maps"
                                    LargeIcon="pack://application:,,,/Resources/map.png" />
                     
-                    <fluent:Button x:Name="AccountsDailyReportButton" Header="Daily Report"
+                    <fluent:Button x:Name="AccountsReceivableDailyReportButton" Header="Daily Report"
                                    LargeIcon="pack://application:,,,/Resources/report.png" />
                     
-                    <syncfusion:RibbonSeparator x:Name="AccountsTaskSeparator1" />
+                    <syncfusion:RibbonSeparator x:Name="AccountsReceivableTaskSeparator1" />
                     
                     <fluent:Button x:Name="CustomerList" Header="Customers"
                                    LargeIcon="pack://application:,,,/Resources/customer.png" />
@@ -556,7 +556,42 @@
                     <fluent:Button x:Name="ReceiptList" Header="Receipts"
                                    LargeIcon="pack://application:,,,/Resources/receipt.png" />
                     
-                    <syncfusion:RibbonSeparator x:Name="AccountsTaskSeparator2" />
+                </fluent:RibbonGroupBox>
+
+                <fluent:RibbonGroupBox x:Name="AccountsReceivableReports" Width="Auto"  Header="Print" Visibility="Collapsed"/>
+                
+            </fluent:RibbonTabItem>
+
+            <fluent:RibbonTabItem x:Name="AccountsPayableTab" Header="Accounts Payable" IsSelected="False" Visibility="Collapsed">
+
+                <fluent:RibbonGroupBox x:Name="AccountsPayableActions" Header="Actions">
+                    
+                    <fluent:Button Header="Refresh"
+                                   LargeIcon="pack://application:,,,/Resources/refresh.png"
+                                   Click="RefreshMenu_Click" />
+                    
+                    <syncfusion:RibbonSeparator />
+                    
+                    <fluent:Button x:Name="AccountsPayableDashboardButton" Header="Dashboards"
+                                   LargeIcon="{svgc:SvgImage Source=/Resources/kpi.svg}" />
+                    
+                    <fluent:Button x:Name="AccountsPayableMessagesButton"
+                                   Header="Notification Centre"
+                                   LargeIcon="pack://application:,,,/Resources/email.png" />
+                    
+                    <fluent:Button x:Name="AccountsPayableTaskButton" Header="Task List"
+                                   LargeIcon="{svgc:SvgImage Source=/Resources/kanban.svg}" />
+                    
+                    <fluent:Button x:Name="AccountsPayableAttendanceButton" Header="In/Out Board"
+                                   LargeIcon="pack://application:,,,/Resources/attendance.png" />
+                    
+                    <fluent:Button x:Name="AccountsPayableMapButton" Header="Live Maps"
+                                   LargeIcon="pack://application:,,,/Resources/map.png" />
+                    
+                    <fluent:Button x:Name="AccountsPayableDailyReportButton" Header="Daily Report"
+                                   LargeIcon="pack://application:,,,/Resources/report.png" />
+                    
+                    <syncfusion:RibbonSeparator x:Name="AccountsPayableTaskSeparator1" />
                     
                     <fluent:Button x:Name="SupplierList" Header="Suppliers"
                                    LargeIcon="pack://application:,,,/Resources/supplier.png" />
@@ -575,7 +610,7 @@
                     
                 </fluent:RibbonGroupBox>
 
-                <fluent:RibbonGroupBox x:Name="AccountsReports" Width="Auto"  Header="Print" Visibility="Collapsed"/>
+                <fluent:RibbonGroupBox x:Name="AccountsPayableReports" Width="Auto"  Header="Print" Visibility="Collapsed"/>
                 
             </fluent:RibbonTabItem>
 

+ 43 - 39
prs.desktop/MainWindow.xaml.cs

@@ -670,27 +670,6 @@ public partial class MainWindow : IPanelHostControl
     }
 
     #region Configuration
-    /*
-    protected override void OnSourceInitialized(EventArgs e)
-    {
-        base.OnSourceInitialized(e);
-        var source = PresentationSource.FromVisual(this) as HwndSource;
-        source?.AddHook(WndProc);
-    }
-
-    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
-    {
-        var message = (App.Message)msg;
-        switch (message)
-        {
-            case App.Message.Maximise:
-                WindowState = WindowState.Maximized;
-                break;
-        }
-
-        return IntPtr.Zero;
-    }*/
-
 
     private void ConfigureMainScreen(IProgress<string>? progress)
     {
@@ -707,7 +686,8 @@ public partial class MainWindow : IPanelHostControl
             new ProgressSection("Configuring Logistics", () => SetupLogisticsTab(bMaps)),
             new ProgressSection("Configuring Products", () => SetupProductsTab(bMaps)),
             new ProgressSection("Configuring Human Resources", () => SetupHumanResourcesTab(bMaps)),
-            new ProgressSection("Configuring Accounts", () => SetupAccountsTab(bMaps)),
+            new ProgressSection("Configuring Accounts Receivable", () => SetupAccountsReceivableTab(bMaps)),
+            new ProgressSection("Configuring Accounts Payable", () => SetupAccountsPayableTab(bMaps)),
             new ProgressSection("Configuring Equipment", () => SetupEquipmentTab(bMaps)),
             new ProgressSection("Configuring DigitalForms", () => SetupDigitalFormsTab(bMaps)),
             new ProgressSection("Configuring Dashboards", () => SetupDashboardsTab(bMaps)),
@@ -928,18 +908,18 @@ public partial class MainWindow : IPanelHostControl
         SetTabVisibleIfAny(EquipmentTab, EquipmentButton, TrackersMasterList);
     }
 
-    private void SetupAccountsTab(bool bMaps)
+    private void SetupAccountsReceivableTab(bool bMaps)
     {
         if (!Security.IsAllowed<ViewDesktopAccountsTab>())
             return;
 
-        SetModuleVisibility<UtilityDashboard>(AccountsDashboardButton, Security.IsAllowed<CanViewUserDefinedDashboards>());
+        SetModuleVisibility<UtilityDashboard>(AccountsReceivableDashboardButton, Security.IsAllowed<CanViewUserDefinedDashboards>());
 
-        SetModuleVisibility<NotificationPanel>(AccountsMessagesButton, Security.CanView<Notification>());
-        SetModuleVisibility<TaskPanel>(AccountsTaskButton, ClientFactory.IsSupported<Kanban>() && Security.IsAllowed<CanViewTasks>());
-        SetModuleVisibility<AttendancePanel>(AccountsAttendanceButton, ClientFactory.IsSupported<TimeSheet>() && Security.IsAllowed<CanViewInOutBoard>());
-        SetModuleVisibility<LiveMapsPanel>(AccountsMapButton, bMaps);
-        SetModuleVisibility<DailyReport>(AccountsDailyReportButton,
+        SetModuleVisibility<NotificationPanel>(AccountsReceivableMessagesButton, Security.CanView<Notification>());
+        SetModuleVisibility<TaskPanel>(AccountsReceivableTaskButton, ClientFactory.IsSupported<Kanban>() && Security.IsAllowed<CanViewTasks>());
+        SetModuleVisibility<AttendancePanel>(AccountsReceivableAttendanceButton, ClientFactory.IsSupported<TimeSheet>() && Security.IsAllowed<CanViewInOutBoard>());
+        SetModuleVisibility<LiveMapsPanel>(AccountsReceivableMapButton, bMaps);
+        SetModuleVisibility<DailyReport>(AccountsReceivableDailyReportButton,
             ClientFactory.IsSupported<TimeSheet, Assignment>() && Security.IsAllowed<CanViewDailyReports>());
 
         SetModuleVisibility<CustomerPanel>(CustomerList, ClientFactory.IsSupported<Customer>() 
@@ -953,6 +933,32 @@ public partial class MainWindow : IPanelHostControl
         SetModuleVisibility<CustomerReceipts>(ReceiptList, ClientFactory.IsSupported<Receipt>() 
                                                      && Security.CanView<Receipt>()
                                                      && Security.IsAllowed<ViewDesktopReceiptsScreen>());
+        SetVisibleIfEither(AccountsReceivableTaskSeparator1,
+            new FrameworkElement[]
+            {
+                            AccountsReceivableDashboardButton, AccountsReceivableMessagesButton, AccountsReceivableTaskButton, AccountsReceivableAttendanceButton, AccountsReceivableMapButton,
+                            AccountsReceivableDailyReportButton
+            }, new FrameworkElement[] { CustomerList, InvoiceList, ReceiptList });
+        SetVisibleIfAny(AccountsReceivableActions, AccountsReceivableDashboardButton, AccountsReceivableMessagesButton, AccountsReceivableTaskButton,
+            AccountsReceivableAttendanceButton,
+            AccountsReceivableDailyReportButton, CustomerList, InvoiceList, ReceiptList);
+
+        SetTabVisibleIfAny(AccountsReceivableTab, CustomerList, InvoiceList, ReceiptList);
+    }
+
+    private void SetupAccountsPayableTab(bool bMaps)
+    {
+        if (!Security.IsAllowed<ViewDesktopAccountsTab>())
+            return;
+
+        SetModuleVisibility<UtilityDashboard>(AccountsPayableDashboardButton, Security.IsAllowed<CanViewUserDefinedDashboards>());
+
+        SetModuleVisibility<NotificationPanel>(AccountsPayableMessagesButton, Security.CanView<Notification>());
+        SetModuleVisibility<TaskPanel>(AccountsPayableTaskButton, ClientFactory.IsSupported<Kanban>() && Security.IsAllowed<CanViewTasks>());
+        SetModuleVisibility<AttendancePanel>(AccountsPayableAttendanceButton, ClientFactory.IsSupported<TimeSheet>() && Security.IsAllowed<CanViewInOutBoard>());
+        SetModuleVisibility<LiveMapsPanel>(AccountsPayableMapButton, bMaps);
+        SetModuleVisibility<DailyReport>(AccountsPayableDailyReportButton,
+            ClientFactory.IsSupported<TimeSheet, Assignment>() && Security.IsAllowed<CanViewDailyReports>());
 
         SetModuleVisibility<SupplierPanel>(SupplierList, ClientFactory.IsSupported<Supplier>() 
                                                    && Security.CanView<Supplier>()
@@ -972,19 +978,17 @@ public partial class MainWindow : IPanelHostControl
                                                       && Security.CanView<Payment>()
                                                       && Security.IsAllowed<ViewDesktopPaymentsScreen>());
 
-        SetVisibleIfEither(AccountsTaskSeparator1,
+        SetVisibleIfEither(AccountsPayableTaskSeparator1,
             new FrameworkElement[]
             {
-                            AccountsDashboardButton, AccountsMessagesButton, AccountsTaskButton, AccountsAttendanceButton, AccountsMapButton,
-                            AccountsDailyReportButton
-            }, new FrameworkElement[] { CustomerList, InvoiceList, ReceiptList });
-        SetVisibleIfEither(AccountsTaskSeparator2, new FrameworkElement[] { CustomerList, InvoiceList, ReceiptList },
-            new FrameworkElement[] { SupplierList, AccountsDataButton, PurchasesList, BillsList, PaymentsList });
-        SetVisibleIfAny(AccountsActions, AccountsDashboardButton, AccountsMessagesButton, AccountsTaskButton,
-            AccountsAttendanceButton,
-            AccountsDailyReportButton, CustomerList, InvoiceList, ReceiptList, SupplierList, PurchasesList, BillsList, PaymentsList);
+                            AccountsPayableDashboardButton, AccountsPayableMessagesButton, AccountsPayableTaskButton, AccountsPayableAttendanceButton, AccountsPayableMapButton,
+                            AccountsPayableDailyReportButton
+            }, new FrameworkElement[] { SupplierList, AccountsDataButton, PurchasesList, BillsList, PaymentsList });
+        SetVisibleIfAny(AccountsPayableActions, AccountsPayableDashboardButton, AccountsPayableMessagesButton, AccountsPayableTaskButton,
+            AccountsPayableAttendanceButton,
+            AccountsPayableDailyReportButton, SupplierList, PurchasesList, BillsList, PaymentsList);
 
-        SetTabVisibleIfAny(AccountsTab, CustomerList, InvoiceList, ReceiptList, SupplierList, AccountsDataButton, PurchasesList, BillsList, PaymentsList);
+        SetTabVisibleIfAny(AccountsPayableTab, SupplierList, AccountsDataButton, PurchasesList, BillsList, PaymentsList);
     }
 
     private void SetupHumanResourcesTab(bool bMaps)