Разработка модуля автоматизированного учета контрактов услуг для предприятия I.S.'Radiocomunicatii'

  • Вид работы:
    Магистерская работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,87 Мб
  • Опубликовано:
    2013-11-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка модуля автоматизированного учета контрактов услуг для предприятия I.S.'Radiocomunicatii'

МИНИСТЕРСТВО ПРОСВЕЩЕНИЯ РЕСПУБЛИКИ МОЛДОВА

МОЛДАВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет Математики и Информатики

Кафедра Прикладной Информатики








Магистерская работа

Разработка модуля автоматизированного учета контрактов услуг для предприятия I.S."RADIOCOMUNICATII"










Кишинев, 2013

СПИСОК ПРИНЯТЫХ СОКРАЩЕНИЙ

БД - база данных

BI - Business Intelligence

Млн.- миллион

Тыс. - тысяча

Рис. - рисунок

Табл. - таблица

Т.е - то есть

OLAP - Online Analytical Processing

ИТ - Информационные Технологии

ИС - Информационная система

СУБД - Система управления базами данных- Integrated Development Environment- Enterprise Resource Planning- Structured Query Language

АННОТАЦИЯ

В работе разработан модуль автоматизированного учета контрактов на предоставление услуг клиентам предприятия «I.S."RADIOCOMUNICATII"». Данный модуль является частью информационной, управленческой системы Universal Accounting.

В качестве инструментов разработки используются СУБД Oracle, TOAD, FormulaOne. В разработанном модуле реализованы три важных этапа учета:

Регистрация первичных документов контрактов.

Начисление доходов от предоставленных, согласно контрактам, услуг.

Печать налоговых накладных, счетов на оплату клиентам и просмотр отчетности по контрактам.

Данный модуль был специально разработан и адаптирован согласно всем требованиям и пожеланиям руководства предприятия и является оригинальным (не стандартным) модулем ИС Universal Accounting.

Внедрение модуля контрактов позволило сэкономить более 50% времени, затрачиваемого на механические действия оформления, корректировки, ввода информации, а также снизить количество не вынужденных ошибок персонала и главное, увеличить скорость и эффективность работы персонала.

Модуль контрактов сдан в эксплуатацию (акт приемки-сдачи выполненных работ №3-RDC по модулю учета контрактов от 15-м апреля 2010 года). Это означает полноценное использование модуля сотрудниками предприятия «I.S. "RADIOCOMUNICATII"» в своей повседневной работе.

Ключевые слова: ORACLE, УЧЕТ КОНТРАКТОВ, АЛГОРИТМЫ РАСЧЕТА ДОХОДОВ, ОБРАБОТКА ИНФОРМАЦИИ, ОПЕРАТИВНЫЙ ПОИСК ИНФОРМАЦИИ, UNIVERSAL ACCOUNTING, УПРАВЛЕНЧЕСКИЙ УЧЕТ, ИНТЕРФЕЙС МОДУЛЯ, БАЗА ДАННЫХ, СТРУКТУРА, ИНФОРМАЦИОННАЯ СИСТЕМА.

ADNOTARE

În lucrarea dată a fost elaborat modulul automatizat de înregistrare a contractelor pentru furnizarea serviciilor clientolor companiei «I.S."RADIOCOMUNICATII"». Acest modul este o parte constituientă al sistemului informaţional managerial Universal Accounting.

Ca instrumente de dezvoltare au fost folosite SGBD Oracle, TOAD, FormulaOne. În modulul dezvoltat au fost realizate trei importante aspecte ce ţine de gestiunea serviicilor:

Înregistrarea documentelor primare de contracte;veniturilor prevazute la serviciile contractuale;

Imprimarea facturilor fiscale, facturilor de plata a clienţilor şi vizualizarea raportelor cu privire la îndeplinirea contractelor.modul a fost special dezvoltat şi adaptat în conformitate cu toate cerinţele şi dorinţele conducerii companiei şi este un modul original (non standard) al SI Universal Accounting.modulului în practica gestiunii contractelor a dat economie de peste 50% din timpul folosit pentru perfectarea şi ajustărea manuală, introducerea informaţiilor şi are ca efect reducerea numărului de erori şi cel mai important, duce la creşterea vitezei şi eficienţei de lucru a personalului.

Prin cercificatul №3-RDC de acceptare-predare a lucrărilor din 15 aprilie 2010 modulul a fost primit în expluatare. Aceasta înseamnă utilizarea deplină al modulul de angajaţii companiei «I.S."RADIOCOMUNICATII"» în activitatea lor de zi cu zi.

Cuvinte cheie: ORACLE, CONTABILITATEA CONTRACTELOR, ALGORITME PENTRU CALCULAREA VENITURILOR, PRELUCRAREA INFORMAȚIEI, CAUTAREA RAPIDĂ INFORMAȚIEI, UNIVERSAL ACCOUNTING, MANAGEMENTUL CONTURI, INTERFAȚA.

ANNOTATION

work is devoted to developing the module of the automated account of contracts on granting of services to clients by company «I.S."RADIOCOMUNICATII"». This module is a part of information, administrative system Universal Accounting.working tools are used DBMS Oracle, TOAD, FormulaOne. In the developed module are realized three important stages of the account:of primary documents of contracts.of incomes from given, according to contracts, services.Press of tax waybills accounts on payment to clients and reporting viewing under contracts.given module has been specially developed and adapted according to all requirements and wishes of administration of company and is original (not standard) module IS Universal Accounting.of the module of contracts has allowed to save more than 50 % of time spent for mechanical actions of registration, updating, input of information, and also to lower quantity of not compelled errors of the personal and the main thing, to increase speed and a personal overall performance.certificate of acceptance of the executed works №3-RDC on the module of the account of the contracts, dated has been signed on April, 15th, 2010. It means high-grade use of the module by employees of the company «I.S." RADIOCOMUNICATII "» in the daily work.words: ORACLE, ACCOUNT OF CONTRACTS, ALGORITHMS OF CALCULATION OF INCOMES, INFORMATION PROCESSING, OPERATIVE INFORMATION SEARCH, UNIVERSAL ACCOUNTING, ADMINISTRATIVE ACCOUNT, MODULE INTERFACE, DATABASE, STRUCTURE, INFORMATION SYSTEM.

ВВЕДЕНИЕ

Информационные системы (ИС) - настоящее и будущее в их развитии.

Информационная система (ИС) - система хранения, обработки и передачи информации, представленной в определенной форме. В вычислительной технике информационная система представляет собой программный комплекс, который предоставляет возможность надежного хранения данных в памяти, выполнение преобразований информации и вычислений, предоставление пользователям удобного и легко осваиваемого интерфейса. Таким образом, использование информационных систем позволяет:

работать с большим объемом данных;

хранить данные в течение длительного временного периода;

связать несколько компонентов, имеющих свои локальные цели, задачи и приемы функционирования, в единую систему для работы с информацией;

значительно снизить затраты на хранение и доступ к необходимым данным;

достаточно быстро находить требуемую информацию и т. д.

Классическими примерами информационных систем являются банковские системы, автоматизированные системы управления предприятиями, системы резервирования авиационных или железнодорожных билетов и т. д. Современные СУБД обладают широкими возможностями резервного копирования и архивации данных, параллельной обработки информации, особенно в случае использования многопроцессорных компьютеров в качестве сервера базы данных. Если говорить о роли ИС в сфере бизнеса, то необходимо отметить их взаимное влияние друг на друга. С одной стороны, информационные технологии (ИТ) и построенные на их основе информационные системы должны быть полностью интегрированы в деятельность предприятия. С другой стороны, бизнес должен постоянно чувствовать поддержку со стороны ИТ и не только открывать для себя новые возможности, но и развивать их, чтобы извлечь максимальную выгоду из новых технологий. Таким образом, ИТ постепенно смещаются в центр парадигмы управления предприятием. Взаимодействие между технологиями и бизнесом - сложная и комплексная проблема. Оно подвержено влиянию большого числа факторов, включая структуру бизнеса, организационно-функциональное построение предприятия, бизнес-правила, политику, корпоративную культуру, опыт и знания управленцев, внутренние технологические процессы, внешнее окружение.

Вычислительные и телекоммуникационные средства достигли такого уровня развития, а объемы перерабатываемой информации стали настолько велики, что информация стала товаром и важнейшим стратегическим ресурсом. Организации создают ИС, чтобы повысить эффективность и конкурентоспособность своего бизнеса. Это важнейшая, но не единственная причина для создания дорогостоящих систем. Существует много других причин, отличных от сугубо экономических, которые приводят руководителя компании, корпорации, холдинга к необходимости инвестировать средства в информатизацию бизнеса.

Современные архитектуры ИС

По степени распределённости отличают:

настольные (desktop), или локальные ИС, в которых все компоненты (БД, СУБД, клиентские приложения) работают на одном компьютере;

распределённые (distributed) ИС, в которых компоненты распределены по нескольким компьютерам.

Распределённые ИС, в свою очередь, разделяют на

файл-серверные ИС (ИС с архитектурой «файл-сервер»);

клиент-серверные ИС (ИС с архитектурой «клиент-сервер»).

В файл-серверных ИС база данных находится на файловом сервере, а СУБД и клиентские приложения находятся на рабочих станциях.

В клиент-серверных ИС база данных и СУБД находятся на сервере, а на рабочих станциях находятся клиентские приложения.

В свою очередь, клиент-серверные ИС разделяют на двухзвенные и многозвенные.

В двухзвенных (two-tier) ИС всего два типа «звеньев»: сервер баз данных, на котором находятся БД и СУБД, и рабочие станции, на которых находятся клиентские приложения. Клиентские приложения обращаются к СУБД напрямую.

В многозвенных (multi-tier) ИС добавляются промежуточные «звенья»: серверы приложений (application servers). Пользовательские клиентские приложения не обращаются к СУБД напрямую, они взаимодействуют с промежуточными звеньями.

Среда Oracle и ее возможности в создании ИС

Oracle Database 10g - первая в мире база данных, разработанная специально для работы в сетях распределенных вычислений. Oracle Database 10g предназначена для эффективного развертывания на базе различных типов оборудования, от небольших серверов до Oracle Enterprise Grid мощных многопроцессорных серверных систем, от отдельных кластеров до корпоративных распределенных вычислительных систем. Oracle Database 10g позволяет пользователям виртуализировать использование аппаратного обеспечения - серверов и систем хранения данных. Oracle Database 10g обладает технологиями, которые позволяют администраторам надежно хранить и быстро распределять и извлекать данные для пользователей и приложений, работающих в сетях Grid. Oracle Database 10g значительно повышает производительность обработки данных и включает в себя удобные средства администрирования.

Oracle Database 10g предоставляет возможность автоматической настройки и управления, которая делает ее использование простым и экономически выгодным. Ее уникальные возможности осуществлять управление всеми данными предприятия - от обычных операций с бизнес-информацией до динамического многомерного анализа данных (OLAP), операций с документами формата XML, управления распределенной/локальной информацией - делает ее идеальным выбором для выполнения приложений, обеспечивающих обработку оперативных транзакций, интеллектуальный анализ информации, хранение данных и управление информационным наполнением.

Некоторые ключевые возможности Oracle Database 10g:

Real Application Cluster (RAC) обеспечивает работу одного экземпляра базы данных на нескольких узлах grid, позволяя управлять нагрузкой и гибко масштабировать систему в случае необходимости.

Automatic Storage Management (ASM) позволяет автоматически распределять данные между имеющимися ресурсами систем хранения данных, что повышает отказоустойчивость системы и снижает общую стоимость владения (TCO).

Производительность. Oracle Database 10g позволяет автоматически управлять уровнями сервиса и тиражировать эталонные конфигурации в рамках всей сети.

Простые средства разработки. Новый инструмент разработки приложений HTML DB позволит простым пользователям создавать эффективные приложения для работы с базами данных в короткие сроки.

Самоуправление. Специальные механизмы Oracle Database 10g позволяют самостоятельно перераспределять нагрузку на систему, оптимизировать и корректировать SQL-запросы, выявлять и прогнозировать ошибки.

Большие базы данных. Теперь максимальный размер экземпляра базы данных Oracle может достигать 8 экзабайт.

Недорогие серверные системы. Oracle Database 10g может использовать недорогие однопроцессорные компьютеры или модульные системы из "серверов-лезвий".

В новой версии базы данных реализована поддержка переносимых табличных пространств, система управления потоками данных Oracle Streams и модель распределенных SQL-запросов. Для переноса существующих баз данных в среду Grid в них не потребуется вносить изменений, что позволяет быстро начать использовать все преимущества Oracle Database 10g.

Одной из основных характеристик СУБД Oracle является функционирование системы на большинстве платформ, и в том числе на больших ЭВМ, UNIX-серверах, персональных компьютерах и так далее. Другой важной характеристикой является поддержка Oracle всех возможных вариантов архитектур, в том числе симметричных многопроцессорных систем, кластеров, систем с массовым параллелизмом, архитектур мэйнфреймов. Очевидна значимость этих характеристик для современных организаций, где эксплуатируется множество компьютеров различных моделей и производителей. В таких условиях фактором успеха является максимально возможная типизация предлагаемых решений, ставящая своей целью существенное снижение стоимости владения программным обеспечением. Унификация систем управления базами данных - один из наиболее значимых шагов на пути достижения этой цели.

Поддержка Oracle большинства популярных компьютерных платформ и архитектур достигается за счет жесткой технологической схемы разработки кода СУБД. Разработку серверных продуктов выполняет единое подразделение корпорации Oracle, изменения вносятся централизовано, после этого все версии подвергаются тщательному тестированию в базовом варианте, а затем переносятся на все платформы, где также детально проверяются. Возможность переноса Oracle обеспечивается специфической структурой исходного программного кода сервера баз данных. Приблизительно 80% программного кода Oracle - это программы на языке программирования C, который (с известными ограничениями) является платформонезависимым. Примерно 20% кода, представляющее собой ядро СУБД, реализовано на машинно-зависимых языках, и эта часть кода перерабатывается для различных платформ. СУБД Oracle скрывает детали реализации механизмов управления данным на каждой из платформ, что дает основание говорить о практически полной унификации базового программного обеспечения. Дополнительно к этому, архитектура Oracle позволяет переносить прикладные системы, реализованные на одной платформе, на другие платформы без изменений как в структурах баз данных, так и кодов приложений.

Oracle опирается на стандарт SQL-3, позволяющий описывать определения новых типов объектов, состоящих из атрибутов (скалярных - то есть других типов, множеств объектов, ссылок на объекты) и обладающих ассоциированными с ним методами. Любая колонка таблицы может содержать данные базовых или сложных типов, поддерживаются также вложенные таблицы и массивы объектов переменной длины.

Одна из отличительных особенностей Oracle - возможность хранения и обработки различных предопределенных типов данных. Данная функциональность интегрирована в ядро СУБД и поддерживается модулем interMedia в составе Oracle Database. Он обеспечивает работу с текстовыми документами, включая различные виды поиска, в том числе контекстного; работу с графическими образами более 20-ти форматов; работу с аудио- и видео информацией. СУБД Oracle не просто предоставляет расширенный набор встроенных типов данных, но и позволяет конструировать новые типы данных со спецификацией методов доступа к ним. Это означает, что разработчики получают в руки не просто систему для хранения и обработки атрибутивных данных в виде таблиц, а инструмент, позволяющий строить структурированные типы данных, непосредственно отображающие сущности предметной области.

Цели и задачи настоящей работы

Целью данной работы - это разработка и последующее внедрение модуля автоматизируемого учета контрактов на предоставление услуг клиентам на предприятии I.S."RADIOCOMUNICATII". Данный модуль является частью корпоративной информационной системы(КИС) Universal Accounting.

Мотивация выбора темы и ее актуальность

Актуальность и важность данного модуля в том, что руководство предприятия хочет повысить эффективность управления, контроля, учета, скорость работы, сэкономить время, затрачиваемое на работу сотрудниками на ввод информации, снижения числа ошибок персонала и т.д.

Новизна темы

Данный модуль был специально разработан и адаптирован согласно всем пожеланиям руководства предприятия и является оригинальным (не стандартным) модулем комплексной ИС.

Используемые методы и технологии разработки

В данном модуле из технологий и методов разработки следует выделить:

В качестве ядра модуля( и системы в целом) используется СУБД Oracle.

Для создания и настройки интерфейса, шаблонов печатных форм и отчетов были использованы средства FormulaOne, FastReport.

В качестве операционных систем используются Linux( для сервера Oracle) и MS Windows XP(на рабочих местах).

В качестве интегрированной среды разработки (IDE) для разработки пакетов, процедур, функций, триггеров и другого PL/SQL кода использовался TOAD.

