\Pasteque\tpl_btn('btn-add', \Pasteque\get_module_url_action(PLUGIN_NAME, "product_edit"), \i18n('Add a product', PLUGIN_NAME), 'img/btn_add.png'); \Pasteque\tpl_btn('btn-import', \Pasteque\get_module_url_action(PLUGIN_NAME, "productsManagement"), \i18n('Import products', PLUGIN_NAME), 'img/btn_add.png'); \Pasteque\tpl_btn('btn-export ', \Pasteque\get_report_url(PLUGIN_NAME, "products_export"), \i18n('Export products', PLUGIN_NAME), 'img/btn_add.png'); ?> <div id="search"> <div class="title"><?php \pi18n("Search"); ?> </div> <h5><?php \pi18n("by category", PLUGIN_NAME); ?> </h5> <?php \Pasteque\tpl_form('select', 'category', \Pasteque\CategoriesService::getAll()); ?> </div> <p><?php \pi18n("%d products", PLUGIN_NAME, $totalProducts); ?> </p> <h2><?php \pi18n("Catalog", PLUGIN_NAME); ?> </h2> <?php \Pasteque\tpl_pagination($totalProducts, $range, $start);
// it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Pastèque is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Pastèque. If not, see <http://www.gnu.org/licenses/>. namespace ProductBarcodes; $message = NULL; $error = NULL; $categories = \Pasteque\CategoriesService::getAll(); $allProducts = \Pasteque\ProductsService::getAll(TRUE); $products = array(); foreach ($allProducts as $product) { if ($product->barcode !== NULL && $product->barcode != "") { $products[] = $product; } } ?> <h1><?php \pi18n("Tags", PLUGIN_NAME); ?> </h1> <?php \Pasteque\tpl_msg_box($message, $error);
public function __construct($report, $values) { $this->data = array(); $this->i = 0; $countedStock = array(); if (!isset($values['location'])) { $locSrv = new \Pasteque\LocationsService(); $locations = $locSrv->getAll(); $defaultLocationId = $locations[0]->id; $values['location'] = $defaultLocationId; } foreach ($values as $key => $value) { if (strpos($key, "qty-") === 0) { $productId = substr($key, 4); $qty = $value; $countedStock[$productId] = $qty; } } $categories = \Pasteque\CategoriesService::getAll(); $products = \Pasteque\ProductsService::getAll(TRUE); $prdCat = array(); // Build listing by categories foreach ($products as $product) { if ($product->categoryId !== \Pasteque\CompositionsService::CAT_ID) { $prdCat[$product->categoryId][] = $product; } } // Get stock to compare with counted stock $levels = array(); $rawLevels = \Pasteque\StocksService::getLevels($values['location']); foreach ($rawLevels as $level) { $levels[$level->productId] = $level; } foreach ($categories as $category) { if (isset($prdCat[$category->id])) { foreach ($prdCat[$category->id] as $product) { $counted = 0; if (isset($countedStock[$product->id])) { $counted = $countedStock[$product->id]; } $actual = 0; if (isset($levels[$product->id])) { $actual = $levels[$product->id]->qty; } if ($counted !== $actual) { $this->data[] = array("ref" => $product->reference, "counted" => $counted, "actual" => $actual, "diff" => $counted - $actual); } } } } }