Many large businesses rely on enterprise resource planning computing architectures and systems to electronically manage and coordinate business resources, information, and functions. In large organizations these computing architectures may distribute functionality across many different systems. For example, a global business may rely on location-specific logistics systems to process orders in different localities, division specific supply chain management systems to manage supply chains across geographies, and business specific accounting systems to manage financial transactions at a business level.
While many enterprise resource planning architectures support distributing computing functions across a plurality of systems, in many instances these architectures rely on single systems to perform calculations, transformations, or other operations relating to one or more other systems, with the results stored locally on these systems and then replicated to the other systems.
Because the accounting system 16 primarily stores objects, the general ledger accounts 17 from the accounting system 16 are replicated 12 to logistics system 10 in order to identify ledger accounts associated with a financial transaction. The logistics system 10 then uses transaction data 11 corresponding to a transaction processed by the logistics system 10 together with the replicated account information 12 and accounting logic 13 to identify the appropriate accounts relating to the transaction data 11. After identifying the appropriate account, the logistics system 10 generates a financial document 14 to record the financial transaction associated with the identified account. The financial document 14 is then replicated back to the account system 16 and it is also stored locally in a financial database 15 on the logistics system 10.
There are several limitations presented by this architecture. First, because data, such as the general ledger accounts 17 and financial documents 14, is being replicated between the accounting 16 and logistics 10 systems, there are data consistency issues. Second, while the logistics system 10 and accounting system 16 are technically two separate systems, an organization can not merely upgrade or switch its accounting system 16 to gain additional features or functionality because the accounting calculations, operations, and logic are on the logistics system 10. Similarly, an organization seeking to upgrade its accounting system 16 may also have to unnecessarily upgrade its logistics system 10 as well since the accounting functions are on the logistics system 10. Third, since the accounting transactions, calculations, and operations are conducted through the logistics system 10, users seeking to modify accounting operations must be able to access the logistics system as well, resulting in additional security concerns.
The aforementioned limitations become even greater concerns when a plurality of logistics systems 10a, b, and c, are introduced as shown in
While the aforementioned example relates to an accounting system 16 and logistics system 10, the example is applicable to variety of different architectures with different systems that rely on one system to perform calculations, transformations, or other operations on behalf of another system. In other words, instead of logistics system 10 and accounting system 16, the example applies equally to other types of systems, such as purchasing systems, supply chain systems, human resources systems, customer service systems, data management systems, and other systems.
There is thus a need for an enterprise resource planning system that decentralizes operations by distributing data calculation, transformation, and operations across different computing systems according to the role of the system.
An embodiment of the invention may include an enterprise resource planning system including an accounting system that receives notifications containing financial data from a logistics system after the logistics system has processed a transaction relating to the procurement, maintenance, or transportation of materials, facilities, or personnel. Once the accounting system receives the notification, it may extract and/or convert the financial data to identify a general ledger account associated with the financial data. After identifying the account, the accounting system may generate and post an accounting entry for the financial data in a financial document which may then be stored in the accounting system.
An embodiment shown in
Once the notifications have been received by accounting system 34, the transaction data 32 may be extracted and/or converted from the notification 38. Accounting system 34 may then use accounting logic 36 to identify which account(s) in a database of general ledger accounts 37, which may be maintained by the accounting system 34, may be applicable for reporting the transaction data 32. Based on the accounting logic 36, the accounting system 34 may generate a financial document 35 posting or recording the financial transaction involving the transaction data 32 and the account(s) from the general ledger 37. This technique of using accounting logic 36 in conjunction with general ledger account information 37 and data contained in a notification received by the accounting system 34 to generate and/or post a financial document 35 may be used in other embodiments described herein to generate and/or post other financial documents 35.
In an embodiment the financial document data 35, general ledger account information 37, and other accounting data may be maintained centrally by the accounting system 34, eliminating any replication of accounting data to other systems. In an embodiment, logistics related data, such as transaction data 32, may be maintained centrally by the logistics system generating the data, eliminating any replication of logistics data to other systems.
In an embodiment the accounting system 34 may be upgraded and/or replaced by a third party accounting system 34 supporting a standardized or predetermined messaging protocol without the need to upgrade other systems. In an embodiment any of the logistics systems 31a, b, or c, may be upgraded and/or replaced by a third party logistics systems supporting a standardized or predetermined messaging protocol without the need to upgrade other systems.
In an embodiment access to the accounting system 34 may be restricted to a subset of users of the accounting system. In an embodiment access to the logistics system 31a, b, and c, may be restricted to a subset of users of the respective logistics systems.
In an embodiment a record of a notification being sent or received is stored for a specified period. In an embodiment a confirmation is sent after successfully receiving a notification. In an embodiment a record of notification being sent or received is deleted after sending or receiving a confirmation.
In an embodiment notifications are sent in XML format. In an embodiment notifications are sent using a web-based communications protocol.
Sometime later, the invoice may get posted 43. Although
Sometime later, the accounting system 34 may record one or more pre-payments 54 related to the sales order 51 and goods issued 55. When this happens, a fourth system, which may be the same or different system from the other three systems, may synchronously read pre-payment information 54 from the accounting system 34. Pre-payment information 54 may used, for example, to credit or subtract advance payments from a total balance due to ensure that a customer is billed the correct amount. When billing information 57 is received by the fourth system, the fourth system may extract billing data from the information 57 and generate and/or send an aggregated and asynchronous notification to the accounting system 34. This notification may include extracted billing information 57, pre-payment information 54, and/or order information 52. The accounting system 34, may generate a financial document 35 based on the notification.
Once the accounting system 34 receives the notification 66, it may then generate and post a financial document 35 relating to the price update 62. The accounting system 34 may use the price update 62 in combination with a quantity update 63 received through notification 67 before or after price update 62 and/or a cost center rate update 64 received through notification 68 before or after the price update 62 and/or quantity update 63 to calculate an updated valuation 69 using, for example, accounting logic 36. The accounting system 34 may then create and/or post a financial document 35 based on the updated valuation 69. The price updates 62, quantity updates 63, and cost center rate updates 64 may be calculated or received by one system or a plurality of different systems.
In various embodiments when quantity updates 63 and/or cost center rate updates 64 are received at one or more systems, the systems may then generate and send notifications 67 and 68 to the accounting system 34 and/or a second system storing the quantity updates 63 and/or cost center rate updates 64 as progress reports 61. The notifications 66 may be aggregated and distributed asynchronously to the accounting system 34 and/or second system at specified intervals or under specified conditions. The second system storing the progress reports 61 may then generate and send notifications 65 to the accounting system 34 and/or other systems depending on the settings of the second system. The accounting system 34 may create and/or post financial documents 35 based on the notifications 65 containing data from one or more progress reports 61. The notifications 65 may be aggregated and distributed asynchronously to the accounting system 34 and/or other systems at specified intervals or under specified conditions.
In an embodiment, memory 73 may contain different components for retrieving, presenting, changing, and saving data. Memory 73 may include a variety of memory devices, for example, Dynamic Random Access Memory (DRAM), Static RAM (SRAM), flash memory, cache memory, and other memory devices. Additionally, for example, memory 73 and processor(s) 72 may be distributed across several different computers that collectively comprise a system.
Processor 72 may perform computation and control functions of a system and comprises a suitable central processing unit (CPU). Processor 72 may comprise a single integrated circuit, such as a microprocessor, or may comprise any suitable number of integrated circuit devices and/or circuit boards working in cooperation to accomplish the functions of a processor. Processor 72 may execute computer programs, such as object-oriented computer programs, within memory 73.
Note that while embodiments of the present invention are described in the context of a fully functional computer system, those skilled in the art will appreciate that modules of the present invention are capable of being distributed in a variety of forms across a plurality of systems. Embodiments consistent with the invention may also include one or more programs or program modules on different computing systems running separately and independently of each other, while in their entirety being capable of performing business transactions in a large enterprise environment or in a “software on demand” environment. These programs or program modules may be contained on signal bearing media that may include: recordable type media such as floppy disks and CD ROMS, and transmission type media such as digital and analog communication links, including wireless communication links.
The foregoing description has been presented for purposes of illustration and description. It is not exhaustive and does not limit embodiments of the invention to the precise forms disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from the practicing embodiments consistent with the invention. For example, some of the described embodiments may include software and hardware, but some systems and methods consistent with the present invention may be implemented in software or hardware alone. Additionally, although aspects of the present invention are described as being stored in memory, one skilled in the art will appreciate that these aspects can also be stored on other types of computer-readable media, such as secondary storage devices, for example, hard disks, floppy disks, or CD-ROM; the Internet or other propagation medium; or other forms of RAM or ROM.