📄 itemfeedtl.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 + -