[ОТВЕТИТЬ]
16.09.2014 11:36  
Troll
Задача

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

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

Решение задачи

В бизнес-анализе есть несколько моделей для формирования различных отчетов. Для построения этого отчета была выбрана модель "Движение артикула по документам". Используя эту модель можно сразу сформировать несколько столбцов:
  1. Заголовок документа.Дата документа (для столбца Дата прихода)
  2. Контрагент.Название полное (для столбца Наименование поставщика)
Для формирования остальных столбцов используем формулы:
  1. "supermag.SNUMFACTURA({Заголовок документа. Номер документа})" - Для столбца Номер Счет фактуры.
  2. "supermag.SPAYMENTDELAY({Контрагент. Код контрагента})"+Выбрать максимальное значение - Для столбца Отсрочка в днях.
  3. "{Поля задачи. 2. Заголовок документа. Дата документа}+{Поля задачи. 36. Максимум: Отсрочка}" - Для столбца Дата оплаты накладной
  4. "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;
 
"Спасибо" Troll от:
16.09.2014 11:46  
Mtirt
А чем не устраивал График расчета с поставщиками?
 
"Спасибо" Mtirt от:
 




- - RSS - - Карта - 👫 Яндекс.Метрика