Учет квартплаты (АРМ бухгалтера-расчетчика)

Автор работы: Пользователь скрыл имя, 23 Апреля 2013 в 18:48, контрольная работа

Описание работы

Предприятие имеет развитую инфраструктуру по обеспечению предприятий и организаций и жилых микрорайонов следующими видами услуг:
установка телефонов и обеспечение телефонной связью
передача электроэнергии через собственную подстанцию
снабжение паром, холодной и горячей водой от собственных источников (ТЭЦ, водозабор)
перевозка нефтепродуктов автотранспортом.

Файлы: 1 файл

АРМ бухгалтера.docx

— 135.40 Кб (Скачать файл)

В части второй этого окна расположены триггерные кнопки (Push Buttons), которые при их выборе выполняют  определенные действия по обработке  данных.

“Изменить”, “Добавить” - запускает  процедуру изменения для жильца находящегося в окне, или процедуру  дополнения нового жильца, которая  описана выше (см. “СЕРВИС”-“Добавить” стр. 36).

“Удалить” – запускает  процедуру удаления текущей записи (см. прилож. 1.2 стр.35) здесь вначале  проверяется помечена ли запись на удаление и если помечена то пометка  снимается и процедура заканчивается. Это нужно для того, что в  окнах “База жильцов”, “Картотека льготников” также можно удалять  записи комбинацией клавиш <Ctrl+T>, и этой же комбинацией клавиш снимать  пометку на удаление. Далее идет команда переноса переменных в БД, если вызов этой процедуры пришел из функции изменения, затем в  переменные заносится текущий адрес, устанавливается фильтр по этому  адресу и в переменную kol заносится  количество записей (COUNT TO kol), после  этого переменная kol уменьшается  на одну единицу, полученный результат  присваивается всем записям по полю количества жильцов, затем эта запись помечается на удаление, и если вызов  был с окна INS (“Работа с картотекой”), то информация и GET-объекты в этом окне обновляются.

“Печать …” – формирует  квитанцию, с данными о всех произведенных  начислениях, суммах к оплате, по льготам, дату когда оплачено и остаток (задолженность).выбор  этой кнопки запускает процедуру PRINT1 (см. прилож. 1.2 стр. 26; прилож. 3 стр. 1; прилож. 2 рис. 7 ), в которой выполняются  следующие действия:

сначала переопределяется назначение клавиши F1, затем открывается альтернативный файл, в который будут заноситься формируемые данные и в последующем  он будет сохранен на диске для  его распечатки. В переменную “Т”  заносится будущее имя файла (‘tab’+’.’+’txt’=tab.txt), затем объявляются два массива NACH(12,1)-для данных по начислениям, LG(9)-для  данных по льготным начислениям. После  этого в сканируется БД с условием только жильцов с одинаковым адресом  и в переменные и элементы массивов заносятся необходимые данные, которые  будут занесены в файл с помощью  команды “?”, “??”. после окончания  формирования квитанции этот файл будет  открыт в окне VEDOM для его просмотра (редактирования) (см. прилож. 2 рис. 7).и  после его закрытия будет предложено распечатать или отказаться (см. прилож. 2 рис. 8)

“Ввод оплаты” – открывает  окно для ввода оплаты для одного квартиросъемщика. Выполняется процедура VVV расположенная в файле BAZES.PRG (см. прилож. 1.4 стр. 5).

Вначале переопределяется назначение на клавишу помощи, затем определяется окно для работы, затем анализируется  жилец, на котором был вызов этой процедуры и если это не плательщик, то ищется плательщик квартиры и указатель  записи переходит на эту запись, и работа будет производится с  этим жильцом. Затем определяются переменные для работы это адрес (y,d,kv), текущая  дата (dat), переменная для хранения веденой  суммы (opl), погсле этого активируется окно (см. прилож. 2 рис.4) и в него выводятся  поясняющие записи такие как фамилия, табельный номер, сумма начислений, сумма по льготам, сумма к оплате, остаток и GET-поле для ввода суммы  оплаты, которая имеет контроль выхода (см. прилож. 1.2 стр. 40) здесь проверяется  поле OPL_TA , содержащая сумму оплаты жильцами и если она не пуста, то появится дополнительное окно с пунктами-кнопками “Дописать”, “Переписать”.

