Commit 09652f2
Changed files (14)
product
Boot
boot
container
Presentation
product/Boot/boot/container/registration/wire_up_the_presentation_modules.cs
@@ -39,7 +39,6 @@ namespace MoMoney.boot.container.registration
() => new ApplicationController(Lazy.load<IPresenterRegistry>(), Lazy.load<IShell>());
registry.proxy<IApplicationController, SynchronizedConfiguration<IApplicationController>>(target.memorize());
registry.transient(typeof (IRunThe<>), typeof (RunThe<>));
- registry.transient(typeof (IPresenter), typeof (ReportPresenter<IViewAllBillsReport,IEnumerable<BillInformationDTO>,IGetAllBillsQuery>));
registry.transient<IFileMenu, FileMenu>();
registry.transient<IWindowMenu, WindowMenu>();
registry.transient<IHelpMenu, HelpMenu>();
product/Boot/boot/container/registration/wire_up_the_reports_in_to_the.cs
@@ -1,8 +1,12 @@
+using System.Collections.Generic;
using Gorilla.Commons.Infrastructure;
using Gorilla.Commons.Utility.Core;
+using MoMoney.DTO;
+using MoMoney.Presentation.Core;
+using MoMoney.Presentation.Presenters;
using MoMoney.Presentation.Views;
-using MoMoney.Presentation.Views.reporting;
using MoMoney.Presentation.Winforms.Views;
+using MoMoney.Service.Contracts.Application;
namespace MoMoney.boot.container.registration
{
@@ -18,7 +22,10 @@ namespace MoMoney.boot.container.registration
public void run()
{
registry.transient<IReportViewer, ReportViewer>();
+ registry.transient(typeof (IPresenter), typeof (ReportPresenter<IViewAllBillsReport,IEnumerable<BillInformationDTO>,IGetAllBillsQuery>));
registry.transient<IViewAllBillsReport, ViewAllBillsReport>();
+ registry.transient(typeof (IPresenter), typeof (ReportPresenter<IViewAllIncomeReport,IEnumerable<IncomeInformationDTO>,IGetAllIncomeQuery>));
+ registry.transient<IViewAllIncomeReport, ViewAllIncomeReport>();
}
}
}
\ No newline at end of file
product/Presentation/Presenters/AddReportingTaskPane.cs
@@ -24,9 +24,15 @@ namespace MoMoney.Presentation.Presenters
.with_item(
Build.task_pane_item()
.named("View All Bills")
- .represented_by_image(ApplicationImages.ReadingABill)
+ .represented_by_icon(ApplicationIcons.ViewAllBillPayments)
.when_clicked_execute(() => command.run<IReportPresenter<IViewAllBillsReport, IEnumerable<BillInformationDTO>, IGetAllBillsQuery>>())
)
+ .with_item(
+ Build.task_pane_item()
+ .named("View All Income")
+ .represented_by_icon(ApplicationIcons.ViewAllIncome)
+ .when_clicked_execute(() => command.run<IReportPresenter<IViewAllIncomeReport, IEnumerable<IncomeInformationDTO>, IGetAllIncomeQuery>>())
+ )
.build();
}
}
product/Presentation/Presenters/ReportPresenter.cs
@@ -2,7 +2,7 @@ using Gorilla.Commons.Infrastructure.Container;
using Gorilla.Commons.Utility.Core;
using MoMoney.Presentation.Core;
using MoMoney.Presentation.Model.reporting;
-using MoMoney.Presentation.Views.reporting;
+using MoMoney.Presentation.Views;
namespace MoMoney.Presentation.Presenters
{
product/Presentation/Presenters/ViewAllBillsPresenter.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using MoMoney.DTO;
using MoMoney.Presentation.Core;
-using MoMoney.Presentation.Views.billing;
+using MoMoney.Presentation.Views;
using MoMoney.Service.Contracts.Application;
using ICommandPump=MoMoney.Presentation.Presenters.Commands.ICommandPump;
product/Presentation/Views/IReportViewer.cs
@@ -1,7 +1,7 @@
using MoMoney.Presentation.Model.reporting;
using MoMoney.Presentation.Views.Core;
-namespace MoMoney.Presentation.Views.reporting
+namespace MoMoney.Presentation.Views
{
public interface IReportViewer : IDockedContentView
{
product/Presentation/Views/IViewAllBills.cs
@@ -4,7 +4,7 @@ using MoMoney.DTO;
using MoMoney.Presentation.Presenters.billing;
using MoMoney.Presentation.Views.Core;
-namespace MoMoney.Presentation.Views.billing
+namespace MoMoney.Presentation.Views
{
public interface IViewAllBills : IDockedContentView,
IView<IViewAllBillsPresenter>,
product/Presentation/Views/IViewAllIncomeReport.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using MoMoney.DTO;
+using MoMoney.Presentation.Model.reporting;
+using MoMoney.Service.Contracts.Application;
+
+namespace MoMoney.Presentation.Views
+{
+ public interface IViewAllIncomeReport : IBindReportTo<IEnumerable<IncomeInformationDTO>, IGetAllIncomeQuery>
+ {
+ }
+}
\ No newline at end of file
product/Presentation/Winforms/Views/ReportViewer.cs
@@ -1,7 +1,7 @@
using DataDynamics.ActiveReports;
using Gorilla.Commons.Utility.Extensions;
using MoMoney.Presentation.Model.reporting;
-using MoMoney.Presentation.Views.reporting;
+using MoMoney.Presentation.Views;
namespace MoMoney.Presentation.Winforms.Views
{
product/Presentation/Winforms/Views/ViewAllBills.cs
@@ -2,7 +2,7 @@ using System.Collections.Generic;
using System.Linq;
using MoMoney.DTO;
using MoMoney.Presentation.Presenters.billing;
-using MoMoney.Presentation.Views.billing;
+using MoMoney.Presentation.Views;
namespace MoMoney.Presentation.Winforms.Views
{
product/Presentation/Winforms/Views/ViewAllIncomesReport.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using DataDynamics.ActiveReports;
+using Gorilla.Commons.Utility.Extensions;
+using MoMoney.DTO;
+using MoMoney.Presentation.Model.reporting;
+using MoMoney.Presentation.Views;
+
+namespace MoMoney.Presentation.Winforms.Views
+{
+ public partial class ViewAllIncomeReport : ActiveReport, IViewAllIncomeReport
+ {
+ public ViewAllIncomeReport()
+ {
+ InitializeComponent();
+ name = "View All Income - Report";
+ }
+
+ public string name { get; private set; }
+
+ public void run(IEnumerable<IncomeInformationDTO> income)
+ {
+ ux_company_name.bind_to<IncomeInformationDTO, string>(x => x.company);
+ ux_amount.bind_to<IncomeInformationDTO, string>(x => x.amount);
+ ux_received_date.bind_to<IncomeInformationDTO, string>(x => x.recieved_date);
+ DataSource = income.databind();
+ }
+ }
+}
\ No newline at end of file
product/Presentation/Winforms/Views/ViewAllIncomesReport.Designer.cs
@@ -0,0 +1,139 @@
+namespace MoMoney.Presentation.Winforms.Views
+{
+ /// <summary>
+ /// Summary description for view_all_bills.
+ /// </summary>
+ partial class ViewAllIncomeReport
+ {
+ private DataDynamics.ActiveReports.PageHeader pageHeader;
+ private DataDynamics.ActiveReports.Detail detail;
+ private DataDynamics.ActiveReports.PageFooter pageFooter;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ }
+ base.Dispose(disposing);
+ }
+
+ #region ActiveReport Designer generated code
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewAllBillsReport));
+ this.pageHeader = new DataDynamics.ActiveReports.PageHeader();
+ this.detail = new DataDynamics.ActiveReports.Detail();
+ this.ux_company_name = new DataDynamics.ActiveReports.RichTextBox();
+ this.ux_received_date = new DataDynamics.ActiveReports.RichTextBox();
+ this.ux_amount = new DataDynamics.ActiveReports.RichTextBox();
+ this.pageFooter = new DataDynamics.ActiveReports.PageFooter();
+ ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
+ //
+ // pageHeader
+ //
+ this.pageHeader.Height = 0.25F;
+ this.pageHeader.Name = "pageHeader";
+ //
+ // detail
+ //
+ this.detail.ColumnSpacing = 0F;
+ this.detail.Controls.AddRange(new DataDynamics.ActiveReports.ARControl[] {
+ this.ux_company_name,
+ this.ux_received_date,
+ this.ux_amount});
+ this.detail.Height = 2F;
+ this.detail.Name = "detail";
+ //
+ // ux_company_name
+ //
+ this.ux_company_name.AutoReplaceFields = true;
+ this.ux_company_name.Border.BottomColor = System.Drawing.Color.Black;
+ this.ux_company_name.Border.BottomStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_company_name.Border.LeftColor = System.Drawing.Color.Black;
+ this.ux_company_name.Border.LeftStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_company_name.Border.RightColor = System.Drawing.Color.Black;
+ this.ux_company_name.Border.RightStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_company_name.Border.TopColor = System.Drawing.Color.Black;
+ this.ux_company_name.Border.TopStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_company_name.Font = new System.Drawing.Font("Arial", 10F);
+ this.ux_company_name.Height = 0.25F;
+ this.ux_company_name.Left = 0.875F;
+ this.ux_company_name.Name = "ux_company_name";
+ this.ux_company_name.RTF = resources.GetString("ux_company_name.RTF");
+ this.ux_company_name.Top = 0.125F;
+ this.ux_company_name.Width = 1.625F;
+ //
+ // ux_due_date
+ //
+ this.ux_received_date.AutoReplaceFields = true;
+ this.ux_received_date.Border.BottomColor = System.Drawing.Color.Black;
+ this.ux_received_date.Border.BottomStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_received_date.Border.LeftColor = System.Drawing.Color.Black;
+ this.ux_received_date.Border.LeftStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_received_date.Border.RightColor = System.Drawing.Color.Black;
+ this.ux_received_date.Border.RightStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_received_date.Border.TopColor = System.Drawing.Color.Black;
+ this.ux_received_date.Border.TopStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_received_date.Font = new System.Drawing.Font("Arial", 10F);
+ this.ux_received_date.Height = 0.25F;
+ this.ux_received_date.Left = 0.875F;
+ this.ux_received_date.Name = "ux_due_date";
+ this.ux_received_date.RTF = resources.GetString("ux_due_date.RTF");
+ this.ux_received_date.Top = 0.4375F;
+ this.ux_received_date.Width = 1.6875F;
+ //
+ // ux_amount
+ //
+ this.ux_amount.AutoReplaceFields = true;
+ this.ux_amount.Border.BottomColor = System.Drawing.Color.Black;
+ this.ux_amount.Border.BottomStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_amount.Border.LeftColor = System.Drawing.Color.Black;
+ this.ux_amount.Border.LeftStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_amount.Border.RightColor = System.Drawing.Color.Black;
+ this.ux_amount.Border.RightStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_amount.Border.TopColor = System.Drawing.Color.Black;
+ this.ux_amount.Border.TopStyle = DataDynamics.ActiveReports.BorderLineStyle.None;
+ this.ux_amount.Font = new System.Drawing.Font("Arial", 10F);
+ this.ux_amount.Height = 0.25F;
+ this.ux_amount.Left = 0.875F;
+ this.ux_amount.Name = "ux_amount";
+ this.ux_amount.RTF = resources.GetString("ux_amount.RTF");
+ this.ux_amount.Top = 0.75F;
+ this.ux_amount.Width = 1.6875F;
+ //
+ // pageFooter
+ //
+ this.pageFooter.Height = 0.25F;
+ this.pageFooter.Name = "pageFooter";
+ //
+ // view_all_bills_report
+ //
+ this.MasterReport = true;
+ this.PageSettings.PaperHeight = 11F;
+ this.PageSettings.PaperWidth = 8.5F;
+ this.Sections.Add(this.pageHeader);
+ this.Sections.Add(this.detail);
+ this.Sections.Add(this.pageFooter);
+ this.StyleSheet.Add(new DDCssLib.StyleSheetRule("font-family: Arial; font-style: normal; text-decoration: none; font-weight: norma" +
+ "l; font-size: 10pt; color: Black; ", "Normal"));
+ this.StyleSheet.Add(new DDCssLib.StyleSheetRule("font-size: 16pt; font-weight: bold; ", "Heading1", "Normal"));
+ this.StyleSheet.Add(new DDCssLib.StyleSheetRule("font-family: Times New Roman; font-size: 14pt; font-weight: bold; font-style: ita" +
+ "lic; ", "Heading2", "Normal"));
+ this.StyleSheet.Add(new DDCssLib.StyleSheetRule("font-size: 13pt; font-weight: bold; ", "Heading3", "Normal"));
+ ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
+
+ }
+ #endregion
+
+ private DataDynamics.ActiveReports.RichTextBox ux_company_name;
+ private DataDynamics.ActiveReports.RichTextBox ux_received_date;
+ private DataDynamics.ActiveReports.RichTextBox ux_amount;
+ }
+}
\ No newline at end of file
product/Presentation/Winforms/Views/ViewAllIncomesReport.resx
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="ux_company_name.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <data name="ux_company_name.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <data name="ux_due_date.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <data name="ux_due_date.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <data name="ux_amount.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <data name="ux_amount.RTF" xml:space="preserve">
+ <value>{\rtf1{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\stylesheet{\ql\li0\ri0\nowidctlpar\sl240\slmult\faauto\fs20\f0 Normal;}}\pard\plain\s0\li0\ri0\ql\nowidctlpar\sl240\slmult\faauto\f0\fs20{\f0 richTextBox1\par}}</value>
+ </data>
+ <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>True</value>
+ </metadata>
+</root>
\ No newline at end of file
product/Presentation/Presentation.csproj
@@ -237,6 +237,7 @@
<Compile Include="Views\IViewAllBillsReport.cs" />
<Compile Include="Views\IApplicationDockedWindow.cs" />
<Compile Include="Views\IApplicationWindow.cs" />
+ <Compile Include="Views\IViewAllIncomeReport.cs" />
<Compile Include="Winforms\Resources\ApplicationIcons.cs" />
<Compile Include="Winforms\Resources\ApplicationImages.cs" />
<Compile Include="Presenters\RunQueryCommand.cs" />
@@ -254,6 +255,12 @@
</Compile>
<Compile Include="Views\IAddBillPaymentView.cs" />
<Compile Include="Views\IViewAllBills.cs" />
+ <Compile Include="Winforms\Views\ViewAllIncomesReport.cs">
+ <SubType>Component</SubType>
+ </Compile>
+ <Compile Include="Winforms\Views\ViewAllIncomesReport.Designer.cs">
+ <DependentUpon>ViewAllIncomesReport.cs</DependentUpon>
+ </Compile>
<Compile Include="Winforms\Views\ViewAllBills.cs">
<SubType>Form</SubType>
</Compile>
@@ -458,6 +465,10 @@
<DependentUpon>AddBillPaymentView.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
+ <EmbeddedResource Include="Winforms\Views\ViewAllIncomesReport.resx">
+ <DependentUpon>ViewAllIncomesReport.cs</DependentUpon>
+ <SubType>Designer</SubType>
+ </EmbeddedResource>
<EmbeddedResource Include="Winforms\Views\ViewAllBills.resx">
<DependentUpon>ViewAllBills.cs</DependentUpon>
<SubType>Designer</SubType>