ここにファイルをドロップします

SQL アップロード ( 0 ) x -

ページ関連の設定 バーをクリックしてページ上部にスクロール
クエリを実行するには、Ctrl キーを押しながら Enter キーを押します Enterキーを押してクエリを実行する
昇順
降順
順序:
SQL のデバッグ
カウント
実行順
所要時間
並び順:
グループ クエリ
クエリのクループを解除
折りたたむ 展開 トレースを表示 トレースを非表示 カウント 所要時間
ブックマーク
更新
追加
ブックマークはありません
ブックマークを追加
オプション
デフォルトに設定





折りたたむ 展開 再クエリ 編集 EXPLAIN プロファイリング ブックマーク 問い合わせ失敗 データベース : 問い合わせた時間 :
表示モード
表示モードの詳細設定。
表示モード
ドキュメント 「アイコンのみ表示」または「テキストのみ表示」または「アイコン/テキスト両方表示」。 デフォルト値に戻す
ドキュメント 「アイコンのみ表示」または「テキストのみ表示」または「アイコン/テキスト両方表示」。 デフォルト値に戻す
ドキュメント 「(行を) すべて表示」ボタンを表示するかどうか。 デフォルト値に戻す
ドキュメント 結果セットの表示行数。結果セットの行数の方が多い場合は「前へ/次へ」のリンクが表示されます。 デフォルト値に戻す
ドキュメント SMART とは TIME、DATE、DATETIME、TIMESTAMP 型のカラムに対しては降順、それ以外は昇順の並び順にします。 デフォルト値に戻す
ドキュメント マウスカーソルで指し示された行を目立たせます。 デフォルト値に戻す
ドキュメント 選択されている行を目立たせます。 デフォルト値に戻す
ドキュメント デフォルト値に戻す
ドキュメント デフォルト値に戻す
ドキュメント カラム名を何行おきに挿入するか。0 でこの機能は無効になります。 デフォルト値に戻す
ドキュメント 表示ページにおいて数値でないカラムの表示文字の最大数。 デフォルト値に戻す
ドキュメント 編集、コピー、削除のリンクことです。 デフォルト値に戻す
ドキュメント ユニークキーがなくても、テーブルの行リンクを表示する。 デフォルト値に戻す
ドキュメント プライマリキーあるテーブルのデフォルト並び順。 デフォルト値に戻す
ドキュメント 表示している各テーブルのソートが記憶されます。 デフォルト値に戻す
ドキュメント 表示のオプション デフォルト値に戻す
SELECT * FROM `proc`
インライン編集 ] [ 編集 ] [ EXPLAIN で確認 ] [ PHP コードの作成 ] [ 更新 ]
全文 db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment character_set_client collation_connection db_collation body_utf8 aggregate
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'test' AND `proc`.`name` = 'AddGeometryColumn' AND `proc`.`type` = 'PROCEDURE'
test AddGeometryColumn PROCEDURE AddGeometryColumn SQL CONTAINS_SQL NO DEFINER
catalog varchar(64), t_schema varchar(64),
   t_name varchar(64), geometry_column varchar(64), t_srid int
begin
  set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end
@ 2015-11-24 22:42:53 2015-11-24 22:42:53 latin1 latin1_swedish_ci latin1_swedish_ci
begin
  set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' ADD ', geometry_column,' GEOMETRY REF_SYSTEM_ID=', t_srid); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'test' AND `proc`.`name` = 'DropGeometryColumn' AND `proc`.`type` = 'PROCEDURE'
test DropGeometryColumn PROCEDURE DropGeometryColumn SQL CONTAINS_SQL NO DEFINER
catalog varchar(64), t_schema varchar(64),
   t_name varchar(64), geometry_column varchar(64)
begin
  set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end
@ 2015-11-24 22:42:53 2015-11-24 22:42:53 latin1 latin1_swedish_ci latin1_swedish_ci
begin
  set @qwe= concat('ALTER TABLE ', t_schema, '.', t_name, ' DROP ', geometry_column); PREPARE ls from @qwe; execute ls; deallocate prepare ls; end
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spFetchData' AND `proc`.`type` = 'PROCEDURE'
precitec_test spFetchData PROCEDURE spFetchData SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255), IN `stage_nos` VARCHAR(255)
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id
        WHERE 
            FIND_IN_SET(ps.part_id, part_ids) > 0
            AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call the second procedure to process the fetched data
        CALL spProcessData(part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val);
    END LOOP;

    CLOSE cur;
END
root@localhost 2025-08-22 06:30:30 2025-08-22 06:30:30 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id
        WHERE 
            FIND_IN_SET(ps.part_id, part_ids) > 0
            AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call the second procedure to process the fetched data
        CALL spProcessData(part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val);
    END LOOP;

    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spProcessOANumbers' AND `proc`.`type` = 'PROCEDURE'
precitec_test spProcessOANumbers PROCEDURE spProcessOANumbers SQL CONTAINS_SQL NO DEFINER
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE oa_no_val VARCHAR(100);

    -- Declare cursor for distinct oa_no values
    DECLARE cur CURSOR FOR
        SELECT DISTINCT oa_no FROM proj_detl;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variable
        FETCH cur INTO oa_no_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call spStatusInsert for each oa_no
        CALL spStatusInsert(oa_no_val);
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-08-22 06:30:54 2025-08-22 06:30:54 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE oa_no_val VARCHAR(100);

    -- Declare cursor for distinct oa_no values
    DECLARE cur CURSOR FOR
        SELECT DISTINCT oa_no FROM proj_detl;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variable
        FETCH cur INTO oa_no_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call spStatusInsert for each oa_no
        CALL spStatusInsert(oa_no_val);
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spStatusUpdate' AND `proc`.`type` = 'PROCEDURE'
precitec_test spStatusUpdate PROCEDURE spStatusUpdate SQL CONTAINS_SQL NO DEFINER
IN `oa` VARCHAR(100)
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty_new DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
      DECLARE cur CURSOR FOR
      SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id where ps.wo_no=oa;
        -- WHERE 
           -- FIND_IN_SET(ps.part_id, part_ids) > 0
            -- AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;


    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val,no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty_new = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
	SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_req_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty_new
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

-- SET @message = CONCAT('Stage Number: ', stage_no_val+1, ', Part Issue Quantity: ', part_issue_qty_new);
-- SELECT @message;



-- FETCH cur INTO part_id_val;

	IF rework_qty>0
    	THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    	FROM part_issue_details
    	WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    	ELSE 
    	SET rework_issue_qty = 0;
    	END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

	IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;


        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
	    part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty_new+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-08-22 06:31:33 2025-08-22 06:31:33 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty_new DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
      DECLARE cur CURSOR FOR
      SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id where ps.wo_no=oa;
        -- WHERE 
           -- FIND_IN_SET(ps.part_id, part_ids) > 0
            -- AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;


    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val,no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty_new = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
	SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_req_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty_new
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

-- SET @message = CONCAT('Stage Number: ', stage_no_val+1, ', Part Issue Quantity: ', part_issue_qty_new);
-- SELECT @message;



-- FETCH cur INTO part_id_val;

	IF rework_qty>0
    	THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    	FROM part_issue_details
    	WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    	ELSE 
    	SET rework_issue_qty = 0;
    	END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

	IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;


        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
	    part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty_new+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spUpdatePartStatusWeighted' AND `proc`.`type` = 'PROCEDURE'
