Generating financial data documents using templates
A computing system is disclosed including a computer processor configured to receive a selection of a template and identify a data field in the template. The data field indicates financial data to fill in the data field. The computer processor is configured to retrieve the financial data for the data field from stored financial data and generate a document according to the selected template. The generated document has the financial data within the data field.
Latest Microsoft Patents:
The present application is a continuation of and claims priority of U.S. patent application Ser. No. 13/222,425, filed Aug. 31, 2011, which is a continuation of and claims priority of U.S. patent application Ser. No. 12/351,169, filed Jan. 9, 2009, which is a continuation of and claims priority of U.S. patent application Ser. No. 10/985,580, filed Nov. 10, 2004. The contents of these applications are hereby incorporated by reference in their entirety.
BACKGROUNDComputerized accounting systems have grown in popularity in the past decade. The traditional system of double entry accounting has been a natural process to be adapted to computers. As a result of accounting data being in a computerized format, more and more reports and information can be gleaned from the accounting data. However, the ability to view the accounting data and related financial documents has often been an afterthought in modern accounting programs. Further, creating a more familiar user interface to enter and modify accounting data without having the user interface mimic the traditional and often confusing ledger pages has been a challenge.
SUMMARYIn one exemplary embodiment, a computing system includes a computer processor configured to receive a selection of a template and identify a data field in the template. The data field indicates financial data to fill in the data field. The computer processor is configured to retrieve the financial data for the data field from stored financial data and generate a document according to the selected template. The generated document has the financial data within the data field.
In one exemplary embodiment, a method includes receiving a selection of a template and identifying a data field in the template. The data field indicates financial data to fill in the data field. The method also includes retrieving the financial data for the data field from stored financial data and generating a word processing program document according to the selected template. The document has the financial data within the data field.
An exemplary method can also include one or more of storing a financial document as a word processing file, allowing a user to modify a word processing program document, allowing the modifications made on the word processing program document to be communicated to a financial program, allowing a user to edit existing templates, allowing a user to create templates, allowing a user to select from a displayed list of data fields to be displayed on the template, allowing a user to open a word processing version of a saved financial document and referring back to the financial program to update the data displayed in the financial document, allowing a user to select to communicate a financial document, recognizing that the financial document has a related template and communicates the document using the template in the word processing program, communicating the document by one of email, fax, a communication link to a printer and a communication link to a storage device and using the word processing program such that the word processing program operates internally and is not visible to the user.
Although the following text sets forth a detailed description of numerous different embodiments, it should be understood that the legal scope of the description is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment since describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims.
It should also be understood that, unless a term is expressly defined in this patent using the sentence “As used herein, the term ‘——————’ is hereby defined to mean . . . ” or a similar sentence, there is no intent to limit the meaning of that term, either expressly or by implication, beyond its plain or ordinary meaning, and such term should not be interpreted to be limited in scope based on any statement made in any section of this patent (other than the language of the claims). To the extent that any term recited in the claims at the end of this patent is referred to in this patent in a manner consistent with a single meaning, that is done for sake of clarity only so as to not confuse the reader, and it is not intended that such claim term by limited, by implication or otherwise, to that single meaning. Finally, unless a claim element is defined by reciting the word “means” and a function without the recital of any structure, it is not intended that the scope of any claim element be interpreted based on the application of 35 U.S.C. §112, sixth paragraph.
The steps of the claimed method and apparatus are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the methods or apparatus of the claims include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The steps of the claimed method and apparatus may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The methods and apparatus may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
The template may have a field or many fields related to the selected template. Referring to
Smart documents may be documents in a word processor such Microsoft® Office Word or workbooks in a spreadsheet program such as Microsoft Office Excel that are associated with an XML schema so data in a document, rather than just being a paragraph or range of cells, acquire special meaning. For example, rather than knowing that a paragraph is the second one in the document, it may be much more valuable to know that the paragraph is the one destined to contain a product description. What smart documents may offer is a way to make the host application more responsive to the data in a document or workbook. Smart documents help the data become meaningful to the host application. In this way, the application, such as Word or Excel, may be more than a feature-rich application by becoming contextually aware of what users are producing with those features.
Creating smart document code may be simple and uncomplicated or it can contain thousands of code lines and reach far into a company's enterprise. Smart document solutions may be written using many modern programming systems such as Microsoft Visual Basic® 6.0, Microsoft Visual Basic .NET, Microsoft Visual C#® .NET, or Microsoft Visual C++® development systems. Users may deploy smart documents over a corporate intranet, over the Internet, or through Web sites.
Although a user may create a smart document solution as a dynamic linked library (DLL), a user may also create a smart document solution as an XML file using an XML editor such as a word processor such as Microsoft Notepad or Word. Note that a smart document XML file may be limited to static text, hyperlinks, document fragments, and images. No matter which of the two approaches a user may take, on example of the smart document development cycle may be as follows:
1. Attach an XML schema to a document and associate XML elements with the portions of the document or workbook that will have smart document actions or help content associated with them.
2. Use the smart document API or the smart document XML file schema to write code or XML that displays controls in the Document Actions task pane and takes action when the user interacts with the controls.
3. Store the smart document code and all of the files used by the smart document on a file server or a Web server that your users can access.
4. Create an XML expansion pack manifest file that references all of the files used by the smart document solution.
5. Use the user interface to reference the XML expansion pack manifest file and attach the solution to the document or workbook.
6. Distribute the document or workbook as a template. When a user creates an instance of the document or workbook from the template, the smart document and any supporting files used by the smart document may be downloaded and registered locally on the user's computer without any user intervention.
At block 210, an open field may be identified in the selected template that can be filled in with data from the accounting program. Referring to
At block 220, data stored by the accounting program that is appropriate to fill in the open field in the selected template may be selected. This data may be stored as any type of file that will be understood by the word processor, for example, as an XML schema file.
At block 230, the selected data and the selected template may be passed to the word processor. The data stored at block 220 may be passed along with the selected template to the word processor as any type of file that may be understood by the word processor, such as an XML schema file and a template file.
At block 240, a document may be opened in the word processing program and the word processing program may display the selected template and the selected data in the appropriate field.
Again referring to
In addition, some users may simply be more comfortable using a word processing type format to enter data in an accounting program. There may be an option for all changes that were made in the word processing program to be automatically communicated to the accounting program, where the changes will be saved in the accounting program. In effect, the word processing program may be a substitute user interface for the accounting program.
Users may also be permitted to edit templates that are communicated to the word processor.
Referring to
In a similar manner, a user may be able to create entirely new templates. Referring to
The user may also be able to open a word processing version of a saved financial document and the word processing program may refer back to the accounting program to update the data displayed in the financial document. For example, if a user saved a prepared invoice as invoice123 (invoice123.doc), for example, at a point in the future, the user could open up invoice123.doc and the fields in invoice123.doc may be automatically updated. As an example, say a vendor mailed invoice123.doc and later the customer of invoice123.doc moved and obtained a new telephone number. This new address and telephone number of the customer may be added and stored in the accounting program. At some point in the future, the vendor may open up invoice123.doc in order to discuss a dispute relating to the invoice. Upon opening the invoice, the word processor may refer back to the accounting program to determine whether any of the data in the displayed fields has been updated. If the data in the displayed field has been updated (such as the updated address and telephone number), the new address and telephone number of the client may be displayed on the invoice. In an alternate embodiment, the user will be presented an option to have the fields updated with the current information in the accounting program. In yet another alternative, the user will be presented the option to accept the version of the data that was stored with the word processing document or the most recent version in the accounting program.
The user may select to communicate a financial document, such as email the document, fax the document, communicate the document to a printer, communicate the document to a web site, etc. The program may recognize that the financial document has a related template and the program may communicate the document using the template in the word processing program. For example, a user may be using the accounting program and may select to print an invoice. The invoice may have a selected template associated with the invoice. By using the template additional features available by using a word processor may be utilized. For example, many accounting programs may have a limited selection of fonts that can be used on an invoice where the fonts available to a modern word processor may be quite numerous. By simply selecting to print the invoice, the program may forward the invoice template and the relevant invoice data to the word processor, which may then format the data and print the invoice. By using the word processor, superior printing results and options may be obtained. As can be seen in
In addition, the word processor may work entirely in the background of the program. For example, the user may never see a word processor begin execution, format the template and the received data, display the data and then print the data. The word processing program may work entirely in the memory and processor of the computer and there may be no visual indication to the user that a word processor was involved with communicating the document.
Although many of the descriptions herein have focused on invoices, other financial documents may also benefit from such a program. For example, virtually any financial report from the accounting program could have an improve visual appearance if a template and data were sent to a word processor where the resulting document could be easily formatted in the hopes of creating a more visually appealing and useful document. Datasheet for customers, vendors, employees, items or services also could benefit as could item receipts, vendor credit memos, cash sales, cash purchases, phantom checks (check for record keeping purposes), customer payment receipts, timesheets, time entries, vendor bills, journal entries, credit card charges, deposit slips, fund transfers, etc.
Although the forgoing text sets forth a detailed description of numerous different embodiments, it should be understood that the scope of the patent is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims.
Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present claims. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the claims.
Claims
1. A computer-implemented method comprising:
- detecting an eXtensible Markup Language (XML) node in a template associated with a first computing program, wherein the XML node corresponds to a data field in the template and includes a machine instruction corresponding to a data retrieval operation associated with the data field;
- identifying a context of the data field based on the machine instruction;
- generating a data query based on the identified context;
- based on the data query, retrieving data from a data store associated with the first computing program; and
- instructing a second computing program to generate a document according to the template and the retrieved data, the second computing program being different from the first computing program.
2. The computer-implemented method of claim 1, wherein the first computing program comprises a financial program.
3. The computer-implemented method of claim 1, and further comprising:
- receiving an indication of a user input; and
- selecting the template based on the indication of the user input; and
- wherein the first computing program generates and sends an instruction to the second computing program to generate the document.
4. The computer-implemented method of claim 1, and further comprising:
- identifying a plurality of data fields in the template; and
- for each of the plurality of data fields, determining whether the data field is an open data field that is fillable with data.
5. The computer-implemented method of claim 4, wherein determining whether the data field is an open data field comprises querying the first computing program to determine whether the data field includes data.
6. The computer-implemented method of claim 1, wherein the second computing program comprises a word processing program having a word processing function to modify the generated document.
7. The computer-implemented method of claim 6, wherein the word processing function is not available in the first computing program.
8. The computer-implemented method of claim 1, and further comprising:
- receiving an indication of a user input from the second computing program;
- based on the indication of the user input, identifying a modification to the template; and
- based on the modification, modifying the template associated with the first computing program.
9. The computer-implemented method of claim 1, and further comprising:
- generating a representation of a user interface display associated with the first computing program, the user interface display including a document export user input mechanism;
- receiving an indication of user actuation of the document export user input mechanism;
- based on the indication of user actuation of the document export user input mechanism, instructing the second computing program to initiate a document export process in which the second computing program formats and exports the document generated according to the template and retrieved data.
10. The computer-implemented method of claim 9, wherein the document export process operates in the background of the first computing program.
11. The computer-implemented method of claim 10, wherein the document export process comprises at least one of:
- a document printing process in which the document is printed using a printing device; or
- a document transfer process in which the document is communicated to another user through electronic messaging.
12. A computer-implemented method comprising:
- identifying a selected template in a financial program;
- searching the template for XML nodes embedded in the template, each XML node corresponding to one or more data fields to be filled in with financial data;
- retrieving financial data based on the XML nodes; and
- generating a document having the financial data, using a computer processor.
13. The computer-implement method of claim 12, wherein the document comprises a word processing document.
14. The computer-implement method of claim 12, wherein the document comprises a spreadsheet document.
15. The computer-implement method of claim 12, and further comprising creating the template by defining the XML nodes in the template using a computing program other than the financial program.
16. A computing system comprising:
- a processor; and
- memory storing instructions executable by the processor, wherein the instructions configure the computing system to: receive an instruction from a first computing program; based on the received instruction, identify a template and data associated with a data field in the template, the template having a first file format associated with the first computing program; based on the template and the data, generate a document having a second file format associated with the second computing program; generate a representation of a document editor user interface display that is associated with the second computing program and displays the document, the document editor user interface display including an edit user input mechanism; based on an indication of user actuation of the edit user input mechanism, identify a modification to the document; and modify the document in the second computing program based on the identified modification.
17. The computing system of claim 16, wherein the instructions configure the computing system to:
- communicate an indication of the identified modification to the first computing program.
18. The computing system of claim 17, wherein the modification to the document comprises a modification to the template.
19. The computing system of claim 18, wherein the second computing program receives an indication of a valid template field from the first computing program, and wherein the edit user input mechanism comprises a user interface element that represent the valid field and is actuatable to add the valid field to the template.
20. The computing system of claim 16, wherein the instructions configure the computing system to:
- store the document;
- receive an indication of a user input to open the stored document; and
- based on the indication, instruct the first computing program to retrieve updated data for the document.
5652842 | July 29, 1997 | Siegrist et al. |
5652850 | July 29, 1997 | Hollander |
5761650 | June 2, 1998 | Munsil et al. |
5832460 | November 3, 1998 | Bednar et al. |
5909673 | June 1, 1999 | Gregory |
5963925 | October 5, 1999 | Kolling et al. |
6088711 | July 11, 2000 | Fein et al. |
6094505 | July 25, 2000 | Lech et al. |
6195665 | February 27, 2001 | Jarett |
6249770 | June 19, 2001 | Erwin et al. |
6668255 | December 23, 2003 | Mielenhausen |
6748367 | June 8, 2004 | Lee |
6934905 | August 23, 2005 | Tighe |
6985922 | January 10, 2006 | Bashen |
7035837 | April 25, 2006 | Reulein |
7107229 | September 12, 2006 | Sullivan |
7131063 | October 31, 2006 | Mateos |
7155670 | December 26, 2006 | Takizawa et al. |
7421648 | September 2, 2008 | Davis |
7444302 | October 28, 2008 | Hu |
7487446 | February 3, 2009 | Hargarten |
7822769 | October 26, 2010 | Rohan |
7836394 | November 16, 2010 | Linder |
8032829 | October 4, 2011 | Hargarten |
8055575 | November 8, 2011 | Grody |
8185445 | May 22, 2012 | Perlmuter |
8707168 | April 22, 2014 | Hargarten et al. |
20020138527 | September 26, 2002 | Bell et al. |
20020184485 | December 5, 2002 | Dray et al. |
20030004986 | January 2, 2003 | Lin et al. |
20030041077 | February 27, 2003 | Davis |
20030149935 | August 7, 2003 | Takizawa |
20030196167 | October 16, 2003 | Dewar |
20040024835 | February 5, 2004 | Howard |
20040068517 | April 8, 2004 | Scott |
20040153465 | August 5, 2004 | Singleton et al. |
20040162833 | August 19, 2004 | Jones et al. |
20040172592 | September 2, 2004 | Collie et al. |
20040221233 | November 4, 2004 | Thielen |
20040230892 | November 18, 2004 | Horton |
20040243938 | December 2, 2004 | Weise et al. |
20050102212 | May 12, 2005 | Roy |
20050144096 | June 30, 2005 | Caramanna et al. |
20050182669 | August 18, 2005 | Tinnirello et al. |
20060064313 | March 23, 2006 | Steinbarth |
20060190814 | August 24, 2006 | Collie |
20060216620 | September 28, 2006 | Fu |
1447754 | August 2004 | EP |
2004192427 | July 2004 | JP |
- European Search Report for EP 05109734.3 dated Feb. 22, 2006.
- Prosecution History for U.S. Appl. No. 12/351,169: Issue Notification mailed on Sep. 14, 2011; Notice of Allowance mailed on Jul. 18, 2011; Amendment and Terminal Disclaimer filed Jun. 6, 2011; Office Action mailed Mar. 23, 2011.
- Prosecution History for U.S. Appl. No. 10/985,580: Issue Notification mailed Jan. 14, 2009; Notice of Allowance mailed Sep. 19, 2008; Request for Continued Examination and Amendment filed Aug. 20, 2008; Office Action mailed Feb. 20, 2008; Amendment filed Nov. 19, 2007; Office Action mailed Jun. 22, 2007; Preliminary Amendment filed Sep. 12, 2005.
- Prosecution History for U.S. Appl. No. 13/222,425: Issue Notification mailed Apr. 2, 2014; Notice of Allowance mailed Dec. 4, 2013; Amendment filed Oct. 4, 2013; Office Action mailed Jul. 15, 2013.
- Bourret et al., “A Generic Load/Extract Utility for Data Transfer between XML Documents and Relational Databases,”: Proceedings of International Workshop on Advance Issues of E-Commerce and Web-Based Information Systems, 2000, XP002169780.
- Furuta, Richard, et al., “Document Formatting Systems: Survey, Concepts, and Issues”, ACM Computing Surveys (CSUR), vol. 14, Issue 3, Sep. 1982, pp. 417-472.
- Reiss, Steven, “The Desert Environment”, ACM Transactions on Software Engineering and Methodology (TOSEM), vol. 8, Issue 4, Oct. 1999, pp. 297-342.
- Notice of Preliminary Rejection from Korean Patent Application No. 10-2005-0087797, dated Apr. 2, 2012, 5 pages.
- Interrogation, with English translation, for Japanese Appeal No. 2012-005919 (Japanese Patent Application No. 2005-310228), dated Sep. 25, 2012, 12 pages.
- Examiner's Report dated Jan. 10, 2013 in Canadian Application Serial No. 2,522,673, filed Oct. 7, 2005, 3 pages.
- Japanese Patent Application No. 2005-310228 Notice of Rejection mailed on Jan. 14, 2011, 7 pages.
- “Office Action Issued in Canadian Patent Application No. 2,522,673” Mailed Date: Jan. 4, 2016, 5 Pages.
- “Office Action Issued in Canadian Patent Application No. 2522673”, Mailed Date: Feb. 2, 2015, 4 Pages.
- Canadian Office Action for Patent Application No. 2,522,673 dated Feb. 14, 2014, 2 pages.
- Final Office Action for Japanese Patent Application No. 2005-310228 dated Dec. 2, 2011, 6 pages with English Translation.
- Notice of Rejection for Japanese Patent Application No. 2005-310228 dated Aug. 12, 2011, 5 pages with English Translation.
- European Article 94(3) communication for European Patent Application No. 05 109 734.3 dated Oct. 19, 2016, 7 pages.
- Anonymous: “Microsoft Office 2003 Editions Product Guide”, Sep. 1, 2003: 41 pages.
Type: Grant
Filed: Mar 3, 2014
Date of Patent: Jan 10, 2017
Patent Publication Number: 20140181643
Assignee: Microsoft Technology Licensing, LLC (Redmond, WA)
Inventors: Christopher S. Hargarten (Seattle, WA), Monique H. Ozoux-Dean (Seattle, WA), Ning Sun (Redmond, WA)
Primary Examiner: Laurie Ries
Application Number: 14/195,266
International Classification: G06F 17/00 (20060101); G06F 17/24 (20060101); G06F 17/22 (20060101); G06Q 30/04 (20120101);