Помогите многодетному ветерану Куликовской битвы!



Posted by Анатолий Анимица on February 11, 1999 at 21:25:34:

Помогите решить задачку. Прошу как аудитор аудиторов.
Мой пращур, ветеран Куликовской битвы (далее КБ), потерял в ней
ногу и стал инвлидом 1 группы (3 ММОТ без ущемления в правах при
СГД>20000 руб.). Это не помешало ему народить троих моих прадядек,
и все живы, дай им Бог здоровья, и по сей день. Прадядьки как
сидели у пращура на иждивении (3 ММОТ), так и сидят. Справка есть.
Пращур хочет сдавать декларацию - неймется ему, вот я и написал
программку, которую прошу проверить.
Вопрос: я правильно написал, что lg=1(его основная льгота)+3(на
иждивенцев)+3(за КБ с потерей ноги)-1(нечего ласкаве теля из себя
изображать с двома мамками).
А после СГД 20000 останется только 3 (за инвалидность на полях КБ)

Если лень читать глазами, клип ее - zlgn - мышкой, copy ee в
clipboard, paste ее в zlgn.rpt - и хай ее читает ultrah.

Ждемс критики и пожеланий.

Благодарю WWWBOARD и лично А.Г.Водяника за предоставленную возможность
вешать простыни в 100++ строк на board'e.

Этим может пользоваться каждый желающий, при условии сохранения
целостности строки 2 * (с)ФБПА99 и отметки ВСЕХ измененных строк
подстрокой 'а это мое, а не ФБПА'. As is. Никаких гарантий. Как
учил Вышинский, бремя доказательства правильности - на читателе
алгоритма.

Я уже готов к открытию проекта OSA-2000 (Open Staff Animitsa) -
сообщества Open System=Open Source=Open Sky - короче, тусовки
открытой разработки приложений ФБП на принципах Linux или Mozilla
(не путать с Gozilla). Сайты - мой на http://www.compnet.ru/aaahd
(подождите чуть-чуть) и там ссылка на халявы:
Geocities и ICQ.

Приглашаю высказываться.


