USE [ERPTOOL_JY_20250826Back]
GO

IF OBJECT_ID(N'[dbo].[物料管理_物理删除]', N'P') IS NOT NULL
    DROP PROCEDURE [dbo].[物料管理_物理删除]
GO

CREATE PROCEDURE [dbo].[物料管理_物理删除]
@物料流水号 int=null
AS
BEGIN
    SET NOCOUNT ON;

    IF @物料流水号 IS NULL OR NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号)
    BEGIN
        SELECT '0' AS result, N'物料不存在' AS msg;
        RETURN;
    END

    IF EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号 AND ISNULL(是否禁用, 0) = 0)
    BEGIN
        SELECT '0' AS result, N'启用物料不能物理删除，请先删除禁用后再操作' AS msg;
        RETURN;
    END

    BEGIN TRY
        BEGIN TRAN;

        DELETE FROM dbo.库存管理_物料_图片
        WHERE 物料流水号 = @物料流水号; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 物理删除禁用物料时同步清理图片

        DELETE FROM dbo.库存管理_物料主文件_基本
        WHERE 物料流水号 = @物料流水号
          AND ISNULL(是否禁用, 0) = 1; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 仅允许已禁用物料物理删除

        COMMIT TRAN;

        SELECT '1' AS result, N'永久删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 返回前端可识别结果
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
            ROLLBACK TRAN;

        SELECT '0' AS result, ERROR_MESSAGE() AS msg;
    END CATCH
END
GO