В отчетах модуля также использовались аналитические функции OracleBI, для получения необходимых результатов ранжирования, агрегирования и т.д.

Также необходимо упомянуть об использовании заданий(jobs), политик безопасности (policy) и архивировании базы данных (backup) методом DataPump в случаях непредвиденных сбоев и возможного восстановления.

Структура и содержание дипломной работы

В первой главе дипломной работы описываются современные технологии создания и ведения информационных систем. Особое внимание уделено ИС Universal Accounting. Вторая глава посвящена проектированию модуля контрактов на предоставление услуг. В третьей главе описывается реализация модуля контрактов в СУБД Oracle. Четвертая глава отображает вид модуля контрактов со стороны пользователя, показывает расположение модуля в ИС Universal Accounting.

1. СОВРЕМЕННЫЕ ТЕХНОЛОГИИ СОЗДАНИЯ И ВЕДЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ (НА ПРИМЕРЕ ОПИСАНИЯ СИСТЕМЫ UNIVERSAL ACCOUNTING)

.1 Новые направления в развитии информационных систем

Одной из составляющей роста и развития информационной инфраструктуры бизнеса стал процесс развития информационных систем, и, прежде всего, информационных систем управления предприятиями. Специальные стандарты, регламентирующие функции корпоративных ИС не существуют, но, как правило, такие системы ориентируются на широко распространенные методологии MRPII и ERP, разработанные американским обществом по контролю за производством и запасами (American Production and Inventory Control Society, APICS), и фактически являющиеся стандартами управления бизнесом.

1.2 MRP и MRP-II ИС

Исходным стандартом систем управления предприятием является стандарт MRP (Material Requirements Planning), представляющий собой методологию планирования потребности в материалах.

Основная задача, решаемая в рамках методологии MRP, состоит в минимизации издержек посредством эффективного управления материальными запасами.

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

MRP системы разрабатывались для использования на производственных предприятиях.

MRP системы редко используются для планирования материальных потребностей в сервисных, транспортных, торговых и других организациях непроизводственного профиля, хотя потенциально идеи MRP систем могут быть с некоторыми допущениями применены и для непроизводственных предприятий, деятельность которых требует планирования материалов в относительно длительном интервале времени.

Основная идея MRP систем состоит в том, что любая учетная единица материалов или комплектующих, необходимых для производства изделия, должна быть в наличии в нужное время и в нужном количестве.

Логику функционирования системы стандарта MRP можно представить следующей диаграммой (рис. 1.1).

Рис. 1.1 - Структура системы стандарта MRP

На рисунке 1.1 отображены основные информационные элементы системы стандарта MRP. Ее входными элементами являются:

Описание состояния материалов. Является основным входным элементом программы MRP. В нем отражается максимально полная информация обо всех материалах и комплектующих, необходимых для производства конечного продукта.

Программа производства. Представляет собой оптимизированный график распределения времени для производства необходимой партии готовой продукции за планируемый период.

. Перечень составляющих конечного продукта (Bills of Material File, BOM). Список материалов и их количество, требуемое для производства конечного продукта.

Основными результатами использования системы стандарта MRP являются:

. План Заказов. Определяет, какое количество каждого материала должно быть заказано в каждый рассматриваемый период времени в течение срока планирования. План заказов является руководством для дальнейшей работы с поставщиками и, в частности, определяет производственную программу для внутреннего производства комплектующих, при наличии такового.

. Изменения к плану заказов являются модификациями к ранее спланированным заказам. Ряд заказов могут быть отменены, изменены или задержаны, а также перенесены на другой период.

Таким образом, использование системы стандарта MRP для планирования производственных потребностей позволяет обеспечить производство компонентами, требуемыми в соответствии с планом выпуска конечной продукции точно в том количестве и в те сроки, которые обозначены для ее изготовления, тем самым значительно снизить складские издержки и облегчить ведение производственного учета.

Постоянно производившиеся совершенствования систем стандарта MRP привело к созданию расширенной модификации, которую ввиду идентичности аббревиатур назвали MRP-II (Manufactory Resource Planning - планирование производственных ресурсов), стандарт, позволяющий планировать все производственные ресурсы предприятия (сырьё, материалы, оборудование и т.д.).

Согласно APICS, термин «планирование ресурсов производства» (Manufacturing resource planning) - это «...метод эффективного планирования всех ресурсов производственного предприятия. В идеале, он позволяет осуществлять производственное планирование в натуральных единицах измерения, финансовое планирование - в стоимостных единицах измерения и предоставляет возможность осуществлять моделирование с целью ответа на вопросы типа «что будет, если...». Он состоит из множества функций, связанных друг с другом: бизнес-планирование, планирование продаж и операций, планирование производства, формирование главного календарного плана производства, планирование потребности в материалах, планирование потребности в мощностях, система поддержки исполнения планов для производственных мощностей и материалов. Выходные данные от этих систем интегрируются с финансовыми отчетами и документами, такими как бизнес-план, отчет о выполнении закупок, план (бюджет) отгрузки, прогноз запасов в стоимостном выражении и т. д. Планирование ресурсов производства представляет собой прямое продолжение и расширение MRP, работающего по замкнутому циклу».

Характеризуя MRP II в целом, можно сказать, что его механизм опирается на три базовых принципа: иерархичность, интегрированность и интерактивность.

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

Интегрированность обеспечивается объединением всех основных функциональных областей деятельности предприятия на оперативном уровне, связанных с материальными и финансовыми потоками на предприятии. MRP II охватывает такие функции предприятия, как планирование производства, снабжение производства, сбыт продукции, исполнение плана производства, учет затрат, складской учет, управление спросом и т. д.

Интерактивность систем на базе стандарта MRP II обеспечивается заложенным в него блоком моделирования. Существует возможность «проигрывания» вероятных ситуаций на предмет исследования их влияния на результаты деятельности предприятия в целом или его структурных подразделений в частности.

В связи с тем, что часто возникает вопрос об отличиях систем MRP и MRP II, необходимо отметить, что ответ содержится в определении. Первая система осуществляет планирование в основном материальных потребностей для производства.

1.3 Концепция ERP ИС

Дальнейшее развитие концепции MRP-II шло по пути максимального расширения функций и возможностей информационных систем. В результате появилась концепция ERP (Enterprise Resource Planning) - планирование ресурсов предприятия для всех основных видов деятельности.

Системы ERP представляют собой «верхний уровень» в иерархии систем управления предприятием, затрагивающий ключевые аспекты его производственной и коммерческой деятельности, такие как производство, планирование, финансы и бухгалтерия, материально-техническое снабжение и управление кадрами, сбыт, управление запасами, ведение заказов на изготовление (поставку) продукции и предоставление услуг.

Основными отличиями систем основанных на концепции ERP от их предшественников, использующих иные методологии, стали значительно большее внимание финансовым подсистемам и возможность управления «виртуальным предприятием».

Виртуальное предприятие отражает взаимодействие производства, поставщиков, партнеров и потребителей. Оно может состоять из автономно работающих учреждений, корпораций, быть распределено географически или состоять из временного объединения предприятий, работающих над каким-либо проектом. В ERP также добавляются механизмы управления транснациональными корпорациями, включая поддержку нескольких часовых поясов, языков, валют, систем бухгалтерского учета и отчетности. Эти отличия в меньшей степени затрагивают логику и функциональность систем, и в большей степени определяют их инфраструктуру и масштабируемость. Так же их характеризует более высокая гибкость, надежность и производительность.

ERP-системы позволяют решить следующие задачи:

организовать эффективное планирование всей финансовой и хозяйственной деятельности;

повысить доверие инвесторов путем формирования максимальной прозрачности бизнеса;

снизить риски и увеличить прибыль за счет оперативного принятия решений и их точности, интуитивности системы управления, разграничения доступа к информации в соответствии с должностями сотрудников, и реализации функций ее безопасности;

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

Унифицированная природа ERP предоставляет значительные преимущества, включая уменьшение количества ошибок, большую скорость и эффективность доступа к информации. В свою очередь, корректно организованный доступ поможет руководителям быстро ориентироваться в любой ситуации, имеющей место на предприятии, и повысить вероятность принятия правильного решения за счет оперативного информирования о проблеме и ее точного определения.

К особенностям применения современных ERP - систем относятся:

автоматизация разнообразных методов планирования и управления бизнес - процессов от системы заказов до массового производства с возможностью их рационального сочетания и настройки на особенности конкретного предприятия;

интегрированное использование подсистем учета, анализа и планирования сбыта, производства, снабжения и финансирования;

реализация современной технологии бюджетирования и обеспечения динамической увязки необходимых ресурсов по всему спектру бизнес - процессов на основе управленческого учета затрат и анализа консолидированной отчетности;

бизнес планирование и управление отдельными заказами и проектами с учетом возможных рисков во внешней среде и ресурсных ограничений предприятия;

сокращение горизонта оперативного планирования до недель, дней и даже по мере появления каждого нового заказа.

Существует два выбора путей использования ERP: первый выбор - это самостоятельное развитие и разработка интегрированных ERP систем; другой выбор - это использование коммерчески доступного программного обеспечения.

1.4 Система UNIVERSAL ACCOUNTING

Universal Accounting®(UA) (Универсальная бухгалтерия / Contabilitate Universala) - комплексная автоматизированная система бухгалтерско-финансового и управленческого учета/анализа. Universal Accounting® функционирует на всех Windows платформах: Windows 95, 98, МЕ, NT 4.0, NT 5.0, 2000, ХР.

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

UA характеризуется современной технологией хранения и обработки данных, полным набором необходимых настроек, соответствием основным параметрам систем ERP-класса, что позволяет в сжатые сроки комплексно автоматизировать, оптимизировать бизнес-процессы и повысить качество управления. Открытость и унифицированность базы данных на платформе СУБД ORACLE, технология контроля и безопасности дают возможность плавно развивать и сопровождать информационную систему в соответствии с ростом организации. Cистема UA разработана в Молдове с учетом требований Национальных стандартов бухгалтерского учета и Налогового кодекса РМ, являясь оптимальным решением по соотношению "стоимость / функционал" для организаций различных сфер деятельности и масштабов. Универсальность системы подтверждена широким отраслевым покрытием.

Внедрение Universal Accounting® позволяет:

улучшить эффективность управления финансовыми ресурсами и работы менеджеров за счет своевременного предоставления им полной маркетинговой и финансовой информации, необходимой для принятия оперативных и стратегических решений;

своевременно предоставлять качественную отчетность руководству и контролирующим органам в соответствии с внутрикорпоративными правилами и национальными стандартами;

обеспечить контроль хозяйственной деятельности на уровне первичных бухгалтерских документов, а также защиту электронного документооборота между удаленными участниками хозяйственного процесса;

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

Система UA успешно используется не только в столичных организациях, но и по всей территории Молдовы.

Общая характеристика КИС Universal Accounting®:

В основе системы лежит принцип автоматизации всего документооборота, а не только бухгалтерского учета. По сути, это именно система учета и управления, благодаря чему легко отслеживаются перемещения товаров, отгрузки, задолженности, остатки, затраты, продажи и пр. Бухгалтерские проводки генерируются автоматически на основе хозяйственных операций, регистрируемых в системе. Все операции с автоматическим выходом на баланс. Ни одна хозяйственная операция не упускается из виду. Фиксируется все, что происходит на предприятии. Требует повышенной дисциплины и аккуратности от лиц, ответственных за своевременный ввод данных, что благоприятно сказывается на рабочей атмосфере, мотивирует коллектив и облегчает работу менеджеров, позволяя им оперативно контролировать финансовое состояние компании. Система является многопользовательской, т.е. позволяет работать с каждым модулем одновременно нескольким пользователям. Разнообразные отчеты согласно корпоративным правилам и требованиям Национальных стандартов бухгалтерского учета и Налогового кодекса РМ. Удобная настройка, перенастройка и масштабирование отчетов. Быстрое формирование отчетов в различных разрезах. Все отчеты могут быть экспортированы в текстовый формат и продукты MS Office (Word, Excel) для дальнейшей обработки и анализа. Работа пользователей максимально упрощена: графические интерфейсы позволяют ускорить поиск и ввод данных, а стандартный интерфейс Windows интуитивно понятен пользователю. Подсказки, предупреждения, автоматическое отслеживание ошибок при вводе информации, индикация несоответствий в данных - все это помогает работать быстро и эффективно даже бухгалтерам, не очень опытным в компьютерах. Поддержка русского, румынского и английского языков.

База данных системы Universal Accounting® концептуально ориентирована на документарный стиль хранения и обработки информации:

вся информация, требующая обработки во времени, должна быть сформулирована в виде документов;

вся учетная аналитика шифруется по всей системе уникальным сквозным кодом вне зависимости от предметного смысла;

вся дополнительная справочная информация относится к группе вспомогательных справочников;

доступ к аналитике осуществляется посредством определения конфигурации бухгалтерского счета;

каждый документ содержит предметно-специализированную и бухгалтерскую сущность;

все метаданные по типовым конфигурациям хранятся в виде настроек в базе данных.

Во всех документах предусмотрена автоматизированная генерация бухгалтерских проводок. Генерация происходит после внесения специфической для данного документа информации в специальные таблицы. Документы являются объектами, которые вносятся в журнал и составляют содержание финансово-экономической и хозяйственной деятельности предприятия. Удаление документа из журнала приводит к аннулированию сгенерированных им бухгалтерских проводок путем их удаления. Изменение информации в специальных регистрах документа приводит к повторной генерации бухгалтерских проводок (старые удаляются).

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

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

Печатные формы, не привязанные к документам, а отображающие определенную информацию суммарно по всем документам и их проводкам за указанный период, называются отчетами.

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

Далее пользователь запускает модуль второго уровня. Здесь происходит регистрация документов и вспомогательные операции (например, расчет износа, ввод документов и расчет зарплаты, поиск информации и т.п.).

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

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

Начать редактирование ® Закончить редактирование (Сохранить или Отменить).

Интерфейс пользователя - стандартный, Windows-ориентированный.

Главное окно Universal Accounting® - это первичная рабочая область. Все окна открываются из главного окна и содержатся в главном окне. Главное окно является родительским по отношению ко всем остальным, которые являются дочерними. Это означает, что каждое окно относительно самостоятельно, но не может существовать при закрытом главном окне.

Окну каждого типа соответствует свой собственный набор команд и функций, применимых только к объекту данного типа. Все команды и функции главного окна относятся и к дочерним окнам.

Таким образом, интерфейс системы Universal Accounting® принадлежит к классическому типу многодокументного интерфейса (MDI). Главное окно приложения состоит из меню, инструментальной панели, панели состояния и рабочей области окна.

В рабочей области окна размещаются дочерние MDI-окна. Пользователь осуществляет ввод информации только через дочерние окна. Управление дочерними окнами осуществляется только через главное окно.

Дочернее окно имеет следующие состояния по отношению к главному окну:

Скрытое, ранее не использовалось. В таком состоянии находится большинство дочерних окон сразу после старта системы.

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

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

Свернутое. Активное дочернее окно переходит в данное состояния после нажатия на кнопку свертки.

Развернутое. Активное дочернее окно переходит в данное состояния после нажатия на кнопку развертки. Состояние по умолчанию. Все окна переходят в это состояние одновременно.

Нормальное. Все дочерние окна размещены в рабочей области и частично видны. Активное дочернее окно всегда расположено сверху.

Скрытое. Активное дочернее окно переходит в данное состояния после нажатия на кнопку закрытия.

Модальное. Активное дочернее окно блокирует переход в любое другое дочернее окно и даже в главное окно до своего полного закрытия. Например, все окна сообщений об ошибках являются модальными.

Все открытые дочерние окна зарегистрированы через пункт Windows в меню главного окна. Цвет шапки любого дочернего окна отражает состояние окна: активно ли данное окно или нет (по умолчанию синий - активно, серый - неактивно). Переключение между окнами, находящимися в состоянии 2-6 может быть осуществлено через пункт в меню главного окна Windows или путем нажатия клавиш Ctrl+Tab.

Основные логические компоненты Universal Accounting:

Структура базы данных, модель.

План счетов, аналитика.

Проводки.

Журналы документов.

Справочники.

Конфигурации.

Пользователи системы, группы.

Аудит пользователей.

Настройки визуальных объектов.

Раздача прав через конфигуратор.

План счетов - справочник.

Уровни аналитики.

Вспомогательные справочники.

Таблица документов, подчиненные таблицы.

Таблица проводок.

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

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

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

Для получения бухгалтерских итогов, а также другой сводной или детальной информации в Universal Accounting® используются отчеты. Количество и состав отчетов, которые могут быть получены при использовании системы, полностью определяются в конфигурации.

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

