📄 in120.pas
字号:
unit IN120;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
MasterDetail, Menus, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls,
StdCtrls, Mask, DBCtrls;
type
TfmIN120 = class(TfmMasterDetail)
qyMasterCompanyID: TStringField;
qyMasterTransferID: TStringField;
qyMasterTransferDate: TStringField;
qyMasterTransferOutWarehouseID: TStringField;
qyMasterTransferInWarehouseID: TStringField;
qyMasterCreateMan: TStringField;
qyMasterCreateDate: TStringField;
qyMasterCreateTime: TStringField;
qyMasterInWarehouseName: TStringField;
qyMasterOutWarehouseName: TStringField;
qyMasterModifyMan: TStringField;
qyMasterModifyDate: TStringField;
qyMasterModifyTime: TStringField;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
Label3: TLabel;
ED2: TDBEdit;
DBEdit4: TDBEdit;
Label5: TLabel;
ED3: TDBEdit;
DBEdit6: TDBEdit;
sbOutWarehouseID: TSpeedButton;
sbInWarehouseID: TSpeedButton;
qyDetailCompanyID: TStringField;
qyDetailTransferID: TStringField;
qyDetailTransferItem: TStringField;
qyDetailProductID: TStringField;
qyDetailTransferQuantity: TBCDField;
qyDetailProductName: TStringField;
sbTransferDate: TSpeedButton;
edProductID: TDBEdit;
procedure FormCreate(Sender: TObject);
procedure qyMasterBeforeOpen(DataSet: TDataSet);
procedure qyMasterNewRecord(DataSet: TDataSet);
procedure qyMasterBeforePost(DataSet: TDataSet);
procedure qyDetailBeforeOpen(DataSet: TDataSet);
procedure qyDetailNewRecord(DataSet: TDataSet);
procedure qyDetailBeforePost(DataSet: TDataSet);
procedure sbOutWarehouseIDClick(Sender: TObject);
procedure sbInWarehouseIDClick(Sender: TObject);
procedure sbTransferDateClick(Sender: TObject);
procedure qyDetailProductIDValidate(Sender: TField);
procedure qyMasterTransferOutWarehouseIDValidate(Sender: TField);
procedure qyMasterTransferInWarehouseIDValidate(Sender: TField);
procedure dsMasterStateChange(Sender: TObject);
procedure gdDetailEditButtonClick(Sender: TObject);
procedure qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyDetailAfterInsert(DataSet: TDataSet);
procedure sbSelectClick(Sender: TObject);
procedure sbReportClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
AStartPeriodDate, AEndPeriodDate : String;
ReData : Boolean;
procedure OpenDB; override;
procedure CalcAmount; override;
procedure GetPrevValue; override;
end;
var
fmIN120: TfmIN120;
implementation
uses Main, DataModule, PublicFunction, CheckData, BaseSearch, ChinaCalendar,
GetData, IN120Select, Loading, IN120Report;
var
sPrevTransferDate, sPrevTransferOutWarehouseID, sPrevTransferInWarehouseID : String;
{$R *.DFM}
{ TfmIN120 }
procedure TfmIN120.FormCreate(Sender: TObject);
begin
AStartPeriodDate := sStartPeriodDate;
AEndPeriodDate := sEndPeriodDate;
ReData := False;
inherited;
sPrevTransferDate := '';
sPrevTransferOutWarehouseID := '';
sPrevTransferInWarehouseID := '';
end;
procedure TfmIN120.OpenDB;
begin
qyMaster.Close;
OrderBySQL := 'M.TransferID';
qyMaster.SQL.Text := SQLText;
qyMaster.Open;
ItemFieldName := 'TransferItem';
DataDate := 'TransferDate';
end;
procedure TfmIN120.CalcAmount;
begin
end;
procedure TfmIN120.qyMasterBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
ParamByName('StartTransferDate').AsString := AStartPeriodDate;
ParamByName('EndTransferDate').AsString := AEndPeriodDate;
end;
end;
procedure TfmIN120.qyMasterNewRecord(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
FieldByName('TransferID').AsString := Space(10);
FieldByName('TransferDate').AsString := Today;
FieldByName('TransferOutWarehouseID').AsString := Space(4);
FieldByName('TransferInWarehouseID').AsString := Space(4);
end;
end;
procedure TfmIN120.qyMasterBeforePost(DataSet: TDataSet);
begin
inherited;
if qyMaster.State = dsInsert then
begin
if not CheckDate(qyMaster.FieldByName('TransferDate').AsString) then
begin
ED1.SetFocus;
Abort;
end;
if not CheckWarehouseID(qyMaster.FieldByName('TransferOutWarehouseID').AsString) then
begin
ED2.SetFocus;
Abort;
end;
if not CheckWarehouseID(qyMaster.FieldByName('TransferInWarehouseID').AsString) then
begin
ED3.SetFocus;
Abort;
end;
if qyMaster.FieldByName('TransferOutWarehouseID').AsString =
qyMaster.FieldByName('TransferInWarehouseID').AsString then
begin
MyWarning('调出仓库与调入仓库不可相同!');
ED2.SetFocus;
Abort;
end;
qyMaster.FieldByName('TransferID').AsString :=
IDGen('TF', qyMaster.FieldByName('TransferDate').AsString,
'TransferID', 'TransferMaster');
end;
end;
procedure TfmIN120.qyDetailBeforeOpen(DataSet: TDataSet);
begin
inherited;
qyDetail.ParamByName('TransferID').AsString := qyMaster.FieldByName('TransferID').AsString;
end;
procedure TfmIN120.qyDetailNewRecord(DataSet: TDataSet);
begin
inherited;
with qyDetail do
begin
FieldByName('TransferID').AsString := qyMaster.FieldByName('TransferID').AsString;
FieldByName('TransferItem').AsString := Space(3);
FieldByName('ProductID').AsString := Space(10);
FieldByName('TransferQuantity').AsFloat := 0;
end;
end;
procedure TfmIN120.qyDetailBeforePost(DataSet: TDataSet);
begin
inherited;
if not CheckProductID(qyDetail.FieldByName('ProductID').AsString) then
begin
gdDetail.SelectedField := qyDetailProductID;
Abort;
end;
if qyDetail.State = dsInsert then
qyDetail.FieldByName('TransferItem').AsString :=
ITGen(qyMaster.FieldByName('TransferID').AsString,
'TransferItem', 'TransferID', 'TransferDetail');
end;
procedure TfmIN120.sbOutWarehouseIDClick(Sender: TObject);
begin
inherited;
SearchData(ED2, DM.qyWarehouse);
end;
procedure TfmIN120.sbInWarehouseIDClick(Sender: TObject);
begin
inherited;
SearchData(ED3, DM.qyWarehouse);
end;
procedure TfmIN120.sbTransferDateClick(Sender: TObject);
begin
inherited;
MyCalendar(ED1);
end;
procedure TfmIN120.qyDetailProductIDValidate(Sender: TField);
begin
inherited;
qyDetail.FieldByName('ProductName').AsString :=
GetProductName(qyDetail.FieldByName('ProductID').AsString);
end;
procedure TfmIN120.qyMasterTransferOutWarehouseIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('OutWarehouseName').AsString :=
GetWarehouseName(qyMaster.FieldByName('TransferOutWarehouseID').AsString);
end;
procedure TfmIN120.qyMasterTransferInWarehouseIDValidate(Sender: TField);
begin
inherited;
qyMaster.FieldByName('InWarehouseName').AsString :=
GetWarehouseName(qyMaster.FieldByName('TransferInWarehouseID').AsString);
end;
procedure TfmIN120.dsMasterStateChange(Sender: TObject);
begin
inherited;
sbTransferDate.Enabled := (qyMaster.State = dsInsert);
sbOutWarehouseID.Enabled := (qyMaster.State = dsInsert);
sbInWarehouseID.Enabled := (qyMaster.State = dsInsert);
ED2.ReadOnly := (qyMaster.State <> dsInsert);
ED3.ReadOnly := (qyMaster.State <> dsInsert);
end;
procedure TfmIN120.gdDetailEditButtonClick(Sender: TObject);
begin
inherited;
if (gdDetail.SelectedField.FieldName = 'ProductID') and
(qyDetail.State in [dsInsert, dsEdit]) then
qyDetail.FieldByName('ProductID').AsString := SearchData(edProductID, DM.qyProduct);
end;
procedure TfmIN120.qyDetailUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
var
fOldTransferQuantity, fNewTransferQuantity : Extended;
sNewProductID, sOldProductID : String;
begin
inherited;
if ReSortting then Exit;
fNewTransferQuantity := 0;
fOldTransferQuantity := 0;
sOldProductID := '';
sNewProductID := '';
case UpdateKind of
ukInsert :
begin
fNewTransferQuantity := DataSet.FieldByName('TransferQuantity').NewValue;
fOldTransferQuantity := 0;
sOldProductID := DataSet.FieldByName('ProductID').NewValue;
sNewProductID := DataSet.FieldByName('ProductID').NewValue;
end;
ukModify :
begin
fNewTransferQuantity := DataSet.FieldByName('TransferQuantity').NewValue;
fOldTransferQuantity := DataSet.FieldByName('TransferQuantity').OldValue;
sOldProductID := DataSet.FieldByName('ProductID').OldValue;
sNewProductID := DataSet.FieldByName('ProductID').NewValue;
end;
ukDelete :
begin
fNewTransferQuantity := 0;
fOldTransferQuantity := DataSet.FieldByName('TransferQuantity').OldValue;
sOldProductID := DataSet.FieldByName('ProductID').OldValue;
sNewProductID := DataSet.FieldByName('ProductID').OldValue;
end;
end;
UpdateInventoryAnalyst(sPrevTransferDate, sOldProductID,
sPrevTransferOutWarehouseID, '09',
(fOldTransferQuantity * -1), 0);
UpdateInventoryAnalyst(sPrevTransferDate, sNewProductID,
sPrevTransferOutWarehouseID, '09',
fNewTransferQuantity, 0);
UpdateInventoryAnalyst(sPrevTransferDate, sOldProductID,
sPrevTransferInWarehouseID, '10',
(fOldTransferQuantity * -1), 0);
UpdateInventoryAnalyst(sPrevTransferDate, sNewProductID,
sPrevTransferInWarehouseID, '10',
fNewTransferQuantity, 0);
end;
procedure TfmIN120.qyDetailAfterInsert(DataSet: TDataSet);
begin
inherited;
gdDetail.SelectedField := qyDetailProductID;
end;
procedure TfmIN120.GetPrevValue;
begin
inherited;
sPrevTransferDate := qyMaster.FieldByName('TransferDate').AsString;
sPrevTransferOutWarehouseID := qyMaster.FieldByName('TransferOutWarehouseID').AsString;
sPrevTransferInWarehouseID := qyMaster.FieldByName('TransferInWarehouseID').AsString;
end;
procedure TfmIN120.sbSelectClick(Sender: TObject);
begin
inherited;
ReData := False;
qyMaster.DisableControls;
try
fmIN120Select := TfmIN120Select.Create(Application);
fmIN120Select.ShowModal;
if ReData then begin
try
fmLoading := TfmLoading.Create(Application);
fmLoading.Show;
fmLoading.Update;
qyMaster.Close;
qyMaster.Open;
finally
fmLoading.Hide;
fmLoading.Free;
end;
end;
finally
qyMaster.EnableControls;
fmIN120Select.Free;
end;
end;
procedure TfmIN120.sbReportClick(Sender: TObject);
begin
inherited;
IN120Print(qyMaster.FieldByName('TransferID').AsString);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -