package com.brilliance.isc.common.register.trtcre.impl;

import com.brilliance.isc.bo.Cbb;
import com.brilliance.isc.bo.model.Trtcre;
import com.brilliance.isc.common.component.PtsptaToolComponent;
import com.brilliance.isc.common.register.trtcre.ITrtcreRegister;
import com.brilliance.isc.vo.model.TrtcreBizInfoVo;
import com.brilliance.mda.runtime.mda.util.Dates;
import com.brilliance.mda.runtime.mda.util.Decimals;
import com.brilliance.mda.runtime.mda.util.MdaUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("led.trtcreRegister")
public class LedTrtcreRegister implements ITrtcreRegister {

    @Autowired
    private PtsptaToolComponent ptsptaToolComponent;

    @Override
    public void setTRDfieldsfromXXX(Trtcre trtcreVo) {
        TrtcreBizInfoVo bizInfoVo = trtcreVo.getRec();
        trtcreVo.getTrdgrp().getRec().setPnttyp(bizInfoVo.getObjtyp());
        trtcreVo.getTrdgrp().getRec().setPntinr(bizInfoVo.getObjinr());
        trtcreVo.getTrdgrp().getRec().setPntref(bizInfoVo.getOwnref());
        trtcreVo.getTrdgrp().getRec().setPntnam(bizInfoVo.getNam());
        trtcreVo.getTrdgrp().getRec().setStttendat(Dates.today());
        trtcreVo.getTrdgrp().getRec().setFintyp("PCL");
        Cbb maxCbb = trtcreVo.getCbsMap().getOrDefault("MAX", new Cbb());
        Cbb opnCbb = trtcreVo.getCbsMap().getOrDefault("OPN1", new Cbb());
        if(!MdaUtils.isEmpty(maxCbb.getCur()) && !trtcreVo.getTrdgrp().getCbs().getMax().isModified("cur")) {
            trtcreVo.getTrdgrp().getCbs().getMax().setCur(maxCbb.getCur());
            trtcreVo.getTrdgrp().setRelpntamt(Decimals.sub(opnCbb.getAmt(), bizInfoVo.getPcropnamtsum()));
            trtcreVo.getTrdgrp().setMaxmatdat(Dates.add(bizInfoVo.getExpdat(), bizInfoVo.getTenmaxday()));
        }
        String ref = trtcreVo.getTrdgrp().getFip().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "BEN")) {
            trtcreVo.getTrdgrp().setFip(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "BEN")));
        }
        trtcreVo.getTrdgrp().getFip().setRol("FIP");
        trtcreVo.getTrdgrp().getFip().getPts().setRol("FIP");
        if (StringUtils.isNotEmpty(ref)) {
            //trtcreVo.getTrdgrp().getFip().setRef(ref);
            trtcreVo.getTrdgrp().getFip().getPts().setRef(ref);
        }
        String rmbref = trtcreVo.getTrdgrp().getRmb().getRef();
        if (ptsptaToolComponent.ptsIsRolSet(trtcreVo.getPtsptaList(), "RMB")) {
            trtcreVo.getTrdgrp().setRmb(MdaUtils.deepClone(ptsptaToolComponent.getPtsFromListByRol(trtcreVo.getPtsptaList(), "RMB")));
        }
        trtcreVo.getTrdgrp().getRmb().setRol("RMB");
        trtcreVo.getTrdgrp().getRmb().getPts().setRol("RMB");
        if (StringUtils.isNotEmpty(rmbref)) {
            //trtcreVo.getTrdgrp().getRmb().setRef(rmbref);
            trtcreVo.getTrdgrp().getRmb().getPts().setRef(rmbref);
        }
    }

}
