///

/// 创建异常合同 /// /// /// /// [HttpPost] [ModuleAuthorization("CRM")] public async Task<ResponseBase> CreateAnomalyContract(string session, [FromBody] AnomalyContractCreateRequest request) { if (request == null) { return ResponseBase.BadRequest('请求参数错误'); }

        // 验证登录态
        var user = _auth.GetCurrentUser(session);
        if (user == null)
        {
            return ResponseBase<EmptyResponse>.Unauthorized();
        }

        // 检查客户
        var customer = await _customerRepo.GetByIdAsync(request.CustomerId);
        if (customer == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('客户不存在');
        }

        // 检查合同
        var contract = await _contractRepo.GetByIdAsync(request.ContractId);
        if (contract == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('续约合同不存在');
        }

        // 创建异常合同
        var anomalyContract = new AnomalyContract
        {
            CustomerId = request.CustomerId,
            OriginalContractId = request.ContractId,
            Amount = request.Amount,
            BusinessType = request.BusinessType,
            Status = ContractStatus.Pending,
            CreatedById = user.Id,
            CreatedOn = DateTime.Now,
            Note = request.Note
        };
        await _anomalyContractRepo.InsertAsync(anomalyContract);

        // 同时创建财务账单
        var bill = new Bill
        {
            CustomerId = request.CustomerId,
            ContractId = anomalyContract.Id,
            Amount = request.Amount,
            BusinessType = request.BusinessType,
            Status = BillStatus.Pending,
            CreatedById = user.Id,
            CreatedOn = DateTime.Now
        };
        await _billRepo.InsertAsync(bill);

        return ResponseBase<EmptyResponse>.Success();
    }

    /// <summary>
    /// 审核异常合同
    /// </summary>
    /// <param name='session'></param>
    /// <param name='id'></param>
    /// <param name='request'></param>
    /// <returns></returns>
    [HttpPost('{id}/audit')]
    [ModuleAuthorization("CRM")]
    public async Task<ResponseBase<EmptyResponse>> AuditAnomalyContract(string session, int id, [FromBody] AnomalyContractAuditRequest request)
    {
        if (request == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
        }

        // 验证登录态
        var user = _auth.GetCurrentUser(session);
        if (user == null)
        {
            return ResponseBase<EmptyResponse>.Unauthorized();
        }

        // 检查异常合同
        var anomalyContract = await _anomalyContractRepo.GetByIdAsync(id);
        if (anomalyContract == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('异常合同不存在');
        }

        // 审核
        anomalyContract.AuditedById = user.Id;
        anomalyContract.AuditedOn = DateTime.Now;
        anomalyContract.Status = request.Passed ? ContractStatus.Passed : ContractStatus.Rejected;
        await _anomalyContractRepo.UpdateAsync(anomalyContract);

        // 更新财务账单
        var bill = await _billRepo.GetByContractIdAsync(id);
        if (bill == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('财务账单不存在');
        }
        bill.Status = request.Passed ? BillStatus.Passed : BillStatus.Rejected;
        await _billRepo.UpdateAsync(bill);

        return ResponseBase<EmptyResponse>.Success();
    }

    /// <summary>
    /// 创建一笔财务账单
    /// </summary>
    /// <param name='session'></param>
    /// <param name='request'></param>
    /// <returns></returns>
    [HttpPost]
    [ModuleAuthorization("CRM")]
    public async Task<ResponseBase<EmptyResponse>> CreateFinanceBill(string session, [FromBody] FinanceBillCreateRequest request)
    {
        if (request == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
        }

        // 验证登录态
        var user = _auth.GetCurrentUser(session);
        if (user == null)
        {
            return ResponseBase<EmptyResponse>.Unauthorized();
        }

        // 检查客户
        var customer = await _customerRepo.GetByIdAsync(request.CustomerId);
        if (customer == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('客户不存在');
        }

        // 创建财务账单
        var bill = new Bill
        {
            CustomerId = request.CustomerId,
            ContractId = request.ContractId,
            Amount = request.Amount,
            BusinessType = request.BusinessType,
            Status = BillStatus.Pending,
            CreatedById = user.Id,
            CreatedOn = DateTime.Now
        };
        await _billRepo.InsertAsync(bill);

        return ResponseBase<EmptyResponse>.Success();
    }

    /// <summary>
    /// 审核财务账单
    /// </summary>
    /// <param name='session'></param>
    /// <param name='id'></param>
    /// <param name='request'></param>
    /// <returns></returns>
    [HttpPost('{id}/audit')]
    [ModuleAuthorization("CRM")]
    public async Task<ResponseBase<EmptyResponse>> AuditFinanceBill(string session, int id, [FromBody] FinanceBillAuditRequest request)
    {
        if (request == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('请求参数错误');
        }

        // 验证登录态
        var user = _auth.GetCurrentUser(session);
        if (user == null)
        {
            return ResponseBase<EmptyResponse>.Unauthorized();
        }

        // 检查财务账单
        var bill = await _billRepo.GetByIdAsync(id);
        if (bill == null)
        {
            return ResponseBase<EmptyResponse>.BadRequest('财务账单不存在');
        }

        // 审核
        bill.AuditedById = user.Id;
        bill.AuditedOn = DateTime.Now;
        bill.Status = request.Passed ? BillStatus.Passed : BillStatus.Rejected;
        await _billRepo.UpdateAsync(bill);

        return ResponseBase<EmptyResponse>.Success();
    }

    /// <summary>
    /// 根据ID获取异常合同
    /// </summary>
    /// <param name='session'></param>
    /// <param name='id'></param>
    /// <returns></returns>
    [HttpGet('{id}')]
    [ModuleAuthorization("CRM")]
    public async Task<ResponseBase<AnomalyContractResponse>> GetAnomalyContractById(string session, int id)
    {
        // 验证登
异常合同管理接口 - 创建、审核、获取

原文地址: https://www.cveoy.top/t/topic/lgCh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录