Subversion Repositories SmartDukaan

Rev

Rev 33255 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
32907 amit.gupta 1
package com.smartdukaan.cron.scheduled.purchaseorder;
2
 
3
import com.spice.profitmandi.dao.entity.inventory.Vendor;
4
import com.spice.profitmandi.dao.entity.warehouse.Supplier;
5
import com.spice.profitmandi.dao.entity.warehouse.WarehousePurchaseOrder;
6
import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;
7
import com.spice.profitmandi.dao.repository.warehouse.WarehousePurchaseOrderRepository;
8
import in.shop2020.purchase.POStatus;
9
import org.apache.logging.log4j.core.config.Scheduled;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.stereotype.Component;
12
import org.springframework.transaction.annotation.Transactional;
13
 
14
import java.time.LocalDate;
15
import java.util.List;
16
import java.util.Set;
17
import java.util.stream.Collectors;
18
 
19
@Component
20
@Transactional(rollbackFor = Throwable.class)
21
public class POScheduler {
22
    //Auto close non-internal vendor POs greater than seven days
23
    @Autowired
24
    WarehousePurchaseOrderRepository warehousePurchaseOrderRepository;
25
    @Autowired
26
    SupplierRepository supplierRepository;
27
 
28
 
29
    public void autoClosePurchaseOrders() {
30
        System.out.println("At autoclose pos");
31
        List<WarehousePurchaseOrder> warehousePurchaseOrderList = warehousePurchaseOrderRepository.selectAllByStatus(POStatus.READY);
32
        warehousePurchaseOrderList.addAll(warehousePurchaseOrderRepository.selectAllByStatus(POStatus.PARTIALLY_FULFILLED));
33
        //Also ignore internal pos
34
        Set<Integer> internalSupplierIds = supplierRepository.selectAll().stream().filter(x->x.isInternal()).map(x->x.getId()).collect(Collectors.toSet());
35
 
36
        List<WarehousePurchaseOrder> posToClose = warehousePurchaseOrderList.stream()
37
                .filter(x->!internalSupplierIds.contains(x.getSupplierId()))
38
                .filter(x -> x.getCreatedAt().isBefore(LocalDate.now().minusDays(6).atStartOfDay()))
39
                .collect(Collectors.toList());
33255 amit.gupta 40
        //Close internal POS in four days
41
        posToClose.addAll(warehousePurchaseOrderList.stream().
42
                filter(x->internalSupplierIds.contains(x.getSupplierId())).
43
                filter(x->x.getCreatedAt().isBefore(LocalDate.now().minusDays(4).atStartOfDay())).collect(Collectors.toList()));
32907 amit.gupta 44
        for (WarehousePurchaseOrder warehousePurchaseOrder : posToClose) {
45
            //System.out.println(warehousePurchaseOrder);
46
            warehousePurchaseOrder.setStatus(POStatus.CLOSED);
47
        }
48
 
49
 
50
    }
51
}