БД: Отображение структуры цены из этапа проекта, а не из РТ
This commit is contained in:
parent
acbcc35703
commit
4758cf71c8
@ -2216,112 +2216,87 @@ text="
|
|||||||
RSTAGE_ARTS out TSTAGE_ARTS -- Список статей этапа проекта
|
RSTAGE_ARTS out TSTAGE_ARTS -- Список статей этапа проекта
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
RPRJ PROJECT%rowtype; -- Çàïèñü ïðîåêòà
|
|
||||||
RSTG PROJECTSTAGE%rowtype; -- Запись этапа проекта
|
RSTG PROJECTSTAGE%rowtype; -- Запись этапа проекта
|
||||||
NCTL_COST_DP PKG_STD.TREF; -- Рег. номер доп. свойства, определяющего необходимость контроля затрат по статье
|
NCTL_COST_DP PKG_STD.TREF; -- Рег. номер доп. свойства, определяющего необходимость контроля затрат по статье
|
||||||
NCTL_CONTR_DP PKG_STD.TREF; -- Рег. номер доп. свойства, определяющего необходимость контроля контрактации по статье
|
NCTL_CONTR_DP PKG_STD.TREF; -- Рег. номер доп. свойства, определяющего необходимость контроля контрактации по статье
|
||||||
NCT PKG_STD.TREF; -- Ðåã. íîìåð ðàñ÷¸òíîé òàáëèöû
|
|
||||||
RCURSOR PRSG_CALCTAB.TCURSOR; -- Êóðñîð äëÿ îáõîäà ñòðîê ðàñ÷¸òíîé òàáëèöû
|
|
||||||
I PKG_STD.TNUMBER; -- Счётчик статей в результирующей коллекции
|
I PKG_STD.TNUMBER; -- Счётчик статей в результирующей коллекции
|
||||||
begin
|
begin
|
||||||
/* ×èòàåì ïðîåêò è ýòàï */
|
/* ×èòàåì ýòàï */
|
||||||
RSTG := STAGES_GET(NRN => NSTAGE);
|
RSTG := STAGES_GET(NRN => NSTAGE);
|
||||||
RPRJ := GET(NRN => RSTG.PRN);
|
|
||||||
/* Определим дополнительные свойства - контроль затрат */
|
/* Определим дополнительные свойства - контроль затрат */
|
||||||
if (NINC_COST = 1) then
|
if (NINC_COST = 1) then
|
||||||
FIND_DOCS_PROPS_CODE(NFLAG_SMART => 1, NCOMPANY => RPRJ.COMPANY, SCODE => 'ÏÓÏ.CTL_COST', NRN => NCTL_COST_DP);
|
FIND_DOCS_PROPS_CODE(NFLAG_SMART => 1, NCOMPANY => RSTG.COMPANY, SCODE => 'ÏÓÏ.CTL_COST', NRN => NCTL_COST_DP);
|
||||||
end if;
|
end if;
|
||||||
/* Îïðåäåëèì äîïîëíèòåëüíûå ñâîéñòâà - êîíòðîëü çàòðàò */
|
/* Îïðåäåëèì äîïîëíèòåëüíûå ñâîéñòâà - êîíòðîëü êîíòðàêòàöèè */
|
||||||
if (NINC_CONTR = 1) then
|
if (NINC_CONTR = 1) then
|
||||||
FIND_DOCS_PROPS_CODE(NFLAG_SMART => 1,
|
FIND_DOCS_PROPS_CODE(NFLAG_SMART => 1,
|
||||||
NCOMPANY => RPRJ.COMPANY,
|
NCOMPANY => RSTG.COMPANY,
|
||||||
SCODE => 'ПУП.CTL_CONTR',
|
SCODE => 'ПУП.CTL_CONTR',
|
||||||
NRN => NCTL_CONTR_DP);
|
NRN => NCTL_CONTR_DP);
|
||||||
end if;
|
end if;
|
||||||
/* Инициализируем коллекцию */
|
/* Инициализируем коллекцию */
|
||||||
RSTAGE_ARTS := TSTAGE_ARTS();
|
RSTAGE_ARTS := TSTAGE_ARTS();
|
||||||
/* Ïîäáèðàåì ðàñ÷¸òíóþ òàáëèöó */
|
/* Ïîäáèðàåì àêòèâíóþ ñòðóêòóðó öåíû ýòàïà ïðîåêòà è å¸ îáõîäèì ñòàòüè */
|
||||||
for C in (select CT.RN
|
for C in (select CSPA.NUMB SNUMB,
|
||||||
from CALCTABCPYS CT
|
A.RN NARTICLE,
|
||||||
where CT.COMPANY = RPRJ.COMPANY
|
A.NAME SARTICLE,
|
||||||
and exists (select null
|
CSPA.COST_SUM NCOST_SUM
|
||||||
from V_CALCTABCPYPRMS P
|
from PROJECTSTAGE PS,
|
||||||
where P.SPARAMETER_NAME = SSTAGES_CT_CALC_PRM_PRJ
|
STAGES CS,
|
||||||
and P.SSTR_VALUE = RPRJ.CODE
|
CONTRPRSTRUCT CSP,
|
||||||
and P.NPRN = CT.RN)
|
CONTRPRCLC CSPA,
|
||||||
and exists (select null
|
FPDARTCL A
|
||||||
from V_CALCTABCPYPRMS P
|
where PS.RN = RSTG.RN
|
||||||
where P.SPARAMETER_NAME = SSTAGES_CT_CALC_PRM_STG
|
and PS.FACEACCCUST = CS.FACEACC
|
||||||
and trim(P.SSTR_VALUE) = trim(RSTG.NUMB)
|
and CSP.PRN = CS.RN
|
||||||
and P.NPRN = CT.RN)
|
and CSP.SIGN_ACT = 1
|
||||||
order by CT.DOC_DATE desc)
|
and CSPA.PRN = CSP.RN
|
||||||
|
and CSPA.COST_ARTICLE = A.RN
|
||||||
|
order by CSPA.NUMB)
|
||||||
loop
|
loop
|
||||||
/* Áåð¸ì ïåðâóþ íàéäåííóþ è âûõîäèì */
|
/* Äîáàâèì ñòðîêó â êîëëåêöèþ */
|
||||||
NCT := C.RN;
|
RSTAGE_ARTS.EXTEND();
|
||||||
exit;
|
I := RSTAGE_ARTS.LAST;
|
||||||
|
/* Íàïîëíèì å¸ çíà÷åíèÿìè èç õðàíèëèùà */
|
||||||
|
RSTAGE_ARTS(I).NRN := C.NARTICLE;
|
||||||
|
RSTAGE_ARTS(I).SCODE := C.SNUMB;
|
||||||
|
RSTAGE_ARTS(I).SNAME := C.SARTICLE;
|
||||||
|
RSTAGE_ARTS(I).NPLAN := C.NCOST_SUM;
|
||||||
|
/* Åñëè ïðîñèëè âêëþ÷èòü ñâåäåíèÿ î çàòðàòàõ è ñòàòüÿ ïîääåðæèâàåò ýòî */
|
||||||
|
if ((NINC_COST = 1) and
|
||||||
|
(UPPER(F_DOCS_PROPS_GET_STR_VALUE(NPROPERTY => NCTL_COST_DP,
|
||||||
|
SUNITCODE => 'FinPlanArticles',
|
||||||
|
NDOCUMENT => RSTAGE_ARTS(I).NRN)) = UPPER(SYES)) and
|
||||||
|
(RSTAGE_ARTS(I).NPLAN is not null)) then
|
||||||
|
/* Ôàêòè÷åñêèå çàòðàòû ïî ñòàòüå */
|
||||||
|
RSTAGE_ARTS(I).NCOST_FACT := STAGE_ARTS_GET_COST_FACT(NSTAGE => NSTAGE, NFPDARTCL => RSTAGE_ARTS(I).NRN);
|
||||||
|
/* Îòêëîíåíèå çàòðàò (ïëàí-ôàêò) */
|
||||||
|
RSTAGE_ARTS(I).NCOST_DIFF := RSTAGE_ARTS(I).NPLAN - RSTAGE_ARTS(I).NCOST_FACT;
|
||||||
|
/* Êîíòðîëü çàòðàò */
|
||||||
|
if (RSTAGE_ARTS(I).NCOST_DIFF >= 0) then
|
||||||
|
RSTAGE_ARTS(I).NCTRL_COST := 0;
|
||||||
|
else
|
||||||
|
RSTAGE_ARTS(I).NCTRL_COST := 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
/* Åñëè ïðîñèëè âêëþ÷èòü ñâåäåíèÿ î êîíòðàêòàõ è ñòàòüÿ ïîääåðæèâàåò ýòî */
|
||||||
|
if ((NINC_CONTR = 1) and
|
||||||
|
(UPPER(F_DOCS_PROPS_GET_STR_VALUE(NPROPERTY => NCTL_CONTR_DP,
|
||||||
|
SUNITCODE => 'FinPlanArticles',
|
||||||
|
NDOCUMENT => RSTAGE_ARTS(I).NRN)) = UPPER(SYES)) and
|
||||||
|
(RSTAGE_ARTS(I).NPLAN is not null)) then
|
||||||
|
/* Çàêîíòðàêòîâàíî */
|
||||||
|
RSTAGE_ARTS(I).NCONTR := STAGE_ARTS_GET_CONTR(NSTAGE => NSTAGE, NFPDARTCL => RSTAGE_ARTS(I).NRN);
|
||||||
|
/* Îñòàëîñü çàêîíòðàêòîâàòü */
|
||||||
|
RSTAGE_ARTS(I).NCONTR_LEFT := RSTAGE_ARTS(I).NPLAN - RSTAGE_ARTS(I).NCONTR;
|
||||||
|
/* Êîíòðîëü êîíòðàêòàöèè */
|
||||||
|
if (RSTAGE_ARTS(I).NCONTR_LEFT >= 0) then
|
||||||
|
RSTAGE_ARTS(I).NCTRL_CONTR := 0;
|
||||||
|
else
|
||||||
|
RSTAGE_ARTS(I).NCTRL_CONTR := 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Îáõîäèì ñòðîêè ðàñ÷¸òíîé òàáëèöû åñëè íàøëè */
|
|
||||||
if (NCT is not null) then
|
|
||||||
/* Ïîïûòàåìñÿ óñòàíîâèòü òàáëèöó èç õðàíèëèùà */
|
|
||||||
PRSG_CALCTAB_STORE.SELECT_TABLE(NDOCUMENT => NCT,
|
|
||||||
SSHEET_NAME => SSTAGES_CT_CALC_SH_CACL,
|
|
||||||
STABLE_NAME => SSTAGES_CT_CALC_TBL_CLARTS);
|
|
||||||
/* Âñòà¸ì íà ïåðâóþ ñòðîêó */
|
|
||||||
PRSG_CALCTAB_STORE.FIRST_ROW(SROW_NAME => SSTAGES_CT_CALC_LN_ARTS, RCURSOR => RCURSOR);
|
|
||||||
loop
|
|
||||||
/* Äîáàâèì ñòðîêó â êîëëåêöèþ */
|
|
||||||
RSTAGE_ARTS.EXTEND();
|
|
||||||
I := RSTAGE_ARTS.LAST;
|
|
||||||
/* Íàïîëíèì å¸ çíà÷åíèÿìè èç õðàíèëèùà */
|
|
||||||
RSTAGE_ARTS(I).NRN := RCURSOR.ROW_SOURCE;
|
|
||||||
PRSG_CALCTAB_STORE.READ_ROW_STR(RCURSOR => RCURSOR,
|
|
||||||
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_NUMB,
|
|
||||||
SVALUE => RSTAGE_ARTS(I).SCODE);
|
|
||||||
PRSG_CALCTAB_STORE.READ_ROW_STR(RCURSOR => RCURSOR,
|
|
||||||
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_NAME,
|
|
||||||
SVALUE => RSTAGE_ARTS(I).SNAME);
|
|
||||||
PRSG_CALCTAB_STORE.READ_ROW_NUM(RCURSOR => RCURSOR,
|
|
||||||
SCOLUMN_NAME => SSTAGES_CT_CALC_CL_SUMM_PL,
|
|
||||||
NVALUE => RSTAGE_ARTS(I).NPLAN);
|
|
||||||
/* Åñëè ïðîñèëè âêëþ÷èòü ñâåäåíèÿ î çàòðàòàõ è ñòàòüÿ ïîääåðæèâàåò ýòî */
|
|
||||||
if ((NINC_COST = 1) and
|
|
||||||
(UPPER(F_DOCS_PROPS_GET_STR_VALUE(NPROPERTY => NCTL_COST_DP,
|
|
||||||
SUNITCODE => 'FinPlanArticles',
|
|
||||||
NDOCUMENT => RSTAGE_ARTS(I).NRN)) = UPPER(SYES)) and RSTAGE_ARTS(I)
|
|
||||||
.NPLAN is not null) then
|
|
||||||
/* Ôàêòè÷åñêèå çàòðàòû ïî ñòàòüå */
|
|
||||||
RSTAGE_ARTS(I).NCOST_FACT := STAGE_ARTS_GET_COST_FACT(NSTAGE => NSTAGE, NFPDARTCL => RSTAGE_ARTS(I).NRN);
|
|
||||||
/* Îòêëîíåíèå çàòðàò (ïëàí-ôàêò) */
|
|
||||||
RSTAGE_ARTS(I).NCOST_DIFF := RSTAGE_ARTS(I).NPLAN - RSTAGE_ARTS(I).NCOST_FACT;
|
|
||||||
/* Êîíòðîëü çàòðàò */
|
|
||||||
if (RSTAGE_ARTS(I).NCOST_DIFF >= 0) then
|
|
||||||
RSTAGE_ARTS(I).NCTRL_COST := 0;
|
|
||||||
else
|
|
||||||
RSTAGE_ARTS(I).NCTRL_COST := 1;
|
|
||||||
end if;
|
|
||||||
end if;
|
|
||||||
/* Åñëè ïðîñèëè âêëþ÷èòü ñâåäåíèÿ î êîíòðàêòàõ è ñòàòüÿ ïîääåðæèâàåò ýòî */
|
|
||||||
if (NINC_CONTR = 1) and (UPPER(F_DOCS_PROPS_GET_STR_VALUE(NPROPERTY => NCTL_CONTR_DP,
|
|
||||||
SUNITCODE => 'FinPlanArticles',
|
|
||||||
NDOCUMENT => RSTAGE_ARTS(I).NRN)) =
|
|
||||||
UPPER(SYES) and RSTAGE_ARTS(I).NPLAN is not null) then
|
|
||||||
/* Çàêîíòðàêòîâàíî */
|
|
||||||
RSTAGE_ARTS(I).NCONTR := STAGE_ARTS_GET_CONTR(NSTAGE => NSTAGE, NFPDARTCL => RSTAGE_ARTS(I).NRN);
|
|
||||||
/* Îñòàëîñü çàêîíòðàêòîâàòü */
|
|
||||||
RSTAGE_ARTS(I).NCONTR_LEFT := RSTAGE_ARTS(I).NPLAN - RSTAGE_ARTS(I).NCONTR;
|
|
||||||
/* Êîíòðîëü êîíòðàêòàöèè */
|
|
||||||
if (RSTAGE_ARTS(I).NCONTR_LEFT >= 0) then
|
|
||||||
RSTAGE_ARTS(I).NCTRL_CONTR := 0;
|
|
||||||
else
|
|
||||||
RSTAGE_ARTS(I).NCTRL_CONTR := 1;
|
|
||||||
end if;
|
|
||||||
end if;
|
|
||||||
/* Ïåðåõîä íà ñëåäóþùóþ ñòðîêó */
|
|
||||||
if (not PRSG_CALCTAB_STORE.NEXT_ROW(RCURSOR => RCURSOR)) then
|
|
||||||
exit;
|
|
||||||
end if;
|
|
||||||
end loop;
|
|
||||||
end if;
|
|
||||||
end STAGE_ARTS_GET;
|
end STAGE_ARTS_GET;
|
||||||
|
|
||||||
/* Список статей калькуляции этапа проекта */
|
/* Список статей калькуляции этапа проекта */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user