Просмотр кода
Идентификатор: 13d6d579 Описание: Код загружен: 8 ноября 2014, 15:35 (Валя)
unit u_razc1; { вазовские расчетки по годам } interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus; type TForm1 = class(TForm) Panel2: TPanel; Label2: TLabel; Panel1: TPanel; mont: TEdit; year: TEdit; Image5: TImage; Image4: TImage; Image3: TImage; Image2: TImage; Image1: TImage; Image6: TImage; ComboBox1: TComboBox; Button6: TButton; MainMenu1: TMainMenu; File1: TMenuItem; Save1: TMenuItem; procedure FormCreate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Save1Click(Sender: TObject); private { Private declarations } public { Public declarations } // procedure ck(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); end; type iarray=array of integer; type chassum=packed record chas: currency; sum: currency; end; type kchassum=packed record kod: word; chas: currency; sum: currency; end; type ksum=packed record kod: word; sum: currency; end; type list=packed record ///расчетка трещетка r1: longword;//Расчетный лист r2: byte;//Месяц r3: word;//Год r4: longword;//Постоянный номер r5: string[250];//Фамилия, имя, отчество r6: word;//Профессия, должность r7: word;//Код налога r8: word;//Р-д r9: currency;//Тарифная ставка, оклад t1: longword;//Табельный номер t2: currency;//Премия рабочим t3: currency;//Премия РСиС u1: chassum;//По тарифной ставке или окладу u2: chassum;//Премия за выполнение норм. (производ.) задания u3: chassum;//Доплата за работу в вечернюю смену u4: chassum;//Доплата за работу в ночную смену u5: currency;//Надбавка за выпол. инд. показателей u6: chassum;//Доплата за выходные и праздники u7: chassum;//Доплата за срерхурочные u8: chassum;//Оплата за отпуск u9: chassum;//Оплата по больничным листам u10: currency;//Доплата за условия труда n1: array[0..15]of kchassum;//Начисления Код Часы Сумма (16) a1: currency;//Аванс a2: currency;//Подоход. налог a3: currency;//Профсоюзн. взносы a4: currency;//Долг прошлого месяца a5: array[0..11]of ksum;//Удержания Код Сумма (16) //Средняя заработная плата a6: currency;//За последние 2 календарных года для оплаты больничных (дневная) a7: currency;//За последние 12 месяцев для оплаты по среднему (часовая) a8: currency;//За последние 12 месяцев для оплаты отпуска (дневная) a9: currency;//Индив. фонд времени z1: currency;//Начислено z2: currency;//Причитается z3: currency;//Долг за работающим z4: currency;//Удержано z5: currency;//Сумма к выплате //Перечислено в банк z6: word;//Код z7: currency;//Сумма end; type bob=array[1..12]of list; var Form1: TForm1; Sum: Extended; cro: currency; SumStr: string; bio: bob; f: file of bob; vo: list; pn: array[1..12]of tpanel; sa: array[1..12]of string[12]=('Январь','Февраль','Март', 'Апрель','Май','Июнь', 'Июль','Август','Сентябрь', 'Октябрь','Ноябрь','Декабрь'); dnov: array[0..4]of integer=(0,10,13,13,13); dnog: array[0..7]of integer=(0,160,50,70,70,70,30,70); dnogi: iarray; dnovi: iarray; dnoe: array[0..10]of tedit; dnol: array[0..12]of tlabel; udvi: iarray; udgi: iarray; ude: array[0..28]of tedit; udl: array[0..11]of tlabel; //// na2v: iarray; na2g: iarray; na2e: array[0..12*4]of tedit; na2l: array[0..11]of tlabel; //// na1v: iarray; na1g: iarray; na1e: array[0..20]of tedit; na1l: array[0..20]of tlabel; //// hatv: iarray; hatg: iarray; hate: array[0..6]of tedit; hatl: array[0..6]of tlabel; ///// cur: integer=1; // курсор namy: string='1969.vaz'; boob: array[0..200]of bob; // на 20 лет sxxx: single; // коефициент оси у cury: integer; // курсор годов implementation {$R *.DFM} function butt(x: array of integer): iarray; var i: integer; begin setlength(result,high(x)+1); for i:=0 to high(x) do result[i]:=x[i]; end; function tooi(x: integer; y: iarray): integer;// универсальное говно призванное // уничтожить буржуазию как класс var i: integer; begin result:=0; for i:=0 to high(y)do if x>i then inc(result,y[i]); end; function getsxxx: single; var i,j,k: integer; b: bob; mx,dx,c,v: currency; function get479(x: integer): currency; // аванс в банк var i: integer; begin result:=0; for i:=0 to high(bio[x].a5) do if bio[x].a5[i].kod=479 then begin result:=bio[x].a5[i].sum; exit; end; end; begin mx:=0;//-maxint; for j:=0 to high(boob) do begin b:=boob[j]; for i:=1 to 12 do begin c:=get479(i); v:=(b[i].z5 +b[i].a1 +b[i].z7 +c); if (1969+j)>1997 then v:=v*1000; if v>mx then mx:=v; end; end; sxxx:=mx/70; end; procedure vw2; var i,j,k,x,y,z: integer; sx,sy: single; mx,mi,dx,c: currency; function get479(x: integer): currency; // аванс в банк var i: integer; begin result:=0; for i:=0 to high(bio[x].a5) do begin if bio[x].a5[i].kod=479 then begin result:=bio[x].a5[i].sum; exit; end; end; end; begin getsxxx; mx:=0;//-maxint; mi:=maxint; with form1 do with image6.canvas do begin brush.color:=clred; fillrect(rect(0,0,image6.Width,image6.Height)); sx:=sxxx; if (1969+ComboBox1.ItemIndex)>1997 then sx:=sx/1000; if sx<=0 then exit; pen.color:=cllime; pen.width:=3; brush.color:=clfuchsia; font.color:=clwhite; k:=5; for i:=1 to 12 do begin brush.style:=bssolid; pen.color:=clyellow;//claqua;// pen.width:=10; c:=get479(i); x:=-10+i*49; y:=100-round( (bio[i].z5 +bio[i].a1 +bio[i].z7 +c) / sx ); z:=100-round( (bio[i].z5 +bio[i].z7) / sx ); moveto(x,100); lineto(x,y); pen.color:=clblue;//cllime;// moveto(x,z); lineto(x,y); pen.width:=3; pen.color:=clwhite; ellipse(x-k,y-k,x+k,y+k); if (bio[i].u1.sum>0)then begin // хитрый способ обойтись без бсклер, который // потом хрен отключишь brush.style:=bsBDiagonal;//bsclear; // textout(x-10,110,format('%.f%%',[(100* bio[i].t2)/bio[i].u1.sum])); end; brush.style:=bssolid; // end; end; end; function curr2str(x: currency): string; begin result:=''; if x=0 then exit; result:=format('%f',[x]); end; function word2str(x: word): string; begin result:=''; if x=0 then exit; result:=format('%.3d',[x]); end; function kod2str(x: word): string; begin result:=''; if x=0 then exit; result:=format('%.3d',[x]); end; function rd2str(x: word): string; begin result:=''; if x=0 then exit; result:=format('%d',[x]); // .3 end; function str2word(x: string): word; begin result:=0; if x='' then exit; result:=strtoint(x); end; function chas2str(x: currency): string; begin result:=''; if x=0 then exit; result:=format('%.1f',[x]); end; function kodvaz(x: word): string; begin result:=' '; if x=0 then exit; case x of 001: result:='Оплата за проработанное время по среднему заработку'; 003: result:='Доплата за сданную продукцию'; 004: result:='Оплата по среднему беременным женщинам на легком труде'; 005: result:='Доплата за напряженность труда'; 006: result:='Оплата по тарифной ставке (окладу)'; 007: result:='Надбавка за выполнение индивидуальных показателей'; 008: result:='Доплата за условия труда'; 009: result:='Премия за выполнение нормированного (производственного) задания'; 010: result:='Премия'; 011: result:='Премия из фонда мастера'; 012: result:='Доплата за совмещения профессий'; 013: result:='Доплата за работу в ночную смену'; 015: result:='Доплата за мойку'; 016: result:='Надбавка за выполнение индивидуальных показателей по руководству бригадой'; 017: result:='Доплата за временное заместительство'; 018: result:='Надбавка за классность'; 019: result:='Доплата за ненормированный рабочий день'; 022: result:='Доплата за работу в вечернюю смену'; 023: result:='Доплата за перевыполнение нормирования задания'; 024: result:='Дополнительная оплата за работу в ОАО АВТОВАЗ'; 031: result:='Доплата за сокращенные на 1 час ночные смены'; 033: result:='Доплата за работу в сверхурочное время'; 034: result:='Доплата за работу в выходные и праздничные дни'; 036: result:='Персональная надбавка'; 046: result:='Премия за обучение молодых рабочих'; 048: result:='Доплата за руководство практикой студентов'; 049: result:='Доплата за теоретическое обучение'; 052: result:='Оплата труда изобретателей и изобретателей'; 053: result:='Единовременное вознаграждение за снижение технологической трудоемкости'; 058: result:='Вознаграждение по результатам работам за год'; 063: result:='Доплата за стаж работы на конвейере'; 065: result:='Премия РСиС за основные рез-ты хоз-ной деят-ти'; 066: result:='Премия за выполнение отдельных показателей хозяйственной деятельности'; 067: result:='Премия за повышение эффективности производства'; 068: result:='Премия за трудовую активность'; 069: result:='Премия за экономию всех видов ресурсов'; 070: result:='Премия за ускорение подготовки производства'; 079: result:='Прочие выплаты и премии по основной зарплате'; 110: result:='Пособие по временной нетрудоспособности за первые 2 дня'; 125: result:='Доплата до средней заработной платы'; 130: result:='Оплата простоя на рабочем месте по вине работодателя'; 131: result:='Оплата простоя на рабочем месте не по вине работодателя'; 132: result:='Оплата простоя по вине работодателя при отсутствии работника на рабочем месте'; 136: result:='Компенсация за неиспользованный отпуск'; 137: result:='Оплата часов гособязанностей'; 138: result:='Оплата очередного отпуска в счет текущего месяца'; 139: result:='Оплата очередного отпуска в счет будущего месяца'; 140: result:='Оплата времени прохождения медицинских осмотров'; 141: result:='Оплата по среднему служебных командировок'; 143: result:='Оплата льготных часов студентов и учащихся'; 145: result:='Оплата отпуска по учебе в счет текущего месяца'; 146: result:='Оплата отпуска по учебе в счет будущего месяца'; 147: result:='Оплата донорам'; 157: result:='Компенсационная выплата женщинам (матерям) по уходу за ребенком до 3-х лет'; 158: result:='Оплата дней отпуска рабочим сверх установленных законодательством в счет текущего месяца'; 159: result:='Оплата дней отпуска рабочим сверх установленных законодательством в счет будущего месяца'; 166: result:='Вознаграждение за нерабочие праздничные дни'; 167: result:='Вознаграждение за работу по непрерывному трехсменному графику'; 168: result:='Премия за работу станочником в ОАО АВТОВАЗ'; 169: result:='Вознаграждение за работу в выходные и праздничные дни по трехсменным графикам'; 179: result:='Прочие выплаты по дополнительной зарплате'; 180: result:='Доплата до бюджета прожиточного минимума'; 261: result:='Премия единовременного характера в связи с праздничными и юбилейными датами'; 293: result:='Премия непроизводственного характера'; 294: result:='Оплата нерабочих дней по семейным обстоятельствам'; 295: result:='Доп. пособие по уходу за ребенком до 3-х лет'; 296: result:='Оплата дополнительного дородового отпуска'; 298: result:='Прочие выплаты и премии из ФМП'; 360: result:='Пособие по временной нетрудоспособности в счет прошлого месяца'; 361: result:='Пособие по временной нетрудоспособности в счет текущего месяца'; 362: result:='Пособие по временной нетрудоспособности в счет будущего месяца'; 363: result:='Пособие по уходу за ребенком-инвалидом'; 365: result:='Премия за содействие изобретательству'; 367: result:='Единовременное пособие беременным женщинам'; 368: result:='Авторское вознаграждение, не подтвержденное свидетельством авторских изобретений'; 369: result:='Премия за содействие внедрению рацпредложений'; 370: result:='Премия по итогу соревнования по БРИЗ'; 372: result:='Пособие по уходу за ребенком до 1,5 лет'; 375: result:='Доплата за раздачу проездных билетов'; 376: result:='Депонированная заработная плата'; 378: result:='Зарплата за оказание платных услуг'; 384: result:='Сумма, начисл. за задержку выплаты зарплаты'; 386: result:='Внесено в кассу'; 388: result:='Материальная помощь по заявлению'; 389: result:='Пенсионный взнос'; 396: result:='Дивиденды и иные доходы от прироста капитала'; 397: result:='Прочие выплаты и премии, не облагаемые налогом'; 398: result:='Прочие выплаты и премии, облагаемые налогом'; 441: result:='Удержания за спецодежду'; 442: result:='Удержания за инструмент'; 443: result:='Удержания за материальный ущерб'; 445: result:='Удержания в пользу профтехучилища'; 446: result:='Удержания в пользу других организаций'; 448: result:='Квартирная плата по заявлению в УК №2'; 449: result:='Оплата за услуги телевидения'; 451: result:='Взносы независимых профсоюзов'; 458: result:='Выплаченное вознаграждение'; 463: result:='Погашение задолженности по договору с рассрочкой платежа'; 464: result:='Ссуда молодым семьям'; 465: result:='Перечисление в негосударственный пенсионный фонд'; 467: result:='Страховые взносы АО Самара-АСКО'; 468: result:='Страховые взносы ПК Социальный'; 469: result:='Страховые взносы ОАО АСТРО-ВОЛГА'; 470: result:='Страховые взносы СК ЭКСПЕРТ'; 475: result:='Налог с дивидендов'; 477: result:='Налог с доходов по ставке 35%'; 478: result:='Удержание за проживание в общежитии'; 479: result:='Плановый аванс, перечисленный в банк'; 480: result:='Налог с доходов по ставке 13%'; 481: result:='Отчисления в негосударственный пенсионный фонд'; 482: result:='Плановый аванс'; 483: result:='Разовые выплаты'; 484: result:='Перечисление заработной платы в банк'; 485: result:='Перечисление отпускных в банк'; 486: result:='Удержание за питание по талонам'; 487: result:='За брак деталей и полуфабрикатов'; 488: result:='Алименты'; 489: result:='Другие исполнительные листы'; 490: result:='Квартирная плата по заявлению в УЖКХ'; 491: result:='Квартирная плата по заявлению в УК №1'; 492: result:='Долг прошлого месяца'; 493: result:='Передано к выплате в другие цехи'; 494: result:='Разовые выплаты через банки'; 495: result:='Удержание за проезд общественным транспортом'; 496: result:='Подотчетные суммы'; 497: result:='Взносы профсоюза АСМ РФ'; 498: result:='Прочие удержания и зачеты'; 499: result:='Госстрах'; end; end; procedure vw; var i,j,k: integer; begin with bio[cur] do begin ///dno dnoe[0].text:=curr2str(a6); dnoe[1].text:=curr2str(a7); dnoe[2].text:=curr2str(a8); dnoe[3].text:=chas2str(a9); dnoe[4].text:=curr2str(z1); dnoe[5].text:=curr2str(z4); dnoe[6].text:=curr2str(z2); dnoe[7].text:=curr2str(z3); dnoe[8].text:=curr2str(z5); dnoe[9].text:=kod2str(z6); dnoe[10].text:=curr2str(z7); //// ud ude[0].text:=curr2str(a1); ude[1].text:=curr2str(a2); ude[2].text:=curr2str(a3); ude[3].text:=curr2str(a4); for i:=0 to 11 do begin ude[4+i*2].text:=kod2str(a5[i].kod); ude[4+i*2].ShowHint:=''<ude[4+i*2].text; ude[4+i*2].Hint:=kodvaz(a5[i].kod); /// описание кода ude[5+i*2].text:=curr2str(a5[i].sum); end; //// na2 for i:=0 to 15 do begin na2e[0+i*3].text:=kod2str(n1[i].kod); na2e[0+i*3].ShowHint:=''<na2e[0+i*3].text; na2e[0+i*3].Hint:=kodvaz(n1[i].kod); na2e[1+i*3].text:=chas2str(n1[i].chas); na2e[2+i*3].text:=curr2str(n1[i].sum); end; /// na1 na1e[16].text:=curr2str(u5); na1e[17].text:=curr2str(t2); na1e[18].text:=curr2str(u10); na1e[19].text:=curr2str(t3); na1e[0].text:=chas2str(u1.chas); na1e[1].text:=curr2str(u1.sum); na1e[2].text:=chas2str(u2.chas); na1e[3].text:=curr2str(u2.sum); na1e[4].text:=chas2str(u3.chas); na1e[5].text:=curr2str(u3.sum); na1e[6].text:=chas2str(u4.chas); na1e[7].text:=curr2str(u4.sum); na1e[8].text:=chas2str(u6.chas); na1e[9].text:=curr2str(u6.sum); na1e[10].text:=chas2str(u7.chas); na1e[11].text:=curr2str(u7.sum); na1e[12].text:=chas2str(u8.chas); na1e[13].text:=curr2str(u8.sum); na1e[14].text:=chas2str(u9.chas); na1e[15].text:=curr2str(u9.sum); /// hat hate[0].text:=kod2str(r6); hate[1].text:=kod2str(r7); hate[2].text:=rd2str(r8); hate[3].text:=curr2str(r9); end; end; function createl(x,y,w,h: integer; s: string): tlabel; begin result:=tlabel.create(form1); with result do begin wordwrap:=true; caption:=s; autosize:=false; alignment:=tacenter; color:=clwhite;//cllime; font.Name:='arial'; font.Size:=5; width:=w; height:=h; parent:=form1.Panel1; top:=y; left:=x; hint:=s; showhint:=true; end; end; function createe(x,y,w,h: integer; s: string): tedit; begin result:=tedit.create(form1); with result do begin color:=rgb($f0,$f0,$a0);//clyellow; autosize:=false; borderstyle:=bsnone; width:=w; height:=h; text:=''; parent:=form1.Panel1; top:=y; left:=x; end; end; procedure uderj; var i,j,k,i1,i2,i3,i4: integer; begin with form1 do begin ///////////////// удержания лейблы udl[0]:=createl(image2.left+1,image2.top+1, tooi(2,udgi)-1,tooi(2,udvi)-1,'Аванс'); udl[1]:=createl(1+image2.left+tooi(2,udgi),image2.top+1, tooi(2,udgi)-1,tooi(2,udvi)-1,'Подоход. налог'); udl[2]:=createl(1+image2.left+tooi(3,udgi),image2.top+1, tooi(4,udgi)-tooi(3,udgi)-1,tooi(2,udvi)-1,'Код'); udl[3]:=createl(1+image2.left+tooi(4,udgi),image2.top+1, tooi(5,udgi)-tooi(4,udgi)-1,tooi(2,udvi)-1,'Сумма'); udl[4]:=createl(1+image2.left+tooi(5,udgi),image2.top+1, tooi(6,udgi)-tooi(5,udgi)-1,tooi(2,udvi)-1,'Код'); udl[5]:=createl(1+image2.left+tooi(6,udgi),image2.top+1, tooi(7,udgi)-tooi(6,udgi)-1,tooi(2,udvi)-1,'Сумма'); udl[6]:=createl(1+image2.left+tooi(7,udgi),image2.top+1, tooi(8,udgi)-tooi(7,udgi)-1,tooi(2,udvi)-1,'Код'); udl[7]:=createl(1+image2.left+tooi(8,udgi),image2.top+1, tooi(9,udgi)-tooi(8,udgi)-1,tooi(2,udvi)-1,'Сумма'); udl[8]:=createl(1+image2.left+tooi(9,udgi),image2.top+1, tooi(10,udgi)-tooi(9,udgi)-1,tooi(2,udvi)-1,'Код'); udl[9]:=createl(1+image2.left+tooi(10,udgi),image2.top+1, tooi(11,udgi)-tooi(10,udgi)-1,tooi(2,udvi)-1,'Сумма'); udl[10]:=createl(1+image2.left+tooi(1,udgi), 1+image2.top+tooi(3,udvi), tooi(2,udgi)-tooi(1,udgi)-1, tooi(4,udvi)-tooi(3,udvi)-1,'Профсоюз.'#10#13'взносы'); udl[11]:=createl(1+image2.left+tooi(2,udgi), 1+image2.top+tooi(3,udvi), tooi(3,udgi)-tooi(2,udgi)-1, tooi(4,udvi)-tooi(3,udvi)-1,'Долг прошлого'#10#13'месяца'); ///////////////////// удержания эдиты ude[0]:=createe(1+image2.left+tooi(1,udgi), 1+image2.top+tooi(2,udvi), tooi(2,udgi)-tooi(1,udgi)-1, tooi(4,udvi)-tooi(3,udvi)-1,'0'); ude[1]:=createe(1+image2.left+tooi(2,udgi), 1+image2.top+tooi(2,udvi), tooi(3,udgi)-tooi(2,udgi)-1, tooi(4,udvi)-tooi(3,udvi)-1,'1'); ude[2]:=createe(1+image2.left+tooi(1,udgi), 1+image2.top+tooi(4,udvi), tooi(2,udgi)-tooi(1,udgi)-1, tooi(4,udvi)-tooi(3,udvi),'2'); ude[3]:=createe(1+image2.left+tooi(2,udgi), 1+image2.top+tooi(4,udvi), tooi(3,udgi)-tooi(2,udgi)-1, tooi(4,udvi)-tooi(3,udvi),'3'); for i:=0 to 2 do begin ude[4+i*2]:=createe(1+image2.left+tooi(3,udgi), 1+image2.top+tooi(2+i,udvi), tooi(4,udgi)-tooi(3,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(4+i*2)); ude[5+i*2]:=createe(1+image2.left+tooi(4,udgi), 1+image2.top+tooi(2+i,udvi), tooi(5,udgi)-tooi(4,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(5+i*2)); end; for i:=0 to 2 do begin ude[4+6+i*2]:=createe(1+image2.left+tooi(5,udgi), 1+image2.top+tooi(2+i,udvi), tooi(6,udgi)-tooi(5,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(4+6+i*2)); ude[5+6+i*2]:=createe(1+image2.left+tooi(6,udgi), 1+image2.top+tooi(2+i,udvi), tooi(7,udgi)-tooi(6,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(5+6+i*2)); end; for i:=0 to 2 do begin ude[4+12+i*2]:=createe(1+image2.left+tooi(7,udgi), 1+image2.top+tooi(2+i,udvi), tooi(8,udgi)-tooi(7,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(4+12+i*2)); ude[5+12+i*2]:=createe(1+image2.left+tooi(8,udgi), 1+image2.top+tooi(2+i,udvi), tooi(9,udgi)-tooi(8,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(5+12+i*2)); end; for i:=0 to 2 do begin ude[4+18+i*2]:=createe(1+image2.left+tooi(9,udgi), 1+image2.top+tooi(2+i,udvi), tooi(10,udgi)-tooi(9,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(4+18+i*2)); ude[5+18+i*2]:=createe(1+image2.left+tooi(10,udgi), 1+image2.top+tooi(2+i,udvi), tooi(11,udgi)-tooi(10,udgi)-1, tooi(4,udvi)-tooi(3,udvi),inttostr(5+18+i*2)); end; end; end; procedure nachis2; var i,j,k,i1,i2,i3,i4: integer; begin with form1 do begin ////////////// начисления-2 лейблы for i:=0 to 3 do begin na2l[i+0]:=createl(1+image3.left+tooi(i*3+1,na2g), 1+image3.top+tooi(1,na2v), tooi(2,na2g)-tooi(1,na2g)-1, tooi(2,na2v)-tooi(1,na2v)-1,'Код'); // na2l[i+1]:=createl(1+image3.left+tooi(i*3+2,na2g), 1+image3.top+tooi(1,na2v), tooi(3,na2g)-tooi(2,na2g)-1, tooi(2,na2v)-tooi(1,na2v)-1,'Часы'); na2l[i+2]:=createl(1+image3.left+tooi(i*3+3,na2g), 1+image3.top+tooi(1,na2v), tooi(4,na2g)-tooi(3,na2g)-1, tooi(2,na2v)-tooi(1,na2v)-1,'Суммa'); end; //////// начисление-2 эдиты na1g for j:=0 to 3 do for i:=0 to 3 do begin i1:=j*12+i*3+0; i2:=j*12+i*3+1; i3:=j*12+i*3+2; na2e[i1]:=createe(1+image3.left+tooi(i*3+1,na2g), 1+image3.top+tooi(j+2,na2v), tooi(2,na2g)-tooi(1,na2g)-1, tooi(3,na2v)-tooi(2,na2v),inttostr(i1)); // na2e[i2]:=createe(1+image3.left+tooi(i*3+2,na2g), 1+image3.top+tooi(j+2,na2v), tooi(3,na2g)-tooi(2,na2g)-1, tooi(3,na2v)-tooi(2,na2v),inttostr(i2)); //'Ч'); na2e[i3]:=createe(1+image3.left+tooi(i*3+3,na2g), 1+image3.top+tooi(j+2,na2v), tooi(4,na2g)-tooi(3,na2g)-1, tooi(3,na2v)-tooi(2,na2v),inttostr(i3)); //'С'); end; end; end; procedure nachis1; var i,j,k,i1,i2,i3,i4: integer; begin with form1 do begin /////////начислено-1 лэйбл for i:=0 to 3 do begin na1l[i*2+0]:=createl(1+image4.left+tooi(i*2+1,na1g), 1+image4.top+tooi(1,na1v), tooi(2,na1g)-tooi(1,na1g)-1, tooi(2,na1v)-tooi(1,na1v)-1, 'Часы'); na1l[i*2+1]:=createl(1+image4.left+tooi(i*2+2,na1g), 1+image4.top+tooi(1,na1v), tooi(3,na1g)-tooi(2,na1g)-1, tooi(2,na1v)-tooi(1,na1v)-1, 'Сумма'); end; na1l[8]:=createl(1+image4.left+tooi(9,na1g), 1+image4.top+tooi(1,na1v), tooi(3,na1g)-tooi(2,na1g)-1, tooi(2,na1v)-tooi(1,na1v)-1, 'Сумма'); na1l[9]:=createl(3+image4.left+tooi(10,na1g), 3+image4.top+tooi(1,na1v), tooi(11,na1g)-tooi(10,na1g)-5, tooi(3,na1v)-tooi(1,na1v)-3, #10#13'Премия рабочим'); na1l[10]:=createl(1+image4.left+tooi(1,na1g), 1+image4.top+tooi(2,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'По тарифной ставке'#10#13'или окладу'); na1l[11]:=createl(1+image4.left+tooi(3,na1g), 1+image4.top+tooi(2,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Премия за выполнение'#10#13'норм. (производ.) задания'); na1l[12]:=createl(1+image4.left+tooi(5,na1g), 1+image4.top+tooi(2,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Доплата за работу'#10#13'в вечернюю смену'); na1l[13]:=createl(1+image4.left+tooi(7,na1g), 1+image4.top+tooi(2,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Доплата за работу'#10#13'в ночную смену'); na1l[14]:=createl(1+image4.left+tooi(9,na1g), 1+image4.top+tooi(2,na1v), tooi(10,na1g)-tooi(9,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Надбавка за выпол'#10#13'инд. показателей'); na1l[15]:=createl(1+image4.left+tooi(1,na1g), 1+image4.top+tooi(4,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Доплата'#10#13'за выходные и праздники'); na1l[16]:=createl(1+image4.left+tooi(3,na1g), 1+image4.top+tooi(4,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Доплата'#10#13'за сверхурочные'); na1l[17]:=createl(1+image4.left+tooi(5,na1g), 1+image4.top+tooi(4,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Оплата за отпуск'); na1l[18]:=createl(1+image4.left+tooi(7,na1g), 1+image4.top+tooi(4,na1v), tooi(3,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Оплата'#10#13'по больничным листам'); na1l[19]:=createl(1+image4.left+tooi(9,na1g), 1+image4.top+tooi(4,na1v), tooi(10,na1g)-tooi(9,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1, 'Доплата за'#10#13'условия труда'); na1l[20]:=createl(3+image4.left+tooi(10,na1g), 1+image4.top+tooi(4,na1v), tooi(11,na1g)-tooi(10,na1g)-5, tooi(3,na1v)-tooi(2,na1v)-1, 'Премия РСиС'); ////////// начисления-1 эдиты for i:=0 to 3 do begin i1:=i*2; i2:=i*2+1; na1e[i1]:=createe(1+image4.left+tooi(i*2+1,na1g), 1+image4.top+tooi(3,na1v), tooi(2,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'К+'+inttostr(i1)); // na1e[i2]:=createe(1+image4.left+tooi(i*2+2,na1g), 1+image4.top+tooi(3,na1v), tooi(3,na1g)-tooi(2,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'Ч+'+inttostr(i2)); end; for i:=0 to 3 do begin i1:=8+i*2; i2:=9+i*2; na1e[i1]:=createe(1+image4.left+tooi(i*2+1,na1g), 1+image4.top+tooi(5,na1v), tooi(2,na1g)-tooi(1,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'К-'+inttostr(i1)); // na1e[i2]:=createe(1+image4.left+tooi(i*2+2,na1g), 1+image4.top+tooi(5,na1v), tooi(3,na1g)-tooi(2,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'Ч-'+inttostr(i2)); end; na1e[16]:=createe(1+image4.left+tooi(9,na1g), 1+image4.top+tooi(3,na1v), tooi(10,na1g)-tooi(9,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'hy16'); na1e[17]:=createe(3+image4.left+tooi(10,na1g), 1+image4.top+tooi(3,na1v), tooi(11,na1g)-tooi(10,na1g)-5, tooi(3,na1v)-tooi(2,na1v)-1,'za17'); na1e[18]:=createe(1+image4.left+tooi(9,na1g), 1+image4.top+tooi(5,na1v), tooi(10,na1g)-tooi(9,na1g)-1, tooi(3,na1v)-tooi(2,na1v)-1,'bo18'); na1e[19]:=createe(3+image4.left+tooi(10,na1g), 1+image4.top+tooi(5,na1v), tooi(11,na1g)-tooi(10,na1g)-5, tooi(3,na1v)-tooi(2,na1v)-3,'ta19'); end; end; procedure hatto; var i,j,k: integer; begin ///// шапка лейблы with form1 do begin hatl[0]:=createl(1+image5.left+tooi(1,hatg), 1+image5.top+tooi(1,hatv), tooi(2,hatg)-tooi(1,hatg)-1, tooi(2,hatv)-tooi(1,hatv)-1, 'Професс.'#10#13'должность'); hatl[1]:=createl(1+image5.left+tooi(2,hatg), 1+image5.top+tooi(1,hatv), tooi(3,hatg)-tooi(2,hatg)-1, tooi(2,hatv)-tooi(1,hatv)-1, 'Kод'#10#13'налога'); hatl[2]:=createl(1+image5.left+tooi(3,hatg), 1+image5.top+tooi(1,hatv), tooi(4,hatg)-tooi(3,hatg)-1, tooi(2,hatv)-tooi(1,hatv)-1, 'Р-д'); hatl[3]:=createl(1+image5.left+tooi(4,hatg), 1+image5.top+tooi(1,hatv), tooi(5,hatg)-tooi(4,hatg)-1, tooi(2,hatv)-tooi(1,hatv)-1, 'Тарифн. ставка'#10#13'оклад'); hatl[4]:=createl(3+image5.left+tooi(5,hatg), 3+image5.top+tooi(1,hatv), tooi(6,hatg)-tooi(5,hatg)-5, tooi(3,hatv)-tooi(1,hatv)-3, 'Табельный номер'); ///// шапка эдиты hate[0]:=createe(1+image5.left+tooi(1,hatg), 1+image5.top+tooi(2,hatv), tooi(2,hatg)-tooi(1,hatg)-1, tooi(3,hatv)-tooi(2,hatv)-1,'П-0'); hate[1]:=createe(1+image5.left+tooi(2,hatg), 1+image5.top+tooi(2,hatv), tooi(3,hatg)-tooi(2,hatg)-1, tooi(3,hatv)-tooi(2,hatv)-1,'K-1'); hate[2]:=createe(1+image5.left+tooi(3,hatg), 1+image5.top+tooi(2,hatv), tooi(4,hatg)-tooi(3,hatg)-1, tooi(3,hatv)-tooi(2,hatv)-1,'Р-2'); hate[3]:=createe(1+image5.left+tooi(4,hatg), 1+image5.top+tooi(2,hatv), tooi(5,hatg)-tooi(4,hatg)-1, tooi(3,hatv)-tooi(2,hatv)-1,'Т-3'); end; end; procedure dno; // донные ячейки var i,j,k,i1,i2,i3,i4: integer; begin with form1 do begin dnoe[0]:=createe(image1.left+dnogi[1]+1,image1.top+11, tooi(3,dnogi)-tooi(2,dnogi)-1,12,'010nx'); dnoe[1]:=createe(image1.left+dnogi[1]+1,image1.top+11+dnovi[2], tooi(3,dnogi)-tooi(2,dnogi)-1,12,'020nx'); dnoe[2]:=createe(image1.left+dnogi[1]+1,image1.top+1+tooi(4,dnovi), dnoe[1].Width,tooi(5,dnovi)-tooi(4,dnovi)-1,'030nx'); dnoe[3]:=createe(image1.left+tooi(3,dnogi)+1,image1.top+11, tooi(4,dnogi)-tooi(3,dnogi)-1,12,'040nx'); dnoe[4]:=createe(image1.left+tooi(4,dnogi)+1,image1.top+11, tooi(5,dnogi)-tooi(4,dnogi)-1,12,'050nx'); dnoe[5]:=createe(image1.left+tooi(5,dnogi)+1,image1.top+11, tooi(6,dnogi)-tooi(5,dnogi)-1,12,'060nx'); dnoe[6]:=createe(image1.left+tooi(3,dnogi)+1,dnoe[2].top,tooi(4,dnogi)-tooi(3,dnogi)-1, tooi(5,dnovi)-tooi(4,dnovi)-1,'070nx'); dnoe[7]:=createe(image1.left+tooi(4,dnogi)+1,dnoe[2].top, tooi(5,dnogi)-tooi(4,dnogi)-1,tooi(5,dnovi)-tooi(4,dnovi)-1,'050nx'); dnoe[8]:=createe(image1.left+tooi(5,dnogi)+1+2,dnoe[2].top, tooi(6,dnogi)-tooi(5,dnogi)-1-2,tooi(5,dnovi)-tooi(4,dnovi)-1-2,'050nx'); dnoe[9]:=createe(image1.left+tooi(6,dnogi)+1+2,dnoe[2].top, 29-2,tooi(5,dnovi)-tooi(4,dnovi)-1-2,'050nx'); dnoe[10]:=createe(image1.left+tooi(7,dnogi)+1,dnoe[2].top, tooi(8,dnogi)-tooi(7,dnogi)-1-2,tooi(5,dnovi)-tooi(4,dnovi)-1-2,'050nx'); dnol[0]:=createl(image1.left+1,image1.top+1, tooi(3,dnogi)-tooi(1,dnogi)-1,9, 'Средняя заработная плата'); dnol[1]:=createl(image1.left+1+tooi(3,dnogi),image1.top+1, tooi(6,dnogi)-tooi(5,dnogi)-1,9, 'Инд. фонд времени'); dnol[2]:=createl(image1.left+1+tooi(4,dnogi),image1.top+1, tooi(6,dnogi)-tooi(5,dnogi)-1,9, 'Начислено'); dnol[3]:=createl(image1.left+1+tooi(5,dnogi),image1.top+1, tooi(6,dnogi)-tooi(5,dnogi)-1,9, 'Удержано'); dnol[4]:=createl(image1.left+1+tooi(6,dnogi)+2,image1.top+1+2, tooi(8,dnogi)-tooi(6,dnogi)-1-4,tooi(3,dnovi)-tooi(1,dnovi)-1-2,'Перечислено'+#10#13+ ' в банк'); dnol[5]:=createl(image1.left+1,image1.top+1+tooi(2,dnovi), tooi(2,dnogi)-tooi(0,dnogi)-1,12,'За последние 2 календарных года для'+#10#13+ 'оплаты больничных (дневная)'); dnol[6]:=createl(image1.left+1,image1.top+1+tooi(3,dnovi), tooi(2,dnogi)-tooi(0,dnogi)-1,12,'За последние 12 месяцев '+#10#13+ 'для оплаты по среднему (часовая)'); dnol[7]:=createl(image1.left+1,image1.top+1+tooi(4,dnovi), tooi(2,dnogi)-tooi(0,dnogi)-1,tooi(5,dnovi)-tooi(4,dnovi)-1,'За последние 12 месяцев '+#10#13+ 'для оплаты отпуска (дневная)'); dnol[8]:=createl(dnol[1].left,dnol[6].top,tooi(6,dnogi)-tooi(5,dnogi)-1,12, 'Причитается'); dnol[9]:=createl(dnol[2].left,dnol[6].top,tooi(6,dnogi)-tooi(5,dnogi)-1,12, 'Долг за работающим'); dnol[10]:=createl(dnol[3].left+2,dnol[6].top+2,tooi(6,dnogi)-tooi(5,dnogi)-1-2,12-2, 'Сумма к выплате'); dnol[11]:=createl(dnol[4].left,dnol[6].top+2,29-2,12-2, 'Код'); dnol[12]:=createl(image1.left+1+tooi(7,dnogi), dnol[6].top+2, tooi(8,dnogi)-tooi(7,dnogi)-1-2,12-2, 'Сумма'); end; end; procedure TForm1.FormCreate(Sender: TObject); const c100: array[boolean]of tcolor=(clwhite,cllime); var i,j,k,i1,i2,i3,i4: integer; begin //////// удержания лейблы uderj; ////////////// начисления-2 лейблы nachis2; /////////начислено-1 лэйбл nachis1; ///// шапка лейблы hatto; with image1.Canvas do begin brush.color:=clblue;//clyellow; fillrect(rect(0,0,521,tooi(5,dnovi)+1));// end; with image2.Canvas do begin brush.color:=clblue; fillrect(rect(0,0,521,2+tooi(6,udvi))); // end; with image3.Canvas do begin brush.color:=clblue; //clred;//clyellow; // fillrect(rect(0,0,521,2+tooi(6,na2v))); // end; with image4.Canvas do begin brush.color:=clblue; //clgreen;// fillrect(rect(0,0,521,1+tooi(6,na1v))); // end; with image5.Canvas do begin brush.color:=clblue; //clred;//clgreen;// fillrect(rect(0,0,521,1+tooi(3,hatv))); // end; dno; // дно for i:=1 to 12 do // begin pn[i]:=tpanel.create(form1); with pn[i] do begin top:=12; left:=20+(i-1)*49; width:=40; height:=20; font.Color:=clblue; color:=c100[i=1]; caption:=sa[i]; tag:=i; onmousedown:=ck; parent:=panel2; end; end; for i:=1969 to 2069 do combobox1.items.Add(inttostr(i)); button6.OnClick(self); // загрузить из файлов bio:=boob[cury]; // первый год vw; vw2; application.ProcessMessages; end; procedure TForm1.ck(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const cc: array[boolean]of tcolor=(clwhite,cllime); var i: integer; begin cur:=(sender as tpanel).tag; mont.text:=sa[cur]; label2.caption:=(sender as tpanel).caption; for i:=1 to 12 do pn[i].color:=cc[i=(sender as tpanel).tag]; vw; end; function NameNoExt(x: string): string; begin // имя файла без расширения result:=Copy(x,1,length(x)-length(ExtractFileExt(x))); end; function str2curr(x: string): currency; begin x:=trim(x); x:=stringreplace(x,'.',',',[rfReplaceAll]); result:=0; if x='' then exit; result:=strtocurr(x); end; procedure TForm1.ComboBox1Change(Sender: TObject); begin bio:=boob[ComboBox1.ItemIndex]; cury:=ComboBox1.ItemIndex; year.text:=inttostr(1969+ComboBox1.ItemIndex); vw; vw2; end; procedure TForm1.Button6Click(Sender: TObject); var i: integer; s: string; c: boolean; begin c:=true; for i:=1969 to 2069 do begin s:=format('%d.vaz',[i]); if not fileexists(s) then continue; if c then begin c:=false; cury:=i-1969; ComboBox1.ItemIndex:=i-1969; year.Text:=inttostr(i); mont.Text:='Январь'; end; assignfile(f,s); reset(f); read(f,boob[i-1969]); closefile(f); end; end; procedure TForm1.Save1Click(Sender: TObject); var i,j: integer; s: string; f: file of bob; begin with bio[cur] do begin a6:=str2curr(dnoe[0].text); a7:=str2curr(dnoe[1].text); a8:=str2curr(dnoe[2].text); a9:=str2curr(dnoe[3].text); z1:=str2curr(dnoe[4].text); z4:=str2curr(dnoe[5].text); z2:=str2curr(dnoe[6].text); z3:=str2curr(dnoe[7].text); z5:=str2curr(dnoe[8].text); z6:=str2word(dnoe[9].text); z7:=str2curr(dnoe[10].text); a1:=str2curr(ude[0].text);//Аванс a2:=str2curr(ude[1].text);///Подоход. налог a3:=str2curr(ude[2].text);//Профсоюзн. взносы a4:=str2curr(ude[3].text);//Долг прошлого месяца for i:=0 to 11 do //Удержания Код Сумма (16) with a5[i] do begin a5[i].kod:=str2word(ude[4+i*2].text);// a5[i].sum:=str2curr(ude[5+i*2].text);// end; for i:=0 to 15 do //Начисления Код Часы Сумма (16) begin n1[i].kod:=str2word(na2e[i*3+0].text); n1[i].chas:=str2curr(na2e[i*3+1].text); n1[i].sum:=str2curr(na2e[i*3+2].text); end; u1.chas:=str2curr(na1e[0].text); u1.sum:=str2curr(na1e[1].text); u2.chas:=str2curr(na1e[2].text); u2.sum:=str2curr(na1e[3].text); u3.chas:=str2curr(na1e[4].text); u3.sum:=str2curr(na1e[5].text); u4.chas:=str2curr(na1e[6].text); u4.sum:=str2curr(na1e[7].text); u6.chas:=str2curr(na1e[8].text); u6.sum:=str2curr(na1e[9].text); u7.chas:=str2curr(na1e[10].text); u7.sum:=str2curr(na1e[11].text); u8.chas:=str2curr(na1e[12].text); u8.sum:=str2curr(na1e[13].text); u9.chas:=str2curr(na1e[14].text); u9.sum:=str2curr(na1e[15].text); u5:=str2curr(na1e[16].text); u10:=str2curr(na1e[18].text); t2:=str2curr(na1e[17].text); t3:=str2curr(na1e[19].text); r6:=str2word(hate[0].text); r7:=str2word(hate[1].text); r8:=str2word(hate[2].text); r9:=str2curr(hate[3].text); end; vw; vw2; s:=inttostr(ComboBox1.ItemIndex+1969)+'.vaz'; assignfile(f,s); rewrite(f); write(f,bio); closefile(f); end; initialization dnovi:=butt([0,10,13,13,17]); // таблицы dnogi:=butt([0,160,50,70,70,70,30,70]); udvi:=butt([0,10,17,17,17]); udgi:=butt([0,70,70,30,65,30,65,30,65,30,65]); na2v:=butt([0,10,13,13,13,13]); na2g:=butt([0,30,30,70,30,30,70,30,30,70,30,30,70]); na1v:=butt([0,13,13,13,13,13]); na1g:=butt([0,30,65,30,65,30,65,30,65,65,75]); hatv:=butt([0,16,13]); hatg:=butt([0,40,25,17,65,75]); end.