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

📄 pm_fakepc_b.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Pm_FakePc_B;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Body, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
  ExtCtrls, ComCtrls, ToolWin, StdCtrls, Mask, ExtEdit, QuickRpt, DBCtrls,
  jpeg;

Type
  TFrm_Pm_FakePc_B = Class(TFrm_Base_Entry_Body)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    lbl_taxrate: TLabel;
    Extedt_VendorCode: TExtEdit;
    Extedt_Pcno: TExtEdit;
    Extedt_FakePcno: TExtEdit;
    Extedt_Signlocation: TExtEdit;
    cmbbx_PcType: TComboBox;
    cmbbx_Hastax: TComboBox;
    medt_Date: TMaskEdit;
    cmbbx_PoTermSet: TComboBox;
    lbl_VendorName: TLabel;
    DBText1: TDBText;
    Label10: TLabel;
    procedure Act_InsertLineExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Extedt_PcnoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Extedt_PcnoExit(Sender: TObject);
    procedure Extedt_FakePcnoExit(Sender: TObject);
    procedure cmbbx_PoTermSetExit(Sender: TObject);
    procedure UsableVendorCodeCheck(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Act_PreviewExecute(Sender: TObject);
    procedure Act_PrintExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Act_PropertyExecute(Sender: TObject);
    procedure Extedt_FakePcnoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    taxrate,tmp_FakePcno,oldPoTermSet:string;
    procedure initcmbbx_PoTermSet;
  public
    { Public declarations }
    procedure InitControls;Override;
    procedure SetStatus(CurrentStatus:String;var AnswerStatus,
              EnableControls:String);Override;
    procedure SaveData; Override;
    procedure SaveHeadData;Override;
  end;

var
  Frm_Pm_FakePc_B: TFrm_Pm_FakePc_B;

implementation

{$R *.DFM}
uses Sys_Global,Pm_FakePc_D,Sys_Hint,Pm_FakePc_D2, Pm_FakePc_P;

procedure TFrm_Pm_FakePc_B.InitControls;
begin//初始化Form上的控件
  inherited;
  //这两个参数是回传到基类后控制价格及金额的显示格式
  AmountFields:='Amount,';
  PriceFields:='Price,';

  if (showflag=True) and (status<>'Add') then
     exit;

  if status<>'Add' then
  begin
    Extedt_VendorCode.text:=AdoQry_Head.fieldbyname('VendorCode').asstring;
    lbl_VendorName.Caption:=AdoQry_Head.fieldbyname('VendorName').asstring;
    Extedt_Pcno.text:=AdoQry_Head.fieldbyname('pcno').asstring;
    Extedt_FakePcno.text:=AdoQry_Head.fieldbyname('FakePcno').asstring;
    tmp_FakePcno:=AdoQry_Head.fieldbyname('FakePcno').asstring;
    if AdoQry_Head.fieldbyname('pcType').asinteger=0 then
       cmbbx_PcType.Itemindex:=0
    else
       cmbbx_PcType.Itemindex:=1;
    if AdoQry_Head.fieldbyname('hastax').asinteger=0 then
       cmbbx_Hastax.Itemindex:=0
    else
       cmbbx_Hastax.Itemindex:=1;
    lbl_taxrate.Caption:=AdoQry_Head.fieldbyname('taxrate').asstring+'%';
    taxrate:=AdoQry_Head.fieldbyname('taxrate').asstring;
    medt_Date.text:=AdoQry_Head.fieldbyname('pcdate').asstring;
    Extedt_Signlocation.text:=AdoQry_Head.fieldbyname('signlocation').asstring;
    initcmbbx_PoTermSet;
  end
  else
  begin
    Extedt_VendorCode.text:='';
    lbl_VendorName.Caption:='';
    Extedt_Pcno.text:='';
    Extedt_FakePcno.text:='';
    cmbbx_PcType.Itemindex:=0;
    cmbbx_Hastax.Itemindex:=0;
    lbl_taxrate.Caption:='';
    taxrate:='0';
    medt_Date.text:=LoginDate;
    Extedt_Signlocation.text:='美迪电器集团工业城';
    initcmbbx_PoTermSet;
    tmp_FakePcno:='%$##@';
  end;
  oldPoTermSet:='';
  with AdoQry_Body do
  begin
    Close;
    sql.clear;
    sql.text:=
      ' select '+
          ' FakePcline.FakePcno,'+
          ' FakePcline.pclineno,'+
          ' FakePcline.ItemCode,'+
          ' FakePcline.qty,'+
          ' FakePcline.Price,'+
          ' FakePcline.Amount,'+
          ' FakePcline.Finishdate,'+
          ' FakePcline.remArk, '+
          ' Item.ItemName,'+
          ' Uom.UomName '+
      '  from FakePcline '+
      '    join Item on FakePcline.ItemCode=Item.ItemCode '+
      '    join Uom on Item.UomCode=Uom.UomCode '+
      ' where FakePcno='''+tmp_FakePcno+'''';
    open;
  end;
  cmbbx_PoTermSet.OnExit(self);
end;

procedure TFrm_Pm_FakePc_B.initcmbbx_PoTermSet;
begin
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.text:=
      'select PoTermSetCode,PoTermSetName from PoTermSet Order by PoTermSetCode ';
    open;
    First;
    cmbbx_PoTermSet.clear;
    while not eof do
    begin
      cmbbx_PoTermSet.Items.Add(fieldbyname('PoTermSetCode').asstring+' '+
                                fieldbyname('PoTermSetName').asstring);
      next;
    end;
    cmbbx_PoTermSet.Itemindex:=0;
  end;
end;


procedure TFrm_Pm_FakePc_B.Act_InsertLineExecute(Sender: TObject);
begin
  Frm_Entry_Detail.SetFormParam(Extedt_Pcno.text,Extedt_FakePcno.text,inttostr(cmbbx_PcType.Itemindex),tmp_FakePcno,cmbbx_Hastax.text,'');
  inherited;
end;

procedure TFrm_Pm_FakePc_B.FormCreate(Sender: TObject);
begin
  inherited;
   Frm_Entry_Detail:=TFrm_Pm_FakePc_D.Create(Self);//设置弹出Detail
   Frm_Pm_FakePc_D2:=TFrm_Pm_FakePc_D2.Create(self);
end;

procedure TFrm_Pm_FakePc_B.SetStatus(CurrentStatus:String;var AnswerStatus,
  EnableControls:String);
begin//指明当前状态,定义Enable=True的控件
  inherited;
  if CurrentStatus='Add' then
  begin
    AnswerStatus:='Add';
    EnableControls:='Extedt_VendorCode,Extedt_Pcno,Extedt_FakePcno,Extedt_memo,'+
                    'cmbbx_PcType,cmbbx_Hastax,medt_Date,Extedt_Signlocation,cmbbx_PoTermSet,';
   SetFocus_Control:=Extedt_VendorCode;
  end
  else if CurrentStatus='ReadOnly' then
  begin
    AnswerStatus:='ReadOnly';
    EnableControls:='';
  end;
end;

procedure TFrm_Pm_FakePc_B.Extedt_PcnoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  if Key=120 then
  begin
    Frm_Sys_Hint:=TFrm_Sys_Hint.Create(nil);
    Frm_Sys_Hint.InitForm(DBConnect,
       ' select pc.pcno as ''采购合同合号'''
       +',pc.pcdate as ''下单日期'''
       +',Vendor.VendorName as ''供应商名称'''
       +' from pc '+
       '  join Vendor on pc.VendorCode=Vendor.VendorCode '+
       '  where pc.VendorCode='''+Extedt_VendorCode.text+''''+
       '    and pcdate>='''+datetostr(incMonth(strtodate(LoginDate),-6))+''''+
       '  Order by pcno ');
    if Frm_Sys_Hint.ShowModal=mrOk then
      TEdit(Sender).Text:=Frm_Sys_Hint.GetValueByFieldIndex(0);
    Frm_Sys_Hint.Release;
  end;
end;

procedure TFrm_Pm_FakePc_B.Extedt_PcnoExit(Sender: TObject);
begin
  inherited;
  if  Extedt_Pcno.text<>'' then
  begin
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.text:=
        'select pcno from pc '+
        ' where VendorCode='''+Extedt_VendorCode.text+''''+
        '   and pcno='''+Extedt_Pcno.text+'''';
      open;
      if recordCount<1 then
      begin
        DispInfo('该系统合同不存在或供应商不正确!',1);
        twincontrol(sender).setfocus;
        abort;
      end;
      if Extedt_FakePcno.text='' then
         Extedt_FakePcno.text:=Extedt_Pcno.text;
    end;
  end;
end;

procedure TFrm_Pm_FakePc_B.Extedt_FakePcnoExit(Sender: TObject);
begin
  inherited;
  if Trim(Extedt_FakePcno.text)='' then
  begin
    DispInfo('采购价格单号不允许为空!',1);
    twincontrol(sender).setfocus;
    abort;
  end;
  with AdoQry_tmp do
  begin
    Close;
    sql.clear;
    sql.text:=
      ' select Count(*) as record '+
      '  from FakePc '+
      ' where FakePcno='''+Extedt_FakePcno.text+'''';
    open;
    if fieldbyname('record').asinteger>0 then
    begin
      DispInfo('该合同号己经存在!',1);
      twincontrol(sender).setfocus;
      abort;
    end;
  end;
end;

procedure TFrm_Pm_FakePc_B.cmbbx_PoTermSetExit(Sender: TObject);
var
i:integer;
begin
  inherited;
  if oldPoTermSet<>cmbbx_PoTermSet.text then
  begin
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.text:=
        ' select top 8 * from PoTerm '+
        '  where PoTermSetCode='''+getCode(cmbbx_PoTermSet.text)+'''';
      open;
      First;
      For I:=10 to Frm_Pm_FakePc_D2.ControlCount-1 do
      begin
        tedit(Frm_Pm_FakePc_D2.Controls[i]).text:=fieldbyname('PoTermName').asstring;
        Frm_Pm_FakePc_D2.old_PoTermName[I-9]:=fieldbyname('PoTermName').asstring;
        next;
      end;
    end;
    oldPoTermSet:=cmbbx_PoTermSet.text;
  end;
end;

procedure TFrm_Pm_FakePc_B.UsableVendorCodeCheck(Sender: TObject);
begin
  inherited;
  if Extedt_VendorCode.text<>'' then
  begin
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.text:=
        'select Vendortaxrate_Percent '+
        ' from Vendor '+
        ' where VendorCode='''+Extedt_VendorCode.text+'''';
      open;
      lbl_taxrate.Caption:=fieldbyname('Vendortaxrate_Percent').asstring+'%';
      taxrate:=fieldbyname('Vendortaxrate_Percent').asstring;
    end;
  end;
end;

procedure TFrm_Pm_FakePc_B.SaveData;
  procedure Add_Save;
  var
    body_Sqltext:string;
    M:integer;
  begin
    //增加记录FakePc
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.text:=
        ' insert FakePc ( '+
             'FakePcno,'+
             'VendorCode,'+
             'taxrate,'+
             'hastax,'+
             'pcdate,'+
             'signlocation,'+
             'pcType,'+
             'pcno,'+
             'term1,'+
             'term2,'+
             'term3,'+
             'term4,'+
             'term5,'+
             'term6,'+
             'term7,'+
             'term8 ) '+
        ' Values('+
             ''''+Extedt_FakePcno.text+''','+
             ''''+Extedt_VendorCode.text+''','+
             taxrate+','+
             inttostr(cmbbx_Hastax.Itemindex)+','+
             ''''+medt_Date.text+''','+
             ''''+Extedt_Signlocation.text+''','+
             inttostr(cmbbx_PcType.Itemindex)+','+
             ''''+Extedt_Pcno.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName1.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName2.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName3.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName4.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName5.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName6.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName7.text+''','+
             ''''+Frm_Pm_FakePc_D2.Extedt_PoTermName8.text+''')';
      execsql;
    end;
    //通过循环组合成增加表FakePcLIEN的SQL语句
    with AdoQry_Body do
    begin
      AdoQry_Body.First;
      body_Sqltext:='';
      for M:=0 to recordCount-1 do
      begin
        body_Sqltext:=body_Sqltext+
          ' insert FakePcline('+
                'FakePcno,'+
                'pclineno,'+
                'ItemCode,'+
                'qty,'+
                'Price,'+
                'Amount,'+
                'Finishdate,'+
                'remArk)'+
          ' Values('+
               ''''+Extedt_FakePcno.text+''','+
               inttostr(M+1)+','+
               ''''+fieldbyname('ItemCode').asstring+''','+
               ''''+fieldbyname('qty').asstring+''','+
               ''''+fieldbyname('Price').asstring+''','+
               ''''+fieldbyname('Amount').asstring+''','+
               ''''+fieldbyname('Finishdate').asstring+''','+
               ''''+fieldbyname('remArk').asstring+''') ';
        next;
      end;
    end;
    //增加记录FakePcLINE
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.text:=
        body_Sqltext;
      execsql;
    end;
  end;
