示例#1
0
def addContractInfo(memberId, contractId):

    try:
        memberObj = member.objects.select_related('customer_id').get(
            member_id=memberId)
        name = memberObj.member_kj_lastname + memberObj.member_kj_firstname
        mail = memberObj.member_email
        companyName = memberObj.customer_id.customer_name

        nowDateTime = getNowDataTime()

        contractInfo = contract_info(
            contract_id=contract.objects.get(contract_id=contractId),
            ci_parson_name=name,
            ci_parson_email=mail,
            ci_company_name=companyName,
            reg_date=nowDateTime,
            update_date=nowDateTime)
        contractInfo.save()

        # 타임라인 추가 (계약정보 생성)
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.CONTRACT_INFO_ADD, name,
                                    None)

    except Exception as ex:
        msg = "Exception.addContractInfo(memberId:" + str(
            memberId) + "contractId:" + str(contractId) + ") ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}
    result = {'result_code': 0, 'msg': 'success'}

    return result
示例#2
0
def contractFileDelete(memberId, name, contractId, cfId):
    try:
        contractFileModel = contract_file.objects.get(
            cf_id=cfId,
            contract_id=contract.objects.get(contract_id=contractId))
        contractFileModel.delete()

        # 파일 카운트도 넘겨준다.
        fileCnt = contract_file.objects.filter(contract_id=contractId).count()

        # 파일추가 타임라인 추가.(TODO 갯수획득 버그때문에 나중에 수정해야함.)
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.FILE_DEL, name, fileCnt)

    except Exception as ex:
        msg = "Exception.getContractFileDelete(memberId:" + str(
            memberId) + ", contractId:" + str(contractId) + ", cfId:" + str(
                cfId) + ")) ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}
    result = {
        'result_code': 0,
        'msg': 'success',
        'cfId': cfId,
        'fileCnt': fileCnt
    }

    return result
示例#3
0
def addContractFile(memberId, name, contractId, file):
    try:
        # ipfs에 등록한다.
        try:
            ipfsRes = ipfs_upload_wrap_directory(file)
        except Exception as ex:
            msg = "ipfsRes Exception.addContractFile(memberId:" + str(
                memberId) + ", contractId:" + str(contractId) + ")) ex:" + str(
                    ex)
            print(msg)
            return {'result_code': -1, 'msg': 'ipfs Exception : ' + str(ex)}

        # html에서 image/png 이런형식으로 오는데, office파일등 타입형식이 긴녀석들이 몇글자까지 올지 알 수없으므로 앞에거만 db에 넣기로함.
        fileType = file.content_type.split("/")[0]

        nowDate = getNowData()
        contractFileModel = contract_file(contract_id = contract.objects.get(contract_id=contractId), ipfs_hash=ipfsRes[1].get("Hash"), cf_name=file.name, \
        cf_size=file.size, cf_type=fileType, reg_date=nowDate, update_date=nowDate)
        contractFileModel.save()

        # 파일 카운트도 넘겨준다.
        fileCnt = contract_file.objects.filter(contract_id=contractId).count()

        # 파일추가 타임라인 추가.(TODO 갯수획득 버그때문에 나중에 수정해야함.)
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.FILE_ADD, name, fileCnt)

    except Exception as ex:
        msg = "Exception.addContractFile(memberId:" + str(
            memberId) + ", contractId:" + str(contractId) + ")) ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}
    result = {
        'result_code': 0,
        'msg': 'success',
        'fileId': contractFileModel.cf_id,
        'fileName': contractFileModel.cf_name,
        'fileType': fileType,
        'ipfsHash': ipfsRes[1].get("Hash"),
        'fileCnt': fileCnt
    }

    return result
