Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль расчета среднемесячных продаж


denic

Recommended Posts

Доброго времени суток!

Решил расширить стандартный функционал opencart, чтобы была возможность анализировать количество товара которое необходимо держать на складе.

Нужен модуль который анализирует продажи и выводит значений в админку, рядом с количеством товара в заказе. Возможность экспорта результатов в Excel.

Ниже представлен желаемый функционал модуля.

 

Основные функции модуля

 

1. Расчет среднемесячных продаж:

• Выбор периода для расчета (например, последние N месяцев, где N настраивается).

• Сбор данных о продажах товаров за выбранный период.

• Подсчет среднемесячных продаж по каждому товару на основе этих данных.

2. Рекомендация количества товара для заказа:

• Настройка коэффициента запаса, который увеличивает количество для более точного планирования.

• Рекомендация = (среднемесячные продажи * коэффициент запаса).

3. Интерфейс в админ-панели:

• Вывод рекомендованного количества товара перед количеством в заказе, позволяя администратору сразу видеть нужное количество.

• Добавление отдельной вкладки для управления настройками модуля и фильтрации по категориям товара.

4. Экспорт в Excel:

• Экспорт данных с рекомендациями по количеству товара на склад с разбивкой по категориям.

• Excel-файл будет содержать листы для каждой категории с информацией по товарам (название, среднемесячные продажи, рекомендуемое количество и т.д.).

 

Структура базы данных

 

Добавление новой таблицы для хранения настроек модуля, чтобы они сохранялись после закрытия админки:

 months_for_average — количество месяцев для расчета.

 stock_ratio — коэффициент запаса.

 last_updated — дата последнего обновления данных (для оптимизации).

 

Реализация модуля

 

1. Создание контроллера и модели:

• В контроллере будет происходить сбор и отображение информации.

• Модель будет отвечать за логику расчета данных по продажам и рекомендациям.

2. Внедрение в админ-панель:

• В разделе заказа в админ-панели добавляем вывод рекомендуемого количества перед текущим количеством для удобства администратора.

• Сохраняем настройки в отдельной вкладке модуля (например, в разделе «Расширения»).

3. Экспорт в Excel:

• Используем PHP-библиотеку для работы с Excel (например, PhpSpreadsheet), которая позволит создать файл с отдельными листами для каждой категории.

4. OCMOD файл:

• Создаем ocmod-файл для внесения необходимых изменений в код OpenCart, чтобы интегрировать отображение рекомендованного количества в нужные места админ-панели.

 

Примерный алгоритм функции расчета

 

function calculate_recommended_stock($product_id, $months, $stock_ratio) {

// Получаем продажи за последние $months месяцев для $product_id

$sales_data = $this->model_catalog_product->getSalesData($product_id, $months);

$average_sales = array_sum($sales_data) / $months;

// Рассчитываем рекомендуемое количество с учетом коэффициента запаса

$recommended_stock = $average_sales * $stock_ratio;

return round($recommended_stock);

}

 

Это общее описание. Более точная интеграция потребует настройки ocmod, чтобы нужные данные попадали в заказы и другие необходимые места админ-панели.

 

 

 

Для создания модуля, ниже представлен кодовый каркас с базовыми файлами, которые обеспечат реализацию требуемых функций. Я опишу, как создать структуру и файлы, а затем интегрировать и настроить модуль.

 

Шаги по созданию модуля

 

1. Структура файлов модуля

 

 

/upload

└── admin

└── controller

│ └── extension

│ └── module

│ └── stock_recommendation.php # Контроллер

└── language

│ └── en-gb

│ └── extension

│ └── module

│ └── stock_recommendation.php # Языковой файл

└── model

│ └── extension

│ └── module

│ └── stock_recommendation.php # Модель

└── view

└── template

└── extension

└── module

└── stock_recommendation.twig # Шаблон для интерфейса настроек

 

 

 

2. Создание контроллера: stock_recommendation.php

 

// admin/controller/extension/module/stock_recommendation.php

<?php

