/** * author:zhangzhengmei * time:2023/4/19 */ public with sharing class LexPaymentPlanLoadController { public LexPaymentPlanLoadController() { } @AuraEnabled public static InitData initData(String recordId) { InitData res = new InitData(); try { res.statusSave = 'Fin'; res.testDateTime = system.now(); List PageMCE = [select id, Name, Service_Contract_Staff__c, Payment_Plan_Sum_First__c, Payment_Plan_Date_First__c, Payment_Plan_Sum_Fifth__c, Payment_Plan_Date_Fifth__c, Payment_Plan_Sum_Third__c, Payment_Plan_Date_Third__c, Payment_Plan_Sum_Forth__c, Payment_Plan_Date_Forth__c, Payment_Plan_Sum_Second__c, Payment_Plan_Date_Second__c, Payment_Plan_Sum_Sixth__c, Payment_Plan_Date_Sixth__c, MainLeaderManager__c, Service_Contract_Staff__r.JingliApprovalManager__c, User_Salesdepartment__c, User_Salesdepartment_Sec__c, Service_Contract_Staff__r.Salesdepartment__c, Is_Standard_Contract__c, Small_Repair_Time__c, Big_Repair_Time__c, Live_Technical_Support_Time__c, Engineer_Name__c, Phone_Number__c, Tour_Check__c, Inspection_Time__c, Dedust__c, // fxk Contract_End_Date__c, Contract_Start_Date__c, Contract_Range__c, Contract_Limit_Times__c, Service_contract_target_number__c, // fxk Negotiate_Mean__c, First_Party_Contract_Number__c, Second_Party_Contract_Number__c, Term_Of_Payment__c, one_off_payment_agreed_period__c, Contract_Amount__c, Total_Contract_Amount_In_Words__c, Service_Contract_Staff__r.Name, Total_Payment_Time__c, Payment_Plan_Sum_First_in_Word__c, Payment_Plan_Sum_Second_in_Word__c, Payment_Plan_Sum_Third_in_Word__c, Payment_Plan_Sum_Forth_in_Word__c, Payment_Plan_Sum_Fifth_in_Word__c, Payment_Plan_Sum_Sixth_in_Word__c, Estimation_Id__c, Estimation_Id__r.Estimate_Target__c, Estimate_Target__c, Status__c, Decided_Estimation__c from Maintenance_Contract__c where id = :recordId]; //权限管理-Denid if (PageMCE.size() == 1) { //if(PageMCE[0].Service_Contract_Staff__c != UserInfo.getUserId() && UserInfo.getProfileId() != System.Label.ProfileId_SystemAdmin && UserInfo.getProfileId() != System.Label.ProfileId_IThelp){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '没有付款计划的编辑权限')); // PageMCEElement = new Maintenance_Contract__c(); //}else{ res.PageMCEElement = PageMCE[0]; if (res.PageMCEElement.Small_Repair_Time__c == null) { res.PageMCEElement.Small_Repair_Time__c = '48'; } if (res.PageMCEElement.Big_Repair_Time__c == null) { res.PageMCEElement.Big_Repair_Time__c = '15'; } if (res.PageMCEElement.Live_Technical_Support_Time__c == null) { res.PageMCEElement.Live_Technical_Support_Time__c = '48'; } if (res.PageMCEElement.Engineer_Name__c == null && res.PageMCEElement.Service_Contract_Staff__r.Name != null ) { res.PageMCEElement.Engineer_Name__c = res.PageMCEElement.Service_Contract_Staff__r.Name.replaceAll(' ', ''); } if (res.PageMCEElement.First_Party_Contract_Number__c == null) { res.PageMCEElement.First_Party_Contract_Number__c = '2'; } if (res.PageMCEElement.Second_Party_Contract_Number__c == null) { res.PageMCEElement.Second_Party_Contract_Number__c = '1'; } //} } else { res.msg = '找不到对应的维修合同'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '找不到对应的维修合同')); res.statusSave = 'Denied'; } //fxk 新加点检总次数 2021.9.2 Star if (res.PageMCEElement.Contract_End_Date__c != null || res.PageMCEElement.Contract_Start_Date__c != null) { res.Contract_validMonth = Integer.valueOf(res.PageMCEElement.Contract_Range__c); } //fxk 新加点检总次数 2021.9.2 End }catch (System.Exception e) { res.msg = e.getMessage(); } return res; } public class InitData{ @AuraEnabled public Maintenance_Contract__c PageMCEElement ; @AuraEnabled public Datetime testDateTime; @AuraEnabled public String statusSave ; @AuraEnabled public Boolean printContract ; @AuraEnabled public Boolean printTripartite ; @AuraEnabled public Boolean printAgent ; @AuraEnabled public Decimal Contract_validMonth; @AuraEnabled public String msg; } @AuraEnabled public static String save(Maintenance_Contract__c PageMCEElement) { /*验证是否输入付款计划 *多次付款至少输入付款计划1和付款计划1金额 *一次性付款需要输入一次性付款约定期限 */ InitData saveData = new InitData(); saveData.PageMCEElement = PageMCEElement; if (PageMCEElement.Is_Standard_Contract__c == null ) { saveData.statusSave = 'Denied'; return '请选择是否标准合同!'; } if (PageMCEElement.Term_Of_Payment__c != null && '多次付款'.equals(PageMCEElement.Term_Of_Payment__c)) { if (PageMCEElement.Payment_Plan_Sum_First__c == null || PageMCEElement.Payment_Plan_Date_First__c == null || PageMCEElement.Payment_Plan_Sum_First__c == 0) { saveData.statusSave = 'Denied'; return '请输入至少一个付款计划!'; } } else if (PageMCEElement.Term_Of_Payment__c != null && '一次性付款'.equals(PageMCEElement.Term_Of_Payment__c) && PageMCEElement.one_off_payment_agreed_period__c == null ) { saveData.statusSave = 'Denied'; return '请输入付款计划!'; } // fxk 2021/8/31 点检次数必须填 Star // saveErrorflag = false; if (PageMCEElement.Is_Standard_Contract__c == '是') { if (PageMCEElement.Inspection_Time__c == null || ''.equals(PageMCEElement.Inspection_Time__c) || '0'.equals(PageMCEElement.Inspection_Time__c)) { System.debug('zzm' + PageMCEElement.Inspection_Time__c); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, // '非标合同不需要打印合同文本!')); PageMCEElement.Inspection_Time__c.adderror('点检次数必选项'); saveData.statusSave = 'Denied'; return '点检次数必选项'; } if (PageMCEElement.Contract_End_Date__c == null || PageMCEElement.Contract_Start_Date__c == null) { saveData.statusSave = 'Denied'; return '请审批报价并decide'; } } // fxk 2021/8/31 点检次数必须填 end // fxk 为维修合同点检总次数赋值 star if (PageMCEElement.Inspection_Time__c != null) { if (PageMCEElement.Contract_End_Date__c != null || PageMCEElement.Contract_Start_Date__c != null) { System.debug('PageMCEElement.Contract_End_Date__c.year():' + PageMCEElement.Contract_End_Date__c.year()); Integer Contract_validMonth = Integer.valueOf(PageMCEElement.Contract_Range__c); if((Integer.valueOf(PageMCEElement.Inspection_Time__c) == 1 && Contract_validMonth < 9) || (Integer.valueOf(PageMCEElement.Inspection_Time__c) == 2 && Contract_validMonth < 6) || (Integer.valueOf(PageMCEElement.Inspection_Time__c) == 3 && Contract_validMonth < 4) || (Integer.valueOf(PageMCEElement.Inspection_Time__c) == 4 && Contract_validMonth < 3)){ PageMCEElement.Service_contract_target_number__c = 1; }else{ Integer All_check; if (Contract_validMonth - Integer.valueOf(Contract_validMonth / 12) * 12 >= 6 && Integer.valueOf(PageMCEElement.Inspection_Time__c) == 1) { All_check = (Contract_validMonth * Integer.valueOf(PageMCEElement.Inspection_Time__c)) / 12 + 1; } else { All_check = (Contract_validMonth * Integer.valueOf(PageMCEElement.Inspection_Time__c)) / 12; } PageMCEElement.Service_contract_target_number__c = All_check; } } } // fxk 为维修合同点检总次数赋值 end Savepoint sp = Database.setSavepoint(); try { if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '1.华北') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_HB; PageMCEElement.User_Salesdepartment_Sec__c = System.Label.Payment_Block_Leader_SD; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '2.东北') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_DB; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '3.西北') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_XB; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '4.西南') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_XN; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '5.华东') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_HD; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '6.华南') { PageMCEElement.User_Salesdepartment__c = System.Label.Payment_Block_Leader_HN; PageMCEElement.User_Salesdepartment_Sec__c = System.Label.Payment_Block_Leader_HNVice; } else if (PageMCEElement.Service_Contract_Staff__r.Salesdepartment__c == '7.能量') { } // 对于标准合同进行验证必填项 string requiredInput = ''; if (PageMCEElement.Is_Standard_Contract__c.equals('是')) { if (PageMCEElement.Engineer_Name__c == null || ''.equals(PageMCEElement.Engineer_Name__c)) { requiredInput += '工程师姓名'; } if (PageMCEElement.Phone_Number__c == null || ''.equals(PageMCEElement.Phone_Number__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '手机号码'; } if (PageMCEElement.Small_Repair_Time__c == null || ''.equals(PageMCEElement.Small_Repair_Time__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '小修理时限'; } if (PageMCEElement.Big_Repair_Time__c == null || ''.equals(PageMCEElement.Big_Repair_Time__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '大修理时限'; } if (PageMCEElement.Live_Technical_Support_Time__c == null || ''.equals(PageMCEElement.Live_Technical_Support_Time__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '现场技术支持时限'; } if (PageMCEElement.Tour_Check__c == null || ''.equals(PageMCEElement.Tour_Check__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '巡回'; } if (PageMCEElement.Inspection_Time__c == null || ''.equals(PageMCEElement.Inspection_Time__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '点检'; } if (PageMCEElement.Dedust__c == null || ''.equals(PageMCEElement.Dedust__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '除尘'; } if (PageMCEElement.First_Party_Contract_Number__c == null || ''.equals(PageMCEElement.First_Party_Contract_Number__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '合同份数:甲方:'; } if (PageMCEElement.Second_Party_Contract_Number__c == null || ''.equals(PageMCEElement.Second_Party_Contract_Number__c)) { if (!''.equals(requiredInput)) { requiredInput += '、'; } requiredInput += '合同份数:乙方:'; } if (!''.equals(requiredInput)) { saveData.statusSave = 'Denied'; return '该合同是标准合同,请输入:' + requiredInput; } } else { if (PageMCEElement.Term_Of_Payment__c != null && '多次付款'.equals(PageMCEElement.Term_Of_Payment__c)) { decimal PriceSum = (PageMCEElement.Payment_Plan_Sum_First__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_First__c) + (PageMCEElement.Payment_Plan_Sum_Second__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Second__c) + (PageMCEElement.Payment_Plan_Sum_Third__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Third__c) + (PageMCEElement.Payment_Plan_Sum_Forth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Forth__c) + (PageMCEElement.Payment_Plan_Sum_Fifth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Fifth__c) + (PageMCEElement.Payment_Plan_Sum_Sixth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Sixth__c); if (PriceSum != PageMCEElement.Contract_Amount__c ) { saveData.statusSave = 'Denied'; return '付款总金额与合同金额不符。'; } } } if (PageMCEElement.Term_Of_Payment__c != null && '一次性付款'.equals(PageMCEElement.Term_Of_Payment__c)) { PageMCEElement.Payment_Plan_Sum_First__c = PageMCEElement.Contract_Amount__c; PageMCEElement.Payment_Plan_Sum_Second__c = null; PageMCEElement.Payment_Plan_Sum_Third__c = null; PageMCEElement.Payment_Plan_Sum_Forth__c = null; PageMCEElement.Payment_Plan_Sum_Fifth__c = null; PageMCEElement.Payment_Plan_Sum_Sixth__c = null; PageMCEElement.Payment_Plan_Date_First__c = null; PageMCEElement.Payment_Plan_Date_Second__c = null; PageMCEElement.Payment_Plan_Date_Third__c = null; PageMCEElement.Payment_Plan_Date_Forth__c = null; PageMCEElement.Payment_Plan_Date_Fifth__c = null; PageMCEElement.Payment_Plan_Date_Sixth__c = null; PageMCEElement.Total_Payment_Time__c = null; } else { PageMCEElement.one_off_payment_agreed_period__c = null; } if (PageMCEElement.Is_Standard_Contract__c != null && PageMCEElement.Is_Standard_Contract__c.equals('否')) { PageMCEElement.Engineer_Name__c = null; PageMCEElement.Phone_Number__c = null; PageMCEElement.Small_Repair_Time__c = null; PageMCEElement.Big_Repair_Time__c = null; PageMCEElement.Live_Technical_Support_Time__c = null; PageMCEElement.Tour_Check__c = null; PageMCEElement.Inspection_Time__c = null; PageMCEElement.Dedust__c = null; PageMCEElement.First_Party_Contract_Number__c = null; PageMCEElement.Second_Party_Contract_Number__c = null; } PageMCEElement.MainLeaderManager__c = PageMCEElement.Service_Contract_Staff__r.JingliApprovalManager__c; update PageMCEElement; saveData.statusSave = 'Fin'; return '1'; } catch (exception ex) { saveData.statusSave = 'Denied'; Database.rollback(sp); return ex.getMessage(); } } @AuraEnabled public static InitData print(Maintenance_Contract__c PageMCEElement) { System.debug('print start'); InitData printResult = new InitData(); String saveRes = save(PageMCEElement); if(saveRes == '1'){ printResult.statusSave = 'Fin'; } if (PageMCEElement.Decided_Estimation__c == null) { printResult.statusSave = 'Denied'; printResult.msg = '报价单没有决定之前不能打印合同文本!'; return printResult; } if (PageMCEElement.Estimation_Id__r.Estimate_Target__c == null) { printResult.statusSave = 'Denied'; printResult.msg = '请确定提交对象!'; return printResult; } if (PageMCEElement.Is_Standard_Contract__c != null && PageMCEElement.Is_Standard_Contract__c.equals('否')) { printResult.statusSave = 'Denied'; printResult.msg = '非标合同不需要打印合同文本!'; return printResult; } if (PageMCEElement.Term_Of_Payment__c != null && '多次付款'.equals(PageMCEElement.Term_Of_Payment__c)) { decimal PriceSum = (PageMCEElement.Payment_Plan_Sum_First__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_First__c) + (PageMCEElement.Payment_Plan_Sum_Second__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Second__c) + (PageMCEElement.Payment_Plan_Sum_Third__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Third__c) + (PageMCEElement.Payment_Plan_Sum_Forth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Forth__c) + (PageMCEElement.Payment_Plan_Sum_Fifth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Fifth__c) + (PageMCEElement.Payment_Plan_Sum_Sixth__c == null ? 0 : PageMCEElement.Payment_Plan_Sum_Sixth__c); if (PriceSum != PageMCEElement.Contract_Amount__c ) { printResult.statusSave = 'Denied'; printResult.msg = '付款总金额与合同金额不符。'; return printResult; } } if (printResult.statusSave.equals('Fin') && PageMCEElement.Estimation_Id__r.Estimate_Target__c.equals('医院')) { printResult.printContract = true; printResult.printAgent = false; } else if (printResult.statusSave.equals('Fin')) { printResult.printContract = false; printResult.printAgent = true; } return printResult; } }