app/Plugin/TaxManagement42/Resource/template/default/Product/list_discount_rate_script.twig line 1

Open in your IDE?
  1. <script>
  2.     $(function() {
  3.         var eccube_copy = window.eccube;
  4.         var discountRate = {
  5.             {% for Product in pagination %}
  6.             "{{ Product.id|escape('js') }}": {{ Product.discountRatesJson|raw }}{% if loop.last == false %}, {% endif %}
  7.             {% endfor %}
  8.         };
  9.         var price01Values = {
  10.             {% for Product in pagination %}
  11.             "{{ Product.id|escape('js') }}": {{ Product.price01Values | raw}}{% if loop.last == false %}, {% endif %}
  12.             {% endfor %}
  13.         };
  14.         var price02Values = {
  15.             {% for Product in pagination %}
  16.             "{{ Product.id|escape('js') }}": {{ Product.price02Values | raw}}{% if loop.last == false %}, {% endif %}
  17.             {% endfor %}
  18.         };
  19.         
  20.         var isSalePriceCustomTag = $('.tax_management-sale_price').length > 0;
  21.         var salePriceCustomTag = null;
  22.         var priceOffOrigin = [];
  23.         var price02CustomOrigin = [];
  24.         var priceOffOriginIndex = [];
  25.         var price02CustomOriginIndex = [];
  26.         $('.price_off').each(function(index, priceOff) {
  27.             var classNameStr = $(priceOff).parents('[class*=tax_management_id_]').attr('class');
  28.             if(!classNameStr) {
  29.                 // find from sale price default tag
  30.                 classNameStr = $(priceOff).siblings('[class*=tax_management_id_]').first().attr('class');
  31.             }
  32.             var classNames = classNameStr.split(' ');
  33.             var product_id_ = 0;
  34.             jQuery.each(classNames, function(index, className) {
  35.                 if(className.match(/^tax_management_id_([1-9][0-9]*)$/i)) {
  36.                     product_id_ = className.match(/^tax_management_id_([1-9][0-9]*)$/i)[1];
  37.                     return;
  38.                 }
  39.             });
  40.             if(product_id_ !== 0) {
  41.                 priceOffOrigin[product_id_] = $(priceOff).text();
  42.             }
  43.         });
  44.         if(isSalePriceCustomTag) {
  45.             $('.tax_management-sale_price').each(function(index, price02) {
  46.                 var classNameStr = $(price02).attr('class');
  47.                 var classNames = classNameStr.split(' ');
  48.                 var product_id_ = 0;
  49.                 jQuery.each(classNames, function(index, className) {
  50.                     if(className.match(/^tax_management_id_([1-9][0-9]*)$/i)) {
  51.                         product_id_ = className.match(/^tax_management_id_([1-9][0-9]*)$/i)[1];
  52.                         return;
  53.                     }
  54.                 });
  55.                 if(product_id_ !== 0) {
  56.                     price02CustomOrigin[product_id_] = $(price02).text();
  57.                     {# price02CustomOrigin[product_id_] =
  58.                     if(price02CustomOriginIndex[product_id_] === undefined) {
  59.                         price02CustomOriginIndex[product_id_] = 1;
  60.                         price02CustomOrigin[product_id_] = [];
  61.                         price02CustomOrigin[product_id_][0] = $(price02).text();
  62.                     } else {
  63.                         var productIndex = price02CustomOriginIndex[product_id_];
  64.                         price02CustomOrigin[product_id_][index] = $(price02).text();
  65.                         price02CustomOriginIndex[product_id_] = productIndex + 1;
  66.                     } #}
  67.                 }
  68.             });
  69.         } 
  70.         //console.log(price02CustomOrigin);
  71.         $('select[name=classcategory_id1]')
  72.             .change(function(event) {
  73.                 var $form = $(this).parents('form');
  74.                 var product_id = $form.find('input[name=product_id]').val();
  75.                 var $sele1 = $(this);
  76.                 var $sele2 = $form.find('select[name=classcategory_id2]');
  77.                 var salePriceCustomTag = null; 
  78.                 if(isSalePriceCustomTag) {
  79.                     salePriceCustomTag = $form.parent().find('.tax_management-sale_price');
  80.                 }
  81.                 classcategory_id01 = $sele1.val();
  82.                 if (!$sele2.length) {
  83.                     classcategory_id01 = $sele1.val();
  84.                     if(classcategory_id01 && classcategory_id01 !== '__unselected') {
  85.                         classcategory = eccube_copy.productsClassCategories[product_id][classcategory_id01]['#'];
  86.                         classcategory_discountRate = discountRate[product_id][classcategory_id01]['#'];
  87.                         updatePrice(product_id, salePriceCustomTag, $form, classcategory, classcategory_discountRate);
  88.                     } else {
  89.                         resetPrice(product_id, salePriceCustomTag, $form);
  90.                     }
  91.                 } else {
  92.                     resetPrice(product_id, salePriceCustomTag, $form);
  93.                 }
  94.             });
  95.         // 規格2選択時
  96.         $('select[name=classcategory_id2]')
  97.             .change(function() {
  98.                 var $form = $(this).parents('form');
  99.                 var product_id = $form.find('input[name=product_id]').val();
  100.                 var $sele1 = $form.find('select[name=classcategory_id1]');
  101.                 var $sele2 = $(this);
  102.                 if(isSalePriceCustomTag) {
  103.                     salePriceCustomTag = $form.parent().find('.tax_management-sale_price');
  104.                 }
  105.                 classcategory_id01 = $sele1.val();
  106.                 classcategory_id02 = $sele2.val();
  107.                 
  108.                 if(classcategory_id01 && classcategory_id01 !== '__unselected' && classcategory_id02 && classcategory_id02 !== '__unselected') {
  109.                     classcategory = eccube_copy.productsClassCategories[product_id][classcategory_id01]['#'+classcategory_id02];
  110.                     classcategory_discountRate = discountRate[product_id][classcategory_id01]['#'+classcategory_id02];
  111.                     updatePrice(product_id, salePriceCustomTag, $form, classcategory, classcategory_discountRate);
  112.                 } else {
  113.                     resetPrice(product_id, salePriceCustomTag, $form);
  114.                 }
  115.             });
  116.         function updatePrice(product_id, salePriceCustomTag, formElement, classcategory, classcategory_discountRate) {
  117.             if(!product_id || !classcategory || !classcategory_discountRate || !formElement) {
  118.                 return false;
  119.             }
  120.             
  121.             {% if TaxManagementConfig.isIncludeTaxFlag is not null and TaxManagementConfig.isIncludeTaxFlag == false %}
  122.                 if(salePriceCustomTag) {
  123.                     jQuery.each(salePriceCustomTag, function(index, item) {
  124.                         $(item).text('¥' + classcategory.price02);
  125.                     });
  126.                 }
  127.             {% elseif TaxManagementConfig.isIncludeTaxFlag is not null and TaxManagementConfig.isIncludeTaxFlag == true %}
  128.                 if(salePriceCustomTag) {
  129.                     jQuery.each(salePriceCustomTag, function(index, item) {
  130.                         $(item).text('¥' + classcategory.price02_inc_tax);
  131.                     });
  132.                 }
  133.             {% endif %}
  134.             
  135.             priceOff = formElement.parent().find('.price_off');
  136.             if(priceOff.length) {
  137.                 if(classcategory_discountRate.discount_rate > 0) {
  138.                     priceOff.show();
  139.                     priceOff.text('(' + classcategory_discountRate.discount_rate + '%OFF)');
  140.                 } else {
  141.                     priceOff.hide();
  142.                 }
  143.             }
  144.         }
  145.         function resetPrice(product_id, salePriceCustomTag, formElement) {
  146.             if(!product_id || !formElement) {
  147.                 return false;
  148.             }
  149.             priceOff = formElement.parent().find('.price_off');
  150.             if(priceOff.length) {
  151.                 priceOff.text(priceOffOrigin[product_id]);
  152.                 if(priceOffOrigin[product_id] !== '') {
  153.                     priceOff.show();
  154.                 }
  155.             }
  156.             if(salePriceCustomTag) {
  157.                 jQuery.each(salePriceCustomTag, function(index, item) {
  158.                     var originHTML = price02CustomOrigin[product_id];
  159.                     $(item).text(originHTML);
  160.                 });
  161.             }
  162.         }
  163.     });
  164. </script>