package cn.superdesk.uniorder.service.invoice.supplier;

import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.invoice.supplier.InvoiceApplySupplier;
import cn.superdesk.uniorder.dto.param.invoice.supplier.status.InvoiceApplySupplierOpCommonDimAccountingOrderForm;

import java.util.List;

/**
 * @Description: 开票申请 发票管理
 * @Author: linjinyu 重构
 * @CreateDate: 7/28/20 7:52 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 7/28/20 7:52 PM
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface InvoiceApplySupplierFieldPayoffAccountStatusService {


	/****************************************** 状态机 公共方法 机内使用 实际流转 重用 start ******************************************/

	// 状态流转为 待付款(0, "待付款")
	int opInitByStateMachine(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 付款中(10, "付款中")
	int opRegulatoryPipelineByStateMachine(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 付款中(10, "付款中")
	int opRegulatoryPipelineByStateMachine(List<InvoiceApplySupplier> entitys, InvoiceApplySupplierOpCommonDimAccountingOrderForm form, LoginSysUser loginSysUser);

	// 状态流转为 部分付款(1, "部分付款")
	int opPartByStateMachine(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 已付款(2, "已付款")
	int opCompleteByStateMachine(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 已付款(2, "已付款")
	int opCompleteByStateMachine(List<InvoiceApplySupplier> entitys, InvoiceApplySupplierOpCommonDimAccountingOrderForm form, LoginSysUser loginSysUser);

	/****************************************** 状态机 公共方法 机内使用 实际流转 重用   end ******************************************/


	/****************************************** 状态机 外部使用 类门面 start ******************************************/

	// 状态流转为 待付款(0, "待付款")
	int opInit(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 付款中(10, "付款中")
	int opRegulatoryPipeline(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 付款中(10, "付款中")
	int opRegulatoryPipeline(List<InvoiceApplySupplier> entitys, InvoiceApplySupplierOpCommonDimAccountingOrderForm form, LoginSysUser loginSysUser);

	// 状态流转为 部分付款(1, "部分付款")
	int opPart(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 已付款(2, "已付款")
	int opComplete(InvoiceApplySupplier entity, LoginSysUser loginSysUser);

	// 状态流转为 已付款(2, "已付款")
	int opComplete(List<InvoiceApplySupplier> entitys, InvoiceApplySupplierOpCommonDimAccountingOrderForm form, LoginSysUser loginSysUser);

	/****************************************** 状态机 外部使用 类门面   end ******************************************/
}
