Advertisement
aadddrr

r_sales_summary

Apr 18th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Modified by Adrian, Apr 19, 2017
  2. -- Menghilangkan opsi doc type POS
  3.  
  4. CREATE OR REPLACE FUNCTION r_sales_summary(character varying, bigint, bigint, bigint, character varying, bigint, character varying, character varying, bigint)
  5.   RETURNS SETOF refcursor AS
  6. $BODY$
  7. DECLARE
  8.     pRefHeader          REFCURSOR := 'refHeader';
  9.     pRefDetail          REFCURSOR := 'refDetail';
  10.     pRefDetail2         REFCURSOR := 'refDetail2';
  11.     pRefSummary         REFCURSOR := 'refSummary';
  12.     pRefSummaryDetail   REFCURSOR := 'refSummaryDetail';
  13.    
  14.     pSessionId          ALIAS FOR $1;
  15.     pTenantId           ALIAS FOR $2;
  16.     pUserId             ALIAS FOR $3;
  17.     pRoleId             ALIAS FOR $4;
  18.     pDatetime           ALIAS FOR $5;
  19.     pOuId               ALIAS FOR $6;
  20.     pStartDate          ALIAS FOR $7;
  21.     pEndDate            ALIAS FOR $8;
  22.     pPartnerId          ALIAS FOR $9;
  23.     --pDocType          ALIAS FOR $10;
  24.  
  25.     vVoid           character varying := 'V';
  26.     vEmptyId            bigint := -99;
  27.     vEmptyString        character varying := '';
  28.     vEmptyNumeric       numeric := 0;
  29.     vReleaseDoc         character varying := 'R';
  30.     vStock              character varying := 'Y';
  31.     vFilterPartner      text := '';
  32.     vReceiveGoodsManualDocTypeId bigint := 114;
  33.     vDocTypeDo          bigint := 311;
  34.     vDocTypeDoReceipt   bigint := 526;
  35.     vDocTypeReturnNote  bigint := 502;
  36.     vDocTypePosShop     bigint := 401;
  37.     vDocTypePosShopInShop       bigint := 403;
  38.     vDocTypeVoidPosShop     bigint := 405;
  39.     vDocTypeVoidPosShopInShop       bigint := 406;
  40.     vYes                character varying := 'Y';
  41.     vNo             character varying := 'N';
  42.     vDoc                character varying := '';
  43.     vPOS                character varying := 'POS';
  44.     vFilterDocType      text := '';
  45.     vSubTotal       numeric := 0;
  46.     vDPP            numeric := 0;
  47.     vPPN            numeric := 0;
  48.    
  49. BEGIN
  50.    
  51.     DELETE FROM tr_report_sales_supplier WHERE session_id = pSessionId;
  52.                  
  53.     IF (pRoleId = -2) THEN
  54.  
  55.         SELECT partner_id INTO pPartnerId
  56.         FROM m_partner_user WHERE user_id = pUserId;
  57.  
  58.         vFilterPartner := ' AND C.supplier_id =  ' || pPartnerId;
  59.     ELSE
  60.        IF (pPartnerId <> vEmptyId) THEN
  61.         vFilterPartner := ' AND C.supplier_id = ' || pPartnerId;
  62.        END IF
  63.     END IF;
  64.    
  65.     /*IF (pDocType = vPOS) THEN
  66.             vDoc := 'POS';
  67.            
  68.             /*
  69.              * insert data into table tr_report_sales_supplier for POS Shop & POS Shop In Shop from in_log_product_balance_stock
  70.              */
  71.             EXECUTE '
  72.             INSERT INTO tr_report_sales_supplier(
  73.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  74.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  75.                     product_name, product_style, color, psize, normal_price, sold_price,
  76.                     discount, margin_supp, sold_price_after_margin, qty_so)
  77.             SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_no,
  78.                    A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  79.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  80.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  81.             FROM in_log_product_balance_stock A
  82.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  83.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  84.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  85.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  86.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.trx_pos_id = F.trx_pos_id AND C.supplier_id = F.supplier_id
  87.                 AND E.process_no = F.pos_process_no AND E.trx_pos_item_id = F.trx_pos_item_id
  88.             WHERE A.tenant_id = $2
  89.                 AND A.doc_date BETWEEN $5 AND $6
  90.                 AND A.ou_id = $3
  91.                 AND B.flg_buy_konsinyasi = $7
  92.                 AND A.doc_type_id IN ($8, $9) ' || 
  93.                 vFilterPartner || '
  94.                 AND F.from_manual = $11
  95.             GROUP BY C.supplier_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.
  96. supplier_product_code, B.style_product, B.color, B.size,
  97.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  98.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypePosShop, vDocTypePosShopInShop, vEmptyId, vNo;
  99.            
  100.             /*
  101.              * insert data into table tr_report_sales_supplier for Void POS Shop & Void POS Shop In Shop from in_log_product_balance_stock
  102.              */
  103.             EXECUTE '
  104.             INSERT INTO tr_report_sales_supplier(
  105.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  106.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  107.                     product_name, product_style, color, psize, normal_price, sold_price,
  108.                     discount, margin_supp, sold_price_after_margin, qty_so)
  109.             SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_no,
  110.                    SUBSTRING(A.update_datetime, 1, 8) AS doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  111.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  112.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  113.             FROM in_log_product_balance_stock A
  114.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  115.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  116.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  117.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  118.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.trx_pos_id = F.trx_pos_id AND C.supplier_id = F.supplier_id
  119.                 AND E.process_no = F.pos_process_no AND E.trx_pos_item_id = F.trx_pos_item_id
  120.             WHERE A.tenant_id = $2
  121.                 AND SUBSTRING(A.update_datetime, 1, 8) BETWEEN $5 AND $6
  122.                 AND A.ou_id = $3
  123.                 AND B.flg_buy_konsinyasi = $7
  124.                 AND A.doc_type_id IN ($8, $9) ' || 
  125.                 vFilterPartner || '
  126.                 AND F.from_manual = $11
  127.             GROUP BY C.supplier_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  128.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUBSTRING(A.update_datetime, 1, 8)
  129.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeVoidPosShop, vDocTypeVoidPosShopInShop, vEmptyId, vNo;
  130.            
  131.                
  132.         ELSE */
  133.             vDoc := 'ALL';
  134.            
  135.             /*
  136.              * insert data into table tr_report_sales_supplier for DO from in_log_product_balance_stock
  137.              */
  138.             EXECUTE '
  139.             INSERT INTO tr_report_sales_supplier(
  140.  
  141.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  142.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  143.                     product_name, product_style, color, psize, normal_price, sold_price,
  144.                     discount, margin_supp, sold_price_after_margin, qty_so)
  145.             SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  146.                    A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  147.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  148.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  149.             FROM sl_so_balance_invoice A
  150.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  151.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  152.             INNER JOIN sl_do D ON A.ref_id = D.do_id
  153.             INNER JOIN sl_do_item E ON D.do_id = E.do_id AND A.product_id = E.product_id
  154.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  155.             WHERE A.tenant_id = $2
  156.                 AND A.doc_date BETWEEN $5 AND $6
  157.                 AND A.ou_id = $3
  158.                 AND B.flg_buy_konsinyasi = $7
  159.                 AND A.doc_type_id = $8 ' ||
  160.                 vFilterPartner || '
  161.                 AND F.from_manual = $9
  162.             GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  163.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  164.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDo, vNo;
  165.            
  166.             -- insert data into table tr_report_sales_supplier for GR Manual Consignment
  167.            
  168.             EXECUTE '
  169.             INSERT INTO tr_report_sales_supplier(
  170.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  171.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  172.                     product_name, product_style, color, psize, normal_price, sold_price,
  173.                     discount, margin_supp, sold_price_after_margin, qty_so)
  174.             SELECT $1, $2, $3, C.supplier_id,A.so_item_id, f_get_doc_desc($10),
  175.                     B.doc_no,
  176.                     B.doc_date, $4,
  177.                    C.product_id, f_get_product_code(C.product_id), C.supplier_product_code,
  178.                     f_get_product_name(C.product_id), E.style_product, E.color, E.size,
  179.                     A.normal_price_correction, A.sold_price_used,
  180.                     A.discount, A.margin_supp_correction, A.sold_price_after_margin, SUM(D.qty_rcv_po)
  181.             FROM pu_po_balance_item_consignment_sold A
  182.             INNER JOIN pu_receive_goods B ON A.receive_goods_id = B.receive_goods_id
  183.             INNER JOIN pu_receive_goods_item D ON B.receive_goods_id = D.receive_goods_id AND A.receive_goods_item_id = D.receive_goods_item_id
  184.             INNER JOIN m_product_consignment_supp_info C ON C.product_id = D.product_id
  185.             INNER JOIN m_product_custom E ON E.product_id = C.product_id
  186.             WHERE B.tenant_id = $2
  187.                 AND B.doc_date BETWEEN $5 AND $6
  188.                 AND B.ou_id = $3
  189.                 AND E.flg_buy_konsinyasi = $7
  190.                 AND B.doc_type_id = $8 ' || vFilterPartner || '
  191.                 AND A.from_manual = $7
  192.             GROUP BY C.supplier_id, A.so_item_id, B.doc_type_id, B.doc_no, B.doc_date, C.product_id,
  193.                      C.supplier_product_code, E.style_product, E.color, E.size,
  194.             A.normal_price_correction, A.sold_price_used, A.discount, A.margin_supp_correction, A.sold_price_after_margin
  195.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vReceiveGoodsManualDocTypeId, vYes, vDocTypeDo;
  196.  
  197.            
  198.             /*
  199.              * insert data into table tr_report_sales_supplier for DO from in_log_product_consignment_balance_stock
  200.              */
  201.             /*EXECUTE '
  202.             INSERT INTO tr_report_sales_supplier(
  203.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  204.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  205.                     product_name, product_style, color, psize, normal_price, sold_price,
  206.                     discount, margin_supp, sold_price_after_margin, qty_so)
  207.             SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  208.                    A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  209.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  210.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  211.             FROM in_log_product_consignment_balance_stock A
  212.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  213.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  214.             INNER JOIN sl_do D ON A.ref_id = D.do_id
  215.             INNER JOIN sl_do_item E ON D.do_id = E.do_id AND A.product_id = E.product_id
  216.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  217.             WHERE A.tenant_id = $2
  218.                 AND A.doc_date BETWEEN $5 AND $6
  219.                 AND A.ou_id = $3
  220.                 AND B.flg_buy_konsinyasi = $7
  221.                 AND A.doc_type_id = $8 ' ||
  222.                 vFilterPartner || '
  223.                 AND F.from_manual = $9
  224.             GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  225.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  226.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDo, vNo;*/
  227.        
  228.             /*
  229.              * insert data into table tr_report_sales_supplier for POS Shop & POS Shop In Shop from in_log_product_balance_stock
  230.              */
  231.             EXECUTE '
  232.             INSERT INTO tr_report_sales_supplier(
  233.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  234.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  235.                     product_name, product_style, color, psize, normal_price, sold_price,
  236.                     discount, margin_supp, sold_price_after_margin, qty_so)
  237.             SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_no,
  238.                    A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  239.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  240.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  241.             FROM sl_so_balance_invoice A
  242.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  243.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  244.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  245.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  246.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.trx_pos_id = F.trx_pos_id AND C.supplier_id = F.supplier_id
  247.                 AND E.process_no = F.pos_process_no AND E.trx_pos_item_id = F.trx_pos_item_id
  248.             WHERE A.tenant_id = $2
  249.                 AND A.doc_date BETWEEN $5 AND $6
  250.                 AND A.ou_id = $3
  251.                 AND B.flg_buy_konsinyasi = $7
  252.                 AND A.doc_type_id IN ($8, $9) ' || 
  253.                 vFilterPartner || '
  254.                 AND F.from_manual = $11
  255.             GROUP BY C.supplier_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  256.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  257.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypePosShop, vDocTypePosShopInShop, vEmptyId, vNo;
  258.                
  259.                 /*
  260.              * insert data into table tr_report_sales_supplier for Void POS Shop & Void POS Shop In Shop from in_log_product_balance_stock
  261.              */
  262.             EXECUTE '
  263.             INSERT INTO tr_report_sales_supplier(
  264.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  265.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  266.                     product_name, product_style, color, psize, normal_price, sold_price,
  267.                     discount, margin_supp, sold_price_after_margin, qty_so)
  268.             SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_no,
  269.                    SUBSTRING(A.update_datetime, 1, 8) AS doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  270.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  271.                    F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  272.             FROM sl_so_balance_invoice A
  273.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  274.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  275.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  276.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  277.             INNER JOIN pu_po_balance_item_consignment_sold F ON E.trx_pos_id = F.trx_pos_id AND C.supplier_id = F.supplier_id
  278.                 AND E.process_no = F.pos_process_no AND E.trx_pos_item_id = F.trx_pos_item_id
  279.             WHERE A.tenant_id = $2
  280.                 AND SUBSTRING(A.update_datetime, 1, 8) BETWEEN $5 AND $6
  281.                 AND A.ou_id = $3
  282.                 AND B.flg_buy_konsinyasi = $7
  283.                 AND A.doc_type_id IN ($8, $9) ' || 
  284.                 vFilterPartner || '
  285.                 AND F.from_manual = $11
  286.             GROUP BY C.supplier_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  287.             F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUBSTRING(A.update_datetime, 1, 8)
  288.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeVoidPosShop, vDocTypeVoidPosShopInShop, vEmptyId, vNo;
  289.                         /*
  290.      * insert data into table tr_report_sales_supplier for Return Note from in_log_product_balance_stock
  291.      */
  292.     EXECUTE '
  293.     INSERT INTO tr_report_sales_supplier(
  294.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  295.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  296.            product_name, product_style, color, psize, normal_price, sold_price,
  297.            discount, margin_supp, sold_price_after_margin, qty_so)
  298.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  299.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  300.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  301.            F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  302.     FROM sl_so_balance_invoice A
  303.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  304.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  305.     INNER JOIN in_inventory D ON A.ref_id = D.inventory_id
  306.     INNER JOIN in_inventory_item G ON D.inventory_id = G.inventory_id AND A.product_id = G.product_id
  307.     INNER JOIN sl_do_item E ON G.ref_item_id = E.do_item_id AND G.product_id = E.product_id
  308.     INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  309.     WHERE A.tenant_id = $2
  310.         AND A.doc_date BETWEEN $5 AND $6
  311.         AND A.ou_id = $3
  312.         AND B.flg_buy_konsinyasi = $7
  313.         AND A.doc_type_id IN ($9) ' || 
  314.         vFilterPartner || '
  315.         AND F.from_manual = $10
  316.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  317.     F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  318.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDoReceipt, vDocTypeReturnNote, vNo;
  319.    
  320.    
  321.     /*
  322.      * insert data into table tr_report_sales_supplier for DO Receipt from in_log_product_balance_stock
  323.      */
  324.     EXECUTE '
  325.     INSERT INTO tr_report_sales_supplier(
  326.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  327.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  328.            product_name, product_style, color, psize, normal_price, sold_price,
  329.            discount, margin_supp, sold_price_after_margin, qty_so)
  330.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  331.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  332.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  333.            F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  334.     FROM sl_so_balance_invoice A
  335.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  336.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  337.     INNER JOIN in_do_receipt D ON A.ref_id = D.do_receipt_id
  338.     INNER JOIN in_do_receipt_item G ON D.do_receipt_id = G.do_receipt_id AND A.product_id = G.product_id
  339.     INNER JOIN sl_do_item E ON G.ref_id = E.do_item_id AND G.product_id = E.product_id
  340.     INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  341.     WHERE A.tenant_id = $2
  342.         AND A.doc_date BETWEEN $5 AND $6
  343.         AND A.ou_id = $3
  344.         AND B.flg_buy_konsinyasi = $7
  345.         AND A.doc_type_id IN ($8) ' || 
  346.         vFilterPartner || '
  347.         AND F.from_manual = $10
  348.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  349.     F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  350.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDoReceipt, vDocTypeReturnNote, vNo;
  351.    
  352.     /*
  353.      * insert data into table tr_report_sales_supplier for Return Note from in_log_product_consignment_balance_stock
  354.      */
  355.     /*EXECUTE '
  356.     INSERT INTO tr_report_sales_supplier(
  357.             session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  358.             doc_date, payment_method, product_id, product_code, supplier_product_code,
  359.             product_name, product_style, color, psize, normal_price, sold_price,
  360.             discount, margin_supp, sold_price_after_margin, qty_so)
  361.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  362.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  363.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  364.            F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  365.     FROM in_log_product_consignment_balance_stock A
  366.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  367.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  368.     INNER JOIN in_inventory D ON A.ref_id = D.inventory_id
  369.     INNER JOIN in_inventory_item G ON D.inventory_id = G.inventory_id AND A.product_id = G.product_id
  370.     INNER JOIN sl_do_item E ON G.ref_item_id = E.do_item_id AND G.product_id = E.product_id
  371.     INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  372.     WHERE A.tenant_id = $2
  373.         AND A.doc_date BETWEEN $5 AND $6
  374.         AND A.ou_id = $3
  375.         AND B.flg_buy_konsinyasi = $7
  376.         AND A.doc_type_id IN ($9) ' || 
  377.         vFilterPartner || '
  378.         AND F.from_manual = $10
  379.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  380.     F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  381.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDoReceipt, vDocTypeReturnNote, vNo;*/
  382.    
  383.  
  384.     /*
  385.      * insert data into table tr_report_sales_supplier for DO Receipt from in_log_product_consignment_balance_stock
  386.      */
  387.     /*EXECUTE '
  388.     INSERT INTO tr_report_sales_supplier(
  389.             session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_no,
  390.             doc_date, payment_method, product_id, product_code, supplier_product_code,
  391.             product_name, product_style, color, psize, normal_price, sold_price,
  392.             discount, margin_supp, sold_price_after_margin, qty_so)
  393.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_no,
  394.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  395.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, F.normal_price_correction, F.sold_price_used,
  396.            F.discount, F.margin_supp_correction, F.sold_price_after_margin, SUM(A.qty) * -1
  397.     FROM in_log_product_consignment_balance_stock A
  398.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  399.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  400.     INNER JOIN in_do_receipt D ON A.ref_id = D.do_receipt_id
  401.     INNER JOIN in_do_receipt_item G ON D.do_receipt_id = G.do_receipt_id AND A.product_id = G.product_id
  402.     INNER JOIN sl_do_item E ON G.ref_id = E.do_item_id AND G.product_id = E.product_id
  403.     INNER JOIN pu_po_balance_item_consignment_sold F ON E.ref_id = F.so_item_id AND C.supplier_id = F.supplier_id
  404.     WHERE A.tenant_id = $2
  405.         AND A.doc_date BETWEEN $5 AND $6
  406.         AND A.ou_id = $3
  407.         AND B.flg_buy_konsinyasi = $7
  408.         AND A.doc_type_id IN ($8) ' || 
  409.         vFilterPartner || '
  410.         AND F.from_manual = $10
  411.         GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  412.     F.normal_price_correction, F.sold_price_used, F.discount, F.margin_supp_correction, F.sold_price_after_margin
  413.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, pStartDate, pEndDate, vYes, vDocTypeDoReceipt, vDocTypeReturnNote, vNo;*/
  414.    
  415.     --END IF;
  416.  
  417.    
  418.     SELECT SUM(sub_total) INTO vSubTotal FROM (
  419.     SELECT (sold_price_after_margin * SUM(qty_so)) AS sub_total
  420.         FROM tr_report_sales_supplier
  421.         WHERE session_id = pSessionId
  422.             AND tenant_id = pTenantId
  423.         GROUP BY transaction_type, doc_no, doc_date, payment_method, product_code,
  424.            supplier_product_code, product_name, product_style, color, psize, normal_price,
  425.            sold_price, discount, margin_supp, sold_price_after_margin, partner_id ) Z;
  426.  
  427.     vDPP = vSubTotal / 1.1;
  428.    
  429.     vPPN =  vSubTotal - vDPP;
  430.        
  431.     Open pRefHeader FOR
  432.     SELECT pPartnerId AS partner_id, CASE WHEN pPartnerId = vEmptyId THEN '(All)' ELSE f_get_partner_name(pPartnerId) END AS partner_name, pStartDate AS start_date,   
  433.         pEndDate AS end_date, pDatetime AS print_datetime, pOuId AS ou_id, f_get_ou_name(pOuId) AS ou_name, vDoc AS filter_doc_type,
  434.         ROUND(COALESCE(vDPP, 0.0), 0) AS dpp, ROUND(COALESCE(vPPN, 0.0), 0) AS ppn;
  435.     RETURN NEXT pRefHeader;
  436.  
  437.    
  438.     Open pRefDetail FOR
  439.         SELECT A.transaction_type, A.doc_no, A.doc_date, A.payment_method, A.product_code,
  440.            A.supplier_product_code, A.product_name, A.product_style, A.color, A.psize, A.normal_price,
  441.            A.sold_price, A.discount, A.margin_supp, A.sold_price_after_margin, SUM(A.qty_so) AS qty_so, (A.sold_price_after_margin * SUM(A.qty_so)) AS sold_price_after_margin_multiply_quantity,
  442.            f_get_partner_name(A.partner_id) AS supplier_name, f_get_partner_code(A.partner_id) AS supplier_code ,B.flg_pkp,
  443.            (A.sold_price * SUM(A.qty_so)) AS sub_total , ROUND(COALESCE(A.sold_price_after_margin * SUM(A.qty_so) / (1.1),0.0),0) AS dpp,
  444.            ROUND(COALESCE(A.sold_price_after_margin * SUM(A.qty_so) - A.sold_price_after_margin * SUM(A.qty_so) / (1.1),0.0),0) AS ppn,
  445.            ROUND((A.sold_price * SUM(A.qty_so))/1.1) as dpp_terjual, ((A.sold_price * SUM(A.qty_so))-ROUND((A.sold_price * SUM(A.qty_so))/1.1)) as ppn_terjual
  446.         FROM tr_report_sales_supplier A
  447.         INNER JOIN m_partner_npwp B ON A.partner_id = B.partner_id
  448.         WHERE A.session_id = pSessionId
  449.             AND A.tenant_id = pTenantId
  450.         GROUP BY A.transaction_type, A.doc_no, A.doc_date, A.payment_method, A.product_code,
  451.            A.supplier_product_code, A.product_name, A.product_style, A.color, A.psize, A.normal_price,
  452.            A.sold_price, A.discount, A.margin_supp, A.sold_price_after_margin, A.partner_id,B.flg_pkp
  453.         ORDER BY supplier_name, doc_date, doc_no;
  454.     RETURN NEXT pRefDetail ;
  455.    
  456.     Open pRefSummary FOR
  457.         SELECT f_get_partner_name(A.partner_id) AS supplier_name, SUM(A.sold_price * A.qty_so) AS sub_total, SUM(A.sold_price_after_margin * A.qty_so) AS sold_price_after_margin_multiply_quantity
  458.         FROM tr_report_sales_supplier A
  459.         INNER JOIN m_partner_npwp B ON A.partner_id = B.partner_id
  460.         WHERE A.session_id = pSessionId
  461.             AND A.tenant_id = pTenantId
  462.         GROUP BY A.partner_id
  463.         ORDER BY supplier_name;
  464.     RETURN NEXT pRefSummary;
  465.    
  466.    
  467.     DELETE FROM tr_report_sales_supplier WHERE session_id = pSessionId;
  468.     DELETE FROM tr_report_sales_supplier_for_sales_summary WHERE session_id = pSessionId;
  469.  
  470.     IF (pRoleId = -2) THEN
  471.  
  472.         SELECT partner_id INTO pPartnerId
  473.         FROM m_partner_user WHERE user_id = pUserId;
  474.  
  475.         vFilterPartner := ' AND C.supplier_id =  ' || pPartnerId;
  476.     ELSE
  477.        IF (pPartnerId <> vEmptyId) THEN
  478.         vFilterPartner := ' AND C.supplier_id = ' || pPartnerId;
  479.        END IF
  480.     END IF;
  481.    
  482.    
  483.     /*IF (pDocType = vPOS) THEN
  484.             vDoc := 'POS';
  485.            
  486.             /*
  487.              * insert data into table tr_report_sales_supplier for POS Shop & POS Shop In Shop from in_log_product_balance_stock
  488.              */
  489.             EXECUTE '
  490.             INSERT INTO tr_report_sales_supplier_for_sales_summary(
  491.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id , doc_no,
  492.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  493.                     product_name, product_style, color, psize, normal_price, sold_price,
  494.                     discount, margin_supp, sold_price_after_margin, qty_so)
  495.             SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_type_id , A.ref_id, A.doc_no
  496.                    A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  497.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, E.gross_sell_price, E.nett_sell_price,
  498.                    E.discount_percentage, $5, $5, SUM(A.qty)
  499.             FROM in_log_product_balance_stock A
  500.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  501.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  502.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  503.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  504.             WHERE A.tenant_id = $2
  505.                 AND A.doc_date BETWEEN $6 AND $7
  506.                 AND A.ou_id = $3
  507.                 AND B.flg_buy_konsinyasi = $8
  508.                 AND A.doc_type_id IN ($9, $10) ' ||
  509.                 vFilterPartner || '
  510.             GROUP BY C.supplier_id, E.trx_pos_item_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  511.             E.gross_sell_price, E.nett_sell_price, E.discount_percentage
  512.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypePosShop, vDocTypePosShopInShop, vEmptyId;
  513.            
  514.             /*
  515.              * insert data into table tr_report_sales_supplier for Void POS Shop & Void POS Shop In Shop from in_log_product_balance_stock
  516.              */
  517.             EXECUTE '
  518.             INSERT INTO tr_report_sales_supplier_for_sales_summary(
  519.                     session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id, doc_no,
  520.                     doc_date, payment_method, product_id, product_code, supplier_product_code,
  521.                     product_name, product_style, color, psize, normal_price, sold_price,
  522.                     discount, margin_supp, sold_price_after_margin, qty_so)
  523.             SELECT $1, $2, $3, C.supplier_id, $11, f_get_doc_desc(A.doc_type_id), A.doc_type_id , A.ref_id, A.doc_no,
  524.                    SUBSTRING(A.update_datetime, 1, 8) AS doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  525.                    f_get_product_name(A.product_id), B.style_product, B.color, B.size, E.gross_sell_price, E.nett_sell_price,
  526.                    E.discount_percentage, $5, $5, SUM(A.qty)
  527.             FROM in_log_product_balance_stock A
  528.             INNER JOIN m_product_custom B ON A.product_id = B.product_id
  529.             INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  530.             INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_no = D.doc_no AND A.doc_date = D.doc_date AND D.status = $12
  531.             INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  532.             WHERE A.tenant_id = $2
  533.                 AND SUBSTRING(A.update_datetime, 1, 8) BETWEEN $6 AND $7
  534.                 AND A.ou_id = $3
  535.                 AND B.flg_buy_konsinyasi = $8
  536.                 AND A.doc_type_id IN ($9, $10) ' ||
  537.                 vFilterPartner || '
  538.             GROUP BY C.supplier_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  539.             E.gross_sell_price, E.nett_sell_price, E.discount_percentage, SUBSTRING(A.update_datetime, 1, 8)
  540.             ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeVoidPosShop, vDocTypeVoidPosShopInShop, vEmptyId, vVoid;
  541.     ELSE*/
  542.             vDoc := 'ALL';
  543.            
  544.             /*
  545.      * insert data into table tr_report_sales_supplier for DO from in_log_product_balance_stock
  546.      */
  547.     EXECUTE '
  548.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  549.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id, doc_no,
  550.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  551.            product_name, product_style, color, psize, normal_price, sold_price,
  552.            discount, margin_supp, sold_price_after_margin, qty_so)
  553.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  554.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  555.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, G.gross_sell_price, G.nett_sell_price,
  556.            (((G.gross_sell_price - G.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  557.     FROM sl_so_balance_invoice A
  558.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  559.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  560.     INNER JOIN sl_do D ON A.ref_id = D.do_id
  561.     INNER JOIN sl_do_item E ON D.do_id = E.do_id AND A.product_id = E.product_id
  562.     INNER JOIN sl_so_balance_invoice F ON D.do_id = F.ref_id AND D.ref_id = so_id AND E.do_item_id = F.ref_item_id
  563.         AND F.do_receipt_item_id = -99
  564.         AND F.ref_doc_type_id = D.doc_type_id
  565.     INNER JOIN sl_so_item G ON E.ref_id = G.so_item_id AND F.so_id = G.so_id AND E.product_id = G.product_id
  566.     WHERE A.tenant_id = $2
  567.         AND A.doc_date BETWEEN $6 AND $7
  568.         AND A.ou_id = $3
  569.         AND B.flg_buy_konsinyasi = $8
  570.         AND A.doc_type_id = $9 ' ||
  571.         vFilterPartner || '
  572.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  573.     G.gross_sell_price, G.nett_sell_price
  574.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDo;
  575.    
  576.     /*
  577.      * insert data into table tr_report_sales_supplier for DO from in_log_product_consignment_balance_stock
  578.      */
  579.     /*EXECUTE '
  580.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  581.             session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id , doc_no,
  582.             doc_date, payment_method, product_id, product_code, supplier_product_code,
  583.             product_name, product_style, color, psize, normal_price, sold_price,
  584.             discount, margin_supp, sold_price_after_margin, qty_so)
  585.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  586.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  587.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, G.gross_sell_price, G.nett_sell_price,
  588.            (((G.gross_sell_price - G.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  589.     FROM in_log_product_consignment_balance_stock A
  590.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  591.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  592.     INNER JOIN sl_do D ON A.ref_id = D.do_id
  593.     INNER JOIN sl_do_item E ON D.do_id = E.do_id AND A.product_id = E.product_id
  594.     INNER JOIN sl_so_balance_invoice F ON D.do_id = F.ref_id AND D.ref_id = so_id AND E.do_item_id = F.ref_item_id
  595.         AND F.do_receipt_item_id = -99
  596.         AND F.ref_doc_type_id = D.doc_type_id
  597.     INNER JOIN sl_so_item G ON E.ref_id = G.so_item_id AND F.so_id = G.so_id AND E.product_id = G.product_id
  598.     WHERE A.tenant_id = $2
  599.         AND A.doc_date BETWEEN $6 AND $7
  600.         AND A.ou_id = $3
  601.         AND B.flg_buy_konsinyasi = $8
  602.         AND A.doc_type_id = $9 ' ||
  603.         vFilterPartner || '
  604.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  605.     G.gross_sell_price, G.nett_sell_price
  606.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDo;*/
  607.    
  608.     /*
  609.      * insert data into table tr_report_sales_supplier for POS Shop & POS Shop In Shop from in_log_product_balance_stock
  610.      */
  611.     EXECUTE '
  612.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  613.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id , doc_id, doc_no,
  614.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  615.            product_name, product_style, color, psize, normal_price, sold_price,
  616.            discount, margin_supp, sold_price_after_margin, qty_so)
  617.     SELECT $1, $2, $3, C.supplier_id, $10, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  618.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  619.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, E.gross_sell_price, E.nett_sell_price,
  620.            E.discount_percentage, $5, $5, SUM(A.qty)
  621.     FROM sl_so_balance_invoice A
  622.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  623.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  624.     INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_type_id = D.doc_type_id
  625.     INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  626.     WHERE A.tenant_id = $2
  627.         AND A.doc_date BETWEEN $6 AND $7
  628.         AND A.ou_id = $3
  629.         AND B.flg_buy_konsinyasi = $8
  630.         AND A.doc_type_id IN ($9, $10) ' ||
  631.         vFilterPartner || '
  632.     GROUP BY C.supplier_id, E.trx_pos_item_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  633.     E.gross_sell_price, E.nett_sell_price, E.discount_percentage
  634.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypePosShop, vDocTypePosShopInShop, vEmptyId;
  635.    
  636.     /*
  637.      * insert data into table tr_report_sales_supplier for Void POS Shop & Void POS Shop In Shop from in_log_product_balance_stock
  638.      */
  639.     EXECUTE '
  640.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  641.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id , doc_no,
  642.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  643.            product_name, product_style, color, psize, normal_price, sold_price,
  644.            discount, margin_supp, sold_price_after_margin, qty_so)
  645.     SELECT $1, $2, $3, C.supplier_id, $11, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  646.            SUBSTRING(A.update_datetime, 1, 8) AS doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  647.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, E.gross_sell_price, E.nett_sell_price,
  648.            E.discount_percentage, $5, $5, SUM(A.qty)
  649.     FROM sl_so_balance_invoice A
  650.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  651.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  652.     INNER JOIN i_trx_pos D ON A.ref_id = D.trx_pos_id AND A.doc_no = D.doc_no AND A.doc_date = D.doc_date AND D.status = $12
  653.     INNER JOIN i_trx_pos_item E ON D.trx_pos_id = E.trx_pos_id AND D.process_no = E.process_no AND D.tenant_id = E.tenant_id
  654.     WHERE A.tenant_id = $2
  655.         AND SUBSTRING(A.update_datetime, 1, 8) BETWEEN $6 AND $7
  656.         AND A.ou_id = $3
  657.         AND B.flg_buy_konsinyasi = $8
  658.         AND A.doc_type_id IN ($9, $10) ' ||
  659.         vFilterPartner || '
  660.     GROUP BY C.supplier_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  661.     E.gross_sell_price, E.nett_sell_price, E.discount_percentage, SUBSTRING(A.update_datetime, 1, 8)
  662.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeVoidPosShop, vDocTypeVoidPosShopInShop, vEmptyId, vVoid;
  663.    
  664.    
  665.     /*
  666.      * insert data into table tr_report_sales_supplier for Return Note from in_log_product_balance_stock
  667.      */
  668.     EXECUTE '
  669.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  670.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id , doc_no,
  671.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  672.            product_name, product_style, color, psize, normal_price, sold_price,
  673.            discount, margin_supp, sold_price_after_margin, qty_so)
  674.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  675.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  676.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, I.gross_sell_price, I.nett_sell_price,
  677.            (((I.gross_sell_price - I.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  678.     FROM sl_so_balance_invoice A
  679.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  680.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  681.     INNER JOIN in_inventory D ON A.ref_id = D.inventory_id
  682.     INNER JOIN in_inventory_item G ON D.inventory_id = G.inventory_id AND A.product_id = G.product_id
  683.     INNER JOIN sl_do_item E ON G.ref_item_id = E.do_item_id AND G.product_id = E.product_id
  684.     INNER JOIN sl_do H ON E.do_id = H.do_id
  685.     INNER JOIN sl_so_balance_invoice F ON
  686.           F.ref_doc_type_id = D.doc_type_id
  687.           AND D.inventory_id = F.ref_id
  688.           AND H.ref_id = F.so_id
  689.           AND E.do_item_id = F.ref_item_id
  690.     INNER JOIN sl_so_item I ON E.ref_id = I.so_item_id AND F.so_id = I.so_id AND E.product_id = I.product_id
  691.     WHERE A.tenant_id = $2
  692.         AND A.doc_date BETWEEN $6 AND $7
  693.         AND A.ou_id = $3
  694.         AND B.flg_buy_konsinyasi = $8
  695.         AND A.doc_type_id IN ($10) ' ||
  696.         vFilterPartner || '
  697.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  698.     I.gross_sell_price, I.nett_sell_price
  699.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDoReceipt, vDocTypeReturnNote;
  700.  
  701.     --
  702.     /*
  703.      * insert data into table tr_report_sales_supplier for DO Receipt from in_log_product_balance_stock
  704.      */
  705.     EXECUTE '
  706.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  707.            session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id, doc_no,
  708.            doc_date, payment_method, product_id, product_code, supplier_product_code,
  709.            product_name, product_style, color, psize, normal_price, sold_price,
  710.            discount, margin_supp, sold_price_after_margin, qty_so)
  711.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  712.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  713.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, I.gross_sell_price, I.nett_sell_price,
  714.            (((I.gross_sell_price - I.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  715.     FROM sl_so_balance_invoice A
  716.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  717.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  718.     INNER JOIN in_do_receipt D ON A.ref_id = D.do_receipt_id
  719.     INNER JOIN in_do_receipt_item G ON D.do_receipt_id = G.do_receipt_id AND A.product_id = G.product_id
  720.     INNER JOIN sl_do_item E ON G.ref_id = E.do_item_id AND G.product_id = E.product_id
  721.     INNER JOIN sl_do H ON E.do_id = H.do_id
  722.     INNER JOIN sl_so_balance_invoice F ON H.do_id = F.ref_id AND H.ref_id = F.so_id AND E.do_item_id = F.ref_item_id
  723.         AND G.do_receipt_item_id = F.do_receipt_item_id
  724.         AND F.ref_doc_type_id = $11
  725.     INNER JOIN sl_so_item I ON E.ref_id = I.so_item_id AND F.so_id = I.so_id AND E.product_id = I.product_id
  726.     WHERE A.tenant_id = $2
  727.         AND A.doc_date BETWEEN $6 AND $7
  728.         AND A.ou_id = $3
  729.         AND B.flg_buy_konsinyasi = $8
  730.         AND A.doc_type_id IN ($9) ' || 
  731.         vFilterPartner || '
  732.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  733.     I.gross_sell_price, I.nett_sell_price
  734.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDoReceipt, vDocTypeReturnNote, vDocTypeDo;
  735.    
  736.     /*
  737.      * insert data into table tr_report_sales_supplier for Return Note from in_log_product_consignment_balance_stock
  738.      */
  739.     /*EXECUTE '
  740.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  741.             session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id , doc_id, doc_no,
  742.             doc_date, payment_method, product_id, product_code, supplier_product_code,
  743.             product_name, product_style, color, psize, normal_price, sold_price,
  744.             discount, margin_supp, sold_price_after_margin, qty_so)
  745.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  746.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  747.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, I.gross_sell_price, I.nett_sell_price,
  748.            (((I.gross_sell_price - I.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  749.     FROM in_log_product_consignment_balance_stock A
  750.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  751.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  752.     INNER JOIN in_inventory D ON A.ref_id = D.inventory_id
  753.     INNER JOIN in_inventory_item G ON D.inventory_id = G.inventory_id AND A.product_id = G.product_id
  754.     INNER JOIN sl_do_item E ON G.ref_item_id = E.do_item_id AND G.product_id = E.product_id
  755.     INNER JOIN sl_do H ON E.do_id = H.do_id
  756.     INNER JOIN sl_so_balance_invoice F ON
  757.           F.ref_doc_type_id = D.doc_type_id
  758.               AND D.inventory_id = F.ref_id
  759.               AND H.ref_id = F.so_id
  760.               AND E.do_item_id = F.ref_item_id
  761.     INNER JOIN sl_so_item I ON E.ref_id = I.so_item_id AND F.so_id = I.so_id AND E.product_id = I.product_id
  762.     WHERE A.tenant_id = $2
  763.         AND A.doc_date BETWEEN $6 AND $7
  764.         AND A.ou_id = $3
  765.         AND B.flg_buy_konsinyasi = $8
  766.         AND A.doc_type_id IN ($10) ' ||
  767.         vFilterPartner || '
  768.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  769.     I.gross_sell_price, I.nett_sell_price
  770.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDoReceipt, vDocTypeReturnNote;*/
  771.    
  772.     --
  773.     /*
  774.      * insert data into table tr_report_sales_supplier for DO Receipt from in_log_product_consignment_balance_stock
  775.      */
  776.     /*EXECUTE '
  777.     INSERT INTO tr_report_sales_supplier_for_sales_summary(
  778.             session_id, tenant_id, ou_id, partner_id, so_item_id, transaction_type, doc_type_id, doc_id , doc_no,
  779.             doc_date, payment_method, product_id, product_code, supplier_product_code,
  780.             product_name, product_style, color, psize, normal_price, sold_price,
  781.             discount, margin_supp, sold_price_after_margin, qty_so)
  782.     SELECT $1, $2, $3, C.supplier_id, E.ref_id, f_get_doc_desc(A.doc_type_id), A.doc_type_id, A.ref_id , A.doc_no,
  783.            A.doc_date, $4, A.product_id, f_get_product_code(A.product_id), C.supplier_product_code,
  784.            f_get_product_name(A.product_id), B.style_product, B.color, B.size, I.gross_sell_price, I.nett_sell_price,
  785.            (((I.gross_sell_price - I.nett_sell_price)/100) * 100), $5, $5, SUM(A.qty) * -1
  786.     FROM in_log_product_consignment_balance_stock A
  787.     INNER JOIN m_product_custom B ON A.product_id = B.product_id
  788.     INNER JOIN m_product_consignment_supp_info C ON A.product_id = C.product_id
  789.     INNER JOIN in_do_receipt D ON A.ref_id = D.do_receipt_id
  790.     INNER JOIN in_do_receipt_item G ON D.do_receipt_id = G.do_receipt_id AND A.product_id = G.product_id
  791.     INNER JOIN sl_do_item E ON G.ref_id = E.do_item_id AND G.product_id = E.product_id
  792.     INNER JOIN sl_do H ON E.do_id = H.do_id
  793.     INNER JOIN sl_so_balance_invoice F ON H.do_id = F.ref_id AND H.ref_id = F.so_id AND E.do_item_id = F.ref_item_id
  794.       AND G.do_receipt_item_id = F.do_receipt_item_id
  795.       AND F.ref_doc_type_id = $11
  796.     INNER JOIN sl_so_item I ON E.ref_id = I.so_item_id AND F.so_id = I.so_id AND E.product_id = I.product_id
  797.     WHERE A.tenant_id = $2
  798.         AND A.doc_date BETWEEN $6 AND $7
  799.         AND A.ou_id = $3
  800.         AND B.flg_buy_konsinyasi = $8
  801.         AND A.doc_type_id IN ($9) ' || 
  802.         vFilterPartner || '
  803.     GROUP BY C.supplier_id, E.ref_id, A.doc_type_id, A.ref_id, A.doc_no, A.doc_date, A.product_id, C.supplier_product_code, B.style_product, B.color, B.size,
  804.     I.gross_sell_price, I.nett_sell_price
  805.     ' USING pSessionId, pTenantId, pOuId, vEmptyString, vEmptyNumeric, pStartDate, pEndDate, vNo, vDocTypeDoReceipt, vDocTypeReturnNote, vDocTypeDo;*/
  806.     --END IF;
  807.            
  808.  
  809.  
  810.     -- TODO
  811.     UPDATE tr_report_sales_supplier_for_sales_summary Z
  812.        SET sold_price_after_margin = 0
  813.        WHERE Z.session_id = pSessionId;
  814.        
  815.     UPDATE tr_report_sales_supplier_for_sales_summary Z
  816.        SET sold_price_after_margin = B.gl_amount / B.qty
  817.        FROM in_summary_monthly_amount B
  818.        WHERE Z.doc_type_id = B.doc_type_id
  819.        AND Z.product_id = B.product_id
  820.        AND SUBSTRING(Z.doc_date,1,6) = B.date_year_month
  821.        AND Z.session_id = pSessionId
  822.        AND B.qty <> 0;
  823.  
  824.    
  825.     UPDATE tr_report_sales_supplier_for_sales_summary A
  826.     SET margin_supp = (A.sold_price_after_margin / A.sold_price) * 100
  827.     WHERE A.session_id = pSessionId
  828.       AND A.sold_price <> 0;
  829.      
  830.     UPDATE tr_report_sales_supplier_for_sales_summary A
  831.     SET margin_supp = 0
  832.     WHERE A.session_id = pSessionId
  833.       AND A.sold_price = 0;  
  834.      
  835.  
  836.     Open pRefDetail2 FOR
  837.         SELECT transaction_type, doc_no, doc_date, payment_method, product_code,
  838.            supplier_product_code, product_name, product_style, color, psize, normal_price,
  839.            sold_price, discount, margin_supp, sold_price_after_margin, SUM(qty_so) AS qty_so, (sold_price_after_margin * SUM(qty_so)) AS sold_price_after_margin_multiply_quantity,
  840.            f_get_partner_name(partner_id) AS supplier_name, f_get_partner_code(partner_id) AS supplier_code, 'N' AS flg_pkp ,
  841.            (sold_price * SUM(qty_so)) AS sub_total,ROUND((sold_price * SUM(qty_so))/1.1) as dpp_terjual, ((sold_price * SUM(qty_so))-ROUND((sold_price * SUM(qty_so))/1.1)) as ppn_terjual  
  842.         FROM tr_report_sales_supplier_for_sales_summary
  843.         WHERE session_id = pSessionId
  844.             AND tenant_id = pTenantId
  845.         GROUP BY transaction_type, doc_no, doc_date, payment_method, product_code,
  846.            supplier_product_code, product_name, product_style, color, psize, normal_price,
  847.            sold_price, discount, margin_supp, sold_price_after_margin, partner_id
  848.         ORDER BY supplier_name, doc_date, doc_no;
  849.     RETURN NEXT pRefDetail2;
  850.    
  851.     Open pRefSummaryDetail FOR
  852.         SELECT f_get_partner_name(partner_id) AS supplier_name, SUM(sold_price * qty_so) AS sub_total, SUM(sold_price_after_margin * qty_so) AS sold_price_after_margin_multiply_quantity
  853.         FROM tr_report_sales_supplier_for_sales_summary
  854.         WHERE session_id = pSessionId
  855.             AND tenant_id = pTenantId
  856.         GROUP BY partner_id
  857.         ORDER BY supplier_name;
  858.     RETURN NEXT pRefSummaryDetail;
  859.    
  860.     DELETE FROM tr_report_sales_supplier WHERE session_id = pSessionId;
  861.     DELETE FROM tr_report_sales_supplier_for_sales_summary WHERE session_id = pSessionId;
  862. END;
  863. $BODY$
  864.   LANGUAGE plpgsql VOLATILE
  865.   COST 100
  866.   ROWS 1000;
  867. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement