Текущее время: Вт, июл 22 2025, 01:42

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пт, апр 04 2014, 16:25 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 29 2013, 11:20
Сообщения: 25
Добрый день.
Необходим совет.
Ситуация следующая (постараюсь объяснить понятней):
ТН переводят, например, с 12-го числа в обособленное структурное подразделение. Мероприятие разбивающее расчет.
20-го числа расчет премии (причина внецикла 107).
25-го расчет аванса (причина 101).
В результатах расчета лежит:
по 107 причине апер на одну дату - с 20 по 20
по 101 причине апер с 01 по 25
Далее регулярный расчет.
Апер бьется на 2 - первый с 01 по 11, второй с 12 по 31
В первом апере импортируется результаты аванса - сотрудник в этом случае может уходить в долг...
Во втором апере импортируются результаты премии.

Нужно сделать так, чтобы межрасчеты импортировались не по дате начала апреа, а по дате межрасчета. Либо сделать так, чтобы даты начала и окончания межрасчетов формировались на один день - по аналогии 107 причиной (премия). Т.е. расчет шел на одну дату, но за период.))
Кстати, причина 103 расчет отпуска также лежит в результатах на одну дату.
Может кто сталкивался и знает как можно решить такую задачу.
Вот результаты расчета:
Изображение


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Привет! Недавно решал такую или очень похожую проблему, делал описание, лови:

Техническое описание формирование ошибки при переводе.
01.02.2014 – 05.02.2014 сотрудник работал в РП 5200 ПП 5226
06.02.2014 – 28.02.2014 сотрудник работал в РП 5200 ПП 5217

1. Расчет аванса за период 01.02.2014 – 12.02.2014, при этом:
1.1. Не формируется два частичных периода как в регулярном расчете!
1.2. Из-за чего (п. 1.1.) вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется две записи:
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226
06.02.2014 – 12.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

2. Расчет премии за период 18.02.2014 – 18.02.2014, при этом :
2.1. вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется одна запись:
18.02.2014 – 18.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

3. Регулярный расчет
3.1. Формируется два частичных периода:
Первый 01.02.2014 – 05.02.2014
В RT формируется /320, на котором сохраняется НДФЛ удержанный с начислений за период
01.02.2014 – 05.02.2014. Ошибка! Также в RT передавался ВО p/32 из первого межрасчета (аванс).
В схеме YUO3 (в стандарте RUO3), результат расчета аванса передается функцией LPBEG c параметром RCOC - Off-Cycle (Russia) это происходило по следующим причинам:
1. если BONDT внутри частичного периода
ИЛИ
2. дата начала «для периода» (FPBEG) межрасчета совпадает с датой начала для периода частичного периода.
При этом в WPBP формируется одна запись
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226

Второй 06.02.2014 – 28.02.2014

При этом в WPBP формируется одна запись
01.06.2014 – 28.02.2014 с присвоением к РП 5200 ПП 5217

Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Привет! Недавно решал такую или очень похожую проблему, делал описание, лови:

Техническое описание формирование ошибки при переводе.
01.02.2014 – 05.02.2014 сотрудник работал в РП 5200 ПП 5226
06.02.2014 – 28.02.2014 сотрудник работал в РП 5200 ПП 5217

1. Расчет аванса за период 01.02.2014 – 12.02.2014, при этом:
1.1. Не формируется два частичных периода как в регулярном расчете!
1.2. Из-за чего (п. 1.1.) вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется две записи:
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226
06.02.2014 – 12.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

2. Расчет премии за период 18.02.2014 – 18.02.2014, при этом :
2.1. вся сумма НДФЛ сохраняется в RT на одном ВО p/32, у которого APZNR пустой.
При этом в WPBP формируется одна запись:
18.02.2014 – 18.02.2014 с присвоением к РП 5200 ПП 5217
При формировании PPOIX (транзакция PC00_M99_CIPE), в поле WPBPREF записывается значение 02 – это значение сплита WPBP- APZNR. Берется на дату «Дата платежа» - внециклический расчет (поле BONDT).

3. Регулярный расчет
3.1. Формируется два частичных периода:
Первый 01.02.2014 – 05.02.2014
В RT формируется /320, на котором сохраняется НДФЛ удержанный с начислений за период
01.02.2014 – 05.02.2014. Ошибка! Также в RT передавался ВО p/32 из первого межрасчета (аванс).
В схеме YUO3 (в стандарте RUO3), результат расчета аванса передается функцией LPBEG c параметром RCOC - Off-Cycle (Russia) это происходило по следующим причинам:
1. если BONDT внутри частичного периода
ИЛИ
2. дата начала «для периода» (FPBEG) межрасчета совпадает с датой начала для периода частичного периода.
При этом в WPBP формируется одна запись
01.02.2014 – 05.02.2014 с присвоением к РП 5200 ПП 5226

Второй 06.02.2014 – 28.02.2014

