Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.56 KB | None | 0 0
  1.     public static function deliveryRestrictions($types): string
  2.     {
  3.         $types        = Model_Product::getDeliveryTypeRestriction($types, true);
  4.         $restrictions = [];
  5.         foreach ($types as $type) {
  6.             $restrictions[$type] = $type;
  7.         }
  8.         $countTypes         = count($types);
  9.         $courierTypes       = [
  10.             Model_Delivery::DELIVERY_TYPE_COURIER_SPSR,
  11.             Model_Delivery::DELIVERY_TYPE_COURIER_DPD,
  12.             Model_Delivery::DELIVERY_TYPE_COURIER_IML,
  13.             Model_Delivery::DELIVERY_TYPE_COURIER_ONLINE,
  14.         ];
  15.         $countCourierTypes  = count(array_intersect($types, $courierTypes));
  16.         $mamsyDeliveryZones = '<span class="gray">*Москва и МО, Санкт-Петербург и ЛО, Екатеринбург и СО</span>';
  17.  
  18.         if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_MAMSY],
  19.             $restrictions[Model_Delivery::DELIVERY_TYPE_PICKUP_MAMSY]
  20.         )) {
  21.             // Комбинации с СПСР(и/или DPD и/или Курьер IML)
  22.             if ($countCourierTypes > 0) {
  23.                 if ($countCourierTypes + 2 == $countTypes) {
  24.                     // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML)
  25.                     return 'Почтовая пересылка данного товара и доставка в <a target="_blank" href="/siteinfo/delivery/#pickPoint">
  26.                        постаматы и пункты выдачи PickPoint</a>, Hermes и IML не осуществляется.';
  27.                 }
  28.                 if ($countCourierTypes + 3 == $countTypes) {
  29.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST])) {
  30.                         // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML) + Почта России
  31.                         return 'Доставка в некоторые <a target="_blank" href="/citys/">города</a> осуществляется только Почтой России.<br>
  32.                            Доставка через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a>, Hermes и IML не осуществляется.';
  33.                     }
  34.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES])) {
  35.                         // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML) + Hermes
  36.                         return 'Почтовая пересылка данного товара и доставка в <a target="_blank" href="/siteinfo/delivery/#pickPoint">
  37.                            постаматы и пункты выдачи PickPoint</a> и IML не осуществляется.';
  38.                     }
  39.                 }
  40.                 if ($countCourierTypes + 4 == $countTypes) {
  41.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML],
  42.                         $restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST]
  43.                     )) {
  44.                         // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML) + Почта России + ПВЗ IML
  45.                         return 'Доставка в некоторые <a target="_blank" href="/citys/">города</a> осуществляется только Почтой России.<br>
  46.                            Доставка через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a> и Hermes не осуществляется.';
  47.                     }
  48.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT],
  49.                         $restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST]
  50.                     )) {
  51.                         // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML) + Почта России + Pickpoint
  52.                         return 'Доставка в некоторые <a target="_blank" href="/citys/">города</a> осуществляется только Почтой России.<br>
  53.                            Доставка через пункты выдачи Hermes и IML не осуществляется.';
  54.                     }
  55.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES],
  56.                         $restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST]
  57.                     )) {
  58.                         // Курьер Мамси + Самовывоз + СПСР(и/или DPD и/или Курьер IML) + Почта России + Hermes
  59.                         return 'Доставка в некоторые <a target="_blank" href="/citys/">города</a> осуществляется только Почтой России.<br>
  60.                            Доставка через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a> и IML не осуществляется.';
  61.                     }
  62.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_DHL],
  63.                         $restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST]
  64.                     )) {
  65.                         // Курьер Мамси + Самовывоз + Почта России + СПСР(и/или DPD и/или Курьер IML) + DHL
  66.                         return 'Доставка через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a>, Hermes и IML не осуществляется.';
  67.                     }
  68.                 }
  69.                 if ($countCourierTypes + 6 == $countTypes && isset($restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST],
  70.                     $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES],
  71.                     $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML],
  72.                     $restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT]
  73.                 )) {
  74.                     // Курьер Мамси + Самовывоз + Почта России + СПСР(и/или DPD и/или Курьер IML) + Пикпоинт + ПВЗ IML + Hermes
  75.                     return 'Доставка в <a target="_blank" href="/only-russian-post/">некоторые города</a> осуществляется только Почтой России.<br>
  76.                        На доставку в другие регионы ограничений нет.';
  77.                 }
  78.             }
  79.             switch ($countTypes) {
  80.                 case 2:
  81.                     // Курьер Мамси + Самовывоз
  82.                     return 'Доставка осуществляется только в ряд регионов<span class="gray">*</span>.<br>'
  83.                         . $mamsyDeliveryZones;
  84.                     break;
  85.                 case 3:
  86.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_JDE])) {
  87.                         // Курьер Мамси + Самовывоз + ЖДЭ
  88.                         return 'Почтовая пересылка данного товара невозможна.<br>
  89.                            Курьерская доставка осуществляется только в ряд регионов<span class="gray">*</span>.<br>'
  90.                             . $mamsyDeliveryZones;
  91.                     }
  92.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES])) {
  93.                         // Курьер Мамси + Самовывоз + Hermes
  94.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  95.                            Доставка в другие области - через пункты выдачи Hermes.<br>'
  96.                             . $mamsyDeliveryZones;
  97.                     }
  98.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT])) {
  99.                         // Курьер Мамси + Самовывоз + Пикпоинт
  100.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  101.                            Доставка в другие области - через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint.</a><br>'
  102.                             . $mamsyDeliveryZones;
  103.                     }
  104.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML])) {
  105.                         // Курьер Мамси + Самовывоз + ПВЗ IML
  106.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  107.                            Доставка в другие области - через пункты выдачи IML.<br>'
  108.                             . $mamsyDeliveryZones;
  109.                     }
  110.                     break;
  111.                 case 4:
  112.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES],
  113.                         $restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT]
  114.                     )) {
  115.                         // Курьер Мамси + Самовывоз + Пикпоинт + Hermes
  116.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  117.                            Доставка в другие области - через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a> и Hermes.<br>'
  118.                             . $mamsyDeliveryZones;
  119.                     }
  120.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT],
  121.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML]
  122.                     )) {
  123.                         // Курьер Мамси + Самовывоз + Пикпоинт + ПВЗ IML
  124.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  125.                            Доставка в другие области - через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a> и IML.<br>'
  126.                             . $mamsyDeliveryZones;
  127.                     }
  128.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML],
  129.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES]
  130.                     )) {
  131.                         // Курьер Мамси + Самовывоз + Hermes + ПВЗ IML
  132.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  133.                            Доставка в другие области - через пункты выдачи Hermes и IML.<br>'
  134.                             . $mamsyDeliveryZones;
  135.                     }
  136.                     break;
  137.                 case 5:
  138.                     // Курьер Мамси + Самовывоз + Пикпоинт + ПВЗ IML + Hermes
  139.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMES],
  140.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_IML],
  141.                         $restrictions[Model_Delivery::DELIVERY_TYPE_PICKPOINT]
  142.                     )) {
  143.                         return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  144.                            Доставка в другие области - через <a target="_blank" href="/siteinfo/delivery/#pickPoint">постаматы и пункты выдачи PickPoint</a>, Hermes и IML.<br>'
  145.                             . $mamsyDeliveryZones;
  146.                     }
  147.                     break;
  148.             }
  149.             // Если ничего не подошло, но есть Курьер Мамси + Самовывоз + Почта России
  150.             if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_POST_RUSSIANPOST])) {
  151.                 return 'Доставка в ряд регионов<span class="gray">*</span> - курьерами и через пункты выдачи Mamsy.<br>
  152.                        Доставка в другие области - Почтой России.<br>' . $mamsyDeliveryZones;
  153.             }
  154.         } else {
  155.             switch ($countTypes) {
  156.                 case 1:
  157.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_DPDGS])) {
  158.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только курьерами DPD.";
  159.                     }
  160.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMESGS])) {
  161.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только через пункты выдачи заказов Hermes.";
  162.                     }
  163.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_PICKPOINTGS])) {
  164.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только через постаматы и пункты выдачи заказов PickPoint.";
  165.                     }
  166.                     break;
  167.                 case 2:
  168.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_DPDGS],
  169.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMESGS]
  170.                     )) {
  171.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только курьерами DPD и через пункты выдачи заказов Hermes.";
  172.                     }
  173.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_DPDGS],
  174.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_PICKPOINTGS]
  175.                     )) {
  176.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только курьерами DPD и через пункты выдачи заказов PickPoint.";
  177.                     }
  178.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMESGS],
  179.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_PICKPOINTGS]
  180.                     )) {
  181.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только через постаматы и пункты выдачи заказов PickPoint и Hermes.";
  182.                     }
  183.                     break;
  184.                 case 3:
  185.                     if (isset($restrictions[Model_Delivery::DELIVERY_TYPE_COURIER_DPDGS],
  186.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_HERMESGS],
  187.                         $restrictions[Model_Delivery::DELIVERY_TYPE_DELIVERYPOINT_PICKPOINTGS]
  188.                     )) {
  189.                         return "Внимание! Оплата возможна только при доставке. Доставка осуществляется только курьерами DPD, через постаматы и пункты выдачи заказов PickPoint и Hermes.";
  190.                     }
  191.             }
  192.         }
  193.         return '';
  194.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement