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

📄 ord300_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Ord300_01;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas200_03, dxExEdtr, StdCtrls, wwdbdatetimepicker, Buttons,
  ActnList, DB, ADODB, Menus, dxCntner, dxTL, dxDBCtrl, dxDBGrid, ExtCtrls,
  ComCtrls, ToolWin, dxDBTLCl, dxGrClms;

type
  TOrd300_01Form = class(TBas200_03Form)
    lblDate: TLabel;
    sbSearch: TSpeedButton;
    lblType: TLabel;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    cbType: TComboBox;
    lblItem: TLabel;
    edtItem: TEdit;
    ADOQuery1FType: TIntegerField;
    ADOQuery1FCode: TWideStringField;
    ADOQuery1FDate: TDateTimeField;
    ADOQuery1FCust: TWideStringField;
    ADOQuery1FCustName: TWideStringField;
    ADOQuery1FItem: TWideStringField;
    ADOQuery1FItemName: TWideStringField;
    ADOQuery1FItemSpec: TWideStringField;
    ADOQuery1FUnitName: TWideStringField;
    ADOQuery1FQty: TFloatField;
    ADOQuery1FPrice: TFloatField;
    ADOQuery1FAmount: TFloatField;
    ADOQuery1FDisRate: TFloatField;
    ADOQuery1FDisAmt: TFloatField;
    ADOQuery1FNetAmt: TFloatField;
    ADOQuery1FTaxRate: TFloatField;
    ADOQuery1FTaxAmt: TFloatField;
    dxDBGrid1FType: TdxDBGridMaskColumn;
    dxDBGrid1FCode: TdxDBGridColumn;
    dxDBGrid1FDate: TdxDBGridDateColumn;
    dxDBGrid1FCust: TdxDBGridColumn;
    dxDBGrid1FCustName: TdxDBGridColumn;
    dxDBGrid1FItem: TdxDBGridColumn;
    dxDBGrid1FItemName: TdxDBGridColumn;
    dxDBGrid1FItemSpec: TdxDBGridColumn;
    dxDBGrid1FUnitName: TdxDBGridColumn;
    dxDBGrid1FQty: TdxDBGridMaskColumn;
    dxDBGrid1FPrice: TdxDBGridMaskColumn;
    dxDBGrid1FAmount: TdxDBGridMaskColumn;
    dxDBGrid1FDisRate: TdxDBGridMaskColumn;
    dxDBGrid1FDisAmt: TdxDBGridMaskColumn;
    dxDBGrid1FNetAmt: TdxDBGridMaskColumn;
    dxDBGrid1FTaxRate: TdxDBGridMaskColumn;
    dxDBGrid1FTaxAmt: TdxDBGridMaskColumn;
    dxDBGrid1FAcrAmt: TdxDBGridMaskColumn;
    ADOQuery1FAcrAmt: TFloatField;
    sbItem: TSpeedButton;
    qryInv150: TADOQuery;
    qryInv150I150_002: TWideStringField;
    qryInv150I150_003: TWideStringField;
    qryInv150I150_004: TWideStringField;
    qryInv150I150_001: TAutoIncField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure ADOQuery1FTypeGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure sbItemClick(Sender: TObject);
    procedure edtItemExit(Sender: TObject);
  private
    AType:array[0..1] of string;
    procedure ByQuote(AFromDate,AToDate:TDateTime;AItem:String);
    procedure ByOrder(AFromDate,AToDate:TDateTime;AItem:String);
    procedure ByAll(AFromDate,AToDate:TDateTime;AItem:String);
    { Private declarations }
  public
    procedure SetInterface; override;
    procedure BrowseEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Ord300_01Form: TOrd300_01Form;

implementation

uses SYSDATA, CommFun, HwSelData;

{$R *.dfm}