precitec_test spUpdatePartStatusWeighted PROCEDURE spUpdatePartStatusWeighted SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    UPDATE t_parts_status ps
    SET ps.status = 
        (
            (
                COALESCE(ps.part_approve * (
                    SELECT activity_weightage 
                    FROM t_status_weightage 
                    WHERE column_name = 'part_approve'
                ), 0)
                +
                CASE WHEN ps.mr_na = 0 THEN
                    COALESCE(ps.mat_req * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_req'
                    ), 0)
                    +
                    COALESCE(ps.mat_recpt * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_recpt'
                    ), 0)
                ELSE
                    0
                END
                +
                CASE WHEN ps.vendor_po < ps.total_qty + ps.reject THEN
                    COALESCE((ps.vendor_po) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                END
                +
                CASE WHEN ps.mfg < ps.total_qty + ps.reject THEN
                    COALESCE((ps.mfg - ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                END
                +
                CASE WHEN ps.part_recpt < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_recpt) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                END
                +
                CASE WHEN ps.part_issue < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_issue) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                END
                +
                CASE WHEN ps.reject < ps.total_qty + ps.reject THEN
                    COALESCE((ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty ) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                END
                +
                CASE WHEN ps.rework < ps.total_qty + ps.reject THEN
                    COALESCE((ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                END
                +
                CASE WHEN ps.accept < ps.total_qty + ps.reject THEN
                    COALESCE((ps.accept) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                END
                +
                CASE WHEN ps.assembly < ps.total_qty + ps.reject THEN
                    COALESCE((ps.assembly) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                END
            )
            / ps.total_qty
        )
       +
        CASE WHEN ps.mr_na = 1 AND ps.vendor_po > 0 THEN 10 ELSE 0 END
         +
        CASE WHEN ps.reject > 0 AND ps.mr_na = 1 OR (ps.mr_na = 0 AND ps.stage_no > 1 ) THEN (ps.reject*10)/ps.total_qty ELSE 0 END
        +
        CASE WHEN ps.stage_no > 1 AND ps.vendor_po > 0 AND mr_na=0 THEN 10 ELSE 0 END 
    WHERE FIND_IN_SET(ps.part_id, part_ids);
END
root@localhost 2025-08-22 06:31:44 2025-08-22 06:31:44 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    UPDATE t_parts_status ps
    SET ps.status = 
        (
            (
                COALESCE(ps.part_approve * (
                    SELECT activity_weightage 
                    FROM t_status_weightage 
                    WHERE column_name = 'part_approve'
                ), 0)
                +
                CASE WHEN ps.mr_na = 0 THEN
                    COALESCE(ps.mat_req * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_req'
                    ), 0)
                    +
                    COALESCE(ps.mat_recpt * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_recpt'
                    ), 0)
                ELSE
                    0
                END
                +
                CASE WHEN ps.vendor_po < ps.total_qty + ps.reject THEN
                    COALESCE((ps.vendor_po) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                END
                +
                CASE WHEN ps.mfg < ps.total_qty + ps.reject THEN
                    COALESCE((ps.mfg - ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                END
                +
                CASE WHEN ps.part_recpt < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_recpt) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                END
                +
                CASE WHEN ps.part_issue < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_issue) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                END
                +
                CASE WHEN ps.reject < ps.total_qty + ps.reject THEN
                    COALESCE((ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty ) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                END
                +
                CASE WHEN ps.rework < ps.total_qty + ps.reject THEN
                    COALESCE((ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                END
                +
                CASE WHEN ps.accept < ps.total_qty + ps.reject THEN
                    COALESCE((ps.accept) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                END
                +
                CASE WHEN ps.assembly < ps.total_qty + ps.reject THEN
                    COALESCE((ps.assembly) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                END
            )
            / ps.total_qty
        )
       +
        CASE WHEN ps.mr_na = 1 AND ps.vendor_po > 0 THEN 10 ELSE 0 END
         +
        CASE WHEN ps.reject > 0 AND ps.mr_na = 1 OR (ps.mr_na = 0 AND ps.stage_no > 1 ) THEN (ps.reject*10)/ps.total_qty ELSE 0 END
        +
        CASE WHEN ps.stage_no > 1 AND ps.vendor_po > 0 AND mr_na=0 THEN 10 ELSE 0 END 
    WHERE FIND_IN_SET(ps.part_id, part_ids);
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'updateGrnSummary1' AND `proc`.`type` = 'PROCEDURE'
precitec_test updateGrnSummary1 PROCEDURE updateGrnSummary1 SQL CONTAINS_SQL NO DEFINER
IN `p_grn_no` VARCHAR(100)
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor_order_qty DECIMAL(10,3) DEFAULT 0.000;
	DECLARE v_vendor_po_date DATE;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_grn_created_by VARCHAR(100);
    DECLARE v_grn_type VARCHAR(10);
    DECLARE v_grn_status VARCHAR(50);
    DECLARE v_grn_closed_by VARCHAR(100);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM grn_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_rcpt_detl
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(grn_created_by),
            MAX(grn_type),
            MAX(os_planner),
            COUNT(DISTINCT part_id),
            SUM(part_rcpt_qty),
            MAX(grn_status),
            MAX(grn_closed_by),
            SUM(IFNULL(grn_value_adisc_before_gst,0)),
            SUM(IFNULL(grn_value_adisc_with_gst,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_parts_receipt_qty,
            v_grn_status,
            v_grn_closed_by,
            v_total_cost_without_tax,
            v_total_cost_taxable
        FROM part_rcpt_detl
        WHERE grn_no = p_grn_no;

        -- Vendor Order Qty (unique per part)
        SELECT COALESCE(SUM(distinct_vendor_qty), 0)
        INTO v_vendor_order_qty
        FROM (
            SELECT MAX(vendor_order_qty) AS distinct_vendor_qty
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
            GROUP BY part_id, vendor_po_no
        ) AS x;

        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
        );
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_rcpt_detl 
            WHERE grn_no = p_grn_no);
    END IF;

    -- Inspection values
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN

        SELECT 
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0),
            COALESCE(SUM(rework_issue_qty),0)
        INTO 
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty
        FROM inspection_details
        WHERE grn_no = p_grn_no;
    END IF;

    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_vendor_order_qty,0) -
        (IFNULL(v_parts_receipt_qty,0) - IFNULL(v_rework_issue_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO grn_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_dt,
            grn_created_by,
            grn_type,
            os_planner,
            parts_count,
            vendor_order_qty,
            parts_receipt_qty,
            accept_qty,
            reject_qty,
            rework_qty,
            rework_issue_qty,
            grn_status,
            grn_closed_by,
            pending_qty,
            total_cost_without_tax,
            total_cost_taxable,
            grn_created_date,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_vendor_order_qty,
            v_parts_receipt_qty,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty,
            v_grn_status,
            v_grn_closed_by,
            v_pending_qty,
            v_total_cost_without_tax,
            v_total_cost_taxable,
            CURDATE(),
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE grn_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            vendor_po_dt = v_vendor_po_date,
            grn_created_by = v_grn_created_by,
            grn_type = v_grn_type,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            vendor_order_qty = v_vendor_order_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            rework_issue_qty = v_rework_issue_qty,
            grn_status = v_grn_status,
            grn_closed_date = CURDATE(),
            grn_closed_by = v_grn_closed_by,
            pending_qty = v_pending_qty,
            total_cost_without_tax = v_total_cost_without_tax,
            total_cost_taxable = v_total_cost_taxable,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
root@localhost 2025-11-20 11:55:41 2025-11-20 11:55:41 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor_order_qty DECIMAL(10,3) DEFAULT 0.000;
	DECLARE v_vendor_po_date DATE;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_grn_created_by VARCHAR(100);
    DECLARE v_grn_type VARCHAR(10);
    DECLARE v_grn_status VARCHAR(50);
    DECLARE v_grn_closed_by VARCHAR(100);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM grn_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_rcpt_detl
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(grn_created_by),
            MAX(grn_type),
            MAX(os_planner),
            COUNT(DISTINCT part_id),
            SUM(part_rcpt_qty),
            MAX(grn_status),
            MAX(grn_closed_by),
            SUM(IFNULL(grn_value_adisc_before_gst,0)),
            SUM(IFNULL(grn_value_adisc_with_gst,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_parts_receipt_qty,
            v_grn_status,
            v_grn_closed_by,
            v_total_cost_without_tax,
            v_total_cost_taxable
        FROM part_rcpt_detl
        WHERE grn_no = p_grn_no;

        -- Vendor Order Qty (unique per part)
        SELECT COALESCE(SUM(distinct_vendor_qty), 0)
        INTO v_vendor_order_qty
        FROM (
            SELECT MAX(vendor_order_qty) AS distinct_vendor_qty
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
            GROUP BY part_id, vendor_po_no
        ) AS x;

        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
        );
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_rcpt_detl 
            WHERE grn_no = p_grn_no);
    END IF;

    -- Inspection values
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN

        SELECT 
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0),
            COALESCE(SUM(rework_issue_qty),0)
        INTO 
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty
        FROM inspection_details
        WHERE grn_no = p_grn_no;
    END IF;

    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_vendor_order_qty,0) -
        (IFNULL(v_parts_receipt_qty,0) - IFNULL(v_rework_issue_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO grn_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_dt,
            grn_created_by,
            grn_type,
            os_planner,
            parts_count,
            vendor_order_qty,
            parts_receipt_qty,
            accept_qty,
            reject_qty,
            rework_qty,
            rework_issue_qty,
            grn_status,
            grn_closed_by,
            pending_qty,
            total_cost_without_tax,
            total_cost_taxable,
            grn_created_date,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_vendor_order_qty,
            v_parts_receipt_qty,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty,
            v_grn_status,
            v_grn_closed_by,
            v_pending_qty,
            v_total_cost_without_tax,
            v_total_cost_taxable,
            CURDATE(),
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE grn_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            vendor_po_dt = v_vendor_po_date,
            grn_created_by = v_grn_created_by,
            grn_type = v_grn_type,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            vendor_order_qty = v_vendor_order_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            rework_issue_qty = v_rework_issue_qty,
            grn_status = v_grn_status,
            grn_closed_date = CURDATE(),
            grn_closed_by = v_grn_closed_by,
            pending_qty = v_pending_qty,
            total_cost_without_tax = v_total_cost_without_tax,
            total_cost_taxable = v_total_cost_taxable,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'updateGrnSummary' AND `proc`.`type` = 'PROCEDURE'
precitec_test updateGrnSummary PROCEDURE updateGrnSummary SQL CONTAINS_SQL NO DEFINER
IN `p_grn_no` VARCHAR(100)
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor_order_qty DECIMAL(10,3) DEFAULT 0.000;
	DECLARE v_vendor_po_date DATE;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_grn_created_by VARCHAR(100);
    DECLARE v_grn_type VARCHAR(10);
    DECLARE v_grn_status VARCHAR(50);
    DECLARE v_grn_closed_by VARCHAR(100);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM grn_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_rcpt_detl
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(grn_created_by),
            MAX(grn_type),
            MAX(os_planner),
            COUNT(DISTINCT part_id),
            SUM(part_rcpt_qty),
            MAX(grn_status),
            MAX(grn_closed_by),
            SUM(IFNULL(grn_value_adisc_before_gst,0)),
            SUM(IFNULL(grn_value_adisc_with_gst,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_parts_receipt_qty,
            v_grn_status,
            v_grn_closed_by,
            v_total_cost_without_tax,
            v_total_cost_taxable
        FROM part_rcpt_detl
        WHERE grn_no = p_grn_no;
        
        -- get rework_issue_qty
        SELECT COALESCE(SUM(part_issue_qty), 0)
        INTO  v_rework_issue_qty
        FROM part_issue_details
        WHERE grn_no = p_grn_no;

        -- Vendor Order Qty (unique per part)
        SELECT COALESCE(SUM(distinct_vendor_qty), 0)
        INTO v_vendor_order_qty
        FROM (
            SELECT MAX(vendor_order_qty) AS distinct_vendor_qty
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
            GROUP BY part_id, vendor_po_no
        ) AS x;

        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
        );
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_rcpt_detl 
            WHERE grn_no = p_grn_no);
    END IF;

    -- Inspection values
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN

        SELECT 
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0)
        INTO 
            v_accept_qty,
            v_reject_qty,
            v_rework_qty
        FROM inspection_details
        WHERE grn_no = p_grn_no;
    END IF;

    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_vendor_order_qty,0) -
        (IFNULL(v_parts_receipt_qty,0) - IFNULL(v_rework_issue_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO grn_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_dt,
            grn_created_by,
            grn_type,
            os_planner,
            parts_count,
            vendor_order_qty,
            parts_receipt_qty,
            accept_qty,
            reject_qty,
            rework_qty,
            rework_issue_qty,
            grn_status,
            grn_closed_by,
            pending_qty,
            total_cost_without_tax,
            total_cost_taxable,
            grn_created_date,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_vendor_order_qty,
            v_parts_receipt_qty,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty,
            v_grn_status,
            v_grn_closed_by,
            v_pending_qty,
            v_total_cost_without_tax,
            v_total_cost_taxable,
            CURDATE(),
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE grn_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            vendor_po_dt = v_vendor_po_date,
            grn_created_by = v_grn_created_by,
            grn_type = v_grn_type,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            vendor_order_qty = v_vendor_order_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            rework_issue_qty = v_rework_issue_qty,
            grn_status = v_grn_status,
            grn_closed_date = CURDATE(),
            grn_closed_by = v_grn_closed_by,
            pending_qty = v_pending_qty,
            total_cost_without_tax = v_total_cost_without_tax,
            total_cost_taxable = v_total_cost_taxable,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
root@localhost 2026-02-10 11:44:32 2026-02-10 11:44:32 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor_order_qty DECIMAL(10,3) DEFAULT 0.000;
	DECLARE v_vendor_po_date DATE;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_grn_created_by VARCHAR(100);
    DECLARE v_grn_type VARCHAR(10);
    DECLARE v_grn_status VARCHAR(50);
    DECLARE v_grn_closed_by VARCHAR(100);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM grn_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_rcpt_detl
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(grn_created_by),
            MAX(grn_type),
            MAX(os_planner),
            COUNT(DISTINCT part_id),
            SUM(part_rcpt_qty),
            MAX(grn_status),
            MAX(grn_closed_by),
            SUM(IFNULL(grn_value_adisc_before_gst,0)),
            SUM(IFNULL(grn_value_adisc_with_gst,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_parts_receipt_qty,
            v_grn_status,
            v_grn_closed_by,
            v_total_cost_without_tax,
            v_total_cost_taxable
        FROM part_rcpt_detl
        WHERE grn_no = p_grn_no;
        
        -- get rework_issue_qty
        SELECT COALESCE(SUM(part_issue_qty), 0)
        INTO  v_rework_issue_qty
        FROM part_issue_details
        WHERE grn_no = p_grn_no;

        -- Vendor Order Qty (unique per part)
        SELECT COALESCE(SUM(distinct_vendor_qty), 0)
        INTO v_vendor_order_qty
        FROM (
            SELECT MAX(vendor_order_qty) AS distinct_vendor_qty
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
            GROUP BY part_id, vendor_po_no
        ) AS x;

        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_rcpt_detl
            WHERE grn_no = p_grn_no
        );
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_rcpt_detl 
            WHERE grn_no = p_grn_no);
    END IF;

    -- Inspection values
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN

        SELECT 
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0)
        INTO 
            v_accept_qty,
            v_reject_qty,
            v_rework_qty
        FROM inspection_details
        WHERE grn_no = p_grn_no;
    END IF;

    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_vendor_order_qty,0) -
        (IFNULL(v_parts_receipt_qty,0) - IFNULL(v_rework_issue_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO grn_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_dt,
            grn_created_by,
            grn_type,
            os_planner,
            parts_count,
            vendor_order_qty,
            parts_receipt_qty,
            accept_qty,
            reject_qty,
            rework_qty,
            rework_issue_qty,
            grn_status,
            grn_closed_by,
            pending_qty,
            total_cost_without_tax,
            total_cost_taxable,
            grn_created_date,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_grn_created_by,
            v_grn_type,
            v_os_planner,
            v_parts_count,
            v_vendor_order_qty,
            v_parts_receipt_qty,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_rework_issue_qty,
            v_grn_status,
            v_grn_closed_by,
            v_pending_qty,
            v_total_cost_without_tax,
            v_total_cost_taxable,
            CURDATE(),
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE grn_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            vendor_po_dt = v_vendor_po_date,
            grn_created_by = v_grn_created_by,
            grn_type = v_grn_type,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            vendor_order_qty = v_vendor_order_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            rework_issue_qty = v_rework_issue_qty,
            grn_status = v_grn_status,
            grn_closed_date = CURDATE(),
            grn_closed_by = v_grn_closed_by,
            pending_qty = v_pending_qty,
            total_cost_without_tax = v_total_cost_without_tax,
            total_cost_taxable = v_total_cost_taxable,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'updateInspSummary' AND `proc`.`type` = 'PROCEDURE'
precitec_test updateInspSummary PROCEDURE updateInspSummary SQL CONTAINS_SQL NO DEFINER
IN `p_grn_no` VARCHAR(100)
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accpt_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accpt_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_vendor_po_date VARCHAR(100);
    DECLARE v_inspected_by VARCHAR(100);
    DECLARE v_inspected_date VARCHAR(10);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM inspection_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(insp_person),
            MAX(insp_date),
            COUNT(DISTINCT part_id),
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0),
         
            SUM(IFNULL(accept_with_out_tax,0)),
            SUM(IFNULL(accept_with_tax,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_inspected_by,
            v_inspected_date,
            v_parts_count,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
          
            v_accpt_cost_without_tax,
            v_accpt_cost_taxable
        FROM inspection_details
        WHERE grn_no = p_grn_no;
        
        -- get rework_issue_qty
        SELECT COALESCE(SUM(part_issue_qty), 0)
        INTO  v_rework_issue_qty
        FROM part_issue_details
        WHERE grn_no = p_grn_no;
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM inspection_details 
            WHERE grn_no = p_grn_no);
            
        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM inspection_details
            WHERE grn_no = p_grn_no
        );
            
        -- Part recipt Qty for GRN
        SELECT 
        COALESCE(SUM(part_rcpt_qty), 0), 
        COALESCE(SUM(rework_rcpt_qty), 0),
        MAX(os_planner)
        INTO 
        v_parts_receipt_qty,
        v_rework_rcpt_qty,
        v_os_planner
        FROM part_rcpt_detl 
        WHERE grn_no = p_grn_no ;

    END IF;


    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_parts_receipt_qty,0) - 
       (IFNULL(v_accept_qty,0) + IFNULL(v_reject_qty,0) + IFNULL(v_rework_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO inspection_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_date,
            inspected_by,
            inspected_date,
            os_planner,
            parts_count,
            accept_qty,
            reject_qty,
            rework_qty,
            accepted_cost_without_tax,
            accepted_cost_with_tax,
            pending_qty,
            parts_receipt_qty,
            rework_issue_qty,
            rework_rcpt_qty,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_inspected_by,
            v_inspected_date,
            v_os_planner,
            v_parts_count,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_accpt_cost_without_tax,
            v_accpt_cost_taxable,
            v_pending_qty,
            v_parts_receipt_qty,
            v_rework_issue_qty,
            v_rework_rcpt_qty,
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE inspection_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            inspected_by = v_inspected_by,
            inspected_date = v_inspected_date,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            accepted_cost_without_tax = v_accpt_cost_without_tax,
            accepted_cost_with_tax = v_accpt_cost_taxable,
            pending_qty = v_pending_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            rework_issue_qty = v_rework_issue_qty,
            rework_rcpt_qty = v_rework_rcpt_qty,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
root@localhost 2026-02-10 11:45:19 2026-02-10 11:45:19 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accpt_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_accpt_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_vendor_po_date VARCHAR(100);
    DECLARE v_inspected_by VARCHAR(100);
    DECLARE v_inspected_date VARCHAR(10);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_oa_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM inspection_summary_details
    WHERE grn_no = p_grn_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM inspection_details
    WHERE grn_no = p_grn_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            MAX(insp_person),
            MAX(insp_date),
            COUNT(DISTINCT part_id),
            COALESCE(SUM(insp_qty_acpt),0),
            COALESCE(SUM(insp_qty_rej),0),
            COALESCE(SUM(insp_qty_rework),0),
         
            SUM(IFNULL(accept_with_out_tax,0)),
            SUM(IFNULL(accept_with_tax,0))
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_inspected_by,
            v_inspected_date,
            v_parts_count,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
          
            v_accpt_cost_without_tax,
            v_accpt_cost_taxable
        FROM inspection_details
        WHERE grn_no = p_grn_no;
        
        -- get rework_issue_qty
        SELECT COALESCE(SUM(part_issue_qty), 0)
        INTO  v_rework_issue_qty
        FROM part_issue_details
        WHERE grn_no = p_grn_no;
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM inspection_details 
            WHERE grn_no = p_grn_no);
            
        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM inspection_details
            WHERE grn_no = p_grn_no
        );
            
        -- Part recipt Qty for GRN
        SELECT 
        COALESCE(SUM(part_rcpt_qty), 0), 
        COALESCE(SUM(rework_rcpt_qty), 0),
        MAX(os_planner)
        INTO 
        v_parts_receipt_qty,
        v_rework_rcpt_qty,
        v_os_planner
        FROM part_rcpt_detl 
        WHERE grn_no = p_grn_no ;

    END IF;


    -- Pending Quantity
    SET v_pending_qty =
        IFNULL(v_parts_receipt_qty,0) - 
       (IFNULL(v_accept_qty,0) + IFNULL(v_reject_qty,0) + IFNULL(v_rework_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO inspection_summary_details (
            grn_no,
            vendor,
            vendor_po_no,
            vendor_po_date,
            inspected_by,
            inspected_date,
            os_planner,
            parts_count,
            accept_qty,
            reject_qty,
            rework_qty,
            accepted_cost_without_tax,
            accepted_cost_with_tax,
            pending_qty,
            parts_receipt_qty,
            rework_issue_qty,
            rework_rcpt_qty,
            oa_no,
            last_updated
        ) VALUES (
            p_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_vendor_po_date,
            v_inspected_by,
            v_inspected_date,
            v_os_planner,
            v_parts_count,
            v_accept_qty,
            v_reject_qty,
            v_rework_qty,
            v_accpt_cost_without_tax,
            v_accpt_cost_taxable,
            v_pending_qty,
            v_parts_receipt_qty,
            v_rework_issue_qty,
            v_rework_rcpt_qty,
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE inspection_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            inspected_by = v_inspected_by,
            inspected_date = v_inspected_date,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
            accept_qty = v_accept_qty,
            reject_qty = v_reject_qty,
            rework_qty = v_rework_qty,
            accepted_cost_without_tax = v_accpt_cost_without_tax,
            accepted_cost_with_tax = v_accpt_cost_taxable,
            pending_qty = v_pending_qty,
            parts_receipt_qty = v_parts_receipt_qty,
            rework_issue_qty = v_rework_issue_qty,
            rework_rcpt_qty = v_rework_rcpt_qty,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE grn_no = p_grn_no;
    END IF;

    COMMIT;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'updateDcSummary' AND `proc`.`type` = 'PROCEDURE'
precitec_test updateDcSummary PROCEDURE updateDcSummary SQL CONTAINS_SQL NO DEFINER
IN `p_dc_no` VARCHAR(100)
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    -- DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_dc_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_dc_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_vendor_po_date date;
    DECLARE v_dc_created_by VARCHAR(100);
    DECLARE v_dc_created_date VARCHAR(10);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_part_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_oa_no VARCHAR(100);
    DECLARE v_grn_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM dc_summary_details
    WHERE dc_no = p_dc_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_issue_details
    WHERE dc_no = p_dc_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            COALESCE(SUM(part_issue_qty), 0),
            MAX(part_issue_by),
            MAX(part_issue_date),
            COUNT(DISTINCT part_id),
            SUM(IFNULL(dc_value_with_out_tax,0)),
            SUM(IFNULL(dc_value_with_tax,0)),
            MAX(os_planner),
            MAX(grn_no)
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_part_issue_qty,
            v_dc_created_by,
            v_dc_created_date,
            v_parts_count,
            v_dc_cost_without_tax,
            v_dc_cost_taxable,
            v_os_planner,
            v_grn_no
        FROM part_issue_details
        WHERE dc_no = p_dc_no;
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_issue_details 
            WHERE dc_no = p_dc_no);
            
        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_issue_details
            WHERE dc_no = p_dc_no
        );  
 END IF;
    -- Pending Quantity
    -- SET v_pending_qty =
       --  IFNULL(v_parts_receipt_qty,0) - 
      --  (IFNULL(v_accept_qty,0) + IFNULL(v_reject_qty,0) + IFNULL(v_rework_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO dc_summary_details (
            dc_no,
            grn_no,
            vendor,
            vendor_po_no,
            parts_issue_qty,
            vendor_po_date,
            dc_created_by,
            dc_created_date,
            os_planner,
            parts_count,
           -- accept_qty,
           -- reject_qty,
          --  rework_qty,
            total_cost_without_tax,
            total_cost_taxable,
           -- pending_qty,
            -- parts_receipt_qty,
            -- rework_issue_qty,
           -- rework_rcpt_qty,
            oa_no,
            last_updated
        ) VALUES (
            p_dc_no,
            v_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_part_issue_qty,
            v_vendor_po_date,
            v_dc_created_by,
            v_dc_created_date,
            v_os_planner,
            v_parts_count,
          --  v_accept_qty,
            -- v_reject_qty,
           -- v_rework_qty,
            v_dc_cost_without_tax,
            v_dc_cost_taxable,
           -- v_pending_qty,
          --  v_parts_receipt_qty,
           -- v_rework_issue_qty,
           -- v_rework_rcpt_qty,
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE dc_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            parts_issue_qty = v_part_issue_qty,
            dc_created_by = v_dc_created_by,
            dc_created_date = v_dc_created_date,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
           -- accept_qty = v_accept_qty,
           -- reject_qty = v_reject_qty,
           -- rework_qty = v_rework_qty,
            total_cost_without_tax = v_dc_cost_without_tax,
            total_cost_taxable = v_dc_cost_taxable,
           -- pending_qty = v_pending_qty,
           -- parts_receipt_qty = v_parts_receipt_qty,
           -- rework_issue_qty = v_rework_issue_qty,
           -- rework_issue_qty = v_rework_issue_qty,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE dc_no = p_dc_no;
    END IF;

    COMMIT;

END
root@localhost 2025-12-01 11:53:40 2025-12-01 11:53:40 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE v_parts_count INT DEFAULT 0;
    -- DECLARE v_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_pending_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_dc_cost_without_tax DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_dc_cost_taxable DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_vendor VARCHAR(100);
    DECLARE v_vendor_po_no VARCHAR(100);
    DECLARE v_vendor_po_date date;
    DECLARE v_dc_created_by VARCHAR(100);
    DECLARE v_dc_created_date VARCHAR(10);
    DECLARE v_os_planner VARCHAR(100);
    DECLARE v_part_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    -- DECLARE v_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_oa_no VARCHAR(100);
    DECLARE v_grn_no VARCHAR(100);

    DECLARE v_summary_exists INT DEFAULT 0;
    DECLARE v_grn_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check summary entry exists
    SELECT COUNT(*) INTO v_summary_exists
    FROM dc_summary_details
    WHERE dc_no = p_dc_no;

    -- Check GRN exists in part_rcpt_detl
    SELECT COUNT(*) INTO v_grn_exists
    FROM part_issue_details
    WHERE dc_no = p_dc_no;

    IF v_grn_exists > 0 THEN
        
        SELECT 
            MAX(vendor),
            MAX(vendor_po_no),
            COALESCE(SUM(part_issue_qty), 0),
            MAX(part_issue_by),
            MAX(part_issue_date),
            COUNT(DISTINCT part_id),
            SUM(IFNULL(dc_value_with_out_tax,0)),
            SUM(IFNULL(dc_value_with_tax,0)),
            MAX(os_planner),
            MAX(grn_no)
        INTO 
            v_vendor,
            v_vendor_po_no,
            v_part_issue_qty,
            v_dc_created_by,
            v_dc_created_date,
            v_parts_count,
            v_dc_cost_without_tax,
            v_dc_cost_taxable,
            v_os_planner,
            v_grn_no
        FROM part_issue_details
        WHERE dc_no = p_dc_no;
        
        -- select vendor_po_date
        SELECT MAX(vendor_po_dt)
        INTO v_vendor_po_date 
        FROM vendor_po 
        WHERE vendor_po_no IN (
            SELECT vendor_po_no 
            FROM part_issue_details 
            WHERE dc_no = p_dc_no);
            
        -- get OA number
        SELECT GROUP_CONCAT(DISTINCT oa_no)
        INTO v_oa_no
        FROM proj_detl
        WHERE part_id IN (
            SELECT DISTINCT part_id
            FROM part_issue_details
            WHERE dc_no = p_dc_no
        );  
 END IF;
    -- Pending Quantity
    -- SET v_pending_qty =
       --  IFNULL(v_parts_receipt_qty,0) - 
      --  (IFNULL(v_accept_qty,0) + IFNULL(v_reject_qty,0) + IFNULL(v_rework_qty,0));

    -- Insert / Update Logic
    IF v_summary_exists = 0 THEN
        
        INSERT INTO dc_summary_details (
            dc_no,
            grn_no,
            vendor,
            vendor_po_no,
            parts_issue_qty,
            vendor_po_date,
            dc_created_by,
            dc_created_date,
            os_planner,
            parts_count,
           -- accept_qty,
           -- reject_qty,
          --  rework_qty,
            total_cost_without_tax,
            total_cost_taxable,
           -- pending_qty,
            -- parts_receipt_qty,
            -- rework_issue_qty,
           -- rework_rcpt_qty,
            oa_no,
            last_updated
        ) VALUES (
            p_dc_no,
            v_grn_no,
            v_vendor,
            v_vendor_po_no,
            v_part_issue_qty,
            v_vendor_po_date,
            v_dc_created_by,
            v_dc_created_date,
            v_os_planner,
            v_parts_count,
          --  v_accept_qty,
            -- v_reject_qty,
           -- v_rework_qty,
            v_dc_cost_without_tax,
            v_dc_cost_taxable,
           -- v_pending_qty,
          --  v_parts_receipt_qty,
           -- v_rework_issue_qty,
           -- v_rework_rcpt_qty,
            v_oa_no,
            NOW()
        );

    ELSE

        UPDATE dc_summary_details
        SET 
            vendor = v_vendor,
            vendor_po_no = v_vendor_po_no,
            parts_issue_qty = v_part_issue_qty,
            dc_created_by = v_dc_created_by,
            dc_created_date = v_dc_created_date,
            os_planner = v_os_planner,
            parts_count = v_parts_count,
           -- accept_qty = v_accept_qty,
           -- reject_qty = v_reject_qty,
           -- rework_qty = v_rework_qty,
            total_cost_without_tax = v_dc_cost_without_tax,
            total_cost_taxable = v_dc_cost_taxable,
           -- pending_qty = v_pending_qty,
           -- parts_receipt_qty = v_parts_receipt_qty,
           -- rework_issue_qty = v_rework_issue_qty,
           -- rework_issue_qty = v_rework_issue_qty,
            oa_no = v_oa_no,
            last_updated = NOW()
        WHERE dc_no = p_dc_no;
    END IF;

    COMMIT;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spStatusUpdate' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spStatusUpdate PROCEDURE spStatusUpdate SQL CONTAINS_SQL NO DEFINER
IN `oa` VARCHAR(100)
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty_new DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
      DECLARE cur CURSOR FOR
      SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id where ps.wo_no=oa;
        -- WHERE 
           -- FIND_IN_SET(ps.part_id, part_ids) > 0
            -- AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;


    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val,no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty_new = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
	SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_req_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty_new
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

-- SET @message = CONCAT('Stage Number: ', stage_no_val+1, ', Part Issue Quantity: ', part_issue_qty_new);
-- SELECT @message;



-- FETCH cur INTO part_id_val;

	IF rework_qty>0
    	THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    	FROM part_issue_details
    	WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    	ELSE 
    	SET rework_issue_qty = 0;
    	END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

	IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;


        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
	    part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty_new+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-12-12 10:46:46 2025-12-12 10:46:46 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty_new DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
      DECLARE cur CURSOR FOR
      SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id where ps.wo_no=oa;
        -- WHERE 
           -- FIND_IN_SET(ps.part_id, part_ids) > 0
            -- AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;


    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val,no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty_new = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
	SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_req_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty_new
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

-- SET @message = CONCAT('Stage Number: ', stage_no_val+1, ', Part Issue Quantity: ', part_issue_qty_new);
-- SELECT @message;



-- FETCH cur INTO part_id_val;

	IF rework_qty>0
    	THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    	FROM part_issue_details
    	WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    	ELSE 
    	SET rework_issue_qty = 0;
    	END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

	IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;


        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
	    part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty_new+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spStatusUpdateNew' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spStatusUpdateNew PROCEDURE spStatusUpdateNew SQL CONTAINS_SQL NO DEFINER
IN `oa` VARCHAR(100)
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
        SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
            SELECT COALESCE(SUM(mat_req_qty), 0) INTO mat_reqd_qty     
            FROM mat_req_detl
            WHERE part_id = part_id_val;

            SELECT COALESCE(SUM(mat_req_qty), 0) INTO mat_recpt     
            FROM mat_req_detl
            WHERE part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

        IF rework_qty > 0 THEN
            SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
            FROM part_issue_details
            WHERE part_id = part_id_val AND stg_no = (stage_no_val);
        ELSE 
            SET rework_issue_qty = 0;
        END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

        IF stage_no_val = no_of_stages_val THEN
            SET assembly_issue_qty_update = assembly_issue_qty;
        ELSE
            SET assembly_issue_qty_update = 0;
        END IF;

        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
            part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-12-12 10:46:57 2025-12-12 10:46:57 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE req_total_qty DECIMAL(10,2);
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);

    -- Declare variables for cursor
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset variables
        SET req_total_qty = reqd_total_qty_val;
        SET ven_order_qty = 0.00;
        SET rcpt_qty = 0.00;
        SET acpt_qty = 0.00;
        SET rework_qty = 0.00;
        SET reject_qty = 0.00;
        SET part_issue_qty = 0.00;
        SET mat_reqd_qty = 0.00;
        SET assembly_issue_qty=0.00;
        SET mat_recpt = 0.00;

        -- Calculate values from other tables
        IF stage_no_val = 1 THEN
            SELECT COALESCE(SUM(mat_req_qty), 0) INTO mat_reqd_qty     
            FROM mat_req_detl
            WHERE part_id = part_id_val;

            SELECT COALESCE(SUM(mat_req_qty), 0) INTO mat_recpt     
            FROM mat_req_detl
            WHERE part_id = part_id_val AND request_status = 'Updated';
        END IF;

        SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
        FROM vendor_po_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val  and vendor_part_status='issued';

        SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
        FROM part_rcpt_detl
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
        INTO acpt_qty, rework_qty, reject_qty
        FROM inspection_details
        WHERE part_id = part_id_val AND stg_no = stage_no_val;

        SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty
        FROM part_issue_details
        WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);

        IF rework_qty > 0 THEN
            SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
            FROM part_issue_details
            WHERE part_id = part_id_val AND stg_no = (stage_no_val);
        ELSE 
            SET rework_issue_qty = 0;
        END IF;

        SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
        FROM tbldispatchcomponent
        WHERE part_id = part_id_val;

        IF stage_no_val = no_of_stages_val THEN
            SET assembly_issue_qty_update = assembly_issue_qty;
        ELSE
            SET assembly_issue_qty_update = 0;
        END IF;

        -- Update t_parts_status table
        UPDATE t_parts_status
        SET total_qty = req_total_qty,
            part_approve = req_total_qty,
            mat_req = mat_reqd_qty,
            mat_recpt = mat_recpt,
            vendor_po = ven_order_qty,
            mfg = rcpt_qty,
            part_recpt = rcpt_qty,
            accept = acpt_qty,
            rework = rework_qty,
            reject = reject_qty,
            part_issue = (part_issue_qty+rework_issue_qty),
            assembly = assembly_issue_qty_update
        WHERE wo_no = oa AND part_id = part_id_val AND stage_no = stage_no_val;

    END LOOP;  -- End of read_loop

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spUpdatePartStatusWeighted' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spUpdatePartStatusWeighted PROCEDURE spUpdatePartStatusWeighted SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    UPDATE t_parts_status ps
    SET ps.status = 
        (
            (
                COALESCE(ps.part_approve * (
                    SELECT activity_weightage 
                    FROM t_status_weightage 
                    WHERE column_name = 'part_approve'
                ), 0)
                +
                CASE WHEN ps.mr_na = 0 THEN
                    COALESCE(ps.mat_req * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_req'
                    ), 0)
                    +
                    COALESCE(ps.mat_recpt * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_recpt'
                    ), 0)
                ELSE
                    0
                END
                +
                CASE WHEN ps.vendor_po < ps.total_qty + ps.reject THEN
                    COALESCE((ps.vendor_po) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                END
                +
                CASE WHEN ps.mfg < ps.total_qty + ps.reject THEN
                    COALESCE((ps.mfg - ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                END
                +
                CASE WHEN ps.part_recpt < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_recpt) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                END
                +
                CASE WHEN ps.part_issue < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_issue) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                END
                +
                CASE WHEN ps.reject < ps.total_qty + ps.reject THEN
                    COALESCE((ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty ) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                END
                +
                CASE WHEN ps.rework < ps.total_qty + ps.reject THEN
                    COALESCE((ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                END
                +
                CASE WHEN ps.accept < ps.total_qty + ps.reject THEN
                    COALESCE((ps.accept) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                END
                +
                CASE WHEN ps.assembly < ps.total_qty + ps.reject THEN
                    COALESCE((ps.assembly) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                END
            )
            / ps.total_qty
        )
       +
        CASE WHEN ps.mr_na = 1 AND ps.vendor_po > 0 THEN 10 ELSE 0 END
         +
        CASE WHEN ps.reject > 0 AND ps.mr_na = 1 OR (ps.mr_na = 0 AND ps.stage_no > 1 ) THEN (ps.reject*10)/ps.total_qty ELSE 0 END
        +
        CASE WHEN ps.stage_no > 1 AND ps.vendor_po > 0 AND mr_na=0 THEN 10 ELSE 0 END 
    WHERE FIND_IN_SET(ps.part_id, part_ids);
END
root@localhost 2025-12-12 10:47:10 2025-12-12 10:47:10 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    UPDATE t_parts_status ps
    SET ps.status = 
        (
            (
                COALESCE(ps.part_approve * (
                    SELECT activity_weightage 
                    FROM t_status_weightage 
                    WHERE column_name = 'part_approve'
                ), 0)
                +
                CASE WHEN ps.mr_na = 0 THEN
                    COALESCE(ps.mat_req * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_req'
                    ), 0)
                    +
                    COALESCE(ps.mat_recpt * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mat_recpt'
                    ), 0)
                ELSE
                    0
                END
                +
                CASE WHEN ps.vendor_po < ps.total_qty + ps.reject THEN
                    COALESCE((ps.vendor_po) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'vendor_po'
                    ), 0)
                END
                +
                CASE WHEN ps.mfg < ps.total_qty + ps.reject THEN
                    COALESCE((ps.mfg - ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'mfg'
                    ), 0)
                END
                +
                CASE WHEN ps.part_recpt < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_recpt) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_recpt'
                    ), 0)
                END
                +
                CASE WHEN ps.part_issue < ps.total_qty + ps.reject THEN
                    COALESCE((ps.part_issue) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty + ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'part_issue'
                    ), 0)
                END
                +
                CASE WHEN ps.reject < ps.total_qty + ps.reject THEN
                    COALESCE((ps.reject) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty ) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'reject'
                    ), 0)
                END
                +
                CASE WHEN ps.rework < ps.total_qty + ps.reject THEN
                    COALESCE((ps.rework) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'rework'
                    ), 0)
                END
                +
                CASE WHEN ps.accept < ps.total_qty + ps.reject THEN
                    COALESCE((ps.accept) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'accept'
                    ), 0)
                END
                +
                CASE WHEN ps.assembly < ps.total_qty + ps.reject THEN
                    COALESCE((ps.assembly) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                ELSE
                    COALESCE((ps.total_qty) * (
                        SELECT activity_weightage 
                        FROM t_status_weightage 
                        WHERE column_name = 'assembly'
                    ), 0)
                END
            )
            / ps.total_qty
        )
       +
        CASE WHEN ps.mr_na = 1 AND ps.vendor_po > 0 THEN 10 ELSE 0 END
         +
        CASE WHEN ps.reject > 0 AND ps.mr_na = 1 OR (ps.mr_na = 0 AND ps.stage_no > 1 ) THEN (ps.reject*10)/ps.total_qty ELSE 0 END
        +
        CASE WHEN ps.stage_no > 1 AND ps.vendor_po > 0 AND mr_na=0 THEN 10 ELSE 0 END 
    WHERE FIND_IN_SET(ps.part_id, part_ids);
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spProcessData' AND `proc`.`type` = 'PROCEDURE'
precitec_test spProcessData PROCEDURE spProcessData SQL CONTAINS_SQL NO DEFINER
IN `part_id_val` INT, IN `stage_no_val` INT, IN `reqd_total_qty_val` INT, IN `mr_na_val` INT, IN `no_of_stages_val` INT
BEGIN
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty1 DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);

	SET mat_reqd_qty = 0.00;
    SET mat_rec_qty = 0.00;
    SET mat_recpt = 0.00;
    
   IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_recd_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

    SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
    FROM vendor_po_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val  AND vendor_part_status = 'issued';

    SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
    FROM part_rcpt_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
    INTO acpt_qty, rework_qty, reject_qty
    FROM inspection_details
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty1
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);
    
    IF rework_qty>0
    THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    ELSE 
    SET rework_issue_qty = 0;
    END IF;

    SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
    FROM tbldispatchcomponent
    WHERE part_id = part_id_val;

    IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;

    -- Update t_parts_status table
    UPDATE t_parts_status
    SET total_qty = reqd_total_qty_val,
        part_approve = reqd_total_qty_val,
        mat_req = mat_reqd_qty,
        mat_recpt = mat_recpt, -- Corrected variable name
        vendor_po = ven_order_qty,
        mfg = rcpt_qty,
        part_recpt = rcpt_qty,
        accept = acpt_qty,
        rework = rework_qty,
        reject = reject_qty,
        part_issue = (part_issue_qty1+rework_issue_qty),
        assembly = assembly_issue_qty_update
    WHERE part_id = part_id_val AND stage_no = stage_no_val;

