Практическое задание: Как вычислить вступительное сальдо по покупателю
Откройте файл «06_create_usr_RS_DetailedCustomerTurnoverByAccountNumber.sql» с помощью Microsoft SQL Server Management Studio Express. Найдите текст:
-- счета-фактуры - вступительное сальдо select SL03001 as CustomerCode, SL03002 as InvoiceNumber, SL03005 as InvoiceDate, SL03013 as InvoiceAmount, SL03015 as CurrencyCode, rtrim(SUBSTRING(SL03017,1,6)) as AccountNo from SL030100 (NOLOCK) where (SL03005 < @d1) and left(SL03017,len(rtrim(@AccMask)))=rtrim(@AccMask) union all -- платежи - вступительное сальдо select SL21001 as CustomerCode, SL21002 as InvoiceNumber, SL03005 as InvoiceDate, [InvoiceAmount]=-sum(SL21007), SL21017 as [CurrencyCode], rtrim(SUBSTRING(SL03017,1,6)) as AccountNo from SL210100 (NOLOCK) inner join SL030100 (NOLOCK) on (SL03001=SL21001) and (SL03002=SL21002) where SL21006 <@d1 and left(SL03017,len(rtrim(@AccMask)))=rtrim(@AccMask) group by SL21001, SL21002, SL03005, rtrim(SUBSTRING(SL03017,1,6)), SL21017
Объясните, почему в верхней части запроса «InvoiceAmount» равно значению поля, а в нижней – сумме значений. Вы можете скопировать эту часть запроса, вставить его в новый пустой запрос и заменить выражение «@d1 and left(SL03017,len(rtrim(@AccMask)))=rtrim(@AccMask)» на '20100101'. Модифицируйте весь запрос или отдельные его части на Ваше усмотрение, чтобы получить ответ на вопрос. Можно также посмотреть структуру таблиц SL03 и SL21 в отчёте «ScalaFields», расположенном в папке «IT» на локальном сервере отчётности.
Правильный ответ Вы можете получить, если модифицируете нижнюю часть запроса следующим образом:
select
SL21001 as CustomerCode,
SL21002 as InvoiceNumber,
SL21003 as LineNumber,
SL21004 as TransactionNumber,
SL21005 as TransactionDate,
[InvoiceAmount]=-SL21007,
SL21017 as [CurrencyCode],
rtrim(SUBSTRING(SL03017,1,6)) as AccountNo
from SL210100 (NOLOCK)
inner join SL030100 (NOLOCK)
on (SL03001=SL21001) and (SL03002=SL21002)
where SL21006 <'20100101'
В полученном результате можно обнаружить строки, подобные приведённым ниже:
3000000002 ПП7654 01 400004 2009-02-10 00:00:00.000 -2360.00000000 0 62.2 3000000002 ПП7654 02 400007 2009-02-28 00:00:00.000 1180.00000000 0 62.2 3000000002 ПП7654 03 400009 2009-04-20 00:00:00.000 588.82000000 0 62.2
Первая – скорее всего авансовый платёж. Две другие – зачёт аванса в оплату счёта-фактуры. Для того чтобы определить, какого счёта-фактуры, необходимо поискать другие строки с номерами проводок № 400007 и 400009:
3000000002 200902 01 400007 2009-02-28 00:00:00.000 -1180.00000000 0 62.1 3000000002 200904 01 400009 2009-04-20 00:00:00.000 -590.00000000 0 62.1 3000000002 ПП24 02 400009 2009-04-20 00:00:00.000 1180.00000000 0 62.2 3000000002 200903 02 400009 2009-04-20 00:00:00.000 -1178.82000000 0 62.1
Очень часто подобные проводки «разнесения» для покупателей, когда им высылают акты сверки, непонятны. Поэтому многие клиенты Scala пытаются фильтровать их в своих отчётах. Здесь мы вплотную подошли к следующей теме.
Содержание:
- Цели урока, Введение: Цикл продаж: Какие модули участвуют?
- Обзор структуры БД системы
- Знакомство с функциональностью iScala: Технические сведения для начала работы
- Типы заказов на продажу. Специальные типы заказов. Внутренние продажи
- Как устроены таблицы модуля «Заказы на Продажу»?
- Стандартная последовательность действий при работе с заказами на продажу
- Краткое знакомство с типами аналитических проводок модуля «Управление Запасами»
- Основные таблицы модуля «Управление Запасами»
- Практическое задание: Написание запроса для определения остатков по запасам на складах на конец периода
- Основные стандартные отчёты и документы iScala, применимые к «Циклу Продаж»
- Основные таблицы модулей «Статистика» (имеющие отношение к продажам) и Книга Продаж
- Практическое задание: Как вычислить вступительное сальдо по покупателю
- Различные инструменты для получения осмысленной информации