Выход с сохранением осуществляется выбором кнопки <Ok> в этом окне, которая описана в процедуре SV3 (см. прилож. 1.2 стр. 40).

данные кнопки предназначены  для выбора фильтра предъявления данных в окне. Их выбор обрабатывается в процедуре FILTR (см. прилож. 1.2 стр. 7), где переменной _FILTR присваиваются  числовые значения, в зависимости от которых в процедуре обновления будет установлен соответствующий TAG.

“Вверх”, “Вниз”– данная группа кнопок предназначена для  перемещения по БД жильцов. При этом по достижении конца(начала) БД соответствующие  кнопки блокируются.. Обработка этих кнопок осуществляется в процедуре PER (см. прилож. 1.2 стр. 6-7) с помощью  переменных “e” и “b”, которые  определены ранее (см.выше), запоминается факт достижения конца/начала файла. Первоначально  они имеют значение .F., если была предпринита попытка продвинуться за пределы БД то одной из них  присваивается значение .Т.. В остальных  случаях они равны .F. это нужно  для восстановления в процедуре tb_l() активности кнопок если указатель  записей находиться не на последней/первой записи. Также здесь используется системная переменная _CUROBJ, которая  содержит номер GET-объекта. Ее значение изменяется при выборе кнопки и курсор переходит на другой объект. Она  служит для того, что бы при перемещении  с помощью клавиш Enter/Space курсор не покидал эти кнопки.

“Начало”, “Конец” - служат для быстрого перехода в начало/конец  БД, при этом соответствующие кнопки блокируются.

“Расчет” - позволяет рассчитать квартплату на одного жильца, который  находится в окне.выбор этой кнопки вызывает процедуру RAS_ON_ONE (см .прилож. 1.2 стр. 53). Здесь определяются переменные для работы это R-номер текущей  записи в БД жильцов, Т-табельный  номер, ORD_R-активный TAG в БД жильцов, Y- улица, D-дом, K-квартира.

После этого активной выбирается БД начислений и в ней, по табельному номеру, ищется запись, для которой  делается расчет (LOCATE FOR t=tab). Если поиск  не удачный, то для БД жильцов устанавливается  фильтр, при котором доступны только записи с текущим адресом и  командой APPEND FROM <БД жильцов> FIELDS <список одинаковых полей в БД жильцов  и БД начислений> добавляются записи в БД начислений. Если поик удачный, то разрывается связь между базами, для работы команды обновления, с  помощью которой одинаковые поля в БД начислений принимают значения такие какие в БД жильцов: UPDATE ON <ключевое поле> FROM <область БД жильцов> REPLACE <поле БД начислений> WITH <поле БД жильцов>.

Далее текущей выбирается БД начислений и для нее устанавливается  связь ОДНА-КО-МНОГИМ с БД ставок и БД льгот, а также фильтр для  обработке данных имеющим только адрес, который ранее был сохранен в переменных.

Далее обнуляются все поля начислений по льготам, это сделано  для того, что если в окне изменен  период или льгота отменена, то при  расчете льгот эта запись игнорируется, но старые данные расчета сохраняются  и чтобы этого не допустить  они обнуляются.

После этого в SCAN-цикле  рассчитывается квартплата, с помощью  команды REPLACE <поле> WITH <выражение>, то есть <полю> присваивается значение <выражения>. Здесь в выражении  используется расчет (REPLACE kw_pl WITH IIF(g.kwp_l=0, kv_pl, g.kwp_l)*IIF(kw_l=.t.,kv_m, 0)..).

Функция IIF(<условие>,<выражение1>,<выражение2>) – выдает значение <выражение1>, если <условие> истинно, и <выражение2> - если ложно. В нашем случае первый множитель – это ставка, и если поле ставки для этого жильца равно  нулю, то применяется нормативная  ставка, если же оно имеет значение, то применяется эта ставка. Второй множитель определяет выбор этой услуги, если поле фиксирующие выбор  услуги равен .Т., то есть она выбрана  для начислений, то умножение идет на квадратные метры(количество человек), иначе на 0.

После расчета квартплаты рассчитываются льготы. Здесь в SCAN-цикле  предусмотрено условие при котором  в расчет попадают только те жильцы, у которых либо не имеется периода  действия льготы, либо текущая дата лежит в промежутке между началом  и концом действия льготы. Расчет аналогичный  описанному выше, различие только в  том, что если по услуге расчет идет по квадратным метрам, то но высчитывается  на одного человека (kv_m/kol_vo), и все  значения умножаются на (-1), чтобы показать льготы с отрицательным знаком.