END
root@localhost 2025-08-22 06:30:43 2025-08-22 06:30:43 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty1 DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);

	SET mat_reqd_qty = 0.00;
    SET mat_rec_qty = 0.00;
    SET mat_recpt = 0.00;
    
   IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_recd_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

    SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
    FROM vendor_po_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val  AND vendor_part_status = 'issued';

    SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
    FROM part_rcpt_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
    INTO acpt_qty, rework_qty, reject_qty
    FROM inspection_details
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty1
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);
    
    IF rework_qty>0
    THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    ELSE 
    SET rework_issue_qty = 0;
    END IF;

    SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
    FROM tbldispatchcomponent
    WHERE part_id = part_id_val;

    IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;

    -- Update t_parts_status table
    UPDATE t_parts_status
    SET total_qty = reqd_total_qty_val,
        part_approve = reqd_total_qty_val,
        mat_req = mat_reqd_qty,
        mat_recpt = mat_recpt, -- Corrected variable name
        vendor_po = ven_order_qty,
        mfg = rcpt_qty,
        part_recpt = rcpt_qty,
        accept = acpt_qty,
        rework = rework_qty,
        reject = reject_qty,
        part_issue = (part_issue_qty1+rework_issue_qty),
        assembly = assembly_issue_qty_update
    WHERE part_id = part_id_val AND stage_no = stage_no_val;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spStatusInsert' AND `proc`.`type` = 'PROCEDURE'
