📄 ord300_01.pas.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 + -