Для обеспечения хранения основных данных, которыми оперирует система Universal Accounting®, была разработана структура набора таблиц, отвечающих за хранение информации о начальных остатках на счетах, а также о документах и относящихся к ним проводках. Формирование абсолютного большинства документов в системе сопровождается формированием бухгалтерских проводок, которые отражают информацию, содержащуюся в документе, с приданием ей бухгалтерского смысла. Таким образом, большой спектр отчетных форм может быть построен на основе данных из бухгалтерских регистров. Исключение составляют лишь специальные отчеты, для формирования которых необходима информация, не поддающаяся хранению в виде проводок (например, информация о свойствах тех или иных материалов или реквизитах контрагентов).

В итоге, все отчетные формы можно поделить на две глобальные категории:

отчеты, основанные на данных из бухгалтерских регистров (сальдо, обороты);

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

Хранение данных в виде проводок, позволяет свести вычисление большого количества выходной информации для отчетных форм (и не только) к вычислению сальдо или оборотов по соответствующим наборам счетов (имеются в виду и аналитические счета). Система Universal Accounting® обеспечивает быстрый и надежный механизм выборки данных о сальдо и оборотах по счетам и, соответственно, получение большого набора отчетных форм в единой концепции.

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

Бухгалтерские регистры состоят из двух основных частей: регистра сальдо и регистра проводок. Регистр сальдо хранит данные о сальдо на счетах на определенные моменты времени; регистр проводок хранит бухгалтерские проводки.

Алгоритм вычисления сальдо для набора счетов на заданный момент времени состоит из следующих четырех шагов:

Определяется наиболее поздняя дата зарегистрированного в регистре сальдо, предшествующая заданной дате (предшествующая дата).

По регистру сальдо определяется сальдо на предшествующую дату.

На основании данных, полученных из регистра проводок, вычисляются обороты за период между предшествующей и заданной датами.

Сальдо на предшествующую дату складывается с найденными оборотами.

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

Регистр сальдо предназначен для увеличения скорости вычислений и должен содержать только достоверные данные (чаще всего из уже закрытых учетных периодов).

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

Вычислительное ядро системы Universal Accounting® содержит подпрограммы для вычисления сальдо и оборотов по наборам счетов за заданные промежутки времени. Для вычисления сальдо и оборотов любая подсистема, собирающая данные для отчета, использует упомянутые функции, тем самым, все отчеты реализуются в единой концепции, что разрешает проблему несовпадения результатов в разных отчетных формах.

Открыть список отчетов можно с помощью кнопки  или пунктом Отчеты в меню Модуль. При этом открывается окно, в левой части которого представлено дерево отчетов:

Рис. 1.2 - Дерево отчетов

Используемые пользователями на практике отчеты можно условно разделить на следующие группы.

Универсальные отчеты. Универсальные отчеты предназначены для использования практически в любых организациях и для любых разделов учета. В основном, они отражают бухгалтерские итоги в различных разрезах для любых указываемых счетов, видов субконто, валют. К универсальным относятся такие отчеты как «Оборотно-сальдовая ведомость», «Шахматка», «Анализ счета», «Карточка счета» и другие. Такие отчеты используются очень широко непосредственно при ведении бухгалтерского учета для анализа бухгалтерских итогов на уровне счетов, субсчетов, валют, объектов аналитики, различных периодов и детальных проводок.

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

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

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

правильно установив период расчета для отчетных данных;

задав основной и корреспондирующий наборы фильтров (счет, аналитический счет, центр затрат (в зависимости от счета в роли центра затрат могут быть различные объекты), валюту и пр.);

включив (или выключив) признаки отображения остатков по счетам на начало и конец периода, обороты за период.

Любой отчет в Universal Accounting® формируется предопределенными подпрограммами на основе параметров, которые пользователь вводит в окне настройки.

Внешний вид отчетных форм задается при помощи шаблонов. В менеджере шаблонов пользователь может настроить любой шаблон для выдачи нужной информации, а также создать новый шаблон для существующих отчетов.

Генератор отчетных форм в Universal Accounting® обладает следующими свойствами:

секционное представление шаблонов;

визуальное редактирование шаблонов;

совместимость с форматом электронных таблиц Microsoft Excel 97;

неограниченная длина отчетов;

неограниченное количество группировок;

поддержка в шаблонах пользовательских формул;

возможность предварительного просмотра перед печатью;

полный контроль печати отчетов.

Создание шаблона выходной формы заключается в “рисовании” составных частей, заготовок, из которых затем будет “собрана” готовая выходная форма - отчет. Так как практически все деловые документы имеют “прямоугольную” структуру, шаблоны таких документов удобно создавать в редакторе, способном работать именно с прямоугольными элементами.

Таким редактором и является табличный редактор, входящий в состав системы Universal Accounting®. В процессе создания шаблона отчета можно: вводить в ячейки таблицы разнообразный текст; назначать параметры форматирования как тексту, так и ячейке в целом; изменять высоту строк и ширину столбцов таблицы; включать в шаблон нарисованные элементы - линии и прямоугольники, а также OLE-объекты.

Сам шаблон представляет собой совокупность прямоугольных областей, каждая из которых служит для выдачи какой-то части готового отчета: область для выдачи заголовочной части и шапки табличной части, табличная часть, которая в свою очередь делится на несколько подуровней и так далее. Необходимо иметь в виду, что шаблон отчета зачастую не связан напрямую с готовым отчетом. Таблица шаблона представляет собой набор заготовок, из которых в процессе обработки алгоритма построения отчета складывается готовый отчет.

Формат шаблонов для генератора отчетов был разработан с целью удовлетворения трем основным требованиям: удобство, простота и надежность. Первое требование обеспечивается представлением отчетов в виде электронных таблиц, совместимых с форматом MS Excel. Простота настройки отчетов заключается в секционном представлении шаблонов и отсутствии необходимости указания дополнительных атрибутов для полей отчета, отвечающих за выборку данных из таблиц БД.

Шаблон отчета может состоять из следующих секций:

Title (шапка отчета и табличной части);

Group Header (заголовок группы);

Detail1 (главная секция табличной части или мастер-секция);

Detail2 (подчиненная секция табличной части или секция детализации);

Group Footer (подвал группы);

Summary (подвал отчета).

Первые три колонки шаблона имеют служебное назначение. Тип секции указывается в первой колонке. Вторая колонка предназначена для указания типа группировки секций-групп. Третья колонка зарезервирована для специальных отчетов.

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

Шаблоны отчетов хранятся в виде отдельных файлов с расширением.VTS в общей базе данных.

Справочники:

Universal Accounting® использует справочники трех типов: универсальный аналитический справочник, универсальный системный справочник и специализированные справочники-карточки. Конфигурирование справочников позволяет организовать бухгалтерский учет в разрезе аналитических счетов, использовать наборы записей справочников в различных документах и формах как отдельные самостоятельные справочники. Конфигурирование этих справочников состоит в настройке полей кодов фильтров, которые служат признаком использования записей справочников в том или ином контексте.

Универсальный справочник содержит все позиции аналитического учета независимо от их предметной сущности. Аналитический счет включает уникальный код, наименование, числовые и символьные атрибуты, системные поля и код фильтра и субфильтра. Атрибуты счета могут иметь разный смысл в зависимости от предметной сущности аналитики. Коды фильтра и субфильтра используются для настройки плана счетов в разрезе аналитического учета, где для каждого уровня аналитического учета указываются значения фильтра и субфильтра аналитических кодов. Код фильтра служит критерием, какие карточки будут использоваться для аналитики. Кроме того, коды фильтров позволяют автоматически фильтровать записи справочника в некоторых документах и формах.

Универсальный системный справочник хранит произвольные позиции, отличные от позиций аналитического учета. Структура универсального системного справочника - это три кода, образующих уникальный ключ, наименование позиции справочника, числовой и символьный атрибуты, коды справочных позиций.

Первые два кода используются как коды фильтров справочника. В специальной таблице можно указать, какие фильтры будут определять новый справочник для набора записей универсального справочника. Атрибуты записей справочника могут нести различную смысловую нагрузку в зависимости от используемых фильтров. Таким образом, настройка системы кодов фильтров и интерфейса справочника позволяет использовать универсальный системный справочник в определенных документах, формах, интерфейсах отчетов как отдельный самостоятельный многоуровневый справочник.

Все объекты бухгалтерского, складского и кадрового учета, а также их свойства описываются в справочниках.

Справочники делятся на категории: объекты учета, статьи затрат и доходов, структура компании, юридические и физические лица, не являющиеся контрагентами, описатели цен, ставок и налогов, классификаторы, служебные для обмена информацией о товарах и подчиненные.

2. ПРОЕКТИРОВАНИЕ МОДУЛЯ УЧЕТА КОНТРАКТОВ-УСЛУГ НА ПРЕДПРИЯТИИ «РАДИОКОММУНИКАЦИИ»

Проектирование данного модуля было следующим:

Сначала были разработаны и настроены виды первичных документов контрактов для ввода необходимой информации. Затем, на основании предыдущих документов регистрации контрактов и необходимых алгоритмов расчета, были разработаны документы начисления доходов исходя из действующих контрактов. Далее, были разработаны необходимые печатные формы налоговых накладных и счетов на оплату, которые должны отсылать клиенту, с которым был заключен контракт. И, наконец, разработка отчетности, которая позволяет рассмотреть и проанализировать ситуацию на какой то период времени, по конкретному клиенту и т.д.

2.1 Разработка первичных документов регистрации контрактов

При постановке задачи было выяснено, что существуют различные типы контрактов, согласно которым предоставляются разные виды услуг. Итак, были выявлены следующие типы контрактов:

«Contract radioficare» - контракт на подключение радиоузла(радиоточка - вещание радио посредством кабеля ).

« Contract Telecomunicatii» - контракт на услуги вещания ТВ и RD(радиовещания - вещание посредством передатчиков, устанавливаемых на вышках).

«Contract Suporturi radioficare» - контракт на установку антенн вещания для вспомогательных целей.

«Contract FST» - контракт на аренду технологического пространства.

«Contracte alte servicii» - контракт на прочие операции и услуги.

2.2 Разработка документов начисления доходов от предоставленных услуг. Алгоритмы расчета

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

Описание алгоритмов расчета, согласно каждому типу контракта, представлено ниже:

Документ «(1410) Calculul serviciilor RD fond locativ» начисление доходов от предоставленных услуг контрактов радиофикации(«(1413) Contract radioficare»). Алгоритм загрузки документа:

Выбираются все действующие контракты радиофикации на дату текущего документа. В зависимости от типа загрузки могут грузиться либо все клиенты, либо из какой то определенной группы клиентов.

Далее, если месяц, в котором создается текущий документ, является закрытием полугода(это месяцы июнь и декабрь), то фильтр на «Тип предоставляемой услуги» не применяется. Если месяц завершает квартал года (это месяцы март, июнь, сентябрь и декабрь), то фильтр на «Тип предоставляемой услуги» устанавливается на значения «Lunar» и «Trimestrial». Если месяц текущего документа другой, то на «Тип предоставляемой услуги» устанавливается только на значение «Lunar».

Далее, если валюта контракта отлична от LEI, то происходит перевод всех сумм в других валютах на леи по курсу НБМ на дату текущего документа.

Далее, если у контракта «Тип предоставляемой услуги» «Trimestrial», то рассчитывать суммы надо на 3 месяца. Соответственно, если «Тип предоставляемой услуги» «1 jumatate an», то рассчитывать суммы надо на 6 месяцев.

Если значение поля «НДС» у контракта равно «Inclusiv TVA», то поле «Pret» рассчитывается как поле «Pret»_контракта *(100/( %_НДС +100)), иначе поле «Pret» текущего документа равно полю «Pret» контракта.

Исходя из полей «Pret», НДС и «Cantitatea(luna)» дальше считаются остальные суммы.

Документ «(1415) Calculul serviciilor RD» начисление доходов от предоставленных услуг контрактов радиофикации(«(1413) Contract radioficare») на конкретный контракт одного клиента. Алгоритм загрузки документа:

Сначала в шапке документа выбирается клиент.

Затем выбирается из справочника действующий контракт и добавляется фильтр на контракт.

Дальше алгоритм похож на шаги a.- f. алгоритма документа «(1410) Calculul serviciilor RD fond locativ».

Документ «(1411) Calculul veniturilor din servicii de telecomunicatii» начисление доходов от предоставленных услуг контрактов телекоммуникации(«(1406) Contract Telecomunicatii») на конкретный контракт одного клиента. Алгоритм загрузки документа:

Сначала в шапке документа выбирается клиент.

Затем выбирается из справочника действующий контракт и добавляется фильтр на контракт.

Далее, выбирается максимальная дата спецификации контракта, которая не превышает месяца даты текущего документа.

Если значение поля «НДС» у контракта равно «Inclusiv TVA», то поле «Tarif lei/ora cap.deplina» рассчитывается как поле «Tarif lei»_контракта *(100/( %_НДС +100)), иначе поле «Tarif lei/ora cap.deplina» текущего документа равно полю «Tarif lei» контракта.

Документ «(1412) Calculul veniturilor din servicii FST» начисление доходов от предоставленных услуг контрактов FST(«(1409) Contract FST») на конкретный контракт одного клиента. Алгоритм загрузки документа:

Сначала в шапке документа выбирается клиент.

Затем выбирается из справочника действующий контракт и добавляется фильтр на контракт.

Далее, устанавливается максимальная дата спецификации контракта, которая не превышает месяца даты текущего документа.

Далее, если валюта контракта отлична от LEI, то происходит перевод всех сумм в других валютах на леи по курсу НБМ на дату текущего документа.

Далее, если у контракта «Тип предоставляемой услуги» «Trimestrial», то рассчитывать суммы надо на 3 месяца. Соответственно, если «Тип предоставляемой услуги» «1 jumatate an», то рассчитывать суммы надо на 6 месяцев. Если значение поля «НДС» у контракта равно «Inclusiv TVA», то поле «Plata lunar cf contract» рассчитывается как поле «Tarif ST»_контракта *(100/( %_НДС +100)), иначе поле «Plata lunar cf contract» текущего документа равно полю «Tarif ST» контракта. Документ «(1414) Calculul veniturilor din servicii SR» начисление доходов от предоставленных услуг контрактов по суппорту радиофикации(«(1407) Contract Suporturi radioficare») на конкретный контракт одного клиента. Алгоритм загрузки документа:

Сначала в шапке документа выбирается клиент.

Затем выбирается из справочника действующий контракт и добавляется фильтр на контракт.

Дальше алгоритм похож на шаги a.- f. алгоритма документа «(1410) Calculul serviciilor RD fond locativ».

2.3 Разработка печатных форм для налоговых накладных, счетов на оплату и отчетности

Здесь необходимо отметить разработку следующих печатных форм:

Налоговые накладные (разграфленные).

Налоговые накладные (не разграфленные).

Счет - фактуры к оплате.

Форма расчета объема предоставленных услуг по контракту.

Было разработано 2 отчета согласно требованиям клиента:

Отчет по истории спецификации(Radioficare).

Произвольный отчет по контрактам.

Здесь необходимо отметить использование аналитических функций Oracle:

функции ранжирования.

статистические функции для плавающего интервала.

функции подсчета долей.

статистические функции LAG/LEAD с запаздывающим/опережающим аргументом.

3. РЕАЛИЗАЦИЯ МОДУЛЯ УЧЕТА КОНТРАКТОВ - УСЛУГ В СРЕДЕ ORACLE. ИНТЕРФЕЙС МОДУЛЯ КОНТРАКТОВ

.1 Описание объектов модуля контрактов. ER - диаграмма

ER - диаграмма модуля контрактов выглядит следующим образом:

Рис. 3.1 - ER - диаграмма

Как видно из рис. 3.1 таблица tmdb_docs является «главной» таблицей и отображает журнал документов. Таблица tmdb_cm отображает данные о бухгалтерских проводках документов. Таблица tmdb_reg отображает шапку документа. Таблица tmdb_reg_a отображает данные о датах спецификации контрактов. Таблицы tmdb_reg_a1 и tmdb_reg_a2 отражают основную информацию документа по услугам, предоставляемым согласно заключенному контракту(master таблица документа). Таблицы tmdb_reg_a1d и tmdb_reg_a2d отражают дополнительную информацию документа по услугам, предоставляемым согласно заключенному контракту(detail таблица документа). Более подробно создание таблиц, индексов и ограничений описывается в ПРИЛОЖЕНИИ 1.