procedure TOrd300_01Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('ORD30001001');  //销售产品查询
  lblItem.Caption:=GetDBString('ORD30001002');  //产品
  lblType.Caption:=GetDBString('ORD30001003');  //类型
  lblDate.Caption:=GetDBString('ORD30001004');  //日期

  ADOQuery1FType.DisplayLabel:=GetDBString('ORD30001005');  //单据类型
  ADOQuery1FCode.DisplayLabel:=GetDBString('ORD30001006');  //单据编号
  ADOQuery1FDate.DisplayLabel:=GetDBString('ORD30001007');  //单据日期
  ADOQuery1FCust.DisplayLabel:=GetDBString('ORD30001008');  //客户编号
  ADOQuery1FCustName.DisplayLabel:=GetDBString('ORD30001009');  //客户名称
  ADOQuery1FItem.DisplayLabel:=GetDBString('ORD30001010');  //产品编号
  ADOQuery1FItemName.DisplayLabel:=GetDBString('ORD30001011');  //产品名称
  ADOQuery1FItemSpec.DisplayLabel:=GetDBString('ORD30001012');  //规格型号
  ADOQuery1FUnitName.DisplayLabel:=GetDBString('ORD30001013');  //计量单位
  ADOQuery1FQty.DisplayLabel:=GetDBString('ORD30001014');  //产品数量
  ADOQuery1FPrice.DisplayLabel:=GetDBString('ORD30001015');  //产品单价
  ADOQuery1FAmount.DisplayLabel:=GetDBString('ORD30001016');  //产品金额
  ADOQuery1FDisRate.DisplayLabel:=GetDBString('ORD30001017');  //折扣比率
  ADOQuery1FDisAmt.DisplayLabel:=GetDBString('ORD30001018');  //折扣金额
  ADOQuery1FNetAmt.DisplayLabel:=GetDBString('ORD30001019');  //折后总额
  ADOQuery1FTaxRate.DisplayLabel:=GetDBString('ORD30001020');  //销售税率
  ADOQuery1FTaxAmt.DisplayLabel:=GetDBString('ORD30001021');  //销售税额
  ADOQuery1FAcrAmt.DisplayLabel:=GetDBString('ORD30001022');  //应收金额

  cbType.Clear;
  cbType.Items.Add(GetDBString('ORD30001023'));  //仅报价单
  cbType.Items.Add(GetDBString('ORD30001024'));  //仅销售单
  cbType.Items.Add(GetDBString('ORD30001025'));  //报价和销售单
  cbType.ItemIndex:=0;
  AType[0]:=GetDBString('ORD30001026');  //销售报价
  AType[1]:=GetDBString('ORD30001027');  //销售定单

  qryInv150I150_002.DisplayLabel:=ADOQuery1FItem.DisplayLabel;  //产品编号
  qryInv150I150_003.DisplayLabel:=ADOQuery1FItemName.DisplayLabel;  //产品名称
  qryInv150I150_004.DisplayLabel:=ADOQuery1FItemSpec.DisplayLabel;  //规格型号
end;

procedure TOrd300_01Form.FormCreate(Sender: TObject);
var
  ADate:TDateTime;
begin
  inherited;
  qryInv150.Open;
  ADate:=GetServerDate;
  edtFromDate.Date:=GetMonthFirstDate(ADate);
  edtToDate.Date:=GetMonthEndDate(ADate);
  sbSearch.Click;
end;

procedure TOrd300_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryInv150.Close;
end;

//仅销售报价
procedure TOrd300_01Form.ByQuote(AFromDate,AToDate:TDateTime;AItem:String);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select 0 as FType,O500A_001 as FCode,O500A_003 as FDate,O150_002 as FCust,O150_003 as FCustName,');
  ADOQuery1.SQL.Add('       I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,O500B_005 as FQty,');
  ADOQuery1.SQL.Add('       O500B_006 as FPrice,O500B_007 as FAmount,O500B_008 as FDisRate,O500B_009 as FDisAmt,O500B_010 as FNetAmt,');
  ADOQuery1.SQL.Add('       O500B_011 as FTaxRate,O500B_012 as FTaxAmt,O500B_013 as FAcrAmt');
  ADOQuery1.SQL.Add('from ORD500A,ORD500B,ORD150,INV150,INV140');
  ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_017=O150_001 and O500B_003=I150_001 and O500B_004=I140_001 and');
  ADOQuery1.SQL.Add('      O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
  if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
  ADOQuery1.SQL.Add('order by O500A_003,O500A_001');
  ADOQuery1.Open;
end;

//仅销售定单
procedure TOrd300_01Form.ByOrder(AFromDate,AToDate:TDateTime;AItem:String);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select 1 as FType,O510A_001 as FCode,O510A_003 as FDate,O150_002 as FCust,O150_003 as FCustName,');
  ADOQuery1.SQL.Add('       I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,O510B_005 as FQty,');
  ADOQuery1.SQL.Add('       O510B_006 as FPrice,O510B_007 as FAmount,O510B_008 as FDisRate,O510B_009 as FDisAmt,O510B_010 as FNetAmt,');
  ADOQuery1.SQL.Add('       O510B_011 as FTaxRate,O510B_012 as FTaxAmt,O510B_013 as FAcrAmt');
  ADOQuery1.SQL.Add('from ORD510A,ORD510B,ORD150,INV150,INV140');
  ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_017=O150_001 and O510B_003=I150_001 and O510B_004=I140_001 and');
  ADOQuery1.SQL.Add('      O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
  if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
  ADOQuery1.SQL.Add('order by O510A_003,O510A_001');
  ADOQuery1.Open;
end;

//报价和销售单
procedure TOrd300_01Form.ByAll(AFromDate,AToDate:TDateTime;AItem:string);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select 0 as FType,O500A_001 as FCode,O500A_003 as FDate,O150_002 as FCust,O150_003 as FCustName,');
  ADOQuery1.SQL.Add('       I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,O500B_005 as FQty,');
  ADOQuery1.SQL.Add('       O500B_006 as FPrice,O500B_007 as FAmount,O500B_008 as FDisRate,O500B_009 as FDisAmt,O500B_010 as FNetAmt,');
  ADOQuery1.SQL.Add('       O500B_011 as FTaxRate,O500B_012 as FTaxAmt,O500B_013 as FAcrAmt');
  ADOQuery1.SQL.Add('from ORD500A,ORD500B,ORD150,INV150,INV140');
  ADOQuery1.SQL.Add('where O500A_001=O500B_001 and O500A_017=O150_001 and O500B_003=I150_001 and O500B_004=I140_001 and');
  ADOQuery1.SQL.Add('      O500A_003>='+GetDateString(AFromDate)+' and O500A_003<='+GetDateString(AToDate));
  if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');

  ADOQuery1.SQL.Add('union');

  ADOQuery1.SQL.Add('select 1 as FType,O510A_001 as FCode,O510A_003 as FDate,O150_002 as FCust,O150_003 as FCustName,');
  ADOQuery1.SQL.Add('       I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,O510B_005 as FQty,');
  ADOQuery1.SQL.Add('       O510B_006 as FPrice,O510B_007 as FAmount,O510B_008 as FDisRate,O510B_009 as FDisAmt,O510B_010 as FNetAmt,');
  ADOQuery1.SQL.Add('       O510B_011 as FTaxRate,O510B_012 as FTaxAmt,O510B_013 as FAcrAmt');
  ADOQuery1.SQL.Add('from ORD510A,ORD510B,ORD150,INV150,INV140');
  ADOQuery1.SQL.Add('where O510A_001=O510B_001 and O510A_017=O150_001 and O510B_003=I150_001 and O510B_004=I140_001 and');
  ADOQuery1.SQL.Add('      O510A_003>='+GetDateString(AFromDate)+' and O510A_003<='+GetDateString(AToDate));
  if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');

  ADOQuery1.SQL.Add('order by FDate,FCode');
  ADOQuery1.Open;
end;

procedure TOrd300_01Form.sbSearchClick(Sender: TObject);
var
  AFromDate,AToDate:TDateTime;
begin
  inherited;
//查询
  if (edtFromDate.Text='') or (edtToDate.Text='') then
  begin
    ShowMsg('UMS10000319');  //起止日期不可为空
    if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
    Abort;
  end;
  if edtFromDate.Date>edtToDate.Date then
  begin
    ShowMsg('UMS10000320');  //结束日期不能小于起始日期
    edtToDate.SetFocus;
    Abort;
  end;
  AFromDate:=edtFromDate.Date;
  AToDate:=edtToDate.Date;
  Screen.Cursor:=crHourGlass;
  if Assigned(SYSDM.wwFilterDialog1.Form) then SYSDM.wwFilterDialog1.ClearFilter;
  ADOQuery1.DisableControls;
  case cbType.ItemIndex of
    0:ByQuote(AFromDate,AToDate,edtItem.Text);  //仅报价单
    1:ByOrder(AFromDate,AToDate,edtItem.Text);  //仅销售单
    2:ByAll(AFromDate,AToDate,edtItem.Text);    //报价和销售单
  end;
  ADOQuery1.EnableControls;
  Screen.Cursor:=crDefault;
end;

procedure TOrd300_01Form.BrowseEvent;
begin
  inherited;

end;

procedure TOrd300_01Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;

end;

procedure TOrd300_01Form.ADOQuery1FTypeGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
  if ADOQuery1.IsEmpty then Exit;
  Text:=AType[Sender.AsInteger];
end;

procedure TOrd300_01Form.sbItemClick(Sender: TObject);
begin
  inherited;
//产品编号
  if not edtItem.Focused then edtItem.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtItem.Text:=qryInv150.FieldByName('I150_002').AsString;
  end;
end;

procedure TOrd300_01Form.edtItemExit(Sender: TObject);
begin
  inherited;
//产品编号
  if trim(edtItem.Text)='' then Exit;
  if qryInv150.Locate('I150_002',edtItem.Text,[]) then
  begin
    edtItem.Text:=qryInv150.FieldByName('I150_002').Value;
  end else
  begin
    edtItem.Text:='';
    ShowMsg('UMS10000267');  //输入的产品编号无效
    edtItem.SetFocus;
    Abort;
  end;
end;

initialization
  RegisterClass(TOrd300_01Form);

finalization
  UnRegisterClass(TOrd300_01Form);

end.

⌨️ 快捷键说明

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