The description relates to calculating, in a computer system, a tax amount for a transaction when multiple types of tax may apply.
Taxes are administered and collected in many jurisdictions, regions or countries of the world. Particularly, the occurrence of a financial transaction such as a sale of goods or services may trigger tax liabilities according to one or more tax types of a specific region. In many areas, determining an applicable tax amount involves a complicated calculation that depends on several different parameters, some of which may be unique to the transaction at hand. Where several tax types apply, the final tax calculation may be a combination of these several tax types. Moreover, the system needs a selection mechanism for choosing the correct tax type(s) to apply in a given situation. Changes in tax laws occur from time to time, and the system therefore needs to be flexible so that it can be adapted to such changes.
The invention relates to calculating a tax amount when multiple tax types may apply.
In a first general aspect, a computer program product to be used in calculating a tax amount where multiple types of taxes may apply to a transaction, tangibly embodied in an information carrier, comprises first data structures comprising tax formulas, each of the tax formulas being associated with one of several tax types. The computer program product further comprises second data structures comprising tax combinations of the several tax types, each tax combination having associated therewith at least one of the several tax types, one of the tax combinations to be selected for use with a specific transaction. The computer program product further comprises executable instructions that when executed determine, from information associated with the specific transaction, which one of the tax combinations to use in calculating a tax amount for the specific transaction, the tax amount to be calculated using the formula associated with any of the tax types included in the selected tax combination.
In selected embodiments, upon one of the tax combinations being selected, there is displayed, to a user, input parameters and output parameters of the formula associated with any of the tax types included in the selected tax combination. The computer program product may further comprise a third data structure comprising tax type categories, each of the several tax types being associated with one of the tax type categories, wherein upon selection of a specific one of the tax type categories, there is presented the tax types associated with the selected tax type category. The computer program product may further comprise a third data structure comprising parameter sets for each of the respective tax formulas, each parameter set including at least one input parameter and at least one output parameter for the tax formula. Upon a specific one of the tax types being included in one of the tax combinations, a determination may be made whether the specific tax formula requires an input that is to be obtained using another of the tax formulas. The computer program product may further comprise a data structure editing module, wherein the first and second data structures are created with user input made using the data structure editing module. Third data structures may be created using the data structure editing module, the third data structures comprising tax type combinations, each tax type combination being associated with several tax types and their corresponding formulas. The data structure editing module may provide that the user cannot edit a specific one of the tax type combinations if it is already included in one of the tax combinations. The user may create a specific one of the tax combinations by associating one of the tax type combinations with a parameter set, the parameter set including input parameters and output parameters of the formula associated with any of the tax types included in the specific tax combination. Upon the user selecting the tax type combination, the data structure editing module may identify any matching parameter sets from several parameter sets. The computer program product may further comprise a priority list of several criteria, each of the criteria being associated with one of the tax combinations, the executable instructions to evaluate the several criteria, in order, using the information associated with the specific transaction, until a match is detected or the priority list is exhausted. The executable instructions may include several alternative priority lists, one of them to be selected using the information associated with the specific transaction.
In a second general aspect, a computer program product to be used in calculating a tax amount where multiple types of taxes may apply to a transaction, tangibly embodied in an information carrier, comprises:
first data structures comprising tax type categories, each tax type category having associated therewith at least one of several tax types;
second data structures comprising tax formulas, each of the tax formulas being associated with one of the several tax types;
third data structures comprising tax type combinations, each tax type combination having associated therewith at least one of the several tax types and an associated at least one of the tax formulas;
fourth data structures comprising parameter sets for each of the tax formulas, each parameter set including at least one input parameter and at least one output parameter for the tax formula;
fifth data structures comprising tax combinations of the several tax types, each tax combination having associated therewith at least one of the several tax types and at least one of the parameter sets, one of the tax combinations to be selected for use with a specific transaction; and
executable instructions that when executed determine, from information associated with the specific transaction, which one of the tax combinations to use in calculating a tax amount for the specific transaction, the tax amount to be calculated using the formula associated with any of the tax types included in the selected tax combination.
In a third general aspect, a system for calculating a tax amount where multiple types of taxes may apply to a transaction comprises a transaction management module for managing transactions for which multiple types of taxes may apply, each transaction being associated with specific information. The system further comprises a tax calculating module for calculating a tax amount for any of the transactions. The tax calculating module includes first data structures comprising tax formulas, each of the tax formulas being associated with one of several tax types. The tax calculating module further includes second data structures comprising tax combinations of the several tax types, each tax combination having associated therewith at least one of the several tax types. The tax calculating module is to select one of the tax combinations for use with a specific transaction. The tax calculating module further includes executable instructions for the tax calculating module to determine, from the specific information associated with the specific transaction, which one of the tax combinations to use in calculating a tax amount for the specific transaction, the tax amount to be calculated using the formula associated with any of the tax types included in the selected tax combination.
In selected embodiments, the tax calculating module includes a priority list of several criteria, each of the criteria being associated with one of the tax combinations, the several criteria to be evaluated, in order, using the specific information associated with the specific transaction, until a match is detected or the priority list is exhausted. The tax calculating module may include several alternative priority lists, one of them to be selected using the information associated with the specific transaction. Upon one of the tax combinations being selected, the tax calculation module may display, to a user, input parameters and output parameters of the formula associated with any of the tax types included in the selected tax combination.
Advantages of the systems and techniques described herein may include any or all of the following: Providing an improved tax calculation system for calculating a tax amount where multiple types of tax may apply; providing a tax calculating system with increased flexibility; providing an improved determination of the applicable tax type among multiple tax types.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.
Like reference numerals in the various drawings indicate like elements.
The computer system 102 includes a transaction management module 108 that is used in initiating, defining, performing, documenting and following up on transactions such as sales orders or service orders. For example, the transaction management module allows a user to initiate a new sales order through the user system. The system may store initiated transactions and their related documentation in a transaction repository 110. In some implementations, the computer system 102 receives electronic records of transactions over a computer network, correctly interprets the specifics of each received transaction record and updates the transaction repository accordingly. Thus, the repository 110 may contain several sales orders that are managed by the system 100.
The computer system 102 includes a tax calculation module 112 that calculates a tax amount for any or all transactions in the system. For example, the module 112 can calculate the tax that applies to the sale of a specific product to a buyer in a specific country. The calculation is performed using information associated with the transaction, such as the nature of the sold product, the purchase amount and the buyer's address. What information is relevant for the tax calculation often varies between different tax systems, as well as between different tax types in a single system. The tax calculation module 112 is flexible and adaptive, so that it is useful in different taxation scenarios where more than one tax type may apply.
The tax calculation module calculates a tax amount by applying one of several tax combinations 114 to a specific transaction. The tax combination 114 is associated with one or more tax types 116 and a tax parameter 118 for the associated tax type. The tax type is associated with a tax formula 120 that is used in calculating the tax amount according to the tax type. The tax parameter 118 may be a set of input and output parameters to be used in the tax formula. The tax type may be defined as an instance of a tax type category 122. That is, there may be several tax types stemming from the same tax type category 122. In situations where more than one of the tax types may apply to the transaction(s), a tax type combination 124 may be defined. The tax type transaction groups one or more tax types, and the corresponding tax formula(s), for collective association with the tax combination 114. Following are concrete examples of the components in, and operation of, the tax calculation module 112.
A total amount column 214 lists the total sales amount for the respective items: $100 for the first item (ten items at $10 apiece) and $400 for the second item (20 items at $20 apiece). Applying the proper tax combination to these respective totals yields the results listed in a tax amount column 216, namely $10 for the first item and $40 for the second item.
The user can click on the tax amounts listed in column 216 to see how the separate tax types that make up the applied tax combination contribute to the tax amount. This may lead to the tax calculating module displaying a GUI 250 as shown in
A tax type presentation area 256 specifies the amount contributed by any and all tax types included in the tax combination. Here, a first tax type (ICMS) contributes $18, for example. A total field 258 corresponds to the entry in the tax amount column 216 (the numbers in
The respective attributes and return values may belong to different data types, as will now be described with reference to
The calculation of a tax amount is performed using the one(s) of the tax formulas 120 that is/are associated with the tax type(s) 116 of the selected tax combination 114.
The user defines the tax formula in an area 714. For example, the return value TaxAmt is defined as the product of the Total parameter and the ICMSRate parameter. As another example, the return value BaseAmt is defined as “Total*BasePer”, using the parameters Total and BasePer. Any operations used in the formula, such as multiplication which is represented by the “*” character, may be selected using an operation field 716. The field 716 may receive arithmetic operators or condition operators, for example any or all of the following:
Thus, the area 714 lets the user define the formula 120 for calculating one or more tax amounts.
The tax types 116 may be grouped in one or more tax type combinations 124.
The computer system 102 includes a tax determination module 126 that is used in selecting the correct one of the tax combinations 114 for a specific transaction. The tax determination module 126 uses a determination priority 128 which may include a priority list of several criteria, and key fields 130 which provide the values for the criteria listed in the determination priority 128. An example will be described with reference to
The system may include several determination priorities 128 that apply to different transaction contexts, wherein the correct priority list is to be selected in view of the transaction at issue. For example, the priority list shown in GUI 1000 applies to a “Service Item” according to a field 1010.
The association between individual values of the key fields and the tax combination to be used can be defined using a GUI 1050 shown in
The memory 1120 stores information within the system 1100. In one embodiment, the memory 1120 is a computer-readable medium. In one embodiment, the memory 1120 is a volatile memory unit. In another embodiment, the memory 1120 is a non-volatile memory unit.
The storage device 1130 is capable of providing mass storage for the system 1100. In one embodiment, the storage device 1130 is a computer-readable medium. In various different embodiments, the storage device 1130 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
The input/output device 1140 provides input/output operations for the system 1100. In one embodiment, the input/output device 1140 includes a keyboard and/or pointing device. In one embodiment, the input/output device 1140 includes a display unit for displaying graphical user interfaces.
The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the invention can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The invention can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.