При этом в WPBP формируется одна запись
01.06.2014 – 28.02.2014 с присвоением к РП 5200 ПП 5217

Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 10:58 
Ассистент
Ассистент

Зарегистрирован:
Пн, июл 29 2013, 11:20
Сообщения: 25
BVM177 написал(а):
Для исправления ошибки – создали клиентский параметр ZCOC для . Который не выполняет второе условие! Теперь первый межрасчет попадает во второй частичный период, т.к «Дата платежа» попадает во второй частичный период.


Добрый день. Спасибо.
А можно подробней о параметре? Имеется ввиду причина расчета?
И как понять - Который не выполняет второе условие??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Пн, апр 07 2014, 11:45 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, июн 21 2006, 16:16
Сообщения: 351
Имеется ввиду – создали клиентский параметр ZCOC для функции FPBEG, который не проверяет второе условие.
Функция FPBEG работает в паре с функцией IMPRT и имено она в этой связки, а не импорт, определяет, что читаем из кластера.
Ниже код параметра .

FORM fulpbeg_natio.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$:(1) FORM FULPBEG_NATIO, Начало A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZEI_HRUCALC0_FULPBEG. "active version
INCLUDE ZEX_FULPBEG_NATIO_BEG.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*

CASE as-parm2.
*---------------------------------------------------------------------*
" bitte auf die Sortierung der einzelnen Routinen achten!!! "
" entsprechend AS-PARM2 aufsteigend sortieren "
" ausserdem ist auf die Laenge des Parameters AS-PARM2 zu achten!!!! "
*---------------------------------------------------------------------*
* when 'EVP'.
WHEN 'RCOC'. "Loop over all Off-Cycle results of period
perform lpbeg_evp_oc.
WHEN 'RU '.
PERFORM lpbeg_evp.
WHEN OTHERS.
* write: / text-r71, as-funco, as-parm2. "XAIALRK000847
* perform ablehnung. "XAIALRK000847
PERFORM log_func_err IN PROGRAM h99plog0 TABLES error_ptext
USING as-funco as-parm2. "XAIALRK000847
PERFORM errors TABLES error_ptext. "XAIALRK000847
ENDCASE.
ENDFORM. "FULPBEG_NATIO


Инклуд ZEX_FULPBEG_NATIO_BEG:

CASE as-parm2.
WHEN 'ZCOC'. "Loop over all Off-Cycle results of period
* Пример:
* 05.02.2014 - перевод между подразделами.
* Межрасчёт 1 (аванс): для-период c 01.02.2014 по 12.02.2014, bondt 12.02.2014.
* Межрасчёт 2 (перемия): для период с 18.02.2014 по 18.02.2014, bondt 18.02.2014.
* При регулярном расчёте RGDIR разбивается на 2 сплита:
* Сплит 1: для-период с 01.02.2014 по 05.02.2014.
* Сплит 2: для-период с 06.02.2014 по 28.02.2014.
* При этом LPBEG с параметром RCOC к сплиту 1 относит межрасчёт 1 и
* к сплиту 2 - межрасчёт 2.
* Параметр ZCOC относит межрасчёты 1 и 2 к сплиту 2 (проверяется только попадение
* bondt в для-период сплита).
perform zlpbeg_evp_oc.
EXIT.
ENDCASE.


Далее делаем z-копии стандартных подпрограмм.
Подпрограмма zlpbeg_evp_oc:

FORM zlpbeg_evp_oc.

DATA: BEGIN OF loop_rgdir OCCURS 2.
INCLUDE STRUCTURE pc261.
DATA: END OF loop_rgdir.
REFRESH aloop_rgdir.

PERFORM zget_evp_oc_results TABLES rgdir
loop_rgdir
USING aper.
LOOP AT loop_rgdir.
aloop_rgdir-seqno = loop_rgdir-seqnr.
APPEND aloop_rgdir.
ENDLOOP.
DESCRIBE TABLE aloop_rgdir LINES pack.
IF pack NE 0.
as-skip = 1.
sw_aloop_rc = true.
CLEAR aloop.
aloop-curnr = 1.
* aloop-param2 = as-parm2.
aloop-param2 = 'RC'.
aloop-sw_continue = false.
APPEND aloop.
ADD 1 TO aloop_index.
as-skip = 1. "error in schema generation
ELSE.
DATA wa_as LIKE as.
READ TABLE as INDEX next_as_entry INTO wa_as .
as-skip = wa_as-skip.
sw_aloop_rc = false.
flag_aloop_processed = false.
ENDIF.

ENDFORM.


В подпрограмме zget_evp_oc_results для регулярного расчёта оставляем проверку
только по bondt:

FORM zget_evp_oc_results TABLES it_in STRUCTURE pc261
et_out STRUCTURE pc261
USING ls_aper STRUCTURE aper.

