На главную   На главную   Форумы Новости Документация Скачать Купить  
Регистрация  
Система Allegro
Oб Allegro Характеристики Пример конфигурации Документация База ошибок Развитие
Версия для печати К списку книг Вернуться к оглавлению Предыдущий параграф Следующий параграф
Поиск по книге

Глава 4. СОЗДАНИЕ МЕТАДАННЫХ ДОКУМЕНТА «ПОСТУПЛЕНИЕ НА СКЛАД»

Создаем тип документа «Поступление на склад»

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

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

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

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

Еще наш заказчик утверждает, что иногда счет-фактура от поставщика присылается на фирму по электронной почте до того , как поступит товар и должна вводиться в систему заранее . То есть нужно иметь признак того, поступил ли товар на склад физически или еще нет. И только когда товар реально поступит, устанавливать «некую птичку» для проведения документа в балансе.

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

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

Для создания нового типа документа вызовем окно «Метаданные» и, используя контекстное меню или кнопку на панели инструментов на закладке «Документы», создадим новый тип документа:

Поступление на склад, таблица STOCK_IN. Нажмем кнопку OK.



При создании нового типа документа автоматически создаются два целочисленных поля: ID и DIR_ID, которые отображаются в списке полей, если включен режим Отображать поля ID . Таблица STOCK_IN, которую мы создали, предназначена для хранения «шапки» документа, то есть сведений, относящихся к каждому конкретному документу целиком, и которые можно разместить в таблице одной строкой. Такая таблица называется главной таблицей.

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


Атрибут Поле Тип Класс объектов Обязатель-ный атрибут
Склад STOCK_ACC TACCOUNT   да
Дата поступления на склад ENTRY_DATE DATE   да
Вид документа DOC_KIND INTEGER   да
Кредитуемый счет ACC_ID TACCOUNT   да
Контрагент CONTRAGENT TREFERENCE CONTRAGENT да
Валюта документа LAYER_ID TLAYER   да
Способ расчета сумм CALC_MODE INTEGER   да
Товар поступил HAS_ENTRY TBOOLEAN   да
Дата документа DOC_DATE DATE   да
Номер документа DOC_NO VARCHAR(20)   да
Ставка НДС VAT_RATE DECIMAL(4,2)   да
Курс валюты документа EXCH_RATE_L DECIMAL(18,5)   да
Курс доллара США EXCH_RATE_S DECIMAL(18,5)   да
Всего, в валюте документа TATAL_L DECIMAL(18,2)   да
Всего, в долларах США TOTAL_S DECIMAL(18,2)   да
Всего, в рублях TOTAL_R DECIMAL(18,2)   да

Итак, главная таблица для типа документа «Поступление на склад» готова. Имеет смысл добавить в нее ограничение на уникальность номера документа. Для предотвращения повторного ввода одного и того же документа мы потребуем уникальности сочетания 3 полей : Контрагент, Дата документа, Номер документа.

Чтобы создать ограничение на уникальность воспользуемся окном ISQL (мы это уже делали раньше), которое вызывается с помощью пункта Инструменты/Интерактивный SQL Главного меню.

В окне ISQL наберем команду:

alter table stock_in
add constraint ux_stock_in
unique(contragent, doc_date, doc_no)

и нажмем Ctrl+Enter.



Пример создания склада в Allegro Наверх