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
public with sharing class AssetNumberChangeController {
    // 基础Url
    public String baseUrl { get; private set; }
    // 样机ID
    public String astId { get; private set; }
    public Asset ast { get; private set; }
    // 样机库存调整历史
    public Loaner_change_history__c lch { get; set; }
 
    public AssetNumberChangeController() {
        astId = System.currentPageReference().getParameters().get('id');
    }
 
    public AssetNumberChangeController(ApexPages.StandardController controller) {
        astId = controller.getRecord().Id;
    }
 
    public PageReference init() {
        // 基础Url
        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';
        }
        // 样机信息取得
        if (String.isBlank(astId) == true) {
            return null;
        }
        List<Asset> astList = [select id, Name, AccountId, EC_Code__c, SerialNumber,
                                      Equipment_Type__c, lonar_owner__c, loaner_place__c, total_number__c
                                 from Asset
                                where Id = :astId];
        if (astList.size() == 0) {
            return null;
        }
        ast = astList[0];
        // 新建样机库存调整历史
        lch = new Loaner_change_history__c();
 
        return null;
    }
 
    public PageReference saveBtn() {
        // 项目check
        if (lch.change_content__c == null) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入调整内容。'));
            return null;
        }
        if (lch.change_number__c == null) {
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请输入调整数量。'));
            return null;
        }
 
        // 样机总数计算
        if (ast.total_number__c == null) ast.total_number__c = 0;
        Decimal total_number = ast.total_number__c + lch.change_number__c;
 
        Savepoint sp = Database.setSavepoint();
        try {
            // 插入样机库存调整历史
            lch.Asset__c = ast.Id;
            lch.change_day__c = Date.today();
            lch.total_number__c = total_number;
            insert lch;
            // 样机总数计算
            Asset upd_ast = new Asset(Id = ast.Id);
            upd_ast.total_number__c = total_number;
            update upd_ast;
            // 返回样机详细画面
            String url = baseUrl;
            url += '\\' + ast.Id;
            return new Pagereference(url);
        } catch (Exception ex) {
            Database.rollback(sp);
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage() + ' | Line:' + ex.getLineNumber()));
        }
 
        return null;
    }
 
    public PageReference cancelBtn() {
        // 返回样机详细画面
        String url = baseUrl;
        url += '\\' + ast.Id;
        return new Pagereference(url);
    }
}