data: lv_begda type d,
lv_endda type d,
lt_payty type table of PAYTY_CD WITH HEADER LINE.
field-SYMBOLS: <ls_rgdir> like rgdir,
<ls_p2001> TYPE p2001.

* Initialize the ET_OUT table.
REFRESH et_out.

if ls_aper-payty eq cd_c-regular
or ls_aper-payty eq cd_c-correct
or ls_aper-occat eq cd_occat-advance_procent "advance for current period
or ls_aper-occat eq cd_occat-advance_on_date.

lv_begda = ls_aper-begda.
lv_endda = ls_aper-endda.
if ls_aper-payty eq cd_c-correct.
lv_begda+6(2) = '01'.
endif.

*
CALL FUNCTION 'CD_READ_DATE_RANGE_ACTUAL_NV'
EXPORTING
begda = lv_begda
endda = lv_endda
TABLES
rgdir_in = it_in
rgdir_out = out_rgdir.

case ls_aper-occat.
when cd_occat-advance_on_corr. " Advance on Correction Run
CLEAR lt_payty.
lt_payty-sign = 'I'.
lt_payty-option = 'EQ'.
lt_payty-low = cd_c-correct.
APPEND lt_payty.
CALL FUNCTION 'CD_SELECT_PAYTY_RANGE'
TABLES
IN_RGDIR = out_rgdir
OUT_RGDIR = out_rgdir_2
PAYTY_TAB = lt_payty.
.
CLEAR OUT_RGDIR.
REFRESH OUT_RGDIR.
LOOP AT out_rgdir_2 WHERE occat eq ls_aper-occat.
APPEND out_rgdir_2 to OUT_RGDIR.
ENDLOOP.
when cd_occat-advance_procent " Monthly Advance Earned on Date
or cd_occat-advance_on_date. " Monthly Advance % of Monthly Salary
CLEAR lt_payty.
lt_payty-sign = 'I'.
lt_payty-option = 'EQ'.
lt_payty-low = cd_c-bonus.
APPEND lt_payty.
CALL FUNCTION 'CD_SELECT_PAYTY_RANGE'
TABLES
IN_RGDIR = out_rgdir
OUT_RGDIR = out_rgdir_2
PAYTY_TAB = lt_payty.
.

CLEAR OUT_RGDIR.
REFRESH OUT_RGDIR.
LOOP AT out_rgdir_2 WHERE payty eq cd_c-regular
or ( payty eq cd_c-bonus
and ( occat eq cd_occat-advance_procent
or occat eq cd_occat-advance_on_date
or occat eq cd_occat-advance_simple ) ).
OUT_RGDIR = out_rgdir_2.
APPEND OUT_RGDIR.
ENDLOOP.
when OTHERS.
if ls_aper-payty = cd_c-regular.
* if ls_aper-begda = ls_aper-pbegd.
* delete out_rgdir where payty <> cd_c-regular
* and ( fpbeg <> ls_aper-pbegd
* and bondt not BETWEEN ls_aper-begda and ls_aper-endda ).
* else.
* delete out_rgdir where payty <> cd_c-regular
* and ( fpbeg = ls_aper-pbegd
* or bondt not BETWEEN ls_aper-begda and ls_aper-endda ).
* endif.
delete out_rgdir where payty <> cd_c-regular and
bondt not BETWEEN ls_aper-begda and ls_aper-endda.
endif.
ENDCASE.

* Fullen der PAYTY_Range-Tabelle
loop at out_rgdir ASSIGNING <ls_rgdir>
where payty eq cd_c-bonus
or payty eq cd_c-correct.
if ls_aper-payty eq cd_c-regular
or <ls_rgdir>-bondt lt ls_aper-bondt
or ( <ls_rgdir>-bondt eq ls_aper-bondt
and <ls_rgdir>-seqnr lt ls_aper-seqnr ).
et_out = <ls_rgdir>.
APPEND et_out.
endif.
endloop.
*
SORT et_out BY seqnr.
endif.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Функция IMPRT. Межрасчеты.
СообщениеДобавлено: Сб, апр 19 2014, 10:24 
Специалист
Специалист

Зарегистрирован:
Чт, окт 04 2012, 15:45
Сообщения: 135
Добрый день.

Как я понимаю проблема в том что в 1-м апере сотрудник уходит в долг (хуже будет если он уйдет в долг во 2-м апере)?

Ufukcan написал(а):
В первом апере импортируется результаты аванса - сотрудник в этом случае может уходить в долг...
Во втором апере импортируются результаты премии.


Как вариант можно для таких случаев (когда расчет разбит на несколько аперов) всегда формировать /559 в последнем апере, перенося все задолженности и выплаты в последний период (т.к. сам работник получает зарплату целиком за месяц в целом по компании, а не по каждому разделу персонала отдельно).
Это можно будет сделать просто в правилах расчета зарплаты (подпелив правило RU5C), и тогда к выплате будет сформирована всегда корректная сумма.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB