global class TotalPriceWebService { WebService static String canAddMc(String recordId) { List mcpeList = [Select Id from MaintanceContractPackEstimate__c Where MaintanceContractPack__c = :recordId and Decide__c =true limit 1]; if(mcpeList.size()>0) { return '2'; //有decide的报价组合之后,不能添加小合同 } else { List mcpeStatusList = [Select Id from MaintanceContractPackEstimate__c Where MaintanceContractPack__c = :recordId and ( Process_Status__c='申请中' OR Process_Status__c='批准' ) limit 1]; if(mcpeStatusList.size()>0) { //有不是草案中的报价组合,提示重新做报价 return '3'; } } return '1'; } /*WebService static String updateColunm(String mcpid ){ //当前维修合同 List mcList = [Select Id,Submit_contract_to_Financial_dept__c,HP_Dealer_print__c,Contract_print_completed__c,OCM_Print_request__c,GuidePrice_DownF__c,GuidePrice_UpF__c,Request_quotation_AmountF__c, Contract_Start_Date__c,Contract_End_Date__c,Limit_Price_Amount__c,Contract_Amount__c,Asset_Repair_Sum_PriceF__c from Maintenance_Contract__c where MaintanceContractPack__c = :mcpid]; MaintanceContractPack__c mcp = new MaintanceContractPack__c(); mcp.id = mcpid; Decimal GuidePrice_DownF = 0; Decimal GuidePrice_UpF = 0; Decimal FieldRequest_quotation_Amount = 0; Decimal Limit_Price_Amount = 0; Decimal Asset_Repair_Sum_PriceF = 0; Decimal Contract_Amount = 0; Date Contract_Start_Date ; Date Contract_End_Date ; Date OCM_Print_request ; Date Contract_print_completed ; Date HP_Dealer_print ; Date Submit_contract_to_Financial_dept ; for ( Maintenance_Contract__c mc :mcList) { //增加上限金额汇总 if (mc.Limit_Price_Amount__c !=null) { Limit_Price_Amount += mc.Limit_Price_Amount__c; } if (mc.Limit_Price_Amount__c !=null) { Asset_Repair_Sum_PriceF += mc.Asset_Repair_Sum_PriceF__c; } if (mc.Limit_Price_Amount__c !=null) { Contract_Amount += mc.Contract_Amount__c; } if (mc.GuidePrice_DownF__c !=null) { GuidePrice_DownF += mc.GuidePrice_DownF__c; } if (mc.GuidePrice_UpF__c !=null) { GuidePrice_UpF += mc.GuidePrice_UpF__c; } if (mc.Request_quotation_AmountF__c!=null) { FieldRequest_quotation_Amount += mc.Request_quotation_AmountF__c; } if (Contract_Start_Date == null&&mc.Contract_Start_Date__c!=null) { Contract_Start_Date = mc.Contract_Start_Date__c; } // 取小合同最最早开始的合同开始日 if (Contract_Start_Date > mc.Contract_Start_Date__c && Contract_Start_Date !=null && mc.Contract_Start_Date__c != null) { Contract_Start_Date = mc.Contract_Start_Date__c; } if (mc.Contract_End_Date__c!=null) { Contract_End_Date = mc.Contract_End_Date__c; } if (mc.OCM_Print_request__c!=null) { OCM_Print_request = mc.OCM_Print_request__c; } if (mc.Contract_print_completed__c!=null) { Contract_print_completed = mc.Contract_print_completed__c; } if (mc.HP_Dealer_print__c!=null) { HP_Dealer_print = mc.HP_Dealer_print__c; } if (mc.Submit_contract_to_Financial_dept__c!=null) { Submit_contract_to_Financial_dept = mc.Submit_contract_to_Financial_dept__c; } } mcp.GuidePrice_DownF__c = GuidePrice_DownF; mcp.GuidePrice_UpF__c = GuidePrice_UpF; mcp.FieldRequest_quotation_Amount__c = FieldRequest_quotation_Amount; mcp.Contract_Amount__c = Contract_Amount; mcp.Asset_Repair_Sum_PriceF__c = Asset_Repair_Sum_PriceF; mcp.Limit_Price_Amount__c = Limit_Price_Amount; if (Contract_Start_Date!=null) { mcp.Contract_Start_Date__c = Contract_Start_Date; } if (Contract_End_Date!=null) { mcp.Contract_End_Date__c = Contract_End_Date; } if (OCM_Print_request!=null) { mcp.OCM_Print_request__c = OCM_Print_request; } if (Contract_print_completed!=null) { mcp.Contract_print_completed__c = Contract_print_completed; } if (HP_Dealer_print!=null) { mcp.HP_Dealer_print__c = HP_Dealer_print; } if (Submit_contract_to_Financial_dept!=null) { mcp.Submit_contract_to_Financial_dept__c = Submit_contract_to_Financial_dept; } try{ update mcp; return '1'; }catch(exception e){ return e.getMessage(); } } //服务合同打包-跳转到提交待审批 // WebService static Map toMcpAprroval(String mcpid ){ // Maintenance_Contract_Estimate__c mce = new Maintenance_Contract_Estimate__c(); // Map maps = new Map(); // maps.put('1',mce); // retrun maps; // } //服务合同打包-提交待审批 WebService static String mcpAprroval(String mcpid ){ Decimal consumptionRateForecast; Decimal GuidePrice_DownF = 0; Decimal GuidePrice_UpF = 0; Decimal FieldRequest_quotation_Amount = 0; Decimal Limit_Price_Amount = 0; Decimal Asset_Repair_Sum_PriceF = 0; Decimal Contract_Amount = 0; Decimal totalPriceNumerator = 0; Decimal totalPriceDenominator = 0; Decimal monthlyRepairCostSUM = 0; Decimal contractRange = 0; Decimal costrateForecast = 0; String estimatePriceRange; String contractPriceType; //当前维修合同(是否存在报价decide的情况) List mcList = [Select Id,Name,Decided_Estimation__c,Submit_contract_to_Financial_dept__c,HP_Dealer_print__c,Contract_print_completed__c,OCM_Print_request__c,GuidePrice_DownF__c,GuidePrice_UpF__c,Request_quotation_AmountF__c, Contract_Start_Date__c,Contract_End_Date__c,Limit_Price_Amount__c,Contract_Amount__c,Asset_Repair_Sum_PriceF__c from Maintenance_Contract__c where MaintanceContractPack__c = :mcpid]; for(Maintenance_Contract__c mc :mcList) { if(mc.Decided_Estimation__c !=null) { return mc.Name+':报价已经decide,请先取消decide,再提交审批!'; } } //合同报价 MaintanceContractPack__c mcpUpdate = new MaintanceContractPack__c(); mcpUpdate.Id = mcpid; String querySoql = 'Select Id,Name,Contract_Range__c,Request_quotation_Amount__c,Monthly_Repair_Cost_SUM__c, from Maintenance_Contract_Estimate__c where Id in(Select Estimation_Id__c from Maintenance_Contract__c where MaintanceContractPack__c = :mcpid)'; System.debug('-------querySoql' + querySoql); List mceList = Database.query(querySoql); List updateMceList = new List(); for(Maintenance_Contract_Estimate__c mce :mceList) { if (mce.Monthly_Repair_Cost_SUM__c !=null) { monthlyRepairCostSUM = mce.Monthly_Repair_Cost_SUM__c; } if (mce.Contract_Range__c !=null) { contractRange = mce.Contract_Range__c; } if (mce.Request_quotation_Amount__c !=null && mce.Request_quotation_Amount__c!=0) { // 计算分子 totalPriceNumerator += (monthlyRepairCostSUM*contractRange*30); // 计算分母 totalPriceDenominator += mce.Request_quotation_Amount__c; } } if (totalPriceDenominator != 0) { // 预测消费率 consumptionRateForecast = ((totalPriceNumerator/totalPriceDenominator)*100); mcpUpdate.Consumption_rate_Forecast__c = ((totalPriceNumerator/totalPriceDenominator)*100); // 预测成本率 costrateForecast = (totalPriceNumerator/totalPriceDenominator)*0.75*100; mcpUpdate.Cost_rate_Forecast__c = costrateForecast; } for ( Maintenance_Contract__c mc :mcList) { if (mc.Limit_Price_Amount__c !=null) { Limit_Price_Amount += mc.Limit_Price_Amount__c; } if (mc.Limit_Price_Amount__c !=null) { Asset_Repair_Sum_PriceF += mc.Asset_Repair_Sum_PriceF__c; } if (mc.Limit_Price_Amount__c !=null) { Contract_Amount += mc.Contract_Amount__c; } if (mc.GuidePrice_DownF__c !=null) { GuidePrice_DownF += mc.GuidePrice_DownF__c; } if (mc.GuidePrice_UpF__c !=null) { GuidePrice_UpF += mc.GuidePrice_UpF__c; } if (mc.Request_quotation_AmountF__c!=null) { FieldRequest_quotation_Amount += mc.Request_quotation_AmountF__c; } } if(FieldRequest_quotation_Amount < GuidePrice_DownF){ if( costrateForecast > 1) { estimatePriceRange = '低于最低价格,预测成本率在100%以上'; } else { estimatePriceRange = '低于最低价格,预测成本率在100%以内'; } } else { if( FieldRequest_quotation_Amount >= GuidePrice_DownF && FieldRequest_quotation_Amount <= GuidePrice_UpF){ estimatePriceRange = '标准价格的范围内'; } else { if(FieldRequest_quotation_Amount <= GuidePrice_UpF * 2){ estimatePriceRange = '最高价格的200%以内'; } else{ estimatePriceRange = '最高价格的200%以上'; } } } if(estimatePriceRange == '标准价格的范围内') { contractPriceType = '标准价格范围内-终批人营业经理'; } else { if(estimatePriceRange.contains('以内')) { contractPriceType = '特价范围-批人服务总监'; } else { contractPriceType = '特价范围-终批人总经理'; } } mcpUpdate.Estimate_Price_range__c = estimatePriceRange; mcpUpdate.ContractPriceType__c = contractPriceType; //更新打包合同的cl3 4 5 6 User loginUser = [SELECT Id, Name, JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c, TongkuoZongjian__c FROM User WHERE Id = :UserInfo.getUserId()]; mcpUpdate.JingliApprovalManager__c = loginUser.JingliApprovalManager__c == null ? loginUser.Id : loginUser.JingliApprovalManager__c; mcpUpdate.BuchangApprovalManager__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c; mcpUpdate.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c; // mcpUpdate.Service_Contract_Staff__c = this.contract.Service_Contract_Staff__c; mcpUpdate.TKZongjianApprovalManager__c = loginUser.TongkuoZongjian__c == null ? loginUser.Id : loginUser.TongkuoZongjian__c; try{ update mcpUpdate; Approval.ProcessSubmitRequest psr = new Approval.ProcessSubmitRequest(); psr.setObjectId(mcpid); Approval.ProcessResult submitResult = Approval.process(psr); return '1'; }catch(exception e){ return e.getMessage(); } } */ }