class ControllerExtensionModuleStockRecommendation extends Controller {

private $error = array();

 

public function index() {

$this->load->language('extension/module/stock_recommendation');

$this->document->setTitle($this->language->get('heading_title'));

$this->load->model('setting/setting');

 

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {

$this->model_setting_setting->editSetting('stock_recommendation', $this->request->post);

$this->session->data['success'] = $this->language->get('text_success');

$this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'], true));

}

 

$data['heading_title'] = $this->language->get('heading_title');

 

// Error Handling

if (isset($this->error['warning'])) {

$data['error_warning'] = $this->error['warning'];

} else {

$data['error_warning'] = '';

}

 

// Load module settings

$data['months_for_average'] = $this->config->get('stock_recommendation_months_for_average') ?? 3;

$data['stock_ratio'] = $this->config->get('stock_recommendation_stock_ratio') ?? 1.5;

 

$data['action'] = $this->url->link('extension/module/stock_recommendation', 'user_token=' . $this->session->data['user_token'], true);

$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'], true);

 

$data['header'] = $this->load->controller('common/header');

$data['column_left'] = $this->load->controller('common/column_left');

$data['footer'] = $this->load->controller('common/footer');

 

$this->response->setOutput($this->load->view('extension/module/stock_recommendation', $data));

}

 

protected function validate() {

if (!$this->user->hasPermission('modify', 'extension/module/stock_recommendation')) {

$this->error['warning'] = $this->language->get('error_permission');

}

return !$this->error;

}

}

 

3. Модель: stock_recommendation.php

 

// admin/model/extension/module/stock_recommendation.php

<?php

class ModelExtensionModuleStockRecommendation extends Model {

public function getSalesData($product_id, $months) {

// Получаем продажи за последние N месяцев

$query = $this->db->query("SELECT SUM(quantity) as total FROM " . DB_PREFIX . "order_product WHERE product_id = '" . (int)$product_id . "' AND date_added >= DATE_SUB(NOW(), INTERVAL " . (int)$months . " MONTH)");

return $query->row['total'] ?? 0;

}

 

public function calculateRecommendedStock($product_id, $months, $stock_ratio) {

$total_sales = $this->getSalesData($product_id, $months);

$average_sales = $total_sales / $months;

return round($average_sales * $stock_ratio);

}

}

 

4. Языковой файл: stock_recommendation.php

 

// admin/language/en-gb/extension/module/stock_recommendation.php

<?php

$_['heading_title'] = 'Stock Recommendation Module';

$_['text_success'] = 'Settings saved successfully!';

$_['text_edit'] = 'Edit Stock Recommendation Module';

$_['entry_months_for_average'] = 'Number of Months for Average Calculation';

$_['entry_stock_ratio'] = 'Stock Ratio';

$_['error_permission'] = 'Warning: You do not have permission to modify this module!';

 

5. Шаблон интерфейса настроек: stock_recommendation.twig

 

<!-- admin/view/template/extension/module/stock_recommendation.twig -->

{{ header }}

<div class="container">

<h1>{{ heading_title }}</h1>

{% if error_warning %}

<div class="alert alert-danger">{{ error_warning }}</div>

{% endif %}

<form action="{{ action }}" method="post">

<div class="form-group">

<label for="input-months">{{ entry_months_for_average }}</label>

<input type="text" name="stock_recommendation_months_for_average" value="{{ months_for_average }}" id="input-months" class="form-control" />

</div>

<div class="form-group">

<label for="input-stock-ratio">{{ entry_stock_ratio }}</label>

<input type="text" name="stock_recommendation_stock_ratio" value="{{ stock_ratio }}" id="input-stock-ratio" class="form-control" />

</div>

<button type="submit" class="btn btn-primary">{{ button_save }}</button>

<a href="{{ cancel }}" class="btn btn-default">{{ button_cancel }}</a>

</form>

</div>

{{ footer }}

 

6. Добавление ocmod

 

Создайте ocmod файл, который внесет изменения в админ-панель для отображения рекомендуемого количества перед текущим.

 

7. Экспорт в Excel

 

Для экспорта установите библиотеку PhpSpreadsheet. В контроллер добавьте метод, генерирующий отчет и создающий файл с листами для каждой категории.

 

Установка и настройка

 

• Поместите папку upload в корень вашего OpenCart.