begin
  inherited;
  if AdoQry_Body.IsEmpty then
  begin
    DispInfo('新增的合同没有记录,不允许保存!',1);
    abort;
  end;
  
  AdoQry_Body.Connection.beginTrans;
  try
    if status='Add' then
      Add_Save
    else
    begin
      with AdoQry_tmp do
      begin
        Close;
        sql.clear;
        sql.text:=
          ' delete from FakePcline where FakePcno='''+tmp_FakePcno+''''+
          ' delete from FakePc where FakePcno='''+tmp_FakePcno+'''';
        execsql;
      end;
      Add_Save;
      DispInfo(' 存盘成功! ',3);
    end;
    AdoQry_Body.Connection.CommitTrans;
  except
    begin
      AdoQry_Body.Connection.RollBackTrans;
      DispInfo(' 存盘不成功,请稍后再试! ',1);
      abort;
   end;
  end;
end;

procedure TFrm_Pm_FakePc_B.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Pm_FakePc_D2.Release;
end;

procedure TFrm_Pm_FakePc_B.Act_PreviewExecute(Sender: TObject);
begin
 // inherited;
  Frm_Pm_FakePc_P:=TFrm_Pm_FakePc_P.Create(Application);
  Frm_Pm_FakePc_P.GetDataSource(DbConnect,Trim(Extedt_FakePcno.Text),'Preview',MenuId);
end;

procedure TFrm_Pm_FakePc_B.Act_PrintExecute(Sender: TObject);
begin
//  inherited;
  Frm_Pm_FakePc_P:=TFrm_Pm_FakePc_P.Create(Application);
  Frm_Pm_FakePc_P.GetDataSource(DbConnect,Trim(Extedt_FakePcno.Text),'Print',MenuId);
end;

procedure TFrm_Pm_FakePc_B.FormActivate(Sender: TObject);
begin
  inherited;
  TlBtn_Locate.Action:=Act_Property;
end;

procedure TFrm_Pm_FakePc_B.Act_PropertyExecute(Sender: TObject);
begin
 // inherited;
  Frm_Pm_FakePc_D2.Showmodal;
end;

procedure TFrm_Pm_FakePc_B.SaveHeadData;
begin
  inherited;
  with AdoQry_Head do
  begin
    fieldbyname('VendorCode').asstring:=Extedt_VendorCode.text;
    fieldbyname('VendorName').asstring:=lbl_VendorName.Caption;
    fieldbyname('FakePcno').asstring:=Extedt_FakePcno.text;
    fieldbyname('pcdate').asstring:=medt_Date.text;
  end;
  //此程序不能做这一事件,因为用了CASE语句,所以不能增加
end;

procedure TFrm_Pm_FakePc_B.Extedt_FakePcnoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  If (Key=120) Then
   CommonHint(Sender,AdoQry_Body,'pcdate','合同日期','pcno','采购价格单号',
              'pc',' VendorCode='+quotedstr(Extedt_VendorCode.text));
end;

end.

⌨️ 快捷键说明

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