package pwc.taxtech.atms.constant;

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

import com.google.common.collect.ImmutableMap;

import pwc.taxtech.atms.common.CommonConstants;

public class EnterpriseAccountConstant {

    public static final String FullNameSeparator = "-";
    public static final int NameMaxLength = 100;
    public static final int CodeMaxLength = 50;
    public static final String Code = "Code";
    public static final String Name = "Name";
    public static final String ParentCode = "Parent";
    public static final String Direction = "Direction";
    public static final String AcctProp = "AcctProp";
    public static final String UploadFile = "~/Upload/EnterpiceAccountImport";

    public static final String EnterpriseAccountTemplate = "userTemplate/enterpriseAccount/EnterpriseAccount.xlsx";

    public static final String EntepriseAccountFileName = "EntepriseAccount";
    public static final String DirectionField = "Direction";
    public static final String IsLeafField = "IsLeaf";
    public static final String AcctLevelField = "AcctLevel";
    public static final String AcctPropField = "AcctProp";
    public static final String FullNameField = "FullName";
    public static final String FirstLevel = "0";
    public static final String SecondLevel = "1";
    public static final String ThirdLevel = "2";
    public static final String ForthLevel = "3";
    public static final boolean Yes = true;
    public static final boolean No = false;
    public static final short I_Yes = 1;
    public static final int InvalidId = 0;
    public static final String  StrOthers = "其他";
    public static final String  StrIsLeaf = "1";
    public static final String  StrRealEstate = "23";
    public static final String  EnterpriseAccountTableName = "EnterpriseAccount";
    public static final int MinAcctPropValue = 1;
    public static final int MaxAcctPropValue = 6;
    public static final int SpecialAcctPropValue = -1;

    public static final String EnterpriceAccountRepeat = "EnterpriceAccountRepeat";
    public static final String EnterpriceAccountParentDisable = "EnterpriceAccountParentDisable";
    public static final String StdCodeIsNotExist = "StdCodeIsNotExist";
    public static final String NoParentCode = "NoParentCode";
    public static final String OrgNotExist = "OrgNotExist";
    public static final String SystemError = "SystemError";
    public static final String NoAccountNeedClear = "NoAccountNeedClear";
    public static final String InputParamInComplete = "InputParamInComplete";
    public static final String AccountSetNotExist = "AccountSetNotExist";
    public static final String ExistMappedOrg = "ExistMappedOrg";
    public static final String SubjectCorresponding = "SubjectCorresponding";

    public static final String DirectionFormatError = "DirectionFormatError";

    public static final String AcctPropFormatError = "AcctPropFormatError";

    public static final String AcctPropNullError = "AcctPropNullError";

    public static final List<String> IgnoreFieldList = Arrays.asList(IsLeafField, AcctLevelField, FullNameField);

    public static final Map<String, String> DirectionMap = ImmutableMap.<String, String>builder()
            .put(String.valueOf(CommonConstants.DebitDirectionValue), CommonConstants.DebitLogStr)
            .put(String.valueOf(CommonConstants.CreditDirectionValue), CommonConstants.CreditLogStr)
            .build();

    public static final Map<String, Integer> DirectionToValueMap = ImmutableMap.<String, Integer>builder()
            .put(CommonConstants.DebitDirection, CommonConstants.DebitDirectionValue)
            .put(CommonConstants.CreditDirection, CommonConstants.CreditDirectionValue)
            .build();

    public static final List<String> AcctPropToValueList = Arrays.asList(
            "",
            CommonConstants.AssetValue,
            CommonConstants.DebtValue,
            CommonConstants.JointValue,
            CommonConstants.EquityValue,
            CommonConstants.CostValue,
            CommonConstants.LossValue
            );

    public static final Map<Integer, String> directionLogMap = ImmutableMap.<Integer, String>builder()
            .put(1, "借方")
            .put(-1,"贷方")
            .build();
    
    public static final List<String> acctPropLogList = Arrays.asList("", "资产", "负债", "共同", "权益", "成本", "损益", "其他");

    public class StdCode{
        public static final String NULL_STD_CODE = "00";
        public static final String EMPTY_STD_CODE = "0000";
    }

}