存储过程(工作随笔)审核退单

USE [420923_2013]
GO
/****** Object:  StoredProcedure [dbo].[Pro_MzCheck]    Script Date: 01/29/2013 10:46:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Pro_MzCheck]
  @Flag varchar(1),   /*类别1一级审核;2二级审核;3转入历史库;4一级审核退单;5二级审核退单;6历史数据退单;7删除*/
  @BillCode varchar(12),
  @BillNo int
AS
begin
declare @Count int;
declare @v_CoopMedCode varchar(12);  /**/
declare @v_CheckFee numeric(8,2);  /**/
declare @Sql varchar(5000)
  --一级审核
  if @Flag = '1'
 update o_CbMzBxDj  set CheckerCode1=b.CheckerCode1,CheckerName1=b.CheckerName1,CheckDate1=getdate(),CheckOneFee=b.CheckOneFee,CheckRemark1=b.CheckRemark1
  from o_CbMzBxDj a,#O_CheckOne_Mz b
  where a.OrgCode=b.OrgCode and a.DiagNo=b.DiagNo and a.CoopMedCode=b.CoopMedCode and a.IDNo=b.IDNo;

  --二级审核
  if @Flag = '2'
  begin
 update o_CbMzBxDj  set CheckerCode=b.CheckerCode,CheckerName=b.CheckerName,CheckDate2=getdate(),CheckFee=b.CheckFee,CheckRemark2=b.CheckRemark2
  from o_CbMzBxDj a,#O_CheckTwo_Mz b
   where a.OrgCode=b.OrgCode and a.DiagNo=b.DiagNo and a.CoopMedCode=b.CoopMedCode and a.IDNo=b.IDNo;
  end;
  --转入历史库
  if @Flag = '3'
  begin
-- BEGIN TRANSACTION
        set @Sql='
 insert s_CbMzZdb(BillCode,BillNo,BillName,WriteDate,Fee,CanFreeFee,CheckFee1,CheckFee,CheckStatus,PrincipalName,DebitID)
 select BillCode,BillNo,BillName,WriteDate,Fee,CanFreeFee,CheckFee1,CheckFee,CheckStatus,PrincipalName,null
  from O_CbMzZdb where BillCode='''+@BillCode+''' and BillNo='+cast(@BillNo as varchar(4));
        print @Sql
        exec(@Sql)

        set @Sql='
 insert s_CbMzbxdj(OrgCode,CoopMedCode,IDNo,DiagNo,ExpenseKind,HospitalCode,HospitalName,PatientName,HouseHolder,
  Sex,Age,AgeUnit,InDate,IllCode,IllName,TotalFee,CanFreeFee,FreeFee,DoctorName,InputerCode,InputerName,
  InputDate,CheckerCode1,CheckerName1,CheckOneFee,CheckDate1,CheckRemark1,CheckerCode,CheckerName,
  CheckFee,CheckDate2,CheckRemark2,Remark,InterfaceIn,BillCode,BillNo,AreaCode,MzFlag)
 select OrgCode,CoopMedCode,IDNo,DiagNo,ExpenseKind,HospitalCode,HospitalName,PatientName,HouseHolder,
  Sex,Age,AgeUnit,InDate,IllCode,IllName,TotalFee,CanFreeFee,FreeFee,DoctorName,InputerCode,InputerName,
  InputDate,CheckerCode1,CheckerName1,CheckOneFee,CheckDate1,CheckRemark1,CheckerCode,CheckerName,
  CheckFee,CheckDate2,CheckRemark2,Remark,InterfaceIn,BillCode,BillNo,AreaCode,MzFlag
 from o_CbMzbxdj where BillCode='''+@BillCode+''' and BillNo='+cast(@BillNo as varchar(4));
        print @Sql
        exec(@Sql)
 
 delete from O_CbMzbxdj where BillCode=@BillCode and BillNo=@BillNo;

 delete from O_CbMzZdb where BillCode=@BillCode and BillNo=@BillNo
/* COMMIT TRANSACTION;
 IF (@@ERROR <> 0 )
 BEGIN
          RAISERROR('error',16,1 )
          ROLLBACK TRANSACTION
 END 
*/
  end;
  --一级审核退单
  if @Flag = '4'
  begin
-- update o_CbMzBxDj set CheckerCode1=null,CheckerName1=null,CheckDate1=null,CheckOneFee=0,CheckRemark1=null
--  where BillCode=@BillCode and BillNo=@BillNo;
 update O_CbMzZdb set CheckFee1=0,CheckStatus='9' where BillCode=@BillCode and BillNo=@BillNo;
  end;
  --二级审核退单
  if @Flag = '5'
  begin