precitec_test spStatusInsert PROCEDURE spStatusInsert SQL CONTAINS_SQL NO DEFINER
IN `oa` VARCHAR(100)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT sa_name, part_name, part_id, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE oa_no = oa AND part_drg_remarks = 'approved' AND status_flag='W'
        ORDER BY part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO sa_name_val, part_name_val, part_id_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = part_id_val AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa, part_id_val, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-08-22 06:31:09 2025-08-22 06:31:09 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT sa_name, part_name, part_id, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE oa_no = oa AND part_drg_remarks = 'approved' AND status_flag='W'
        ORDER BY part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO sa_name_val, part_name_val, part_id_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = part_id_val AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa, part_id_val, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spStatusPartInsert' AND `proc`.`type` = 'PROCEDURE'
precitec_test spStatusPartInsert PROCEDURE spStatusPartInsert SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE current_part_id INT;
    DECLARE oa_no_val VARCHAR(255);
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT part_id, oa_no, sa_name, part_name, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE FIND_IN_SET(part_id, part_ids);

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO current_part_id, oa_no_val, sa_name_val, part_name_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = current_part_id AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa_no_val, current_part_id, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, reqd_total_qty_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-08-22 06:31:23 2025-08-22 06:31:23 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE current_part_id INT;
    DECLARE oa_no_val VARCHAR(255);
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT part_id, oa_no, sa_name, part_name, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE FIND_IN_SET(part_id, part_ids);

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO current_part_id, oa_no_val, sa_name_val, part_name_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = current_part_id AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa_no_val, current_part_id, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, reqd_total_qty_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'spUpdateProjPartsStatus' AND `proc`.`type` = 'PROCEDURE'
precitec_test spUpdateProjPartsStatus PROCEDURE spUpdateProjPartsStatus SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    UPDATE proj_detl pd
    JOIN (
        SELECT part_id, SUM(status) / MAX(stage_no) AS calculated_status
        FROM t_parts_status
        WHERE FIND_IN_SET(part_id, part_ids)
        GROUP BY part_id
    ) ps ON pd.part_id = ps.part_id
    SET pd.status = ps.calculated_status
    WHERE FIND_IN_SET(pd.part_id, part_ids);