Для описанных ранее таблиц были созданы необходимые триггеры. Например, триггер "TRIG_BFUPD_TMDB_DOCS" контролирует обновление журнала документов различными пользователями системы. Триггер "TRG_DOCS_COLOR" отвечает за проводимость документа(Документ меняет цвет при проведении, дезактивации либо удалении проводок). Триггер "XTRIGLOGDOCS" обеспечивает логирование документов. Триггер "TMDB_DOCS_TRLOG" логирует все действия, производимые пользователем в текущем документе. Триггер "TRIG_AFTINS_TMDB_DOCS2" позволяет продублировать документ. Более подробно создание триггеров описывается в ПРИЛОЖЕНИИ 1.

Для генерации уникальных кодов первичных ключей используются последовательности. Последовательность ID_TMDB_CM используется для генерации первичного ключа в таблице tmdb_cm и других таблицах. Последовательность ID_TMDB_DOCS используется для генерации первичного ключа в таблице tmdb_docs. Последовательность ID_TMS_UNIVERS используется для генерации кода в справочнике. Более подробно создание последовательностей описывается в ПРИЛОЖЕНИИ 1.

На основе таблиц были созданы представления. Представление VMDB_DOCS создано на основе таблицы TMDB_DOCS. Представление VMDB_REG создано на основе таблицы TMDB_ REG. Представление VMDB_REG_A создано на основе таблицы TMDB_ REG_A. Представление VMDB_REG_A1 создано на основе таблицы TMDB_REG_A1. Представление VMDB_REG_A2 создано на основе таблицы TMDB_REG_A2. Представление VMDB_REG_A1D создано на основе таблицы TMDB_REG_A1D. Представление VMDB_REG_A2D создано на основе таблицы TMDB_ REG_A2D. Более подробно создание представлений описывается в ПРИЛОЖЕНИИ 1.

Для реализации сложных алгоритмов расчета, создания действий(actions) над документом, генерации отчетов и печатных форм программный код разрабатывался в пакетах. Созданные процедуры и функции в пакетах реализуют программную логику модуля контрактов. Необходимо выделить пакет yrdc_contracts и yrdc_contr_reps. Структура пакетов приведена ниже, а полное описание можно посмотреть в ПРИЛОЖЕНИИ 2.

CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contracts AUTHID CURRENT_USER AS

/******************************************************************************: yrdc_contracts::Date Author Description

-- ---

.0 28.10.2009 1. Created this package.

******************************************************************************/

экшен "Дублирование данных из предыдущей даты"

PROCEDURE contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0);

экшен "Рассчитать суммы"sum_account(p_nrdoc NUMBER,p_type_doc number:=0);

- экшен "Заполнить данными согласно контрактов"

PROCEDURE usl_calc(p_nrdoc NUMBER,p_sysfid NUMBER,p_client number:=-1,p_grp_name varchar2:=null);

экшен "Расчитать НДС"calc_tva(p_nrdoc NUMBER,p_sysfid number);calc_tva_radiof(p_nrdoc NUMBER);calc_tva_telecom(p_nrdoc NUMBER);calc_tva_fst(p_nrdoc NUMBER);

calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null);calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER);calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER);

- action "Sgenerirovati nomera NN" v doc.1421gnr_NN_1421(p_nrdoc number, p_nrdoc1 number);

--

- actioni "Заполнить из групы Servicii RD prestate populatiei" v doc.1421enter_servicii(p_nrdoc number);

--

- action "Sgenerirovati nomera NN" v doc.1204gnr_NN_1204(p_nrdoc number, p_rrowid number);

 заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid - 1411)

PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER);check_date(vdate date);yrdc_contracts;

/

CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contr_reps AS

/******************************************************************************: yrdc_contr_reps::Date Author Description

-- ---

1.0 02.02.2010 1. Created this package.

******************************************************************************/

отчет по истории спецификации, документов контарктов "(1413) Contract radioficare"

PROCEDURE rep_hist_spec(p_datastart date,p_dataend date,p_contr IN LONG,SQLH OUT LONG,SQLM OUT LONG);rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG);GET_CONTRACTS_DATA RETURN LONG; yrdc_contr_reps;


Для заключения контракта на подключение радиоузла был создан документ «(1413) Contract radioficare». В нем указываются реквизиты контракта(бенефициар, дата заключения, валюта контракта, номер контракта, схема оплаты, тип и т.д. ), даты спецификации и данные о предоставляемых услугах.

Документ «(1413) Contract radioficare» выглядит следующим образом:

Рис. 3.2 - Contract radioficare

Для заключения контракта на услуги вещания ТВ и RD был создан документ «(1406) Contract Telecomunicatii». В нем указываются реквизиты контракта(бенефициар, дата заключения, валюта контракта, номер контракта, схема оплаты, тип и т.д. ), даты спецификации и данные о предоставляемых услугах в том числе и данные о дополнительных услугах, необходимых для расчетов в документе доходов.

Документ «(1406) Contract Telecomunicatii» выглядит следующим образом:

Рис. 3.3 - Contract Telecomunicatii

Для заключения контракта на аренду технологического пространства был создан документ «(1409) Contract FST». В нем указываются реквизиты контракта(бенефициар, дата заключения, валюта контракта, номер контракта, схема оплаты, тип и т.д. ), даты спецификации и данные о предоставляемых услугах в том числе и данные о дополнительных услугах, необходимых для расчетов в документе доходов. Документ «(1409) Contract FST» выглядит следующим образом:

Рис. 3.4 - Contract FST

Для заключения контракта на установку антенн вещания для вспомогательных целей был создан документ «(1407) Contract Suporturi radioficare». В нем указываются реквизиты контракта(бенефициар, дата заключения, валюта контракта, номер контракта, схема оплаты, тип и т.д. ), даты спецификации и данные о предоставляемых услугах, необходимых для расчетов в документе доходов.

Документ «(1407) Contract Suporturi radioficare» выглядит следующим образом:

Рис. 3.5 - Contract Suporturi radioficare

Для заключения контракта на прочие операции и услуги был создан документ «(1408) Contracte alte servicii». В нем указываются реквизиты контракта(бенефициар, дата заключения, валюта контракта, номер контракта, схема оплаты, тип и т.д. ), даты спецификации и данные о предоставляемых услугах, необходимых для расчетов в документе доходов.

Документ «(1408) Contracte alte servicii» выглядит следующим образом:

Рис. 3.6 - Contracte alte servicii

3.3 Интерфейс документов начисления доходов от предоставленных услуг

Для начисления доходов от услуг, предоставляемых по контрактам «(1413) Contract radioficare», был создан документ «(1410) Calculul serviciilor RD fond locativ».

Документ «(1410) Calculul serviciilor RD fond locativ» выглядит следующим образом:

Рис. 3.7 - Calculul serviciilor RD fond locativ

Для начисления доходов от услуг, предоставляемых по конкретному контракту «(1413) Contract radioficare», был создан документ «(1415) Calculul serviciilor RD».

Документ «(1415) Calculul serviciilor RD» выглядит следующим образом:

Рис. 3.8 - Calculul serviciilor RD

Для начисления доходов от услуг, предоставляемых по контрактам «(1406) Contract Telecomunicatii», был создан документ «(1411) Calculul veniturilor din servicii de telecomunicatii».

Документ «(1411) Calculul veniturilor din servicii de telecomunicatii» выглядит следующим образом:

Рис. 3.9 - Calculul veniturilor din servicii de telecomunicatii

Для начисления доходов от услуг, предоставляемых по конкретному контракту «(1409) Contract FST», был создан документ «(1412) Calculul veniturilor din servicii FST».

Документ «(1412) Calculul veniturilor din servicii FST» выглядит следующим образом:

Рис. 3.10 - Calculul veniturilor din servicii FST

Для начисления доходов от услуг, предоставляемых по конкретному контракту «(1407) Contract Suporturi radioficare», был создан документ «(1414) Calculul veniturilor din servicii SR».

Документ «(1414) Calculul veniturilor din servicii SR» выглядит следующим образом:

Рис. 3.11 - Calculul veniturilor din servicii SR

3.4 Интерфейс печатных форм модуля контрактов

Для того чтобы выписать счет на оплату клиенту, была создана печатная форма «Счет к оплате», которая в конце месяца (либо квартала, либо полугодия в зависимости от заключенного контракта) распечатывается и отправляется по почте бенефициару.

Печатная форма «Счет к оплате» выглядит следующим образом:

Рис. 3.12 - Счет к оплате

Для того чтобы регистрировать прибыль предприятия, согласно законодательству республики Молдова, была создана печатная форма «Налоговая накладная (разграфленная)», которая в конце месяца(либо квартала, либо полугодия в зависимости от заключенного контракта) распечатывается и отправляется по почте бенефициару.

Печатная форма «Налоговая накладная (разграфленная)» выглядит следующим образом:

Рис. 3.13 - Налоговая накладная (разграфленная)

Для того чтобы регистрировать прибыль предприятия, согласно законодательству республики Молдова, была создана печатная форма «Налоговая накладная (не разграфленная)», которая в конце месяца(либо квартала, либо полугодия в зависимости от заключенного контракта) распечатывается и отправляется по почте бенефициару.

Печатная форма «Налоговая накладная (не разграфленная)» выглядит следующим образом:

Рис. 3.14 - Налоговая накладная (не разграфленная)

Для того чтобы выписать детальную расшифровку по предоставленным услугам, была создана печатная форма «Расчет объема дохода от предоставленных услуг», которая в конце месяца(либо квартала, либо полугодия в зависимости от заключенного контракта) распечатывается и отправляется по почте бенефициару.

Печатная форма «Расчет объема дохода от предоставленных услуг» выглядит следующим образом:

Рис. 3.15 - Расчет объема дохода от предоставленных услуг

3.5 Интерфейс разработанных отчетов модуля контрактов

Для просмотра изменений (количество подключений и отключений согласно истории спецификации контракта) по контрактам «(1413) Contract radioficare» был разработан отчет «Отчет по истории спецификации(Radioficare)». В отчете выбираются период просмотра и клиент (при необходимости просмотра контрактов по конкретному клиенту).

Отчет «Отчет по истории спецификации(Radioficare)» выглядит следующим образом:

Рис. 3.16 - Отчет по истории спецификации(Radioficare). Запуск

Рис. 3.17 - Отчет по истории спецификации(Radioficare). Формирование

Для просмотра произвольной информации по всем контрактам был разработан отчет «Произвольный отчет по контрактам». В отчете выбираются дата, на которую пользователь хочет увидеть информацию, а также интересующие поля контрактов.

Отчет «Произвольный отчет по контрактам» выглядит следующим образом:

Рис. 3.18 - Произвольный отчет по контрактам. Запуск

Рис. 3.19 - Произвольный отчет по контрактам. Формирование

3.6 Модуль контрактов в составе КИС Universal Accounting

Модуль контрактов после данной разработки является частью ИС Universal Accounting на предприятии « I.S. "RADIOCOMUNICATII" ». Все разработанные документы находятся в журнале «Contracte». Выглядит это все следующим образом:

Рис. 3.20 - Модуль контрактов как часть КИС Universal Accounting

ЗАКЛЮЧЕНИЕ

universal accounting контракт регистрация

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

Результаты тестирования показали, что внедрение данного модуля на предприятии «I.S.RADIOCOMUNICATII"» прошло успешно. Из результатов внедрения следует выделить повышение интереса персонала предприятия к работе и, как следствие, увеличение скорости и эффективности работы, экономии времени более чем на 50%, затрачиваемого на механические действия оформления, корректировки, ввода информации; снижение числа ошибок персонала и т.д. Исходя из полученных результатов, можно характеризовать данную разработку (модуль учета контрактов на предоставление услуг) как востребованную, нужную, полезную и сделать вывод о том, что модуль окупится с точки зрения вложенных в него средств.

По окончании работ был подписан акт приемки-сдачи (прикладывается) выполненных работ №3-RDC по модулю учета контрактов, датируемый 15-м апреля 2010 года. Это означает полноценное использование модуля сотрудниками предприятия «I.S. "RADIOCOMUNICATII"» в своей повседневной работе.

ЛИТЕРАТУРА

1.      С. Урман «Oracle. Язык программирования PL/SQL», 2006.

.        Том Кайт «Oracle для профессионалов» Пер. с англ. - СПб.: ООО «ДиаСофтЮП», 2005. - 672 с.

.        Коннор МакДональд, Бек Кристофер «Oracle PL/SQL для профессионалов: практические решения»; Пер. с англ. - СПб.: ООО «ДиаСофтЮП», 2005. - 560 с.

4.      Rick Greenwald, Robert Stackowiak, Gary Dodge, David Klein, Ben Shapiro, Christopher G. Chelliah « Professional Oracle® Programming» Wrox, 2005.

5.      О.Н. Граничин, В.И. Кияев «Информационные технологии в управлении», 2008.

ПРИЛОЖЕНИЕ 1

Создание объектов модуля контрактов

Таблица tmdb_docs, ее индексы и ограничения:

CREATE TABLE TMDB_DOCS

(NUMBER(10) NOT NULL,VARCHAR2(1 BYTE),NUMBER(6),NUMBER(5),NUMBER(5),NUMBER(5),NUMBER(5),NUMBER(5),DATE NOT NULL,VARCHAR2(25 BYTE),VARCHAR2(3 BYTE),NUMBER(10),NUMBER(1) DEFAULT 0 NOT NULL,VARCHAR2(1 BYTE),NUMBER(10),NUMBER(10),CHAR(1 BYTE),CHAR(1 BYTE),INTEGER,INTEGER,PK_TMDB_DOCSKEY

(COD)

);ON TABLE TMDB_DOCS IS 'VSE DOCUMENTI';ON COLUMN TMDB_DOCS.NRSET IS 'the number of bu-area';ON COLUMN TMDB_DOCS.ISGFC IS 'document is CM-integrety 0 - not, 1 - yes';ON COLUMN TMDB_DOCS.DOCCOLOR IS 'document color';ON COLUMN TMDB_DOCS.CODF IS 'px-version attribute';ON COLUMN TMDB_DOCS.TIPOPER IS 'px-version attribute';ON COLUMN TMDB_DOCS.AT2 IS 'Edit document protection';ON COLUMN TMDB_DOCS.AT3 IS '???';ON COLUMN TMDB_DOCS.TIPDOC IS 'cod from sys of paper-type';ON COLUMN TMDB_DOCS.DATAMANUAL IS 'document data (real)';ON COLUMN TMDB_DOCS.NRMANUAL IS 'document number (real)';ON COLUMN TMDB_DOCS.VALUTA IS 'valuta (real) of the document';ON COLUMN TMDB_DOCS.COD IS 'Document cod';ON COLUMN TMDB_DOCS.TIP IS 'Which module';ON COLUMN TMDB_DOCS.SYSFID IS 'Document type';ON COLUMN TMDB_DOCS.USERID IS 'user id';ON COLUMN TMDB_DOCS.AT1 IS 'document is hidden, 0 - is not hidden, 1 - hidden';UNIQUE INDEX CN$DOCSCODDATA ON TMDB_DOCS

(COD, DATAMANUAL);TABLE TMDB_DOCS ADD (CN$DOCSCODDATA(COD, DATAMANUAL));

Таблица tmdb_reg, ее индексы и ограничения:

CREATE TABLE TMDB_REG

(INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_PK ON TMDB_REG

(NRDOC);TABLE TMDB_REG ADD (TMDB_REG_PKKEY

(NRDOC));TABLE TMDB_REG ADD (TMDB_REG_FKKEY (NRDOC)TMDB_DOCS (COD)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Таблица tmdb_reg_a, ее индексы и ограничения:

CREATE TABLE TMDB_REG_A

(INTEGER NOT NULL,INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_A_PK ON TMDB_REG_A

(NRDOC, NRDOC1);INDEX TMDB_REG_A_FK ON TMDB_REG_A

(NRDOC);TABLE TMDB_REG_A ADD (TMDB_REG_A_PKKEY

(NRDOC, NRDOC1));TABLE TMDB_REG_A ADD (TMDB_REG_A_FKKEY (NRDOC)TMDB_DOCS (COD)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Таблица tmdb_reg_a1, ее индексы и ограничения:

CREATE TABLE TMDB_REG_A1

(INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_A1_PK ON TMDB_REG_A1

(NRDOC, NRDOC1, NRDOC2);INDEX TMDB_REG_A1_FK ON TMDB_REG_A1

(NRDOC, NRDOC1);TABLE TMDB_REG_A1 ADD (TMDB_REG_A1_PKKEY

(NRDOC, NRDOC1, NRDOC2));TABLE TMDB_REG_A1 ADD (TMDB_REG_A1_FKKEY (NRDOC, NRDOC1)TMDB_REG_A (NRDOC,NRDOC1)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Таблица tmdb_reg_a1d, ее индексы и ограничения:

CREATE TABLE TMDB_REG_A1D

(INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_A1D_PK ON TMDB_REG_A1D

(NRDOC, NRDOC1, NRDOC2, NRDOC3);INDEX TMDB_REG_A1D_FK ON TMDB_REG_A1D

(NRDOC, NRDOC1, NRDOC2);TABLE TMDB_REG_A1D ADD (TMDB_REG_A1D_PKKEY

(NRDOC, NRDOC1, NRDOC2, NRDOC3));TABLE TMDB_REG_A1D ADD (TMDB_REG_A1D_FKKEY (NRDOC, NRDOC1, NRDOC2)TMDB_REG_A1 (NRDOC,NRDOC1,NRDOC2)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Таблица tmdb_reg_a2, ее индексы и ограничения:

CREATE TABLE TMDB_REG_A2

(INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_A2_PK ON TMDB_REG_A2

(NRDOC, NRDOC1, NRDOC2);INDEX TMDB_REG_A2_FK ON TMDB_REG_A2

(NRDOC, NRDOC1);TABLE TMDB_REG_A2 ADD (TMDB_REG_A2_PKKEY

(NRDOC, NRDOC1, NRDOC2));TABLE TMDB_REG_A2 ADD (TMDB_REG_A2_FKKEY (NRDOC, NRDOC1)TMDB_REG_A (NRDOC,NRDOC1)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Таблица tmdb_reg_a2d, ее индексы и ограничения:

CREATE TABLE TMDB_REG_A2D

(INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,INTEGER NOT NULL,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),VARCHAR2(100 BYTE),DATE,DATE,DATE,DATE,DATE,NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),NUMBER(38,2),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),CHAR(3 BYTE),NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER

);UNIQUE INDEX TMDB_REG_A2D_PK ON TMDB_REG_A2D

(NRDOC, NRDOC1, NRDOC2, NRDOC3);INDEX TMDB_REG_A2D_FK ON TMDB_REG_A2D

(NRDOC, NRDOC1, NRDOC2);TABLE TMDB_REG_A2D ADD (TMDB_REG_A2D_PKKEY

(NRDOC, NRDOC1, NRDOC2, NRDOC3));TABLE TMDB_REG_A2D ADD (TMDB_REG_A2D_FKKEY (NRDOC, NRDOC1, NRDOC2)TMDB_REG_A2 (NRDOC,NRDOC1,NRDOC2)DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);

Триггеры:OR REPLACE TRIGGER RADIOCOM."TRIG_BFUPD_TMDB_DOCS"UPDATE ON TMDB_DOCSEACH ROW_admin int:=caseSYS_CONTEXT('envun4','iniparam_ADMINLEVEL')='1'1 else 0 end;_leave int:=caseNVL(SYS_CONTEXT('envun4','PARAM_DontUpdateDocsUserid'),v_admin)='1'1 else 0 end;:NEW.COD<>:OLD.COD THEN_APPLICATION_ERROR(-20101,'NoNo');IF;:NEW.DATAMANUAL<>:OLD.DATAMANUAL THENTMDB_CM SET DATA=:NEW.DATAMANUAL WHERE NRDOC=:NEW.COD;IF;v_leave<>1 THENUSERID INTO:NEW.USERID FROM TPARAMS;IF;:NEW.USERID=0 THEN_APPLICATION_ERROR(-20101,

'Ошибка идентификации пользователя (USERID=0). Редактирование запрещено.');

END IF;

END;OR REPLACE TRIGGER RADIOCOM."TRG_DOCS_COLOR"INSERT OR UPDATE ON TMDB_DOCSEACH ROW(.AT1 IS NULL AND sys_context('envun4','dont_fire_trigger') IS NULL

)'-' INTO:NEW.DOCCOLOR FROM VMDB_DOCS_ADDCOD=:NEW.COD AND RECALC_NRDOC IS NOT NULL;WHEN NO_DATA_FOUND THEN'' INTO:NEW.DOCCOLOR FROM VMDB_CMI WHERE NRDOC=:NEW.COD AND ROWNUM=1;WHEN NO_DATA_FOUND THEN

:NEW.DOCCOLOR:='`';;;OR REPLACE TRIGGER RADIOCOM."XTRIGLOGDOCS"INSERT OR UPDATE OR DELETE ON TMDB_DOCSEACH ROWINSERTING THEN$XLOG.INLOG('DOCS',:NEW.cod,'insert');UPDATINGUN$XLOG.INLOG('DOCS',:NEW.cod,'update');$XLOG.INLOG('DOCS',:OLD.cod,'delete');IF;WHEN OTHERS THEN;;OR REPLACE TRIGGER RADIOCOM."TMDB_DOCS_TRLOG"INSERT OR UPDATE OR DELETE ON TMDB_DOCSEACH ROWAUTONOMOUS_TRANSACTION;INT:=SYS_CONTEXT('ENVUN4','PARAM_USERID');VARCHAR2(30);VARCHAR2(100);INSERTING THEN:='NEW DOC';DELETING THEN:='DEL DOC';UPDATING THEN:='CHG'||WHEN 0||:OLD.USERID<>0||:NEW.USERID THEN ' USERID' END||WHEN 0||:OLD.DATAMANUAL<>0||:NEW.DATAMANUAL THEN ' DATAMANUAL' END||WHEN 0||:OLD.NRSET<>0||:NEW.NRSET THEN ' NRSET' END||WHEN 0||:OLD.SYSFID<>0||:NEW.SYSFID THEN ' SYSFID' END||WHEN 0||:OLD.NRMANUAL<>0||:NEW.NRMANUAL THEN ' NRMANUAL' END||WHEN 0||:OLD.AT1<>0||:NEW.AT1 THEN ' AT1' END||WHEN 0||:OLD.AT2<>0||:NEW.AT2 THEN ' AT2' END||WHEN 0||:OLD.F<>0||:NEW.F THEN ' F' END||WHEN 0||:OLD.M<>0||:NEW.M THEN ' M' END||WHEN 0||:OLD.DIV<>0||:NEW.DIV THEN ' DIV' END;cReason='CHG' THEN;IF;IF;

-:=un$userparams.GetUserName(nUserId);

-INTO TMDB_DOCS_LOG (NRDOC,USERID,USERNAME,ACTION

,OLD_DATA,NEW_DATA,OLD_NRSET,NEW_NRSET,OLD_SYSFID,NEW_SYSFID

,OLD_NRMANUAL,NEW_NRMANUAL,OLD_USERID,NEW_USERID

,OLD_AT1,NEW_AT1,OLD_AT2,NEW_AT2,OLD_AT3,NEW_AT3

,OLD_F,NEW_F,OLD_M,NEW_M,OLD_DIV,NEW_DIV)(NVL(:NEW.COD,:OLD.COD),nUserId,cUserName,cReason

,:OLD.DATAMANUAL,:NEW.DATAMANUAL,:OLD.NRSET,:NEW.NRSET,:OLD.SYSFID,:NEW.SYSFID

,:OLD.NRMANUAL,:NEW.NRMANUAL,:OLD.USERID,:NEW.USERID

,:OLD.AT1,:NEW.AT1,:OLD.AT2,:NEW.AT2,:OLD.AT3,:NEW.AT3

,:OLD.F,:NEW.F,:OLD.M,:NEW.M,:OLD.DIV,:NEW.DIV);;WHEN OTHERS THEN;;

OR REPLACE TRIGGER RADIOCOM."TRIG_AFTINS_TMDB_DOCS2"INSERT ON TMDB_DOCSEACH ROW(

||SYS_CONTEXT('USERENV','ACTION',11)<>'0SYS_IMPORT_'

)_Recalc_Tip VARCHAR2(2):=SYS_CONTEXT('envun4','CopyDocRecalcTip',2);_Recalc_Nrdoc INT:=WHEN v_Recalc_Tip IN ('1','2') THEN SYS_CONTEXT('envun4','CopyDocSourceNrdoc') END;_Test_Cod VARCHAR2(30):=SYS_CONTEXT('envun4','un$test',30);INTO TMDB_DOCS_ADD (COD,FIRST_USERID,RECALC_NRDOC,RECALC_TIP,TEST_COD)(:NEW.COD,:NEW.USERID,v_Recalc_Nrdoc,v_Recalc_Tip,v_Test_Cod);WHEN DUP_VAL_ON_INDEX THENTMDB_DOCS_ADDFIRST_USERID=:NEW.USERID

,RECALC_NRDOC=v_Recalc_Nrdoc,RECALC_TIP=v_Recalc_Tip,TEST_COD=v_Test_CodCOD=:NEW.COD;;

Последовательности:SEQUENCE RADIOCOM.ID_TMDB_CMWITH 1999999999150;SEQUENCE RADIOCOM.ID_TMDB_DOCSWITH 117589999999999999999999999999990;SEQUENCE RADIOCOM.ID_TMS_UNIVERSWITH 457269999999999999999999999999991;

Представления:

CREATE OR REPLACE VIEW VMDB_DOCSCOD,TIP

,SYSFID,(SELECT DENUMIREA FROM vMS_SYSF WHERE ID=A.SYSFID) AS clcOPERATIAt

,USERID,(SELECT USERNAME FROM XUSERS WHERE COD=A.USERID) AS clcUSERt

,AT1,AT2,AT3

,TIPDOC,(SELECT DENUMIREA FROM VMS_SYSS WHERE TIP='S' AND COD=7 AND COD1=A.TIPDOC) AS clcTIPDOCt

,DATAMANUAL,NRMANUAL,VALUTA,NRSET,ISGFC,DOCCOLOR,CODF,TIPOPER

,DIV,(SELECT DENUMIREA FROM VMS_UNIVERS WHERE COD=A.DIV) AS clcDIVt

,STATUS,(SELECT DENUMIREA FROM VMS_UNIVERS WHERE COD=A.STATUS) AS clcSTATUStTMDB_DOCS A;OR REPLACE VIEW VMDB_REGA."NRDOC",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG A;OR REPLACE VIEW VMDB_REG_AA."NRDOC",A."NRDOC1",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG_A A;OR REPLACE VIEW VMDB_REG_A1A."NRDOC",A."NRDOC1",A."NRDOC2",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG_A1 A;OR REPLACE VIEW VMDB_REG_A1DA."NRDOC",A."NRDOC1",A."NRDOC2",A."NRDOC3",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG_A1D A;OR REPLACE VIEW VMDB_REG_A2A."NRDOC",A."NRDOC1",A."NRDOC2",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG_A2 A;OR REPLACE VIEW VMDB_REG_A2DA."NRDOC",A."NRDOC1",A."NRDOC2",A."NRDOC3",A."SUMA0",A."SUMA1",A."SUMA2",A."SUMA3",A."SUMA4",A."SUMA5",A."SUMA6",A."SUMA7",A."SUMA8",A."SUMA9",A."DT",A."DT1",A."DTSC0",A."DTSC1",A."DTSC2",A."DTSC3",A."DTSC4",A."DTSC5",A."DTSC6",A."DTSC7",A."DTSC8",A."DTSC9",A."DTNUM0",A."DTNUM1",A."DTNUM2",A."DTNUM3",A."DTNUM4",A."DTNUM5",A."DTNUM6",A."DTNUM7",A."DTNUM8",A."DTNUM9",A."DTSTR0",A."DTSTR1",A."DTSTR2",A."DTSTR3",A."DTSTR4",A."DTSTR5",A."DTSTR6",A."DTSTR7",A."DTSTR8",A."DTSTR9",A."DTDATA0",A."DTDATA1",A."DTDATA2",A."DTDATA3",A."DTDATA4",A."DTSUMAVAL0",A."DTSUMAVAL1",A."DTSUMAVAL2",A."DTSUMAVAL3",A."DTSUMAVAL4",A."DTVALUTA0",A."DTVALUTA1",A."DTVALUTA2",A."DTVALUTA3",A."DTVALUTA4",A."DTCANT0",A."DTCANT1",A."DTCANT2",A."DTCANT3",A."DTCANT4",A."DTCANT5",A."DTCANT6",A."DTCANT7",A."DTCANT8",A."DTCANT9",A."CT",A."CT1",A."CTSC0",A."CTSC1",A."CTSC2",A."CTSC3",A."CTSC4",A."CTSC5",A."CTSC6",A."CTSC7",A."CTSC8",A."CTSC9",A."CTNUM0",A."CTNUM1",A."CTNUM2",A."CTNUM3",A."CTNUM4",A."CTNUM5",A."CTNUM6",A."CTNUM7",A."CTNUM8",A."CTNUM9",A."CTSTR0",A."CTSTR1",A."CTSTR2",A."CTSTR3",A."CTSTR4",A."CTSTR5",A."CTSTR6",A."CTSTR7",A."CTSTR8",A."CTSTR9",A."CTDATA0",A."CTDATA1",A."CTDATA2",A."CTDATA3",A."CTDATA4",A."CTSUMAVAL0",A."CTSUMAVAL1",A."CTSUMAVAL2",A."CTSUMAVAL3",A."CTSUMAVAL4",A."CTVALUTA0",A."CTVALUTA1",A."CTVALUTA2",A."CTVALUTA3",A."CTVALUTA4",A."CTCANT0",A."CTCANT1",A."CTCANT2",A."CTCANT3",A."CTCANT4",A."CTCANT5",A."CTCANT6",A."CTCANT7",A."CTCANT8",A."CTCANT9"

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC0)CLCDTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC1)CLCDTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC2)CLCDTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC3)CLCDTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC4)CLCDTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC5)CLCDTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC6)CLCDTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC7)CLCDTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC8)CLCDTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.DTSC9)CLCDTSC9T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC0)CLCCTSC0T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC1)CLCCTSC1T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC2)CLCCTSC2T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC3)CLCCTSC3T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC4)CLCCTSC4T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC5)CLCCTSC5T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC6)CLCCTSC6T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC7)CLCCTSC7T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC8)CLCCTSC8T

,(SELECT DENUMIREA FROM TMS_UNIVERS WHERE COD=A.CTSC9)CLCCTSC9TTMDB_REG_A2D A;

Пакеты, процедуры и функции:

CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contracts AUTHID CURRENT_USER AS

/******************************************************************************: yrdc_contracts::Date Author Description

-- ---

.0 28.10.2009 1. Created this package.

******************************************************************************/

экшен "Дублирование данных из предыдущей даты"

PROCEDURE contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0);

экшен "Рассчитать суммы"sum_account(p_nrdoc NUMBER,p_type_doc number:=0);

- экшен "Заполнить данными согласно контрактов"

PROCEDURE usl_calc(p_nrdoc NUMBER,p_sysfid NUMBER,p_client number:=-1,p_grp_name varchar2:=null);

экшен "Расчитать НДС"calc_tva(p_nrdoc NUMBER,p_sysfid number);calc_tva_radiof(p_nrdoc NUMBER);calc_tva_telecom(p_nrdoc NUMBER);calc_tva_fst(p_nrdoc NUMBER);

calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null);calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER);calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER);

- action "Sgenerirovati nomera NN" v doc.1421gnr_NN_1421(p_nrdoc number, p_nrdoc1 number);

--

- actioni "Заполнить из групы Servicii RD prestate populatiei" v doc.1421enter_servicii(p_nrdoc number);

--

- action "Sgenerirovati nomera NN" v doc.1204gnr_NN_1204(p_nrdoc number, p_rrowid number);

 заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid - 1411)

PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER);check_date(vdate date);yrdc_contracts;

/

CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contr_reps AS

/******************************************************************************: yrdc_contr_reps::Date Author Description

-- ---

1.0 02.02.2010 1. Created this package.

******************************************************************************/

отчет по истории спецификации, документов контарктов "(1413) Contract radioficare"

PROCEDURE rep_hist_spec(p_datastart date,p_dataend date,p_contr IN LONG,SQLH OUT LONG,SQLM OUT LONG);rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG);GET_CONTRACTS_DATA RETURN LONG;yrdc_contr_reps;

ПРИЛОЖЕНИЕ 2

Программный код для модуля контрактов

CREATE OR REPLACE PACKAGE BODY RADIOCOM.yrdc_contracts AS

/******************************************************************************: yrdc_contracts:

:Date Author Description

-- ---

.0 28.10.2009 1. Created this package body.

******************************************************************************/contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0)_nrdoc1 number;_nrdoc1_new number;

выбираем nrdoc1 у которого максимальная дата спецификации в документе

execute immediate 'select nrdoc1TMDB_reg_A aa.DTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc)a.nrdoc=:1 ' into v_nrdoc1 using p_nrdoc;

