Доброго времени суток. Досталась большая база с данными, и нужно вывести отчет об остатках на складе больше 3 месяцев, не затрагивая структуру таблиц.
К примеру тут отображено, что изначально более 3 месяцев назад поступило товара с id 2121 10 штук, а условно вчера 1 штука, т.е. отчет должен показывать 10 штук, при общем кол-ве в 11шт. Далее было перемещено со склада 1 на склад 30 - 5 штук и еще 6 штук (5 + 1) на склад 32. Т.е. отчет должен показывать, что у нас в остатках 5 штук на складе 30 и еще 5 на складе 32.
Есть примерный код того как оно мне досталось
//получаем резервы и транзиты по всей номенклатуре по которой были совершены действия
$q = "select nomen.id,
nomen.tip,
nomen.name,
nomen.pid,
nomen.quantity_type,
sum(rez.count_rezerv_current) as rezerv,
sum(rez.count_tranzit_current) as tranzit
from sup_rezerv_nomen rez
join sup_nomenclature nomen
on nomen.id = rez.id_nomen
where rez.status = 1
group by nomen.id";
$res = $DB->query($q);
while( $row = $DB->nextRow($res) ) {
$row['cost'] = 0;
$row['count_all'] = 0;
$mas[$row['id']] = $row;
}
//получаем все поступления
$q = 'select nomen.id as id,
nomen.tip,
nomen.pid,
nomen.name,
insk.skladid,
SUM(insk.count*insk.cost) cost_in,
sum(insk.count) count_in
from sup_sklad_in insk
join sup_nomenclature nomen
on nomen.id = insk.nomenclatureid
join sup_lst_sklad lst_sk
on lst_sk.id = insk.skladid
and lst_sk.id_depart in ('.implode(',',$user['departs']).')
where insk.date<='.$dateto.'
group by nomen.id, insk.skladid';
$res = $DB->query($q);
while ($row=$DB->nextRow($res)) {
$mas[$row['id']]['id'] = $row['id'];
$mas[$row['id']]['pid'] = $row['pid'];
$mas[$row['id']]['name'] = $row['name'];
$mas[$row['id']]['tip'] = $row['tip'];
$mas[$row['id']]['cost'] += $row['cost_in'];
$mas[$row['id']]['sklad'][$row['skladid']]['count'] = $row['count_in'];
$mas[$row['id']]['count_all'] += $row['count_in'];
$cost_all += $row['cost_in'];
}
//получаем все отгрузки
$q = 'select insk.nomenclatureid as id,
insk.skladid,
coalesce(SUM(coalesce(outsk.count*insk.cost)),0) cost_out,
coalesce(sum(outsk.count),0) count_out
from sup_sklad_in insk
left join sup_sklad_out outsk
on outsk.pid = insk.id
join sup_lst_sklad lst_sk
on lst_sk.id = insk.skladid
and lst_sk.id_depart in ('.implode(',',$user['departs']).')
left join sup_order_items oi
on oi.id = outsk.or_itemid
where insk.date<='.$dateto.'
AND ( oi.tip <> 3 OR (oi.tip = 3 AND outsk.date <= '.$dateto.') OR oi.tip IS NULL)
group by insk.nomenclatureid, insk.skladid';
$res=$DB->query($q);
while ($row=$DB->nextRow($res)) {
$mas[$row['id']]['cost'] -= $row['cost_out'];
$mas[$row['id']]['sklad'][$row['skladid']]['count'] -= $row['count_out'];
$mas[$row['id']]['count_all'] -= $row['count_out'];
$mas[$row['id']]['cost'] = sprintf("%.2f",$mas[$row['id']]['cost']);
$mas[$row['id']]['count_all'] = sprintf("%.2f",$mas[$row['id']]['count_all']);
$cost_all -= $row['cost_out'];
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, изучаю php уже пол года, создавал пару сайтов, но всегда меня заносило на создание динамический сайтов, использую для этого ajax + phpТак...
Из Android приложения делаю POST запрос с JSON строкой на свой сервер(php)Как на сервере мне обработать JSON? Можно какой-то пример или ссылку?!
Подскажите как реализовать следующие, чтобы зарегистрированный пользователь, который закажет товар в текущем месяце получал скидку 5% на все...