US-20230281698-A1 - ALLOCATION MECHANISM IN CONSIGNMENT PROCESSING
Abstract
In an example embodiment, when a user creates a consignment issue item for a given product in a sales order, the system will reserve/temporarily allocate the available quantity in consignment stock. A synchronous call to lock the inventor makes a tentative update to the inventory stock on the quantity required for the request product on the created issue item. This update is tentative because the locked quantity should be released if the user decides not to save the document, but it also should be locked so that it is not available to another user who is also trying to create an issue item in a different sales order document for the same product in a parallel session. The allocation may also change several times before saving the document by additional synchronous calls that again update the tentative allocations. When the user finally decides the final state of the issue item, it asynchronously sends either a confirmation or compensate message based on whether the document was saved or not saved.
Inventors
- ANAPARTHI V KRISHNA
- ZIMMERMANN IRIS
- KAMTE UDAY
- SRIVASTAVA SUANKA
Assignees
- SAP SE
Dates
- Publication Date
- 20230907
- Application Date
- 20220304
- Priority Date
- 20220304
Claims (20)
- 1 . A system comprising: at least one hardware processor; and a non-transitory computer-readable medium storing instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform operations comprising: creating a first software object; receiving, from a graphical user interface, a request to add a first allocation request to the first software object, the first allocation request requesting allocation of a first quantity of a first product from consignment stock; modifying the first software object to add the first allocation request; prior to saving the modified first software object, sending a synchronous request message to an inventory processing component requesting the first quantity of the first product be reserved and temporarily removed from available stock in the consignment stock; receiving a synchronous response message indicating the first quantity of the first product has been reserved; and in response to either a request being received from the graphical user interface to cancel the first allocation request or the modified first software object being closed without having been saved, sending an asynchronous compensate message to the inventory processing component requesting the first quantity of the first product be unreserved and placed back into the available stock in the consignment stock.
- 2 . The system of claim 1 , wherein the operations further comprise: creating a second software object; receiving, from a graphical user interface, a request to add a second allocation request to the second software object, the second allocation request requesting allocation of a second quantity of a second product from the consignment stock; modifying the second software object to add the second allocation request; prior to saving the modified second software object, sending a synchronous request message to the inventory processing component requesting the second quantity of the second product be reserved and temporarily removed from the available stock in the consignment stock; receiving a synchronous response message indicating the second quantity of the second product has been reserved; and in response to the second software object being saved, sending an asynchronous confirmation message to the inventory processing component requesting that the second quantity of the second product be formally allocated and permanently removed from the available stock in the consignment stock.
- 3 . The system of claim 2 , wherein the operations further comprise: creating a third software object; receiving, from a graphical user interface, a request to add a third allocation request to the third software object, the third allocation request requesting allocation of a third quantity of the second product from the consignment stock; modifying the third software object to add the third allocation request; prior to saving the modified third software object, sending a synchronous request message to the inventory processing component requesting the third quantity of the second product be reserved and temporarily removed from the available stock in the consignment stock; receiving a synchronous response message indicating the third quantity of the second product has not been reserved due to insufficient available inventory in the consignment stock; and generating a message in the graphical user interface indicating that the third allocation request requesting allocation of the third quantity of the second product could not be processed.
- 4 . The system of claim 1 , wherein the inventory processing component further: determines whether the first allocation request requests allocation of specific serial numbers of the first product; and in response to a determination that the first allocation request requests allocation of specific serial numbers of the first product, calls a separate serial inventory component to attempt to temporarily reserve the specific serial numbers of the first product.
- 5 . The system of claim 4 , wherein the asynchronous compensate message includes a request to unreserve the specific serial numbers of the first product that had been temporarily reserved.
- 6 . The system of claim 1 , wherein the software object is a sales order object.
- 7 . The system of claim 1 , wherein the operations are performed at an order processing process component in a consumer deployment unit.
- 8 . A method comprising: creating a first software object; receiving, from a graphical user interface, a request to add a first allocation request to the first software object, the first allocation request requesting allocation of a first quantity of a first product from consignment stock; modifying the first software object to add the first allocation request; prior to saving the modified first software object, sending a synchronous request message to an inventory processing component requesting the first quantity of the first product be reserved and temporarily removed from available stock in the consignment stock; receiving a synchronous response message indicating the first quantity of the first product has been reserved; and in response to either a request being received from the graphical user interface to cancel the first allocation request or the modified first software object being closed without having been saved, sending an asynchronous compensate message to the inventory processing component requesting the first quantity of the first product be unreserved and placed back into the available stock in the consignment stock.
- 9 . The method of claim 8 , further comprising: creating a second software object; receiving, from a graphical user interface, a request to add a second allocation request to the second software object, the second allocation request requesting allocation of a second quantity of a second product from the consignment stock; modifying the second software object to add the second allocation request; prior to saving the modified second software object, sending a synchronous request message to the inventory processing component requesting the second quantity of the second product be reserved and temporarily removed from the available stock in the consignment stock; receiving a synchronous response message indicating the second quantity of the second product has been reserved; and in response to the second software object being saved, sending an asynchronous confirmation message to the inventory processing component requesting that the second quantity of the second product be formally allocated and permanently removed from the available stock in the consignment stock.
- 10 . The method of claim 9 , further comprising: creating a third software object; receiving, from a graphical user interface, a request to add a third allocation request to the third software object, the third allocation request requesting allocation of a third quantity of the second product from the consignment stock; modifying the third software object to add the third allocation request; prior to saving the modified third software object, sending a synchronous request message to the inventory processing component requesting the third quantity of the second product be reserved and temporarily removed from the available stock in the consignment stock; receiving a synchronous response message indicating the third quantity of the second product has not been reserved due to insufficient available inventory in the consignment stock; and generating a message in the graphical user interface indicating that the third allocation request requesting allocation of the third quantity of the second product could not be processed.
- 11 . The method of claim 8 , wherein the inventory processing component further: determines whether the first allocation request requests allocation of specific serial numbers of the first product; and in response to a determination that the first allocation request requests allocation of specific serial numbers of the first product, calls a separate serial inventory component to attempt to temporarily reserve the specific serial numbers of the first product.
- 12 . The method of claim 11 , wherein the asynchronous compensate message includes a request to unreserve the specific serial numbers of the first product that had been temporarily reserved.
- 13 . The method of claim 8 , wherein the software object is a sales order object.
- 14 . The method of claim 8 , wherein the method is performed at an order processing process component in a consumer deployment unit.
- 15 . A non-transitory machine-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations comprising: creating a first software object; receiving, from a graphical user interface, a request to add a first allocation request to the first software object, the first allocation request requesting allocation of a first quantity of a first product from consignment stock; modifying the first software object to add the first allocation request; prior to saving the modified first software object, sending a synchronous request message to an inventory processing component requesting the first quantity of the first product be reserved and temporarily removed from available stock in the consignment stock; receiving a synchronous response message indicating the first quantity of the first product has been reserved; and in response to either a request being received from the graphical user interface to cancel the first allocation request or the modified first software object being closed without having been saved, sending an asynchronous compensate message to the inventory processing component requesting the first quantity of the first product be unreserved and placed back into the available stock in the consignment stock.
- 16 . The non-transitory machine-readable medium of claim 15 , wherein the operations further comprise: creating a second software object; receiving, from a graphical user interface, a request to add a second allocation request to the second software object, the second allocation request requesting allocation of a second quantity of a second product from the consignment stock; modifying the second software object to add the second allocation request; prior to saving the modified second software object, sending a synchronous request message to the inventory processing component requesting the second quantity of the second product be reserved and temporarily removed from available stock in the consignment stock; receiving a synchronous response message indicating the second quantity of the second product has been reserved; and in response to the second software object being saved, sending an asynchronous confirmation message to the inventory processing component requesting that the second quantity of the second product be formally allocated and permanently removed from the available stock in the consignment stock.
- 17 . The non-transitory machine-readable medium of claim 16 , wherein the operations further comprise: creating a third software object; receiving, from a graphical user interface, a request to add a third allocation request to the third software object, the third allocation request requesting allocation of a third quantity of the second product from consignment stock; modifying the third software object to add the third allocation request; prior to saving the modified third software object, sending a synchronous request message to the inventory processing component requesting the third quantity of the second product be reserved and temporarily removed from available stock in the consignment stock; receiving a synchronous response message indicating the third quantity of the second product has not been reserved due to insufficient available inventory in the consignment stock; and generating a message in the graphical user interface indicating that the third allocation request requesting allocation of the third quantity of the second product could not be processed.
- 18 . The non-transitory machine-readable medium of claim 15 , wherein the inventory processing component further: determines whether the first allocation request requests allocation of specific serial numbers of the first product; and in response to a determination that the first allocation request requests allocation of specific serial numbers of the first product, calls a separate serial inventory component to attempt to temporarily reserve the specific serial numbers of the first product.
- 19 . The non-transitory machine-readable medium of claim 18 , wherein the asynchronous compensate message includes a request to unreserve the specific serial numbers of the first product that had been temporarily reserved.
- 20 . The non-transitory machine-readable medium of claim 15 , wherein the software object is a sales order object.
Description
TECHNICAL FIELD This document generally relates to technical problems with consignment processing in a computer system. More specifically, this document relates to the use of an allocation mechanism for consignment processing. BACKGROUND A consignment process is an arrangement in which a goods provider provides goods to a goods receiver prior to the goods receiver having any legal obligation to purchase the goods. In the case where a goods provider is a seller, for example, and the goods receiver is a buyer, this may mean that the seller sends a certain quantity of goods to the buyer, which the buyer then stores at the buyer's location. While the goods are in storage, however, there is not yet an obligation for the buyer to actually purchase any of the goods, until the buyer decides to remove them from consignment stock. Any goods not removed from consignment stock may be returned without requiring the goods to have been invoiced. BRIEF DESCRIPTION OF DRAWINGS The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements. FIG. 1 is an activity diagram illustrating a method for operating a computer system, in accordance with an example embodiment. FIG. 2 is a block diagram illustrating a system for managing consignment allocation in a computer system, in accordance with an example embodiment. FIG. 3 is a flow diagram illustrating a method of processing an allocation request in a computer system, in accordance with an example embodiment. FIG. 4 is a flow diagram illustrating a method of processing an allocation request in a computer system, in accordance with another example embodiment. FIG. 5 is a block diagram illustrating an architecture of software, which can be installed on any one or more of the devices described above. FIG. 6 illustrates a diagrammatic representation of a machine in the form of a computer system within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein, according to an example embodiment. DETAILED DESCRIPTION The description that follows discusses illustrative systems, methods, techniques, instruction sequences, and computing machine program products. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various example embodiments of the present subject matter. It will be evident, however, to those skilled in the art, that various example embodiments of the present subject matter may be practiced without these specific details. At a technical level, consignment relationships are often managed via computer systems, which manage two different documents for each transaction: a consignment fill-up document and a consignment issue document. The consignment fill-up document is processed at the time the goods provider agrees to send the goods to the goods receiver, while the consignment issue document is processed at the time the goods receiver agrees to purchase goods from the consignment stock. There are technical problems, however, that occur in the processing of consignment issue documents. Consignment issue documents are often created by adding sales order items to a consignment issue document. For each sales order item, the user creates one or more allocation requests. When a user completes the allocation requests, the sales order item may be finalized, at which point the consignment issue document may also be finalized and processed. Processing a consignment issue document involves the computer system reviewing all the allocation requests within the consignment issue document and allocating (e.g., permanently assigning) the appropriate inventory from the consignment stock to the goods receiver. One technical issue that arises is that it is possible using such computer systems for duplicate provision of inventory to occur, such as in the case of consignment allocation to multiple requesters. Thus, for example, if two users begin creating sales order items around the same time, it is possible for them both to request inventory in an amount that appears to them to be “in-stock” in the consignment stock, but then if the requested inventory is allocated to both sales order items, there is not enough stock in the consignment stock to actually fulfil the sale order items. In an example embodiment, a computer system is provided that ensures that duplicate provision of inventory is not possible by locking and allocating inventory in real time, as well as unlocking the allocated inventory if a user decides not to pursue the consignment issue process (such as by not saving the sales order item document, despite having locked the inventory needed to satisfy the request). Another technical issue that arises is that there may be a time gap between when the user creates an allocation request in a sales order and when the user ev