Embodiments described herein lock taxable events that are involved in a tax return as part of generating that tax return. In particular, objects known as locking document lines and locking settlement lines are formed as child objects of a document object that represents the tax return. The locking document lines and locking settlement lines prevent the document or settlement that is being included in the tax return from being edited or voided. The locking document lines and locking settlement lines also uniquely identify the documents and settlement that are included in the tax return so that each document or settlement involved in a return may be viewed at a later date. Since the documents and settlements are locked, when they are viewed at a later date they will contain the same information that was used to form the tax return. This helps reduce discrepancies between the tax return and the underlying taxable events. In further embodiments, the tax liabilities determined in the tax return are automatically posted to the proper accounts in the accounting books as part of saving the tax return. As a result, a separate step of posting is not needed.
In step 100 of
At step 110, GenerateReturnLines API 208 searches a database 210 for events in the date range 202 that are not locked and affect a tax liability. In many embodiments, database 210 contains records for each accounting transaction that affects a company and electronic records of the books of accounts for the company (for example accounts receivable, accounts payable, input tax, output tax and tax liability). For accrual-based accounting, the search of step 110 involves looking in documents tables 212 of database 210 for documents that represent transactions such as invoices, payments and bills. For cash-based accounting, this search involves looking in settlements table 214 for settlements between payments and invoices or bills. In addition, in both accrual-based and cash-based accounting systems, the search of step 110 looks for pre-payment documents. A pre-payment document is a document that reflects payment before an invoice has been issued or a bill has been received. The term “tax event” is used herein to refer to documents and settlements that affect a tax liability.
In some embodiments, the search is extended to look for tax events that are dated before the date range. If such tax events are found and are not locked, they are considered corrections to previous tax returns. In some embodiments, these corrections are tracked separately when preparing the tax return.
Note that the documents and settlements found during the search cannot be locked again. Under embodiments described below, a document or settlement is locked when it is included in a locking document that is saved. By requiring the documents and settlements to be unlocked at step 110, this embodiment prevents a document or settlement from being included in more than one locking document. This ensures a tax event can be included only in one tax return. As described further below, document lines table 218 can be examined to determine if a document or settlement is locked.
At step 112, GenerateReturnLines API 208 generates locking document lines/locking settlement lines 216. Locking document lines and locking settlement lines are created based on the tax event to be locked. The locking document lines/locking settlement lines 216 are child objects of locking document 206. A locking document line contains the following properties:
The LockOriginalTransactionID is a transaction ID associated with the document that generated the tax liability for this locking document line. Under some systems, documents can be edited and each version of the document that is saved is given its own transaction ID. However, every document in the chain of revisions shares the same original transaction ID, which is the transaction ID for the first version of the document in the chain. It is this first transaction ID that is stored in the LockoriginalTransactionID property.
The LatestDocumentModifiedDateTime property is the date/time stamp of the version of the document that generated the tax liability. This property is added as a consistency check to make sure that the correct version of the document is associated with the tax return.
The DocumentLineID property is the document line ID of this locking document line. In most embodiments, this property is set when the locking document is saved, which causes the locking document line to be added to document lines table 218.
The DocumentLineType property identifies this document line as a locking document line. Under some embodiments, there are a large number of possible document line types other than locking document line such as a locking settlement line, journal entry line, deposit line, expense line, and journal entry tax line.
The OwnerDocumentType property identifies locking document 206 as a locking document.
A settlement locking line contains the following properties:
The LockSettlementID property is the identifier in settlement table 214 for the settlement associated with this locking settlement line. The DocumentLineID and OwnerDocumentType properties are the same as for the locking document line. The DocumentLineType identifies this line as a locking settlement line. For accrual-based accounting, a separate locking document line is created for each document found during the search of step 110. In addition, a locking settlement line is created for each settlement of a pre-payment against an invoice or bill. For cash-based accounting, a separate locking settlement line is created for each settlement found during the search of step 110. In addition, a locking document line is created for each pre-payment document received during the reporting period.
In addition, a locking document line is added that includes the original transaction ID of the last locking document that was saved. This locking document line creates a chain of locking documents and prevents editing an early locking document unless a later locking document is voided first.
After the locking document lines or locking settlement lines have been added to the document, GenerateReturnLines API 208 begins computing values that need to be posted in financial accounts 222 to represent the creation or filing of the tax return. In one embodiment, postings are made to an input tax account 224, an output tax account 226, a foreign offset tax account 229 and a tax liability account 228. Input tax account 224 tracks the amount of tax credit that has not been accounted for in a tax return. Output tax account 226 tracks the amount of tax owed that has not been accounted for in a tax return. Foreign offset tax account 229 tracks the amount of tax credit associated with a foreign acquisition that has not been accounted for in a tax return. Tax liability account 228 tracks the amount of tax owed to the taxing authority based on tax returns that have been created.
Before the process of
To begin the process of computing values that need to be posted to financial accounts based on filing the tax return, a tax code is selected from tax code table 230 at step 122. Using the locking document lines/locking settlement lines, documents/settlements in the date range provided by the user that have that tax code are identified. The total output tax and total input tax for those documents/settlements is then computed at step 124 by summing the output tax and the input tax, respectively, of those documents/settlements. The net tax liability is also computed based on the difference between the total output tax and the total input tax. In addition, document/settlements in the date range that involve an importation are also identified and the sum of the input tax associated with those transactions is determined.
At step 126, three journal entry tax lines 232 are added to locking document 206. Journal entry tax lines 232 are child lines of locking document 206 and are used to post credits to input tax account 224 and debits to foreign offset tax account 229 and output tax account 226. One of the journal entry tax lines 232 will be used to post a debit to the output tax account equal to the total output tax for the selected tax code. One of the journal entry tax lines 232 will be used to post a debit to the foreign offset tax account and a credit to the input tax account equal to the total input tax for imports for the selected tax code. The last journal entry tax line 232 will be used to post a credit to the input tax account equal to the total input tax for the selected tax code. These postings effectively remove the tax amounts that were added to these tax accounts by the documents or settlements in the date range with the selected tax code.
At step 128, two journal entry lines 234 are added to the locking document. Journal entry lines 234 are child lines of locking document 206 and are used to post credits and debits to tax liability account 228. One journal entry line 234 will be used to post a debit to tax liability account 228 that is equal to the credit posted to input tax account 224 by journal entry tax line 232. The other journal entry line 234 will be used to post a credit to tax liability account 228 that is equal to the debit posted to the output tax account 226 by journal entry tax line 232.
Together, journal entry tax lines 232 and journal entry lines 234 transfer the tax from input tax account 224 and output tax account 226 to tax liability account 228.
Note that when corrections to a previous period are made, such corrections can appear as unlocked tax events that occur before the date range set by the user. If such unlocked tax events were found during the formation of the locking document lines and locking settlement lines, the journal entry lines and journal entry tax lines will account for these corrections.
At step 130, GenerateReturnLines API 217 determines if there are more tax codes to process. If there are more tax codes, a different tax code is selected at step 122 and steps 124, 126, and 128 are repeated for the new tax code.
When there are no more tax codes at step 130, GenerateReturnLines API 208 returns to the caller. The caller then calls the Save API 217 at step 132. Save API 217 inserts the locking document lines, locking settlement lines, journal entry tax lines and journal entry lines into document lines table 218. Save API 217 then adds the locking document itself to documents table 212 at step 136. This insertion triggers the postings to input tax account 224, output tax account 226, foreign offset tax account 229 and tax liability account 228 at step 138. In particular the entries are posted per tax code.
If posting to any of the accounts fails at step 140, locking document 206 and all of its child document lines, including the locking document lines and locking settlement lines, are removed from database 210 and an error is reported to the user at step 142. Thus, posting to the accounts is integrated with saving locking document 206 to the database.
If the postings succeed, the saving of locking document 206 and its associated child document lines is complete and a tax return 240 can be generated at step 144 that may be filed with the taxing authority. Under one embodiment, tax return 240 lists the date range for the return, the total input tax, total output tax, total foreign offset (import) tax, and net tax liability for that date range on a per tax code basis.
Once locking document 206 has been saved, any documents or settlements that are identified in locking document lines or locking settlement lines cannot be edited or deleted. This prohibition is enforced by database procedures 242, which are used to edit and void documents and settlements in database 210. Specifically, when an edit or void procedure is called to edit or void a document or settlement, the procedure first looks in document lines table 218 to determine if there is a locking document line or locking settlement line for this document or settlement. If there is a locking document line or locking settlement line, the edit or void procedure returns an error. Note that since each locking document contains a locking document line pointing to the previous document, and void procedures 242 will not allow the previous locking document to be edited.
Although a locking settlement line prevents editing or voiding a settlement or editing or voiding the documents involved in a settlement, it does not prevent applying additional settlements between payments and bills/invoices that are involved in the settlement. Thus, if part of an invoice was settled with an earlier payment, a locking settlement line for that settlement would not prevent a new settlement from being formed between a later payment and the invoice.
Note that although the documents and settlements in a date range that are included in a locking document may not be altered, other documents and settlements may be added to the date range after the locking document has been saved. These additional transactions will not affect the locked documents and locked settlements and will not change the values in the locking document or the tax return. Thus, the period covered by the locking document is not locked. Instead, only the transactions that are included in the locking document are locked and cannot be edited or voided.
Using the locking document lines and locking settlement lines of the embodiments described above, a user is able to view a tax return filed for any previous period and see all of the details of the filing. In particular, since the locking document lines/locking settlement lines in the locking document list the documents or settlements that are included in the return, the locking document lines/locking settlement lines can be used to find every document or settlement that was included in the tax return. In addition, since the locking document lines and locking settlement lines prevent the documents and settlements from being changed or voided, the values for the tax return for any previous period will remain unchanged.
When a saved locking document is retrieved, a child line view of the document is initialized. To do this, GetByPrimaryKey API 260 uses database 210 to locate all child lines that were saved in document lines table 218 for the tax return. For each child line, a child object is created and is added to the child line view. This results in child line objects 264, 266, and 268.
Note that GetByPrimaryKey 260 does not perform a search of the database based on the date range for the tax return. Instead, it searches for child lines that had been saved when the locking document for the tax return was saved. As a result, tax events that fall within the date range of the tax return but that were not included in the tax return are not identified when forming child lines 264. Thus, only the tax events that were actually included in the tax return will generate child line objects 264 at step 302.
In particular, because the contents of the locking document are determined by the locking document lines and locking settlement lines and not by the date range of the locking document, back-dated transactions that are within the date range of the tax return will not be interpreted as being part of the tax return simply because the back-dated transaction is in the date range covered by the tax return.
At step 304, a request to view a tax event associated with a child line is received. Using the information in the child line, the document or settlement associated with the child line is identified at step 306. At step 308, the tax event that is identified is retrieved.
If the tax event is a document, database procedures are used to identify the primary key of the locked document using the original transaction id and the latest modified date stored in the child line. Then GetByPrimaryKey API 260 is used to create a document object 282 based on the identified primary key. If the tax event is a settlement, database procedures are used to identify the primary keys of documents involved in the settlement. GetByPrimaryKey API 260 is then used to create document objects 282.
The process of
Embodiments 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 various embodiments 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, telephony systems, distributed computing environments that include any of the above systems or devices, and the like.
Embodiments 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. Some embodiments are designed to 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 are located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 410 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 410 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 be accessed by computer 410. 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 any of the above should also be included within the scope of computer readable media.
The system memory 430 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 431 and random access memory (RAM) 432. A basic input/output system 433 (BIOS), containing the basic routines that help to transfer information between elements within computer 410, such as during start-up, is typically stored in ROM 431. RAM 432 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 420. By way of example, and not limitation,
The computer 410 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
A user may enter commands and information into the computer 410 through input devices such as a keyboard 462 and a pointing device 461. These and other input devices are often connected to the processing unit 420 through a user input interface 460 that is coupled to the system bus. A monitor 491 or other type of display device is also connected to the system bus 421 via an interface, such as a video interface 490. In addition to the monitor, computers may also include other peripheral output devices such as printer 496, which may be connected through an output peripheral interface 495.
The computer 410 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 480. The remote computer 480 may be a personal computer, a hand-held device, 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 410. The logical connections depicted in
When used in a LAN networking environment, the computer 410 is connected to the LAN 471 through a network interface or adapter 470. When used in a WAN networking environment, the computer 410 typically includes a modem 472 or other means for establishing communications over the WAN 473, such as the Internet. The modem 472, which may be internal or external, may be connected to the system bus 421 via the user input interface 460, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 410, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.