END
root@localhost 2025-08-22 06:31:59 2025-08-22 06:31:59 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    UPDATE proj_detl pd
    JOIN (
        SELECT part_id, SUM(status) / MAX(stage_no) AS calculated_status
        FROM t_parts_status
        WHERE FIND_IN_SET(part_id, part_ids)
        GROUP BY part_id
    ) ps ON pd.part_id = ps.part_id
    SET pd.status = ps.calculated_status
    WHERE FIND_IN_SET(pd.part_id, part_ids);
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'update_piv_numbers' AND `proc`.`type` = 'PROCEDURE'
precitec_test update_piv_numbers PROCEDURE update_piv_numbers SQL CONTAINS_SQL NO DEFINER
BEGIN
  DECLARE v_issue_date DATE;
  DECLARE v_issue_to VARCHAR(100);
  DECLARE v_issued_by VARCHAR(100);
  DECLARE v_oa_no VARCHAR(100);
  DECLARE v_key VARCHAR(255);
  DECLARE v_prev_key VARCHAR(255) DEFAULT '';
  DECLARE v_serial INT DEFAULT 0;
  DECLARE done INT DEFAULT FALSE;

  -- Cursor for unique combinations
  DECLARE cur CURSOR FOR
    SELECT DISTINCT issue_date, issue_to, issued_by, oa_no
    FROM tbldispatchcomponent
    WHERE issue_date BETWEEN '2025-04-01' AND '2026-03-31'
    ORDER BY issue_date, issue_to, issued_by, oa_no;

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur;

  read_loop: LOOP
    FETCH cur INTO v_issue_date, v_issue_to, v_issued_by, v_oa_no;
    IF done THEN
      LEAVE read_loop;
    END IF;

    -- Create unique key from the combination
    SET v_key = CONCAT(v_issue_date, '|', v_issue_to, '|', v_issued_by, '|', v_oa_no);

    IF v_key != v_prev_key THEN
      SET v_serial = v_serial + 1;
      SET v_prev_key = v_key;

      -- Update all matching rows at once
      UPDATE tbldispatchcomponent
      SET piv_no = CONCAT('PIV/', v_oa_no, '/', LPAD(v_serial, 4, '0'), '/25-26')
      WHERE issue_date = v_issue_date
        AND issue_to = v_issue_to
        AND issued_by = v_issued_by
        AND oa_no = v_oa_no;
    END IF;

  END LOOP;

  CLOSE cur;
