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

📄 in120.pas

📁 利用delhpi 开发的一个关于零售业进销管理系统
💻 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 + -