def checkeContract(memberId, contractId, mail, compRelation):
    try:
        # 계약서가 확인가능한 상태인지 체크.
        checkResult = contractCommonProcess.contractApproveCheck(
            memberId, contractId, CONTRACT_MEMBER_AUTH.CHECKER)
        if checkResult.get("result_code") != 0:
            return checkResult

        nowDate = getNowData()
        memberObj = member.objects.get(member_id=memberId)
        name = memberObj.member_kj_lastname + memberObj.member_kj_firstname

        # 계약참가자 테이블의 승인(확인)여부 변경.
        contractMemObj = contract_member.objects.get(contract_id = contract.objects.get(contract_id = contractId) \
            ,cm_relation = compRelation, cm_auth = CONTRACT_MEMBER_AUTH.CHECKER, cm_email = mail)

        contractMemObj.cm_confirm = APPROVAL_FLG.YES
        contractMemObj.update_date = nowDate
        contractMemObj.save()

        # 타임라인저장.(계약확인완료)
        # 자사유저, 타사유저 구분.
        if compRelation == COMPANY_RELATION.OURCOMP:
            timelineProcess.addTimeLine(memberId, contractId,
                                        TIMELINE_CODE.OUR_CHECK_DONE, name,
                                        None)
        elif compRelation == COMPANY_RELATION.OTHERCOMP:
            timelineProcess.addTimeLine(memberId, contractId,
                                        TIMELINE_CODE.OTHER_CHECK_DONE, name,
                                        None)

    except Exception as ex:
        msg = "Exception.checkeContract(memberId:" + str(
            memberId) + ") ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}

    result = {'result_code': 0, 'msg': 'success'}
    return result
def contractVersionUP(memberId, contractId, contractTitle, contractContent,
                      contractTags):
    try:
        nowDate = getNowData()
        memberObj = member.objects.get(member_id=memberId)
        name = memberObj.member_kj_lastname + memberObj.member_kj_firstname

        # 계약서 내용 변경.
        contractObj = contract.objects.get(contract_id=contractId)
        contractObj.contract_name = contractTitle
        contractObj.contract_content = contractContent
        contractObj.contract_tag = contractTags
        contractObj.update_date = nowDate
        contractObj.save()

        contractId = contractObj.contract_id

        # 계약서 버전업.
        versionUpResult = setContractVersionUp(contractId, contractTitle,
                                               contractContent)
        if versionUpResult.get("result_code") != 0:
            return {
                'result_code': -9999,
                'msg': 'Exception : ' + str(versionUpResult.get("msg"))
            }

        # 타임라인저장.(계약작성완료)
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.CONTRACT_WRITE_DONE, name,
                                    None)

    except Exception as ex:
        msg = "Exception.contractVersionUP(memberId:" + str(
            memberId) + ") ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}
    result = {'result_code': 0, 'msg': 'success', 'contractId': contractId}

    return result
示例#6
0
def updateContractInfo(memberId, contractId, contractInfoId,
                       contractInfoModel):

    try:
        nowDateTime = getNowDataTime()

        contractInfo = contract_info.objects.get(ci_id=contractInfoId)
        contractInfo.ci_manage_number = contractInfoModel.ci_manage_number
        contractInfo.ci_parson_name = contractInfoModel.ci_parson_name
        contractInfo.ci_parson_email = contractInfoModel.ci_parson_email

        contractInfo.ci_company_name = contractInfoModel.ci_company_name
        contractInfo.ci_relation = contractInfoModel.ci_relation
        contractInfo.ci_company_address = contractInfoModel.ci_company_address
        contractInfo.ci_ceo = contractInfoModel.ci_ceo
        contractInfo.ci_contractor = contractInfoModel.ci_contractor

        contractInfo.ci_partner_company_name = contractInfoModel.ci_partner_company_name
        contractInfo.ci_partner_relation = contractInfoModel.ci_partner_relation
        contractInfo.ci_partner_company_address = contractInfoModel.ci_partner_company_address
        contractInfo.ci_partner_ceo = contractInfoModel.ci_partner_ceo
        contractInfo.ci_partner_contractor = contractInfoModel.ci_partner_contractor

        contractInfo.ci_currency = contractInfoModel.ci_currency
        #가격은 int로 변환안되면 안넣는다.
        try:
            price = int(contractInfoModel.ci_price)
            contractInfo.ci_price = price
        except:
            pass

        try:
            ci_date = stringToDate(contractInfoModel.ci_date, '%Y-%m-%d')
            contractInfo.ci_date = ci_date
        except:
            pass

        try:
            ci_contract_start = stringToDate(
                contractInfoModel.ci_contract_start, '%Y-%m-%d')
            contractInfo.ci_contract_start = ci_contract_start
        except:
            pass

        try:
            ci_contract_end = stringToDate(contractInfoModel.ci_contract_end,
                                           '%Y-%m-%d')
            contractInfo.ci_contract_end = ci_contract_end
        except:
            pass

        try:
            ci_settlement = stringToDate(contractInfoModel.ci_settlement,
                                         '%Y-%m-%d')
            contractInfo.ci_settlement = ci_settlement
        except:
            pass

        contractInfo.ci_auto = contractInfoModel.ci_auto
        contractInfo.ci_etc = contractInfoModel.ci_etc
        contractInfo.reg_date = nowDateTime
        contractInfo.update_date = nowDateTime

        contractInfo.save()

        # 타임라인 추가 (계약정보 변경)
        memberObj = member.objects.get(member_id=memberId)
        name = memberObj.member_kj_lastname + memberObj.member_kj_firstname
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.CONTRACT_INFO_EDIT, name,
                                    None)

    except Exception as ex:
        msg = "Exception.updateContractInfo(memberId:" + str(
            memberId) + "ci_id:" + str(contractInfoId) + ") ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}
    result = {'result_code': 0, 'msg': 'success'}

    return result
