first commit

This commit is contained in:
2025-08-02 16:30:27 +02:00
commit 23646bfcee
14851 changed files with 1750626 additions and 0 deletions

162
admin/stockInOrder.php Normal file
View File

@@ -0,0 +1,162 @@
<?php
use Query\Operator;
$main_class = 'StockInOrder';
class StockInOrder extends Frame
{
protected $template = 'window/stockInOrder.tpl';
public function handleOrdersOfSupplierAdd()
{
$data = getVal('data');
$ErrStr = '';
if (!empty($data['pieces'])) {
require_once 'ordersOfSuppliers.php';
$orders = new OrdersOfSuppliers();
$orders->setID($data['id_supplier']);
$orders->handleAddValue($data);
$ErrStr = '&OkStr='.urlencode('Přidáno do seznamu.');
}
redirect("launch.php?s=stockInOrder.php&acn=edit&IDp={$data['id_product']}&IDv={$data['id_variation']}".$ErrStr);
}
public function handleMovePieces()
{
$data = getVal('data');
$ErrStr = '';
sqlStartTransaction();
foreach ($data['move_pieces'] as $key => $pieces) {
if (!empty($pieces['pieces'])) {
$product = new Product($key);
$product->storeIn($pieces['id_variation'], '-'.$pieces['pieces']);
$product = new Product($data['id_product']);
$product->storeIn($data['id_variation'], $pieces['pieces']);
if (empty($ErrStr)) {
$ErrStr = '&OkStr='.urlencode('Kusy přesunuty.');
}
}
}
sqlFinishTransaction();
redirect("launch.php?s=stockInOrder.php&acn=edit&IDp={$data['id_product']}&IDv={$data['id_variation']}".$ErrStr);
}
public function get_vars()
{
$vars = parent::get_vars();
$pageVars = getVal('body', $vars);
$IDp = getVal('IDp');
$IDv = getVal('IDv');
$pageVars['id_product'] = $IDp;
$pageVars['id_variation'] = $IDv;
if (!$IDp) {
throw new InvalidArgumentException('Specify product ID');
}
$posQuery = sqlQueryBuilder()
->select('pos.in_store, pos.code, s.order_url, s.name, s.id')
->from('products_of_suppliers', 'pos')
->leftJoin('pos', 'suppliers', 's', 'pos.id_supplier = s.id')
->leftJoin('pos', 'products', 'p', 'pos.id_product = p.id')
->leftJoin('p', 'vats', 'v', 'v.id = p.vat');
if (findModule(\Modules::STOCK_IN)) {
$subQuery = sqlQueryBuilder()
->select('sii.price as buy_price')
->from('stock_in', 'si')
->leftJoin('si', 'stock_in_items', 'sii', 'si.id = sii.id_stock_in')
->where('sii.id_product = pos.id_product')
->andWhere(Operator::equalsToOrNullable('sii.id_variation', 'pos.id_variation'))
->andWhere('si.id_supplier = s.id')
->andWhere(Operator::inStringArray(['invoice'], 'si.id_index'))
->orderBy('sii.id', 'DESC')
->setMaxResults(1);
$posQuery->addSelect("({$subQuery->getSQL()}) as buy_price");
}
$posQuery->addSelect('pos.price_buy, v.vat');
if (findModule('orders_of_suppliers')) {
$posQuery->addSelect('oos.pieces')
->leftJoin('pos', 'orders_of_suppliers', 'oos', 'pos.id_supplier=oos.id_supplier AND oos.id_product=pos.id_product AND '.Operator::equalsToOrNullable('oos.id_variation', 'pos.id_variation'));
}
$posQuery->andWhere(Operator::equals(['pos.id_product' => $IDp]));
if ($IDv > 0) {
$posQuery->andWhere(Operator::equals(['pos.id_variation' => $IDv]));
}
$posQuery->addOrderBy('s.id');
if (findModule(\Modules::STOCK_IN)) {
$posQuery->addParameters(
$subQuery->getParameters(),
$subQuery->getParameterTypes()
);
}
$inSuppliers = $posQuery->execute();
$pageVars['suppliers'] = [];
foreach ($inSuppliers as $row) {
$pageVars['suppliers'][] = $row;
}
// do ordering
usort($pageVars['suppliers'], function ($a, $b) {
if ($a['buy_price'] === null) {
return 1;
} elseif ($b['buy_price'] === null) {
return -1;
}
return $a['buy_price'] <=> $b['buy_price'];
});
foreach ($pageVars['suppliers'] as $key => $supplier) {
if ($supplier['in_store'] == 0) {
unset($pageVars['suppliers'][$key]);
$pageVars['suppliers'][] = $supplier;
}
}
if (findModule('orders_of_suppliers')) {
foreach ($pageVars['suppliers'] as &$supplier) {
$qbInSuppliers = sqlQueryBuilder()->select('SUM(sii.quantity) AS quantity, si.id AS id_stockin')
->from('stock_in_items', 'sii')
->leftJoin('sii', 'stock_in', 'si', 'sii.id_stock_in = si.id')
->where(Operator::equals([
'si.id_index' => 'future',
'sii.id_product<=>:id_product',
'sii.id_variation<=>:id_variation',
]))
->setParameter('id_supplier', $supplier['id'])
->setParameter('id_product', $IDp)
->setParameter('id_variation', $IDv);
$supplier = array_merge($supplier, $qbInSuppliers->execute()->fetchAllAssociative());
$SQL = sqlQuery('SELECT COALESCE(pv.in_store ,p.in_store) AS in_store, pos.id_product, pos.id_variation, p.title AS product_title, pv.title AS variation_title
FROM '.getTableName('products_of_suppliers').' AS pos
LEFT JOIN '.getTableName('products').' AS p ON p.id = pos.id_product
LEFT JOIN '.getTableName('products_variations').' AS pv ON pv.id = pos.id_variation
WHERE pos.id_supplier=:id_supplier AND pos.code=:code AND pos.id_product!=:id_product', [
'id_supplier' => $supplier['id'],
'code' => $supplier['code'],
'id_product' => $IDp,
]);
foreach ($SQL as $product) {
$supplier['same_code'][] = $product;
}
}
}
$vars['body'] = $pageVars;
return $vars;
}
}