заполнение TMDB_reg_Aimmediate 'into TMDB_reg_ANRDOC,ID_TMDB_CM.NEXTVAL nrdoc1,SUMA0, SUMA1, SUMA2, SUMA3, SUMA4, SUMA5, SUMA6, SUMA7, SUMA8, SUMA9, DT, DT1, DTSC0, DTSC1, DTSC2, DTSC3, DTSC4, DTSC5, DTSC6, DTSC7, DTSC8, DTSC9, DTNUM0, DTNUM1, DTNUM2, DTNUM3, DTNUM4, DTNUM5, DTNUM6, DTNUM7, DTNUM8, DTNUM9, DTSTR0, DTSTR1, DTSTR2, DTSTR3, DTSTR4, DTSTR5, DTSTR6, DTSTR7, DTSTR8, DTSTR9, '''||p_dataspec_new||''' DTDATA0, DTDATA1, DTDATA2, DTDATA3, DTDATA4, DTSUMAVAL0, DTSUMAVAL1, DTSUMAVAL2, DTSUMAVAL3, DTSUMAVAL4, DTVALUTA0, DTVALUTA1, DTVALUTA2, DTVALUTA3, DTVALUTA4, DTCANT0, DTCANT1, DTCANT2, DTCANT3, DTCANT4, DTCANT5, DTCANT6, DTCANT7, DTCANT8, DTCANT9, CT, CT1, CTSC0, CTSC1, CTSC2, CTSC3, CTSC4, CTSC5, CTSC6, CTSC7, CTSC8, CTSC9, CTNUM0, CTNUM1, CTNUM2, CTNUM3, CTNUM4, CTNUM5, CTNUM6, CTNUM7, CTNUM8, CTNUM9, CTSTR0, CTSTR1, CTSTR2, CTSTR3, CTSTR4, CTSTR5, CTSTR6, CTSTR7, CTSTR8, CTSTR9, CTDATA0, CTDATA1, CTDATA2, CTDATA3, CTDATA4, CTSUMAVAL0, CTSUMAVAL1, CTSUMAVAL2, CTSUMAVAL3, CTSUMAVAL4, CTVALUTA0, CTVALUTA1, CTVALUTA2, CTVALUTA3, CTVALUTA4, CTCANT0, CTCANT1, CTCANT2, CTCANT3, CTCANT4, CTCANT5, CTCANT6, CTCANT7, CTCANT8, CTCANT9TMDB_reg_A where nrdoc=:1 and nrdoc1=:2'p_nrdoc,v_nrdoc1;

заполнение TMDB_reg_A1

выбираем nrdoc1 новой даты спецификации

execute immediate 'select nrdoc1TMDB_reg_A aa.DTDATA0=:1a.nrdoc=:2 ' into v_nrdoc1_new using p_dataspec_new,p_nrdoc;

в ctnum9 кидаем порядковый номер строки,(понадобится для дальнейшего заполнения TMDB_reg_A1D)

execute immediate 'into TMDB_reg_A1NRDOC,'||v_nrdoc1_new||' NRDOC1,ID_TMDB_CM.NEXTVAL NRDOC2, SUMA0, SUMA1, SUMA2, SUMA3, SUMA4, SUMA5, SUMA6, SUMA7, SUMA8, SUMA9, DT, DT1, DTSC0, DTSC1, DTSC2, DTSC3, DTSC4, DTSC5, DTSC6, DTSC7, DTSC8, DTSC9, DTNUM0, DTNUM1, DTNUM2, DTNUM3, DTNUM4, DTNUM5, DTNUM6, DTNUM7, DTNUM8, DTNUM9, DTSTR0, DTSTR1, DTSTR2, DTSTR3, DTSTR4, DTSTR5, DTSTR6, DTSTR7, DTSTR8, DTSTR9, DTDATA0, DTDATA1, DTDATA2, DTDATA3, DTDATA4, DTSUMAVAL0, DTSUMAVAL1, DTSUMAVAL2, DTSUMAVAL3, DTSUMAVAL4, DTVALUTA0, DTVALUTA1, DTVALUTA2, DTVALUTA3, DTVALUTA4, DTCANT0, DTCANT1, DTCANT2, DTCANT3, DTCANT4, DTCANT5, DTCANT6, DTCANT7, DTCANT8, DTCANT9, CT, CT1, CTSC0, CTSC1, CTSC2, CTSC3, CTSC4, CTSC5, CTSC6, CTSC7, CTSC8, CTSC9, CTNUM0, CTNUM1, CTNUM2, CTNUM3, CTNUM4, CTNUM5, CTNUM6, CTNUM7, CTNUM8,row_number()over(order by nrdoc2) CTNUM9, CTSTR0, CTSTR1, CTSTR2, CTSTR3, CTSTR4, CTSTR5, CTSTR6, CTSTR7, CTSTR8, CTSTR9, CTDATA0, CTDATA1, CTDATA2, CTDATA3, CTDATA4, CTSUMAVAL0, CTSUMAVAL1, CTSUMAVAL2, CTSUMAVAL3, CTSUMAVAL4, CTVALUTA0, CTVALUTA1, CTVALUTA2, CTVALUTA3, CTVALUTA4, CTCANT0, CTCANT1, CTCANT2, CTCANT3, CTCANT4, CTCANT5, CTCANT6, CTCANT7, CTCANT8, CTCANT9TMDB_reg_A1 where nrdoc=:1 and nrdoc1=:2p_nrdoc,v_nrdoc1;p_type_dubl=0 then

заполнение TMDB_reg_A1Di in (select nrdoc2,ctnum9 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1_new)loopimmediate 'into TMDB_reg_A1DNRDOC,'||v_nrdoc1_new||' NRDOC1,'||i.nrdoc2||' NRDOC2,ID_TMDB_CM.NEXTVAL NRDOC3, SUMA0, SUMA1, SUMA2, SUMA3, SUMA4, SUMA5, SUMA6, SUMA7, SUMA8, SUMA9, DT, DT1, DTSC0, DTSC1, DTSC2, DTSC3, DTSC4, DTSC5, DTSC6, DTSC7, DTSC8, DTSC9, DTNUM0, DTNUM1, DTNUM2, DTNUM3, DTNUM4, DTNUM5, DTNUM6, DTNUM7, DTNUM8, DTNUM9, DTSTR0, DTSTR1, DTSTR2, DTSTR3, DTSTR4, DTSTR5, DTSTR6, DTSTR7, DTSTR8, DTSTR9, DTDATA0, DTDATA1, DTDATA2, DTDATA3, DTDATA4, DTSUMAVAL0, DTSUMAVAL1, DTSUMAVAL2, DTSUMAVAL3, DTSUMAVAL4, DTVALUTA0, DTVALUTA1, DTVALUTA2, DTVALUTA3, DTVALUTA4, DTCANT0, DTCANT1, DTCANT2, DTCANT3, DTCANT4, DTCANT5, DTCANT6, DTCANT7, DTCANT8, DTCANT9, CT, CT1, CTSC0, CTSC1, CTSC2, CTSC3, CTSC4, CTSC5, CTSC6, CTSC7, CTSC8, CTSC9, CTNUM0, CTNUM1, CTNUM2, CTNUM3, CTNUM4, CTNUM5, CTNUM6, CTNUM7, CTNUM8, CTNUM9, CTSTR0, CTSTR1, CTSTR2, CTSTR3, CTSTR4, CTSTR5, CTSTR6, CTSTR7, CTSTR8, CTSTR9, CTDATA0, CTDATA1, CTDATA2, CTDATA3, CTDATA4, CTSUMAVAL0, CTSUMAVAL1, CTSUMAVAL2, CTSUMAVAL3, CTSUMAVAL4, CTVALUTA0, CTVALUTA1, CTVALUTA2, CTVALUTA3, CTVALUTA4, CTCANT0, CTCANT1, CTCANT2, CTCANT3, CTCANT4, CTCANT5, CTCANT6, CTCANT7, CTCANT8, CTCANT9TMDB_reg_A1D d where nrdoc=:1 and nrdoc1=:2nrdoc2=(select nrdoc2(select nrdoc2,row_number()over(order by nrdoc2) rn from TMDB_reg_A1 aa.nrdoc='||p_nrdoc||' and a.nrdoc1='||v_nrdoc1||' )arn=:3)p_nrdoc,v_nrdoc1,i.ctnum9;loop;if;;

sum_account(p_nrdoc NUMBER,p_type_doc number:=0)_nrdoc1 number;_sysfid number;

/*v_tipcalc integer;*/

begin

выбираем nrdoc1 у которого максимальная дата спецификации в документе

execute immediate 'select nrdoc1TMDB_reg_A aa.DTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc)a.nrdoc=:1 ' into v_nrdoc1 using p_nrdoc;

-

immediate 'select sysfidTMDB_DOCS a where cod=:1' into v_sysfid using p_nrdoc;

(1406) Contract Telecomunicatiiv_sysfid=1406 theni in(select nrdoc,nrdoc1,nrdoc2,dtnum1 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loopi.dtnum1=1 thenTMDB_reg_A1D a1Dsuma1=(case when (select u.gr1 from vms_univers u where u.cod=a1d.dtsc0)='LRR'a1d.dtcant0*a1d.dtcant2*a1d.dtcant3a1d.dtcant2*a1d.dtcant3 end)nrdoc=p_nrdoc and nrdoc1= v_nrdoc1 and nrdoc2=i.nrdoc2;

-' using p_nrdoc,v_nrdoc1,i.nrdoc2;immediate 'update TMDB_reg_A1D a1Dsuma1=a1d.dtcant3nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3

' using p_nrdoc,v_nrdoc1,i.nrdoc2;if;immediate 'update TMDB_reg_A1 a1SUMA1=(select sum(SUMA1) from TMDB_reg_A1D da1.nrdoc=d.nrdoc and a1.nrdoc1=d.nrdoc1 and a1.nrdoc2=d.nrdoc2 )a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3

' using i.nrdoc,i.nrdoc1,i.nrdoc2;loop;immediate 'update TMDB_reg rsuma2=(select sum(suma1) from TMDB_reg_A1 a1 where r.nrdoc=a1.nrdoc and a1.nrdoc1=:1)nrdoc=:2

'using v_nrdoc1,p_nrdoc;;v_sysfid=1408 thenimmediate 'update TMDB_reg rsuma2=(select sum(suma1) from TMDB_reg_A1 a1 where r.nrdoc=a1.nrdoc and a1.nrdoc1=:1)nrdoc=:2

'using v_nrdoc1,p_nrdoc;;v_sysfid=1409 theni in(select nrdoc,nrdoc1,nrdoc2 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loopimmediate 'update TMDB_reg_A1 a1dtcant0=(select sum(SUMA0) from TMDB_reg_A1D da1.nrdoc=d.nrdoc and a1.nrdoc1=d.nrdoc1 and a1.nrdoc2=d.nrdoc2 )a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3

' using i.nrdoc,i.nrdoc1,i.nrdoc2;loop;;v_sysfid=1407 or v_sysfid=1413 theni in(select nrdoc,nrdoc1,nrdoc2 from TMDB_reg_A1nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loopimmediate 'update TMDB_reg_A1 a1suma1=dtcant0*suma0a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3

' using i.nrdoc,i.nrdoc1,i.nrdoc2; loop;

end;

else msg('Данный экшен не предназначен для этого типа документа');

end case;;usl_calc(p_nrdoc NUMBER,p_sysfid NUMBER,p_client number:=-1,p_grp_name varchar2:=null)long;_contr number;

очистка документаp_sysfid not in(1406,1409) then

если sysfid=1413 и sys_context('envun4','filt_contract')=1, перед удалением берем значение контракта(из шапки ctnum0)

if (p_sysfid=1413 or p_sysfid=1407) and sys_context('envun4','filt_contract')=1 thenimmediate 'select CTNUM0 from tmdb_reg_a where nrdoc='||p_nrdoc into v_contr;if;immediate 'delete from TMDB_REG_A where nrdoc=:1' using p_nrdoc;if;immediate 'delete from TMDB_REG_A2 where nrdoc=:1' using p_nrdoc;immediate 'delete from TMDB_REG_A2D where nrdoc=:1' using p_nrdoc;

contract telecomunicatiip_sysfid=1406 then yrdc_contracts.calc_contr_telecom(p_nrdoc,p_sysfid);

contract FSTp_sysfid=1409 then yrdc_contracts.calc_contr_fst(p_nrdoc,p_sysfid);null;case;;

calc_tva(p_nrdoc NUMBER,p_sysfid number)p_sysfid=1407 or p_sysfid=1413 then yrdc_contracts.calc_tva_radiof(p_nrdoc);p_sysfid=1406 then yrdc_contracts.calc_tva_telecom(p_nrdoc);p_sysfid=1409 then yrdc_contracts.calc_tva_fst(p_nrdoc);case;;calc_tva_radiof(p_nrdoc NUMBER) is_clcmonths varchar2(10):='';i in (select nrdoc1,dtnum2,DTNUM4,nvl(SUMA3,0) suma3 from VMDB_REG_A where nrdoc=p_nrdoc) loopi.DTNUM4=1 then v_clcmonths:='3 ';i.DTNUM4=3 then v_clcmonths:='6 ';v_clcmonths:='1 ';case;i.dtnum2=1 thenimmediate 'TMDB_REG_A2 a2

-TVA=(DECODE(DTCANT1,NULL,'||v_clcmonths||',DTCANT1))*DTCANT0*SUMA0*/*(*/SUMA2/100/*/(1+SUMA2/100))*/

-Suma fara TVA

,SUMA1=(DECODE(DTCANT1,NULL,'||v_clcmonths||',DTCANT1))*DTCANT0*SUMA0--*1/(SUMA2/100+1)nrdoc=:1 and nrdoc1=:2

' using p_nrdoc,i.nrdoc1;immediate 'TMDB_REG_A2 a2

-TVA=(DECODE(DTCANT1,NULL,'||v_clcmonths||',DTCANT1))*DTCANT0*SUMA0*(SUMA2/100)

-Suma fara TVA

,SUMA1=(DECODE(DTCANT1,NULL,'||v_clcmonths||',DTCANT1))*DTCANT0*SUMA0/**(SUMA2/100+1)*/nrdoc=:1 and nrdoc1=:2

' using p_nrdoc,i.nrdoc1;if;loop;

-TOTALimmediate 'TMDB_REG_A2 a2SUMA4=SUMA3+SUMA1nrdoc=:1 ' using p_nrdoc;;calc_tva_telecom(p_nrdoc NUMBER)is_val_contr varchar2(70):='';_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);i in (select nrdoc1,nrdoc2,dtnum2,dtnum1,dtvaluta0,dtvaluta1 from VMDB_REG_A2 where nrdoc=p_nrdoc) loopupper(i.DTVALUTA1)<>'LEI' then_val_contr:='un$valuta.GETCURS('''||v_datadoc||''','''||i.DTVALUTA1||''',2)* ';i.dtnum1=1 thenimmediate 'TMDB_REG_A2D a2

-Plata pentru cap.deplina (lei)=(case when (select u.gr1 from vms_univers u where u.cod=a2.dtsc0)=''LRR''nvl(DTCANT1,0)*nvl(DTCANT3,0)*nvl(DTCANT0,0)nvl(DTCANT1,0)*nvl(DTCANT3,0) end)

-Plata pentru 1/2 de capacitate (lei)

,SUMA5=(case when (select u.gr1 from vms_univers u where u.cod=a2.dtsc0)=''LRR''nvl(DTCANT2,0)*nvl(DTCANT4,0)*nvl(DTCANT0,0)nvl(DTCANT2,0)*nvl(DTCANT4,0)end)

-Suma fara TVA

,SUMA1=(case when (select u.gr1 from vms_univers u where u.cod=a2.dtsc0)=''LRR'''||v_val_contr||'nvl(DTCANT1,0)*nvl(DTCANT3,0)*nvl(DTCANT0,0)'||v_val_contr||'nvl(DTCANT1,0)*nvl(DTCANT3,0) end)+decode('||nvl(i.dtnum1,1)||',1,(case when (select u.gr1 from vms_univers u where u.cod=a2.dtsc0)=''LRR'''||v_val_contr||'nvl(DTCANT2,0)*nvl(DTCANT4,0)*nvl(DTCANT0,0)'||v_val_contr||'nvl(DTCANT2,0)*nvl(DTCANT4,0)end),0)nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3

' using p_nrdoc,i.nrdoc1,i.nrdoc2;immediate 'TMDB_REG_A2D a2=nvl(DTCANT1,0)

,SUMA1='||v_val_contr||'nvl(DTCANT1,0)nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3

' using p_nrdoc,i.nrdoc1,i.nrdoc2;if;if;i.dtnum2=1 thenimmediate 'TMDB_REG_A2D a2