После окончания расчетов суммируются все начисления по льготам  и заносятся в поля жильца, который  платит за квартиру, для просмотра  их в окнах, и расчета суммы  к оплате. Затем разрываются все  связи, отменяются фильтры, выполняется  процедура открытия баз данных (см. прилож. 1.3 стр. 1), обновляются данные в окне и процедура завершается.

Выйти” – заканчивает  работу с этим окном.

И теперь рассмотрим процедуру  обновления окна tb_l(), которая включена в команду READ, с помощью опции SHOW (см. прилож. 1.2 стр.5-6). Здесь в нескольких циклах DO CASE анализируются значения переменных, которые в процессе выполнения принимают различные значения, и  в зависимости от этих значений выполняются  определенные действия.

Анализ переменной _FILTR –  имеет числовое значение и служит для фильтра доступа к данным при их просмотре и редактирования. Значение 1 – устанавливается главным TAG ord, при котором доступны жильцы, которые платят за квартиру, 2 - –  устанавливается главным TAG lgt, при  котором доступны жильцы, которые  имеют льготу, 3 - – устанавливается  главным TAG adrr, при котором доступны все жильцы. А также на экран  выводится строка-подсказка с  выбранным фильтром

Далее анализируются категория  жильца, и если это плательщик или  льготник, то кнопки для выбора услуг  – доступны для редактирования, если просто жилец то недоступны, при  этом кнопки и область их расположения выделяются цветом.

Далее также анализируются  категория жильца, если льготник –  доступна кнопка “По льготе”, если плательщик – доступна кнопка “По  оплате” и не доступны, если это  не выполняется. Анализ выполняется  в двух циклах по каждой кнопки, для  того, что если плательщик имеет  льготу, то ему доступны обе кнопки. Здесь также при анализе категории  плательщика выводится разная информация по начислениям льгот (см. прилож. 1.2 стр. 4). Это – если плательщик выполняется  процедура OB_NACH, которая выводит  на экран общие (суммированные) начисления по льготам, если это жилец то выполняется  процедура LG_NACH, которая выводит  на экран начисления по льготе для  данного жильца.

И последнее это анализ переменных “e” и “b”, которые  служат для блокирования кнопок перемещений  по БД в процедурах перемещений, при  попытке выйти за пределы БД, а  здесь они раз блокируются  при удовлетворяющем значениии, которые присваиваются в процедурах перемещений.

“КАДРЫ”-“Квартиросъемщики”

При выборе этого пункта выводятся  данные из БД жильцов в табличной  форме с помощью команды BROWSE. Записи выводятся горизонтально в окне определенном ранее. Формат полей может  настраиваться с помощью опции FIELDS <список полей>, а также иметь  так называемые вычисляемые поля. Эти поля фактически не являются полями БД, но могут быть их функциями и  отображаются на экране наравне с  настоящими полями.

В данной процедуре KDR_R (см. прилож. 1.4 стр. 1) в окне KD открывается BROWSE-окно с полями табельного номера (tab), фамилии (fam), вычисляемым полем со значком  ‘< ’, который появляется у жильца, который является плательщиком и  вычисляемым полем со значком  ‘ü ’, который появляется у жильцов, имеющих льготу – эти поля являются функциями от фактических полей, выполняемые с помощью функции IIF(<условие>,<выр1>,<выр2>). Предъявление данных часть экрана, а на свободной  части, выводятся на экран информация с помощью команд @…SAY…GET остальная  интересующая информация (см. прилож. 2 рис. 9), которая формируется в  процедуре NACH (см. прилож. 1.2 стр. 37) , при  этом если при перемещении по БД курсор находится в поле табельного номера, то эта информация автоматически  обновляется в зависимости от активной записи БД, во всех других полях  эту информацию необходимо выбрать  из меню, которое появляется после  нажатия клавиши Enter в любом поле.

Эти действия достигаются  путем включения в имена полей  ключей, которые выполняют контроль входа (:W), контроль выхода (:V), а также  проверку постоянно (:F) здесь:

