.#stockmovefm.pas.1.26
来自「群星医药系统源码」· 26 代码 · 共 648 行 · 第 1/2 页
26
648 行
Begin
IF FEditMode=0 Then Exit;
IF FlagGoodsID<>'' Then Begin
FlagGoodsID:='';
Exit;
End;
If bBrowGoods then Exit;
sGoodsID:=CdsStockMoveDtlGoodsID.AsString;
If sGoodsID='' Then Exit;
if (BeforeGoodsID=sGoodsID) Then Exit;
BeforeGoodsID:=sGoodsID;
sSetFields:= 'Name,Specs,Unit';
FlagGoodsID:=GetGoodsInfo(CdsStockMoveDtl,'Price',sGoodsID,sSetFields,'','S',1);
If FlagGoodsID='' Then Begin //原为FlagGoodsID<>'',药品有效时反而报错
Messagebox(Handle,'无效药品编号','错误',16);
Abort;
End Else Begin
If sGoodsID<>FlagGoodsID then
CdsStockMoveDtl.FieldByName('GoodsID').AsString:=FlagGoodsID
Else
FlagGoodsID:='';
End;}
begin
ParseGoodsInfo;
End;
procedure TFmStockMove.CdsStockMoveAfterScroll(DataSet: TDataSet);
begin
If CdsStockMoveTransfer.Value Then Begin
ActAudit.Enabled:=False and CanAudit;
ActRevert.Enabled:=True and CanRevert;
Lab_State.Caption:='单据状态:已审核';
Lab_State.Font.Color:=clRed;
End Else Begin
ActAudit.Enabled:=True and CanAudit;
ActRevert.Enabled:=False and CanRevert;
Lab_State.Caption:='单据状态:未审核';
Lab_State.Font.Color:=clHotLight;
ActRefreshExecute(NIl);
End;
end;
procedure TFmStockMove.CdsStockMoveNewRecord(DataSet: TDataSet);
begin
CdsStockMoveCreater.Value := LogonInfo^.UserID;
CdsStockMoveGrup.Value := LogonInfo^.UserGrupID;
CdsStockMoveFDate.Value:=Date;
CdsStockMoveBillNo.Value := BuildBillNo('StockMove');
end;
procedure TFmStockMove.CdsStockMoveReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
MessageBox(Handle,Pchar(E.Message),'',16);
Action:=raAbort;
end;
procedure TFmStockMove.CdsStockMoveDtlBeforeInsert(DataSet: TDataSet);
begin
iLastItemNO := GetFieldMaxInt(CdsStockMoveDtl, 'ItemNo')+1;
end;
procedure TFmStockMove.CdsStockMoveDtlNewRecord(DataSet: TDataSet);
begin
inherited;
BeforeGoodsID:='';
CdsStockMoveDtlItemNo.Value:=iLastItemNO;
CdsStockMoveDtlBillNo.Value:=CdsStockMoveBillNo.Value;
CdsStockMoveDtlValidDate.Value:=IncMonth(Date,12);
end;
procedure TFmStockMove.CdsStockMoveDtlAfterPost(DataSet: TDataSet);
Var
D,dAmount:Double;
Abk:TBookMark;
begin
BeforeGoodsID:='';
With CdsStockMoveDtl Do Begin
D:=0;
dAmount:=0;
Try
Abk:=GetBookmark;
DisableControls;
First;
while Not Eof Do Begin
D:=D+CdsStockMoveDtlQty.Value;
dAmount:=dAmount+CdsStockMoveDtlAmount.Value;
Next;
End;
CdsStockMoveNumCount.Value:=D;
CdsStockMoveTotal.Value:=dAmount;
Finally
GotoBookmark(Abk);
FreeBookmark(Abk);
EnableControls;
End;
End;
End;
procedure TFmStockMove.CdsStockMoveDtlQtyChange(Sender: TField);
Var dQty,dPrice:Double;
begin
dQty:=CdsStockMoveDtlQty.Value;
dPrice:=CdsStockMoveDtlPrice.Value;
CdsStockMoveDtlAmount.Value:=dQty*dPrice;
end;
procedure TFmStockMove.ActRevertExecute(Sender: TObject);
begin
Try
If CdsStockMove.IsEmpty Then Exit;
If FEditMode>0 then Exit;
If Application.MessageBox('确实要还原当前已审核过的数据吗?','提示:',4+32)<>6 Then Exit;
CdsStockMove.Edit;
CdsStockMoveTransfer.Value:=False;
CdsStockMoveAudit.Value := '';
try
CdsStockMove.Post;
Except
CdsStockMove.Cancel;
Raise;
end;
If CdsStockMove.ApplyUpdates(0)>0 Then
Messagebox(Handle,Pchar('还原数据不成功!'),nil,16)
Else Begin
ActAudit.Enabled:=True and CanAudit;
ActRevert.Enabled:=False and CanRevert;
Lab_State.Caption:='单据状态:未审核';
Lab_State.Font.Color:=clHotLight;
ActRefreshExecute(Nil);
End;
Except
On E:Exception Do
Messagebox(Handle,Pchar(E.Message),nil,16);
End;
end;
procedure TFmStockMove.ActFieldLayoutExecute(Sender: TObject);
begin
SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name,
[dbgStockInDtl],'药品调拨明细');
end;
procedure TFmStockMove.ActDataExportExecute(Sender: TObject);
begin
ExportData([CdsStockMove, CdsStockMoveDtl],'药品调拨单;药品调拨明细', '');
end;
procedure TFmStockMove.ActAddSubItemExecute(Sender: TObject);
begin
If FEditMode=0 Then Exit;
IF Not(CdsStockMove.State In dsEditModes) Then Exit;
CdsStockMoveDtl.append;
end;
procedure TFmStockMove.ActDelSubItemExecute(Sender: TObject);
begin
If FEditMode=0 Then Exit;
If NOt(CdsStockMove.State In dsEditModes) Then Exit;
if CdsStockMoveDtl.IsEmpty then Exit;
CdsStockMoveDtl.Delete;
end;
procedure TFmStockMove.dbgStockInDtlEditButtonClick(Sender: TObject);
Var
sField: String;
dPrice: Double;
iDepotID: Integer;
sBerthNo: String;
Begin
If FEditMode=0 Then Exit;
sField :='';
sField := Trim(LowerCase(dbgStockInDtl.SelectedField.FieldName));
If sField='goodsid' Then
ParseGoodsInfo
Else If sField='price' Then
Begin
dPrice := ViewGoodsPrice(CdsStockMoveDtlGoodsID.Value, CdsStockmoveDtlUnit.Value);
If dPrice>=0 Then Begin
CdsStockMoveDtl.Edit;
CdsStockMoveDtlprice.Value := dPrice;
End;
End
else if sField='berth' then
begin
If CdsStockMoveDepotID.IsNull Then
Begin
Application.MessageBox('请先指定调出仓库!','提示',MB_OK+MB_ICONINFORMATION);
Exit;
End;
iDepotID := CdsStockMoveDepotID.Value;
If SelectBerth(iDepotID,sBerthNo) Then
begin
CdsStockMoveDtl.Edit;
CdsStockMoveDtlBerth.Value := sBerthNO;
end;
end
else if sField='' then
begin
If CdsStockMoveToDepotID.IsNull Then
Begin
MessageBox(Handle,Pchar('请先指定调入仓库!'),'错误:',16);
Exit;
End;
iDepotID := CdsStockMoveToDepotID.Value;
If SelectBerth(iDepotID,sBerthNo) Then
CdsStockMoveDtlToBerth.Value := sBerthNO;
end;
End;
procedure TFmStockMove.RzDBButtonEdit2ButtonClick(Sender: TObject);
Var sEmpNo,sEmpName:String;
begin
If FEditMode=0 Then Exit;
sEmpNo := CdsStockMoveEmpNo.Value;
If SelectEmp(sEmpNo,sEmpName) Then begin
CdsStockMoveEmpNo.Value := sEmpNo;
CdsStockMoveName.Value := sEmpName;
End;
end;
procedure TFmStockMove.edEmpIDButtonClick(Sender: TObject);
Var sEmpNo,sEmpName:String;
begin
If FEditMode=0 Then Exit;
sEmpNo := CdsStockMoveShipper.Value;
If SelectEmp(sEmpNo,sEmpName) Then begin
CdsStockMoveShipper.Value := sEmpNo;
CdsStockMoveShipperName.Value := sEmpName;
End;
end;
procedure TFmStockMove.RzDBButtonEdit1ButtonClick(Sender: TObject);
var iDepotID: Integer;
DepotNo,DepotName: string;
begin
If FEditMode=0 Then Exit;
iDepotID := CdsStockMoveDepotID.Value;
If SelectDepot(iDepotID,DepotNo,DepotName) Then Begin
CdsStockMoveDepotID.Value := iDepotID;
CdsStockMoveDepotNo.Value := DepotNo;
CdsStockMoveDepotName.Value := DepotName;
End;
end;
procedure TFmStockMove.edDepotButtonClick(Sender: TObject);
var iToDepotID: Integer;
ToDepotNo,ToDepotName: string;
begin
If FEditMode=0 Then Exit;
iToDepotID := CdsStockMoveToDepotID.Value;
If SelectDepot(iToDepotID,ToDepotNo,ToDepotName) Then Begin
CdsStockMoveToDepotID.Value := iToDepotID;
CdsStockMoveToDepotNo.Value := ToDepotNo;
CdsStockMoveToDepotName.Value := ToDepotName;
End;
end;
function TFmStockMove.DoSome(cType: PChar; Values: Variant): Variant;
const
cTypes = 'viewbill'#13'query';
// 查看某单 查询
var sTypes: TStrings;
i: integer;
str, str2: String;
begin
sTypes := TStringList.Create;
sTypes.Text := cTypes;
i := sTypes.IndexOf(cType);
case i of
0: begin//ViewBill
if VarIsArray(Values) then begin
str := Values[0];
str2:= Values[1];
end else begin
str := Values;
str2:= '';
end;
if str2='' then begin
if sBillNoList.IndexOf(str)<0 then
sBillNoList.Add(str);
end else
sBillNoList.Text := str2;
SetCurrBillNo(str);
end;
end;
end;
procedure TFmStockMove.ActInsertExecute(Sender: TObject);
begin
inherited;
cdsStockMove.Append;
edDate.Date := now;
BeforeDepotNo := '';
BeforeToDepotNo:='';
end;
procedure TFmStockMove.ActQueryExecute(Sender: TObject);
begin
IFmMain.OnAction(Sender);
end;
procedure TFmStockMove.ParseGoodsInfo;
begin
if FEditMode=0 then Exit;
if bBrowGoods then Exit;
bBrowGoods := true;
try
SelectGoods(CdsStockMoveDtl, CdsStockMoveDtlGoodsID, CdsStockMoveDtlUnit, true, False, False);
finally
bBrowGoods := false;
end;
end;
initialization
RegisterClass(TFmStockMove);
finalization
UnRegisterClass(TFmStockMove);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?