}
}
+ private static function getSelfCostProductMap($store_id, $periodStart, $periodEnd) {
+ $selfCostProduct = SelfCostProduct::find()->select(['price', 'product_guid', 'date'])
+ ->where(['between', 'date', $periodStart, $periodEnd])
+ ->andWhere(['store_id' => $store_id])
+ ->asArray()->all();
+
+ $selfCostProductMap = [];
+ foreach ($selfCostProduct as $scp) {
+ $selfCostProductMap[$scp['date']][$scp['product_guid']] = floatval($scp['price']);
+ }
+
+ return $selfCostProductMap;
+ }
+
+ private static function getWriteOffs($storeGuid, $periodStart, $periodEnd) {
+ $writeOffs = 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', $periodStart, $periodEnd])
+ ->andWhere(['wo.store_id' => $storeGuid])
+ ->asArray()->all();
+
+ return $writeOffs;
+ }
+
public static function calculateMonthDefect($year, $month) {
$monthStart = date("Y-m-d 00:00:00", strtotime($year . '-' . $month . '-1'));
$monthEnd = date("Y-m-t 23:59:59", strtotime($year . '-' . $month . '-1'));
foreach ($exportImportTables as $store_id => $store_guid) {
if (isset($motivations[$store_id])) {
- $writeOffs = 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', $monthStart, $monthEnd])
- ->andWhere(['wo.store_id' => $store_guid])
- ->asArray()->all();
+ $writeOffs = self::getWriteOffs($store_guid, $monthStart, $monthEnd);
- $selfCostProduct = SelfCostProduct::find()->select(['price', 'product_guid', 'date'])
- ->where(['between', 'date', $monthStart, $monthEnd])
- ->andWhere(['store_id' => $store_id])
- ->asArray()->all();
-
- $selfCostProductMap = [];
- foreach ($selfCostProduct as $scp) {
- $selfCostProductMap[$scp['date']][$scp['product_guid']] = floatval($scp['price']);
- }
+ $selfCostProductMap = self::getSelfCostProductMap($store_id, $monthStart, $monthEnd);
foreach (MotivationCostsItem::writeOffsToMotivationItemArray() as $key => $motivationItemType) {
if ($key == WriteOffsErp::WRITE_OFFS_TYPE_DELIVERY_BRAK) {
if ($store_id == 4 /* Аэродромная */) {
- $writeOffsResult = $writeOffs = WriteOffs::find()->alias('wo')->select(['wo.type', 'wo.date', 'wop.product_id', 'wop.quantity', 'wop.price'])
+ $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', $monthStart, $monthEnd])
->asArray()->all();
->andWhere(['type' => 'Расходные материалы (обеспечение продаж)'])
->asArray()->all();
- $selfCostProduct = SelfCostProduct::find()->select(['price', 'product_guid', 'date'])
- ->where(['between', 'date', $startDate, $endDate])
- ->andWhere(['store_id' => $storeId])
- ->asArray()->all();
-
- $selfCostProductMap = [];
- foreach ($selfCostProduct as $scp) {
- $selfCostProductMap[$scp['date']][$scp['product_guid']] = floatval($scp['price']);
- }
+ $selfCostProductMap = self::getSelfCostProductMap($storeId, $startDate, $endDate);
$sum = 0;
foreach($writeOffs as $data) {