• Перейдите в раздел “Extensions” > “Modules” и установите модуль “Stock Recommendation Module”.

• Настройте параметры расчета и коэффициент запаса в настройках модуля.

 

Этот базовый модуль можно дополнить функцией экспорта и интеграцией ocmod для полного отображения рекомендаций.

 

 

Хорошо, добавим функциональность для экспорта в Excel и интеграцию с ocmod для отображения рекомендованного количества перед текущим количеством товара в админ-панели.

 

1. Функция экспорта в Excel

 

Для экспорта данных воспользуемся библиотекой PhpSpreadsheet, которая позволит создать файл Excel с листами по категориям. Для этого вам потребуется скачать библиотеку и добавить её в проект.

 

Добавление библиотеки PhpSpreadsheet

 

1. Скачайте PhpSpreadsheet.

2. Добавьте библиотеку в проект (например, в папку /system/library/phpspreadsheet).

 

Код для экспорта в Excel

 

Добавим метод экспорта в контроллере stock_recommendation.php.

 

// admin/controller/extension/module/stock_recommendation.php

require_once(DIR_SYSTEM . 'library/phpspreadsheet/vendor/autoload.php');

 

use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

 

public function export() {

$this->load->model('extension/module/stock_recommendation');

$this->load->model('catalog/product');

$this->load->model('catalog/category');

 

$spreadsheet = new Spreadsheet();

 

// Получаем все категории

$categories = $this->model_catalog_category->getCategories();

 

foreach ($categories as $category) {

// Создаем лист для каждой категории

$sheet = $spreadsheet->createSheet();

$sheet->setTitle($category['name']);

 

// Добавляем заголовки

$sheet->setCellValue('A1', 'Product Name')

->setCellValue('B1', 'Average Monthly Sales')

->setCellValue('C1', 'Recommended Stock');

 

// Получаем товары в категории

$products = $this->model_catalog_product->getProducts(['filter_category_id' => $category['category_id']]);

 

$row = 2;

foreach ($products as $product) {

$average_sales = $this->model_extension_module_stock_recommendation->getSalesData($product['product_id'], $this->config->get('stock_recommendation_months_for_average'));

$recommended_stock = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

 

$sheet->setCellValue('A' . $row, $product['name'])

->setCellValue('B' . $row, $average_sales)

->setCellValue('C' . $row, $recommended_stock);

$row++;

}

}

 

$writer = new Xlsx($spreadsheet);

$fileName = 'Stock_Recommendation_' . date('Y-m-d_H-i-s') . '.xlsx';

$filePath = DIR_DOWNLOAD . $fileName;

 

$writer->save($filePath);

 

$this->response->redirect($this->url->link('extension/module/stock_recommendation/download', 'user_token=' . $this->session->data['user_token'] . '&file=' . $fileName, true));

}

 

public function download() {

$file = DIR_DOWNLOAD . $this->request->get['file'];

 

if (file_exists($file)) {

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="' . basename($file) . '"');

header('Content-Length: ' . filesize($file));

readfile($file);

exit;

} else {

$this->session->data['error'] = 'File not found!';

$this->response->redirect($this->url->link('extension/module/stock_recommendation','user_token=' . $this->session->data['user_token'], true));

}

}

 

Обновление шаблона интерфейса для добавления кнопки экспорта

 

В файле stock_recommendation.twig добавим кнопку для экспорта данных в Excel.

 

<form action="{{ action }}" method="post">

<!-- существующие поля для настройки -->

</form>

<a href="{{ export }}" class="btn btn-success">Export to Excel</a>

 

В методе index контроллера передадим URL для экспорта:

 

$data['export'] = $this->url->link('extension/module/stock_recommendation/export', 'user_token='. $this->session->data['user_token'], true);

 

2. Интеграция ocmod

 

Чтобы добавить отображение рекомендуемого количества в интерфейс админ-панели заказов, создадим ocmod файл.

 

Создание файла ocmod: stock_recommendation.ocmod.xml

 

Создайте файл stock_recommendation.ocmod.xml и добавьте следующий код:

 

<?xml version="1.0" encoding="utf-8"?>

<modification>

<name>Stock Recommendation Display</name>

