Reference no: EM13934604
All 3 assignments in this unit involve creating and building upon a Customer Relationship Management (CRM) system for a nation-wide logistics company. In assignment 3 we aim to link assignments 1 and 2 together in order to add a rebate processor.
Assignment 3 involves development of an integrated system which retrieves clients' orders from Assignment 1, issues invoices with appropriate prices, retrieves membership information, generates a rebate statement and stores transactional messages accordingly. More concretely, we need an additional component - rebate processor integrated with the two components developed in assignments 1 and 2. Your task is to calculate the rebate price according to the membership classes (Gold, Silver or Regular as defined in Assignment 2). The rebate value should be derived as following:
• Regular members will receive $200 credit for each booking.
• Silver members will receive 15% discount for every $5,000 spent (excluding GST).
• Gold members will receive $300 credit for every booking and 20% discount for every $5,000 spent (excluding GST). Note: Discount price should be awarded in the tax invoice during the current transaction; rebate credit should be awarded after issuing the tax invoice, and the amount will be redeemed in the next transaction.
Moreover, do not attempt to improve your calculations of delivery distance and price, but you should use the numbers produced from your assignment 1 solution. Hence, your rebate processor should store the information of previous transactions. Your first task is to link the first two assignment solutions by adding a textbox for membership ID (mapping to "MembershipID" in the membership database table) in the truck booking web form. More specifically, if the supplied ID matches an existing member in the database, then this member's first name and last name should be retrieved from the database and displayed in the booking form; if the supplied ID does not match any existing member in the database, then the system should insert this customer as a regular member to the membership table.
The next step is to implement the rebate processor which should store every booking record, calculate and apply rebate prices. Each booking should be referred by the unique invoice number generated in assignment 1. Then, port your modified booking processor (as in assignment 1), rebate processor, and database accessing APIs (as in assignment 2) on at least three separate threads and apply appropriate multi-threading controls such as semaphores/mutex/wait; alternatively, you may use async/await. This will set you up for the final step where you will implement a message queue for the rebate processor.