fix(marketplace): приёмка партии из списка — через единый диалог коррекции (ревью 2026-05-30)
Кнопка «Создать акт приёмки» на ожидающей партии звала createAplReception напрямую, без формы сверки — оператор принимал по заказанным кол-вам и исходным ценам (риск «приняли как 100, хотя привезли 80»). Перенаправлена в openPickupForSupplier («Принять партию») — тот же диалог коррекции кол-ва/цены, что и QR-скан и «самовывоз по факту». Коррекция доступна на ВСЕХ путях приёмки без исключений. createReceptionForShipment удалена. Фронт-only, codegen не нужен. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+10
-25
@@ -34,8 +34,11 @@ import SignAplReceptionChairmanDialog from './SignAplReceptionChairmanDialog.vue
|
||||
*
|
||||
* Оператор не вводит идентификатор партии руками — он либо выбирает
|
||||
* ожидающую приёмки партию из списка (партии `SUPPLY_PREPARED`, прибывшие
|
||||
* на его КУ), либо сканирует QR поставщика (Story 14.3). Оба пути зовут
|
||||
* `createAplReception({ shipment_id })`.
|
||||
* на его КУ), либо сканирует QR поставщика (Story 14.3). Все пути ведут в
|
||||
* единый диалог коррекции (`openPickupForSupplier`): оператор сверяет факт,
|
||||
* правит количество и цену по каждой единице и только потом формирует акт —
|
||||
* коррекция доступна ВСЕГДА и без исключений (ревью 2026-05-30). Без формы
|
||||
* сверки нельзя: иначе риск «приняли как заказано, хотя привезли меньше».
|
||||
*
|
||||
* Story 14.2: отдельный раздел «Самовывоз по факту» — поставщики с принятыми
|
||||
* заказами, которые не формировали партию заранее. Оператор принимает по факту
|
||||
@@ -154,24 +157,6 @@ async function acceptExpressPickup(
|
||||
await openPickupForSupplier(candidate.offerer_account);
|
||||
}
|
||||
|
||||
async function createReceptionForShipment(shipmentId: string): Promise<void> {
|
||||
const id = shipmentId.trim();
|
||||
if (!id) {
|
||||
FailAlert(new Error('Не указана партия для приёмки.'));
|
||||
return;
|
||||
}
|
||||
Loading.show({ message: 'Создаю акт приёмки…' });
|
||||
try {
|
||||
await createAplReception({ shipment_id: id });
|
||||
SuccessAlert('Акт приёмки создан');
|
||||
await load();
|
||||
} catch (e) {
|
||||
FailAlert(e, 'Не удалось создать акт приёмки');
|
||||
} finally {
|
||||
Loading.hide();
|
||||
}
|
||||
}
|
||||
|
||||
// QR-код передачи (Эпик 14, агрегирующая приёмка): оператор сканирует
|
||||
// account-bound код поставщика → грузим ВСЕ единицы имущества этого поставщика,
|
||||
// ожидающие приёмки на этом КУ (единый базис «акцепт поставщика на КУ», R4),
|
||||
@@ -370,8 +355,8 @@ q-page.reception(role='region', aria-label='Приёмка партии')
|
||||
template(v-else)
|
||||
PageHint(storage-key='mp:operator-reception:banner-dismissed')
|
||||
| Партии, прибывшие на ваш пункт выдачи, ждут приёмки ниже. Выберите партию
|
||||
| (или отсканируйте QR поставщика), создайте акт приёмки и подпишите его
|
||||
| председателем участка.
|
||||
| (или отсканируйте QR поставщика), сверьте фактическое количество и цену
|
||||
| по каждой позиции, сформируйте акт и подпишите его председателем участка.
|
||||
|
||||
//- Ожидающие приёмки партии: выбор из списка вместо ручного ввода id.
|
||||
//- QR-сканер — для тех, кто принимает с телефона (Story 14.3).
|
||||
@@ -391,10 +376,10 @@ q-page.reception(role='region', aria-label='Приёмка партии')
|
||||
.reception__ship-meta
|
||||
| {{ SHIPMENT_VARIANT_LABEL[s.delivery_variant] ?? s.delivery_variant }} · {{ formatAsset2Digits(s.total_amount) }} ₽
|
||||
template(v-if='s.ttn_number') · ТТН {{ s.ttn_number }}
|
||||
BaseButton(variant='primary', size='sm', @click='createReceptionForShipment(s.id)')
|
||||
BaseButton(variant='primary', size='sm', @click='openPickupForSupplier(s.offerer_account)')
|
||||
template(#icon-left)
|
||||
q-icon(name='add', size='16px')
|
||||
| Создать акт приёмки
|
||||
q-icon(name='how_to_reg', size='16px')
|
||||
| Принять партию
|
||||
|
||||
//- Story 14.2: самовывоз по факту — поставщик приехал без заранее
|
||||
//- сформированной партии; оператор открывает приёмку по факту присутствия.
|
||||
|
||||
Reference in New Issue
Block a user