Subversion Repositories SmartDukaan

Rev

Hide changed files | Details | Compare with Previous | Blame | RSS feed

Filtering Options

Rev Age Author Path Log message Diff Changes
37769 13 d 4 h amit /trunk/profitmandi-dao/src/ fix(movement): receive a movement invoice only against its own PO, stop auto-closing movements, cancel reduces the PO line

- GRN: movement invoice resolves invoice -> orders -> transaction -> its own movement PO (or a receive-only PO
from the billing warehouse); supplier/warehouse keyed at entry must match; scanned IMEIs must be the billed ones
- Cancelling an unbilled movement order takes its qty off the PO line; PO CLOSED/PRECLOSED once nothing is open
- reopenedAt removed (movements no longer auto-close); PO records createdBy
- SupplierStateResolver: a supplier's state is derived from its GSTIN on save
- sql: add_po_created_by (applied), drop_po_reopened_at (run AFTER fofo/cron/web deploy)
 
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/SupplierStateResolver.java
/trunk/profitmandi-dao/src/main/resources/sql/add_po_created_by_20260924.sql
/trunk/profitmandi-dao/src/main/resources/sql/drop_po_reopened_at_20260924.sql
/trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse
/trunk/profitmandi-dao/src/test/java/com/spice/profitmandi/service/warehouse/SupplierStateResolverTest.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/entity/warehouse/WarehousePurchaseOrder.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/OrderRepositoryImpl.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceService.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceServiceImpl.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java
35716 239 d 23 h amit /trunk/ Refactor GrnController and PurchaseOrderController: extract business logic into focused services and fix N+1 query performance issues

- Create InvoiceService: invoice item CRUD, validation, vendor price matching
- Create GrnRequestService: GRN request lifecycle, mismatch resolution state machine
- Create DebitNoteService: debit note generation, PDF model building
- Move PO amendment logic from PurchaseOrderController to PurchaseOrderService
- Delegate generateDebitNote from PurchaseOrderServiceImpl to DebitNoteService
- Thin GrnController from ~1215 to ~717 lines, remove 15 unused autowired dependencies
- Thin PurchaseOrderController editPurchaseOrder from 40+ lines to 3 lines

Performance fixes:
- InvoiceServiceImpl.validateInvoiceDetail: batch item/vendor pricing/GST loading (4N+3 queries -> ~5)
- DebitNoteServiceImpl: batch item loading in buildDebitNotePdfModel and generateDebitNote
- GrnController.generateDebitNote: eliminate 2 redundant DB fetches
- Replace 3x supplierRepository.selectAll() with targeted selectBySupplierIds()
 
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/DebitNoteService.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/DebitNoteServiceImpl.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/GrnRequestService.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/GrnRequestServiceImpl.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceService.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/InvoiceServiceImpl.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderService.java
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/warehouse/PurchaseOrderServiceImpl.java
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/warehouse/GrnController.java
/trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/warehouse/PurchaseOrderController.java