CREATE PROC [dbo].[Cash_SaveMultilplePrescription] @MultipleUserId SMALLINT
AS
BEGIN
    DECLARE @IsCashPayment BIT = 1,
            @ResultNo NUMERIC(18, 0),
            @PrescriptionId NUMERIC(18, 0),
            @KindSave SMALLINT,
            @ResultMessage NVARCHAR(MAX),
            @PrescriptionNumber VARCHAR(8),
            @PrescriptionType SMALLINT;
    DECLARE @PrescriptionResult TABLE
    (
        PrescriptionId NUMERIC(18, 0),
        PrescriptionType SMALLINT,
        KindSave SMALLINT,
        Result NUMERIC(18, 0),
        ResultMessage NVARCHAR(MAX)
    );

    DECLARE MultilplePrescriptionCursor CURSOR FOR
    SELECT Id_Havaleh,
           Nu_Forosh,
           Kind_Flag,
           kind_Save
    FROM dbo.TmpDrugH
    WHERE kind_Save IN ( 2, 3 )
          AND MultipleFactorUserId = @MultipleUserId
    ORDER BY Id_Havaleh;
    OPEN MultilplePrescriptionCursor;
    FETCH NEXT FROM MultilplePrescriptionCursor
    INTO @PrescriptionId,
         @PrescriptionNumber,
         @PrescriptionType,
         @KindSave;
    BEGIN TRY
        BEGIN TRAN;
        WHILE @@FETCH_STATUS = 0
        BEGIN
          UPDATE dbo.TmpDrugH SET User_Cash = @MultipleUserId , Tarikh = GETDATE() WHERE Id_Havaleh = @PrescriptionId
            EXEC dbo.Sodor_Factor_Drug @Msg_Num = @ResultNo OUTPUT,
                                       @TmpId = @PrescriptionId; -- numeric(18, 0)
            IF @ResultNo = -1
                SET @ResultMessage
                    = ' فاکتور شماره : ' + @PrescriptionNumber + 'برخي از اقلام دارويي فاکتور موجودي ندارند';
            ELSE IF @ResultNo = -2
                SET @ResultMessage
                    = ' فاکتور شماره : ' + @PrescriptionNumber
                      + 'همزمان با شما كاربر ديگري اين فاکتور را حذف و يا اصلاح كرده مجددا كنترل نماييد';
            ELSE IF @ResultNo = -3
                SET @ResultMessage
                    = ' فاکتور شماره : ' + @PrescriptionNumber
                      + ' فاقد اقلام داروئي است مجددا توسط پذيرش فراخواني شده و ارسال گردد';
            ELSE IF @ResultNo = -6
                SET @ResultMessage
                    = ' فاکتور شماره : ' + @PrescriptionNumber + '  فاقد اقلام دارويي مي باشد صدور امکانپذير نمي باشد';
            ELSE IF @ResultNo = 0
                    OR @ResultNo = -5
                SET @ResultMessage = ' : خطاي سيستم جهت صدور فاکتور شماره' + @PrescriptionNumber;
            ELSE
                SET @ResultMessage = 'نسخه با موفقيت صادر شد';
            INSERT INTO @PrescriptionResult
            VALUES
            (@PrescriptionId, @PrescriptionType, @KindSave, @ResultNo, @ResultMessage);
            IF @ResultNo <= 0
            BEGIN
                DELETE FROM @PrescriptionResult
                WHERE @ResultNo > 0;
                RAISERROR('Error raised in Save Prscription .', 16, 1);
            END;
            FETCH NEXT FROM MultilplePrescriptionCursor
            INTO @PrescriptionId,
                 @PrescriptionNumber,
                 @PrescriptionType,
                 @KindSave;
        END;
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        COMMIT TRAN;

    END TRY
    BEGIN CATCH
        CLOSE MultilplePrescriptionCursor;
        DEALLOCATE MultilplePrescriptionCursor;
        ROLLBACK TRAN;
    END CATCH;

    SELECT pr.PrescriptionId,
           pr.PrescriptionType,
           KindSave,
           Result,
           ResultMessage,
		   dh.Sazman_Code InsuranceCode , 
           PrescriptionNumber = CASE
                                    WHEN pr.PrescriptionType = 1 THEN
                                        dh.Nu_Forosh
                                    ELSE
                                        dh.Nu_Bargasht_Forosh
                                END
    FROM @PrescriptionResult pr
        LEFT JOIN dbo.DrugH dh
            ON dh.Id_Havaleh = pr.Result
    ORDER BY dh.Id_Havaleh;
END