-- update o_CbMzBxDj set CheckerCode1=null,CheckerName1=null,CheckDate1=null,CheckOneFee=0,CheckRemark1=null,
--  CheckerCode=null,CheckerName=null,CheckDate2=null,CheckFee=0,CheckRemark2=null 
--  where BillCode=@BillCode and BillNo=@BillNo;
 update O_CbMzZdb set CheckFee1=0,CheckFee=0,CheckStatus='9' where BillCode=@BillCode and BillNo=@BillNo;
  end;
  --历史数据退单
  if @Flag = '6'
  begin
 BEGIN TRANSACTION
 --插入O_CbMzZdb\O_CbMzbxdj
 insert O_CbMzZdb(BillCode,BillNo,BillName,WriteDate,Fee,CanFreeFee,CheckFee1,CheckFee,CheckStatus,PrincipalName)
 select BillCode,BillNo,BillName,WriteDate,Fee,CanFreeFee,CheckFee1,CheckFee,CheckStatus,PrincipalName 
  from s_CbMzZdb where BillCode=@BillCode and BillNo=@BillNo;

 insert O_CbMzbxdj(OrgCode,CoopMedCode,IDNo,DiagNo,ExpenseKind,HospitalCode,HospitalName,PatientName,HouseHolder,
  Sex,Age,AgeUnit,InDate,IllCode,IllName,TotalFee,CanFreeFee,FreeFee,DoctorName,InputerCode,InputerName,
  InputDate,CheckerCode1,CheckerName1,CheckOneFee,CheckDate1,CheckRemark1,CheckerCode,CheckerName,
  CheckFee,CheckDate2,CheckRemark2,Remark,InterfaceIn,BillCode,BillNo,AreaCode,MzFlag)
 select OrgCode,CoopMedCode,IDNo,DiagNo,ExpenseKind,HospitalCode,HospitalName,PatientName,HouseHolder,
  Sex,Age,AgeUnit,InDate,IllCode,IllName,TotalFee,CanFreeFee,FreeFee,DoctorName,InputerCode,InputerName,
  InputDate,CheckerCode1,CheckerName1,CheckOneFee,CheckDate1,CheckRemark1,CheckerCode,CheckerName,
  CheckFee,CheckDate2,CheckRemark2,Remark,InterfaceIn,BillCode,BillNo,AreaCode,MzFlag
 from s_CbMzbxdj where BillCode=@BillCode and BillNo=@BillNo;
 --删除s_CbMzbxdj\s_CbMzZdb
 delete from s_CbMzbxdj where BillCode=@BillCode and BillNo=@BillNo;
 delete from s_CbMzZdb where BillCode=@BillCode and BillNo=@BillNo
 --更新O_CbMzZdb\O_CbMzbxdj
-- update o_CbMzBxDj set CheckerCode1=null,CheckerName1=null,CheckDate1=null,CheckOneFee=0,CheckRemark1=null,
--  CheckerCode=null,CheckerName=null,CheckDate2=null,CheckFee=0,CheckRemark2=null 
--  where BillCode=@BillCode and BillNo=@BillNo;
 update O_CbMzZdb set CheckStatus='3' where BillCode=@BillCode and BillNo=@BillNo;
 COMMIT TRANSACTION;
 IF (@@ERROR <> 0 )
 BEGIN
          RAISERROR('error',16,1 )
          ROLLBACK TRANSACTION
 END 
  end;
  --删除
  if @Flag = '7'
  begin
 BEGIN TRAN
 update p_cbnhzhxx set HomeAccount=HomeAccount+ ss.FreeFee
  from p_cbnhzhxx a,(select b.coopmedcode,sum(b.FreeFee) as FreeFee 
  from p_cbnhzhxx a,o_CbMzBxDj b
  where a.coopmedcode=b.coopmedcode and b.BillCode=@BillCode and b.BillNo=@BillNo
  group by b.coopmedcode) ss
  where a.coopmedcode=ss.coopmedcode
 delete from O_CbMzbxdj where BillCode=@BillCode and BillNo=@BillNo;
 delete from O_CbMzZdb where BillCode=@BillCode and BillNo=@BillNo;
 COMMIT TRANSACTION;
 IF (@@ERROR <> 0 )
 BEGIN
          RAISERROR('error',16,1 )
          ROLLBACK TRANSACTION
 END 
  end;
end

 

posted @ 2013-01-29 10:48  虫虫飞520  阅读(264)  评论(0编辑  收藏  举报