BEGIN
if (inlevel is Null) then
inlevel = 0;
if (inlevel > 100) then
exit;
inlevel = inlevel + 1;
if (InPathPL is Null) then
inPathPL = 0;
FOR
SELECT
P.Id,
P.StoreCard_ID,
R.Quantity * (CAST(1 AS Float) + (CAST(R.WastePercentage as Numeric(15,6)) / CAST(100 as Float))),
R.unitrate,
R.QUnit,
R.issue,
R.PosIndex
FROM PLMPieceLists2 R
JOIN PLMPieceLists P on r.Parent_id = p.id and p.revided_id is null
LEFT JOIN StoreCards SC on SC.ID = P.StoreCard_ID
WHERE R.StoreCard_ID = :Instorecard_id
ORDER BY SC.Code
INTO :PIECELIST_ID, :StoreCard_ID, :Quantity, :unitrate, :QUnit, :issue, :PosIndex
DO BEGIN
outlevel = :inlevel;
inpathPL = inpathPL + 1;
pathPL = inpathPL;
suspend;
FOR
SELECT
PPIPL.PieceList_ID,
PPIPL.StoreCard_ID,
PPIPL.Quantity,
PPIPL.unitrate,
PPIPL.QUnit,
PPIPL.issue,
PPIPL.outlevel,
PPIPL.PathPL,
PPIPL.PosIndex
FROM PLMPrintInvPieceList(:StoreCard_ID, :outlevel, :pathpl) PPIPL
INTO :PIECELIST_ID, :StoreCard_ID, :Quantity, :unitrate, :QUnit, :issue, :outlevel, :PathPL, :PosIndex
do begin
inpathPL = inpathPL + 1;
pathPL = inpathPL;
suspend;
END
END
END;