def approveContract(memberId, contractId, mail, compRelation):
    try:
        # 계약서가 승인가능한 상태인지 체크.
        checkResult = contractCommonProcess.contractApproveCheck(
            memberId, contractId, CONTRACT_MEMBER_AUTH.APPROVER)
        if checkResult.get("result_code") != 0:
            return checkResult

        nowDate = getNowData()
        memberObj = member.objects.get(member_id=memberId)
        name = memberObj.member_kj_lastname + memberObj.member_kj_firstname

        # 계약참가자 테이블의 승인여부 변경.
        contractMemObj = contract_member.objects.get(contract_id = contract.objects.get(contract_id = contractId) \
            ,cm_relation = compRelation, cm_auth = CONTRACT_MEMBER_AUTH.APPROVER, cm_email = mail)

        contractMemObj.cm_confirm = APPROVAL_FLG.YES
        contractMemObj.update_date = nowDate
        contractMemObj.save()

        # 타임라인저장.(계약승인)
        timelineProcess.addTimeLine(memberId, contractId,
                                    TIMELINE_CODE.CONTRACT_APPROVE, name, None)

        # 모든 승인자의 승인상태를 체크해서 계약서를 승인완료로 변경.
        allApprovalObj = contract_member.objects.filter(contract_id = contract.objects.get(contract_id = contractId), \
            cm_auth = CONTRACT_MEMBER_AUTH.APPROVER)
        allApprovalList = list(allApprovalObj)
        ourNoApproveCnt = 0
        otherNoApproveCnt = 0
        for item in allApprovalList:
            if item.cm_confirm == APPROVAL_FLG.NO:
                if item.cm_relation == COMPANY_RELATION.OURCOMP:
                    ourNoApproveCnt = ourNoApproveCnt + 1
                elif item.cm_relation == COMPANY_RELATION.OTHERCOMP:
                    otherNoApproveCnt = otherNoApproveCnt + 1
        if ourNoApproveCnt == 0:  # 자사내 모든 승인자가 승인완료했으면.
            # 계약서의 자사내 승인 상태를 승인완료로 변경하고.
            nowDate = getNowData()
            contractObj = contract.objects.get(contract_id=contractId)
            contractObj.ct_approval = APPROVAL_FLG.YES
            contractObj.update_date = nowDate
            contractObj.save()
            # 타임라인 등록.
            timelineProcess.addTimeLine(memberId, contractId,
                                        TIMELINE_CODE.OUR_APPROVAL_DONE, '',
                                        None)
        elif otherNoApproveCnt == 0:  # 타사 모든 승인자가 승인완료했으면.
            # 계약서의 자사내 승인 상태를 승인완료로 변경하고.
            nowDate = getNowData()
            contractObj = contract.objects.get(contract_id=contractId)
            contractObj.ct_other_approval = APPROVAL_FLG.YES
            contractObj.update_date = nowDate
            contractObj.save()
            # 타임라인 등록.
            timelineProcess.addTimeLine(memberId, contractId,
                                        TIMELINE_CODE.OTHER_APPROVAL_DONE, '',
                                        None)

        # 자사, 타사 모두 승인완료됐으면.
        if ourNoApproveCnt == 0 and otherNoApproveCnt == 0:
            # 계약서 상태를 승인완료로 변경함.(프로세스를 이용해서 체크처리를 통해 승인완료로 변경함.)
            contractCommonProcess.changeContractStatus(
                memberId, contractId, CONTRACT_STATUS.APPROVAL_FINISH)

    except Exception as ex:
        msg = "Exception.approveContract(memberId:" + str(
            memberId) + ") ex:" + str(ex)
        print(msg)
        return {'result_code': -9999, 'msg': 'Exception : ' + str(ex)}

    result = {'result_code': 0, 'msg': 'success'}
    return result