-------------------------------zlgn-------------------------------
* удержание ПН ПФ у всех
* (c) ФБПА99
* программа рассчитывает и начисляет льготы, ПН и ПФ автоматически
* 70..1 нач.з/плата повр. * 70..10 начисл.з/п.дог.подр.
* далее можно детализировать 70..11...
* 70..2 начисл.премия * 70..3 начисл.больничный
* 70..4 начисл.больн.(декр.) * 70..5 начисл.отпуск
* 70..6 нач.комп.неисп.отп. * 70..7 нач.матпом.<=12МРОТ
* 70..8 нач.подарки<=12МРОТ * 70..9 прочие начисления
* 70..91 выходное пособие по закону
* 70..991 возмещение излишне удержанного ПН
* 70..992 возмещение излишне удержанного ПФ
* 70=1 удерж. в ПФ * 70=2 удерж. ПН
* 70=3 удерж. задолженности * 70=4 удерж. из з/п проч.
* 70_1 выплата з/п прош.м-ц * 70_2 выплата аванс тек.мц
* 70_3 выплаты по з/п межрасчетные прочие
* Если у человека есть доп.льгота, то в основную льготу ему записывается
* только количество льгот на иждивенцев Вычет из дохода - сумма этих льгот (*)
* не забываем, что проводка строки Alt177 выполнена уже к следующей строке
* операции начисления декретного больничного, матпомощи и подарков <=12ММОТ
* сопровождаются начислением и сторнированием льготы на суммы начисления
* СГД(sgd),ОГД(ogd),УПН(upn) - экстрапараметры входящий совокупный годовой доход,
* облагаемый годовой доход и удержанный ПН. Прием на работу. Числа из справки.
$=0;dt=[n1 $D];if dt='x' call cikl
else call pnpf
endif
stop
:cikl
# 70
dt=[n1 #];call pnpf
#
return
:pnpf подпрограмма обслужит *dt как полная программа
du=0
sg=[get *dt,'sgd'];og=[get *dt,'ogd'];un=[get *dt,'upn'] СГД ОГД УПН входящие
n1=[mp 70..1,*dt]+[mp 70..10,*dt]+[mp 70..2,*dt]+[mp 70..5,*dt]
n1=n1+[mp 70..7,*dt]+[mp 70..8,*dt]+[mp 70..9,*dt] база месячная для ПФ
n2=[mp 70..1,*dt]+[mp 70..10,*dt]+[mp 70..2,*dt]+[mp 70..5,*dt]
n2=n2+[mp 70..7,*dt]+[mp 70..8,*dt]+[mp 70..9,*dt]+[mp 70..3,*dt]
n2=n2+[mp 70..4,*dt]+[mp 70..6,*dt]+[mp 70..91,*dt] база месячная для ПН
n3=[ap 70..1,*dt]+[ap 70..10,*dt]+[ap 70..2,*dt]+[ap 70..5,*dt]
n3=n3+[ap 70..7,*dt]+[ap 70..8,*dt]+[ap 70..9,*dt]+[ap 70..3,*dt]
n3=n3+[ap 70..4,*dt]+[ap 70..6,*dt]+[ap 70..91,*dt] совокупный годовой доход
gl=[get *dt,'lg'] количество льгот основных
gd=[get *dt,'lgd'] количество льгот дополнительных (инвалиды, афган и пр.)
lp=[get *dt,'lgp'] остаток переходящей суммы льгот с прошлого мес.
ll=[get 70~min,'mmot'] размер льготы ММОТ
if n3<=5000 gl=gl*2 удваиваем основную льготу (83.49 на 01.01.99.)
elseif n3>=20000 gl=0 больше 20000 - льготы не будет
else
endif
gl=gl+gd особая льгота суммируется с остатком льгот на иждивенцев
* (х2,х1 или х0 при >20000 руб СГД), особые льготы сохраняются
* и при СГД > 20000 руб. gl - итоговая льгота
lg=gl*ll сумма льгот к вычету (6*83.49 например)
if ~n2 если в месяце нет начисления ни копейки
lg=0 льгота не предоставляется
endif есликонец
lg=lg+lp сумма льгот с учетом переходящего остатка льготы
if (lg>n2)&(n2>0.001) если льгот больше чем доход (>0.1 коп.)
lp=lg-n2 оставим на потом то, что нельзя учесть
lg=n2 а льготу установим в размере дохода
[set *dt,'lgp',lp] и запомним переходящий остаток в параметре ldp
else
[set *dt,'lgp',0] сбросить переходящий остаток льготы
endif
_70~lg *dt (lg) проводка начисляет и тут же сторнирует льготу,
_70~lg- *dt (-lg) тогда накопленная сумма льгот - оборот!
pf=[tr n1*[get 69-32,'st1']+0.5]/100 пенсионный фонд 1% с базы по n1 до 1 коп.
mf=[mp *dt,70=1] ПФ, уже удержанный ранее в этом месяце
if (pf>=mf) если недоначислен
_*dt 70=1 (pf-mf) проводка ПФ через консолидирующий транзитный
_70=1 69-32 (pf-mf) субсчет счета 70Т[Д] (транзиты зарплаты)
endif
* перейдем к подоходному налогу
m=[ap 70~lg,*dt]+sg-og всего льгот с начала года с учетом СГД-ОГД
*****************************************************************************
af=[ap *dt,70=1] удержания в ПФ для уменьшения базы ПН
if m=0 af=0 а совместителям не уменьшаем - у них число льгот=0
endif
up=[ap *dt,70=2]-[ap 70=2,*dt]+un удеpжанный с начала года ПН с УПН
od=n3-m-af+sg годовой облагаемый доход к удержанию ПН c СГД
* расчет суммы ПН, переменная t - на память о файле taxr.rpt Хакерс Дизайн
t=0 сумма налога
if od in 0..20000 пpовеpки на пpинадлежность интеpвалу.
t=0.12*od весь копирайт до endif включительно
elseif od in 20000.00001..40000 Хакерс Дизайн.
t=2400+0.15*(od-20000)
elseif od in 40000.00001..60000
t=5400+0.2*(od-40000)
elseif od in 60000.00001..80000
t=9400+0.25*(od-60000)
elseif od in 80000.00001..100000
t=14400+0.3*(od-80000)
elseif od>= 100000.00001
t=20400+0.35*(od-100000)
else
endif
dq=t-up начисленный в этой операции ПН точный
dr=dq+un то же без УПН
if dr>0.001
du=[tr (dr+0.5)] округлим положительный до рубля
elseif dr<=-0.001
du=[tr (dr-0.5)] и отрицательный до рубля
endif
if du>0.001 есть что взять - берем
_*dt 70=2 (du) проводка ПН
_70=2 68-02 (du) через транзитный счет
elseif un=0 нечего брать
return и возмещать не из чего, выходим
else
endif
***************************************************************************
* возмещение ПН в случае излишка удержанного
_ *dt ПНвход. (un) покажем проводкой входящий ПН к возмещению
_ *dt ПНвход. (-un)
* при наличии ПН к возмещению - делаем
if (un>0.001)&(un>=du) если к возмещению не меньше, чем начислен
_ *dt ПНвозмещ. (du)
_ *dt ПНвозмещ. (-du)
_*dt 70=2 (-du) проводка возмещения ПН
_70=2 68-02 (-du) через транзитный счет (сторно)
elseif (un>0.001)&(un_ *dt ПНвозмещ. (un)
_ *dt ПНвозмещ. (-un)
_*dt 70=2 (-un) проводка возмещения ПН
_70=2 68-02 (-un) через транзитный счет (сторно)
[plus *dt,'upn',-un] уменьшим ПН к возмещению на сумму возмещения
return
else
endif
os=[get *dt,'upn']
if os>=0.001
_ *dt ПНост. (os) остаток ПН к возмещению после коррекции
_ *dt ПНост. (-os)
else
endif
return

Спасибо за внимание, дальше там ничего нет


Пpишедшие ответы: