]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-220] дефект с поставки целиком идёт на Аэродромную, оставляя остальные магазины...
authorAlexander Smirnov <fredeom@mail.ru>
Mon, 14 Oct 2024 09:15:10 +0000 (12:15 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Mon, 14 Oct 2024 09:15:10 +0000 (12:15 +0300)
erp24/records/MotivationCostsItem.php
erp24/services/MotivationService.php

index c415d96e6aa7282d44dabd004aa9da030d849af7..33dc54a4450c84da05792ec901ede247876b4943 100644 (file)
@@ -37,8 +37,8 @@ class MotivationCostsItem extends ActiveRecord
         switch ($itemType) {
             case WriteOffsErp::WRITE_OFFS_TYPE_BRAK:
                 return self::ITEM_WRITE_OFF_OF_ILLIQUID_GOODS_SPOILAGE_EXPIRATION_OF_SHELF_LIFE;
-//            case WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK:
-//                return self::ITEM_DEFECTIVE_DELIVERY;
+            case WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK:
+                return self::ITEM_DEFECTIVE_DELIVERY;
             case WriteOffsErp::WRITE_OFFS_TYPE_DUE_TO_EQUIPMENT_FAILURE_BRAK:
                 return self::ITEM_DEFECT_DUE_TO_EQUIPMENT_FAILURE;
             case WriteOffsErp::WRITE_OFFS_TYPE_RESORTING_DOES_NOT_COUNT_TOWARDS_COST:
@@ -51,7 +51,7 @@ class MotivationCostsItem extends ActiveRecord
     public static function writeOffsToMotivationItemArray() {
         return [
             WriteOffsErp::WRITE_OFFS_TYPE_BRAK => self::ITEM_WRITE_OFF_OF_ILLIQUID_GOODS_SPOILAGE_EXPIRATION_OF_SHELF_LIFE,
-//            WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK => self::ITEM_DEFECTIVE_DELIVERY,
+            WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK => self::ITEM_DEFECTIVE_DELIVERY,
             WriteOffsErp::WRITE_OFFS_TYPE_DUE_TO_EQUIPMENT_FAILURE_BRAK => self::ITEM_DEFECT_DUE_TO_EQUIPMENT_FAILURE,
             WriteOffsErp::WRITE_OFFS_TYPE_RESORTING_DOES_NOT_COUNT_TOWARDS_COST => self::ITEM_REGRADING,
         ];
@@ -60,7 +60,7 @@ class MotivationCostsItem extends ActiveRecord
     public static function getWriteOffsItems() {
         return [
             WriteOffsErp::WRITE_OFFS_TYPE_BRAK,
-//            WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK,
+            WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK,
             WriteOffsErp::WRITE_OFFS_TYPE_DUE_TO_EQUIPMENT_FAILURE_BRAK,
             WriteOffsErp::WRITE_OFFS_TYPE_RESORTING_DOES_NOT_COUNT_TOWARDS_COST,
         ];
index 79d55c44cec8e14fe16ab3ccfa392e5629ee2522..ef9d8f8d0c397238f01476a5c1bcdd119870b86d 100644 (file)
@@ -22,6 +22,7 @@ use yii_app\records\Sales;
 use yii_app\records\SalesProducts;
 use yii_app\records\TimetableFactModel;
 use yii_app\records\Timetable;
+use yii_app\records\WriteOffsErp;
 use yii_app\records\WriteOffsProducts;
 
 
@@ -31,7 +32,7 @@ class MotivationService
     const CODE_ONLINE_SALES = 2;
     const CODE_ASSEMBLY_SERVICES = 3;
     const CODE_DELIVERY_SERVICES = 4;
-    //const CODE_DELIVERY_DEFECTS = 6;
+    const CODE_DELIVERY_DEFECTS = 6;
     const CODE_WRITE_OFF_ILLIQUID_GOODS_SPOOLAGE_EXPIRATION_OF_SHELF_LIFE = 7;
     const CODE_EQUIPMENT_FAILURE_DEFECT = 8;
     const CODE_REGRADING = 9;
@@ -186,7 +187,7 @@ class MotivationService
 
         // 3. Получение данных из MotivationCostsItem
         $costsItems = MotivationCostsItem::find()
-            ->where(['is_active' => true])
+//            ->where(['is_active' => true])
             ->indexBy('code')
             ->orderBy(['order' => SORT_ASC])
             ->all();
@@ -492,8 +493,22 @@ class MotivationService
                 }
 
                 foreach (MotivationCostsItem::getWriteOffsItems() as $key) {
+
+                    if ($key == WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK) {
+                        if ($store_id == 4) {
+                            $writeOffsResult = WriteOffs::find()->alias('wo')->select(['wo.type', 'wo.date', 'wop.product_id', 'wop.quantity', 'wop.price'])
+                                ->rightJoin('write_offs_products wop', 'wop.write_offs_id = wo.id')
+                                ->where(['between', 'wo.date', $weekStart, $weekEnd])
+                                ->asArray()->all();
+                        } else {
+                            $writeOffsResult = [];
+                        }
+                    } else {
+                        $writeOffsResult = $writeOffs;
+                    }
+
                     $sum = 0;
-                    foreach ($writeOffs as $data) {
+                    foreach ($writeOffsResult as $data) {
                         if (($data['type'] ?? '') != $key) {
                             continue;
                         }
@@ -1607,7 +1622,7 @@ class MotivationService
                 $motivationDataTableSort[$indMap[self::CODE_COSTS_OF_GOODS]][$column] + 0; // "Стоимость товара"
 
             $motivationDataTableSort[$indMap[self::CODE_DEFECT_RESORTING]][$column] = // "Брак, пересорт"
-                //$motivationDataTableSort[$indMap[self::CODE_DELIVERY_DEFECTS]][$column] + // "Брак с поставки"
+                $motivationDataTableSort[$indMap[self::CODE_DELIVERY_DEFECTS]][$column] + // "Брак с поставки"
                 $motivationDataTableSort[$indMap[self::CODE_WRITE_OFF_ILLIQUID_GOODS_SPOOLAGE_EXPIRATION_OF_SHELF_LIFE]][$column] + // "Списание неликвидного товара: порча, истечение срока годности"
                 $motivationDataTableSort[$indMap[self::CODE_EQUIPMENT_FAILURE_DEFECT]][$column] + // "Брак из-за поломки оборудования"
                 $motivationDataTableSort[$indMap[self::CODE_REGRADING]][$column] + 0; // "Пересорт"