Files
crm.twinpol.com/modules/EcmStockDocCorrects/EditView.php
Michał Zieliński c28234a075 KS - liquidation
2025-05-29 20:08:01 +02:00

185 lines
6.1 KiB
PHP
Executable File

<?php
ini_set('display_errors', 1);
error_reporting(LC_ALL);
if (! defined('sugarEntry') || ! sugarEntry)
die('NotAValidEntryPoint');
global $sugar_version, $sugar_config, $current_user, $app_strings, $mod_strings, $current_user, $app_list_strings;
require_once('modules/EcmStockDocCorrects/EcmStockDocCorrect.php');
require_once('include/time.php');
$db = $GLOBALS['db'];
//add jquery
echo '<script type="text/javascript" src="modules/EcmStockDocCorrects/javascript/searchcolumndefs.js"></script>';
echo '<script type="text/javascript" src="include/ECM/SearchProductTable.js"></script>';
echo '<script type="text/javascript" src="include/ECM/tablenavigator.js"></script>';
// $cq=$current_user->getPreference('confirm_quotes');
$new_number = false;
$duplicate = false;
$focus = new EcmStockDocCorrect();
require_once('include/MVC/View/SugarView.php');
require_once('modules/EcmStockDocCorrects/views/EditView/view.edit.ecmstockdoccorrects.php');
$edit = new ViewEditEcmStockDocCorrects();
$edit->ss = new Sugar_Smarty();
if (isset($_REQUEST['record']) && $_REQUEST['isDuplicate'] == "false") {
$focus->retrieve($_REQUEST['record']);
if (isset($focus->id) && $focus->id != '') {
$focus->format_all_fields();
}
} else if ($_REQUEST['isDuplicate'] == "true") {
$new_number = true;
$duplicate = true;
//get data
$focus->retrieve($_REQUEST['return_id']);
} else if (isset($_REQUEST['ecommerceKS'])) {
$new_number = true;
$focus->stock_id = 'cf16804e-f698-5e09-2da3-6553588446ae';
$focus->register_date = date("d.m.Y");
$focus->type = '8a6b804b-fac7-5cc2-de19-54c209116b19';
$focus->name = 'Zwrot allegro';
$db = $GLOBALS['db'];
$invoiceIds = $_SESSION[$_REQUEST['ecommerceKS']];
$query = "
SELECT
ip.ecmproduct_id,
SUM(ip.quantity) AS quantity,
ip.price_netto,
p.code,
p.name,
p.unit_id
FROM ecommerce_invoices_products AS ip
INNER JOIN ecmproducts AS p ON ip.ecmproduct_id = p.id
WHERE invoice_id IN ('" . implode('\',\'', $invoiceIds) . "')
AND ip.ecmproduct_id NOT IN ('', '165f364e-9301-25ac-5906-58e38f1de4ca')
AND ip.quantity > 0
GROUP BY ip.ecmproduct_id, ip.price_netto;
";
$res = $db->query($query);
$products = array();
$productIds = array();
while ($row = $db->fetchByAssoc($res)) {
$products[$row['ecmproduct_id']] = $row;
$productIds[] = $row['ecmproduct_id'];
}
$prices = array();
if (!empty($productIds)) {
$priceQuery = "
SELECT
sdi.ecmproduct_id,
sdi.price,
sd.register_date
FROM ecmstockdocinitems sdi
INNER JOIN ecmstockdocins sd ON sdi.ecmstockdocin_id = sd.id
WHERE sd.parent_id = 'f084e64a-4e63-a3d1-6417-58cbf730df3f'
AND sdi.ecmproduct_id IN ('" . implode('\',\'', $productIds) . "')
AND sdi.deleted = 0
AND sd.deleted = 0
ORDER BY sdi.ecmproduct_id, sd.register_date DESC
";
$priceRes = $db->query($priceQuery);
while ($row = $db->fetchByAssoc($priceRes)) {
if (!isset($prices[$row['ecmproduct_id']])) {
$prices[$row['ecmproduct_id']] = $row['price'];
}
}
}
$finalProducts = array();
$position = 1;
foreach ($products as $productId => $product) {
$finalPrice = isset($prices[$productId]) ? $prices[$productId] : $product['price_netto'];
$finalProducts[] = array(
'position' => $position++,
'product_id' => $productId,
'product_code' => $product['code'],
'name' => $product['name'],
'quantity' => $product['quantity'],
'price' => $finalPrice,
'unit_id' => $product['unit_id'],
'unit_name' => $app_list_strings['ecmproducts_unit_dom'][$product['unit_id']],
'ecmvat_name' => '23%',
'ecmvat_value' => 23,
'ecmvat_id' => '28079566-b825-e38f-9993-4ccc7b781de5',
);
}
$finalProducts = array_values(array_reduce($finalProducts, function ($carry, $item) {
$key = $item['product_id'] . '-' . $item['price'];
if (!isset($carry[$key])) {
$carry[$key] = $item;
} else {
$carry[$key]['quantity'] += $item['quantity'];
}
return $carry;
}, array()));
$edit->ss->assign('ECOMMERCE_PRODUCTS', json_encode($finalProducts));
$edit->ss->assign('ECOMMERCE_INVOICES', json_encode($invoiceIds));
$focus->ecommerce_invoices = $invoiceIds;
$query = "SELECT document_no FROM ecommerce_invoices WHERE id IN ('" . implode('\',\'', $invoiceIds) . "')";
$res = $db->query($query);
$documentNos = array();
while ($row = $db->fetchByAssoc($res)) {
$documentNos[] = $row['document_no'];
}
$focus->pdf_text = "Dotyczy faktur: " . implode(', ', $documentNos);
} else if (isset($_REQUEST['liquidation'])) {
$new_number = true;
$focus->stock_id = 'cf16804e-f698-5e09-2da3-6553588446ae';
$focus->register_date = date("d.m.Y");
$focus->type = '7bb903d0-c296-7d1b-6e50-54c209e30850';
$focus->name = 'Likwidacja allegro';
$db = $GLOBALS['db'];
$ks = new EcmStockDocCorrect();
$ks->retrieve($_REQUEST['liquidation']);
$products = $ks->getPositionList(true);
foreach ($products as &$item) {
$item['quantity'] = -$item['quantity'];
}
unset($item);
$edit->ss->assign('ECOMMERCE_PRODUCTS', json_encode($products));
} else {
$new_number = true;
//dates
$focus->stock_id = $current_user->stock_id;
$focus->register_date = date("d.m.Y");
$OPT['check_parent_id'] = false;
}
//get stocks
$res = $db->query("SELECT id, name FROM ecmstocks WHERE deleted = '0' ORDER BY name");
$stock = '<select id="stock" name="stock"><option value=""></option>';
$stock_body = '';
while ($row = $db->fetchByAssoc($res)) {
if ($focus->stock_id != '' && $row['id'] == $focus->stock_id) {
$s = 'selected';
} else {
$s = '';
}
$stock_body .= '<option value="' . $row['id'] . '" ' . $s . '>' . $row['name'] . '</option>';
}
$stock .= $stock_body . '</select><input id="stock_id" name="stock_id" type="hidden" value="' . $focus->stock_id . '"/>';
$edit->module = 'EcmStockDocCorrects';
$edit->bean = $focus;
$edit->tplFile = 'include/ECM/EcmViews/EditView/Tabs/EditView.tpl';
$edit->preDisplay();
$edit->ss->assign("NEW_NUMBER", $new_number);
$edit->ss->assign("DUPLICATE", $duplicate);
$edit->ss->assign("STOCK", $stock);
echo $edit->display();
//loading view
echo '<link rel="stylesheet" type="text/css" href="modules/EcmStockDocCorrects/javascript/helper.css" media="screen" /><div class="loading_panel"></div>';