18.06.2018 (М) ПОДГОТОВКА К ХРОНОЛОГИЧЕСКОЙ ЗАМЕНЕ % НДС

Материал из Фабиус wiki
Версия от 09:02, 20 июня 2018; Maria (обсуждение | вклад) (Новая страница: «<font size=4> В OnAfterUpdateCondig() уже предусмотрено автозаполнение хронологии NDS_STND/PRVLG при очередно…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

В OnAfterUpdateCondig() уже предусмотрено автозаполнение хронологии NDS_STND/PRVLG при очередном обновлении.
При правильно заполненной хронологии параметров в R11 (R08,R197) может стоять и 18%, и 20%.
Доработанная ф-я ProdNDS() вернёт 20%, если 2019 год и 18%, если 2018.


Если вызов из R165, R186, R220, … - где определена CurDate: SeekRef(спрк, код, ‘PRODNDS’,…) --> ProdNDS(код [,’R11’]) или ProdNDS(код, спрк) (спрк = R08, R11, R197) ProdNDS(код) без изменений ProdNDS(код, спрк) без изменений ProdNDS(код, [спрк], умолч) --> ProdNDS(код, [спрк], GetPrm(‘NDS_...’, , , dtdt:=CurDate))

                        (dtdt необязательно определять)

Если вызов из запросов, п/ф, … - где НЕ определена CurDate: ProdNDS(код, [спрк], [умолч], некаяДата) a_s() = alltrim(str()) с автоматическим отсечением дробной части при её равенстве 0 Получение из ставки НДС цифирьки-субсчёта -1 или -2: min(2, round(n_d_s/10,0)) ИЛИ max(1, round(n_d_s/10,0)) ИЛИ iif(n_d_s=GetPrm(‘NDS_Prvlg’, , , dtdt:=CurDateилиИнаяДата),'1','2') где n_d_s может быть как ProdNDS(код), так и просто R11->PRODNDS: в R11 может стоять и 18, и 20 – всё равно получится -2 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))