Для поля табельного номера с помощью ключа - :W=NACH() установлен входной контроль, при котором  обязательно - :F выполняется процедура  вывода информации по жильцу (выполняется  процедура NACH ).

Для остальных полей контроль входа - :W=EN(), которая назначает на выбор клавиши Enter выполнение процедуры POP_VIB и при выходе из поля - :V=NE() это  назначение отменяется (см. прилож. 1.2 стр. 38), при чем это выполняется  всегда - :F.

Выполнение процедуры POP_VIB предъявляет FOX-меню (см. отличия в  описании меню), которое показано на рис. 10 прилож. 2 и описано в прилож. 1.2 стр. 39. Рассмотрим ее.

Сначала объявляется массив, элементы которого и будут пунктами меню, затем каждому элементу присваивается  символьный тип с описанием названия, которое будет отображаться в  меню. Далее с помощью команды READ оно активируется. После выбора из меню выполняется действие закрепленное за каждым пунктом в цикле DO CASE и  оно “умирает”. Все пункты меню рассматривались выше.

“КАДРЫ”-“Картотека льготников” 

Выбор зтого пункта также  вызывает BROWSE-окно, открытое в окне KD1, которое открывается на весь экран, кроме двух последних строк, и  предъявляет тех жильцов, которые  имеют льготу (BROWSE FOR LGOT=.T.) Здесь выводятся  поля фамилии, табельного номера, адреса, телефона, периода действия льготы, категории и номера удостоверения. При входе в поле выполняется  процедура INFO (см. прилож. 1.2 стр. 41) с  помощью ключей - :W=INFO() и - :F. Эта процедура  выводит в нижних строках следующую  информацию: если это плательщик, то суммы к оплате, остатка, количество льготников и количество жильцов, иначе  фамилию и табельный номер  того жильца, кто является плательщиком.

“КАДРЫ”-“База жильцов”

Работа процедуры, при  выборе этого пункта аналогична описанной  выше, только предъявляются все жильцы.

“КАДРЫ”-“Ввод данных счетчика” 

Открывает в окне KD1 BROWSE-окно с плательщиками и полями табельного номера, фамилии, адреса, данными о  старом и новом значениях счетчика и полем суммы начисленной  за пользование электроэнергией  из БД начислений (см. прилож. 1.4 стр. 3). Поля данных счетчика доступны к редактированию, остальные открыты только для  просмотра, что достигается включением в имена полей ключа - :R. Также  все поля имеют входной контроль - :W=INFO(), который описан выше, а поля данных счетчика и выходной контроль - :V=R() (см. прилож. 1.2 стр. 42), где при  выходе рассчитывается сумма к оплате за электроэнергию и корректируется итоговые суммы.

“КАДРЫ”-“Ввод оплаты” 

здесь в начале определяются две переменные, которые нужны  для работы, это dat, которая содержит текущую дату (dat=DATE()) и opl, которая  имеет нулевое значение и служит для того, чтобы в программе  не было ошибки при обновлении полей, потому что используется одна процедура  обновления полей с процедурой для  ввода оплаты для одного жильца. Затем открывается в окне KD1 BROWSE-окно, в котором предъявляются поля из разных баз, это табельный номер, фамилия, поле для хранения суммы  оплаты (OPL_TA), поле для хранения даты оплаты (D_OPL), и поле для хранения остатка(задолженности) (OST_K) из БД жильцов  и поле итоговой суммы начислений (ITOG_N), итога начислений по льготам (SUM_IT) и суммы к оплате (ITOG) из БД начислений. (см. прилож. 1.4 стр. 3-4, прилож. 2 рис. 12). Доступные  к редактированию является поле суммы  оплаты которое имеет выходной контроль - :V=SV3() (см. прилож. 1.2 стр.40) , в которой  полю остатка присваивается рассчитанное значение (введенная сумма – сумма  к оплате), полю даты значение переменной dat, то есть текущая дата и здесь  не используется ключ - :F, это значит, что если в поле, для которого предусмотрен контроль выхода (opl - :V=SV3), данные не изменялись то процедура  игнорируется, а выполняется она  только в том случае если данные изменялись. Также здесь используется другая информация в статус-строке :W=INFO3() (см. прилож. 1.2 стр. 42), где показывается адрес жильца, количество проживающих  и количество льготников.

Информация о работе Учет квартплаты (АРМ бухгалтера-расчетчика)