-TVA=SUMA1*(SUMA2/100/(1+SUMA2/100))nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3

' using p_nrdoc,i.nrdoc1,i.nrdoc2;immediate 'TMDB_REG_A2D a2

-TVA=SUMA1*(SUMA2/100)nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3

' using p_nrdoc,i.nrdoc1,i.nrdoc2;if;

loop;

-TOTALimmediate 'TMDB_REG_A2D a2SUMA4=SUMA3+SUMA1nrdoc=:1 ' using p_nrdoc;;calc_tva_fst(p_nrdoc NUMBER)isimmediate 'TMDB_REG_A2 a2

-Suma fara tva=nvl(suma0,0)+nvl(dtcant0,0)nrdoc=:1

' using p_nrdoc;immediate 'TMDB_REG_A2 a2

-Suma TVA=nvl(suma1,0)*nvl(suma2,0)/100

-Suma Total

,SUMA4=nvl(suma1,0)+nvl(suma1,0)*nvl(suma2,0)/100nrdoc=:1

' using p_nrdoc;;in(1410,1415)calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null)_tip_prest_srv varchar2(70):='';_client_flt varchar2(70):= '';_val_contr varchar2(70):='';_clcmonths varchar2(10):='';_filtgrp varchar2(100):='';_cond_contr varchar2(70):='';long;_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);

--исключения-_expr exception;exception_init(miss_expr,-936);

проверка на sysfid. если sys_context('envun4','filt_contract')=1,применяем фильтр на контрактsys_context('envun4','filt_contract')=1 then_cond_contr:=' and nrdoc='||p_contr;if;

-

добавление условия на Tipul prestarii SRV для p_sysfid=1407to_char(abm_util.data_by_nrdoc(p_nrdoc),'mm') in (6,12) then v_tip_prest_srv:=' ';to_char(abm_util.data_by_nrdoc(p_nrdoc),'mm') in (3,6,9,12) then v_tip_prest_srv:=' and nvl(c.DTNUM4,2) in(1,2) ';v_tip_prest_srv:=' and nvl(c.DTNUM4,2) in(2) '; case;

проверка на существование фильтра по клиентам(если -1 то все клиенты, иначе только p_client)

if p_client<>-1 then_client_flt:=' and c.dtsc0='||p_client; if;

проверка на существование параметра группы контрагентов(если не null,то существует)

if p_grp_name is not null then_filtgrp:=' and c.dtsc0 in(select sc from TMS_SYSGRP where GROUP1||GROUP2||GROUP3||GROUP4||GROUP5='||p_grp_name||') ';

- say('v_filtgrp='||v_filtgrp); if;

заполнение первого грида(CTNUM0, CTNUM1 - nrdoc,nrdoc1 документов контрактов 1407 )

execute immediate 'insert into TMDB_REG_A(NRDOC, NRDOC1, DTSC0, DTNUM2, DTNUM4, DTSTR0, DTSTR2, DTSTR4, DTDATA0, DTVALUTA0, DTVALUTA1,CTNUM0, CTNUM1/*,SUMA3*/)'||p_nrdoc||' nrdoc, ID_TMDB_CM.NEXTVAL NRDOC1

,c.dtsc0,c.DTNUM2,c.DTNUM4

