Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION rpt.r_report_sales(character varying, bigint, bigint, character varying, character varying)
- RETURNS SETOF refcursor AS
- $BODY$
- DECLARE
- pRefHeader REFCURSOR := 'refHeader';
- pRefDetail REFCURSOR := 'refDetail';
- pSessionId ALIAS FOR $1;
- pRecordOwnerId ALIAS FOR $2;
- pSalesmanId ALIAS FOR $3;
- pStartDate ALIAS FOR $4;
- pEndDate ALIAS FOR $5;
- vEmpty CHARACTER VARYING := '';
- vNo CHARACTER VARYING := 'N';
- vYes CHARACTER VARYING := 'Y';
- vFilterRecordOwner character varying := '';
- vFilterSalesman character varying := '';
- vPosDocTypeId BIGINT := 390;
- vEmptyId BIGINT := -99;
- BEGIN
- OPEN pRefHeader FOR
- SELECT pStartDate AS date_from, pEndDate AS date_to, f_get_record_owner_name(pRecordOwnerId) AS record_owner_name,
- f_get_salesman_name(pSalesmanId) AS salesman_name;
- RETURN NEXT pRefHeader;
- IF pRecordOwnerId <> vEmptyId THEN
- vFilterRecordOwner := ' AND A.record_owner_id = '''|| pRecordOwnerId ||'''';
- END IF;
- IF pSalesmanId <> vEmptyId THEN
- vFilterSalesman := ' AND A.salesman_id = '''|| pSalesmanId ||'''';
- END IF;
- OPEN pRefDetail FOR
- EXECUTE '
- SELECT A.doc_date, f_get_record_owner_name(A.record_owner_id) AS store_name, A.doc_date, f_get_salesman_name(A.salesman_id) AS salesman_name,
- D.top_days, COALESCE(SUM(B.item_amount - B.item_discount_amount), 0) AS total_amount_sales,
- COALESCE(SUM(C.amount_total), 0) AS hpp_amount,
- COALESCE(SUM(B.item_amount - B.item_discount_amount), 0) - COALESCE(SUM(C.amount_total), 0) AS profit_amount
- FROM trx_pos A
- INNER JOIN trx_pos_item B ON A.pos_id = B.pos_id
- INNER JOIN m_customer D ON A.customer_id = D.customer_id
- LEFT JOIN in_summary_cogs C ON A.record_owner_id = C.record_owner_id
- AND substring(A.doc_date, 1, 6) = C.year_month
- AND C.product_id = B.product_id
- WHERE A.doc_type_id = $1
- AND A.doc_date BETWEEN $2 AND $3
- ' || vFilterRecordOwner || vFilterSalesman || '
- GROUP BY A.doc_date, A.record_owner_id, A.doc_date, D.top_days, A.salesman_id'
- USING vPosDocTypeId, pStartDate, pEndDate;
- RETURN NEXT pRefDetail;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- SET search_path = public, mstr, ptg, htg, pb, pj, batch
- COST 100;
- /
Add Comment
Please, Sign In to add comment