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

📄 pm_pc_entry_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                                and (Param1='1'),
                               'Edt_PcTaxPrice,Edt_PcNoTaxPrice,',
                               '');
      SetFocus_Control:=Edt_PcTaxPrice;
    end
    else
      EnableControls:='none';
  end
  else if (CurrentStatus='Add') Or (IsPriceRequestPass=0) then
  begin
    SetFocus_Control:=ExtEdt_ItemCode;
    EnableControls:='ExtEdt_ItemCode,MEdt_PcStArtDate,MEdt_PcendDate'
                   +',Edt_PcStArtQty,Edt_PcendQty,'
                     +IifString(  (Param1='0'),
                                'Edt_PcTaxPrice_Formal,Edt_PcNoTaxPrice_Formal,',
                                '')
                     +IifString( (Param1='1'),
                               'Edt_PcTaxPrice,Edt_PcNoTaxPrice,',
                               '');
  end;
end;

procedure TFrm_Pm_Pc_Entry_D.MEdt_PcendDateExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  DateCheck(Sender);
  if MEdt_PcStArtDate.Text>=MEdt_PcendDate.Text then
  begin
    DispInfo('起始日期不能大于等于终止日期',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
end;

{
    procedure MEdt_PcStArtDateExit(Sender: TObject);

procedure TFrm_Pm_Pc_Entry_D.MEdt_PcStArtDateExit(Sender: TObject);
var
  StArtDate,endDate:TDateTime;
  s1,s2:String;
  Flag:Integer;
  BookmArk:TBookmArk;
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  DateCheck(Sender);
  if OnlyOne=1 then
    Abort;
  AdoQry_Body.DisableControls;
  BookmArk:=AdoQry_Body.GetBookmArk;
  AdoQry_Body.First;
  StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
  endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime+1;
  Flag:=0;
  while not AdoQry_Body.Eof do
  begin
    if ExtEdt_ItemCode.Text=AdoQry_Body.fieldbyname('ItemCode').AsString then
    begin
      if Flag=0 then
      begin
        StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
        endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime+1;
      end;
      Flag:=1;
      if StArtDate<AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime then
        StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
      if endDate<AdoQry_Body.fieldbyname('PcendDate').AsDateTime+1 then
        endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime+1;
    end;
    AdoQry_Body.Next;
  end;
  AdoQry_Body.GotoBookmArk(BookmArk);
  AdoQry_Body.FreeBookmArk(BookmArk);
  AdoQry_Body.EnableControls;
  if Flag=1 then
  begin
    s1:=FormatDateTime('yyyy.mm.dd',StArtDate);
    s2:=FormatDateTime('yyyy.mm.dd',endDate);
    if(MEdt_PcStArtDate.Text<>FormatDateTime('yyyy.mm.dd',StArtDate)) and
      (MEdt_PcStArtDate.Text<>FormatDateTime('yyyy.mm.dd',endDate)) then
    begin
      DispInfo('起始日期不能跟上面的衔接',3);
      TWinControl(Sender).SetFocus;
      Abort;
    end;
  end;
end;

    procedure MEdt_PcendDateExit(Sender: TObject);

procedure TFrm_Pm_Pc_Entry_D.MEdt_PcendDateExit(Sender: TObject);
var
  StArtDate,endDate:TDateTime;
  Flag:Integer;
  BookmArk:TBookmArk;
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  DateCheck(Sender);
  if MEdt_PcStArtDate.Text>=MEdt_PcendDate.Text then
  begin
    DispInfo('起始日期不能大于等于终止日期',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
  if OnlyOne=1 then
    Abort;
  AdoQry_Body.DisableControls;
  BookmArk:=AdoQry_Body.GetBookmArk;
  AdoQry_Body.First;
  StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
  endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
  Flag:=0;
  while not AdoQry_Body.Eof do
  begin
    if ExtEdt_ItemCode.Text=AdoQry_Body.fieldbyname('ItemCode').AsString then
    begin
      if Flag=0 then
      begin
        StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
        endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
      end;
      Flag:=1;
      if StArtDate<AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime then
        StArtDate:=AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime;
      if endDate<AdoQry_Body.fieldbyname('PcendDate').AsDateTime then
        endDate:=AdoQry_Body.fieldbyname('PcendDate').AsDateTime;
    end;
    AdoQry_Body.Next;
  end;
  if Flag=1 then
  begin
    if(MEdt_PcStArtDate.Text=FormatDateTime('yyyy.mm.dd',StArtDate))then
    begin
      if (MEdt_PcendDate.Text<>FormatDateTime('yyyy.mm.dd',endDate))then
      begin
        DispInfo('终止日期不能跟上面的衔接',3);
        TWinControl(Sender).SetFocus;
        AdoQry_Body.GotoBookmArk(BookmArk);
        AdoQry_Body.FreeBookmArk(BookmArk);
        AdoQry_Body.EnableControls;
        Abort;
      end
      else
      begin
        AdoQry_Body.First;
        while not AdoQry_Body.Eof do
        begin
          if (ExtEdt_ItemCode.Text=AdoQry_Body.fieldbyname('ItemCode').AsString)
            and(AdoQry_Body.fieldbyname('PcStArtDate').AsString=MEdt_PcStArtDate.Text)
            and(AdoQry_Body.fieldbyname('PcendDate').AsString=MEdt_PcendDate.Text)
            and(AdoQry_Body.fieldbyname('PcStArtQty').AsString='0')
            and(AdoQry_Body.fieldbyname('PcendQty').AsString='0') then
          begin
            DispInfo('同一时间段 重复的输入',3);
            ActiveControl:=MEdt_PcStArtDate;
            Break;
          end;
          AdoQry_Body.Next;
        end;
      end;
    end;
  end;
  AdoQry_Body.GotoBookmArk(BookmArk);
  AdoQry_Body.FreeBookmArk(BookmArk);
  AdoQry_Body.EnableControls;
end;

    procedure Edt_PcStArtQtyExit(Sender: TObject);

procedure TFrm_Pm_Pc_Entry_D.Edt_PcStArtQtyExit(Sender: TObject);
var
  MaxFloat:Double;
  BookmArk:TBookmArk;
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  FloatCheck(Sender);
  AdoQry_Body.DisableControls;
  BookmArk:=AdoQry_Body.GetBookmArk;
  AdoQry_Body.First;
  MaxFloat:=-1;
  while not AdoQry_Body.Eof do
  begin
    if (ExtEdt_ItemCode.Text=AdoQry_Body.fieldbyname('ItemCode').AsString)and
      (MEdt_PcStArtDate.Text=FormatDateTime('yyyy.mm.dd',
      AdoQry_Body.fieldbyname('PcStArtDate').AsDateTime))and
      (MEdt_PcendDate.Text=FormatDateTime('yyyy.mm.dd',
      AdoQry_Body.fieldbyname('PcendDate').AsDateTime))and
      (MaxFloat<AdoQry_Body.fieldbyname('PcendQty').AsFloat)then
      MaxFloat:=AdoQry_Body.fieldbyname('PcendQty').AsFloat;
    AdoQry_Body.Next;
  end;
  AdoQry_Body.GotoBookmArk(BookmArk);
  AdoQry_Body.FreeBookmArk(BookmArk);
  AdoQry_Body.EnableControls;
  if (OnlyOne<>1)and(MaxFloat<>-1)and(MaxFloat<>StrToFloat(Edt_PcStArtQty.Text)) then
  begin
    DispInfo('起始数量不能跟上面的衔接',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
  if ((OnlyOne=1)or(MaxFloat=-1))and(StrToFloat(Edt_PcStArtQty.Text)<>0) then
  begin
    DispInfo('新的日期时段起始数量必须从零开始!',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
end;
}
procedure TFrm_Pm_Pc_Entry_D.Edt_PcStArtQtyExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  FloatCheck(Sender);
  if StrToFloat(Edt_PcStArtQty.Text)<0 then
  begin
    DispInfo('起始数量不能小于零',3);
    TWinControl(Sender).SetFocus;
    Abort;
  end;
end;


procedure TFrm_Pm_Pc_Entry_D.btn_okClick(Sender: TObject);
var ExistsSc : Boolean;
    SqlText :String;
begin
  ExistsSc := True;
  ExecuteSql(AdoQry_Tmp,'select * from PmParam '
                       +' where PmParamCode='+QuotedStr('PoPriceRequestispo'),0);
  If AdoQry_Tmp.fieldbyname('PmParamValueN').AsInteger = 1 then 
  begin
    SqlText := 'select * from ItemSampleNo '
              +' where ItemCode='+QuotedStr(ExtEdt_ItemCode.Text)
              +'   and VendorCode='+QuotedStr(VendorCode)
              +'   and StArtDate<='+QuotedStr(Medt_PcStArtDate.Text)
              +'   and StArtDate<='+QuotedStr(Medt_PcendDate.Text)
              +'   and endDate>='+QuotedStr(Medt_PcendDate.Text);
    ExecuteSql(AdoQry_Tmp,SqlText,0);
    If AdoQry_Tmp.RecordCount=0 then 
    begin
      DispInfo('该供应商没有该物料该时间段的样品单号!',3);
      If Medt_PcStArtDate.CanFocus then
      Medt_PcStArtDate.SetFocus;
      Abort;
    end;
  end;                       
  if existsPC(VendorCode,Trim(Extedt_ItemCode.text),medt_PcstArtdate.Text,medt_Pcenddate.Text,strtofloat(edt_PcstArtqty.Text),strtofloat(edt_Pcendqty.text)) then
  begin
    DispInfo('已存在该供应商该时间段及数量段的合同!',3);
    medt_PcstArtdate.SetFocus;
    abort;
  end;
  ExecuteSql(AdoQry_Tmp,'Select * from Sc_PriceMaster ' 
                       +' where ItemCode =' +QuotedStr(ExtEdt_ItemCode.Text),0);
  If AdoQry_Tmp.RecordCount = 0 then ExistsSc := False;                       
  ExecuteSql(AdoQry_Tmp,'Select * from Sc_CostMaster ' 
                       +' where ItemCode =' +QuotedStr(ExtEdt_ItemCode.Text),0);
  If AdoQry_Tmp.RecordCount = 0 then ExistsSc := False;                       

  If (Status='Add') and (Not ExistsSc) then
  begin
    If DispInfo('该物料没有标准成本,是否将该价格作为标准成本价!',2)<>'y' then
    begin
      If Edt_PcNoTaxPrice.CanFocus then Edt_PcNoTaxPrice.SetFocus;
      Abort;
    end;
  end;
  
  Edt_PcTaxPrice.OnExit(Edt_PcTaxPrice);
  Edt_PcNoTaxPrice.OnExit(Edt_PcNoTaxPrice);
  inherited;

end;

procedure TFrm_Pm_Pc_Entry_D.ExtEdt_ItemCodeButtonClick(Sender: TObject);
begin
  inherited;
  CommonHint(Sender,AdoQry_Tmp,'ItemName','物料名称','ItemCode',
    '物料代码','Item','PmCode In (1,2,3) and ItemUsable=1 ');
  AdoQry_Tmp.Close;
  AdoQry_Tmp.SQL.Text:='Select Item.PmCode,Uom.UomName'
    +' From Item Join Uom On Item.UomCode=Uom.UomCode'
    +' Where Item.ItemCode='''+TExtEdit(Sender).Text+'''';
  AdoQry_Tmp.Open;
  Lbl_UomName.Text:=AdoQry_Tmp.fieldbyname('UomName').AsString;
  if AdoQry_Tmp.fieldbyname('PmCode').AsString='1' then
    CmBx_PcPriceType.ItemIndex:=0
  else
    CmBx_PcPriceType.ItemIndex:=1;

end;

procedure TFrm_Pm_Pc_Entry_D.Edt_PcTaxPrice_FormalExit(Sender: TObject);
begin
  inherited;
  FloatCheck(Sender);
  if Changed then
  begin
    try
      Edt_PcNoTaxPrice_Formal.Text:=FormatFloat('0.000000',(StrToFloat(Edt_PcTaxPrice_Formal.Text)/(1+
        AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsFloat/100)));
    except
    end;
  end;

end;

procedure TFrm_Pm_Pc_Entry_D.Edt_PcNoTaxPrice_FormalExit(Sender: TObject);
begin
  inherited;
  FloatCheck(Sender);
  if Changed then
  begin
    try
      Edt_PcTaxPrice_Formal.Text:=FloatToStr((StrToFloat(Edt_PcNoTaxPrice_Formal.Text)*
        (1+AdoQry_Head.fieldbyname('PCTaxRate_Percent').AsFloat/100)));
    except
    end;
  end;

end;

end.

⌨️ 快捷键说明

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