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

📄 pur300_01.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 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 + -