Subversion Repositories SmartDukaan

Rev

Rev 35252 | Rev 36103 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.service.scheme;

import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
import com.spice.profitmandi.common.model.SchemeModel;
import com.spice.profitmandi.dao.entity.catalog.Scheme;
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;

@Service
public interface SchemeService {
    List<String> getBlockedImeis();

    public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException;

        public Scheme getSchemeById(int schemeId) throws ProfitMandiBusinessException;

    public List<SchemeModel> getAllSchemeModels(LocalDateTime startDateTime, LocalDateTime endDateTime) throws ProfitMandiBusinessException;

        public void activeSchemeById(int schemeId) throws ProfitMandiBusinessException;

        public void activeSchemeByIds(List<Scheme> schemeIds) throws ProfitMandiBusinessException;

        public void expireSchemeByIds(List<Scheme> schemeIds) throws ProfitMandiBusinessException;

        public void expireSchemeById(int schemeId, LocalDateTime expiryDate) throws ProfitMandiBusinessException;

    void sendCombinedSchemesNotification(List<Scheme> schemes) throws ProfitMandiBusinessException;

    public void processSchemeIn(int purchaseId, int retailerId) throws ProfitMandiBusinessException;

        public float processSchemeOut(int fofoOrderId, int retailerId) throws ProfitMandiBusinessException;

        float getSpecialSupportAmount(float supportAmount, PartnerType partnerType, LocalDate onDate, int catalogId) throws ProfitMandiBusinessException;

        float getSpecialSupportAmount(float supportAmount, PartnerType partnerType, LocalDate onDate, int catalogId, float taxRate) throws ProfitMandiBusinessException;

        // public void rollbackSchemeForInventoryItemId(int inventoryItemId);
        public void rollbackSchemes(List<Integer> inventoryItemIds, String rollbackReason)
                        throws Exception;

        public Map<String, Object> getSchemes(Set<Integer> roleIds, int offset, int limit)
                        throws ProfitMandiBusinessException;

        public List<Scheme> getPaginatedSchemes(Set<Integer> roleIds, int offset, int limit)
                        throws ProfitMandiBusinessException;

        void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason)
                        throws ProfitMandiBusinessException;

        void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
                                                List<SchemeType> schemeTypes) throws ProfitMandiBusinessException;

        public double getTotalMargin(int itemId, PartnerType partnerType, LocalDateTime localDateTime);


        //void processPartialCD(String invoiceNumber) throws ProfitMandiBusinessException;

        //void processNoCD(String invoiceNumber) throws ProfitMandiBusinessException;

        Scheme getStaticScheme(int fofoId) throws ProfitMandiBusinessException;

        public List<Scheme> selectSchemeByPartnerType(PartnerType partnerType, LocalDate onDate, int itemId, boolean isAdmin, int offset,
                                                                                                  int limit) throws ProfitMandiBusinessException;

        List<Scheme> selectPercentageScheme(PartnerType partnerType, LocalDate onDate, int catalogId,
                                                                                boolean isAdmin, int offset, int limit) throws ProfitMandiBusinessException;

        void processActivation() throws ProfitMandiBusinessException;

        //public static List<SchemeType> OUT_SCHEME_TYPES = Arrays.asList(SchemeType.CATEGORY, SchemeType.HYGEINE, SchemeType.OUT, SchemeType.TERTIARY);

        void processActivatedImeisForSchemes() throws ProfitMandiBusinessException;

        void rejectActivatedSchemeIds(List<Integer> schemeIds) throws ProfitMandiBusinessException;

    Map<Integer, Float> getCatalogSchemeCashBack(int fofoId, List<Integer> catalogIds) throws ProfitMandiBusinessException;

        List<Scheme> selectSchemeByPartnerTypeFofoId(PartnerType partnerType, LocalDate onDate, int catalogId,
                                                                                                 int fofoId, int offset, int limit) throws ProfitMandiBusinessException;

        void processSchemeIn(List<InventoryItem> approvedList) throws ProfitMandiBusinessException;

        //void processFullCD(String invoiceNumber) throws ProfitMandiBusinessException;
}