Merge prod-v8 (multi-project allocation, inter-project transfers) into the all-branches integration
Conflicts (all keep-both): - init_db.py: v7 added ensure_bot_drafts_table, v8 added ensure_project_transfers_table at the same anchor — both functions and both startup calls kept - main.py: same, both ensure calls kept - ChangeInventoryPage.canSubmit: v9's WITHDRAWAL branch and v8's PROJECT_TRANSFER branch — both validation branches kept
This commit is contained in:
@@ -438,7 +438,26 @@ export function EditModal({ quoteId, onClose }: EditModalProps) {
|
||||
li.accepted_ts_id = null;
|
||||
li.target_project = null;
|
||||
li.target_project_id = null;
|
||||
li.allocations = undefined;
|
||||
});
|
||||
|
||||
// ادغام سطرهای تفکیکشده حاصل از تخصیص چندپروژهای (الزام ۲)
|
||||
const mergedMap = new Map<string, LineItem>();
|
||||
for (const li of next.line_items) {
|
||||
const key = `${li.material_id}__${li.unit || ""}__${li.unit_price ?? ""}`;
|
||||
const existing = mergedMap.get(key);
|
||||
if (existing) {
|
||||
const q1 = Number(existing.quantity ?? 0);
|
||||
const q2 = Number(li.quantity ?? 0);
|
||||
existing.quantity = Math.round((q1 + q2) * 10000) / 10000;
|
||||
if (existing.unit_price != null && existing.quantity != null) {
|
||||
existing.total_price = existing.unit_price * existing.quantity;
|
||||
}
|
||||
} else {
|
||||
mergedMap.set(key, { ...li });
|
||||
}
|
||||
}
|
||||
next.line_items = Array.from(mergedMap.values());
|
||||
} else if (next.status === "accepted") {
|
||||
next.arrived_date = null;
|
||||
next.line_items.forEach((li) => {
|
||||
|
||||
Reference in New Issue
Block a user