END
root@localhost 2025-08-22 06:32:09 2025-08-22 06:32:09 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
  DECLARE v_issue_date DATE;
  DECLARE v_issue_to VARCHAR(100);
  DECLARE v_issued_by VARCHAR(100);
  DECLARE v_oa_no VARCHAR(100);
  DECLARE v_key VARCHAR(255);
  DECLARE v_prev_key VARCHAR(255) DEFAULT '';
  DECLARE v_serial INT DEFAULT 0;
  DECLARE done INT DEFAULT FALSE;

  -- Cursor for unique combinations
  DECLARE cur CURSOR FOR
    SELECT DISTINCT issue_date, issue_to, issued_by, oa_no
    FROM tbldispatchcomponent
    WHERE issue_date BETWEEN '2025-04-01' AND '2026-03-31'
    ORDER BY issue_date, issue_to, issued_by, oa_no;

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur;

  read_loop: LOOP
    FETCH cur INTO v_issue_date, v_issue_to, v_issued_by, v_oa_no;
    IF done THEN
      LEAVE read_loop;
    END IF;

    -- Create unique key from the combination
    SET v_key = CONCAT(v_issue_date, '|', v_issue_to, '|', v_issued_by, '|', v_oa_no);

    IF v_key != v_prev_key THEN
      SET v_serial = v_serial + 1;
      SET v_prev_key = v_key;

      -- Update all matching rows at once
      UPDATE tbldispatchcomponent
      SET piv_no = CONCAT('PIV/', v_oa_no, '/', LPAD(v_serial, 4, '0'), '/25-26')
      WHERE issue_date = v_issue_date
        AND issue_to = v_issue_to
        AND issued_by = v_issued_by
        AND oa_no = v_oa_no;
    END IF;

  END LOOP;

  CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spFetchData' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spFetchData PROCEDURE spFetchData SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255), IN `stage_nos` VARCHAR(255)
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id
        WHERE 
            FIND_IN_SET(ps.part_id, part_ids) > 0
            AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call the second procedure to process the fetched data
        CALL spProcessData(part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val);
    END LOOP;

    CLOSE cur;
