package com.eksad.masterdata.repository;

import com.eksad.masterdata.domain.SalesOrder;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Date;
import java.util.List;

public interface SalesOrderRepository extends GenericRepository<SalesOrder> {

    @Query("SELECT so FROM SalesOrder so WHERE so.salesOrderID=:soID")
    SalesOrder findOneBySalesOrderID(@Param("soID") String salesOrderID);

    @Query("SELECT so FROM SalesOrder so WHERE so.salesOrderLastKnownStatus in(com.eksad.masterdata.common.listEnum.SalesOrderStatus.COMPLETE, com.eksad.masterdata.common.listEnum.SalesOrderStatus.BO_COMPLETE) and so.salesOrderID=:salesOrderID")
    SalesOrder findSObySOIDwithTypeBO(@Param("salesOrderID") String salesOrderID);

    @Query("SELECT so FROM SalesOrder so WHERE so.salesOrderDate BETWEEN :from AND :to AND so.ahassCode=:ahassCode ")
    List<SalesOrder> getSalesOrderByRangeAndDealerIDWithoutStatus(@Param("from") Date from, @Param("to") Date to, @Param("ahassCode") String ahassCode);

    SalesOrder findOneBySalesOrderIDAndAhassCode(String salesOrderID, String ahassCode);

    @Query("SELECT so FROM SalesOrder so WHERE so.workOrderID =:workOrderID AND so.ahassCode =:ahassCode ")
    List<SalesOrder> findAllSOByWOIDAndAhassCode(@Param("workOrderID") String workOrderID, @Param("ahassCode") String ahassCode);

}