Содержание
ВВЕДЕНИЕ5
РАЗДЕЛ 1 ВЕКСЕЛЯ И СИСТЕМА ВЕКСЕЛЬНОГО ОБРАЩЕНИЯ8
1.1 ХАРАКТЕРИСТИКА И КЛАССИФИКАЦИЯ ВЕКСЕЛЕЙ8
ВЕКСЕЛЬ — ДЕНЕЖНОЕ ОБЯЗАТЕЛЬСТВО СТРОГО УСТАНОВЛЕННОЙ ЗАКОНОМ ФОРМЫ. ЯВЛЯЕТСЯ БЕЗУСЛОВНЫМ ДОЛГОВЫМ ДОКУМЕНТОМ.10
1.2 ОСНОВНЫЕ ВИДЫ ОПЕРАЦИЙ С ВЕКСЕЛЯМИ16
1.3РОЛЬ БАНКОВ В ОРГАНИЗАЦИИ ВЕКСЕЛЬНОГО ОБРАЩЕНИЯ26
1.4 ПРОТЕСТ ВЕКСЕЛЯ27
1.5 ПРАВОВОЕ РЕГУЛИРОВАНИЕ31
РАЗДЕЛ 2 ОПИСАНИЕ И ФОРМАЛИЗАЦИЯ ДЕЯТЕЛЬНОСТИ ОРГАНИЗАЦИИ34
2.1 ОРГАНИЗАЦИОННАЯ СТРУКТУРА КРЕДИТ ЕВРОПА БАНК34
2.2 ПРОГРАММА ПОМОЩИ ЗАЕМЩИКАМ, ПОСТРАДАВШИМ ОТ КРИЗИСА40
РАЗДЕЛ 3 ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ43
3.1 ТРЕБОВАНИЯ К ИНФОРМАЦИОННОЙ СИСТЕМЕ43
3.2 СХЕМА ИНФОРМАЦИОННОЙ СИСТЕМЫ45
3.3 БАЗА ДАННЫХ47
3.4 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ49
РАЗДЕЛ 4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ56
4.1 ОЦЕНКА ЭФФЕКТИВНОСТИ ИНФОРМАЦИОННОЙ СИСТЕМЫ56
4.2 ФУНКЦИОНАЛЬНО-СТОИМОСТНЫЙ АНАЛИЗ ДО ВНЕДРЕНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ61
4.3 ФУНКЦИОНАЛЬНО-СТОИМОСТНОЙ АНАЛИЗ ПОСЛЕ ВНЕДРЕНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ65
4.4 ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ70
ЗАКЛЮЧЕНИЕ71
ПРИЛОЖЕНИЕ 1 75
Выдержка из текста работы
В работе разработан модуль автоматизированного учета контрактов на предоставление услуг клиентам предприятия «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;
Calcularea veniturilor prevazute la serviciile contractuale;
Imprimarea facturilor fiscale, facturilor de plata a clienюilor єi vizualizarea raportelor cu privire la оndeplinirea contractelor.
Acest 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.
Aplicarea 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
This 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.
As working tools are used DBMS Oracle, TOAD, FormulaOne. In the developed module are realized three important stages of the account:
Registration of primary documents of contracts.
Charge of incomes from given, according to contracts, services.
The Press of tax waybills accounts on payment to clients and reporting viewing under contracts.
The 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.
Introduction 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.
The 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.
Key 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.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. В нем отражается максимально полная информация обо всех материалах и комплектующих, необходимых для производства конечного продукта.
Программа производства. Представляет собой оптимизированный график распределения времени для производства необходимой партии готовой продукции за планируемый период.
3. Перечень составляющих конечного продукта (Bills of Material File, BOM). Список материалов и их количество, требуемое для производства конечного продукта.
Основными результатами использования системы стандарта MRP являются:
1. План Заказов. Определяет, какое количество каждого материала должно быть заказано в каждый рассматриваемый период времени в течение срока планирования. План заказов является руководством для дальнейшей работы с поставщиками и, в частности, определяет производственную программу для внутреннего производства комплектующих, при наличии такового.
2. Изменения к плану заказов являются модификациями к ранее спланированным заказам. Ряд заказов могут быть отменены, изменены или задержаны, а также перенесены на другой период.
Таким образом, использование системы стандарта 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. ИНТЕРФЕЙС МОДУЛЯ КОНТРАКТОВ
3.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
/******************************************************************************
NAME: yrdc_contracts
PURPOSE:
REVISIONS:
Ver Date Author Description
— — —
1.0 28.10.2009 1. Created this package.
******************************************************************************/
-экшен «Дублирование данных из предыдущей даты»
PROCEDURE contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0);
-экшен «Рассчитать суммы»
PROCEDURE 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);
— экшен «Расчитать НДС»
PROCEDURE calc_tva(p_nrdoc NUMBER,p_sysfid number);
PROCEDURE calc_tva_radiof(p_nrdoc NUMBER);
PROCEDURE calc_tva_telecom(p_nrdoc NUMBER);
PROCEDURE calc_tva_fst(p_nrdoc NUMBER);
PROCEDURE calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null);
PROCEDURE calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER);
PROCEDURE calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER);
— action «Sgenerirovati nomera NN» v doc.1421
procedure gnr_NN_1421(p_nrdoc number, p_nrdoc1 number);
— actioni «Заполнить из групы Servicii RD prestate populatiei» v doc.1421
procedure enter_servicii(p_nrdoc number);
— action «Sgenerirovati nomera NN» v doc.1204
procedure gnr_NN_1204(p_nrdoc number, p_rrowid number);
заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid — 1411)
PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER);
procedure check_date(vdate date);
END yrdc_contracts;
CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contr_reps AS
/******************************************************************************
NAME: yrdc_contr_reps
PURPOSE:
REVISIONS:
Ver 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);
PROCEDURE rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG);
FUNCTION GET_CONTRACTS_DATA RETURN LONG;
END yrdc_contr_reps;
3.2 Интерфейс первичных документов регистрации контрактов
Для заключения контракта на подключение радиоузла был создан документ «(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.
2. Том Кайт «Oracle для профессионалов» Пер. с англ. — СПб.: ООО «ДиаСофтЮП», 2005. — 672 с.
3. Коннор МакДональд, Бек Кристофер «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
COD NUMBER(10) NOT NULL,
TIP VARCHAR2(1 BYTE),
SYSFID NUMBER(6),
USERID NUMBER(5),
AT1 NUMBER(5),
AT2 NUMBER(5),
AT3 NUMBER(5),
TIPDOC NUMBER(5),
DATAMANUAL DATE NOT NULL,
NRMANUAL VARCHAR2(25 BYTE),
VALUTA VARCHAR2(3 BYTE),
NRSET NUMBER(10),
ISGFC NUMBER(1) DEFAULT 0 NOT NULL,
DOCCOLOR VARCHAR2(1 BYTE),
CODF NUMBER(10),
TIPOPER NUMBER(10),
F CHAR(1 BYTE),
M CHAR(1 BYTE),
DIV INTEGER,
STATUS INTEGER,
CONSTRAINT PK_TMDB_DOCS
PRIMARY KEY
(COD)
COMMENT ON TABLE TMDB_DOCS IS ‘VSE DOCUMENTI’;
COMMENT ON COLUMN TMDB_DOCS.NRSET IS ‘the number of bu-area’;
COMMENT ON COLUMN TMDB_DOCS.ISGFC IS ‘document is CM-integrety 0 — not, 1 — yes’;
COMMENT ON COLUMN TMDB_DOCS.DOCCOLOR IS ‘document color’;
COMMENT ON COLUMN TMDB_DOCS.CODF IS ‘px-version attribute’;
COMMENT ON COLUMN TMDB_DOCS.TIPOPER IS ‘px-version attribute’;
COMMENT ON COLUMN TMDB_DOCS.AT2 IS ‘Edit document protection’;
COMMENT ON COLUMN TMDB_DOCS.AT3 IS ‘???’;
COMMENT ON COLUMN TMDB_DOCS.TIPDOC IS ‘cod from sys of paper-type’;
COMMENT ON COLUMN TMDB_DOCS.DATAMANUAL IS ‘document data (real)’;
COMMENT ON COLUMN TMDB_DOCS.NRMANUAL IS ‘document number (real)’;
COMMENT ON COLUMN TMDB_DOCS.VALUTA IS ‘valuta (real) of the document’;
COMMENT ON COLUMN TMDB_DOCS.COD IS ‘Document cod’;
COMMENT ON COLUMN TMDB_DOCS.TIP IS ‘Which module’;
COMMENT ON COLUMN TMDB_DOCS.SYSFID IS ‘Document type’;
COMMENT ON COLUMN TMDB_DOCS.USERID IS ‘user id’;
COMMENT ON COLUMN TMDB_DOCS.AT1 IS ‘document is hidden, 0 — is not hidden, 1 — hidden’;
CREATE UNIQUE INDEX CN$DOCSCODDATA ON TMDB_DOCS
(COD, DATAMANUAL);
ALTER TABLE TMDB_DOCS ADD (
CONSTRAINT CN$DOCSCODDATA
UNIQUE (COD, DATAMANUAL));
Таблица tmdb_reg, ее индексы и ограничения:
CREATE TABLE TMDB_REG
NRDOC INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_PK ON TMDB_REG
(NRDOC);
ALTER TABLE TMDB_REG ADD (
CONSTRAINT TMDB_REG_PK
PRIMARY KEY
(NRDOC));
ALTER TABLE TMDB_REG ADD (
CONSTRAINT TMDB_REG_FK
FOREIGN KEY (NRDOC)
REFERENCES TMDB_DOCS (COD)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Таблица tmdb_reg_a, ее индексы и ограничения:
CREATE TABLE TMDB_REG_A
NRDOC INTEGER NOT NULL,
NRDOC1 INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_A_PK ON TMDB_REG_A
(NRDOC, NRDOC1);
CREATE INDEX TMDB_REG_A_FK ON TMDB_REG_A
(NRDOC);
ALTER TABLE TMDB_REG_A ADD (
CONSTRAINT TMDB_REG_A_PK
PRIMARY KEY
(NRDOC, NRDOC1));
ALTER TABLE TMDB_REG_A ADD (
CONSTRAINT TMDB_REG_A_FK
FOREIGN KEY (NRDOC)
REFERENCES TMDB_DOCS (COD)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Таблица tmdb_reg_a1, ее индексы и ограничения:
CREATE TABLE TMDB_REG_A1
NRDOC INTEGER NOT NULL,
NRDOC1 INTEGER NOT NULL,
NRDOC2 INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_A1_PK ON TMDB_REG_A1
(NRDOC, NRDOC1, NRDOC2);
CREATE INDEX TMDB_REG_A1_FK ON TMDB_REG_A1
(NRDOC, NRDOC1);
ALTER TABLE TMDB_REG_A1 ADD (
CONSTRAINT TMDB_REG_A1_PK
PRIMARY KEY
(NRDOC, NRDOC1, NRDOC2));
ALTER TABLE TMDB_REG_A1 ADD (
CONSTRAINT TMDB_REG_A1_FK
FOREIGN KEY (NRDOC, NRDOC1)
REFERENCES TMDB_REG_A (NRDOC,NRDOC1)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Таблица tmdb_reg_a1d, ее индексы и ограничения:
CREATE TABLE TMDB_REG_A1D
NRDOC INTEGER NOT NULL,
NRDOC1 INTEGER NOT NULL,
NRDOC2 INTEGER NOT NULL,
NRDOC3 INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_A1D_PK ON TMDB_REG_A1D
(NRDOC, NRDOC1, NRDOC2, NRDOC3);
CREATE INDEX TMDB_REG_A1D_FK ON TMDB_REG_A1D
(NRDOC, NRDOC1, NRDOC2);
ALTER TABLE TMDB_REG_A1D ADD (
CONSTRAINT TMDB_REG_A1D_PK
PRIMARY KEY
(NRDOC, NRDOC1, NRDOC2, NRDOC3));
ALTER TABLE TMDB_REG_A1D ADD (
CONSTRAINT TMDB_REG_A1D_FK
FOREIGN KEY (NRDOC, NRDOC1, NRDOC2)
REFERENCES TMDB_REG_A1 (NRDOC,NRDOC1,NRDOC2)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Таблица tmdb_reg_a2, ее индексы и ограничения:
CREATE TABLE TMDB_REG_A2
NRDOC INTEGER NOT NULL,
NRDOC1 INTEGER NOT NULL,
NRDOC2 INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_A2_PK ON TMDB_REG_A2
(NRDOC, NRDOC1, NRDOC2);
CREATE INDEX TMDB_REG_A2_FK ON TMDB_REG_A2
(NRDOC, NRDOC1);
ALTER TABLE TMDB_REG_A2 ADD (
CONSTRAINT TMDB_REG_A2_PK
PRIMARY KEY
(NRDOC, NRDOC1, NRDOC2));
ALTER TABLE TMDB_REG_A2 ADD (
CONSTRAINT TMDB_REG_A2_FK
FOREIGN KEY (NRDOC, NRDOC1)
REFERENCES TMDB_REG_A (NRDOC,NRDOC1)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Таблица tmdb_reg_a2d, ее индексы и ограничения:
CREATE TABLE TMDB_REG_A2D
NRDOC INTEGER NOT NULL,
NRDOC1 INTEGER NOT NULL,
NRDOC2 INTEGER NOT NULL,
NRDOC3 INTEGER NOT NULL,
SUMA0 NUMBER(38,2),
SUMA1 NUMBER(38,2),
SUMA2 NUMBER(38,2),
SUMA3 NUMBER(38,2),
SUMA4 NUMBER(38,2),
SUMA5 NUMBER(38,2),
SUMA6 NUMBER(38,2),
SUMA7 NUMBER(38,2),
SUMA8 NUMBER(38,2),
SUMA9 NUMBER(38,2),
DT INTEGER,
DT1 INTEGER,
DTSC0 INTEGER,
DTSC1 INTEGER,
DTSC2 INTEGER,
DTSC3 INTEGER,
DTSC4 INTEGER,
DTSC5 INTEGER,
DTSC6 INTEGER,
DTSC7 INTEGER,
DTSC8 INTEGER,
DTSC9 INTEGER,
DTNUM0 INTEGER,
DTNUM1 INTEGER,
DTNUM2 INTEGER,
DTNUM3 INTEGER,
DTNUM4 INTEGER,
DTNUM5 INTEGER,
DTNUM6 INTEGER,
DTNUM7 INTEGER,
DTNUM8 INTEGER,
DTNUM9 INTEGER,
DTSTR0 VARCHAR2(100 BYTE),
DTSTR1 VARCHAR2(100 BYTE),
DTSTR2 VARCHAR2(100 BYTE),
DTSTR3 VARCHAR2(100 BYTE),
DTSTR4 VARCHAR2(100 BYTE),
DTSTR5 VARCHAR2(100 BYTE),
DTSTR6 VARCHAR2(100 BYTE),
DTSTR7 VARCHAR2(100 BYTE),
DTSTR8 VARCHAR2(100 BYTE),
DTSTR9 VARCHAR2(100 BYTE),
DTDATA0 DATE,
DTDATA1 DATE,
DTDATA2 DATE,
DTDATA3 DATE,
DTDATA4 DATE,
DTSUMAVAL0 NUMBER(38,2),
DTSUMAVAL1 NUMBER(38,2),
DTSUMAVAL2 NUMBER(38,2),
DTSUMAVAL3 NUMBER(38,2),
DTSUMAVAL4 NUMBER(38,2),
DTVALUTA0 CHAR(3 BYTE),
DTVALUTA1 CHAR(3 BYTE),
DTVALUTA2 CHAR(3 BYTE),
DTVALUTA3 CHAR(3 BYTE),
DTVALUTA4 CHAR(3 BYTE),
DTCANT0 NUMBER,
DTCANT1 NUMBER,
DTCANT2 NUMBER,
DTCANT3 NUMBER,
DTCANT4 NUMBER,
DTCANT5 NUMBER,
DTCANT6 NUMBER,
DTCANT7 NUMBER,
DTCANT8 NUMBER,
DTCANT9 NUMBER,
CT INTEGER,
CT1 INTEGER,
CTSC0 INTEGER,
CTSC1 INTEGER,
CTSC2 INTEGER,
CTSC3 INTEGER,
CTSC4 INTEGER,
CTSC5 INTEGER,
CTSC6 INTEGER,
CTSC7 INTEGER,
CTSC8 INTEGER,
CTSC9 INTEGER,
CTNUM0 INTEGER,
CTNUM1 INTEGER,
CTNUM2 INTEGER,
CTNUM3 INTEGER,
CTNUM4 INTEGER,
CTNUM5 INTEGER,
CTNUM6 INTEGER,
CTNUM7 INTEGER,
CTNUM8 INTEGER,
CTNUM9 INTEGER,
CTSTR0 VARCHAR2(100 BYTE),
CTSTR1 VARCHAR2(100 BYTE),
CTSTR2 VARCHAR2(100 BYTE),
CTSTR3 VARCHAR2(100 BYTE),
CTSTR4 VARCHAR2(100 BYTE),
CTSTR5 VARCHAR2(100 BYTE),
CTSTR6 VARCHAR2(100 BYTE),
CTSTR7 VARCHAR2(100 BYTE),
CTSTR8 VARCHAR2(100 BYTE),
CTSTR9 VARCHAR2(100 BYTE),
CTDATA0 DATE,
CTDATA1 DATE,
CTDATA2 DATE,
CTDATA3 DATE,
CTDATA4 DATE,
CTSUMAVAL0 NUMBER(38,2),
CTSUMAVAL1 NUMBER(38,2),
CTSUMAVAL2 NUMBER(38,2),
CTSUMAVAL3 NUMBER(38,2),
CTSUMAVAL4 NUMBER(38,2),
CTVALUTA0 CHAR(3 BYTE),
CTVALUTA1 CHAR(3 BYTE),
CTVALUTA2 CHAR(3 BYTE),
CTVALUTA3 CHAR(3 BYTE),
CTVALUTA4 CHAR(3 BYTE),
CTCANT0 NUMBER,
CTCANT1 NUMBER,
CTCANT2 NUMBER,
CTCANT3 NUMBER,
CTCANT4 NUMBER,
CTCANT5 NUMBER,
CTCANT6 NUMBER,
CTCANT7 NUMBER,
CTCANT8 NUMBER,
CTCANT9 NUMBER
CREATE UNIQUE INDEX TMDB_REG_A2D_PK ON TMDB_REG_A2D
(NRDOC, NRDOC1, NRDOC2, NRDOC3);
CREATE INDEX TMDB_REG_A2D_FK ON TMDB_REG_A2D
(NRDOC, NRDOC1, NRDOC2);
ALTER TABLE TMDB_REG_A2D ADD (
CONSTRAINT TMDB_REG_A2D_PK
PRIMARY KEY
(NRDOC, NRDOC1, NRDOC2, NRDOC3));
ALTER TABLE TMDB_REG_A2D ADD (
CONSTRAINT TMDB_REG_A2D_FK
FOREIGN KEY (NRDOC, NRDOC1, NRDOC2)
REFERENCES TMDB_REG_A2 (NRDOC,NRDOC1,NRDOC2)
ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
Триггеры:
CREATE OR REPLACE TRIGGER RADIOCOM.»TRIG_BFUPD_TMDB_DOCS»
BEFORE UPDATE ON TMDB_DOCS
FOR EACH ROW
DECLARE
v_admin int:=case
when SYS_CONTEXT(‘envun4′,’iniparam_ADMINLEVEL’)=’1′
then 1 else 0 end;
v_leave int:=case
when NVL(SYS_CONTEXT(‘envun4′,’PARAM_DontUpdateDocsUserid’),v_admin)=’1′
then 1 else 0 end;
BEGIN
IF:NEW.COD<>:OLD.COD THEN
RAISE_APPLICATION_ERROR(-20101,’NoNo’);
END IF;
IF:NEW.DATAMANUAL<>:OLD.DATAMANUAL THEN
UPDATE TMDB_CM SET DATA=:NEW.DATAMANUAL WHERE NRDOC=:NEW.COD;
END IF;
IF v_leave<>1 THEN
SELECT USERID INTO:NEW.USERID FROM TPARAMS;
END IF;
IF:NEW.USERID=0 THEN
RAISE_APPLICATION_ERROR(-20101,
‘Ошибка идентификации пользователя (USERID=0). Редактирование запрещено.’);
END IF;
END;
CREATE OR REPLACE TRIGGER RADIOCOM.»TRG_DOCS_COLOR»
BEFORE INSERT OR UPDATE ON TMDB_DOCS
FOR EACH ROW
WHEN (
NEW.AT1 IS NULL AND sys_context(‘envun4′,’dont_fire_trigger’) IS NULL
BEGIN
SELECT ‘-‘ INTO:NEW.DOCCOLOR FROM VMDB_DOCS_ADD
WHERE COD=:NEW.COD AND RECALC_NRDOC IS NOT NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
BEGIN
SELECT » INTO:NEW.DOCCOLOR FROM VMDB_CMI WHERE NRDOC=:NEW.COD AND ROWNUM=1;
EXCEPTION WHEN NO_DATA_FOUND THEN
:NEW.DOCCOLOR:=’`’;
END;
END;
CREATE OR REPLACE TRIGGER RADIOCOM.»XTRIGLOGDOCS»
AFTER INSERT OR UPDATE OR DELETE ON TMDB_DOCS
FOR EACH ROW
BEGIN
IF INSERTING THEN
UN$XLOG.INLOG(‘DOCS’,:NEW.cod,’insert’);
ELSIF UPDATING
THEN UN$XLOG.INLOG(‘DOCS’,:NEW.cod,’update’);
ELSE
UN$XLOG.INLOG(‘DOCS’,:OLD.cod,’delete’);
END IF;
EXCEPTION WHEN OTHERS THEN
NULL;
END;
CREATE OR REPLACE TRIGGER RADIOCOM.»TMDB_DOCS_TRLOG»
AFTER INSERT OR UPDATE OR DELETE ON TMDB_DOCS
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
nUserId INT:=SYS_CONTEXT(‘ENVUN4′,’PARAM_USERID’);
cUserName VARCHAR2(30);
cReason VARCHAR2(100);
BEGIN
IF INSERTING THEN
cReason:=’NEW DOC’;
ELSIF DELETING THEN
cReason:=’DEL DOC’;
ELSIF UPDATING THEN
cReason:=’CHG’||
CASE WHEN 0||:OLD.USERID<>0||:NEW.USERID THEN ‘ USERID’ END||
CASE WHEN 0||:OLD.DATAMANUAL<>0||:NEW.DATAMANUAL THEN ‘ DATAMANUAL’ END||
CASE WHEN 0||:OLD.NRSET<>0||:NEW.NRSET THEN ‘ NRSET’ END||
CASE WHEN 0||:OLD.SYSFID<>0||:NEW.SYSFID THEN ‘ SYSFID’ END||
CASE WHEN 0||:OLD.NRMANUAL<>0||:NEW.NRMANUAL THEN ‘ NRMANUAL’ END||
CASE WHEN 0||:OLD.AT1<>0||:NEW.AT1 THEN ‘ AT1’ END||
CASE WHEN 0||:OLD.AT2<>0||:NEW.AT2 THEN ‘ AT2’ END||
CASE WHEN 0||:OLD.F<>0||:NEW.F THEN ‘ F’ END||
CASE WHEN 0||:OLD.M<>0||:NEW.M THEN ‘ M’ END||
CASE WHEN 0||:OLD.DIV<>0||:NEW.DIV THEN ‘ DIV’ END;
IF cReason=’CHG’ THEN
RETURN;
END IF;
END IF;
cUserName:=un$userparams.GetUserName(nUserId);
INSERT 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)
VALUES (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);
COMMIT;
EXCEPTION WHEN OTHERS THEN
NULL;
END;
CREATE OR REPLACE TRIGGER RADIOCOM.»TRIG_AFTINS_TMDB_DOCS2″
AFTER INSERT ON TMDB_DOCS
FOR EACH ROW
WHEN (
0||SYS_CONTEXT(‘USERENV’,’ACTION’,11)<>’0SYS_IMPORT_’
DECLARE
v_Recalc_Tip VARCHAR2(2):=SYS_CONTEXT(‘envun4′,’CopyDocRecalcTip’,2);
v_Recalc_Nrdoc INT:=
CASE WHEN v_Recalc_Tip IN (‘1′,’2’) THEN SYS_CONTEXT(‘envun4′,’CopyDocSourceNrdoc’) END;
v_Test_Cod VARCHAR2(30):=SYS_CONTEXT(‘envun4′,’un$test’,30);
BEGIN
INSERT INTO TMDB_DOCS_ADD (COD,FIRST_USERID,RECALC_NRDOC,RECALC_TIP,TEST_COD)
VALUES(:NEW.COD,:NEW.USERID,v_Recalc_Nrdoc,v_Recalc_Tip,v_Test_Cod);
EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
UPDATE TMDB_DOCS_ADD
SET FIRST_USERID=:NEW.USERID
,RECALC_NRDOC=v_Recalc_Nrdoc,RECALC_TIP=v_Recalc_Tip,TEST_COD=v_Test_Cod
WHERE COD=:NEW.COD;
END;
Последовательности:
CREATE SEQUENCE RADIOCOM.ID_TMDB_CM
START WITH 1
MAXVALUE 999999999
MINVALUE 1
CYCLE
CACHE 50
NOORDER;
CREATE SEQUENCE RADIOCOM.ID_TMDB_DOCS
START WITH 11758
MAXVALUE 999999999999999999999999999
MINVALUE 0
NOCYCLE
NOCACHE
NOORDER;
CREATE SEQUENCE RADIOCOM.ID_TMS_UNIVERS
START WITH 45726
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER;
Представления:
CREATE OR REPLACE VIEW VMDB_DOCS
SELECT COD,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 clcSTATUSt
FROM TMDB_DOCS A;
CREATE OR REPLACE VIEW VMDB_REG
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG A;
CREATE OR REPLACE VIEW VMDB_REG_A
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG_A A;
CREATE OR REPLACE VIEW VMDB_REG_A1
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG_A1 A;
CREATE OR REPLACE VIEW VMDB_REG_A1D
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG_A1D A;
CREATE OR REPLACE VIEW VMDB_REG_A2
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG_A2 A;
CREATE OR REPLACE VIEW VMDB_REG_A2D
SELECT A.»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)CLCCTSC9T
FROM TMDB_REG_A2D A;
Пакеты, процедуры и функции:
CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contracts AUTHID CURRENT_USER AS
/******************************************************************************
NAME: yrdc_contracts
PURPOSE:
REVISIONS:
Ver Date Author Description
— — —
1.0 28.10.2009 1. Created this package.
******************************************************************************/
-экшен «Дублирование данных из предыдущей даты»
PROCEDURE contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0);
-экшен «Рассчитать суммы»
PROCEDURE 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);
— экшен «Расчитать НДС»
PROCEDURE calc_tva(p_nrdoc NUMBER,p_sysfid number);
PROCEDURE calc_tva_radiof(p_nrdoc NUMBER);
PROCEDURE calc_tva_telecom(p_nrdoc NUMBER);
PROCEDURE calc_tva_fst(p_nrdoc NUMBER);
PROCEDURE calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null);
PROCEDURE calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER);
PROCEDURE calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER);
— action «Sgenerirovati nomera NN» v doc.1421
procedure gnr_NN_1421(p_nrdoc number, p_nrdoc1 number);
— actioni «Заполнить из групы Servicii RD prestate populatiei» v doc.1421
procedure enter_servicii(p_nrdoc number);
— action «Sgenerirovati nomera NN» v doc.1204
procedure gnr_NN_1204(p_nrdoc number, p_rrowid number);
заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid — 1411)
PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER);
procedure check_date(vdate date);
END yrdc_contracts;
CREATE OR REPLACE PACKAGE RADIOCOM.yrdc_contr_reps AS
/******************************************************************************
NAME: yrdc_contr_reps
PURPOSE:
REVISIONS:
Ver 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);
PROCEDURE rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG);
FUNCTION GET_CONTRACTS_DATA RETURN LONG;
END yrdc_contr_reps;
ПРИЛОЖЕНИЕ 2
Программный код для модуля контрактов
CREATE OR REPLACE PACKAGE BODY RADIOCOM.yrdc_contracts AS
/******************************************************************************
NAME: yrdc_contracts
PURPOSE:
REVISIONS:
Ver Date Author Description
— — —
1.0 28.10.2009 1. Created this package body.
******************************************************************************/
PROCEDURE contr_dubl(p_nrdoc NUMBER,p_dataspec_new date,p_type_dubl number:=0)
v_nrdoc1 number;
v_nrdoc1_new number;
begin
выбираем nrdoc1 у которого максимальная дата спецификации в документе
execute immediate ‘select nrdoc1
from TMDB_reg_A a
where a.DTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc)
and a.nrdoc=:1 ‘ into v_nrdoc1 using p_nrdoc;
заполнение TMDB_reg_A
execute immediate ‘
insert into TMDB_reg_A
select NRDOC,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, CTCANT9
from TMDB_reg_A where nrdoc=:1 and nrdoc1=:2′
using p_nrdoc,v_nrdoc1;
заполнение TMDB_reg_A1
выбираем nrdoc1 новой даты спецификации
execute immediate ‘select nrdoc1
from TMDB_reg_A a
where a.DTDATA0=:1
and a.nrdoc=:2 ‘ into v_nrdoc1_new using p_dataspec_new,p_nrdoc;
в ctnum9 кидаем порядковый номер строки,(понадобится для дальнейшего заполнения TMDB_reg_A1D)
execute immediate ‘
insert into TMDB_reg_A1
select NRDOC,’||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, CTCANT9
from TMDB_reg_A1 where nrdoc=:1 and nrdoc1=:2
using p_nrdoc,v_nrdoc1;
if p_type_dubl=0 then
заполнение TMDB_reg_A1D
for i in (select nrdoc2,ctnum9 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1_new)loop
execute immediate ‘
insert into TMDB_reg_A1D
select NRDOC,’||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, CTCANT9
from TMDB_reg_A1D d where nrdoc=:1 and nrdoc1=:2
and nrdoc2=(select nrdoc2
from (select nrdoc2,row_number()over(order by nrdoc2) rn from TMDB_reg_A1 a
where a.nrdoc=’||p_nrdoc||’ and a.nrdoc1=’||v_nrdoc1||’ )a
where rn=:3)
using p_nrdoc,v_nrdoc1,i.ctnum9;
end loop;
end if;
end;
PROCEDURE sum_account(p_nrdoc NUMBER,p_type_doc number:=0)
v_nrdoc1 number;
v_sysfid number;
/*v_tipcalc integer;*/
begin
выбираем nrdoc1 у которого максимальная дата спецификации в документе
execute immediate ‘select nrdoc1
from TMDB_reg_A a
where a.DTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc)
and a.nrdoc=:1 ‘ into v_nrdoc1 using p_nrdoc;
execute immediate ‘select sysfid
from TMDB_DOCS a where cod=:1′ into v_sysfid using p_nrdoc;
case
(1406) Contract Telecomunicatii
when v_sysfid=1406 then
begin
for i in(select nrdoc,nrdoc1,nrdoc2,dtnum1 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loop
if i.dtnum1=1 then
update TMDB_reg_A1D a1D
set suma1=(case when (select u.gr1 from vms_univers u where u.cod=a1d.dtsc0)=’LRR’
then a1d.dtcant0*a1d.dtcant2*a1d.dtcant3
else a1d.dtcant2*a1d.dtcant3 end)
where nrdoc=p_nrdoc and nrdoc1= v_nrdoc1 and nrdoc2=i.nrdoc2;
—‘ using p_nrdoc,v_nrdoc1,i.nrdoc2;
else
execute immediate ‘update TMDB_reg_A1D a1D
set suma1=a1d.dtcant3
where nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3
‘ using p_nrdoc,v_nrdoc1,i.nrdoc2;
end if;
execute immediate ‘update TMDB_reg_A1 a1
set SUMA1=(select sum(SUMA1) from TMDB_reg_A1D d
where a1.nrdoc=d.nrdoc and a1.nrdoc1=d.nrdoc1 and a1.nrdoc2=d.nrdoc2 )
where a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3
‘ using i.nrdoc,i.nrdoc1,i.nrdoc2;
end loop;
execute immediate ‘update TMDB_reg r
set suma2=(select sum(suma1) from TMDB_reg_A1 a1 where r.nrdoc=a1.nrdoc and a1.nrdoc1=:1)
where nrdoc=:2
‘using v_nrdoc1,p_nrdoc;
end;
when v_sysfid=1408 then
begin
execute immediate ‘update TMDB_reg r
set suma2=(select sum(suma1) from TMDB_reg_A1 a1 where r.nrdoc=a1.nrdoc and a1.nrdoc1=:1)
where nrdoc=:2
‘using v_nrdoc1,p_nrdoc;
end;
when v_sysfid=1409 then
begin
for i in(select nrdoc,nrdoc1,nrdoc2 from TMDB_reg_A1 where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loop
execute immediate ‘update TMDB_reg_A1 a1
set dtcant0=(select sum(SUMA0) from TMDB_reg_A1D d
where a1.nrdoc=d.nrdoc and a1.nrdoc1=d.nrdoc1 and a1.nrdoc2=d.nrdoc2 )
where a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3
‘ using i.nrdoc,i.nrdoc1,i.nrdoc2;
end loop;
end;
when v_sysfid=1407 or v_sysfid=1413 then
begin
for i in(select nrdoc,nrdoc1,nrdoc2 from TMDB_reg_A1
where nrdoc=p_nrdoc and nrdoc1=v_nrdoc1) loop
execute immediate ‘update TMDB_reg_A1 a1
set suma1=dtcant0*suma0
where a1.nrdoc=:1 and a1.nrdoc1=:2 and a1.nrdoc2=:3
‘ using i.nrdoc,i.nrdoc1,i.nrdoc2;
end loop;
end;
else msg(‘Данный экшен не предназначен для этого типа документа’);
end case;
end;
PROCEDURE usl_calc(p_nrdoc NUMBER,p_sysfid NUMBER,p_client number:=-1,p_grp_name varchar2:=null)
s long;
v_contr number;
begin
очистка документа
if 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 then
execute immediate ‘select CTNUM0 from tmdb_reg_a where nrdoc=’||p_nrdoc into v_contr;
end if;
execute immediate ‘delete from TMDB_REG_A where nrdoc=:1’ using p_nrdoc;
end if;
execute immediate ‘delete from TMDB_REG_A2 where nrdoc=:1’ using p_nrdoc;
execute immediate ‘delete from TMDB_REG_A2D where nrdoc=:1’ using p_nrdoc;
case
-contract Suporturi radioficare and contract radioficare
when p_sysfid in(1407,1413) then yrdc_contracts.calc_contr_radiof(p_nrdoc,p_sysfid,p_client,p_grp_name,v_contr);
-contract telecomunicatii
when p_sysfid=1406 then yrdc_contracts.calc_contr_telecom(p_nrdoc,p_sysfid);
-contract FST
when p_sysfid=1409 then yrdc_contracts.calc_contr_fst(p_nrdoc,p_sysfid);
else null;
end case;
end;
PROCEDURE calc_tva(p_nrdoc NUMBER,p_sysfid number)
begin
case
when p_sysfid=1407 or p_sysfid=1413 then yrdc_contracts.calc_tva_radiof(p_nrdoc);
when p_sysfid=1406 then yrdc_contracts.calc_tva_telecom(p_nrdoc);
when p_sysfid=1409 then yrdc_contracts.calc_tva_fst(p_nrdoc);
end case;
end;
PROCEDURE calc_tva_radiof(p_nrdoc NUMBER) is
v_clcmonths varchar2(10):=»;
begin
for i in (select nrdoc1,dtnum2,DTNUM4,nvl(SUMA3,0) suma3 from VMDB_REG_A where nrdoc=p_nrdoc) loop
case
when i.DTNUM4=1 then v_clcmonths:=’3 ‘;
when i.DTNUM4=3 then v_clcmonths:=’6 ‘;
else v_clcmonths:=’1 ‘;
end case;
if i.dtnum2=1 then
execute immediate ‘
update TMDB_REG_A2 a2
—TVA
SUMA3=(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)
where nrdoc=:1 and nrdoc1=:2
‘ using p_nrdoc,i.nrdoc1;
else
execute immediate ‘
update TMDB_REG_A2 a2
—TVA
SUMA3=(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)*/
where nrdoc=:1 and nrdoc1=:2
‘ using p_nrdoc,i.nrdoc1;
end if;
end loop;
—TOTAL
execute immediate ‘
update TMDB_REG_A2 a2
set SUMA4=SUMA3+SUMA1
where nrdoc=:1 ‘ using p_nrdoc;
end;
PROCEDURE calc_tva_telecom(p_nrdoc NUMBER)is
v_val_contr varchar2(70):=»;
v_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);
begin
for i in (select nrdoc1,nrdoc2,dtnum2,dtnum1,dtvaluta0,dtvaluta1 from VMDB_REG_A2 where nrdoc=p_nrdoc) loop
if upper(i.DTVALUTA1)<>’LEI’ then
v_val_contr:=’un$valuta.GETCURS(»’||v_datadoc||»’,»’||i.DTVALUTA1||»’,2)* ‘;
if i.dtnum1=1 then
execute immediate ‘
update TMDB_REG_A2D a2
—Plata pentru cap.deplina (lei)
suma0=(case when (select u.gr1 from vms_univers u where u.cod=a2.dtsc0)=»LRR»
then nvl(DTCANT1,0)*nvl(DTCANT3,0)*nvl(DTCANT0,0)
else 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»
then nvl(DTCANT2,0)*nvl(DTCANT4,0)*nvl(DTCANT0,0)
else 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»
then ‘||v_val_contr||’nvl(DTCANT1,0)*nvl(DTCANT3,0)*nvl(DTCANT0,0)
else ‘||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»
then ‘||v_val_contr||’nvl(DTCANT2,0)*nvl(DTCANT4,0)*nvl(DTCANT0,0)
else ‘||v_val_contr||’nvl(DTCANT2,0)*nvl(DTCANT4,0)end),0)
where nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3
‘ using p_nrdoc,i.nrdoc1,i.nrdoc2;
else
execute immediate ‘
update TMDB_REG_A2D a2
suma0=nvl(DTCANT1,0)
,SUMA1=’||v_val_contr||’nvl(DTCANT1,0)
where nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3
‘ using p_nrdoc,i.nrdoc1,i.nrdoc2;
end if;
end if;
if i.dtnum2=1 then
execute immediate ‘
update TMDB_REG_A2D a2
—TVA
SUMA3=SUMA1*(SUMA2/100/(1+SUMA2/100))
where nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3
‘ using p_nrdoc,i.nrdoc1,i.nrdoc2;
else
execute immediate ‘
update TMDB_REG_A2D a2
—TVA
SUMA3=SUMA1*(SUMA2/100)
where nrdoc=:1 and nrdoc1=:2 and nrdoc2=:3
‘ using p_nrdoc,i.nrdoc1,i.nrdoc2;
end if;
end loop;
—TOTAL
execute immediate ‘
update TMDB_REG_A2D a2
set SUMA4=SUMA3+SUMA1
where nrdoc=:1 ‘ using p_nrdoc;
end;
PROCEDURE calc_tva_fst(p_nrdoc NUMBER)is
begin
execute immediate ‘
update TMDB_REG_A2 a2
—Suma fara tva
SUMA1=nvl(suma0,0)+nvl(dtcant0,0)
where nrdoc=:1
‘ using p_nrdoc;
execute immediate ‘
update TMDB_REG_A2 a2
—Suma TVA
SUMA3=nvl(suma1,0)*nvl(suma2,0)/100
—Suma Total
,SUMA4=nvl(suma1,0)+nvl(suma1,0)*nvl(suma2,0)/100
where nrdoc=:1
‘ using p_nrdoc;
end;
sysfid in(1410,1415)
PROCEDURE calc_contr_radiof(p_nrdoc NUMBER,p_sysfid NUMBER,p_client NUMBER,p_grp_name varchar2:=null,p_contr number:=null)
v_tip_prest_srv varchar2(70):=»;
v_client_flt varchar2(70):= »;
v_val_contr varchar2(70):=»;
v_clcmonths varchar2(10):=»;
v_filtgrp varchar2(100):=»;
v_cond_contr varchar2(70):=»;
s long;
v_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);
—исключения-
miss_expr exception;
pragma exception_init(miss_expr,-936);
begin
проверка на sysfid. если sys_context(‘envun4′,’filt_contract’)=1,применяем фильтр на контракт
if sys_context(‘envun4′,’filt_contract’)=1 then
v_cond_contr:=’ and nrdoc=’||p_contr;
end if;
добавление условия на Tipul prestarii SRV для p_sysfid=1407
case
when to_char(abm_util.data_by_nrdoc(p_nrdoc),’mm’) in (6,12) then v_tip_prest_srv:=’ ‘;
when 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) ‘;
else v_tip_prest_srv:=’ and nvl(c.DTNUM4,2) in(2) ‘;
end case;
проверка на существование фильтра по клиентам(если -1 то все клиенты, иначе только p_client)
if p_client<>-1 then
v_client_flt:=’ and c.dtsc0=’||p_client;
end if;
проверка на существование параметра группы контрагентов(если не null,то существует)
if p_grp_name is not null then
v_filtgrp:=’ and c.dtsc0 in(select sc from TMS_SYSGRP where GROUP1||GROUP2||GROUP3||GROUP4||GROUP5=’||p_grp_name||’) ‘;
— say(‘v_filtgrp=’||v_filtgrp);
end 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*/)
select ‘||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.nrdoc
and DTDATA0=(select max(DTDATA0) from TMDB_reg_A a1 where a.nrdoc=a1.nrdoc) ) CTNUM1
/*,C.SUMA3*/
from yrdc_contract c
where »’||abm_util.data_by_nrdoc(p_nrdoc)||»’ between dtdata1 and dtdata2 ‘||v_tip_prest_srv||’
and 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
v_val_contr:=’un$valuta.GETCURS(»’||v_datadoc||»’,»’||i.DTVALUTA0||»’,2)* ‘;
end if;
умножение на количество месяцев (возможные значения: 1,3,6)
case
when i.DTNUM4=1 then v_clcmonths:=’3* ‘;
when i.DTNUM4=3 then v_clcmonths:=’6* ‘;
else v_clcmonths:=’1* ‘;
end case;
begin
execute immediate ‘insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3, DTCANT0,
DTSTR0,SUMA0, SUMA2,CTNUM0, CTNUM1, CTNUM2,DTSTR4,DTNUM4,dtdata1)
select ‘||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)
from TMDB_reg_A1 a1
where a1.nrdoc=’||i.ctnum0||’ and a1.nrdoc1=’||i.ctnum1||’
exception
-missing expression
when miss_expr then
msg(‘В контракте ‘||i.ctnum0||’ не указано значение поля НДС(Date cu privire la TVA)’);
end;
end loop;
end;
sysfid=1411
PROCEDURE calc_contr_telecom(p_nrdoc NUMBER,p_sysfid NUMBER)
v_contr number;
v_client number;
v_dataspec_actual date;
v_dataspec_prev date;
v_open_curs varchar2(250);
v_datadoc date:=abm_util.data_by_nrdoc(p_nrdoc);
cr sys_refcursor;
type rec is record(
nrdoc1 number,dtdata0 date
in_rec rec;
s long;
begin
execute immediate ‘select CTNUM0,dtsc0 from tmdb_reg_a where nrdoc=’||p_nrdoc into v_contr,v_client;
v_open_curs:=’select nrdoc1,DTDATA0 from tmdb_reg_a where nrdoc=’||v_contr||’ ‘;
выбираем максимальную дату контракта, не превышающую месяца документа расчета доходов услуг
execute immediate ‘select max(DTDATA0) from tmdb_reg_a where nrdoc=:1
and trunc(DTDATA0,»mm»)<=:2′
into v_dataspec_actual using v_contr,trunc(abm_util.data_by_nrdoc(p_nrdoc),’mm’);
if v_dataspec_actual is null then
msg(‘Внимание!’||’В выбранном контракте дата спецификации отсутствует либо не является актуальной для данного месяца.’);
end if;
выбираем максимальную дату спецификации контракта за предыдущие месяцы
execute immediate ‘select max(DTDATA0) from tmdb_reg_a where nrdoc=:1
and to_char(DTDATA0,»mm.yyyy»)<:2′
into v_dataspec_prev using v_contr,to_char(abm_util.data_by_nrdoc(p_nrdoc),’mm.yyyy’);
формируем динамически курсор
case when v_dataspec_prev is null
then v_open_curs:=v_open_curs||’ and dtdata0<=»’||v_dataspec_actual||»’ ‘;
when v_dataspec_prev=v_dataspec_actual
then v_open_curs:=v_open_curs||’ and dtdata0=»’||v_dataspec_actual||»’ ‘;
else v_open_curs:=v_open_curs||’ and dtdata0 between »’||v_dataspec_prev||»’ and »’||v_dataspec_actual||»’ ‘;
end case;
OPEN cr FOR v_open_curs;
LOOP
FETCH cr INTO in_rec;
EXIT WHEN cr%NOTFOUND;
заполнение первого грида(CTNUM0, CTNUM1, CTNUM2 — nrdoc,nrdoc1,nrdoc2 документов контрактов 1406 )
execute immediate ‘insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3
DTDATA0, DTNUM1, DTNUM2, DTSTR1, DTSTR2,DTVALUTA0,DTVALUTA1,CTNUM0, CTNUM1, CTNUM2)
select ‘||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 ctnum2
from TMDB_reg_A1 a1
where a1.nrdoc=’||v_contr||’ and a1.nrdoc1=’||in_rec.nrdoc1||’
end loop;
close cr;
заполнение второго грида(CTNUM0, CTNUM1, CTNUM2, CTNUM3 — nrdoc,nrdoc1,nrdoc2,nrdoc3 документов контрактов 1406 )
for i in(select nrdoc,nrdoc1,nrdoc2,CTNUM0, CTNUM1, CTNUM2,dtnum2,dtsc0 from TMDB_REG_A2 where nrdoc=p_nrdoc) loop
execute immediate ‘insert into TMDB_REG_A2D(NRDOC, NRDOC1, NRDOC2,NRDOC3
,DTSC0,DTNUM2,DTNUM4,DTSTR0,DTSTR2,DTSTR4,DTCANT0,DTCANT1,DTCANT2,SUMA2
,CTNUM0, CTNUM1, CTNUM2, CTNUM3)
select ‘||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 CTNUM3
from VMDB_reg_A1D d
where d.nrdoc=’||i.CTNUM0||’ and d.nrdoc1=’||i.CTNUM1||’ and d.nrdoc2=’||i.CTNUM2||’
end loop;
—say(v_open_curs);msg(»);
end;
sysfid=1412
PROCEDURE calc_contr_fst(p_nrdoc NUMBER,p_sysfid NUMBER)
v_contr number;
v_dataspec_actual date;
v_val_contr varchar2(70):=»;
v_clcmonths varchar2(10):=»;
v_rec varchar2(250);
type rec is record(
nrdoc1 number,dtdata0 date,dtvaluta0 char(3)
,dtnum2 number —Date privitor la TVA
,dtnum4 number —Tipul srv prestat
in_rec rec;
begin
execute immediate ‘select CTNUM0 from tmdb_reg_a where nrdoc=’||p_nrdoc into v_contr;
v_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’;
update шапки документа, приносим валюту и тип НДС
execute immediate ‘update tmdb_reg_a a
set (dtvaluta0,dtvaluta1,dtstr2,dtnum2,dtstr4,dtnum4)=
(select dtvaluta0,dtvaluta1,CLCDTNUM2T,DTNUM2,clcdtnum4t,dtnum4 from yrdc_contract c where c.nrdoc=:1)
where a.nrdoc=:2
‘ using v_contr,p_nrdoc;
выбираем максимальную дату контракта, не превышающую месяца документа расчета доходов услуг
execute immediate ‘select max(DTDATA0) from tmdb_reg_a where nrdoc=:1
and to_char(DTDATA0,»mm.yyyy»)<=:2′
into v_dataspec_actual using v_contr,to_char(abm_util.data_by_nrdoc(p_nrdoc),’mm.yyyy’);
if v_dataspec_actual is null then
msg(‘Внимание!’||’В выбранном контракте дата спецификации отсутствует либо не является актуальной для данного месяца.’);
end if;
формируем динамически запрос для записи
v_rec:=v_rec||’ and a.dtdata0=»’||v_dataspec_actual||»’ ‘;
execute immediate v_rec INTO in_rec;
если валюта контракта не лей, то расчет по курсу на дату документа
if upper(in_rec.DTVALUTA0)<>’LEI’ then
v_val_contr:=’un$valuta.GETCURS(»’||abm_util.data_by_nrdoc(p_nrdoc)||»’,»’||in_rec.DTVALUTA0||»’,2)* ‘;
end if;
умножение на количество месяцев (возможные значения: 1,3,6)
case
when in_rec.DTNUM4=1 then v_clcmonths:=’3* ‘;
when in_rec.DTNUM4=3 then v_clcmonths:=’6* ‘;
else v_clcmonths:=’1* ‘;
end case;
заполнение первого грида(CTNUM0, CTNUM1, CTNUM2 — nrdoc,nrdoc1,nrdoc2 документов контрактов 1409 )
execute immediate ‘insert into TMDB_REG_A2(NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3
, DTDATA0, DTNUM0, DTSTR0 /*, DTCANT0 */, DTCANT1, DTCANT2, SUMA0, SUMA1, SUMA2, CTNUM0, CTNUM1, CTNUM2)
select ‘||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 ctnum2
from TMDB_reg_A1 a1
where a1.nrdoc=’||v_contr||’ and a1.nrdoc1=’||in_rec.nrdoc1||’
заполнение второго грида(CTNUM0, CTNUM1, CTNUM2, CTNUM3 — nrdoc,nrdoc1,nrdoc2,nrdoc3 документов контрактов 1409 )
for i in(select nrdoc,nrdoc1,nrdoc2,CTNUM0, CTNUM1, CTNUM2,dtsc0 from TMDB_REG_A2 where nrdoc=p_nrdoc) loop
execute immediate ‘insert into TMDB_REG_A2D(NRDOC, NRDOC1, NRDOC2,NRDOC3
,DTSC0,DTNUM2,DTNUM3,DTSTR2,DTSTR3,DTCANT0,DTDATA0,DTDATA1,SUMA0—,SUMA1
,CTNUM0, CTNUM1, CTNUM2, CTNUM3)
select ‘||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 CTNUM3
from VMDB_reg_A1D d
where d.nrdoc=’||i.CTNUM0||’ and d.nrdoc1=’||i.CTNUM1||’ and d.nrdoc2=’||i.CTNUM2||’
end loop;
end;
actioni «Sgenerirovati nomera NN» v doc.1421
procedure gnr_NN_1421(p_nrdoc number, p_nrdoc1 number)is
vseriaNN varchar2(2);
vnrNN number;
vnr_prod number;
vrn number;
begin
select dtstr8, dtstr9, CTNUM0
into vseriaNN,vnrNN,vnr_prod
from VMDB_REG_A
where nrdoc=p_nrdoc
and nrdoc1 = p_nrdoc1;
if vseriaNN is null or vnrNN is null then
msg(lng(‘Indicati seria si numarul FF pentru doc. ‘||vnr_prod||’!’,’Укажите серию и номер НН для документа ‘||vnr_prod||’!’));
end if;
delete from xsldx where id=1;
insert into xsldx (id, num2, cant1, str1,num1, str0, num3)
select 1, CTNUM0, nrdoc1, dtstr8, dtstr9
, clcdtsc0t, row_number() over (order by dtsc0) rn
from VMDB_REG_A
where nrdoc=p_nrdoc;
select num3 into vrn
from xsldx where id=1 and cant1=p_nrdoc1;
update xsldx x set str1=vseriaNN, num1=vnrNN+x.num3-vrn
where id=1 and num3>vrn
and vnrNN+x.num3-vrn<=9999999;
update VMDB_REG_A a
set dtstr8 = null, dtstr9 = null
where exists (select * from xsldx where id=1 and num2=a.CTNUM0);
update VMDB_REG_A a
set (dtstr8, dtstr9)=(select str1, num1 from xsldx where id=1 and num2=a.CTNUM0)
where exists (select * from xsldx where id=1 and num2=a.CTNUM0);
delete from VMDB01M_VINZ
where cod in (select CTNUM0 from VMDB_REG_A where nrdoc = p_nrdoc);
insert into VMDB01M_VINZ (cod, PRTVA_SERIA, PRTVA_NR, PRTVA_DATA)
select CTNUM0, dtstr8, dtstr9, sysdate from VMDB_REG_A
where nrdoc = p_nrdoc;
end;
actioni «Заполнить из групы Servicii RD prestate populatiei» v doc.1421
procedure enter_servicii(p_nrdoc number) IS
vDataDocPrev DATE;
vSYSFID INTEGER;
vDataDoc DATE;
BEGIN
execute immediate ‘delete from VMDB_REG_A where nrdoc=’||p_nrdoc;
execute immediate ‘delete from VMDB_REG_A2 where nrdoc=’||p_nrdoc;
SELECT datamanual,sysfid INTO vDataDoc,vSysFid
FROM VMDB_DOCS S WHERE S.cod = p_nrdoc;
SELECT MAX(datamanual) INTO vDataDocPrev
FROM VMDB_DOCS d, VMDB_REG_A a
WHERE nrdoc <> p_nrdoc AND datamanual < vDatadoc
AND SYSFID = vSysFID AND a.nrdoc = d.cod;
execute immediate ‘insert into VMDB_REG_A (NRDOC, NRDOC1, DTSC0, DTNUM2, DTNUM4, DTSTR0, DTDATA0, DTVALUTA0, DTVALUTA1,CTNUM0, CTNUM1, ctnum9)
select ‘||p_nrdoc||’, ID_TMDB_CM.NEXTVAL NRDOC1, a.dtsc0, a.dtnum2, a.dtnum4,
a.dtstr0,
(select max(DTDATA0) from TMDB_reg_A a where a.nrdoc=d.cod) DTDATA0,
a.DTVALUTA0, a.DTVALUTA1,
a.CTNUM0,
a.CTNUM1,
d.cod
from vmdb_docs d, VMDB_REG_A a
where a.nrdoc = d.cod
and d.sysfid = 1415
and (a.dtsc0, a.nrdoc) not in ( select ra.dtsc0, ra.ctnum9 from VMDB_REG_A ra, vmdb_docs d
where ra.nrdoc = d.cod and d.datamanual <= »’||vDataDoc||»’
and d.sysfid = 1420)
and exists (select nrdoc from vmdb_cmr where nrdoc=a.nrdoc)’;
execute immediate ‘insert into VMDB_REG_A2 (NRDOC, NRDOC1, NRDOC2,DTSC0, DTSC2, DTSC3, DTCANT0,
DTSTR0,SUMA0, SUMA2,CTNUM0, CTNUM1, CTNUM2,DTSTR4,DTNUM4,dtdata1, dtcant1,
suma1, suma3, suma4, suma5, ctnum9)
select ‘||p_nrdoc||’, a.nrdoc1,
ID_TMDB_CM.NEXTVAL NRDOC2, a2.DTSC0, a2.DTSC2, a2.DTSC3, a2.DTCANT0,
a2.DTSTR0, a2.SUMA0, a2.SUMA2,a2.CTNUM0, a2.CTNUM1, a2.CTNUM2, a2.DTSTR4, a2.DTNUM4, a2.dtdata1,
a2.dtcant1, a2.suma1, a2.suma3, a2.suma4, a2.suma5, a.ctnum9
from VMDB_REG_A a, VMDB_REG_A2 a2
where a2.nrdoc = a.ctnum9 and a.nrdoc = ‘||p_nrdoc||’ ‘;
end;
actioni «Sgenerirovati nomera NN» v doc.1204
procedure gnr_NN_1204(p_nrdoc number, p_rrowid number)is
vseriaNN varchar2(2);
vnrNN number;
vnr_prod number;
vrn number;
begin
select dtstrsc, ctstrsc, a_param1
into vseriaNN,vnrNN,vnr_prod
from VMDB_SALAR_ABSd1
where nrdoc=p_nrdoc
and rrowid = p_rrowid;
if vseriaNN is null or vnrNN is null then
msg(lng(‘Indicati seria si numarul FF pentru doc. ‘||vnr_prod||’!’,’Укажите серию и номер НН для документа ‘||vnr_prod||’!’));
end if;
delete from xsldx where id=1;
insert into xsldx (id, num2, cant1, str1,num1, str0, num3)
select 1, a_param1, rrowid, dtstrsc, ctstrsc
, clcconta_dept, row_number() over (order by dtdep) rn
from VMDB_SALAR_ABSd1
where nrdoc=p_nrdoc;
select num3 into vrn
from xsldx where id=1 and cant1=p_rrowid;
update xsldx x set str1=vseriaNN, num1=vnrNN+x.num3-vrn
where id=1 and num3>vrn
and vnrNN+x.num3-vrn<=9999999;
update VMDB_SALAR_ABSd1 a
set dtstrsc = null, ctstrsc = null
where exists (select * from xsldx where id=1 and num2=a.a_param1);
update VMDB_SALAR_ABSd1 a
set (dtstrsc, ctstrsc)=(select str1, num1 from xsldx where id=1 and num2=a.a_param1)
where exists (select * from xsldx where id=1 and num2=a.a_param1);
delete from VMDB01M_VINZ
where cod in (select a_param1 from VMDB_SALAR_ABSd1 where nrdoc = p_nrdoc);
insert into VMDB01M_VINZ (cod, PRTVA_SERIA, PRTVA_NR, PRTVA_DATA)
select a_param1, dtstrsc, ctstrsc, sysdate from VMDB_SALAR_ABSd1
where nrdoc = p_nrdoc;
end;
заполнене 1422 документа. Все документы по услугам телекомуникаций за месяц (sysfid — 1411)
PROCEDURE enter_1422(p_nrdoc NUMBER, p_data DATE, p_client NUMBER)
BEGIN
delete from VMDB_REG_A where nrdoc = p_nrdoc;
delete from VMDB_REG_A2 where nrdoc = p_nrdoc;
delete from VMDB_REG_A2D where nrdoc = p_nrdoc;
INSERT INTO VMDB_REG_A (nrdoc, nrdoc1, dt, dtsc0, dtstr0, ctnum0, dtdata0)
SELECT p_nrdoc, nrdoc, dt, dtsc0, (select c.dtstr0 from yrdc_contract c where c.nrdoc = a.ctnum0)||’/’||ctnum0, ctnum0, d.datamanual
FROM VMDB_REG_A a, VMDB_DOCS d
WHERE a.nrdoc = d.cod and d.sysfid = 1411
and d.datamanual between trunc(to_date(p_data),’mm’) and p_data
and a.dtsc0 = p_client;
insert into TMDB_REG_A2(nrdoc, nrdoc1, nrdoc2, ct, dtsc0, dtsc2, dtsc3, dtdata0, dtstr2, dtstr1, CTNUM0, CTNUM1, CTNUM2)
select 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.CTNUM2
FROM VMDB_REG_A a, VMDB_REG_A2 a2, VMDB_DOCS d
WHERE a.nrdoc = d.cod and a.nrdoc = a2.nrdoc and d.sysfid = 1411
and d.datamanual between trunc(to_date(p_data),’mm’) and p_data
and a.dtsc0 = p_client;
insert into VMDB_REG_A2D(nrdoc, nrdoc1, nrdoc2, nrdoc3, dtsc0, dtstr2, dtcant0, dtstr0, dtstr4,
dtcant1, dtcant2, dtcant3, dtcant4,
suma0, suma1, suma2, suma3, suma4, suma5)
select 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,
a2d.dtcant3, a2d.dtcant4, a2d.suma0, a2d.suma1, a2d.suma2, a2d.suma3, a2d.suma4, a2d.suma5
FROM VMDB_REG_A a, VMDB_REG_A2 a2, VMDB_REG_A2D a2d, VMDB_DOCS d
WHERE a.nrdoc = d.cod and a.nrdoc = a2.nrdoc and a2.nrdoc = a2d.nrdoc and a2.nrdoc2 = a2d.nrdoc2 and d.sysfid = 1411
and d.datamanual between trunc(to_date(p_data),’mm’) and p_data
and a.dtsc0 = p_client;
END;
procedure check_date(vdate date) is
begin
msg(vdate);
end;
END yrdc_contracts;
CREATE OR REPLACE PACKAGE BODY RADIOCOM.yrdc_contr_reps AS
/******************************************************************************
NAME: yrdc_contr_reps
PURPOSE:
REVISIONS:
Ver Date Author Description
— — —
1.0 02.02.2010 1. Created this package body.
******************************************************************************/
PROCEDURE rep_hist_spec(p_datastart date,p_dataend date,p_contr IN LONG,SQLH OUT LONG,SQLM OUT LONG)
v_filtgrp varchar2(100):=»;
begin
проверка на существование параметра группы контрагентов(если не null,то существует)
if p_contr is not null then
v_filtgrp:=’ and ‘||Un$g$util.ScGrCond(‘c.dtsc0′,p_contr)||’ ‘;
end if;
SQLH:=’select »’||p_datastart||»’ datastart
,»’||p_dataend||»’ dataend
from dual’;
SQLM:=’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
abs(sum(diff_neg)) end diff_neg
,sum(diff_pos) diff_pos
from(
select a2.*
,case when rn=1 then sum(difference) over(partition by contract) else 0 end sold_final
from(
select 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_cant
else decode(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
from(
select 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
from(
select 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 chk
from VMDB_REG_A a,yrdc_contract c
where a.nrdoc=c.nrdoc
and exists(select 1 from vmdb_docs d where d.sysfid=1413 and d.cod=c.nrdoc)
and »’||p_datastart||»’ between c.DTDATA1 and c.DTDATA2
and a.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||’
group by a3.contract,a3.client_name,a3.client_cod
order by a3.client_name,a3.contract’;
—Imt(sqlm,re=>true);
end;
PROCEDURE rep_serv_radio(p_datastart date,p_dataend date,p_contr IN LONG,SQLH IN OUT LONG,SQLM IN OUT LONG)
v_filtgrp varchar2(100):=»;
SQL1 long;
begin
if p_contr is not null then
v_filtgrp:=’ and ‘||Un$g$util.ScGrCond(‘client’,p_contr)||’ ‘;
end if;
yrdc_contr_reps.rep_hist_spec(p_datastart,p_dataend,p_contr,SQLH,SQL);
UN$SLD.make(p_datastart-1/24,’1′,pfilt=>’ACD’,pcont=>’2211′,psc=>’39849,29522′);
UN$SLD.make(p_dataend,’2′,pfilt=>’ACD’,pcont=>’2211′,psc=>’39849,29522′);
return;
SQLM:=’Select
client
,(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
from
Select
client
,case when analitica=29522 then (select nrdoc from yrdc_contract k where »’||p_datastart||»’ between dtdata1 and dtdata2 and dtnum6=2
and client=dtsc0 and exists(select 1 from vmdb_docs where sysfid =1413 and k.nrdoc=cod and at1 is null)) else
case when analitica=39849 then (select nrdoc from yrdc_contract k where »’||p_datastart||»’ between dtdata1 and dtdata2 and dtnum6 in (1,3)
and 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
from
Select
cont
,analitica
,client
,sold_init
,0 dtsuma
,0 ctsuma
,sold_end
from
(SELECT cont, sc analitica, dep client
,case when id=1 then suma end sold_init
,case when id=2 then suma end sold_end
FROM xsld where ID=1 or ID=2) a
WHERE 1=1 ‘||v_filtgrp||’
union all
Select
cont
,analitica
,client
,0 sold_init
,dtsuma
,0 ctsuma
,0 sold_end
from
Select c.dt cont,a.ctnum0 contract,c.dtsc analitica,c.dtdep client,sum(c.suma) dtsuma,0 ctsuma
from vmdb_cmi c, vmdb_reg_a a
where c.nrdoc=a.nrdoc and c.dtdep=a.dtsc0
and c.data between »’||p_datastart||»’ and »’||p_dataend||»’
and exists (Select 1 from vmdb_docs where sysfid in(1410,1415)and c.nrdoc=cod)
group by c.dt,a.ctnum0,c.dtsc,c.dtdep)
WHERE 1=1 ‘||v_filtgrp||’
union all
Select
cont
,analitica
,client
,0 sold_init
,0 dtsuma
,sum(ctsuma) ctsuma
,0 sold_end
from
Select c.ct cont
,c.ctsc analitica,c.ctdep client,c.suma ctsuma
from vmdb_cmi c
where ct=2211 and ctsc in(29522,39849)
and c.data between »’||p_datastart||»’ and »’||p_dataend||»’)
WHERE 1=1 ‘||v_filtgrp||’
group by cont,client,analitica
)a GROUP BY cont,client,analitica
union all
Select
client_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
from (‘||SQLM||’) m
GROUP BY client,contract
order by (select denumirea from vms_univers where client=cod)’;
end;
function get_contracts_data return long is
begin
return
END yrdc_contr_reps.
Размещено на