def test_1038(): """承租周期大于一年且小于18个月生成一条业绩""" # describe: 出租合同承租周期小于一年,生成一条业绩单 # data:1、房源类型为服务整租;2、出租合同承租周期为16个月;3、承租到期日等于委托延长期到期日; # result:生成一条业绩单,审核状态为待审核,核发月份为空 fileName = 'apartmentAchievement_1038' with Base() as base: # 创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 13 month),date_add(date(sysdate()),interval 16 month)," \ "date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment(apartment_type='MANAGE', entrust_type='ENTIRE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888) # 创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[3], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_id='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='ENTIRE' " \ "AND ac.is_active='Y' " % (apartmentId, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(contractAdd, 1)).is_true(), 1038, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select FLOOR(ABS(DATEDIFF(aca.start_time,aca.end_time)/30)),aca.audit_status,aca.is_active from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId, apartmentContractNum) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert(lambda test: asserts(achievementinfo[0]).is_equal_to(16), 1038, u'%s:合同 %s 对应业绩周期异常,期望值 16 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert(lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1038, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) base.diffAssert(lambda test: asserts(achievementinfo[2]).is_equal_to('N'), 1038, u'%s:合同 %s 对应业绩生效状态异常, 期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[2])) else: consoleLog(u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum),'e') consoleLog(u'执行SQL:%s'% achievementsqla)
def test_1036(): """到期委托合同正常删除""" # describe:到期委托合同可以正常删除成功 # data:1、委托合同状态为到期;2.名下无出租合同 # result:委托合同删除成功; fileName = 'houseContract_1036' dateSql = "select date_sub(date(sysdate()),INTERVAL 24 month),date_add(date(sysdate()),INTERVAL 1 day),date_sub(date(sysdate()),interval 5 month)," \ "date_sub(date(sysdate()),interval 2 month),date_sub(date(sysdate()),INTERVAL 23 month) from dual" # 时间元素 dateInfo = sqlbase.serach(dateSql) houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1") houseInfo = {'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2],'houseCode': houseSql[3]} # 开发房源信息 with Base() as base: #创建到期委托合同 apartmentId = addHouseContractAndFitment(apartment_type='BRAND', entrust_type='ENTIRE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) contractSql = "select hc.contract_num,a.apartment_code from house_contract hc INNER JOIN apartment a on a.house_contract_id=hc.contract_id and a.apartment_id='%s'" % apartmentId contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] contractStatusSql = "select * from house_contract where contract_num='%s' and contract_status='EXPIRE'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.waitData(contractStatusSql,1)).is_true(),1036, u'%s:已到期合同 %s 生成异常,执行SQL:%s"' % (fileName, contractNum, contractStatusSql)) base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text(houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text(houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click(houseContractPage.addHouseContractMould['delete_button_confirm']) base.check_submit() # 合同状态检查 contractSqlb = "select * from house_contract where deleted=1 and contract_num='%s'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.get_count(contractSqlb)).is_equal_to(1),1036, u'%s:已到期委托合同 %s 删除异常,执行SQL:%s"' % (fileName, contractNum, contractSqlb))
def test_1138(): """扣回业绩失效""" # describe:已生效且已审核的扣回业绩删除终止结算后业绩失效 # data:1、业绩已审核;2、终止结算未复审; # result:1、业绩变成已失效;2、状态同步到预估业绩排行榜; fileName = 'apartmentAchievement_1138' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' " "where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], # 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] # 委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同审核 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同应收 base.open( page.apartmentContractPayPage, apartmentContractReceivablePage.searchMould['tr_receviable_loc']) base.click(apartmentContractReceivablePage.searchMould['reset_button']) base.staleness_of( apartmentContractReceivablePage.searchMould['tr_receviable_loc']) base.input_text( apartmentContractReceivablePage.searchMould['contractNum_loc'], apartmentContractNum) base.click( apartmentContractReceivablePage.searchMould['search_button']) base.staleness_of( apartmentContractReceivablePage.searchMould['tr_receviable_loc']) moneyType = { u'首期管家服务费': int(0.07 * rentPrice), u'中介服务费': 1000, u'首期租金': int(rentPrice), u'押金': int(rentPrice) } for i in range(3): moneyType_row = base.script( "var a = $('[datagrid-row-index=\"%s\"] > [field=\"money_type\"] > div').text();return a" % i, True) base.click( apartmentContractReceivablePage.searchMould['receviabl_button'] [i]) base.input_text( apartmentContractReceivablePage. detailMould['receipts_money_loc'], moneyType[moneyType_row]) base.click( apartmentContractReceivablePage.detailMould['receipts_type']) base.type_date( apartmentContractReceivablePage. detailMould['receipts_date_loc'], rentPriceInfo[1]) base.input_text( apartmentContractReceivablePage.detailMould['alipay_card_loc'], '13676595110') base.input_text( apartmentContractReceivablePage. detailMould['operation_total_loc'], moneyType[moneyType_row]) base.click( apartmentContractReceivablePage.detailMould['save_button']) base.check_submit() base.click( apartmentContractReceivablePage.detailMould['print_btn_close']) time.sleep(1) # 出单业绩生效检查 achievementsql = "select aca.is_active,aca.audit_status,aca.contract_audit_status from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" \ "and aca.accounting_time is not null" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsql, 1)).is_true( ), 1138, u'%s:出租合同 %s 业绩生效异常,执行SQL:%s' % (fileName, apartmentContractNum, achievementsql)) # 终止结算 deposit_money = '888.88' # 应付押金 breach_money = '666.66' # 转租费 base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text( apartmentContractEndPage.addContractEndMould['contract_num_loc'], apartmentContractNum) # 输入合同编 base.click(apartmentContractEndPage. addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage. addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage. addContractEndMould['tr_contract']) # 右击第一条数据 base.click( apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 base.click(apartmentContractEndPage.addContractEndMould['now_end_loc'] ) # 立即终止 base.input_text( apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'退租') # 终止原因 endNum = 'AutoACE' + '-' + time.strftime('%m%d%H%M') base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[0]) # 终止日期:当天 base.type_select(apartmentContractEndPage.typeMould['end_type'], 'OWNER_DEFAULT') # 退租 base.input_text( apartmentContractEndPage.addContractEndMould['end_num_loc'], endNum) # 终止协议号 base.type_select( apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.type_select(apartmentContractEndPage.typeMould['pay_type_loc'], 'PERSONAL') # 个人 base.input_text( apartmentContractEndPage.addContractEndMould['receipt_num_loc'], '123456789') # 收款卡号 base.send_keys( apartmentContractEndPage.addContractEndMould['receipt_num_loc'], Keys.ENTER) base.click(apartmentContractEndPage. addContractEndMould['cardconfirm_close_loc']) # 银行卡确认无误 base.dblclick( apartmentContractEndPage.addContractEndMould['project_type_loc'], index=1) # 租金 base.input_text(apartmentContractEndPage. addContractEndMould['payable_deposit_loc'], deposit_money) # 应退押金:终止收支类型为收入才能删除 base.dblclick( apartmentContractEndPage.addContractEndMould['project_type_loc'], index=12) # 违约金 base.input_text(apartmentContractEndPage. addContractEndMould['receivable_money_loc'], breach_money) # 应收违约金 base.upload_file( apartmentContractEndPage.addContractEndMould['add_end_image_loc'], 'C:\Users\Public\Pictures\Sample Pictures\jsp.jpg') # 传图 base.wait_element( apartmentContractEndPage.addContractEndMould['end_image_loc']) base.input_text( apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # 备注 base.click(apartmentContractEndPage. addContractEndMould['submit_button']) # 提交 base.check_submit() # 等待提交完成 # 终止结算审核 contractEndAdd="SELECT ace.end_id FROM apartment_contract ac,apartment_contract_end ace WHERE ac.contract_id = ace.contract_id and ace.audit_status='NO_AUDIT' " \ "AND ace.end_type='OWNER_DEFAULT'and ace.deleted=0 and ace.end_contract_num='%s'" % endNum apartmentContractEndId = sqlbase.serach(contractEndAdd)[0] audit(apartmentContractEndId, auditType.apartmentContractEnd, auditStatus.chuShen, auditStatus.fuShen) # 扣回业绩检查 backAchievementSql = "select is_active,achieve_id,accounting_time from back_achievement where contract_num='%s' and deleted=0 and contract_end_type='OWNER_DEFAULT' " \ "and is_active='Y'" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(backAchievementSql, 1)). is_true(), 1138, u'%s:出租合同 %s 扣回业绩生效异常,执行SQL:%s' % (fileName, apartmentContractNum, backAchievementSql)) # 业绩审核 base.open(page.backAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 time.sleep(10) # 等待重新核算更新数据 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage. detailAchievementMoudle['audit_button_loc']) base.input_text( apartmentAchievementPage. detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage. detailAchievementMoudle['contract_audit_confirm']) base.check_submit() # 删除终止结算 audit(apartmentContractEndId, auditType.apartmentContractEnd, auditStatus.fanShen) base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click( apartmentContractEndPage.searchMould['search_button_loc']) # 搜索 base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) # 等待列表刷新 base.click( apartmentContractEndPage.addContractEndMould['delete_button']) base.click(apartmentContractEndPage. addContractEndMould['delete_button_confirm']) base.check_submit() # 终止结算删除后 backAchievementDelSql = "select is_active,achieve_id,accounting_time from back_achievement where contract_num='%s' and deleted=0 and contract_end_type='OWNER_DEFAULT' " \ "and is_active='INVALID'" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(backAchievementDelSql, 1)). is_true(), 1138, u'%s:出租合同 %s 扣回业绩审核删除终止结算后业绩异常,执行SQL:%s' % (fileName, apartmentContractNum, backAchievementDelSql)) # 业绩分成明细表(预估业绩排行榜数据取值表,检查扣回业绩同步更新到预估业绩排行榜) breahAchievementDetailSql = "select ca.receivable,ca.is_active from contract_achievement ca inner join contract_achievement_detail cad on ca.achieve_id=cad.achieve_id inner " \ "join back_achievement ba on ba.achieve_id=ca.achieve_id and ba.contract_end_type='OWNER_DEFAULT' and ba.deleted=0 and ba.contract_num='%s' " \ "where ca.contract_category='OWNER_DEFAULT_BACK' and ca.deleted=0" % apartmentContractNum breachAchievementStatus = sqlbase.serach(breahAchievementDetailSql)[1] base.diffAssert( lambda test: asserts(breachAchievementStatus).is_equal_to('INVALID' ), 1138, u'%s:出租合同 %s 退租扣回业绩审核删除终止结算后,业绩分成明细业绩状态异常,期望值 INVALID 实际值 %s' % (fileName, apartmentContractNum, breachAchievementStatus))
def test_1095(): """业绩审核后修改出租终止转租费""" # describe:违约业绩审核后修改应终止结算转租费+100,原业绩不变 # data:1、出租终止类型为转租;2、出租终止结算未复审;3、业绩状态已审核; # result:1、业绩不变 fileName = 'apartmentAchievement_1095' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1") # 获取随机开发房源 houseInfo = {'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2],'houseCode': houseSql[3]} dateInfo = sqlbase.serach("select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month) from dual") # 日期元素 apartmentId = addHouseContractAndFitment(apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888,houseInfo=houseInfo) houseContractInfo = sqlbase.serach("select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach("select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5],#承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] achievementSql = "select substring_index(house_code,'-',1) from apartment_contract_achievement where contract_num='%s'and deleted=0" % apartmentContractNum if not sqlbase.waitData(achievementSql, 1): consoleLog(u'%s:合同 %s 对应业绩生成异常'%(fileName, apartmentContractNum),'e') # 委托合同审核 audit(houseContractId,auditType.houseContract,auditStatus.chuShen,auditStatus.fuShen) # 出租合同审核 audit(apartmentContractId,auditType.apartmentContract,auditStatus.chuShen,auditStatus.fuShen) # 出租合同应收 base.open(page.apartmentContractPayPage, apartmentContractReceivablePage.searchMould['tr_receviable_loc']) base.click(apartmentContractReceivablePage.searchMould['reset_button']) base.staleness_of(apartmentContractReceivablePage.searchMould['tr_receviable_loc']) base.input_text(apartmentContractReceivablePage.searchMould['contractNum_loc'],apartmentContractNum) base.click(apartmentContractReceivablePage.searchMould['search_button']) base.staleness_of(apartmentContractReceivablePage.searchMould['tr_receviable_loc']) moneyType = {u'首期管家服务费':int(0.07*rentPrice) , u'中介服务费':1000 , u'首期租金':int(rentPrice) , u'押金':int(rentPrice)} for i in range(3): moneyType_row = base.script("var a = $('[datagrid-row-index=\"%s\"] > [field=\"money_type\"] > div').text();return a" % i, True) base.click(apartmentContractReceivablePage.searchMould['receviabl_button'][i]) base.input_text(apartmentContractReceivablePage.detailMould['receipts_money_loc'], moneyType[moneyType_row]) base.click(apartmentContractReceivablePage.detailMould['receipts_type']) base.type_date(apartmentContractReceivablePage.detailMould['receipts_date_loc'], rentPriceInfo[1]) base.input_text(apartmentContractReceivablePage.detailMould['alipay_card_loc'], '13676595110') base.input_text(apartmentContractReceivablePage.detailMould['operation_total_loc'], moneyType[moneyType_row]) base.click(apartmentContractReceivablePage.detailMould['save_button']) base.check_submit() base.click(apartmentContractReceivablePage.detailMould['print_btn_close']) time.sleep(1) # 业绩生效检查 achievementsql = "select aca.is_active,aca.audit_status,aca.contract_audit_status from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'and aca.accounting_time is not null" % (apartmentId, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(achievementsql,1)).is_true(), 1095, u'%s:出租合同 %s 业绩生效异常,执行SQL:%s' % (fileName, apartmentContractNum, achievementsql)) # 终止结算 breach_money = '888.88' # 应收违约金 zhuanzu_money = '666.66' # 转租费 base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text(apartmentContractEndPage.addContractEndMould['contract_num_loc'], apartmentContractNum) # 输入合同编 base.click(apartmentContractEndPage.addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage.addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage.addContractEndMould['tr_contract']) # 右击第一条数据 base.click(apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 base.click(apartmentContractEndPage.addContractEndMould['now_end_loc']) # 立即终止 base.input_text(apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'转租') # 终止原因 endNum = 'AutoACE' + '-' + time.strftime('%m%d%H%M') base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[0]) # 终止日期:当天 base.type_select(apartmentContractEndPage.typeMould['end_type'], 'CORPORATE_DEFAULT') # 转租 base.input_text(apartmentContractEndPage.addContractEndMould['end_num_loc'], endNum) # 终止协议号 base.type_select(apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.type_select(apartmentContractEndPage.typeMould['pay_type_loc'], 'PERSONAL') # 个人 base.input_text(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], '123456789') # 收款卡号 base.send_keys(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], Keys.ENTER) base.click(apartmentContractEndPage.addContractEndMould['cardconfirm_close_loc']) # 银行卡确认无误 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=12) # 违约金 base.input_text(apartmentContractEndPage.addContractEndMould['receivable_money_loc'], breach_money) # 应收违约金 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=21) # 转租费 base.input_text(apartmentContractEndPage.addContractEndMould['zhuanzu_money_loc'], zhuanzu_money) # 应收转租金 base.upload_file(apartmentContractEndPage.addContractEndMould['add_end_image_loc'], 'C:\Users\Public\Pictures\Sample Pictures\jsp.jpg') # 传图 base.wait_element(apartmentContractEndPage.addContractEndMould['end_image_loc']) base.input_text(apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # 备注 base.click(apartmentContractEndPage.addContractEndMould['submit_button']) # 提交 base.check_submit() # 等待提交完成 # 终止结算审核 contractEndAdd="SELECT ace.end_id FROM apartment_contract ac,apartment_contract_end ace WHERE ac.contract_id = ace.contract_id and ace.audit_status='NO_AUDIT' " \ "AND ace.end_type='CORPORATE_DEFAULT'and ace.deleted=0 and ace.end_contract_num='%s'" % endNum apartmentContractEndId = sqlbase.serach(contractEndAdd)[0] audit(apartmentContractEndId, auditType.apartmentContractEnd, auditStatus.chuShen, auditStatus.fuShen) # 违约业绩检查 breachAchievementSql = "select is_active,accounting_money,achieve_id from breach_achievement where breach_num='%s' and deleted=0 and breach_type='CUSTOMER_SUBLET' " \ "and is_active='Y'" % apartmentContractNum if sqlbase.waitData(breachAchievementSql, 1): breachAchievementInfo = sqlbase.serach(breachAchievementSql) base.diffAssert(lambda test: asserts(breachAchievementInfo[1]).is_equal_to(zhuanzu_money), 1095, u'%s:出租合同 %s 转租违约业绩金额异常,期望值 %s 实际值 %s' % ( fileName, apartmentContractNum, zhuanzu_money, breachAchievementInfo[1])) else: consoleLog(u'%s:出租合同 %s 转租终止生成违约业绩异常,执行SQL:%s' % (fileName, apartmentContractNum, breachAchievementSql)) # 业绩审核 base.open(page.defaultAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage.searchContractMould['reset_button_loc']) # 重置 time.sleep(10) # 等待重新核算更新数据 base.input_text(apartmentAchievementPage.searchContractMould['breach_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage.searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage.searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick(apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage.detailAchievementMoudle['breach_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage.detailAchievementMoudle['audit_button_loc']) base.input_text(apartmentAchievementPage.detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage.detailAchievementMoudle['contract_audit_confirm']) base.check_submit() # 修改终止结算类型和转租费 audit(apartmentContractEndId, auditType.apartmentContractEnd, auditStatus.fanShen) base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentContractEndPage.searchMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) # 等待列表刷新 base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) # 双击第一条数据 zhuanzu_money_new = str(float(zhuanzu_money)+100) base.input_text(apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest2') # 备注 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=21) # 转租费 base.input_text(apartmentContractEndPage.addContractEndMould['zhuanzu_money_loc'], zhuanzu_money_new) # 应收转租金 base.click(apartmentContractEndPage.addContractEndMould['save_button']) # 保存 base.check_submit() # 获取修改后业绩数据 time.sleep(10) breachAchievementNewSql = "select is_active,accounting_money,achieve_id from breach_achievement where breach_num='%s' and deleted=0 and breach_type='CUSTOMER_SUBLET'" % apartmentContractNum breachAchievementNewInfo = sqlbase.serach(breachAchievementNewSql) base.diffAssert(lambda test: asserts(breachAchievementNewInfo[1]).is_equal_to(zhuanzu_money), 1095, u'%s:出租合同 %s 转租终止违约修改转租费后业绩金额异常,期望值 %s 实际值 %s' % (fileName, apartmentContractNum, zhuanzu_money, breachAchievementNewInfo[1])) # 业绩分成明细表(预估业绩排行榜数据取值表,检查违约业绩同步更新到预估业绩排行榜) breahAchievementDetailSql = "select ca.receivable from contract_achievement ca inner join contract_achievement_detail cad on ca.achieve_id=cad.achieve_id inner join breach_achievement ba " \ "on ba.achieve_id=ca.achieve_id and ba.breach_type='CUSTOMER_SUBLET' and ba.deleted=0 and ba.breach_num='%s' where ca.contract_category='CUSTOMER_SUBLET' " \ "and ca.deleted=0 " % apartmentContractNum prebreachAchievement = sqlbase.serach(breahAchievementDetailSql)[0] base.diffAssert(lambda test: asserts(prebreachAchievement).is_equal_to(zhuanzu_money), 1095, u'%s:出租合同 %s 转租终止违约修改转租费后,业绩分成明细业绩金额异常,实际值 %s 期望值 %s' % ( fileName, apartmentContractNum, prebreachAchievement, breach_money))
def test_1057(): """已审核的业绩修改出租合同租金价格""" # describe:在委托合同详情中,修改业绩核算周期对应时间段的出租合同租金价格,已审核的业绩数据不变 # data:1、业绩审核状态为待审核;1、业绩状态为已审核;3、提前记录原业绩中的核算出租和差价业绩; # result:1、业绩中所有字段都不发生变化; fileName = 'apartmentAchievement_1057' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], #承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] achievementSql = "select substring_index(house_code,'-',1) from apartment_contract_achievement where contract_num='%s'and deleted=0" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1057, u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum)) # 委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同审核 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩检查 achievementsqlb = "select aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.achievementRent from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsqlb, 1)).is_true( ), 1057, u'%s:合同 %s 对应业绩生效异常' % (fileName, apartmentContractNum)) profits_feeOld = sqlbase.serach(achievementsqlb)[3] # 差价业绩 achievementRentOld = sqlbase.serach(achievementsqlb)[4] # 核算出租价 # 获取当前的核算收进价和差价业绩并审核 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage. detailAchievementMoudle['audit_button_loc']) base.input_text( apartmentAchievementPage. detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage. detailAchievementMoudle['contract_audit_confirm']) base.check_submit() # 反审出租合同并修改租金 audit(apartmentContractId, auditType.apartmentContract, auditStatus.fanShen) base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract'], checkLoc=apartmentContractPage. addApartmentContractMould['contract_num_loc']) # 双击第一条数据 # base.click(apartmentContractPage.addApartmentContractMould['rent_strategy1_end_loc']) base.script( "$('#contract_strategy_table > table > tbody > tr > td:nth-child(8) > input').click()" ) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy1_end_loc'], dateInfo[6]) base.click(apartmentContractPage. addApartmentContractMould['rent_strategy_menu_loc']) base.input_text( apartmentContractPage. addApartmentContractMould['rent_strategy2_money_loc'], 3000) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy2_end_loc'], dateInfo[5]) base.click( apartmentContractPage.addApartmentContractMould['save_button']) base.check_submit() # 数据库获取最新的核算收进价和差价业绩 time.sleep(10) achievementInfoSql = "select profits_fee,rent_cost,end_time,achievementRent from apartment_contract_achievement where contract_num='%s' and deleted=0" % apartmentContractNum achievementInfo = sqlbase.serach(achievementInfoSql) achievementRent = achievementInfo[3] # 核算出租价 profits_fee = achievementInfo[0] # 差价业绩 base.diffAssert( lambda test: asserts(achievementRent).is_equal_to( achievementRentOld), 1057, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, achievementRentOld, achievementRent)) base.diffAssert( lambda test: asserts(profits_fee).is_equal_to(profits_feeOld), 1057, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_feeOld, profits_fee))
def test_1048(): """修改前合同终止结算日期""" # describe:修改前合同终止结算日期 # data:1、业绩审核状态为待审核;2、业绩对应的合同有前合同,且前合同有终止结算;3、前合同终止日期之后无资源划转;4、记录原业绩中的委托核算周期和差价业绩;5、终止结算日期不在委托合同免租期内; # result:1、新业绩中委托核算周期比原来多1天;2、新的差价业绩与原来的值不同; fileName = 'apartmentAchievement_1048' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),DATE_SUB(date(sysdate()),INTERVAL 1 year) ,DATE_SUB(date(sysdate()),INTERVAL 11 MONTH) ,DATE_ADD(date(sysdate()),INTERVAL 1 YEAR) ," "DATE_ADD(date(sysdate()),INTERVAL 15 MONTH) ,DATE_SUB(date(sysdate()),INTERVAL 1 MONTH),DATE_SUB(date(sysdate()),INTERVAL 20 DAY)," "DATE_SUB(date(DATE_ADD(date(sysdate()),INTERVAL 1 YEAR)),INTERVAL 1 DAY ) from dual " ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[1], owner_sign_date=dateInfo[1], entrust_start_date=dateInfo[1], entrust_end_date=dateInfo[7], delay_date=dateInfo[4], free_start_date=dateInfo[1], free_end_date=dateInfo[2], first_pay_date=dateInfo[1], second_pay_date=dateInfo[2], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[1], fitment_end_date=dateInfo[2], rooms=3, fitmentCost=88888, houseInfo=houseInfo) rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfoF = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[2], rent_start_date=dateInfo[2], rent_end_date=dateInfo[7], deposit=rentPrice, payment_cycle='MONTH') apartmentContractNumF = apartmentContractInfoF['contractNum'] apartmentContractIdF = apartmentContractInfoF['contractID'] # 第一份合同审核 audit(apartmentContractIdF, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) # base.input_text(apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNumF) # 输入合同编号 # base.click(apartmentContractPage.searchContractMould['search_button_loc']) # base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) # base.dblclick(apartmentContractPage.searchContractMould['tr_contract']) # 双击第一条数据 # # 打开详情页需要加载,但DOM其实已经加载完仍旧无法点击,此处加5秒等待 # for i in range(5): # try: # base.click(apartmentContractPage.addApartmentContractMould['tab_info_loc'], index=4) # 租客详情 # break # except: # time.sleep(1) # # 初审 # base.click(apartmentContractPage.addApartmentContractMould['chushen_loc']) # 初审 # base.click(apartmentContractPage.addApartmentContractMould['contract_audit_confirm']) # 确定 # base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) # 等待列表刷新 # base.dblclick(apartmentContractPage.searchContractMould['tr_contract']) # 双击第一条数据 # for i in range(5): # try: # base.click(apartmentContractPage.addApartmentContractMould['tab_info_loc'], index=4) # 租客详情 # break # except: # time.sleep(1) # # 复审 # base.click(apartmentContractPage.addApartmentContractMould['fushen_loc']) # 复审 # base.click(apartmentContractPage.addApartmentContractMould['contract_audit_confirm']) # 确定 # base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) # 等待列表刷新 #终止结算 base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text( apartmentContractEndPage.addContractEndMould['contract_num_loc'], apartmentContractNumF) # 输入合同编 base.click(apartmentContractEndPage. addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage. addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage. addContractEndMould['tr_contract']) # 右击第一条数据 base.click( apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 base.click(apartmentContractEndPage.addContractEndMould['now_end_loc'] ) # 立即终止 base.input_text( apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'承租周期已完') # 终止原因 endNum = 'AutoACE' + '-' + time.strftime('%m%d%H%M') base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[5]) # 终止日期:合同到期日 base.type_select(apartmentContractEndPage.typeMould['end_type'], 'OWNER_DEFAULT') # 退租 base.input_text( apartmentContractEndPage.addContractEndMould['end_num_loc'], endNum) # 终止协议号 base.type_select( apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.type_select(apartmentContractEndPage.typeMould['pay_type_loc'], 'PERSONAL') # 个人 base.input_text( apartmentContractEndPage.addContractEndMould['receipt_num_loc'], '123456789') # 收款卡号 base.send_keys( apartmentContractEndPage.addContractEndMould['receipt_num_loc'], Keys.ENTER) base.click( houseContractPage.addHouseContractMould['close_loc']) # 确认无误 base.dblclick( apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=12) # 违约金 base.input_text(apartmentContractEndPage. addContractEndMould['receivable_money_loc'], '888.88') # 应收违约金 base.input_text( apartmentContractEndPage.addContractEndMould['payable_money_loc'], '666.66') # 应退违约金 base.upload_file( apartmentContractEndPage.addContractEndMould['add_end_image_loc'], 'C:\Users\Public\Pictures\Sample Pictures\jsp.jpg') # 传图 base.wait_element( apartmentContractEndPage.addContractEndMould['end_image_loc']) base.input_text( apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # 备注 base.click(apartmentContractEndPage. addContractEndMould['submit_button']) # 提交 base.check_submit() # 等待提交完成 apartmentStatusSql = "select * from apartment where rent_status='WAITING_RENT' and apartment_id='%s' " % apartmentId base.diffAssert( lambda test: asserts(sqlbase.waitData(apartmentStatusSql, 1)). is_true(), 1048, u'%s:房源ID %s 未释放' % (fileName, apartmentId)) # 第二份出租合同 customer = createCustomer() apartmentContractInfoS = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[0], rent_end_date=dateInfo[7], deposit=rentPrice, payment_cycle='MONTH') apartmentContractNumS = apartmentContractInfoS['contractNum'] achievementSql = "select profits_fee from apartment_contract_achievement where contract_num='%s' and deleted=0 and accounting_num=1" % apartmentContractNumS base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1048, u'%s:出租合同 %s 业绩生成异常' % (fileName, apartmentContractNumS)) # 获取当前的核算收进价和差价业绩 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNumS) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 accountingmonthOld = base.script( "var a = $('#house_contract_table tbody > tr >td:nth-child(9)').text();return a", True) profits_fee_old = sqlbase.serach(achievementSql)[0] # 修改前合同终止结算日期 base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], apartmentContractNumF) base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end'], checkLoc=apartmentContractEndPage. addContractEndMould['apartment_num_loc']) time.sleep(3) base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[6]) # 终止日期:合同到期日 base.click( apartmentContractEndPage.addContractEndMould['save_button']) # 保存 base.check_submit() # 获取最新的核算收进价和差价业绩 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 time.sleep(10) base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNumS) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 accountingmonthNew = base.script( "var a = $('#house_contract_table tbody > tr >td:nth-child(9)').text();return a", True) profits_fee_new = sqlbase.serach(achievementSql)[0] base.diffAssert( lambda test: asserts(accountingmonthNew).is_not_equal_to( accountingmonthOld), 1048, u'%s:出租合同 %s 对应前合同终止日期修改后业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNumS, accountingmonthOld, accountingmonthNew)) base.diffAssert( lambda test: asserts(profits_fee_new).is_not_equal_to( profits_fee_old), 1048, u'%s:出租合同 %s 对应委托成本修改后业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNumS, profits_fee_old, profits_fee_new))
def test_1059(): """修改前合同终止结算日期""" # describe:修改前合同终止结算日期,已审核的业绩不变 # data:1、业绩审核状态为待审核;2、业绩对应的合同有前合同,且前合同有终止结算;3、前合同终止日期之后无资源划转;4、记录原业绩中的委托核算周期和差价业绩;5、终止结算日期不在委托合同免租期内; # result:1.业绩不变 fileName = 'apartmentAchievement_1059' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1") # 获取随机开发房源 houseInfo = {'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2],'houseCode': houseSql[3]} dateInfo = sqlbase.serach("select date(sysdate()),DATE_SUB(date(sysdate()),INTERVAL 1 year) ,DATE_SUB(date(sysdate()),INTERVAL 11 MONTH) ,DATE_ADD(date(sysdate()),INTERVAL 1 YEAR) ," "DATE_ADD(date(sysdate()),INTERVAL 15 MONTH) ,DATE_SUB(date(sysdate()),INTERVAL 1 MONTH),DATE_SUB(date(sysdate()),INTERVAL 20 DAY) from dual ") # 日期元素 apartmentId = addHouseContractAndFitment(apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[1], owner_sign_date=dateInfo[1], entrust_start_date=dateInfo[1], entrust_end_date=dateInfo[3], delay_date=dateInfo[4], free_start_date=dateInfo[1], free_end_date=dateInfo[2], first_pay_date=dateInfo[1], second_pay_date=dateInfo[2], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[1], fitment_end_date=dateInfo[2], rooms=3, fitmentCost=88888,houseInfo=houseInfo) houseContractInfo = sqlbase.serach("select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' " "where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach("select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfoF = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[2], rent_start_date=dateInfo[2], rent_end_date=dateInfo[3], deposit=rentPrice, payment_cycle='MONTH') apartmentContractNumF = apartmentContractInfoF['contractNum'] apartmentContractIdF = apartmentContractInfoF['contractID'] # 委托合同审核 audit(houseContractId,auditType.houseContract,auditStatus.chuShen,auditStatus.fuShen) # 第一份合同审核 audit(apartmentContractIdF, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 终止结算 base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text(apartmentContractEndPage.addContractEndMould['contract_num_loc'], apartmentContractNumF) # 输入合同编 base.click(apartmentContractEndPage.addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage.addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage.addContractEndMould['tr_contract']) # 右击第一条数据 base.click(apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 base.click(apartmentContractEndPage.addContractEndMould['now_end_loc']) # 立即终止 base.input_text(apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'承租周期已完') # 终止原因 endNum = 'AutoACE' + '-' + time.strftime('%m%d%H%M') base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[5]) # 终止日期:合同到期日 base.type_select(apartmentContractEndPage.typeMould['end_type'], 'OWNER_DEFAULT') # 退租 base.input_text(apartmentContractEndPage.addContractEndMould['end_num_loc'], endNum) # 终止协议号 base.type_select(apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.type_select(apartmentContractEndPage.typeMould['pay_type_loc'], 'PERSONAL') # 个人 base.input_text(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], '123456789') # 收款卡号 base.send_keys(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], Keys.ENTER) base.click(houseContractPage.addHouseContractMould['close_loc']) # 确认无误 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=12) # 违约金 base.input_text(apartmentContractEndPage.addContractEndMould['receivable_money_loc'], '888.88') # 应收违约金 base.input_text(apartmentContractEndPage.addContractEndMould['payable_money_loc'], '666.66') # 应退违约金 base.upload_file(apartmentContractEndPage.addContractEndMould['add_end_image_loc'], 'C:\Users\Public\Pictures\Sample Pictures\jsp.jpg') # 传图 base.wait_element(apartmentContractEndPage.addContractEndMould['end_image_loc']) base.input_text(apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # 备注 base.click(apartmentContractEndPage.addContractEndMould['submit_button']) # 提交 base.check_submit() # 等待提交完成 apartmentContractF_EndId = sqlbase.serach("select end_id from apartment_contract_end ace inner join apartment_contract ac on ac.contract_id=ace.contract_id " "and ac.contract_num='%s'" % apartmentContractNumF)[0] audit(apartmentContractF_EndId, auditType.apartmentContractEnd, auditStatus.chuShen, auditStatus.fuShen) # 终止结算审核 apartmentStatusSql = "select * from apartment where rent_status='WAITING_RENT' and apartment_id='%s' " % apartmentId base.diffAssert(lambda test: asserts(sqlbase.waitData(apartmentStatusSql, 1)).is_true(), 1059, u'%s:房源ID %s 未释放' % (fileName, apartmentId)) # 第二份出租合同 customer = createCustomer() apartmentContractInfoS = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[0], rent_end_date=dateInfo[3],# 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNumS = apartmentContractInfoS['contractNum'] apartmentContractSId = apartmentContractInfoS['contractID'] # 出租合同审核 audit(apartmentContractSId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩生效检查 achievementsql = "select aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" \ "and aca.accounting_num=1" % (apartmentId, apartmentContractNumS) base.diffAssert(lambda test: asserts(sqlbase.waitData(achievementsql, 1)).is_true(), 1059, u'%s:合同 %s 对应业绩生效异常' % (fileName, apartmentContractNumS)) profits_feeOld = sqlbase.serach(achievementsql)[3] # 差价业绩 # 获取当前的核算收进价和差价业绩并审核业绩 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage.searchContractMould['reset_button_loc']) # 重置 base.input_text(apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNumS) # 输入合同号 base.type_select(apartmentAchievementPage.searchContractMould['contract_type_loc'], 'NEWSIGN') # 承租类型 base.click(apartmentAchievementPage.searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage.searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick(apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage.detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 accountingmonthOld = base.script( "var a = $('#house_contract_table tbody > tr >td:nth-child(9)').text();return a", True) # 核算周期 base.click(apartmentAchievementPage.detailAchievementMoudle['audit_button_loc']) base.input_text(apartmentAchievementPage.detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage.detailAchievementMoudle['contract_audit_confirm']) base.check_submit() time.sleep(3) # 反审前合同终止结算并修改终止结算日期 audit(apartmentContractF_EndId, auditType.apartmentContractEnd, auditStatus.fanShen) # 终止结算反审 base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], apartmentContractNumF) base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end'], checkLoc=apartmentContractEndPage.addContractEndMould['apartment_num_loc']) time.sleep(3) base.type_date(apartmentContractEndPage.typeMould['end_date'], dateInfo[6]) # 终止日期:合同到期日 base.click(apartmentContractEndPage.addContractEndMould['save_button']) # 保存 base.check_submit() # 获取最新的核算周期和差价业绩(业绩数据库表没有对应字段,直接页面检测) base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage.searchContractMould['reset_button_loc']) # 重置 time.sleep(10) base.input_text(apartmentAchievementPage.searchContractMould['contract_num_loc'],apartmentContractNumS) # 输入合同号 base.type_select(apartmentAchievementPage.searchContractMould['contract_type_loc'], 'NEWSIGN') # 承租类型 base.click(apartmentAchievementPage.searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage.searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick(apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage.detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 accountingmonthNew = base.script( "var a = $('#house_contract_table tbody > tr >td:nth-child(9)').text();return a", True) achievementNewSql = "select profits_fee from apartment_contract_achievement where contract_num='%s' and deleted=0 and accounting_num=1" % apartmentContractNumS profits_feeNew = sqlbase.serach(achievementNewSql)[0] base.diffAssert(lambda test: asserts(accountingmonthNew).is_equal_to(accountingmonthOld),1059, u'%s:出租合同 %s 对应前合同终止日期修改后已审核业绩中核算收进价异常,修改前 %s 修改后 %s ' % (fileName, apartmentContractNumS, accountingmonthOld, accountingmonthNew)) base.diffAssert(lambda test: asserts(profits_feeNew).is_equal_to(profits_feeOld),1059, u'%s:出租合同 %s 对应委托成本修改后已审核业绩中差价业绩异常,修改前 %s 修改后 %s ' % (fileName, apartmentContractNumS, profits_feeOld, profits_feeNew))
def test_1049(): """修改出租合同承租到期日-1""" # describe:在出租合同详情中,修改出租合同承租到期日减1天;业绩发生变化 # data:1、业绩审核状态为待审核;2、合同只生成1条业绩;3、记录原业绩中出租和委托核算周期及差价业绩; # result:1、业绩中出租和委托核算周期都减1天;2、差价业绩变化; fileName = 'apartmentAchievement_1049' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month)," "DATE_SUB(date_add(date(sysdate()),INTERVAL 6 month),INTERVAL 1 DAY) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], # 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] achievementSql = "select substring_index(house_code,'-',1) from apartment_contract_achievement where contract_num='%s' and deleted=0" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1049, u'%s:业绩生成异常' % fileName) # 获取当前的核算收进价和差价业绩 achievement1Sql = "select start_time,end_time,profits_fee from apartment_contract_achievement where contract_num='%s' and deleted=0 and accounting_num=1" % apartmentContractNum achievement1Info = sqlbase.serach(achievement1Sql) accountingEndTime1_old = achievement1Info[1] profits_fee1_old = achievement1Info[2] base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract'], checkLoc=apartmentContractPage. addApartmentContractMould['contract_num_loc']) # 双击第一条数据 base.type_date(apartmentContractPage.typeMould['rent_end_date2'], dateInfo[7]) # 承租到期日 base.type_select(apartmentContractPage.typeMould['payment_type'], 'NORMAL') # 正常付款 base.type_select(apartmentContractPage.typeMould['payment_cycle'], 'MONTH') # 一次性付款 base.script( "$('#contract_strategy_table > table > tbody > tr > td:nth-child(8) > input').click()" ) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy1_end_loc'], dateInfo[7]) base.click( apartmentContractPage.addApartmentContractMould['save_button']) base.check_submit() # 获取最新的核算收进价和差价业绩 time.sleep(10) achievement1InfoNew = sqlbase.serach(achievement1Sql) accountingEndTime1_new = achievement1InfoNew[1] profits_fee1_new = achievement1InfoNew[2] base.diffAssert( lambda test: asserts(accountingEndTime1_new).is_not_equal_to( accountingEndTime1_old), 1049, u'%s:出租合同 %s 对应承租期修改后业绩中核算周期异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, accountingEndTime1_old, accountingEndTime1_new)) base.diffAssert( lambda test: asserts(profits_fee1_new).is_not_equal_to( profits_fee1_old), 1049, u'%s:出租合同 %s 对应委托成本修改后业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_fee1_old, profits_fee1_new))
def test_1046(): """修改免租期""" # describe:在委托合同详情中,修改业绩核算周期对应时间段的委托合同租金策略中的免租期; # data:1、业绩审核状态为待审核;2、委托合同状态为待审核或者已初审;3、提前记录原业绩中的核算收进价和差价业绩; # result:1、新产生的业绩中核算收进价与原记录不同;2、新的差价业绩与原来的值不同; fileName = 'apartmentAchievement_1046' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 10 day) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], # 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 业绩检查 achievementSql = "select substring_index(aca.house_code,'-',1),aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.rent_cost from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1046, u'%s:合同 %s 业绩生成异常' % (fileName, apartmentContractNum)) achievementInfo = sqlbase.serach(achievementSql) profits_fee_old = achievementInfo[4] # 差价业绩 rent_cost_old = achievementInfo[5] # 核算收进价 houseCode = achievementInfo[0] # 修改租金策略并且复审 base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], houseCode) base.click( houseContractPage.contractSearchMould['search_button_loc']) # 搜索 base.staleness_of( houseContractPage.contractSearchMould['tr_contract']) # 等待列表刷新 base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage. addHouseContractMould['contract_num_loc']) # 双击第一条数据 time.sleep(3) base.script( "$('#contract_strategy_table0 tr>td:nth-child(11)>input').click()") base.script( "$('#contract_strategy_table0 tr>td:nth-child(11)>input').datebox('setValue','%s')" % dateInfo[6]) base.click( houseContractPage.addHouseContractMould['page1_save_button']) # 保存 try: base.check_submit() except: message = base.script( "var a=$('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) messagehope = u'用户数据已经被其他用户更新' if messagehope in message: base.click(houseContractPage. addHouseContractMould['message_close_loc']) # 关闭提示 base.click(houseContractPage. addHouseContractMould['page1_save_button']) # 保存 base.check_submit() # 委托合同复审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=1) # 租金页面 base.click(houseContractPage. addHouseContractMould['rent_detail_selectAll']) # 全选 base.click( houseContractPage.addHouseContractMould['rent_audit_loc']) # 审核 base.click( houseContractPage.addHouseContractMould['audit_pass_loc']) # 通过 base.click(houseContractPage. addHouseContractMould['rent_audit_confirm']) # 确认 # 初审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) # 最后一页 time.sleep(2) base.script('$("button[status=\'PASS\']")[2].click()') # 初审 base.click(houseContractPage. addHouseContractMould['contract_audit_confirm']) # 确认 for i in range(3): try: base.staleness_of(houseContractPage. contractSearchMould['tr_contract']) # 等待数据刷新 break except: message = base.script( "var a=$('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) messagehope = u'用户数据已经被其他用户更新' if messagehope in message: base.click( houseContractPage. addHouseContractMould['message_close_loc']) # 关闭提示 base.click( houseContractPage. addHouseContractMould['contract_audit_confirm']) # 确认 base.staleness_of( houseContractPage.contractSearchMould['tr_contract'] ) # 等待数据刷新 # 复审 base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage. addHouseContractMould['contract_num_loc']) # 双击第一条数据 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) # 最后一页 time.sleep(2) base.script('$("button[status=\'APPROVED\']")[1].click()') # 复审 base.click(houseContractPage. addHouseContractMould['rentdif_cofirm_loc']) # 租金策略不同提示确定 base.click(houseContractPage. addHouseContractMould['contract_audit_confirm']) # 确认 base.check_submit() # 获取最新的核算收进价和差价业绩 time.sleep(10) profits_fee_new = sqlbase.serach(achievementSql)[4] rent_cost_new = sqlbase.serach(achievementSql)[5] base.diffAssert( lambda test: asserts(rent_cost_new).is_not_equal_to(rent_cost_old), 1046, u'%s:出租合同 %s 对应委托免租期修改后业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, rent_cost_old, rent_cost_new)) base.diffAssert( lambda test: asserts(profits_fee_new).is_not_equal_to( profits_fee_old), 1046, u'%s:出租合同 %s 对应委托成本修改后业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_fee_old, profits_fee_new))
def test_1058(): """修改房源的装修成本""" # describe:在设计工程中修改房源的装修成本,对应业绩装修成本改变 # data:1、业绩审核状态为待审核;2、委托合同状态为待审核或者已初审;3、提前记录原业绩中的核算收进价和差价业绩; # result:1、新产生的业绩中核算收进价与原记录不同;2、新的差价业绩与原来的值不同; fileName = 'apartmentAchievement_1058' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], #承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] achievementSql = "select substring_index(house_code,'-',1) from apartment_contract_achievement where contract_num='%s'and deleted=0" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1058, u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum)) houseCode = sqlbase.serach(achievementSql)[0] # 委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同审核 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩检查 achievementsqlb = "select aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.decorate_cost from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsqlb, 1)).is_true( ), 1058, u'%s:合同 %s 对应业绩生效异常' % (fileName, apartmentContractNum)) profits_feeOld = sqlbase.serach(achievementsqlb)[3] # 差价业绩 decorate_costOld = sqlbase.serach(achievementsqlb)[4] # 装修成本 # 获取当前的核算收进价和差价业绩并审核 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage. detailAchievementMoudle['audit_button_loc']) base.input_text( apartmentAchievementPage. detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage. detailAchievementMoudle['contract_audit_confirm']) base.check_submit() # 修改装修成本 base.open(page.designManageSharePage, designSharePage.searchMould['tr_contract']) base.input_text(designSharePage.searchMould['residential_name_loc'], houseCode) base.click(designSharePage.searchMould['search_btn_loc']) base.staleness_of(designSharePage.searchMould['tr_contract']) base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn_2'], index=0) time.sleep(2) base.input_text(designSharePage.designShareMould['total_cost'], '68888.00') base.click(designSharePage.designShareMould['save_btn_2']) base.check_submit() # 数据库获取最新的核算收进价和差价业绩 time.sleep(10) achievementInfoSql = "select profits_fee,rent_cost,end_time,achievementRent,decorate_cost from apartment_contract_achievement where contract_num='%s' and deleted=0" % apartmentContractNum achievementInfo = sqlbase.serach(achievementInfoSql) decorate_cost = achievementInfo[4] # 装修成本 profits_fee = achievementInfo[0] # 差价业绩 base.diffAssert( lambda test: asserts(decorate_cost).is_equal_to(decorate_costOld), 1058, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, decorate_costOld, decorate_cost)) base.diffAssert( lambda test: asserts(profits_fee).is_equal_to(profits_feeOld), 1058, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_feeOld, profits_fee))
def test_1054(): """出单业绩删除""" # describe: 删除业绩对应的出租合同,业绩状态变为已失效; # data:1、业绩审核状态为未审核;2、业绩状态为生效;3、出租合同未终止结算且未续签 # result:11、业绩从出单业绩列表中删除;2、分成记录从预估业绩排行榜中删除;3、有核发月份的分成记录还需要从核发业绩排行榜中删除 fileName = 'apartmentAchievement_1054' with Base() as base: # 创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 1 year),date_add(date(sysdate()),interval 3 year),date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[3], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888) # 创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[2], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_id='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='SHARE' " \ "AND ac.is_active='Y' " % (apartmentId, apartmentContractNum) # 业绩检查 achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId,apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsqla, 1)).is_true( ), 1054, u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum)) # 删除出租合同 base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['delete_loc']) base.click(apartmentContractPage. addApartmentContractMould['delete_button_confirm']) base.check_submit() time.sleep(10) achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId,apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.get_count(achievementsqla) ).is_equal_to(0), 1054, u'%s:合同 %s 对应业绩删除异常' % (fileName, apartmentContractNum)) # 预估业绩排行榜 base.open(page.achievementListPrePage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.staleness_of( apartmentAchievementPage.searchContractMould['tr_contract']) base.input_text(apartmentAchievementPage. searchContractMould['contract_num_hefa_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 try: base.wait_element( apartmentAchievementPage.searchContractMould['tr_contract']) except: achievementDetailCount = sqlbase.get_count( "select * from contract_achievement_detail acd inner join apartment_contract_achievement aca " "on aca.achievement_id=acd.achieve_id and aca.contract_num='%s' where acd.deleted=0" % apartmentContractNum) if achievementDetailCount == 0: consoleLog(u'%s:出租合同 %s 删除后分成记录从预估业绩排行榜中删除' % (fileName, apartmentContractNum))
def test_1053(): """生效业绩变为已失效""" # describe: 删除业绩对应的出租合同,业绩状态变为已失效; # data:1、业绩审核状态为已审核;2、业绩状态为生效;3、出租合同未终止结算且未续签 # result:1、业绩状态变为已失效;2、业绩已失效状态同步到预估业绩排行榜和核发业绩排行榜; fileName = 'apartmentAchievement_1053' with Base() as base: #创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 1 year),date_add(date(sysdate()),interval 3 year),date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[3], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractNum = houseContractInfo[0] houseContractId = houseContractInfo[1] #创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[2], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] #业绩检查 achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId,apartmentContractNum) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert( lambda test: asserts(achievementinfo[0]).is_equal_to('N'), 1053, u'%s:合同 %s 对应业绩生效状态异常,期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert( lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1053, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) else: consoleLog(u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum), 'e') consoleLog(u'执行SQL:%s' % achievementsqla) #委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) #出租合同审核 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩检查 achievementsqlb = "select aca.is_active,aca.audit_status,aca.contract_audit_status from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsqlb, 1)).is_true( ), 1053, u'%s:合同 %s 对应业绩生效异常' % (fileName, apartmentContractNum)) #业绩审核 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.type_select( apartmentAchievementPage.searchContractMould['contract_type_loc'], 'NEWSIGN') # 承租类型 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage. detailAchievementMoudle['audit_button_loc']) base.input_text( apartmentAchievementPage. detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage. detailAchievementMoudle['contract_audit_confirm']) base.check_submit() achievementStatus = "select * from apartment_contract_achievement where is_active='Y' and audit_status='APPROVED' AND deleted=0 and accounting_num=1 " \ "and city_code=330100 and contract_num='%s'" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementStatus, 1) ).is_true(), 1053, u'%s:合同 %s 对应业绩审核异常' % (fileName, apartmentContractNum)) # 出租合同反审后删除 audit(apartmentContractId, auditType.apartmentContract, auditStatus.fanShen) base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['delete_loc']) base.click(apartmentContractPage. addApartmentContractMould['delete_button_confirm']) base.check_submit() # 预估业绩排行榜 time.sleep(10) chievementDetailSql = "select ca.receivable,ca.is_active from contract_achievement ca inner join contract_achievement_detail cad on ca.achieve_id=cad.achieve_id " \ "inner join apartment_contract_achievement aca on aca.achievement_id=ca.achieve_id and aca.deleted=0 and aca.contract_num='%s' where ca.contract_type='NORMAL' " \ "and ca.deleted=0" % apartmentContractNum breachAchievementStatus = sqlbase.serach(chievementDetailSql)[1] base.diffAssert( lambda test: asserts(breachAchievementStatus).is_equal_to('INVALID' ), 1053, u'%s:出租合同 %s 业绩分成明细业绩状态异常,期望值 INVALID 实际值 %s' % (fileName, apartmentContractNum, breachAchievementStatus))
def test_1070(): """检测出租合同正常续签""" with Base() as base: apartment = interface.addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='ENTIRE', sign_date=today(), owner_sign_date=today(), entrust_start_date=today(), entrust_end_date=addMonths(24), delay_date=addMonths(27), free_start_date=today(), free_end_date=addMonths(1), first_pay_date=today(), second_pay_date=addMonths(1), rent=2800, parking=120, year_service_fee=180, payment_cycle='MONTH') customer = interface.createCustomer() contractInfo = interface.createApartmentContract( apartement_id=apartment, customerInfo=customer, rent_price=5500, sign_date=today(), rent_start_date=today(), rent_end_date=addMonths(12), deposit=2500, payment_cycle='MONTH') base.open( page.apartmentContractPage, apartmentContractPage.searchContractMould['contract_num_loc']) base.click( apartmentContractPage.searchContractMould['entire_tab_button']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractInfo['contractNum'], index=1) base.click(apartmentContractPage. searchContractMould['entire_search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['entire_tr_contract']) interface.receipt('apartmentContract', contractInfo['contractID']) base.click(apartmentContractPage.searchContractMould['resign_loc'], index=1) base.click( apartmentContractPage.addApartmentContractMould['deposit_manage'], index=0) contractNum = contractInfo['contractNum'] + 'xu' base.input_text( apartmentContractPage. addApartmentContractMould['contract_num_loc'], contractNum) base.type_date(apartmentContractPage.typeMould['sign_date'], today()) base.type_date(apartmentContractPage.typeMould['rent_end_date2'], addDays(-1, addMonths(24))) base.input_text( apartmentContractPage.addApartmentContractMould['deposit_loc'], 2000) base.type_select(apartmentContractPage.typeMould['payment_type'], 'NORMAL') base.type_select(apartmentContractPage.typeMould['payment_cycle'], 'TOW_MONTH') base.script( "$('#contract_strategy_table > table > tbody > tr > td:nth-child(8) > input').click()" ) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy1_end_loc'], addDays(-1, addMonths(24))) base.click( apartmentContractPage.addApartmentContractMould['next_loc_1']) base.click( apartmentContractPage.addApartmentContractMould['next_loc_2']) base.click( apartmentContractPage.addApartmentContractMould['submit_loc']) base.check_submit() consoleLog(u'已成功续签承租合同 %s' % contractNum) time.sleep(10) achievementCount = sqlbase.get_count( "SELECT * from apartment_contract_achievement where contract_id = " "(SELECT contract_id from apartment_contract where contract_num = '%s' and deleted = 0)" % contractNum) receiptsCount = sqlbase.get_count( "SELECT * from apartment_contract_receipts where contract_id = " "(SELECT contract_id from apartment_contract where contract_num = '%s' and deleted = 0)" % contractNum) base.diffAssert(lambda t: asserts(achievementCount).is_not_zero(), 1070, u'续签后,没有生成出单业绩') base.diffAssert(lambda t: asserts(receiptsCount).is_not_zero(), 1070, u'续签后,原合同押金没有转入新合同中')
def test_1045(): """修改出租合同租金""" # describe:在出租合同详情中,修改业绩核算周期对应时间段的出租合同租金策略中的租金,业绩发生变化 # data:1、业绩审核状态为待审核;2、委托合同状态为待审核或者已初审;3、提前记录原业绩中的核算出租价和差价业绩; # result:1、新产生的业绩中核算出租价与原记录不同;2、新的差价业绩与原来的值不同; fileName = 'apartmentAchievement_1045' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 3 month) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], # 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 业绩检查 achievementsql = "select aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.achievementRent from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % ( apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsql, 1)).is_true( ), 1057, u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum)) profits_feeOld = sqlbase.serach(achievementsql)[3] # 差价业绩 achievementRentOld = sqlbase.serach(achievementsql)[4] # 核算出租价 # 修改出租合同租金策略 base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract'], checkLoc=apartmentContractPage. addApartmentContractMould['contract_num_loc']) # 双击第一条数据 # base.click(apartmentContractPage.addApartmentContractMould['rent_strategy1_end_loc']) base.script( "$('#contract_strategy_table > table > tbody > tr > td:nth-child(8) > input').click()" ) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy1_end_loc'], dateInfo[6]) base.click(apartmentContractPage. addApartmentContractMould['rent_strategy_menu_loc']) base.input_text( apartmentContractPage. addApartmentContractMould['rent_strategy2_money_loc'], 3000) base.type_date( apartmentContractPage. addApartmentContractMould['rent_strategy2_end_loc'], dateInfo[5]) base.click( apartmentContractPage.addApartmentContractMould['save_button']) base.check_submit() # # 获取最新的核算收进价和差价业绩 time.sleep(10) achievementInfoNew = sqlbase.serach(achievementsql) profits_fee_new = achievementInfoNew[3] # 差价业绩 achievementRent_new = achievementInfoNew[4] # 核算出租价 base.diffAssert( lambda test: asserts(achievementRent_new).is_not_equal_to( achievementRentOld), 1045, u'%s:出租合同 %s 对应租金策略修改后业绩中核算出租业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, achievementRent_new, achievementRentOld)) base.diffAssert( lambda test: asserts(profits_fee_new).is_not_equal_to( profits_feeOld), 1045, u'%s:出租合同 %s 对应委托成本修改后业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_feeOld, profits_fee_new))
def test_1040(): """出租和委托复审后业绩生效""" # describe: 无前合同,出租和委托复审后业绩生效 # data:1、出租合同无前合同;2、出租合同未复审;3、委托合同未复审;4、业绩状态为未生效; # result:1、未生效业绩变为生效;2、业绩中的合同复审状态变为已复审;3、未起算的业绩状态不变; fileName = 'apartmentAchievement_1040' with Base() as base: # 创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 1 year),date_add(date(sysdate()),interval 3 year)," \ "date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[3], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id " "and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] # 创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[2], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_id='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='SHARE' " \ "AND ac.is_active='Y' " % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(contractAdd, 1)).is_true(), 1040, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca inner join apartment a on a.apartment_code=aca.house_code " \ "and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId,apartmentContractNum) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert( lambda test: asserts(achievementinfo[0]).is_equal_to('N'), 1040, u'%s:合同 %s 对应业绩生效状态异常,期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert( lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1040, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) else: consoleLog( u'%s:出租合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum), 'e') consoleLog(u'执行SQL:%s' % achievementsqla) # 委托合同复审 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同复审 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩状态检查 achievementsqlb = "select aca.is_active,aca.audit_status,aca.contract_audit_status from apartment_contract_achievement aca inner join apartment a on a.apartment_code=aca.house_code " \ "and a.apartment_id='%s' where aca.contract_num='%s' and aca.contract_audit_status='APPROVED' and aca.deleted=0" % (apartmentId, apartmentContractNum) if sqlbase.waitData(achievementsqlb, 1): achievementinfob = sqlbase.serach(achievementsqlb) base.diffAssert( lambda test: asserts(achievementinfob[0]).is_equal_to('Y'), 1040, u'%s:合同 %s 对应业绩生效状态异常,期望值 Y 实际值 %s' % (fileName, apartmentContractNum, achievementinfob[0])) base.diffAssert( lambda test: asserts(achievementinfob[1]).is_equal_to('AUDIT'), 1040, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfob[1])) else: consoleLog(u'%s:合同 %s 对应业绩状态错误' % (fileName, apartmentContractNum), 'e') consoleLog(u'执行SQL:%s' % achievementsqlb)
def test_1055(): """已审核的业绩修改委托合同租金""" # describe:在委托合同详情中,修改业绩核算周期对应时间段的委托合同租金策略中的租金,已审核的业绩数据不变 # data:1、业绩审核状态为待审核;1、业绩状态为已审核;3、提前记录原业绩中的核算收进价和差价业绩; # result:1、业绩中所有字段都不发生变化; fileName = 'apartmentAchievement_1055' with Base() as base: #创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) houseContractInfo = sqlbase.serach( "select hc.contract_num,hc.contract_id from house_contract hc inner join apartment a on a.house_id = hc.house_id and a.apartment_id='%s' where hc.audit_status='AUDIT' " % apartmentId) houseContractId = houseContractInfo[1] rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], #承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] apartmentContractId = apartmentContractInfo['contractID'] achievementSql = "select substring_index(house_code,'-',1) from apartment_contract_achievement where contract_num='%s'and deleted=0" % apartmentContractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1055, u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum)) houseCode = sqlbase.serach(achievementSql)[0] # 委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # 出租合同审核 audit(apartmentContractId, auditType.apartmentContract, auditStatus.chuShen, auditStatus.fuShen) # 业绩检查 achievementsqlb = "select aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.rent_cost from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0 and aca.is_active='Y'" % (apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementsqlb, 1)).is_true( ), 1055, u'%s:合同 %s 对应业绩生效异常' % (fileName, apartmentContractNum)) profits_feeOld = sqlbase.serach(achievementsqlb)[3] # 差价业绩 accountingCostOld = sqlbase.serach(achievementsqlb)[4] # 核算收进价 # 获取当前的核算收进价和差价业绩并审核 base.open(page.apartmentAchievementPage, apartmentAchievementPage.searchContractMould['tr_contract']) base.click(apartmentAchievementPage. searchContractMould['reset_button_loc']) # 重置 base.input_text( apartmentAchievementPage.searchContractMould['contract_num_loc'], apartmentContractNum) # 输入合同号 base.click(apartmentAchievementPage. searchContractMould['search_button_loc']) # 查找 base.staleness_of(apartmentAchievementPage. searchContractMould['tr_contract']) # 等待第一条数据刷新 base.dblclick( apartmentAchievementPage.searchContractMould['tr_contract'], checkLoc=apartmentAchievementPage. detailAchievementMoudle['contract_num_loc']) # 点击第一条数据等待详情页面完全显示 base.click(apartmentAchievementPage. detailAchievementMoudle['audit_button_loc']) base.input_text( apartmentAchievementPage. detailAchievementMoudle['contract_audit_content'], 'ok') base.click(apartmentAchievementPage. detailAchievementMoudle['contract_audit_confirm']) base.check_submit() # 反审后修改租金策略并且复审 audit(houseContractId, auditType.houseContract, auditStatus.fanShen) base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], houseCode) base.click( houseContractPage.contractSearchMould['search_button_loc']) # 搜索 base.staleness_of( houseContractPage.contractSearchMould['tr_contract']) # 等待列表刷新 base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage. addHouseContractMould['contract_num_loc']) # 双击第一条数据 base.click(houseContractPage. addHouseContractMould['contract_strategy1.1_loc']) base.input_text( houseContractPage.addHouseContractMould['contract_strategy1_loc'], 4000) # 第二年租金策略 base.click( houseContractPage.addHouseContractMould['page1_save_button']) # 保存 base.check_submit() # 委托合同审核 audit(houseContractId, auditType.houseContract, auditStatus.chuShen, auditStatus.fuShen) # for i in range(3): # try: # base.check_submit() # break # except: # message = base.script( # "var a=$('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # messagehope = u'用户数据已经被其他用户更新' # if messagehope in message: # base.click(houseContractPage.addHouseContractMould['message_close_loc']) # 关闭提示 # base.click(houseContractPage.addHouseContractMould['rent_save_button']) # 保存 # base.check_submit() # # 委托合同复审 # base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=1) # 租金页面 # base.click(houseContractPage.addHouseContractMould['rent_detail_selectAll']) # 全选 # base.click(houseContractPage.addHouseContractMould['rent_audit_loc']) # 审核 # base.click(houseContractPage.addHouseContractMould['audit_pass_loc']) # 通过 # base.click(houseContractPage.addHouseContractMould['rent_audit_confirm']) # 确认 # # 初审 # base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) # 最后一页 # time.sleep(2) # base.script('$("button[status=\'PASS\']")[2].click()') # 初审 # base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) # 确认 # for i in range(3): # try: # base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) # 等待数据刷新 # break # except: # message = base.script( # "var a=$('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # messagehope = u'用户数据已经被其他用户更新' # if messagehope in message: # base.click(houseContractPage.addHouseContractMould['message_close_loc']) # 关闭提示 # base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) # 确认 # base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) # 等待数据刷新 # # 复审 # base.dblclick(houseContractPage.contractSearchMould['tr_contract'], # checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 双击第一条数据 # base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) # 最后一页 # time.sleep(2) # base.script('$("button[status=\'APPROVED\']")[1].click()') # 复审 # base.click(houseContractPage.addHouseContractMould['rentdif_cofirm_loc']) # 租金策略不同提示确定 # base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) # 确认 # for i in range(3): # try: # base.check_submit() # break # except: # message = base.script( # "var a=$('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # messagehope = u'用户数据已经被其他用户更新' # if messagehope in message: # base.click(houseContractPage.addHouseContractMould['message_close_loc']) # 关闭提示 # base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) # 确认 # base.check_submit() # 数据库获取最新的核算收进价和差价业绩 time.sleep(10) achievementInfoSql = "select profits_fee,rent_cost,end_time,achievementRent from apartment_contract_achievement where contract_num='%s' and deleted=0" % apartmentContractNum achievementInfo = sqlbase.serach(achievementInfoSql) rent_cost = achievementInfo[1] # 核算收进价 profits_fee = achievementInfo[0] # 差价业绩 base.diffAssert( lambda test: asserts(rent_cost).is_equal_to(accountingCostOld), 1055, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, accountingCostOld, rent_cost)) base.diffAssert( lambda test: asserts(profits_fee).is_equal_to(profits_feeOld), 1055, u'%s:出租合同 %s 业绩对应委托成本修改后已审核业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_feeOld, profits_fee))
def test_1047(): """修改装修成本""" # describe:在设计工程中修改房源的装修成本,对应业绩装修成本改变 # data:1、业绩审核状态为待审核;2、委托合同状态为待审核或者已初审;3、提前记录原业绩中的核算收进价和差价业绩; # result:1、新产生的业绩中核算收进价与原记录不同;2、新的差价业绩与原来的值不同; fileName = 'apartmentAchievement_1047' with Base() as base: # 创建委托合同和出租合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) # 获取随机开发房源 houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateInfo = sqlbase.serach( "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 2 year),date_add(date(sysdate()),interval 27 month)," "date_add(date(sysdate()),INTERVAL 1 month),date_add(date(sysdate()),INTERVAL 6 month),date_add(date(sysdate()),INTERVAL 10 day) from dual" ) # 日期元素 apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=3000, parking=100, year_service_fee=500, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) rentPriceInfo = sqlbase.serach( "select rent_price,date(sysdate()) from apartment where apartment_id='%s'" % apartmentId) rentPrice = float(rentPriceInfo[0]) customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=rentPrice, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[5], # 承租6个月 deposit=rentPrice, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 业绩检查 achievementSql = "select substring_index(aca.house_code,'-',1),aca.is_active,aca.audit_status,aca.contract_audit_status,aca.profits_fee,aca.decorate_cost from apartment_contract_achievement aca " \ "inner join apartment a on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % ( apartmentId, apartmentContractNum) base.diffAssert( lambda test: asserts(sqlbase.waitData(achievementSql, 1)).is_true( ), 1047, u'%s:合同 %s 业绩生成异常' % (fileName, apartmentContractNum)) achievementInfo = sqlbase.serach(achievementSql) profits_fee_old = achievementInfo[4] # 差价业绩 decorate_cost_old = achievementInfo[5] # 装修成本 houseCode = achievementInfo[0] # 修改装修成本 base.open(page.designManageSharePage, designSharePage.searchMould['tr_contract']) base.input_text(designSharePage.searchMould['residential_name_loc'], houseCode) base.click(designSharePage.searchMould['search_btn_loc']) base.staleness_of(designSharePage.searchMould['tr_contract']) base.context_click(designSharePage.searchMould['tr_contract']) base.click(designSharePage.designShareMould['design_btn_2'], index=0) time.sleep(2) base.input_text(designSharePage.designShareMould['total_cost'], '68888.00') base.click(designSharePage.designShareMould['save_btn_2']) base.check_submit() # 获取最新的核算收进价和差价业绩 time.sleep(10) achievementInfoNew = sqlbase.serach(achievementSql) profits_fee_new = achievementInfoNew[4] # 差价业绩 decorate_cost_new = achievementInfoNew[5] # 装修成本 base.diffAssert( lambda test: asserts(decorate_cost_new).is_not_equal_to( decorate_cost_old), 1047, u'%s:出租合同 %s 对应装修成功修改后业绩中核算收进价异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, decorate_cost_old, decorate_cost_new)) base.diffAssert( lambda test: asserts(profits_fee_new).is_not_equal_to( profits_fee_old), 1047, u'%s:出租合同 %s 对应委托成本修改后业绩中差价业绩异常,修改前 %s 修改后 %s' % (fileName, apartmentContractNum, profits_fee_old, profits_fee_new))
def test(): """API创建合同""" # describe # data: # result: with Base() as base: #创建房源,委托合同 houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1" ) houseInfo = { 'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2], 'houseCode': houseSql[3] } dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 13 month),date_add(date(sysdate()),interval 16 month),date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='SHARE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) print apartmentId #创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract( apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[3], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] #出租合同检查 contractAdd="SELECT DISTINCT ac.contract_num FROM apartment_contract ac, house h,apartment a WHERE ac.house_id = h.house_id " \ "AND ac.house_id = a.house_id AND ac.contract_num = '%s'AND ac.audit_status='AUDIT'and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='SHARE' " \ "AND ac.is_active='Y' "% apartmentContractNum if sqlbase.get_count(contractAdd) == 1: #数据检查 consoleLog(u'出租合同:%s 新增成功' % apartmentContractNum) else: consoleLog(u'合同新增失败', level='e') consoleLog(u'执行SQL:%s' % contractAdd) return #业绩检查 achievementsqla = "select FLOOR(ABS(DATEDIFF(start_time,end_time)/30)),audit_status,is_active from apartment_contract_achievement where contract_num='%s' " % contractNum for i in range(5): if sqlbase.get_count(achievementsqla) == 1: achievementinfo = sqlbase.serach(achievementsqla) if achievementinfo[0] == 16 and achievementinfo[ 1] == 'AUDIT' and achievementinfo[2] == 'N': consoleLog(u'合同 %s 对应生成一条业绩未生效且未审核,周期为16个月' % apartmentContractNum) else: consoleLog(u'合同 %s 对应业绩状态异常' % apartmentContractNum, 'e') consoleLog(u'执行SQL:%s' % achievementsqla) break else: time.sleep(10) if i == 4: consoleLog(u'合同 %s 对应业绩生成错误' % apartmentContractNum, 'e') consoleLog(u'执行SQL:%s' % achievementsqla) else: continue
def test_1070(): """检测出租合同续签超过可续签日期""" with Base() as base: apartment = interface.addHouseContractAndFitment( apartment_type='MANAGE', entrust_type='ENTIRE', sign_date=today(), owner_sign_date=today(), entrust_start_date=today(), entrust_end_date=addMonths(24), delay_date=addMonths(27), free_start_date=today(), free_end_date=addMonths(1), first_pay_date=today(), second_pay_date=addMonths(1), rent=2800, parking=120, year_service_fee=180, payment_cycle='MONTH') customer = interface.createCustomer() contractInfo = interface.createApartmentContract( apartement_id=apartment, customerInfo=customer, rent_price=5500, sign_date=today(), rent_start_date=today(), rent_end_date=addMonths(12), deposit=2500, payment_cycle='MONTH') base.open( page.apartmentContractPage, apartmentContractPage.searchContractMould['contract_num_loc']) base.click( apartmentContractPage.searchContractMould['entire_tab_button']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractInfo['contractNum'], index=1) base.click(apartmentContractPage. searchContractMould['entire_search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['entire_tr_contract']) interface.receipt('apartmentContract', contractInfo['contractID']) base.click(apartmentContractPage.searchContractMould['resign_loc'], index=1) base.click( apartmentContractPage.addApartmentContractMould['deposit_manage'], index=0) contractNum = contractInfo['contractNum'] + 'xu' base.input_text( apartmentContractPage. addApartmentContractMould['contract_num_loc'], contractNum) base.type_date(apartmentContractPage.typeMould['sign_date'], today()) base.type_date(apartmentContractPage.typeMould['rent_end_date2'], addDays(1, addMonths(27))) try: base.wait_element(apartmentContractPage.alertInfo) except TimeoutException: consoleLog( u'出租合同 %s 新签成功,续签承租到期日为 %s' % (contractInfo['contractNum'], addDays(1, addMonths(27)))) base.diffAssert(lambda t: asserts('a').ends_with('b'), 1071, u'续签出租合同,承租到期日超过委托合同实际到期日时,没有弹出超过时间的提示')