, c.DTSTR0'||'||'||'''/'''||'||'||'c.nrdoc, c.CLCDTNUM2T, c.CLCDTNUM4T

,(select max(DTDATA0) from TMDB_reg_A a where a.nrdoc=c.nrdoc) DTDATA0

, c.DTVALUTA0, c.DTVALUTA1

,c.nrdoc CTNUM0

,(select nrdoc1 from TMDB_reg_A a where a.nrdoc=c.nrdocDTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc) ) CTNUM1

/*,C.SUMA3*/yrdc_contract c'''||abm_util.data_by_nrdoc(p_nrdoc)||''' between dtdata1 and dtdata2 '||v_tip_prest_srv||'exists(select 1 from vmdb_docs d where d.cod=c.nrdoc and sysfid='||p_sysfid||')

'||v_client_flt||' '||v_filtgrp||' '||v_cond_contr||'

';

заполнение второго грида(CTNUM0, CTNUM1, CTNUM2 - nrdoc,nrdoc1,nrdoc2 документов контрактов 1407 )

for i in(select * from TMDB_REG_A a1 where nrdoc=p_nrdoc ) loop

если валюта контракта не лей, то расчет по курсу на дату документа

if upper(i.DTVALUTA0)<>'LEI' then_val_contr:='un$valuta.GETCURS('''||v_datadoc||''','''||i.DTVALUTA0||''',2)* '; if;

умножение на количество месяцев (возможные значения: 1,3,6)

casei.DTNUM4=1 then v_clcmonths:='3* ';i.DTNUM4=3 then v_clcmonths:='6* ';v_clcmonths:='1* ';case;immediate 'insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3, DTCANT0,,SUMA0, SUMA2,CTNUM0, CTNUM1, CTNUM2,DTSTR4,DTNUM4,dtdata1)'||p_nrdoc||' nrdoc

,(select nrdoc1 from TMDB_REG_A a where a.ctnum0=a1.nrdoc and a.ctnum1=a1.nrdoc1 and a.nrdoc='||i.nrdoc||') nrdoc1

, ID_TMDB_CM.NEXTVAL NRDOC2

,a1.dtsc0,a1.dtsc2,a1.dtsc3,a1.dtcant0,a1.dtstr0

,'||v_val_contr||' case when '||i.dtnum2||'=1 then a1.suma0*(100/(UN$FUNCTS.TVA(a1.DTSC0)*100+100)) else a1.suma0 end suma0

,UN$FUNCTS.TVA(a1.DTSC0)*100 suma2

,a1.nrdoc ctnum0,a1.nrdoc1 ctnum1,a1.nrdoc2 ctnum2

,a1.dtstr4,a1.dtnum4

,decode('||i.dtnum4||',2,(select LAST_DAY(ADD_MONTHS((select datamanual from vmdb_docs where cod='||p_nrdoc||'),0)) from dual),null)TMDB_reg_A1 a1a1.nrdoc='||i.ctnum0||' and a1.nrdoc1='||i.ctnum1||'

';

missing expressionmiss_expr then('В контракте '||i.ctnum0||' не указано значение поля НДС(Date cu privire la TVA)');

end;loop;;=1411calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER)_contr number;_client number;_dataspec_actual date;_dataspec_prev date;_open_curs varchar2(250);_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);sys_refcursor;rec is record(number,dtdata0 date

);_rec rec;long;immediate 'select CTNUM0,dtsc0 from tmdb_reg_a where nrdoc='||p_nrdoc into v_contr,v_client;_open_curs:='select nrdoc1,DTDATA0 from tmdb_reg_a where nrdoc='||v_contr||' ';

выбираем максимальную дату контракта, не превышающую месяца документа расчета доходов услуг

execute immediate 'select max(DTDATA0) from tmdb_reg_a where nrdoc=:1trunc(DTDATA0,''mm'')<=:2'v_dataspec_actual using v_contr,trunc(abm_util.data_by_nrdoc(p_nrdoc),'mm');v_dataspec_actual is null then('Внимание!'||'В выбранном контракте дата спецификации отсутствует либо не является актуальной для данного месяца.');

end if;

выбираем максимальную дату спецификации контракта за предыдущие месяцы

execute immediate 'select max(DTDATA0) from tmdb_reg_a where nrdoc=:1to_char(DTDATA0,''mm.yyyy'')<:2'v_dataspec_prev using v_contr,to_char(abm_util.data_by_nrdoc(p_nrdoc),'mm.yyyy');

формируем динамически курсорwhen v_dataspec_prev is nullv_open_curs:=v_open_curs||' and dtdata0<='''||v_dataspec_actual||''' ';v_dataspec_prev=v_dataspec_actualv_open_curs:=v_open_curs||' and dtdata0='''||v_dataspec_actual||''' ';v_open_curs:=v_open_curs||' and dtdata0 between '''||v_dataspec_prev||''' and '''||v_dataspec_actual||''' ';case;cr FOR v_open_curs;cr INTO in_rec;WHEN cr%NOTFOUND;

заполнение первого грида(CTNUM0, CTNUM1, CTNUM2 - nrdoc,nrdoc1,nrdoc2 документов контрактов 1406 )immediate 'insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3, DTNUM1, DTNUM2, DTSTR1, DTSTR2,DTVALUTA0,DTVALUTA1,CTNUM0, CTNUM1, CTNUM2)'||p_nrdoc||' nrdoc

,(select nrdoc1 from TMDB_REG_A a where a.nrdoc='||p_nrdoc||' ) nrdoc1

, ID_TMDB_CM.NEXTVAL NRDOC2

,a1.dtsc0,a1.dtsc2,a1.dtsc3,'''||in_rec.DTDATA0||''' DTDATA0

,a1.DTNUM1

,(select c.dtnum2 from yrdc_contract c where c.nrdoc=a1.nrdoc ) dtnum2

,a1.DTSTR1

,(select c.clcdtnum2t from yrdc_contract c where c.nrdoc=a1.nrdoc ) dtstr2

,(select c.DTVALUTA0 from yrdc_contract c where c.nrdoc=a1.nrdoc ) DTVALUTA0

,(select c.DTVALUTA1 from yrdc_contract c where c.nrdoc=a1.nrdoc ) DTVALUTA1

,a1.nrdoc ctnum0,a1.nrdoc1 ctnum1,a1.nrdoc2 ctnum2TMDB_reg_A1 a1a1.nrdoc='||v_contr||' and a1.nrdoc1='||in_rec.nrdoc1||'loop;cr;

заполнение второго грида(CTNUM0, CTNUM1, CTNUM2, CTNUM3 - nrdoc,nrdoc1,nrdoc2,nrdoc3 документов контрактов 1406 )i in(select nrdoc,nrdoc1,nrdoc2,CTNUM0, CTNUM1, CTNUM2,dtnum2,dtsc0 from TMDB_REG_A2 where nrdoc=p_nrdoc) loopimmediate 'insert into TMDB_REG_A2D(NRDOC, NRDOC1, NRDOC2,NRDOC3

,DTSC0,DTNUM2,DTNUM4,DTSTR0,DTSTR2,DTSTR4,DTCANT0,DTCANT1,DTCANT2,SUMA2

,CTNUM0, CTNUM1, CTNUM2, CTNUM3)'||i.nrdoc||' nrdoc,'||i.nrdoc1||' nrdoc1, '||i.nrdoc2||' nrdoc2

, ID_TMDB_CM.NEXTVAL NRDOC3

,d.DTSC0,d.DTNUM2,d.DTNUM4,d.DTSTR0,d.DTSTR2,d.DTSTR4

,d.DTCANT0

,case when '||i.dtnum2||'=1 then d.DTCANT3*(100/(UN$FUNCTS.TVA('||i.DTSC0||','||v_client||')*100+100)) else d.DTCANT3 end DTCANT1

,case when '||i.dtnum2||'=1 then d.DTCANT3*(100/(UN$FUNCTS.TVA('||i.DTSC0||','||v_client||')*100+100)) else d.DTCANT3 end*0.75 DTCANT2

,UN$FUNCTS.TVA('||i.DTSC0||','||v_client||')*100 suma2

,d.nrdoc CTNUM0,d.nrdoc1 CTNUM1,d.nrdoc2 CTNUM2,d.nrdoc3 CTNUM3VMDB_reg_A1D dd.nrdoc='||i.CTNUM0||' and d.nrdoc1='||i.CTNUM1||' and d.nrdoc2='||i.CTNUM2||'

';loop;

-say(v_open_curs);msg('');;=1412calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER)_contr number;_dataspec_actual date;_val_contr varchar2(70):='';_clcmonths varchar2(10):='';_rec varchar2(250);rec is record(number,dtdata0 date,dtvaluta0 char(3)

,dtnum2 number --Date privitor la TVA

,dtnum4 number --Tipul srv prestat

);_rec rec;immediate 'select CTNUM0 from tmdb_reg_a where nrdoc='||p_nrdoc into v_contr;_rec:='select a.nrdoc1,a.DTDATA0,c.dtvaluta0,c.dtnum2,c.dtnum4 from tmdb_reg_a a,yrdc_contract c where a.nrdoc='||v_contr||' and c.nrdoc=a.nrdoc'; шапки документа, приносим валюту и тип НДС

execute immediate 'update tmdb_reg_a a(dtvaluta0,dtvaluta1,dtstr2,dtnum2,dtstr4,dtnum4)=

(select dtvaluta0,dtvaluta1,CLCDTNUM2T,DTNUM2,clcdtnum4t,dtnum4 from yrdc_contract c where c.nrdoc=:1)a.nrdoc=:2

' using v_contr,p_nrdoc;

выбираем максимальную дату контракта, не превышающую месяца документа расчета доходов услуг

execute immediate 'select max(DTDATA0) from tmdb_reg_a where nrdoc=:1to_char(DTDATA0,''mm.yyyy'')<=:2'v_dataspec_actual using v_contr,to_char(abm_util.data_by_nrdoc(p_nrdoc),'mm.yyyy');v_dataspec_actual is null then('Внимание!'||'В выбранном контракте дата спецификации отсутствует либо не является актуальной для данного месяца.');

end if;

формируем динамически запрос для записи

v_rec:=v_rec||' and a.dtdata0='''||v_dataspec_actual||''' ';immediate v_rec INTO in_rec;

если валюта контракта не лей, то расчет по курсу на дату документа

if upper(in_rec.DTVALUTA0)<>'LEI' then_val_contr:='un$valuta.GETCURS('''||abm_util.data_by_nrdoc(p_nrdoc)||''','''||in_rec.DTVALUTA0||''',2)* '; if;

умножение на количество месяцев (возможные значения: 1,3,6)

casein_rec.DTNUM4=1 then v_clcmonths:='3* ';in_rec.DTNUM4=3 then v_clcmonths:='6* ';v_clcmonths:='1* ';case;

заполнение первого грида(CTNUM0, CTNUM1, CTNUM2 - nrdoc,nrdoc1,nrdoc2 документов контрактов 1409 )immediate 'insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3

, DTDATA0, DTNUM0, DTSTR0 /*, DTCANT0 */, DTCANT1, DTCANT2, SUMA0, SUMA1, SUMA2, CTNUM0, CTNUM1, CTNUM2)'||p_nrdoc||' nrdoc

,(select nrdoc1 from TMDB_REG_A a where a.nrdoc='||p_nrdoc||' ) nrdoc1

, ID_TMDB_CM.NEXTVAL NRDOC2

,a1.dtsc0,a1.dtsc2,a1.dtsc3,'''||in_rec.DTDATA0||''' DTDATA0

,a1.dtnum0

,a1.dtstr0

/*,a1.DTCANT0*/,a1.DTCANT1,a1.DTCANT2

,'||v_val_contr||v_clcmonths||' case when '||in_rec.DTNUM2||'=1 then a1.suma0/(1+UN$FUNCTS.TVA(a1.DTSC0)) else a1.suma0 end suma0

,'||v_val_contr||v_clcmonths||' case when '||in_rec.DTNUM2||'=1 then a1.suma0/(1+UN$FUNCTS.TVA(a1.DTSC0)) else a1.suma0 end+nvl(a1.DTCANT0,0) suma1

,UN$FUNCTS.TVA(a1.DTSC0)*100 suma2

,a1.nrdoc ctnum0,a1.nrdoc1 ctnum1,a1.nrdoc2 ctnum2TMDB_reg_A1 a1a1.nrdoc='||v_contr||' and a1.nrdoc1='||in_rec.nrdoc1||'

';

заполнение второго грида(CTNUM0, CTNUM1, CTNUM2, CTNUM3 - nrdoc,nrdoc1,nrdoc2,nrdoc3 документов контрактов 1409 )i in(select nrdoc,nrdoc1,nrdoc2,CTNUM0, CTNUM1, CTNUM2,dtsc0 from TMDB_REG_A2 where nrdoc=p_nrdoc) loopimmediate 'insert into TMDB_REG_A2D(NRDOC, NRDOC1, NRDOC2,NRDOC3

,DTSC0,DTNUM2,DTNUM3,DTSTR2,DTSTR3,DTCANT0,DTDATA0,DTDATA1,SUMA0--,SUMA1

,CTNUM0, CTNUM1, CTNUM2, CTNUM3)'||i.nrdoc||' nrdoc,'||i.nrdoc1||' nrdoc1, '||i.nrdoc2||' nrdoc2

, ID_TMDB_CM.NEXTVAL NRDOC3

,d.DTSC0,d.DTNUM2,d.DTNUM3,d.DTSTR2,d.DTSTR3

,d.DTCANT0,d.DTDATA0

,nvl(d.DTDATA1,(select c.DTDATA2 from yrdc_contract c where c.nrdoc=d.nrdoc)) DTDATA1

,d.SUMA1

,d.nrdoc CTNUM0,d.nrdoc1 CTNUM1,d.nrdoc2 CTNUM2,d.nrdoc3 CTNUM3VMDB_reg_A1D dd.nrdoc='||i.CTNUM0||' and d.nrdoc1='||i.CTNUM1||' and d.nrdoc2='||i.CTNUM2||'

';loop;;

actioni "Sgenerirovati nomera NN" v doc.1421gnr_NN_1421(p_nrdoc number, p_nrdoc1 number)isvarchar2(2);number;_prod number;number;dtstr8, dtstr9, CTNUM0vseriaNN,vnrNN,vnr_prodVMDB_REG_Anrdoc=p_nrdocnrdoc1 = p_nrdoc1;vseriaNN is null or vnrNN is null then(lng('Indicati seria si numarul FF pentru doc. '||vnr_prod||'!','Укажите серию и номер НН для документа '||vnr_prod||'!'));

end if;from xsldx where id=1;into xsldx (id, num2, cant1, str1,num1, str0, num3)1, CTNUM0, nrdoc1, dtstr8, dtstr9

, clcdtsc0t, row_number() over (order by dtsc0) rnVMDB_REG_Anrdoc=p_nrdoc;num3 into vrnxsldx where id=1 and cant1=p_nrdoc1;xsldx x set str1=vseriaNN, num1=vnrNN+x.num3-vrnid=1 and num3>vrnvnrNN+x.num3-vrn<=9999999;

-VMDB_REG_A adtstr8 = null, dtstr9 = nullexists (select * from xsldx where id=1 and num2=a.CTNUM0);VMDB_REG_A a(dtstr8, dtstr9)=(select str1, num1 from xsldx where id=1 and num2=a.CTNUM0)exists (select * from xsldx where id=1 and num2=a.CTNUM0);from VMDB01M_VINZcod in (select CTNUM0 from VMDB_REG_A where nrdoc = p_nrdoc);into VMDB01M_VINZ (cod, PRTVA_SERIA, PRTVA_NR, PRTVA_DATA)CTNUM0, dtstr8, dtstr9, sysdate from VMDB_REG_Anrdoc = p_nrdoc;;"Заполнить из групы Servicii RD prestate populatiei" v doc.1421enter_servicii(p_nrdoc number) ISDATE;INTEGER;DATE;immediate 'delete from VMDB_REG_A where nrdoc='||p_nrdoc;immediate 'delete from VMDB_REG_A2 where nrdoc='||p_nrdoc;datamanual,sysfid INTO vDataDoc,vSysFidVMDB_DOCS S WHERE S.cod = p_nrdoc;MAX(datamanual) INTO vDataDocPrevVMDB_DOCS d, VMDB_REG_A anrdoc <> p_nrdoc AND datamanual < vDatadocSYSFID = vSysFID AND a.nrdoc = d.cod;immediate 'insert into VMDB_REG_A (NRDOC, NRDOC1, DTSC0, DTNUM2, DTNUM4, DTSTR0, DTDATA0, DTVALUTA0, DTVALUTA1,CTNUM0, CTNUM1, ctnum9)'||p_nrdoc||', ID_TMDB_CM.NEXTVAL NRDOC1, a.dtsc0, a.dtnum2, a.dtnum4,.dtstr0,

(select max(DTDATA0) from TMDB_reg_A a where a.nrdoc=d.cod) DTDATA0,.DTVALUTA0, a.DTVALUTA1,.CTNUM0,.CTNUM1,.codvmdb_docs d, VMDB_REG_A aa.nrdoc = d.codd.sysfid = 1415(a.dtsc0, a.nrdoc) not in ( select ra.dtsc0, ra.ctnum9 from VMDB_REG_A ra, vmdb_docs dra.nrdoc = d.cod and d.datamanual <= '''||vDataDoc||'''d.sysfid = 1420)exists (select nrdoc from vmdb_cmr where nrdoc=a.nrdoc)';immediate 'insert into VMDB_REG_A2 (NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3, DTCANT0,,SUMA0, SUMA2,CTNUM0, CTNUM1, CTNUM2,DTSTR4,DTNUM4,dtdata1, dtcant1,, suma3, suma4, suma5, ctnum9)'||p_nrdoc||', a.nrdoc1,_TMDB_CM.NEXTVAL NRDOC2, a2.DTSC0, a2.DTSC2, a2.DTSC3, a2.DTCANT0,.DTSTR0, a2.SUMA0, a2.SUMA2,a2.CTNUM0, a2.CTNUM1, a2.CTNUM2, a2.DTSTR4, a2.DTNUM4, a2.dtdata1,.dtcant1, a2.suma1, a2.suma3, a2.suma4, a2.suma5, a.ctnum9VMDB_REG_A a, VMDB_REG_A2 a2a2.nrdoc = a.ctnum9 and a.nrdoc = '||p_nrdoc||' ';;"Sgenerirovati nomera NN" v doc.1204gnr_NN_1204(p_nrdoc number, p_rrowid number)isvarchar2(2);number;_prod number;number;dtstrsc, ctstrsc, a_param1vseriaNN,vnrNN,vnr_prodVMDB_SALAR_ABSd1nrdoc=p_nrdocrrowid = p_rrowid;vseriaNN is null or vnrNN is null then(lng('Indicati seria si numarul FF pentru doc. '||vnr_prod||'!','Укажите серию и номер НН для документа '||vnr_prod||'!'));

end if;from xsldx where id=1;into xsldx (id, num2, cant1, str1,num1, str0, num3)1, a_param1, rrowid, dtstrsc, ctstrsc

, clcconta_dept, row_number() over (order by dtdep) rnVMDB_SALAR_ABSd1nrdoc=p_nrdoc;num3 into vrnxsldx where id=1 and cant1=p_rrowid;xsldx x set str1=vseriaNN, num1=vnrNN+x.num3-vrnid=1 and num3>vrnvnrNN+x.num3-vrn<=9999999;VMDB_SALAR_ABSd1 adtstrsc = null, ctstrsc = nullexists (select * from xsldx where id=1 and num2=a.a_param1);VMDB_SALAR_ABSd1 a(dtstrsc, ctstrsc)=(select str1, num1 from xsldx where id=1 and num2=a.a_param1)exists (select * from xsldx where id=1 and num2=a.a_param1);from VMDB01M_VINZcod in (select a_param1 from VMDB_SALAR_ABSd1 where nrdoc = p_nrdoc);into VMDB01M_VINZ (cod, PRTVA_SERIA, PRTVA_NR, PRTVA_DATA)a_param1, dtstrsc, ctstrsc, sysdate from VMDB_SALAR_ABSd1nrdoc = p_nrdoc;;

 заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid - 1411)

PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER)from VMDB_REG_A where nrdoc = p_nrdoc;from VMDB_REG_A2 where nrdoc = p_nrdoc;from VMDB_REG_A2D where nrdoc = p_nrdoc;INTO VMDB_REG_A (nrdoc, nrdoc1, dt, dtsc0, dtstr0, ctnum0, dtdata0)p_nrdoc, nrdoc, dt, dtsc0, (select c.dtstr0 from yrdc_contract c where c.nrdoc = a.ctnum0)||'/'||ctnum0, ctnum0, d.datamanualVMDB_REG_A a, VMDB_DOCS da.nrdoc = d.cod and d.sysfid = 1411d.datamanual between trunc(to_date(p_data),'mm') and p_dataa.dtsc0 = p_client;into TMDB_REG_A2(nrdoc, nrdoc1, nrdoc2, ct, dtsc0, dtsc2, dtsc3, dtdata0, dtstr2, dtstr1, CTNUM0, CTNUM1, CTNUM2)p_nrdoc nrdoc, a.nrdoc nrdoc1

, ID_TMDB_CM.NEXTVAL NRDOC2

, a2.ct, a2.dtsc0, a2.dtsc2, a2.dtsc3, a2.dtdata0, a2.dtstr2, a2.dtstr1, a2.CTNUM0, a2.CTNUM1, a2.CTNUM2VMDB_REG_A a, VMDB_REG_A2 a2, VMDB_DOCS da.nrdoc = d.cod and a.nrdoc = a2.nrdoc and d.sysfid = 1411d.datamanual between trunc(to_date(p_data),'mm') and p_dataa.dtsc0 = p_client;into VMDB_REG_A2D(nrdoc, nrdoc1, nrdoc2, nrdoc3, dtsc0, dtstr2, dtcant0, dtstr0, dtstr4,, dtcant2, dtcant3, dtcant4,, suma1, suma2, suma3, suma4, suma5)p_nrdoc nrdoc, a.nrdoc nrdoc1, (select distinct nrdoc2 from VMDB_REG_A2 where nrdoc = p_nrdoc and nrdoc1 = a.nrdoc and dtsc0 = a2.dtsc0 ) nrdoc2

, ID_TMDB_CM.NEXTVAL NRDOC3

,a2d.dtsc0, a2d.dtstr2, a2d.dtcant0, a2d.dtstr0, a2d.dtstr4, a2d.dtcant1, a2d.dtcant2,d.dtcant3, a2d.dtcant4, a2d.suma0, a2d.suma1, a2d.suma2, a2d.suma3, a2d.suma4, a2d.suma5VMDB_REG_A a, VMDB_REG_A2 a2, VMDB_REG_A2D a2d, VMDB_DOCS da.nrdoc = d.cod and a.nrdoc = a2.nrdoc and a2.nrdoc = a2d.nrdoc and a2.nrdoc2 = a2d.nrdoc2 and d.sysfid = 1411d.datamanual between trunc(to_date(p_data),'mm') and p_dataa.dtsc0 = p_client;;check_date(vdate date) is(vdate);;yrdc_contracts;

/

CREATE OR REPLACE PACKAGE BODY RADIOCOM.yrdc_contr_reps AS

/******************************************************************************: yrdc_contr_reps::Date Author Description

-- ---

.0 02.02.2010 1. Created this package body.

******************************************************************************/rep_hist_spec(p_datastart date,p_dataend date,p_contr IN LONG,SQLH OUT LONG,SQLM OUT LONG)_filtgrp varchar2(100):='';

проверка на существование параметра группы контрагентов(если не null,то существует)

if p_contr is not null then_filtgrp:=' and '||Un$g$util.ScGrCond('c.dtsc0',p_contr)||' ';if;:='select '''||p_datastart||''' datastart

,'''||p_dataend||''' dataenddual';:='select a3.contract,a3.client_cod,a3.client_name

,sum(difference) difference

,sum(sold_init) sold_init,sum(sold_final) sold_final

,case when sum(sold_final)=0 then sum(sold_init) else(sum(diff_neg)) end diff_neg

,sum(diff_pos) diff_pos(a2.*

,case when rn=1 then sum(difference) over(partition by contract) else 0 end sold_final(a1.*

, nvl(cant,0)-nvl(cant_prev,0)-case when rn=lv and chk=1 then lv_cant else 0 end difference

,case when rn=1 then 0 else decode(sign(nvl(cant,0)-nvl(cant_prev,0)),1,nvl(cant,0)-nvl(cant_prev,0),0) end diff_pos

,case when rn=1 then 0 when rn=lv and chk=1 then decode(sign(nvl(cant,0)-nvl(cant_prev,0)),-1,nvl(cant,0)-nvl(cant_prev,0),0)-lv_cantdecode(sign(nvl(cant,0)-nvl(cant_prev,0)),-1,nvl(cant,0)-nvl(cant_prev,0),0) end diff_neg

,case when rn=1 then nvl(cant,0) else 0 end sold_init(a.*

,last_value(a.rn) over ( partition by contract) lv

,last_value(a.cant) over ( partition by contract) lv_cant

,lag(a.rn) over(partition by contract order by data_spec) rn_prev

,lag(a.cant) over(partition by contract order by data_spec) cant_prev(row_number() over(partition by c.nrdoc order by a.DTDATA0) rn,c.nrdoc contract

,c.DTSC0 client_cod

,c.CLCDTSC0T client_name

,a.DTDATA0 data_spec

,(select sum(nvl(DTCANT0,0)) from VMDB_reg_A1 a1 where a.nrdoc=a1.nrdoc and a.nrdoc1=a1.nrdoc1) cant

,case when c.DTDATA2 between '''||p_datastart||''' and '''||p_dataend||''' then 1 else 0 end chkVMDB_REG_A a,yrdc_contract ca.nrdoc=c.nrdocexists(select 1 from vmdb_docs d where d.sysfid=1413 and d.cod=c.nrdoc)'''||p_datastart||''' between c.DTDATA1 and c.DTDATA2a.DTDATA0 between (select max(aa.DTDATA0) from VMDB_REG_A aa where aa.nrdoc=a.nrdoc and aa.DTDATA0<='''||p_datastart||''') and '''||p_dataend||'''

'||v_filtgrp||'

)a

)a1

)a2

)a3by a3.contract,a3.client_name,a3.client_codby a3.client_name,a3.contract';

-Imt(sqlm,re=>true);;rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG)_filtgrp varchar2(100):='';long;p_contr is not null then_filtgrp:=' and '||Un$g$util.ScGrCond('client',p_contr)||' ';if;_contr_reps.rep_hist_spec(p_datastart,p_dataend,p_contr,SQLH,SQL);$SLD.make(p_datastart-1/24,'1',pfilt=>'ACD',pcont=>'2211',psc=>'39849,29522');$SLD.make(p_dataend,'2',pfilt=>'ACD',pcont=>'2211',psc=>'39849,29522');;:='Select

,(select denumirea from vms_univers where client=cod) client_name

,contract

,sum(conect_init) conect_init

,sum(diff_neg) diff_neg

,sum(diff_pos) diff_pos

,sum(conect_final) conect_final

,sum(sold_init) sold_init

,sum(dtsuma) dtsuma

,sum(ctsuma) ctsuma

,sum(sold_end) sold_end

(

,case when analitica=29522 then (select nrdoc from yrdc_contract k where '''||p_datastart||''' between dtdata1 and dtdata2 and dtnum6=2client=dtsc0 and exists(select 1 from vmdb_docs where sysfid =1413 and k.nrdoc=cod and at1 is null)) elsewhen analitica=39849 then (select nrdoc from yrdc_contract k where '''||p_datastart||''' between dtdata1 and dtdata2 and dtnum6 in (1,3)client=dtsc0 and exists(select 1 from vmdb_docs where sysfid =1413 and k.nrdoc=cod and at1 is null)) end end contract

,0 conect_init

,0 diff_neg

,0 diff_pos

,0 conect_final

,sum(sold_init) sold_init

,sum(dtsuma) dtsuma

,sum(ctsuma) ctsuma

,sum(sold_end) sold_end

(

,analitica

,client

,sold_init

,0 dtsuma

,0 ctsuma

,sold_end

(SELECT cont, sc analitica, dep client

,case when id=1 then suma end sold_init

,case when id=2 then suma end sold_endxsld where ID=1 or ID=2) a1=1 '||v_filtgrp||'all

,analitica

,client

,0 sold_init

,dtsuma

,0 ctsuma

,0 sold_end

(c.dt cont,a.ctnum0 contract,c.dtsc analitica,c.dtdep client,sum(c.suma) dtsuma,0 ctsumavmdb_cmi c, vmdb_reg_a ac.nrdoc=a.nrdoc and c.dtdep=a.dtsc0c.data between '''||p_datastart||''' and '''||p_dataend||'''exists (Select 1 from vmdb_docs where sysfid in(1410,1415)and c.nrdoc=cod)by c.dt,a.ctnum0,c.dtsc,c.dtdep)1=1 '||v_filtgrp||'all

,analitica

,client

,0 sold_init

,0 dtsuma

,sum(ctsuma) ctsuma

,0 sold_endc.ct cont

,c.ctsc analitica,c.ctdep client,c.suma ctsumavmdb_cmi cct=2211 and ctsc in(29522,39849)c.data between '''||p_datastart||''' and '''||p_dataend||''')1=1 '||v_filtgrp||'by cont,client,analitica

)a GROUP BY cont,client,analiticaall_cod client

,contract

,sold_init conect_init

,diff_neg

,diff_pos

,sold_final conect_final

,0 sold_init

,0 dtsuma

,0 ctsuma

,0 sold_end('||SQLM||') mBY client,contractby (select denumirea from vms_univers where client=cod)';;get_contracts_data return long is

END yrdc_contr_reps.

Похожие работы на - Разработка модуля автоматизированного учета контрактов услуг для предприятия I.S.'Radiocomunicatii'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!