<code>stock_recommendation_display</code>

<version>1.0</version>

<author>Your Name</author>

<file path="admin/view/template/catalog/product_list.twig">

<operation>

<search><![CDATA[<td class="text-right">{{ product.quantity }}</td>]]></search>

<add position="before"><![CDATA[

<td class="text-right">{{ product.recommended_quantity }}</td>

]]></add>

</operation>

</file>

<file path="admin/controller/catalog/product.php">

<operation>

<search><![CDATA[$result['quantity'] = $product_info['quantity'];]]></search>

<add position="after"><![CDATA[

$this->load->model('extension/module/stock_recommendation');

$recommended_quantity = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product_info['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

$result['recommended_quantity'] = $recommended_quantity;

]]></add>

</operation>

</file>

</modification>

 

Установка ocmod

 

1. Перейдите в Extensions > Modifications в админ-панели OpenCart.

2. Загрузите и установите файл stock_recommendation.ocmod.xml.

3. Обновите кэш модификаций, чтобы изменения вступили в силу.

 

Заключение

 

Теперь модуль будет:

• Экспортировать рекомендации в Excel с разбивкой по категориям.

• Отображать рекомендованное количество в админ-панели рядом с текущим количеством товара в заказах, предоставляя администратору более удобный интерфейс для управления запасами.

 

 

Теперь добавим улучшения в модуль для экспорта рекомендаций в Excel и интеграции ocmod для отображения рекомендуемого количества товара непосредственно в админ-панели заказов.

 

Шаг 1. Экспорт в Excel с разбивкой по категориям

 

Добавим в модуль функцию экспорта, которая будет формировать Excel файл с листами, представляющими каждую категорию. Используем библиотеку PhpSpreadsheet для создания Excel файла.

 

Установка библиотеки PhpSpreadsheet

 

1. Скачайте и добавьте PhpSpreadsheet в проект, в директорию /system/library/phpspreadsheet.

 

Функция экспорта

 

Добавим функцию экспорта в stock_recommendation.php контроллер.

 

// admin/controller/extension/module/stock_recommendation.php

require_once(DIR_SYSTEM . 'library/phpspreadsheet/vendor/autoload.php');

 

use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

 

public function export() {

$this->load->model('extension/module/stock_recommendation');

$this->load->model('catalog/product');

$this->load->model('catalog/category');

 

$spreadsheet = new Spreadsheet();

$spreadsheet->removeSheetByIndex(0); // Удаляем стандартный пустой лист

 

// Получаем категории и формируем данные по каждой из них

$categories = $this->model_catalog_category->getCategories();

 

foreach ($categories as $category) {

// Создаем новый лист для категории

$sheet = $spreadsheet->createSheet();

$sheet->setTitle(substr($category['name'], 0, 31)); // Заголовок листа, ограничен 31 символом

 

// Заголовки колонок

$sheet->setCellValue('A1', 'Product Name')

->setCellValue('B1', 'Average Monthly Sales')

->setCellValue('C1', 'Recommended Stock');

 

// Получаем товары в категории и данные по каждому

$products = $this->model_catalog_product->getProducts(['filter_category_id' => $category['category_id']]);

 

$row = 2;

foreach ($products as $product) {

$average_sales = $this->model_extension_module_stock_recommendation->getSalesData($product['product_id'], $this->config->get('stock_recommendation_months_for_average'));

$recommended_stock = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

 

$sheet->setCellValue('A' . $row, $product['name'])

->setCellValue('B' . $row, $average_sales)

->setCellValue('C' . $row, $recommended_stock);

$row++;

}

}

 

// Сохранение Excel файла

$writer = new Xlsx($spreadsheet);

$fileName = 'Stock_Recommendation_' . date('Y-m-d_H-i-s') . '.xlsx';

$filePath = DIR_DOWNLOAD . $fileName;

 

$writer->save($filePath);

 

$this->response->redirect($this->url->link('extension/module/stock_recommendation/download', 'user_token=' . $this->session->data['user_token'] . '&file=' . $fileName, true));

}

 

public function download() {

$file = DIR_DOWNLOAD . $this->request->get['file'];

 

if (file_exists($file)) {

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="' . basename($file) . '"');

header('Content-Length: ' . filesize($file));

readfile($file);

exit;

} else {

$this->session->data['error'] = 'File not found!';

$this->response->redirect($this->url->link('extension/module/stock_recommendation','user_token=' . $this->session->data['user_token'], true));

}

}

 

Шаг 2. Обновление шаблона интерфейса

 

Чтобы предоставить возможность экспорта, добавим кнопку в шаблон интерфейса stock_recommendation.twig:

 

<a href="{{ export }}" class="btn btn-success">Export to Excel</a>

 

В методе index контроллера передаем URL для экспорта:

 

$data['export'] = $this->url->link('extension/module/stock_recommendation/export', 'user_token='. $this->session->data['user_token'], true);

 

Шаг 3. Интеграция ocmod для отображения рекомендаций в заказах

 

Создадим ocmod файл для отображения рекомендованного количества перед текущим количеством товара в админке.

 

Создание файла ocmod

 

Создайте файл stock_recommendation.ocmod.xml:

 

<?xml version="1.0" encoding="utf-8"?>

<modification>

<name>Stock Recommendation Display</name>

<code>stock_recommendation_display</code>

<version>1.0</version>

<author>Your Name</author>

 

<file path="admin/view/template/catalog/product_list.twig">

<operation>

<search><![CDATA[<td class="text-right">{{ product.quantity }}</td>]]></search>

<add position="before"><![CDATA[

<td class="text-right">{{ product.recommended_quantity }}</td>

]]></add>

</operation>

</file>

 

<file path="admin/controller/catalog/product.php">

<operation>

<search><![CDATA[$result['quantity'] = $product_info['quantity'];]]></search>

<add position="after"><![CDATA[

$this->load->model('extension/module/stock_recommendation');

$recommended_quantity = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product_info['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

$result['recommended_quantity'] = $recommended_quantity;

]]></add>

</operation>

</file>

</modification>

 

Установка ocmod

 

1. Перейдите в Extensions > Modifications.

2. Загрузите stock_recommendation.ocmod.xml.

3. Обновите кэш модификаций для активации изменений.

 

Теперь модуль предоставляет:

• Экспорт рекомендаций в Excel с листами по категориям.

• Отображение рекомендуемого количества перед текущим количеством товара в админ-панели, улучшая удобство работы с запасами.

 

 

Чтобы подсветить количество товара в админке заказа красным, если оно меньше рекомендованного, нужно немного изменить шаблон и контроллер, чтобы мы могли передавать эту информацию в шаблон и использовать CSS для подсветки.

 

Шаг 1. Модификация контроллера для передачи информации о подсветке

 

Мы будем вычислять, нужно ли подсветить количество товара, в контроллере, который обрабатывает товары в заказах, а затем передадим это в шаблон.

 

Контроллер: добавление логики для подсветки

 

Дополните метод в контроллере, который обрабатывает товары заказа. Например, если это admin/controller/sale/order.php, то добавьте следующее:

 

// admin/controller/sale/order.php

$this->load->model('extension/module/stock_recommendation');

$this->load->model('catalog/product');

 

// В цикле, где обрабатываются товары заказа

foreach ($order_products as &$product) {

// Получаем рекомендованное количество

$recommended_quantity = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

 

// Получаем фактическое количество товара на складе

$stock_quantity = $this->model_catalog_product->getProduct($product['product_id'])['quantity'];

 

// Если количество на складе меньше рекомендованного, добавляем флаг для подсветки

if ($stock_quantity < $recommended_quantity) {

$product['highlight'] = true;

} else {

$product['highlight'] = false;

}

}

 

Теперь мы добавляем к каждому товару в заказе флаг highlight, который будет указывать, нужно ли подсветить количество товара.

 

Шаг 2. Модификация шаблона для подсветки

 

Теперь в шаблоне нужно отобразить информацию о подсветке. Предположим, что шаблон отображает товары в заказах в файлеorder_list.twig (или аналогичном). Мы добавим логику для подсветки числа.

 

Шаблон: изменение для подсветки

 

В шаблоне добавим CSS-класс для подсветки:

 

{% for product in order_products %}

<tr>

<td>{{ product.name }}</td>

<td>{{ product.model }}</td>

<td>{{ product.quantity }}</td>

<td class="text-right {% if product.highlight %}highlighted{% endif %}">

{{ product.quantity }}

</td>

</tr>

{% endfor %}

 

Добавляем CSS-стиль для подсветки:

 

<style>

.highlighted {

background-color: red;

color: white;

}

</style>

 

Шаг 3. Применение модификации через OCMod

 

Чтобы интегрировать изменения через OCMod, создадим XML файл, который будет изменять шаблон и контроллер.

 

OCMod для подсветки количества

 

Создайте файл highlight_quantity_ocmod.xml:

 

<?xml version="1.0" encoding="utf-8"?>

<modification>

<name>Highlight Stock Quantity</name>

<code>highlight_stock_quantity</code>

<version>1.0</version>

<author>Your Name</author>

 

<!-- Модификация контроллера для добавления флага подсветки -->

<file path="admin/controller/sale/order.php">

<operation>

<search><![CDATA[$order_products = $this->model_sale_order->getOrderProducts($this->request->get['order_id']);]]></search>

<add position="after"><![CDATA[

$this->load->model('extension/module/stock_recommendation');

$this->load->model('catalog/product');

 

foreach ($order_products as &$product) {

$recommended_quantity = $this->model_extension_module_stock_recommendation->calculateRecommendedStock($product['product_id'], $this->config->get('stock_recommendation_months_for_average'), $this->config->get('stock_recommendation_stock_ratio'));

$stock_quantity = $this->model_catalog_product->getProduct($product['product_id'])['quantity'];

 

if ($stock_quantity < $recommended_quantity) {

$product['highlight'] = true;

} else {

$product['highlight'] = false;

}

}

]]></add>

</operation>

</file>

 

<!-- Модификация шаблона для отображения подсветки -->

<file path="admin/view/template/sale/order_list.twig">

<operation>

<search><![CDATA[<td class="text-right">{{ product.quantity }}</td>]]></search>

<add position="before"><![CDATA[

<td class="text-right {% if product.highlight %}highlighted{% endif %}">

{{ product.quantity }}

</td>

]]></add>

</operation>

</file>

 

<!-- Добавляем CSS стиль для подсветки -->

<file path="admin/view/template/common/header.twig">

<operation>

<add position="before"><![CDATA[

<style>

.highlighted {

background-color: red;

color: white;

}

</style>

]]></add>

</operation>

</file>

</modification>

 

Шаг 4. Установка OCMod

 

1. Перейдите в Extensions > Modifications.

2. Загрузите highlight_quantity_ocmod.xml.

3. Обновите модификации для применения изменений.

 

Теперь система будет подсвечивать количество товара в админке красным цветом, если оно меньше рекомендованного количества, что поможет вам эффективно управлять запасами при выполнении заказов.

 

Резюме

 

• Мы добавили логику для подсветки количества товара в админке, если оно меньше рекомендованного.

• Мы создали OCMod для внедрения этой функциональности в шаблон и контроллер без необходимости напрямую редактировать файлы.

• Мы добавили необходимый CSS для подсветки, улучшая восприятие этого предупреждения.

Змінено користувачем denic
Надіслати
Поділитися на інших сайтах


Все класно, але так і не зрозумів, для чого потрібно Коефіцієнт "засів"

Цитата

 

 Настройка коэффициента запаса, который увеличивает количество для более точного планирования.

• Рекомендация = (среднемесячные продажи * коэффициент запаса).

 

 

Приклад, є товар , в нього середньомісячні продажі по кварталу 100 шт, по року 120..  Чим допоможе кеф?

Чи це по типу, в середньому на партію яка закуповується 3% браку, 5% крадуть, тому кеф повинен бути 1,08?

Надіслати
Поділитися на інших сайтах


Почитав я код. Виходить ми будемо підсвічувати кількість товарів якщо вона впала нижче середньомісячних продажів?

Тобто якщо в мене в місяць 120 продажів, в перший день після поповнення залишків до 120 я продав 5, то в мене вже червоний та пора поповнювати? 

Чи я щось не так зрозумів?

Змінено користувачем niger
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.