Задача
Сделать в бизнес анализе супермага отчет который должен содержать столбцы:
Дата прихода (Приходные накладные).
Номер Счет фактуры.
Отсрочка в днях
Дата оплаты накладной. (До какой даты необходимо погасить задолженность).
Наименование поставщика.
Сумма задолженности.
Решение задачи
В бизнес-анализе есть несколько моделей для формирования различных отчетов. Для построения этого отчета была выбрана модель "Движение артикула по документам". Используя эту модель можно сразу сформировать несколько столбцов:
- Заголовок документа.Дата документа (для столбца Дата прихода)
- Контрагент.Название полное (для столбца Наименование поставщика)
Для формирования остальных столбцов используем формулы:
- "supermag.SNUMFACTURA({Заголовок документа. Номер документа})" - Для столбца Номер Счет фактуры.
- "supermag.SPAYMENTDELAY({Контрагент. Код контрагента})"+Выбрать максимальное значение - Для столбца Отсрочка в днях.
- "{Поля задачи. 2. Заголовок документа. Дата документа}+{Поля задачи. 36. Максимум: Отсрочка}" - Для столбца Дата оплаты накладной
- "supermag.SSumDoc({Заголовок документа. Номер документа})-supermag.SSumOplata({Заголовок документа. Номер документа})" - Для столбца Сумма задолженности
Созданные функции в Oracle
1. supermag.SNUMFACTURA
Листинг функции:
Код:
CREATE OR REPLACE FUNCTION SNUMFACTURA(clPath IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
FOR c IN (SELECT SUPPLIERINVOICE FROM Smwaybillsin WHERE ID = clPath AND doctype='WI')
LOOP
RETURN c.SUPPLIERINVOICE;
END LOOP;
RETURN NULL;
END;
2. supermag.SPAYMENTDELAY
Листинг функции:
Код:
CREATE OR REPLACE FUNCTION SPAYMENTDELAY(clPath IN INTEGER)
RETURN INTEGER
IS
BEGIN
FOR c IN (SELECT PAYMENTDELAY FROM Smsuppliers WHERE ID = clPath)
LOOP
RETURN c.PAYMENTDELAY;
END LOOP;
RETURN NULL;
END;
3. supermag.SSumDoc
Листинг функции:
Код:
CREATE OR REPLACE FUNCTION SSumDoc(clPath IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
FOR c IN (SELECT basesum FROM smfinobligation t WHERE DOCID= clPath AND doctype='WI')
LOOP
IF c.basesum > 0
THEN
RETURN c.basesum;
END IF;
RETURN 0;
END LOOP;
RETURN NULL;
END;
4. supermag.SSumOplata
Листинг функции:
Код:
CREATE OR REPLACE FUNCTION SSumOplata(clPath IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
FOR c IN (SELECT linksum FROM smfinlink WHERE DOCINID = clPath AND docintype='WI')
LOOP
RETURN c.linksum;
END LOOP;
RETURN 0;
END;