END
root@localhost 2025-12-12 10:45:43 2025-12-12 10:45:43 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE stage_no_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE no_of_stages_val INT;

    DECLARE cur CURSOR FOR
        SELECT 
            ps.part_id, 
            ps.stage_no, 
            ps.total_qty, 
            ps.mr_na, 
            pd.no_of_stages
        FROM 
            t_parts_status ps
        JOIN 
            proj_detl pd ON ps.part_id = pd.part_id
        WHERE 
            FIND_IN_SET(ps.part_id, part_ids) > 0
            AND FIND_IN_SET(ps.stage_no, stage_nos) > 0;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val;

        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call the second procedure to process the fetched data
        CALL spProcessData(part_id_val, stage_no_val, reqd_total_qty_val, mr_na_val, no_of_stages_val);
    END LOOP;

    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'precitec_test' AND `proc`.`name` = 'updatePOSummary' AND `proc`.`type` = 'PROCEDURE'
precitec_test updatePOSummary PROCEDURE updatePOSummary SQL CONTAINS_SQL NO DEFINER
IN `p_po_no` VARCHAR(100)
BEGIN
    DECLARE v_total_parts_count INT DEFAULT 0;
	DECLARE v_total_order_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_part_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;

  
    DECLARE v_po_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check vendor_po_no exists in vendor_po_detl
    SELECT COUNT(*) INTO v_po_exists
    FROM vendor_po_detl
    WHERE vendor_po_no = p_po_no;

    IF v_po_exists > 0 THEN
        
        SELECT 
            COUNT(DISTINCT part_id),
            COALESCE(SUM(vendor_order_qty), 0),
            COALESCE(SUM(accepted_qty), 0),
            COALESCE(SUM(rejected_qty), 0),
            COALESCE(SUM(rework_qty), 0),
            COALESCE(SUM(rework_issue_qty), 0),
            COALESCE(SUM(part_issue_qty), 0)
        INTO 
		v_total_parts_count,
		v_total_order_qty,
		v_total_accept_qty,
		v_total_reject_qty,
		v_total_rework_qty,
		v_total_rework_issue_qty,
		v_total_part_issue_qty
        FROM vendor_po_detl
        WHERE vendor_po_no = p_po_no;
            
		SELECT 
            COALESCE(SUM(part_rcpt_qty), 0),
            COALESCE(SUM(rework_rcpt_qty), 0)
        INTO 
		v_total_parts_receipt_qty,
		v_total_rework_rcpt_qty
        FROM part_rcpt_detl
        WHERE vendor_po_no = p_po_no;
         
 END IF;
    
    
        UPDATE vendor_po
        SET 
        total_parts_count = v_total_parts_count,
        total_qty_count = v_total_order_qty,
        total_accepted_qty = v_total_accept_qty,
        total_received_qty = v_total_parts_receipt_qty,
        total_reject_qty = v_total_reject_qty,
        total_rework_qty = v_total_rework_qty,
        total_rwk_recv_qty = v_total_rework_rcpt_qty,
        total_rework_issue_qty = v_total_rework_issue_qty,
        total_issued_qty = v_total_part_issue_qty
        WHERE vendor_po_no = p_po_no;
    

    COMMIT;

END
root@localhost 2025-12-10 12:28:33 2025-12-10 12:28:33 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE v_total_parts_count INT DEFAULT 0;
	DECLARE v_total_order_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_parts_receipt_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_accept_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_reject_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_part_issue_qty DECIMAL(10,3) DEFAULT 0.000;
    DECLARE v_total_rework_rcpt_qty DECIMAL(10,3) DEFAULT 0.000;

  
    DECLARE v_po_exists INT DEFAULT 0;

    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;

    START TRANSACTION;

    -- Check vendor_po_no exists in vendor_po_detl
    SELECT COUNT(*) INTO v_po_exists
    FROM vendor_po_detl
    WHERE vendor_po_no = p_po_no;

    IF v_po_exists > 0 THEN
        
        SELECT 
            COUNT(DISTINCT part_id),
            COALESCE(SUM(vendor_order_qty), 0),
            COALESCE(SUM(accepted_qty), 0),
            COALESCE(SUM(rejected_qty), 0),
            COALESCE(SUM(rework_qty), 0),
            COALESCE(SUM(rework_issue_qty), 0),
            COALESCE(SUM(part_issue_qty), 0)
        INTO 
		v_total_parts_count,
		v_total_order_qty,
		v_total_accept_qty,
		v_total_reject_qty,
		v_total_rework_qty,
		v_total_rework_issue_qty,
		v_total_part_issue_qty
        FROM vendor_po_detl
        WHERE vendor_po_no = p_po_no;
            
		SELECT 
            COALESCE(SUM(part_rcpt_qty), 0),
            COALESCE(SUM(rework_rcpt_qty), 0)
        INTO 
		v_total_parts_receipt_qty,
		v_total_rework_rcpt_qty
        FROM part_rcpt_detl
        WHERE vendor_po_no = p_po_no;
         
 END IF;
    
    
        UPDATE vendor_po
        SET 
        total_parts_count = v_total_parts_count,
        total_qty_count = v_total_order_qty,
        total_accepted_qty = v_total_accept_qty,
        total_received_qty = v_total_parts_receipt_qty,
        total_reject_qty = v_total_reject_qty,
        total_rework_qty = v_total_rework_qty,
        total_rwk_recv_qty = v_total_rework_rcpt_qty,
        total_rework_issue_qty = v_total_rework_issue_qty,
        total_issued_qty = v_total_part_issue_qty
        WHERE vendor_po_no = p_po_no;
    

    COMMIT;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spProcessData' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spProcessData PROCEDURE spProcessData SQL CONTAINS_SQL NO DEFINER
IN `part_id_val` INT, IN `stage_no_val` INT, IN `reqd_total_qty_val` INT, IN `mr_na_val` INT, IN `no_of_stages_val` INT
BEGIN
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty1 DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);

	SET mat_reqd_qty = 0.00;
    SET mat_rec_qty = 0.00;
    SET mat_recpt = 0.00;
    
   IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_recd_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

    SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
    FROM vendor_po_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val  AND vendor_part_status = 'issued';

    SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
    FROM part_rcpt_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
    INTO acpt_qty, rework_qty, reject_qty
    FROM inspection_details
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty1
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);
    
    IF rework_qty>0
    THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    ELSE 
    SET rework_issue_qty = 0;
    END IF;

    SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
    FROM tbldispatchcomponent
    WHERE part_id = part_id_val;

    IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;

    -- Update t_parts_status table
    UPDATE t_parts_status
    SET total_qty = reqd_total_qty_val,
        part_approve = reqd_total_qty_val,
        mat_req = mat_reqd_qty,
        mat_recpt = mat_recpt, -- Corrected variable name
        vendor_po = ven_order_qty,
        mfg = rcpt_qty,
        part_recpt = rcpt_qty,
        accept = acpt_qty,
        rework = rework_qty,
        reject = reject_qty,
        part_issue = (part_issue_qty1+rework_issue_qty),
        assembly = assembly_issue_qty_update
    WHERE part_id = part_id_val AND stage_no = stage_no_val;

