<!-- 20211210 ljh 条形码 -->
<apex:page standardController="Consum_Apply__c">
    <apex:includeScript value="{!URLFOR($Resource.qrcode)}"/>
    <apex:includeScript value="/soap/ajax/46.0/connection.js"/>
    <apex:includeScript value="/soap/ajax/46.0/apex.js"/>

    <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/>
    <apex:includeScript value="{!URLFOR($Resource.jqueryBarcode)}"/>
    <script type="text/javascript">
    	function generateBarcode(){
            var value = $("#barcodeValue").val();
            var btype = 'code128';
            var renderer = 'svg';
    	
            var settings = {
              output:'svg',
              bgColor: '#FFFFFF',
              color: '#000000',
    		  showHRI: false,
              barWidth: '1',
              barHeight: '50',
              moduleSize: '5',
              posX: '10',
              posY: '20',
              addQuietZone: '1'
            };
    		value = {code:value, rect: true};
    		$("#barcodeTarget").html("").show().barcode(value, btype, settings);
    	}
    	$(function(){
    		generateBarcode();
    	});
    </script>
    <input type="hidden" id="barcodeValue" value="{!Consum_Apply__c.Name_No__c}"/> 
    <div id="barcodeTarget" class="barcodeTarget"></div>
    <script type="text/javascript">
    	function getImgBase64(imageBase64){
    		const imgNew = new Image(); // 创建图片容器
			imgNew.src = imageBase64; //imageBase64 为svg+xml的Base64 文件流
			// 图片创建后再执行,转Base64过程
			const canvas = document.createElement("canvas");
			canvas.width = 350;  //设置好 宽高  不然图片 不完整
			canvas.height = 60;
			const context = canvas.getContext("2d");
			context.drawImage(imgNew, 5, 5);
			let ImgBase64 = canvas.toDataURL("image/png");
			return ImgBase64
    	}
        function createAttachmentBrcode() {
            var img = $("#barcodeTarget img");
            var src = img[0].src;
            var srcNew = getImgBase64(src);
            src = srcNew.substring(22, srcNew.length);
            sforce.connection.sessionId = '{!GETSESSIONID()}';

            var record = sforce.connection.query("select id from Attachment where ParentId = \'{!Consum_Apply__c.Id}\' and name = \'BRCode-{!Consum_Apply__c.Name_No__c}\'");
            // 既にあれば無視
            if (record.size == 0) {
                var atta = new sforce.SObject("Attachment");
                atta.Name = "BRCode-{!Consum_Apply__c.Name_No__c}";
                atta.ParentId = "{!Consum_Apply__c.Id}";
                atta.Body = src;
                var result = sforce.connection.create([atta]);

                var es = new sforce.SObject("Consum_Apply__c");
                es.Id = "{!Consum_Apply__c.Id}";
                es.BRId__c = result[0].id;
                result = sforce.connection.update([es]);
            //申请书更新失败的话再次更新
            } else if ("{!Consum_Apply__c.BRId__c}" == '' || "{!Consum_Apply__c.BRId__c}" == null) {
                var records = record.getArray("records");
                var es = new sforce.SObject("Consum_Apply__c");
                es.Id = "{!Consum_Apply__c.Id}";
                es.BRId__c = records[0].Id;
                result = sforce.connection.update([es]);
                // TODO Name変わる可能性あり、upsertにします
            } else {
                alert(record[0].id);
            }
        }
        // BRcode生成後、Attachmentを作成
        setTimeout("createAttachmentBrcode()", 1000);
    </script>
</apex:page>