Три правки по замечаниям. 1. База и код разъехались по разным репозиториям. Автокоммит и раньше трогал только vault.fmdb, но лежал он в той же ветке, что и исходники, поэтому пуш тащил всю историю программы. Теперь data/ — самостоятельный клон food-records со своим .git, а исходники его игнорируют целиком. При первом запуске приложение встаёт на уже существующую историю сервера, а не заводит параллельную. 2. Фасовки товара. Пачка печенья 10 шт за 200 ₽ и та же печенька поштучно за 30 ₽ — один товар с двумя фасовками. Остатки, себестоимость и FIFO считаются в базовых единицах, поэтому поштучные продажи вычитаются из купленных пачек. Размер фасовки хранится в документе слепком. Миграция схемы 1→2 не меняет поведение уже заведённых данных. 3. Быстрый ввод продаж за период: выбор диапазона дат, строка таблицы — отдельная продажа, ввод с клавиатуры, запись всех разом. Незнакомое имя заводится как контрагент, повтор периода подсвечивается. Тесты больше не имеют настроенного remote, чтобы не ходить в сеть. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from datetime import date, timedelta
|
||
|
||
import pytest
|
||
|
||
from app import journal
|
||
from app.storage import Vault
|
||
|
||
|
||
@pytest.fixture
|
||
def vault(tmp_path):
|
||
v = Vault.create(tmp_path / "vault.fmdb", "pw")
|
||
# По умолчанию адрес репозитория данных уже прописан, а тесты не должны
|
||
# ходить в сеть и уж тем более трогать настоящий репозиторий. Проверки
|
||
# синхронизации работают против локального bare-репо в test_gitsync.
|
||
v.doc.settings.git.remote_url = ""
|
||
v.doc.settings.git.enabled = False
|
||
v.save(force=True)
|
||
return v
|
||
|
||
|
||
@pytest.fixture
|
||
def buns(vault):
|
||
"""Три булки из примера пользователя, с фиксированными ценами поставщика."""
|
||
return {
|
||
"повидло": journal.create_product(vault, "Булка с повидлом", cost_price=30, retail_price=50),
|
||
"мак": journal.create_product(vault, "Булка с маком", cost_price=20, retail_price=35),
|
||
"корица": journal.create_product(vault, "Булка с корицей", cost_price=25, retail_price=40),
|
||
}
|
||
|
||
|
||
@pytest.fixture
|
||
def today():
|
||
return date.today()
|
||
|
||
|
||
@pytest.fixture
|
||
def in_two_weeks(today):
|
||
return today + timedelta(days=14)
|