185 lines
6.1 KiB
PHP
Executable File
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>';
|