END
root@localhost 2025-12-12 10:46:00 2025-12-12 10:46:00 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE ven_order_qty DECIMAL(10,2);
    DECLARE rcpt_qty DECIMAL(10,2);
    DECLARE acpt_qty DECIMAL(10,2);
    DECLARE rework_qty DECIMAL(10,2);
    DECLARE reject_qty DECIMAL(10,2);
    DECLARE part_issue_qty1 DECIMAL(10,2);
    DECLARE rework_issue_qty DECIMAL(10,2);
    DECLARE mat_reqd_qty DECIMAL(10,2);
    DECLARE mat_rec_qty DECIMAL(10,2);
    DECLARE request_status_mat VARCHAR(255);
    DECLARE mat_recpt DECIMAL(10,2);
    DECLARE assembly_issue_qty DECIMAL(10,2);
    DECLARE assembly_issue_qty_update DECIMAL(10,2);

	SET mat_reqd_qty = 0.00;
    SET mat_rec_qty = 0.00;
    SET mat_recpt = 0.00;
    
   IF stage_no_val = 1 THEN
    SELECT 
        COALESCE(SUM(mat_req_qty), 0)    
    INTO 
        mat_reqd_qty     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val;

    SELECT 
        COALESCE(SUM(mat_recd_qty), 0)
    INTO 
        mat_recpt     
    FROM 
        mat_req_detl
    WHERE 
        part_id = part_id_val AND request_status = 'Updated';
        END IF;

    SELECT COALESCE(SUM(vendor_order_qty), 0) INTO ven_order_qty
    FROM vendor_po_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val  AND vendor_part_status = 'issued';

    SELECT COALESCE(SUM(part_rcpt_qty), 0) INTO rcpt_qty
    FROM part_rcpt_detl
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(insp_qty_acpt), 0), COALESCE(SUM(insp_qty_rework), 0), COALESCE(SUM(insp_qty_rej), 0)
    INTO acpt_qty, rework_qty, reject_qty
    FROM inspection_details
    WHERE part_id = part_id_val AND stg_no = stage_no_val;

    SELECT COALESCE(SUM(part_issue_qty), 0) INTO part_issue_qty1
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val+1);
    
    IF rework_qty>0
    THEN SELECT COALESCE(SUM(part_issue_qty), 0) INTO rework_issue_qty
    FROM part_issue_details
    WHERE part_id = part_id_val AND stg_no = (stage_no_val);
    ELSE 
    SET rework_issue_qty = 0;
    END IF;

    SELECT COALESCE(SUM(issue_qty), 0) INTO assembly_issue_qty
    FROM tbldispatchcomponent
    WHERE part_id = part_id_val;

    IF stage_no_val = no_of_stages_val THEN
        SET assembly_issue_qty_update = assembly_issue_qty;
    ELSE
        SET assembly_issue_qty_update = 0;
    END IF;

    -- Update t_parts_status table
    UPDATE t_parts_status
    SET total_qty = reqd_total_qty_val,
        part_approve = reqd_total_qty_val,
        mat_req = mat_reqd_qty,
        mat_recpt = mat_recpt, -- Corrected variable name
        vendor_po = ven_order_qty,
        mfg = rcpt_qty,
        part_recpt = rcpt_qty,
        accept = acpt_qty,
        rework = rework_qty,
        reject = reject_qty,
        part_issue = (part_issue_qty1+rework_issue_qty),
        assembly = assembly_issue_qty_update
    WHERE part_id = part_id_val AND stage_no = stage_no_val;

END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spProcessOANumbers' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spProcessOANumbers PROCEDURE spProcessOANumbers SQL CONTAINS_SQL NO DEFINER
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE oa_no_val VARCHAR(100);

    -- Declare cursor for distinct oa_no values
    DECLARE cur CURSOR FOR
        SELECT DISTINCT oa_no FROM proj_detl;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variable
        FETCH cur INTO oa_no_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call spStatusInsert for each oa_no
        CALL spStatusInsert(oa_no_val);
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-12-12 10:46:11 2025-12-12 10:46:11 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE oa_no_val VARCHAR(100);

    -- Declare cursor for distinct oa_no values
    DECLARE cur CURSOR FOR
        SELECT DISTINCT oa_no FROM proj_detl;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variable
        FETCH cur INTO oa_no_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Call spStatusInsert for each oa_no
        CALL spStatusInsert(oa_no_val);
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spStatusInsert' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spStatusInsert PROCEDURE spStatusInsert SQL CONTAINS_SQL NO DEFINER
IN `oa` VARCHAR(100)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT sa_name, part_name, part_id, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE oa_no = oa AND part_drg_remarks = 'approved' AND status_flag='W'
        ORDER BY part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO sa_name_val, part_name_val, part_id_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = part_id_val AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa, part_id_val, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-12-12 10:46:22 2025-12-12 10:46:22 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE part_id_val INT;
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val DECIMAL(10,2);
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT sa_name, part_name, part_id, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE oa_no = oa AND part_drg_remarks = 'approved' AND status_flag='W'
        ORDER BY part_id;

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO sa_name_val, part_name_val, part_id_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = part_id_val AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa, part_id_val, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spStatusPartInsert' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spStatusPartInsert PROCEDURE spStatusPartInsert SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE current_part_id INT;
    DECLARE oa_no_val VARCHAR(255);
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT part_id, oa_no, sa_name, part_name, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE FIND_IN_SET(part_id, part_ids);

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO current_part_id, oa_no_val, sa_name_val, part_name_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = current_part_id AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa_no_val, current_part_id, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, reqd_total_qty_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
root@localhost 2025-12-12 10:46:33 2025-12-12 10:46:33 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE current_part_id INT;
    DECLARE oa_no_val VARCHAR(255);
    DECLARE no_of_stages_val INT;
    DECLARE reqd_total_qty_val INT;
    DECLARE mr_na_val INT;
    DECLARE sa_name_val VARCHAR(255);
    DECLARE part_name_val VARCHAR(255);
    DECLARE stage_weightage_val INT;
    DECLARE stage_no_val INT;
    DECLARE multi_stage_val INT;

    -- Declare cursor for the SELECT statement
    DECLARE cur CURSOR FOR
        SELECT part_id, oa_no, sa_name, part_name, no_of_stages, reqd_total_qty, mr_na
        FROM proj_detl
        WHERE FIND_IN_SET(part_id, part_ids);

    -- Declare handler for NOT FOUND condition
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- Open the cursor
    OPEN cur;

    -- Loop through the result set
    read_loop: LOOP
        -- Fetch data into variables
        FETCH cur INTO current_part_id, oa_no_val, sa_name_val, part_name_val, no_of_stages_val, reqd_total_qty_val, mr_na_val;

        -- Check if we reached the end of the result set
        IF done THEN
            LEAVE read_loop;
        END IF;

        -- Reset stage_no_val for each part
        SET stage_no_val = 1;

        -- Loop through stages and insert into t_parts_status
        WHILE stage_no_val <= no_of_stages_val DO
            SET stage_weightage_val = 100 / no_of_stages_val;
            SET multi_stage_val = CASE WHEN no_of_stages_val > 1 THEN 1 ELSE 0 END;

            -- Check if the same part_id and stage_no does not exist
            IF NOT EXISTS (
                SELECT 1
                FROM t_parts_status
                WHERE part_id = current_part_id AND stage_no = stage_no_val
            ) THEN
                -- Insert into t_parts_status
                INSERT INTO t_parts_status (wo_no, part_id, sa_name, part_name, stage_no, stage_weightage, part_approve, mat_req, mat_recpt, vendor_po, mat_issue, mfg, part_recpt, part_issue, rework, reject, accept, assembly, raw_mat_na, mr_na, multi_stage, total_qty, status)
                VALUES (oa_no_val, current_part_id, sa_name_val, part_name_val, stage_no_val, stage_weightage_val, reqd_total_qty_val, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', mr_na_val, multi_stage_val, reqd_total_qty_val, '0');
            END IF;

            SET stage_no_val = stage_no_val + 1;
        END WHILE;
    END LOOP;

    -- Close the cursor
    CLOSE cur;
END
NONE
編集 編集 コピー コピー 削除 削除
DELETE FROM proc WHERE `proc`.`db` = 'mechalonic_db' AND `proc`.`name` = 'spUpdateProjPartsStatus' AND `proc`.`type` = 'PROCEDURE'
mechalonic_db spUpdateProjPartsStatus PROCEDURE spUpdateProjPartsStatus SQL CONTAINS_SQL NO DEFINER
IN `part_ids` VARCHAR(255)
BEGIN
    UPDATE proj_detl pd
    JOIN (
        SELECT part_id, SUM(status) / MAX(stage_no) AS calculated_status
        FROM t_parts_status
        WHERE FIND_IN_SET(part_id, part_ids)
        GROUP BY part_id
    ) ps ON pd.part_id = ps.part_id
    SET pd.status = ps.calculated_status
    WHERE FIND_IN_SET(pd.part_id, part_ids);
END
root@localhost 2025-12-12 10:47:22 2025-12-12 10:47:22 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_... utf8mb4 utf8mb4_unicode_ci utf8mb4_general_ci
BEGIN
    UPDATE proj_detl pd
    JOIN (
        SELECT part_id, SUM(status) / MAX(stage_no) AS calculated_status
        FROM t_parts_status
        WHERE FIND_IN_SET(part_id, part_ids)
        GROUP BY part_id
    ) ps ON pd.part_id = ps.part_id
    SET pd.status = ps.calculated_status
    WHERE FIND_IN_SET(pd.part_id, part_ids);
END
NONE
チェックしたものを: チェックしたものを:
クエリ結果操作 クリップボードにコピー クリップボードにコピー エクスポート エクスポート グラフで表示する グラフで表示する ビューを作成する ビューを作成する
この SQL をブックマーク この SQL をブックマーク