18.06.2018 (М) ПОДГОТОВКА К ХРОНОЛОГИЧЕСКОЙ ЗАМЕНЕ % НДС — различия между версиями
Maria (обсуждение | вклад) м |
Maria (обсуждение | вклад) м |
||
Строка 13: | Строка 13: | ||
− | <u>'''Если вызов из R165, R186, R220, … - где | + | <u>'''Если вызов из R165, R186, R220, … - где ОПРЕДЕЛЕНА CurDate:'''</u><br/> |
− | :''SeekRef(спрк, код, 'PRODNDS',…)'' | + | : ''SeekRef(спрк, код, 'PRODNDS',…)'' |
::: меняем на ''ProdNDS(код [,спрк])'', где спрк = R08, R11, R197; умолч.=R11 | ::: меняем на ''ProdNDS(код [,спрк])'', где спрк = R08, R11, R197; умолч.=R11 | ||
− | : | + | : ''ProdNDS(код [, спрк])'' |
::: оставляем без изменений | ::: оставляем без изменений | ||
− | : | + | : ''ProdNDS(код, [спрк], умолч)'' |
::: меняем на ''ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=CurDate))'' | ::: меняем на ''ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=CurDate))'' | ||
− | ::: | + | ::: dtdt, как обычно, необязательно определять |
− | <u>'''Если вызов из запросов, | + | <u>'''Если вызов из запросов, печ/форм, … - где НЕ определена CurDate:'''</u><br/> |
− | : | + | : нужно использовать ''ProdNDS(код, [спрк], , некаяДата)'' |
− | : | + | : а если нужно умолчание НДС ''ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=некаяДата), некаяДата)'' |
Версия 09:13, 25 июля 2018
В OnAfterUpdateConfig() уже предусмотрено автозаполнение хронологии NDS_STND/PRVLG при очередном обновлении.
При правильно заполненной хронологии параметров (за это отвечает OnAfterUpdateConfig)
в R11 (R08,R197) может стоять и 18%, и 20%.
Доработанная ф-я ProdNDS() вернёт 20%, если 2019 год, и 18%, если 2018.
Ключевые фразы поиска мест для изменения:
- PRODNDS - это и имя поля в R11,R08, и название ф-и
- =18, =10 (или с пробелом = 18, = 10 - кто как пишет)
- NDS_STND, NDS_PRVLG
- 10%, 18% (или с пробелом 10 %, 18 % - кто как пишет)
Если вызов из R165, R186, R220, … - где ОПРЕДЕЛЕНА CurDate:
- SeekRef(спрк, код, 'PRODNDS',…)
- меняем на ProdNDS(код [,спрк]), где спрк = R08, R11, R197; умолч.=R11
- ProdNDS(код [, спрк])
- оставляем без изменений
- ProdNDS(код, [спрк], умолч)
- меняем на ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=CurDate))
- dtdt, как обычно, необязательно определять
Если вызов из запросов, печ/форм, … - где НЕ определена CurDate:
- нужно использовать ProdNDS(код, [спрк], , некаяДата)
- а если нужно умолчание НДС ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=некаяДата), некаяДата)
Получение из ставки НДС цифирьки-субсчёта -1 или -2:
- вариант 1 min(2, round(n_d_s/10,0))
- вариант 2 max(1, round(n_d_s/10,0))
- вариант 3 iif(n_d_s=GetPrm('NDS_Prvlg', , , dtdt:=CurDateилиИнаяДата),'1','2')
где n_d_s может быть как ProdNDS(код),
так и просто R11->PRODNDS: в R11 может стоять и 18, и 20 – всё равно получится -2.
a_s() = alltrim(str()) с автоматическим отсечением дробной части при её равенстве 0
SQL-запросы:
- Было "…, SUM(round(RTH_SUM*(100+R11[R08].PRODNDS)/100,2)) …"
- Меняем на:
- Новые переменные
- Local ndsS:=GetPrm('NDS_STND',,,dtdt:=…), ndsP:=GetPrm('NDS_PRVLG',,,dtdt:=…)
- "…, SUM(round(RTH_SUM*(100+iif(R11[R08].PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+"))/100,2)) …"
- Расчёт на то, что 10 % - неизменная ставка.
- НЕ забываем: если в запросе просто обращение “…R11.PRODNDS”, после замены пишем эйлиас:
- "…iif(R11.PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+") as PRODNDS"
Колонки Сводных запросов (R239):
- «Реквизит» R11[R08].PRODNDS
- вариант 1
- На уровне вызова запроса (R174 или в R266) определить как Global ndsS, ndsP.
- Если там же запрос периода, сразу присвоить значения этим ndsS/P.
- Иначе в «Условии отбора» R238, где уже известен период ArrMY, присвоить
- ndsS/P:=GetPrm('NDS_...', , , dtdt:= SToD(atr(ArrMY[1,1])))
- «Выражение преобразования» {|| “iif(R11.PRODNDS=”+a_s(ndsP)+”,”+a_s(ndsP)+”,”+a_s(ndsS)+”)” }
- вариант 2
- «Выражение преобразования» R11[R08].KOD
- «Выражение отображения» ProdNDS(val(Value), [‘R08’], , MYToDate(wCurMonth,wCurYear))