Здравствуйте, столкнулся со следующей проблемой:
Если работника сначала расчитали как обычного работника (не инвалида), а потом в следующем месяце перерасчитали как инвалида, то в 4-ФСС не правильно отражается база в строке 5 таблицы 3 "сумма выплат и иных вознаграждений физическим лицам, являющимся инвалидами I, II, III группы".
Например в январе работника расчитали как не инвалида: база - 10600,00, взносы 10600,00*2,9%=307,40,
в феврале тоже считаем как не инвалида: база - 14310,00, взносы 14310,00*2,9%=414,99
В марте работник приносит справку, что с января инвалид и делается перерасчет, получается:
база: +10600,00 (как по инвалиду за январь, налоговая схема INV) + 14310,00 (как по инвалиду за февраль, налоговая схема INV) + 14310,00 (как по инвалиду за март, налоговая схема INV)
- 10600,00 (как не по инвалиду за январь) + 14310,00 (как не по инвалиду за февраль) = 14310,00
взносы 14310,00*2,4%+10600*2,4%+14310,00*2,4 - 10600,00*2,9% - 14310,00*2,9% = 218,89.
При формировании отчетности в 4-ФСС стока 5 таблицы 3, выглядит следующим образом

а должно быть январь - 0, февраль - 0, март - 39220,00.
Проблема в том что для выбора значений в данное поле в настройках DAQ.

Используется функция HR_RU_DAQ_4FSS_RUTAX_CONDI и условие INV, условие анализирует поле MDTAX (налоговая схема) таблицы TAX в кластере.
Code:
ASSIGN <ls_value>-data TO <ls_dat> CASTING.
if sy-subrc = 0 and <ls_exkey_cntr1>-len > 0.
assign <ls_dat>-exkey+<ls_exkey_cntr1>-shift(<ls_exkey_cntr1>-len)
to <lv_field>.
* check WT Tax Scheme with period Tax Scheme
IF <ls_condi>-field EQ 'MDTAX' AND <lv_field> IS ASSIGNED.
LOOP AT lo_taxrun->mt_taxschema ASSIGNING <mt_taxschema>
WHERE begda LE <ls_value>-endda
AND endda GE <ls_value>-begda.
IF <mt_taxschema>-mdtax IS NOT INITIAL AND <mt_taxschema>-mdtax NE <lv_field>.
UNASSIGN <lv_field>.
ASSIGN <mt_taxschema>-mdtax TO <lv_field>.
ENDIF.
ENDLOOP.
ENDIF.
endif.
Но не понятно следующее условие
IF <ls_condi>-field EQ 'MDTAX' AND <lv_field> IS ASSIGNED., получается что анализируется налоговая схема из lo_taxrun->mt_taxschema, а в таблице mt_taxschema храниться значение последний налоговой схемы (за - период), и суммы из базы за январь и февраль попадают в строку 5,
хотя вот здесь раньше
Code:
assign <ls_dat>-exkey+<ls_exkey_cntr1>-shift(<ls_exkey_cntr1>-len)
to <lv_field>.
присваивается правильная налоговая схема (обычная, не инвалид).
Но непонятно почему потом она заменяется.
Code:
IF <ls_condi>-field EQ 'MDTAX' AND <lv_field> IS ASSIGNED.
LOOP AT lo_taxrun->mt_taxschema ASSIGNING <mt_taxschema>
WHERE begda LE <ls_value>-endda
AND endda GE <ls_value>-begda.
IF <mt_taxschema>-mdtax IS NOT INITIAL AND <mt_taxschema>-mdtax NE <lv_field>.
UNASSIGN <lv_field>.
ASSIGN <mt_taxschema>-mdtax TO <lv_field>.
ENDIF.
ENDLOOP.
ENDIF.