test(e2e): синтетические суммы кратны рублю (учёт округления расчёта)
Зачем: на ветке codex/fix-live-database цепочка подтверждение → расчёт → утверждение впервые дошла до конца, и K3/N2 остался красным не из-за дефекта, а из-за теста: 8 ч × 123,45 ₽ = 98760 коп., а расчёт округляет строку до rounding_unit_minor (по умолчанию 100 коп., service.ts:695) и начисляет 98800. Округление до рубля — настройка продукта, не дефект; тест не должен от него зависеть. Что: SYNTHETIC_RATE_MINOR 12345 → 12300 (123,00 ₽/ч), оплата смены официанта в K9 111111 → 111100. Суммы остаются заведомо синтетическими.
This commit is contained in:
parent
ac8ab3cc02
commit
3475133b10
2 changed files with 7 additions and 3 deletions
|
|
@ -175,7 +175,7 @@ describe('Деньги, S9, A4 и даты на реальной PostgreSQL', ()
|
||||||
it('[K9/D3] официант по пресету получает оплату смены из параметров пресета', async () => {
|
it('[K9/D3] официант по пресету получает оплату смены из параметров пресета', async () => {
|
||||||
const [unit] = await createOrgUnits(1);
|
const [unit] = await createOrgUnits(1);
|
||||||
const [employee] = await importEmployees(1);
|
const [employee] = await importEmployees(1);
|
||||||
const shiftRate = 111_111; // синтетические 1 111,11 ₽ за смену
|
const shiftRate = 111_100; // синтетические 1 111,00 ₽ за смену (кратно рублю, см. округление)
|
||||||
// Предполагаемый контракт: параметры пресета передаются объектом `params`
|
// Предполагаемый контракт: параметры пресета передаются объектом `params`
|
||||||
// (ключи — param_declarations правила).
|
// (ключи — param_declarations правила).
|
||||||
const assign = await api('PUT', `/employees/${employee!.id}/pay-assignment`, {
|
const assign = await api('PUT', `/employees/${employee!.id}/pay-assignment`, {
|
||||||
|
|
|
||||||
|
|
@ -138,8 +138,12 @@ export async function hourlyRuleId(): Promise<string> {
|
||||||
return hourly!.id;
|
return hourly!.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Синтетическая ставка 123,45 ₽/ч (заведомо не реальная сумма). */
|
/**
|
||||||
export const SYNTHETIC_RATE_MINOR = 12_345;
|
* Синтетическая ставка 123,00 ₽/ч (заведомо не реальная сумма). Кратна рублю: расчёт
|
||||||
|
* округляет строку до rounding_unit_minor (по умолчанию 100 коп.), и 8 ч × ставка
|
||||||
|
* должны совпадать с начислением без учёта округления.
|
||||||
|
*/
|
||||||
|
export const SYNTHETIC_RATE_MINOR = 12_300;
|
||||||
|
|
||||||
export async function assignHourly(employeeId: string, orgUnitId: string | null) {
|
export async function assignHourly(employeeId: string, orgUnitId: string | null) {
|
||||||
const response = await api('PUT', `/employees/${employeeId}/pay-assignment`, {
|
const response = await api('PUT', `/employees/${employeeId}/pay-assignment`, {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue