sequenceDiagram
participant C as Cashier
participant SF as :SaleForm
participant SC as :SaleController
participant S as :Sale
participant Inv as :InventoryDB
C->>SF: initiatesNewSale()
SF->>SC: createSale()
SC->>S: new Sale()
loop For each item
C->>SF: scanItem(productID)
SF->>SC: addItemToSale(productID, quantity)
SC->>S: addItem(product)
end
C->>SF: finalizeSale()
SF->>SC: processPayment(paymentDetails)
SC->>S: finalize()
S->>Inv: updateStock(productID, soldQty)
SC-->>C: printReceipt()