⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itemfeedtl.pas

📁 某大型医院护士站
💻 PAS
字号:
unit ItemfeeDtl;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, Grids, Wwdbigrd, Wwdbgrid, DBCtrls,
  wwSpeedButton, wwDBNavigator, wwclearpanel, Spin, ComCtrls, Db, DBTables,
  Wwquery;

type
  TfrmFeeDtl = class(TForm)
    wwDBGrid1: TwwDBGrid;
    Panel4: TPanel;
    btnChgfee: TBitBtn;
    btnClose: TBitBtn;
    StaticText1: TStaticText;
    Panel1: TPanel;
    StaticText2: TStaticText;
    Panel3: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    DBText6: TDBText;
    DBText7: TDBText;
    DBText8: TDBText;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    DBText9: TDBText;
    DBNavigator1: TDBNavigator;
    Label4: TLabel;
    dtpChgDate: TDateTimePicker;
    Label10: TLabel;
    seChgNum: TSpinEdit;
    Label11: TLabel;
    cbBackMed: TCheckBox;
    qryNeedChgItem: TwwQuery;
    cbIncExitem: TCheckBox;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure FormShow(Sender: TObject);
    procedure btnChgfeeClick(Sender: TObject);
    procedure wwDBGrid1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmFeeDtl: TfrmFeeDtl;

implementation

uses HisUtilitis, DataModule, PRNDataModule, chgExitem;

{$R *.DFM}

procedure TfrmFeeDtl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DM.qryItemFeeDtl.Close;
end;

procedure TfrmFeeDtl.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  with DM.qryItemFeeDtl do
  begin
    DisableControls;
    Close;
    Params[0].AsString := DM.OrderItemSerialID.Value;
    Open;
    EnableControls;
  end;
end;

procedure TfrmFeeDtl.FormShow(Sender: TObject);
begin
  dtpChgDate.Date := Date;
  seChgNum.Value := 0;
  cbIncExitem.Checked := True;
  cbBackMed.Checked := False;
end;

procedure TfrmFeeDtl.btnChgfeeClick(Sender: TObject);
var
  tmp_dosage   :Double;
  tmp_NeedMed  :Smallint;
  tmp_IsExitem :Smallint;
  sp_Result    :integer;
begin
  if ( not DM.isInCharge ) and ( not DM.isSysAdm ) then
  begin
    HisErrorPrompt('当前操作员没有冲正费用权限!');
    SysUtils.Abort;
  end;

  if DM.OrderItemEndTime.IsNull then
  begin
    HisErrorPrompt('没有停止的医嘱不能冲正!');
    SysUtils.Abort;
  end;

  if ( seChgNum.Value = 0 ) then
  begin
    HisErrorPrompt('冲正的次数不能为0!');
    SysUtils.Abort;
  end;

  if cbIncExitem.Checked then
  begin
    with qryNeedChgItem do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT DISTINCT Serialid ,ItemID FROM CostItem ');
      SQL.Add(' WHERE Serialid = :P_SerialID ');
      SQL.Add('   AND (   ( ItemID = :P_ItemID ) ');
      SQL.Add('        OR ( ItemID in ( Select Name From Exusage ) ) ');
      SQL.Add('        )');
      Params[0].AsString := DM.OrderItemSerialID.Value;
      Params[1].AsString := DM.OrderItemItemID.Value;
      Open;
    end;
  end else
  begin
    with qryNeedChgItem do
    begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT DISTINCT Serialid ,ItemID FROM CostItem ');
      SQL.Add(' WHERE Serialid = :P_SerialID ');
      SQL.Add('   AND ItemID = :P_ItemID  ');
      Params[0].AsString := DM.OrderItemSerialID.Value;
      Params[1].AsString := DM.OrderItemItemID.Value;
      Open;
    end;
  end;

  if cbBackMed.Checked then tmp_NeedMed := 1 else tmp_NeedMed := 0;

  if DM.OrderItemDOSAGE.IsNull then
     tmp_dosage := 1.0
  else
     tmp_dosage := DM.OrderItemDOSAGE.Value;

  qryNeedChgItem.First;
  while not qryNeedChgItem.Eof do
  begin
    if DM.PROJHISADT.InTransaction then DM.PROJHISADT.Commit;

    if (qryNeedChgItem.Fields[1].AsString <> DM.OrderItemItemID.Value) then
        tmp_IsExItem := 1
    else
        tmp_IsExitem := 0;

    with DM.spFeeChg do
    begin
      Close;
      Params[0].AsString   := qryNeedChgItem.Fields[0].AsString;
      Params[1].AsString   := qryNeedChgItem.Fields[1].AsString;
      Params[2].AsString   := DM.currOperatorno;
      Params[3].AsDate     := Trunc(dtpChgDate.Date);
      Params[4].AsFloat    := tmp_Dosage;
      Params[5].AsInteger  := seChgNum.Value;
      Params[6].AsSmallint := tmp_NeedMed;
      Params[7].AsSmallint := tmp_IsExitem;
      ExecProc;
      sp_Result := Params[8].AsInteger;
    end;

      if sp_Result < 0 then
      begin
         case sp_Result of
          -1 :
             HisErrorPrompt('病人已经开始结算,费用冲正请到住院科!,');
         else
             HisErrorPrompt('冲正出现错误,请认真查看数据是否有错!');
         end;
         SysUtils.Abort;
      end;
    qryNeedChgItem.Next;
  end;

  with DM.qryItemFeeDtl do
  begin
    DisableControls;
    Close;
    Params[0].AsString := DM.OrderItemSerialID.Value;
    Open;
    EnableControls;
  end;

  seChgNum.Value := 0;
end;

procedure TfrmFeeDtl.wwDBGrid1DblClick(Sender: TObject);
begin
  if ( DM.qryItemFeeDtl.RecordCount > 0 ) then
  begin
    try
      frmChgExitem := TfrmChgExitem.Create(self);
      frmChgExitem.lbExitemName.Caption  := DM.qryItemFeeDtlItemName.Value;
      frmChgExitem.lbPrice.Caption := DM.qryItemFeeDtlPrice.AsString;
      frmChgExitem.lbUseUnit.Caption := DM.qryItemFeeDtlUSEUNIT.AsString;
      frmChgExitem.dtpExitemChgDate.Date := Date;

      if ( DM.qryItemFeeDtlItemID.AsString = DM.OrderItemItemID.Value ) then
          frmChgExitem.cbBackMed.Enabled := True
      else
          frmChgExitem.cbBackMed.Enabled := False;

      frmChgExitem.curr_serialid := DM.qryItemFeeDtlSerialID.AsString;
      frmChgExitem.curr_itemid   := DM.qryItemFeeDtlItemID.AsString;

      frmChgExitem.ShowModal;
    finally
      frmChgExitem.free;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -