GWY
2022-05-21 a3460549533111815e7f73d6cef601a58031525d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
public with sharing class NewHighProductsOppController {
    public boolean hasError { get; set; }
    public boolean isDealerPage { get; set; }
 
    public Opportunity opp { get; set; }
 
    public String accId { get; set; }
    public String conId { get; set; }
    private Account acc;
    private Contact con;
 
    public String baseUrl { get; set; }
    public String rtUrl { get; set; }
 
    public String ProductSegment { get; set; }
 
    public NewHighProductsOppController() {
        baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
        String path = URL.getCurrentRequestUrl().getPath();
        if (path.indexOf('/apex') > 0) {
            baseUrl += path.substring(0, path.indexOf('/apex'));
        } else if (path.indexOf('production/') > 0) {
            baseUrl += '/production';
        }
        rtUrl = System.currentPageReference().getParameters().get('retURL');
        if (rtUrl == null || rtUrl == 'null') {
            rtUrl = '';
        }
    }
 
    public PageReference init() {
        hasError = false;
 
        accId = System.currentPageReference().getParameters().get('accid');
        conId = System.currentPageReference().getParameters().get('conId');
 
        List<Account> accList = [select Id, Name, ProductSegment__c,OwnerID__c from Account where Id = :accId];
        if (accList.size() > 0) {
            acc = accList[0];
        }
 
        List<Contact> conList = [select Id, Name from Contact where Id = :conId];
        if (conList.size() > 0) {
            con = conList[0];
        }
        ProductSegment = acc.ProductSegment__c;
        isDealerPage = UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS' && acc.ProductSegment__c != 'IE' && acc.ProductSegment__c != 'RVI' && acc.RecordTypeId != System.Label.RT_SSBD_Service;
        String dealerName = '';
        String dealerId = '';
        if (UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS') {
            User dealerUser = [select id, DealerName__c, DealerId__c from User where id = :UserInfo.getUserId()];
            dealerName = dealerUser.DealerName__c;
            dealerId = dealerUser.DealerId__c;
        }
 
        Id recordTypeId =Schema.SObjectType.Opportunity.getRecordTypeInfosByName().get('SSBD_HighendProducts').getRecordTypeId();
        system.debug(recordTypeId);
        opp = new Opportunity();
        opp.RecordTypeId = recordTypeId;
        opp.AccountId = acc.Id;
        opp.Account = acc;
        opp.ProductSegment__c = acc.ProductSegment__c;
        opp.Type = '非目标';
        opp.SalesChannel__c = 'dealer';
        opp.NewInquiryDate__c = Date.today();
        opp.StageName = 'Prospect Created';
        opp.CloseDate = Date.valueOf('1900-01-01');
        //opp.OwnerId = acc.OwnerID__c;
 
        if (UserInfo.getUserType() == 'PowerPartner' && acc.ProductSegment__c != 'BS') {
            opp.Dealer__c = dealerId;
        }
 
        return null;
    }
 
    public PageReference saveBtn() {
        List<Opportunity> checkList = [select id, Name from Opportunity where AccountId = :opp.AccountId and Name = :opp.Name];
        if (checkList.size() > 0) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Info, '该客户下有名称一样的询价,是否继续创建该询价?'));
            hasError = true;
        } else {
            return saveBtnYes();
        }
        return null;
    }
 
    public PageReference saveBtnYes() {
        system.debug('=====saveBtnYes');
 
        Savepoint sp = Database.setSavepoint();
        try {
            
            opp.RecordTypeId =  System.Label.SSBD_HighendProducts;
 
            insert opp;
 
            OpportunityContactRole ocr = new OpportunityContactRole();
            ocr.OpportunityId = opp.Id;
            ocr.ContactId = con.Id;
            ocr.Role = 'End user';
            ocr.IsPrimary = true;
            insert ocr;
 
            hasError = false;
 
            String url = baseUrl + '\\' + opp.Id;
            return new Pagereference(url);
        } catch (Exception e) {
            Database.rollback(sp);
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, e.getMessage()));
            hasError = false;
        }
 
        return null;
    }
 
    public PageReference saveBtnNo() {
        system.debug('=====saveBtnNo');
        hasError = false;
 
        return null;
    }
}