package cn.superdesk.uniorder.service.organisation;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.dao.entity.accounting.unified.customer.AccountingUnifiedCustomer;
import cn.superdesk.uniorder.dao.entity.invoice.customer.InvoiceApply;
import cn.superdesk.uniorder.dao.entity.organisation.SysEnterpriseExtAccounting;
import cn.superdesk.uniorder.dto.vo.accounting.extend.ReportBeOverdueOfStatementOfAccountOfView;
import cn.superdesk.uniorder.dto.vo.invoice.customer.extend.ReportBeOverdueOfInvoiceOfView;
import cn.superdesk.uniorder.service.base.BaseService;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;


/**
 * @Description: 企业信息-扩展-对账相关
 * @Author: linjinyu
 * @Email linjinyu@avic-s.com
 * @CreateDate: 2020-08-20 17:51:19
 * @UpdateUser: linjinyu
 * @UpdateDate: 2020-08-20 17:51:19
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface SysEnterpriseExtAccountingService extends BaseService<SysEnterpriseExtAccounting> {


    /****************************************** extends BaseService 部分 start ******************************************/

    int insertSelective(SysEnterpriseExtAccounting entity);

    int updateByPrimaryKeySelective(SysEnterpriseExtAccounting entity);

    @Deprecated
    void deleteObj(Long id);

    @Deprecated
    SysEnterpriseExtAccounting findById(Long id);

    @Deprecated
    PageInfo<SysEnterpriseExtAccounting> findByPaging(Map<String, Object> conditions, Integer pageNun, Integer pageSize);

    @Deprecated
    List<SysEnterpriseExtAccounting> findAll(Map<String, Object> queryMap);

    /****************************************** extends BaseService 部分   end ******************************************/


    void addSysEnterpriseExtAccounting(SysEnterpriseExtAccounting entity);

    void updateSysEnterpriseExtAccounting(SysEnterpriseExtAccounting entity);

    void deleteSysEnterpriseExtAccounting(Long id);

    SysEnterpriseExtAccounting findSysEnterpriseExtAccountingById(Long id);

    R<List<SysEnterpriseExtAccounting>> pageQuery(Map<String, Object> conditions, int pageNun, int pageSize);

    SysEnterpriseExtAccounting findSysEnterpriseExtAccountingByOutVirtIdWithIn(Long outVirtId);


//	exceed the time limit; be overdue:
//	清理逾期票据 clean up overdue bills

    ReportBeOverdueOfInvoiceOfView checkInvoiceApplyCustomerIsOverdue(InvoiceApply invoiceApply);

    ReportBeOverdueOfStatementOfAccountOfView checkAccountingUnifiedCustomerIsOverdue(AccountingUnifiedCustomer accountingUnifiedCustomer);

    ReportBeOverdueOfStatementOfAccountOfView checkAccountingUnifiedCustomerIsOverdue(String accountingOrderSn);

    ReportBeOverdueOfStatementOfAccountOfView checkAccountingUnifiedCustomerIsOverdue(Long outVirtId);


}