高章伟
2022-03-18 4bfe21c4b5ddc089ae5a95f4b10f6cff148b690d
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
<apex:page standardController="Asset">
    <apex:includeScript value="{!URLFOR($Resource.qrcode)}"/>
    <!-- <apex:includeScript value="{!URLFOR($Resource.connection20)}"/> -->
    <!-- <apex:includeScript value="{!URLFOR($Resource.apex20)}"/> -->
    <apex:includeScript value="/soap/ajax/40.0/connection.js"/>
    <apex:includeScript value="/soap/ajax/40.0/apex.js"/>
 
    <div id="qrcode"></div>
    <script type="text/javascript">
        function createAttachment() {
            var div = document.getElementById("qrcode");
            var img = div.getElementsByTagName("img");
            var src = img[0].src;
            src = src.substring(22, src.length);
 
            sforce.connection.sessionId = '{!GETSESSIONID()}';
 
            var record = sforce.connection.query("select id from Attachment where ParentId = \'{!Asset.Id}\' and name = \'QRCode\'");
 
            // 既にあれば無視
            if (record.size == 0) {
                var atta = new sforce.SObject("Attachment");
                atta.Name = "QRCode";
                atta.ParentId = "{!Asset.Id}";
                atta.Body = src;
                var result = sforce.connection.create([atta]);
 
                var es = new sforce.SObject("Asset");
                es.Id = "{!Asset.Id}";
                es.QRId__c = result[0].id;
                es.Fixture_QRCode_Text__c = "{!Asset.Fixture_QRCode__c}";
                result = sforce.connection.update([es]);
            } else if ("{!Asset.QRId__c}" == null || "{!Asset.QRId__c}" == '' || "{!Asset.Fixture_QRCode__c}" != "{!Asset.Fixture_QRCode_Text__c}"){
                var records = record.getArray("records");
                var atta = new sforce.SObject("Attachment");
                atta.Name = "QRCode";
                atta.Body = src;
                atta.Id = records[0].Id;
                var result = sforce.connection.update([atta]);
 
                var es = new sforce.SObject("Asset");
                es.Id = "{!Asset.Id}";
                es.QRId__c = result[0].id;
                es.Fixture_QRCode_Text__c = "{!Asset.Fixture_QRCode__c}";
                result = sforce.connection.update([es]);
                // TODO Name変わる可能性あり、upsertにします
            }
        }
 
        var qrcode = new QRCode(document.getElementById("qrcode"), {
            text: "{!Asset.Fixture_QRCode__c}",
            width: 128,
            height: 128,
            colorDark : "#000000",
            colorLight : "#ffffff",
            correctLevel : QRCode.CorrectLevel.H
        });
 
        // qrcode生成後、Attachmentを作成
        setTimeout("createAttachment()", 1000);
    </script>
</apex:page>