Автор работы: Пользователь скрыл имя, 23 Апреля 2013 в 18:48, контрольная работа
Предприятие имеет развитую инфраструктуру по обеспечению предприятий и организаций и жилых микрорайонов следующими видами услуг:
установка телефонов и обеспечение телефонной связью
передача электроэнергии через собственную подстанцию
снабжение паром, холодной и горячей водой от собственных источников (ТЭЦ, водозабор)
перевозка нефтепродуктов автотранспортом.
В части второй этого окна расположены триггерные кнопки (Push Buttons), которые при их выборе выполняют определенные действия по обработке данных.
“Изменить”, “Добавить” - запускает процедуру изменения для жильца находящегося в окне, или процедуру дополнения нового жильца, которая описана выше (см. “СЕРВИС”-“Добавить” стр. 36).
“Удалить” – запускает
процедуру удаления текущей записи
(см. прилож. 1.2 стр.35) здесь вначале
проверяется помечена ли запись на
удаление и если помечена то пометка
снимается и процедура
“Печать …” – формирует квитанцию, с данными о всех произведенных начислениях, суммах к оплате, по льготам, дату когда оплачено и остаток (задолженность).выбор этой кнопки запускает процедуру PRINT1 (см. прилож. 1.2 стр. 26; прилож. 3 стр. 1; прилож. 2 рис. 7 ), в которой выполняются следующие действия:
сначала переопределяется назначение
клавиши F1, затем открывается
“Ввод оплаты” – открывает окно для ввода оплаты для одного квартиросъемщика. Выполняется процедура 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., если была
предпринита попытка
“Начало”, “Конец” - служат для быстрого перехода в начало/конец БД, при этом соответствующие кнопки блокируются.
“Расчет” - позволяет рассчитать квартплату на одного жильца, который находится в окне.выбор этой кнопки вызывает процедуру RAS_ON_ONE (см .прилож. 1.2 стр. 53). Здесь определяются переменные для работы это R-номер текущей записи в БД жильцов, Т-табельный номер, ORD_R-активный TAG в БД жильцов, Y- улица, D-дом, K-квартира.
После этого активной выбирается
БД начислений и в ней, по табельному
номеру, ищется запись, для которой
делается расчет (LOCATE FOR t=tab). Если поиск
не удачный, то для БД жильцов устанавливается
фильтр, при котором доступны только
записи с текущим адресом и
командой APPEND FROM <БД жильцов> FIELDS <список
одинаковых полей в БД жильцов
и БД начислений> добавляются записи
в БД начислений. Если поик удачный,
то разрывается связь между
Далее текущей выбирается БД начислений и для нее устанавливается связь ОДНА-КО-МНОГИМ с БД ставок и БД льгот, а также фильтр для обработке данных имеющим только адрес, который ранее был сохранен в переменных.
Далее обнуляются все поля начислений по льготам, это сделано для того, что если в окне изменен период или льгота отменена, то при расчете льгот эта запись игнорируется, но старые данные расчета сохраняются и чтобы этого не допустить они обнуляются.
После этого в 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>,<
После расчета квартплаты
рассчитываются льготы. Здесь в SCAN-цикле
предусмотрено условие при
После окончания расчетов суммируются все начисления по льготам и заносятся в поля жильца, который платит за квартиру, для просмотра их в окнах, и расчета суммы к оплате. Затем разрываются все связи, отменяются фильтры, выполняется процедура открытия баз данных (см. прилож. 1.3 стр. 1), обновляются данные в окне и процедура завершается.
Выйти” – заканчивает работу с этим окном.
И теперь рассмотрим процедуру обновления окна tb_l(), которая включена в команду READ, с помощью опции SHOW (см. прилож. 1.2 стр.5-6). Здесь в нескольких циклах DO CASE анализируются значения переменных, которые в процессе выполнения принимают различные значения, и в зависимости от этих значений выполняются определенные действия.
Анализ переменной _FILTR – имеет числовое значение и служит для фильтра доступа к данным при их просмотре и редактирования. Значение 1 – устанавливается главным TAG ord, при котором доступны жильцы, которые платят за квартиру, 2 - – устанавливается главным TAG lgt, при котором доступны жильцы, которые имеют льготу, 3 - – устанавливается главным TAG adrr, при котором доступны все жильцы. А также на экран выводится строка-подсказка с выбранным фильтром
Далее анализируются категория жильца, и если это плательщик или льготник, то кнопки для выбора услуг – доступны для редактирования, если просто жилец то недоступны, при этом кнопки и область их расположения выделяются цветом.
Далее также анализируются
категория жильца, если льготник –
доступна кнопка “По льготе”, если
плательщик – доступна кнопка “По
оплате” и не доступны, если это
не выполняется. Анализ выполняется
в двух циклах по каждой кнопки, для
того, что если плательщик имеет
льготу, то ему доступны обе кнопки.
Здесь также при анализе
И последнее это анализ
переменных “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) , в которой
полю остатка присваивается
Информация о работе Учет квартплаты (АРМ бухгалтера-расчетчика)