📄 pur300_01.pas.svn-base
字号:
unit Pur300_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
TPur300_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
Pur300_01Form: TPur300_01Form;
implementation
uses SYSDATA, CommFun, HwSelData;
{$R *.dfm}
procedure TPur300_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('PUR30001001'); //采购产品查询
lblItem.Caption:=GetDBString('PUR30001002'); //产品
lblType.Caption:=GetDBString('PUR30001003'); //类型
lblDate.Caption:=GetDBString('PUR30001004'); //日期
ADOQuery1FType.DisplayLabel:=GetDBString('PUR30001005'); //单据类型
ADOQuery1FCode.DisplayLabel:=GetDBString('PUR30001006'); //单据编号
ADOQuery1FDate.DisplayLabel:=GetDBString('PUR30001007'); //单据日期
ADOQuery1FCust.DisplayLabel:=GetDBString('PUR30001008'); //供应商号
ADOQuery1FCustName.DisplayLabel:=GetDBString('PUR30001009'); //供应商名
ADOQuery1FItem.DisplayLabel:=GetDBString('PUR30001010'); //产品编号
ADOQuery1FItemName.DisplayLabel:=GetDBString('PUR30001011'); //产品名称
ADOQuery1FItemSpec.DisplayLabel:=GetDBString('PUR30001012'); //规格型号
ADOQuery1FUnitName.DisplayLabel:=GetDBString('PUR30001013'); //计量单位
ADOQuery1FQty.DisplayLabel:=GetDBString('PUR30001014'); //产品数量
ADOQuery1FPrice.DisplayLabel:=GetDBString('PUR30001015'); //产品单价
ADOQuery1FAmount.DisplayLabel:=GetDBString('PUR30001016'); //产品金额
ADOQuery1FDisRate.DisplayLabel:=GetDBString('PUR30001017'); //折扣比率
ADOQuery1FDisAmt.DisplayLabel:=GetDBString('PUR30001018'); //折扣金额
ADOQuery1FNetAmt.DisplayLabel:=GetDBString('PUR30001019'); //折后总额
ADOQuery1FTaxRate.DisplayLabel:=GetDBString('PUR30001020'); //采购税率
ADOQuery1FTaxAmt.DisplayLabel:=GetDBString('PUR30001021'); //采购税额
ADOQuery1FAcrAmt.DisplayLabel:=GetDBString('PUR30001022'); //应付金额
cbType.Clear;
cbType.Items.Add(GetDBString('PUR30001023')); //仅采购申请
cbType.Items.Add(GetDBString('PUR30001024')); //仅采购定单
cbType.Items.Add(GetDBString('PUR30001025')); //采购申请和采购定单
cbType.ItemIndex:=0;
AType[0]:=GetDBString('PUR30001026'); //采购申请
AType[1]:=GetDBString('PUR30001027'); //采购定单
qryInv150I150_002.DisplayLabel:=ADOQuery1FItem.DisplayLabel; //产品编号
qryInv150I150_003.DisplayLabel:=ADOQuery1FItemName.DisplayLabel; //产品名称
qryInv150I150_004.DisplayLabel:=ADOQuery1FItemSpec.DisplayLabel; //规格型号
end;
procedure TPur300_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 TPur300_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryInv150.Close;
end;
//仅采购申请
procedure TPur300_01Form.ByQuote(AFromDate,AToDate:TDateTime;AItem:String);
begin
ADOQuery1.Close;
ADOQuery1FPrice.FieldKind:=fkCalculated;
ADOQuery1FAmount.FieldKind:=fkCalculated;
ADOQuery1FDisRate.FieldKind:=fkCalculated;
ADOQuery1FDisAmt.FieldKind:=fkCalculated;
ADOQuery1FNetAmt.FieldKind:=fkCalculated;
ADOQuery1FTaxRate.FieldKind:=fkCalculated;
ADOQuery1FTaxAmt.FieldKind:=fkCalculated;
ADOQuery1FAcrAmt.FieldKind:=fkCalculated;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 0 as FType,P500A_001 as FCode,P500A_003 as FDate,'''' as FCust,'''' as FCustName,');
ADOQuery1.SQL.Add(' I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,P500B_005 as FQty,');
ADOQuery1.SQL.Add(' 0.00 as FPrice,0.00 as FAmount,0.00 as FDisRate,0.00 as FDisAmt,0.00 as FNetAmt,');
ADOQuery1.SQL.Add(' 0.00 as FTaxRate,0.00 as FTaxAmt,0.00 as FAcrAmt');
ADOQuery1.SQL.Add('from PUR500A,PUR500B,INV150,INV140');
ADOQuery1.SQL.Add('where P500A_001=P500B_001 and P500B_003=I150_001 and P500B_004=I140_001 and');
ADOQuery1.SQL.Add(' P500A_003>='+GetDateString(AFromDate)+' and P500A_003<='+GetDateString(AToDate));
if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
ADOQuery1.SQL.Add('order by P500A_003,P500A_001');
ADOQuery1.Open;
end;
//仅采购定单
procedure TPur300_01Form.ByOrder(AFromDate,AToDate:TDateTime;AItem:String);
begin
ADOQuery1.Close;
ADOQuery1FPrice.FieldKind:=fkData;
ADOQuery1FAmount.FieldKind:=fkData;
ADOQuery1FDisRate.FieldKind:=fkData;
ADOQuery1FDisAmt.FieldKind:=fkData;
ADOQuery1FNetAmt.FieldKind:=fkData;
ADOQuery1FTaxRate.FieldKind:=fkData;
ADOQuery1FTaxAmt.FieldKind:=fkData;
ADOQuery1FAcrAmt.FieldKind:=fkData;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 1 as FType,P510A_001 as FCode,P510A_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,P510B_005 as FQty,');
ADOQuery1.SQL.Add(' P510B_006 as FPrice,P510B_007 as FAmount,P510B_008 as FDisRate,P510B_009 as FDisAmt,P510B_010 as FNetAmt,');
ADOQuery1.SQL.Add(' P510B_011 as FTaxRate,P510B_012 as FTaxAmt,P510B_013 as FAcrAmt');
ADOQuery1.SQL.Add('from PUR510A,PUR510B,ORD150,INV150,INV140');
ADOQuery1.SQL.Add('where P510A_001=P510B_001 and P510A_017=O150_001 and P510B_003=I150_001 and P510B_004=I140_001 and');
ADOQuery1.SQL.Add(' P510A_003>='+GetDateString(AFromDate)+' and P510A_003<='+GetDateString(AToDate));
if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
ADOQuery1.SQL.Add('order by P510A_003,P510A_001');
ADOQuery1.Open;
end;
//采购申请和采购定单
procedure TPur300_01Form.ByAll(AFromDate,AToDate:TDateTime;AItem:string);
begin
ADOQuery1.Close;
ADOQuery1FPrice.FieldKind:=fkData;
ADOQuery1FAmount.FieldKind:=fkData;
ADOQuery1FDisRate.FieldKind:=fkData;
ADOQuery1FDisAmt.FieldKind:=fkData;
ADOQuery1FNetAmt.FieldKind:=fkData;
ADOQuery1FTaxRate.FieldKind:=fkData;
ADOQuery1FTaxAmt.FieldKind:=fkData;
ADOQuery1FAcrAmt.FieldKind:=fkData;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select 0 as FType,P500A_001 as FCode,P500A_003 as FDate,'''' as FCust,'''' as FCustName,');
ADOQuery1.SQL.Add(' I150_002 as FItem,I150_003 as FItemName,I150_004 as FItemSpec,I140_003 as FUnitName,P500B_005 as FQty,');
ADOQuery1.SQL.Add(' 0.00 as FPrice,0.00 as FAmount,0.00 as FDisRate,0.00 as FDisAmt,0.00 as FNetAmt,');
ADOQuery1.SQL.Add(' 0.00 as FTaxRate,0.00 as FTaxAmt,0.00 as FAcrAmt');
ADOQuery1.SQL.Add('from PUR500A,PUR500B,INV150,INV140');
ADOQuery1.SQL.Add('where P500A_001=P500B_001 and P500B_003=I150_001 and P500B_004=I140_001 and');
ADOQuery1.SQL.Add(' P500A_003>='+GetDateString(AFromDate)+' and P500A_003<='+GetDateString(AToDate));
if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
ADOQuery1.SQL.Add('union');
ADOQuery1.SQL.Add('select 1 as FType,P510A_001 as FCode,P510A_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,P510B_005 as FQty,');
ADOQuery1.SQL.Add(' P510B_006 as FPrice,P510B_007 as FAmount,P510B_008 as FDisRate,P510B_009 as FDisAmt,P510B_010 as FNetAmt,');
ADOQuery1.SQL.Add(' P510B_011 as FTaxRate,P510B_012 as FTaxAmt,P510B_013 as FAcrAmt');
ADOQuery1.SQL.Add('from PUR510A,PUR510B,ORD150,INV150,INV140');
ADOQuery1.SQL.Add('where P510A_001=P510B_001 and P510A_017=O150_001 and P510B_003=I150_001 and P510B_004=I140_001 and');
ADOQuery1.SQL.Add(' P510A_003>='+GetDateString(AFromDate)+' and P510A_003<='+GetDateString(AToDate));
if AItem<>'' then ADOQuery1.SQL.Add(' and I150_002='+''''+AItem+'''');
ADOQuery1.SQL.Add('order by FDate,FCode');
ADOQuery1.Open;
end;
procedure TPur300_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 TPur300_01Form.BrowseEvent;
begin
inherited;
end;
procedure TPur300_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
end;
procedure TPur300_01Form.ADOQuery1FTypeGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if ADOQuery1.IsEmpty then Exit;
Text:=AType[Sender.AsInteger];
end;
procedure TPur300_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 TPur300_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(TPur300_01Form);
finalization
UnRegisterClass(TPur300_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -