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

📄 frmrequestordertoorderlist.pas

📁 物流供应链管理系统
💻 PAS
字号:
unit frmRequestOrderToOrderList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBClient, MConnect, SConnect, ExtCtrls, Grids,
  DBGrids, DBSelectDlgEdit, Mask, DBCtrls, ComCtrls, DBDateTimePicker,
  DataSetToExcel, LCDBOperatTool;

type
  TFormRequestOrderToOrderList = class(TForm)
    Button1: TButton;
    DBGrid1: TDBGrid;
    BtnConvert: TButton;
    DBGrid2: TDBGrid;
    LEdtRequestOrderId: TLabeledEdit;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    DBEdtRequestDate: TDBEdit;
    DBEdtDepartId: TDBEdit;
    DBEdtOperator: TDBEdit;
    DBCBChecked: TDBCheckBox;
    DBCBProcessed: TDBCheckBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    GroupBox1: TGroupBox;
    LEdtOrderListId: TLabeledEdit;
    Label1: TLabel;
    GroupBox2: TGroupBox;
    DBEdtBarCode: TDBEdit;
    DBEdtAccount: TDBEdit;
    DBDTPReceivableDate: TDBDateTimePicker;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DataSetToExcel: TDataSetToExcel;
    SaveDlg: TSaveDialog;
    BtnCheckIt: TButton;
    SocketConnRequestOrder: TSocketConnection;
    cdsRequestOrderMaster: TClientDataSet;
    DSRequestOrderMaster: TDataSource;
    cdsOrderListMaster: TClientDataSet;
    DSOrderListMaster: TDataSource;
    DSRequestOrderSlave: TDataSource;
    cdsRequestOrderSlave: TClientDataSet;
    cdsOrderListSlave: TClientDataSet;
    DSOrderListSlave: TDataSource;
    SocketConnOrderList: TSocketConnection;
    SocketConnVendor: TSocketConnection;
    cdsVendor: TClientDataSet;
    DSVendor: TDataSource;
    cdsOrderListSlaveAmount: TIntegerField;
    cdsRequestOrderMasterIsChecked: TBooleanField;
    cdsRequestOrderMasterIsProcessed: TBooleanField;
    cdsOrderListMasterIsProcessed: TBooleanField;
    cdsRequestOrderMasterId: TWideStringField;
    cdsRequestOrderSlaveMasterId: TWideStringField;
    cdsOrderListMasterId: TWideStringField;
    cdsOrderListMasterVendorId: TWideStringField;
    cdsOrderListSlaveBarCode: TWideStringField;
    cdsOrderListSlaveMasterId: TWideStringField;
    cdsRequestOrderMasterRequestDepartId: TWideStringField;
    cdsRequestOrderMasterRequestOperatorId: TWideStringField;
    cdsRequestOrderMasterRequestDate: TDateTimeField;
    cdsRequestOrderSlaveReceivableDate: TDateTimeField;
    cdsOrderListMasterGenerateDate: TDateTimeField;
    cdsOrderListSlaveReceivableDate: TDateTimeField;
    cdsRequestOrderSlaveAmount: TLargeintField;
    cdsRequestOrderSlaveBarCode: TWideStringField;
    SocketConGoodsInfo: TSocketConnection;
    CBVendorId: TComboBox;
    DBEdtVendorId: TDBEdit;
    LCDBOperatTool1: TLCDBOperatTool;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure BtnConvertClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure BtnCheckItClick(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormHide(Sender: TObject);
    procedure LCDBOperatTool1ModeChange(AMode: TBtnMode);
  private
    { Private declarations }
    FUserId: string;
    FPassword: string;
  public
    { Public declarations }
    procedure SetUserIdPassword(AUserId, APassword: string);
  end;

var
  FormRequestOrderToOrderList: TFormRequestOrderToOrderList;

implementation
uses untConfig, CommonFunc, frmEmailSender;
{$R *.dfm}

procedure TFormRequestOrderToOrderList.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TFormRequestOrderToOrderList.Button1Click(Sender: TObject);
var
 a: olevariant;
 i, n: Integer;
 LVendorId: string;
 LBarCode: string;
begin
  if not CheckInput(LEdtRequestOrderId) then Exit;


  if SocketConnRequestOrder.AppServer.QueryRequestOrderMasterById
       (Trim(LEdtRequestOrderId.Text), a) then
   (DSRequestOrderMaster.DataSet as TClientDataSet).Data
    := a
  else
  begin
    LCShowMessage('没有此单!');
    exit;
  end;

    
  if SocketConnRequestOrder.AppServer.QueryRequestOrderSlaveById
    (Trim(LEdtRequestOrderId.Text), a) then
  (DSRequestOrderSlave.DataSet as TClientDataSet).Data
    := a
  else
  begin
    LCShowMessage('没有此单!');
    exit;
  end;

  if DSRequestOrderMaster.DataSet.FieldByName('IsProcessed').AsBoolean then
  begin
    LCShowMessage('此单已处理!');
    exit;
  end;
  BtnConvert.Enabled := true;
  if not DSRequestOrderMaster.
    DataSet.FieldByName('IsChecked').AsBoolean then
    BtnCheckIt.Visible := true;

  n := cdsRequestOrderSlave.RecordCount - 1;
  CBVendorId.Clear;
  cdsRequestOrderSlave.First;
  //SocketconGoodsInfo.
  for i := 0 to n do
  begin
    LBarCode := cdsRequestOrderSlave.FieldByName('BarCode').AsString;
    LVendorId := SocketconGoodsInfo.AppServer.QueryVendorIdByBarCode(LBarcode);
    if CBVendorId.Items.IndexOf(LVendorId) < 0 then
      CBVendorId.Items.Add(LVendorId);
  end;
end;

procedure TFormRequestOrderToOrderList.BtnConvertClick(Sender: TObject);
begin
  LEdtOrderListId.Text := SocketConnOrderList.AppServer.GeneratePurchaseListId;
  cdsOrderListMaster.CreateDataSet;
  cdsOrderListMaster.Open;
  cdsOrderListMaster.EmptyDataSet;
  cdsOrderListMaster.Insert;
  cdsOrderListMaster.FieldByName('VendorId').AsString := CBVendorId.Text;
  cdsOrderListMaster.FieldByName('Id').AsString := LEdtOrderListId.Text;
  cdsOrderListSlave.CreateDataSet;
  cdsOrderListSlave.Open;
  cdsOrderListSlave.EmptyDataSet;
end;

procedure TFormRequestOrderToOrderList.Button3Click(Sender: TObject);
begin
  cdsOrderListMaster.Post;
  SocketConnOrderList.AppServer.
    UpdatePurchaseListMaster(cdsOrderListMaster.Delta);

  cdsOrderListSlave.Post;
  SocketConnOrderList.AppServer.
    UpdatePurchaseListSlave(cdsOrderListSlave.Delta);
end;

procedure TFormRequestOrderToOrderList.Button4Click(Sender: TObject);
begin
  SaveDlg.Filter := 'Excel文件 (*.xls)|*.xls';
  if SaveDlg.Execute then  
    DataSetToExcel.SaveExcelToFile(SaveDlg.FileName+'.xls','采购单');
end;

procedure TFormRequestOrderToOrderList.Button5Click(Sender: TObject);
begin
  SaveDlg.Filter := 'XML文件 (*.xml)|*.xml';
  if SaveDlg.Execute then
    cdsOrderListSlave.SaveToFile(SaveDlg.FileName+'.xml',dfXml);
end;

procedure TFormRequestOrderToOrderList.BtnCheckItClick(Sender: TObject);
begin
  SocketConnRequestOrder.AppServer.
    SetCheckedRequestOrderById(Trim(LEdtRequestOrderId.Text));
  
end;

procedure TFormRequestOrderToOrderList.Button7Click(Sender: TObject);
var
  LVendorId, LVendorMail: string;
  LXLSFileName: string;
  LDlg: TFormEmailSender;
begin
  LVendorId := Trim(DBEdtVendorId.Text);
  LXLSFileName := Trim(GetTempDirectory)+LVendorId+'.xls';
  if FileExists(LXLSFileName) then
    DeleteFile(LXLSFileName);
  DataSetToExcel.SaveExcelToFile(LXLSFileName,'采购单');
  cdsVendor.Close;
  cdsVendor.CommandText :=
    'select Email from t_vendor where Id=:Id';
  cdsVendor.Params.ParamByName('Id').AsString :=
    LVendorId;
  cdsVendor.Open;
  LVendorMail := cdsVendor.FieldByName('Email').AsString;
  LDlg := TFormEmailSender.Create(nil);
  LDlg.SetToEmail(LVendorMail);
  LDlg.SetAttachmentFileName(LXLSFileName);
  LDlg.ShowModal;
  LDlg.Free;
end;

procedure TFormRequestOrderToOrderList.SetUserIdPassword(AUserId, APassword: string);
begin
  FUserId := AUserId;
  FPassword := APassword;
  SetSocketConnectionConnect(SocketConnVendor);
  SocketConnVendor.AppServer.LoginMTS(AUserId, APassword);
  cdsVendor.Open;
end;


procedure TFormRequestOrderToOrderList.FormShow(Sender: TObject);
begin
  SetSocketConnectionConnect(SocketConnRequestOrder);
  SetSocketConnectionConnect(SocketConnOrderList);
  SetSocketConnectionConnect(SocketConGoodsInfo);

end;

procedure TFormRequestOrderToOrderList.FormHide(Sender: TObject);
begin
  SocketConnRequestOrder.Close;
  SocketConnOrderList.Close;
  SocketConnVendor.Close;
  SocketConGoodsInfo.Close;
end;

procedure TFormRequestOrderToOrderList.LCDBOperatTool1ModeChange(
  AMode: TBtnMode);
begin
 if AMode = bmAdd then
   cdsOrderListSlave.FieldByName('MasterId').AsString := LEdtOrderListId.Text;
end;

end.

⌨️ 快捷键说明

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