@@ -469,28 +469,33 @@ sequenceDiagram
469469 activate StockService
470470 StockService->>StockRepo: findByProductAndWarehouse(productId, warehouseId)
471471 StockRepo->>DB: SELECT * FROM stocks WHERE...
472- DB-->>StockService: Stock Entity
472+ DB-->>StockRepo: Stock Entity
473+ StockRepo-->>StockService: Stock Entity
473474 StockService-->>SaleService: Stock availability result
474475 deactivate StockService
475476
476477 alt Stock Available
477478 SaleService->>SaleRepo: save(sale)
479+ activate SaleRepo
478480 SaleRepo->>DB: INSERT INTO sales
479- DB-->>SaleService: Sale Entity
481+ DB-->>SaleRepo: Sale Entity
482+ SaleRepo-->>SaleService: Sale Entity
483+ deactivate SaleRepo
480484
481485 SaleService->>StockService: reduceStock(productId, warehouseId, quantity)
482486 activate StockService
483487 StockService->>DB: UPDATE stocks SET quantity = quantity - ?
484488 DB-->>StockService: Updated
489+ StockService-->>SaleService: Success
485490 deactivate StockService
486491
487492 SaleService-->>SaleController: Sale Entity
488- deactivate SaleService
489493 SaleController-->>Client: 201 Created
494+ deactivate SaleService
490495 else Insufficient Stock
491496 SaleService-->>SaleController: Error: Insufficient Stock
492- deactivate SaleService
493497 SaleController-->>Client: 400 Bad Request
498+ deactivate SaleService
494499 end
495500```
496501
@@ -505,66 +510,74 @@ sequenceDiagram
505510 participant StockService
506511 participant DB as MySQL Database
507512
508- rect rgb(250, 240, 200)
509- Note over Client,DB: 1. Initiate Transfer
510- Client->>TransferController: POST /api/transfers
511- Note over Client: Transfer Request:<br/>From Warehouse A → B<br/>Product, Quantity
513+ Note over Client,DB: Phase 1 - Initiate Transfer
514+ Client->>TransferController: POST /api/transfers
515+ Note over Client: Transfer Request:<br/>From Warehouse A to B<br/>Product, Quantity
512516
513- TransferController->>TransferService: createTransfer(transfer)
514- activate TransferService
515-
516- TransferService->>StockService: checkStock(productId, fromWarehouseId, quantity)
517- activate StockService
518- StockService->>DB: SELECT quantity FROM stocks
519- DB-->>StockService: Available Quantity
520- StockService-->>TransferService: Stock check result
521- deactivate StockService
522-
523- alt Stock Available
524- TransferService->>TransferRepo: save(transfer)
525- TransferRepo->>DB: INSERT INTO transfers<br/>status='PENDING'
526- DB-->>TransferService: Transfer (PENDING)
527- TransferService-->>Client: 201 Created
528- deactivate TransferService
529- else Insufficient Stock
530- TransferService-->>Client: 400 Bad Request
531- deactivate TransferService
532- end
517+ TransferController->>TransferService: createTransfer(transfer)
518+ activate TransferService
519+
520+ TransferService->>StockService: checkStock(productId, fromWarehouseId, quantity)
521+ activate StockService
522+ StockService->>DB: SELECT quantity FROM stocks
523+ DB-->>StockService: Available Quantity
524+ StockService-->>TransferService: Stock check result
525+ deactivate StockService
526+
527+ alt Stock Available
528+ TransferService->>TransferRepo: save(transfer)
529+ activate TransferRepo
530+ TransferRepo->>DB: INSERT INTO transfers (status='PENDING')
531+ DB-->>TransferRepo: Transfer (PENDING)
532+ TransferRepo-->>TransferService: Transfer (PENDING)
533+ deactivate TransferRepo
534+ TransferService-->>TransferController: Transfer Entity
535+ TransferController-->>Client: 201 Created
536+ deactivate TransferService
537+ else Insufficient Stock
538+ TransferService-->>TransferController: Error: Insufficient Stock
539+ TransferController-->>Client: 400 Bad Request
540+ deactivate TransferService
533541 end
534542
535- rect rgb(250, 220, 220)
536- Note over Client,DB: 2. Approve & Execute Transfer
537- Client->>TransferController: PUT /api/transfers/{id}
538- Note over Client: Update status: RECEIVED
543+ Note over Client,DB: Phase 2 - Approve and Execute Transfer
544+ Client->>TransferController: PUT /api/transfers/{id}
545+ Note over Client: Update status: RECEIVED
539546
540- TransferController->>TransferService: updateTransfer(id, updated)
541- activate TransferService
542-
543- TransferService->>DB: BEGIN TRANSACTION
544-
545- Note over TransferService: Reduce from source
546- TransferService->>StockService: reduceStock(productId, fromWarehouseId, quantity)
547- activate StockService
548- StockService->>DB: UPDATE stocks SET quantity = quantity - ?<br/>WHERE product_id=? AND warehouse_id=?
549- DB-->>StockService: Updated
550- deactivate StockService
551-
552- Note over TransferService: Add to destination
553- TransferService->>StockService: addStock(productId, toWarehouseId, quantity)
554- activate StockService
555- StockService->>DB: UPDATE/INSERT stocks<br/>SET quantity = quantity + ?
556- DB-->>StockService: Updated
557- deactivate StockService
558-
559- TransferService->>TransferRepo: save(updated)
560- TransferRepo->>DB: UPDATE transfers SET status='RECEIVED'
561-
562- TransferService->>DB: COMMIT TRANSACTION
563- DB-->>TransferService: Transfer (RECEIVED)
564- deactivate TransferService
565-
566- TransferService-->>Client: 200 OK
567- end
547+ TransferController->>TransferService: updateTransfer(id, updated)
548+ activate TransferService
549+
550+ TransferService->>DB: BEGIN TRANSACTION
551+
552+ Note over TransferService,DB: Reduce from source warehouse
553+ TransferService->>StockService: reduceStock(productId, fromWarehouseId, quantity)
554+ activate StockService
555+ StockService->>DB: UPDATE stocks SET quantity = quantity - ?
556+ DB-->>StockService: Updated
557+ StockService-->>TransferService: Success
558+ deactivate StockService
559+
560+ Note over TransferService,DB: Add to destination warehouse
561+ TransferService->>StockService: addStock(productId, toWarehouseId, quantity)
562+ activate StockService
563+ StockService->>DB: UPDATE/INSERT stocks SET quantity = quantity + ?
564+ DB-->>StockService: Updated
565+ StockService-->>TransferService: Success
566+ deactivate StockService
567+
568+ TransferService->>TransferRepo: save(updated)
569+ activate TransferRepo
570+ TransferRepo->>DB: UPDATE transfers SET status='RECEIVED'
571+ DB-->>TransferRepo: Updated Transfer
572+ TransferRepo-->>TransferService: Transfer (RECEIVED)
573+ deactivate TransferRepo
574+
575+ TransferService->>DB: COMMIT TRANSACTION
576+ DB-->>TransferService: Transaction Complete
577+
578+ TransferService-->>TransferController: Transfer Entity
579+ TransferController-->>Client: 200 OK
580+ deactivate TransferService
568581```
569582
570583
0 commit comments